中级会员
 
- 积分
- 441
- 金钱
- 441
- 注册时间
- 2014-8-11
- 在线时间
- 84 小时
|
5金钱
在许多中断接收的函数中都会有如题的注释提示
以前没多在意
最近搞了下STM8S208的UART3,串口调试的时候发现发送一个字符过去后进入对应的接收中断,UART3_RX_STA字节数表示为加1,但是BUF里面
却是空的,然后我打印了下UART3->DR,发现没有数据。
单步调试发现UART3->SR发现里面的FE位在接收到数据后被置为1了,查了手册说是帧错误,然后就千万头草泥马奔腾。。。。。
相同的程序用在UART1上一点问题都没有,FE也没有置位,所以我认为UART3->DR为空是不是与FE有关,但有关我又有什么办法?
所以我尝试了下在return UART3->DR前读取下USARTx->SR,发现并没有什么软用。。。。
详细备注:
在接收到字节后串口就返回该字节,由于进了中断,UART3_RX_STA++还运行了(我用的延时等待接受算法,过了10ms就默认接收完了)
所以UART3_RX_STA最高位置1,主函数就开始对外打印数据,回发字节前我用printf发了“你所发的信息为:”
那么问题来了:在设置用外部时钟24M的时候调试助手不能收到“你所发的信息为:”,也没有我发过去的那个东东的回显
在设置内部时钟分频为2M作为主时钟的时候能收到“你所发的信息为:”,但没有我发过去的那个东东的回显
我设置过所有的波特率传输,都这样。。。。。。单步调试观察寄存器也没发现其它的初始化对UART3的波特率有影响
但是我用我的GPS接在UART3上,UART3是能够正常收到数据的,我的USB转TTL也测试过了没问题。。。。。
如上所述,有没有人知道怎么破
|
|