资源简介
rikirobot_stm32-keil.zip
代码片段和文件信息
#include “hardwareserial.h“
#include “interrupt.h“
USART_TypeDef* SERIAL_USART[SERIALn] = {RIKI_SERIAL1 RIKI_SERIAL2 RIKI_SERIAL3};
GPIO_TypeDef* SERIAL_PORT[SERIALn] = {RIKI_SERIAL1_GPIO_PORT RIKI_SERIAL2_GPIO_PORT RIKI_SERIAL3_GPIO_PORT};
const uint32_t SERIAL_USART_CLK[SERIALn] = {RIKI_SERIAL1_CLK RIKI_SERIAL2_CLK RIKI_SERIAL3_CLK};
const uint32_t SERIAL_PORT_CLK[SERIALn] = {RIKI_SERIAL1_GPIO_CLK RIKI_SERIAL2_GPIO_CLK RIKI_SERIAL3_GPIO_CLK};
const uint16_t SERIAL_TX_PIN[SERIALn] = {RIKI_SERIAL1_TX_PIN RIKI_SERIAL2_TX_PIN RIKI_SERIAL3_TX_PIN};
const uint16_t SERIAL_RX_PIN[SERIALn] = {RIKI_SERIAL1_RX_PIN RIKI_SERIAL2_RX_PIN RIKI_SERIAL2_RX_PIN};
const uint16_t SERIAL_IRQn[SERIALn] = {RIKI_SERIAL1_IRQ RIKI_SERIAL2_IRQ RIKI_SERIAL3_IRQ};
const uint16_t SERILA_NVIC[SERIALn] = {RIKI_SERIAL1_NVIC RIKI_SERIAL2_NVIC RIKI_SERIAL3_NVIC};
HardwareSerial::HardwareSerial(Serial_TypeDef _Serial)
{
Serial = _Serial;
if(this->Serial == SERIAL1)
Serial1 = this;
if(this->Serial == SERIAL2)
Serial2 = this;
if(this->Serial == SERIAL3)
Serial3 = this;
}
void HardwareSerial::begin(uint32_t baud)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
if(this->Serial == SERIAL1) {
RCC_APB2PeriphClockCmd(SERIAL_USART_CLK[this->Serial]|SERIAL_PORT_CLK[this->Serial] ENABLE);
} else {
RCC_APB1PeriphClockCmd(SERIAL_USART_CLK[this->Serial] ENABLE);
RCC_APB2PeriphClockCmd(SERIAL_PORT_CLK[this->Serial] ENABLE);
}
//USART_TX
GPIO_InitStructure.GPIO_Pin = SERIAL_TX_PIN[this->Serial];
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(SERIAL_PORT[this->Serial] &GPIO_InitStructure);
//USART_RX
GPIO_InitStructure.GPIO_Pin = SERIAL_RX_PIN[this->Serial];
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(SERIAL_PORT[this->Serial] &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = baud;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(SERIAL_USART[this->Serial] &USART_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = SERIAL_IRQn[this->Serial];
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = SERILA_NVIC[this->Serial];
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
USART_ITConfig(SERIAL_USART[this->Serial] USART_IT_RXNE ENABLE);
USART_Cmd(SERIAL_USART[this->Serial] ENABLE);
}
uint32_t HardwareSerial::available(void)
{
return (uint32_t)(SERIAL_BUFFER_SIZE + rx_buffer._iHead - rx_buffer._iTail) %
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-05-28 05:11 rikirobot_stm32-keil\
文件 119 2018-05-28 05:11 rikirobot_stm32-keil\.gitignore
目录 0 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\
文件 1393 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\RingBuffer.cpp
文件 1353 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\RingBuffer.h
文件 5926 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\Wire.cpp
文件 3320 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\Wire.h
文件 4208 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\Wireba
文件 4673 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\Wireba
文件 5685 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\config.h
文件 4187 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\hardwareserial.cpp
文件 479 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\hardwareserial.h
文件 435 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\interrupt.cpp
文件 446 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\interrupt.h
文件 453 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\millisecondtimer.c
文件 279 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\millisecondtimer.h
文件 5649 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\ring_buffer.h
文件 172 2018-05-28 05:11 rikirobot_stm32-keil\Bsp\round.h
目录 0 2018-05-28 05:11 rikirobot_stm32-keil\Driver\
文件 2333 2018-05-28 05:11 rikirobot_stm32-keil\Driver\Kinematics.cpp
文件 909 2018-05-28 05:11 rikirobot_stm32-keil\Driver\Kinematics.h
文件 742 2018-05-28 05:11 rikirobot_stm32-keil\Driver\PID.cpp
文件 517 2018-05-28 05:11 rikirobot_stm32-keil\Driver\PID.h
文件 2414 2018-05-28 05:11 rikirobot_stm32-keil\Driver\battery.cpp
文件 359 2018-05-28 05:11 rikirobot_stm32-keil\Driver\battery.h
文件 2729 2018-05-28 05:11 rikirobot_stm32-keil\Driver\encoder.cpp
文件 488 2018-05-28 05:11 rikirobot_stm32-keil\Driver\encoder.h
文件 4090 2018-05-28 05:11 rikirobot_stm32-keil\Driver\gy85.cpp
文件 1962 2018-05-28 05:11 rikirobot_stm32-keil\Driver\gy85.h
文件 508 2018-05-28 05:11 rikirobot_stm32-keil\Driver\led.cpp
文件 136 2018-05-28 05:11 rikirobot_stm32-keil\Driver\led.h
............此处省略539个文件信息
- 上一篇:labview串口采集数据 曲线显示 实时最大最小平均值
- 下一篇:内存遍历工具源码
评论
共有 条评论