资源简介
ROS下使用rosserial和STM32(ST库)进行通信,4轮驱动MDK5工程

代码片段和文件信息
#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-09-19 16:07 rikirobot_stm32-keil\
文件 119 2018-05-28 13:11 rikirobot_stm32-keil\.gitignore
目录 0 2018-09-18 15:37 rikirobot_stm32-keil\Bsp\
文件 7607 2018-09-18 15:37 rikirobot_stm32-keil\Bsp\config.h
文件 4187 2018-08-13 15:50 rikirobot_stm32-keil\Bsp\hardwareserial.cpp
文件 479 2018-05-28 13:11 rikirobot_stm32-keil\Bsp\hardwareserial.h
文件 447 2018-08-10 16:18 rikirobot_stm32-keil\Bsp\interrupt.cpp
文件 446 2018-05-28 13:11 rikirobot_stm32-keil\Bsp\interrupt.h
文件 608 2018-09-10 17:03 rikirobot_stm32-keil\Bsp\millisecondtimer.c
文件 311 2018-09-10 17:03 rikirobot_stm32-keil\Bsp\millisecondtimer.h
文件 1393 2018-05-28 13:11 rikirobot_stm32-keil\Bsp\RingBuffer.cpp
文件 1353 2018-05-28 13:11 rikirobot_stm32-keil\Bsp\RingBuffer.h
文件 5649 2018-05-28 13:11 rikirobot_stm32-keil\Bsp\ring_buffer.h
文件 172 2018-05-28 13:11 rikirobot_stm32-keil\Bsp\round.h
文件 5926 2018-05-28 13:11 rikirobot_stm32-keil\Bsp\Wire.cpp
文件 3320 2018-05-28 13:11 rikirobot_stm32-keil\Bsp\Wire.h
文件 4208 2018-05-28 13:11 rikirobot_stm32-keil\Bsp\Wireba
文件 4673 2018-05-28 13:11 rikirobot_stm32-keil\Bsp\Wireba
目录 0 2018-09-15 22:06 rikirobot_stm32-keil\Driver\
目录 0 2018-08-15 18:49 rikirobot_stm32-keil\Driver\Battery\
文件 2414 2018-08-15 18:49 rikirobot_stm32-keil\Driver\Battery\battery.cpp
文件 359 2018-05-28 13:11 rikirobot_stm32-keil\Driver\Battery\battery.h
目录 0 2018-09-18 15:37 rikirobot_stm32-keil\Driver\Encoder\
文件 10910 2018-09-18 15:37 rikirobot_stm32-keil\Driver\Encoder\encoder.c
文件 299 2018-05-28 15:24 rikirobot_stm32-keil\Driver\Encoder\encoder.h
目录 0 2018-09-15 13:36 rikirobot_stm32-keil\Driver\gy85\
文件 4090 2018-09-15 13:36 rikirobot_stm32-keil\Driver\gy85\gy85.cpp
文件 1962 2018-05-28 13:11 rikirobot_stm32-keil\Driver\gy85\gy85.h
目录 0 2018-09-15 15:47 rikirobot_stm32-keil\Driver\Key\
文件 1873 2018-09-15 15:47 rikirobot_stm32-keil\Driver\Key\key.c
文件 489 2018-09-15 15:46 rikirobot_stm32-keil\Driver\Key\key.h
............此处省略748个文件信息
相关资源
- STM32F103RC+ADC+DMA多通道采样LCD显示
- I2C读写AT24C02 基于STM32F103 cube116540
- Microsoft Forms 2.0107770
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- Rational Rose Common破解文件
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- HOOK 记录和模拟 Keyboard Mouse
- AD7606采集程序
- Microsoft基本类库 (MFC)(C 库)
评论
共有 条评论