STM32F103 USART发送数据SR寄存器中TXE和TC标志位都不置位

zhanlve2 2019-08-10 08:05:51
STM32F103 USART发送数据本来设置为无校验,数据发送一直没问题,现在需要设置为偶校验,结果把寄存器配置为偶校验后,开机第一次向DR寄存器写入数据时TXE和TC标志位都在置位状态,写入第一个字节数据后,两个标志位就都变为0了,再也不置位了,请问各位大佬这到底是是什么原因啊,我觉得是数据一直没发出去,但是不知道怎么解决,求大佬们教教我。

这是发送代码
ENUM_DEVICE_ERROR PAL_RS485WriteByte(struct dal_port_type* type,uint8 byte)
{
uint32 index;
delayTime = RS485_Send_Delay_Count;
OSSchedLock();
RS485_Send_En;
while (!(UART4->SR & USART_FLAG_TXE));
UART4->DR = (byte & (uint16_t)0x01FF);

for(index = 0; index < delayTime;index++);
RS485_Rev_En;
OSSchedUnlock();
return DEVICE_OK;

}
在While循环里一直出不去了
...全文
1245 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanlve2 2020-11-06
  • 打赏
  • 举报
回复
谢谢大佬们,这些我都设置正确了,最后检查了代码发现是以前写代码的在一个case语句中,忘了写break,导致偶检验配置时没有退出case语句,执行了另一个配置,结果导致配置不成功,我先是另外重写了配置,后来才发现的
Glen_hsu 2019-08-27
  • 打赏
  • 举报
回复 1
“现在需要设置为偶校验” 可实际上你设了奇校验!!
weixin_43061026 2019-08-18
  • 打赏
  • 举报
回复
STM32的串口通信有一个地方要注意,无校验是8位数据,奇偶校验是9位,估计是你这里出错了
狗蛋王-yo 2019-08-12
  • 打赏
  • 举报
回复
这个地方是正确的吗?
狗蛋王-yo 2019-08-12
  • 打赏
  • 举报
回复

27,522

社区成员

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

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