找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

请教STM8l的串口通信问题

查看数: 3155 | 评论数: 3 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-9-6 20:36

正文摘要:

程序在调试状态一步一步执行发送字符串都能正常的发送,但全速运行时发送1和0以外的字符时,就出现错误了 求求大佬帮忙找找原因  或者给个解决思路     不胜感激 #include <stm8l ...

回复

ID:685842 发表于 2020-9-7 18:21
采蘑菇的小宋 发表于 2020-9-7 13:33
1、使用单片机串口往上发送数据时,一定要检测与发送相关的标志位,比如TXE(发送数据寄存器空)、TC(发送 ...

原来错误在这    我就说为什么单步调试时能发送成功,全速运行的时候就出错    感谢大佬的回答      
ID:739545 发表于 2020-9-7 11:44
把“hex显示”旁边的钩去掉
ID:383721 发表于 2020-9-6 20:36
1、使用单片机串口往上发送数据时,一定要检测与发送相关的标志位,比如TXE(发送数据寄存器空)、TC(发送完成)等,若不检测等待这些标志位,连续发送时就会出现问题;
2、所以,若单片机串口间隔较长时间发送单字节,是不会有啥问题的,比如你这段响应‘0’和‘1’的程序;
if(REData=='0'||REData=='1')
{
     USART_SendData8(USART1,REData);               //将接收到的数据发送出去      
}
3、但是连续发送时就会出现问题,比如你发送字符串那段程序,加一句标志位检测就可以了;
else
{
     for(i=0;i<6;i++)
     {
          USART_SendData8(USART1,str[i]);              //错误
          while(USART_GetFlagStatus(XXX)==XXX);        //加入发送标志位检测
     }
}

评分

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

查看全部评分

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

Powered by 单片机教程网

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