SBUS串口接收部分
1、硬件输入一定要取反,别的帖子有取反电路我就不搬了
2、包尾不一定与协议中的一致,我之前就是在纠结为什么包尾与别人的不同从而怀疑自己是不是没有收到正确的数据
3、STM32串口配置一定要正确
串口配置
void USART2_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
//配置IO口
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOA,&GPIO_InitStructure);
//配置外设
USART_InitStructure.USART_BaudRate = 100000; //波特率设置
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //硬件流失能
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发使能