STM32串口控制寄存器疑问

[复制链接]
3736|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 | 显示全部楼层

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

请问在执行这句话时,你的发送数据寄存器中有数据吗?是空的吗?
 楼主| 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++]); 
    }

可是一个数据都没有发出,这样做可以吗?
 楼主| big5 发表于 2008-11-26 16:12 | 显示全部楼层

又读了datasheet

“对USART_DR的写操作,将该位清零”
就是说一定要马上发数据,否则TXE一直是1?
香水城 发表于 2008-11-26 16:20 | 显示全部楼层

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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

91

主题

242

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部