硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4265|回复: 2
收起左侧

[有问必答] 串口中断里面为什么不要清除发送寄存器空标志等?

[复制链接]

62

主题

77

回帖

263

积分

高级会员

积分
263
发表于 2018-3-2 14:44:51 | 显示全部楼层 |阅读模式
本帖最后由 freertos 于 2018-3-2 14:49 编辑

    串口中断里面为什么不要清除发送寄存器空标志(最后一次发送完成后没有继续写DR不会自动清除TXE)和发送完成标志TC等?
  1. /* 处理发送缓冲区空中断 */
  2.         if (USART_GetITStatus(_pUart->uart, USART_IT_TXE) != RESET)
  3.         {
  4.                 //if (_pUart->usTxRead == _pUart->usTxWrite)
  5.                 if (_pUart->usTxCount == 0)
  6.                 {
  7.                         /* 发送缓冲区的数据已取完时, 禁止发送缓冲区空中断 (注意:此时最后1个数据还未真正发送完毕)*/
  8.                         USART_ITConfig(_pUart->uart, USART_IT_TXE, DISABLE);

  9.                         /* 使能数据发送完毕中断 */
  10.                         USART_ITConfig(_pUart->uart, USART_IT_TC, ENABLE);
  11.                 }
  12.                 else
  13.                 {
  14.                         /* 从发送FIFO取1个字节写入串口发送数据寄存器 */
  15.                         USART_SendData(_pUart->uart, _pUart->pTxBuf[_pUart->usTxRead]);
  16.                         if (++_pUart->usTxRead >= _pUart->usTxBufSize)
  17.                         {
  18.                                 _pUart->usTxRead = 0;
  19.                         }
  20.                         _pUart->usTxCount--;
  21.                 }

  22.         }
  23.         /* 数据bit位全部发送完毕的中断 */
  24.         else if (USART_GetITStatus(_pUart->uart, USART_IT_TC) != RESET)
  25.         {
  26.                 //if (_pUart->usTxRead == _pUart->usTxWrite)
  27.                 if (_pUart->usTxCount == 0)
  28.                 {
  29.                         /* 如果发送FIFO的数据全部发送完毕,禁止数据发送完毕中断 */
  30.                         USART_ITConfig(_pUart->uart, USART_IT_TC, DISABLE);

  31.                         /* 回调函数, 一般用来处理RS485通信,将RS485芯片设置为接收模式,避免抢占总线 */
  32.                         if (_pUart->SendOver)
  33.                         {
  34.                                 _pUart->SendOver();
  35.                         }
  36.                 }
复制代码


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2018-3-2 16:22:20 | 显示全部楼层
QQ截图20180302162054.png
回复

使用道具 举报

62

主题

77

回帖

263

积分

高级会员

积分
263
 楼主| 发表于 2018-3-2 16:45:01 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-17 06:49 , Processed in 0.036831 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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