前言
stm32f103c8t6的uart本身不支持7位数据位和2位停止位模式,所以需要基于8位数据位1位停止位工作模式,通过代码,将发送的数据最后一位变更成停止位来模拟7位数据位和2位停止位。
实现
串口配置,维持8/1不变
1 2 3 4 5 6 7 8 9
| USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 9600; 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(USARTx, &USART_InitStructure); USART_Cmd(USARTx, ENABLE);
|
发送数据处理,将数据最后一位置1
1 2 3 4 5 6 7
| static void ProcessSendData(uint8_t *SendData,uint8_t len) { for(uint8_t i=0 i<len;i++) { SendData[i]=SendData[i]|0x80; } }
|
接收数据处理,将数据最后一位置0
1 2 3 4 5 6 7
| static void ProcessRecieveData(uint8_t *RecData,uint8_t len) { for(uint8_t i=0 i<len;i++) { RecData[i]=RecData[i]&0x7F; } }
|