打印
[STM8]

STM8l152R8串口数据发送问题

[复制链接]
3016|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
weiweiwsk|  楼主 | 2013-7-5 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用串口3时,接收数据正常,发送单个数据上位机也可以正常接收(如:0x33),但发送一组数据的时候就不能正常接收了
如:uchar temp={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88},
for(length=0;length<8;length++)
  {
      USART_SendData8(USART3,temp[length]);
  }
发送8个数据的时候通常只能接收到最后一个数据即0x88,偶尔也能接收到前面随意的一两个数据,但是在仿真,单步执行的时候又可以依次接收到8个数据,在网上查了说是和配置有关,于是就修改了下面语句:
USART_ITConfig(USART3, USART_IT_TXE, DISABLE);
  USART_ITConfig(USART3, USART_IT_TC, DISABLE);
  USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
上面是开始的设置.
当把USART_IT_TXE和USART_IT_TC两者任意一个或者两个都设为ENABLE时,就一直进中断,其它的程序都不能运行,这是为什么呢?
初次使用STM8,望大神指点!!!
沙发
IJK| | 2013-7-5 15:20 | 只看该作者
不要一直允许USART_IT_TXE和USART_IT_TC中断,没数据要发送时 应该把它们都关闭

使用特权

评论回复
板凳
trumpxp| | 2013-7-5 18:45 | 只看该作者
建议不使用时   还是将不用的寄存器关闭   这样可以避免很多错误    顶一个

使用特权

评论回复
地板
weiweiwsk|  楼主 | 2013-7-8 08:56 | 只看该作者
IJK 发表于 2013-7-5 15:20
不要一直允许USART_IT_TXE和USART_IT_TC中断,没数据要发送时 应该把它们都关闭

当把们它打开的时候就一直进到中断函数里去了,没法执行其它任务了,当把它们关闭的时候也可以发送数据,就是出现上面的情况,8组数据只能收到一两组.
  USART_ITConfig(USART3, USART_IT_TXE, DISABLE);
  USART_ITConfig(USART3, USART_IT_TC, DISABLE);
这两个语句就是关闭中断是吧!

使用特权

评论回复
5
weiweiwsk|  楼主 | 2013-7-8 09:01 | 只看该作者
trumpxp 发表于 2013-7-5 18:45
建议不使用时   还是将不用的寄存器关闭   这样可以避免很多错误    顶一个  ...

你的意思是说只有在要发送数据的时候才允许发送中断是吧!数据发送完后就立马禁止发送中断吗?

使用特权

评论回复
6
IJK| | 2013-7-8 09:39 | 只看该作者
weiweiwsk 发表于 2013-7-8 08:56
当把们它打开的时候就一直进到中断函数里去了,没法执行其它任务了,当把它们关闭的时候也可以发送数据,就 ...

是的

使用特权

评论回复
7
weiweiwsk|  楼主 | 2013-7-8 11:38 | 只看该作者
IJK 发表于 2013-7-8 09:39
是的

那为什么用仿真器单步执行的时候就没有问题呢?还有我串口接收数据的时候是在接收中断函数里存储数据的,发送数据的时候是不是也得在发送中断函数里发送呢!

使用特权

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

本版积分规则

4

主题

26

帖子

2

粉丝