stm32串口发送连发时会出现错误

乱码可真是太好了 2019-04-27 05:36:48
int main(void)
{
my_USART_Config();
uint8_t buffer[6];
buffer[0]=0x31;
buffer[1]=0x32;
buffer[2]=0x32;
buffer[3]=0x30;
buffer[4]=0x63;//high
buffer[5]=0xba;
while(1)
{
for(uint8_t i=0;i<6;i++)
{
COM_Sendchar(buffer[i]);
}
delay_ms(1000);

}
}
本来打算做modbus的crc16检验,但是每次当buffer[0]~buffer[5]的十六进制通过循环连发时串口调试助手总会出现0x3F,我寻思着0xba也没超过uint8_t(0~255)的范围呀,于是去单步发送,发现单次发送数据的时候结果是正常的,感觉出错就出错在了0xba这个点上。
这是发送单个字符的函数定义:
void COM_Sendchar(uint8_t ch)
{
USART_SendData(USART1,ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
}
没有没大佬来解决一下的...
...全文
523 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fx_shaojie 2019-05-23
  • 打赏
  • 举报
回复
应该还是你查询的标志不对,看看对应系列的库函数或者例程
liyongshuai1234 2019-05-23
  • 打赏
  • 举报
回复
发送完,判断下发送的是否正确
嵌入式乌托邦 2019-05-20
  • 打赏
  • 举报
回复
while (!(USART1->SR & USART_FLAG_TXE));
jiale_csdn 2019-05-17
  • 打赏
  • 举报
回复
USART_FLAG_TC 改 USART_FLAG_TXE 试试

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧