找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

STC8G单片机串口通讯疑问,每次只能发送一个字节正确数据问题

查看数: 5403 | 评论数: 2 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-7-16 10:02

正文摘要:

STC8G单片机使用printf()函数发送数据,出现错乱现象: void UartIsr() interrupt 4 {         int d=0,e=1,f=2,g=3;         if (RI)         ...

回复

ID:800866 发表于 2020-7-18 15:44
重定义 printf函数功能 ,即fputc函数
ID:804115 发表于 2020-7-16 13:23
两个问题:
1. 你的串口发送如果选择hex的话,就不能填1了吧,应该填31吧!这个你再核对下。可以下载sscom试试。
2. 这个很重要:中断中不能执行耗时太长的任务,否则会对整个系统造成影响。
你在串口中断中调用printf就不行,因为printf太耗时了,如果你要做回环测试的话,将中断收到的数据先放到一个全局变量的数组中暂时存起来,等退出中断后,在大循环中判断是否收到数据,如果收到数据,则将收到的数据用printf打印出来。这样就不会出现只能收到1字节的问题了。如果你已经这样改了,还不能收到,那么就是你的中断响应太慢了,这时候就要降低波特率来降低中断触发的速度。

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表