打印

STM32串口控制寄存器疑问

[复制链接]
3100|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
big5|  楼主 | 2008-11-26 14:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
准备采用中断法发送数据,看到datasheet描述USART_CR1位7(TXEIE)和位8(TCIE),不是太明白。
采用那一种比较好?
沙发
big5|  楼主 | 2008-11-26 14:53 | 只看该作者

香主,扫盲一下了

使用特权

评论回复
板凳
big5|  楼主 | 2008-11-26 15:49 | 只看该作者

谢谢香主

USART_ITConfig(USART1, USART_IT_TXE, ENABLE);是不是就可以马上产生一个“发送数据寄存器空中断”?

使用特权

评论回复
地板
香水城| | 2008-11-26 16:04 | 只看该作者

我很伤心,说了这么多你还会问出这样的问题

请问在执行这句话时,你的发送数据寄存器中有数据吗?是空的吗?

使用特权

评论回复
5
big5|  楼主 | 2008-11-26 16:10 | 只看该作者

sorry

刚刚回帖前没仔细看。现在理解了。
我的软件采用下面的方式:
用全局变量SendComplete标记是否发送,
if (USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
  {     
    SendComplete = 1;
  }

在主while中判断
    if (SendComplete == 1)
    {
      SendComplete = 0;
      USART_SendData(USART1, TxBuffer1[TxCounter1++]); 
    }

可是一个数据都没有发出,这样做可以吗?

使用特权

评论回复
6
big5|  楼主 | 2008-11-26 16:12 | 只看该作者

又读了datasheet

“对USART_DR的写操作,将该位清零”
就是说一定要马上发数据,否则TXE一直是1?

使用特权

评论回复
7
香水城| | 2008-11-26 16:20 | 只看该作者

只要发送数据寄存器中没有数据,TXE=1

使用特权

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

本版积分规则

91

主题

242

帖子

0

粉丝