网站首页 > 技术文章 正文
一般在stm32开发时候,串口接收中断用的比较多,发送的用的少。如果仔细看手册你也会发现实际上针对发送的中断有两个,那我们到底该用哪个中断呢?
- 一个是TXE
- 一个是TC
那就分别来讲下这两个中断有什么区别,才好最终做选择。
第一个TXE中断,完整名称叫做Transmit data register empty,中文翻译:发送数据寄存器为空中断。如果使能了该中断并且在串口的发送寄存器里面没有数据就会立马产生中断。
第二个TC中断,完整名称叫做Transmission Complete,中文翻译:发送完成中断。如果使能该中断,那么在发送寄存器里面的数据被发送出去以后就会产生中断。
乍一看两个是不是很像,好像都是和发送数据寄存器有关。实际上呢还是有略微的不同,最关键的就是TXE中断在没有发送数据的时候都可以产生。而TC呢是必须发送一个数据后才能产生。
所以结论是两个中断都可以用来发送数据,只是流程稍有不同。
具体流程可以看下图:
可以看到使用TXE中断的时候流程会稍微简化一些,所以我使用发送中断的时候大部分都会用TXE。这样我只用把数据一股脑丢到缓冲区,然后再打开TXE中断(这时候发送寄存器是空的)就可以直接进中断挨个把数据发送出去。
但是使用TC一定需要先发送一个数据以后(这样才能有发送完成)才能进入中断。
猜你喜欢
- 2024-10-12 STM32单片机-多串口printf()问题与ASCII码解析
- 2024-10-12 stm32F0 串口的几个特殊功能 stm32f1串口引脚
- 2024-10-12 STM32F103编程学习——USB虚拟串口篇
- 2024-10-12 STM32F4入坑日记——串口发送数据(非中断)
- 2024-10-12 STM32 HAL库串口中断发送过程 stm32f4串口中断
- 2024-10-12 在货物监控设备研发时,STM32串口第一个字节丢失解怎么解决?
- 2024-10-12 STM32单片机采用环形缓冲区实现串口中断数据接收管理
- 2024-10-12 基于STM32的串口与DMA的完美组合(上)
- 2024-10-12 STM32下载程序新思路--使用串口下载STM32程序
- 2024-10-12 STM32F103编程学习——串口接收不定长数据
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)