打印
[STM8]

stm8s串口发送数据检查TXE标志也没用

[复制链接]
3854|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
donkey89|  楼主 | 2011-8-9 11:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 donkey89 于 2011-8-9 11:30 编辑

代码如下,但是密集发送的时候前一个数据被重复,后一个数据被丢失,把TXE标志换成TC标志也是一样
void uart_send_char(char a)
{
  while(!(UART1->SR&((uint8_t)UART1_FLAG_TXE)));
  UART1->DR=a;
}
主程序是这么调用的
          uart_send_char(adc_value[0]);
          uart_send_char(adc_value[1]);
          uart_send_char(0x55);//adc_value[2]);
沙发
IJK| | 2011-8-9 13:52 | 只看该作者
stm8s串口发送,印象里没有碰到这样的问题。
“密集发送”有多密集,连发多少个字节?

使用特权

评论回复
板凳
donkey89|  楼主 | 2011-8-9 17:58 | 只看该作者
2# IJK
就三个字节而已.其中前两个字节是对的,第三个字节变成了第二个字节
调用代码在一楼已经贴出来了

使用特权

评论回复
地板
香水城| | 2011-8-9 18:07 | 只看该作者
用示波器看看,会不会是接手端漏了?

使用特权

评论回复
5
donkey89|  楼主 | 2011-8-9 18:58 | 只看该作者
4# 香水城
可能性不大,每次连续发送3个字节,就是第三个字节不对,而且是第二个字节的重复.

使用特权

评论回复
6
donkey89|  楼主 | 2011-8-9 21:08 | 只看该作者
找到原因了,把原来编译的obj文件全部删除,然后重新编译,发现函数没有声明,补上声明就可以了.
不知道为什么link的时候把以前的一起编译进去的,新的却没有被编译.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:数显ESR电容等效内阻测量仪 http://cn.digit-esr.com

241

主题

1609

帖子

1

粉丝