你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F030串口的奇怪问题

[复制链接]
allkill 提问时间:2014-11-27 02:28 /
阅读主题, 点击返回1楼
收藏 评论10 发布时间:2014-11-27 02:28
10个回答
Dylan疾风闪电 回答时间:2014-11-28 15:35:47
本帖最后由 Dylan疾风闪电 于 2014-11-28 15:45 编辑

同意楼上意见。是全局变量volatile uint8_t RS232_RX_CNT使用错误引起的乱序。主循环和中断函数交错赋值,导致RS232_RX_CNT与实际的接收字节量不符。
---------------------------------------------------------
如果你非要这么玩,可以在发送函数RS232_Send(...)以及变量赋值后加延时,以等待接收中断完全接收完数据。(个人觉得没啥意思)---------------------------------------------------------
引用你的代码:
        while(1)
        {
                if(RS485_RX_CNT>0)
                {
                        RS232_Send((uint8_t *)RS485_RX_BUF,RS485_RX_CNT);
                        RS485_RX_CNT=0;  delay();
                }
                if(RS232_RX_CNT>0)/*232接收缓冲区里有数据*/
                {
/*去掉延时就不能正常工作,原因不明。
单帧的数据量越大需要越大的演延时。*/
                        delay();
                        RS485_Send((uint8_t *)RS232_RX_BUF,RS232_RX_CNT);/*485发送*/
                        RS232_RX_CNT=0;
                }
        }

12

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版