打印
[其他ST产品]

STM32的串口中断详解

[复制链接]
896|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kzlzqi|  楼主 | 2023-4-30 11:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
中断配置

使能接收中断


0






使用特权

评论回复
沙发
kzlzqi|  楼主 | 2023-4-30 11:07 | 只看该作者
中断服务函数
1. 中断服务函数名称查找

使用特权

评论回复
板凳
kzlzqi|  楼主 | 2023-4-30 11:07 | 只看该作者
2. 中断服务函数

使用特权

评论回复
地板
kzlzqi|  楼主 | 2023-4-30 11:07 | 只看该作者
3. 可以选择的串口中断类型

使用特权

评论回复
5
kzlzqi|  楼主 | 2023-4-30 11:08 | 只看该作者
3. 可以选择的串口中断类型

使用特权

评论回复
6
kzlzqi|  楼主 | 2023-4-30 11:08 | 只看该作者
此处定义

使用特权

评论回复
7
kzlzqi|  楼主 | 2023-4-30 11:09 | 只看该作者
其他文件中的声明

使用特权

评论回复
8
kzlzqi|  楼主 | 2023-4-30 11:09 | 只看该作者
extern u8 USART_RX_BUF[USART_REC_LEN]
最大接收字节数

使用特权

评论回复
9
kzlzqi|  楼主 | 2023-4-30 11:10 | 只看该作者
extern u16 USART_RX_STA
接收状态标记

使用特权

评论回复
10
kzlzqi|  楼主 | 2023-4-30 11:10 | 只看该作者
0x0D是回车的ASCII码

0x0A是换行的ASCII码

若电脑发送了一串数据,则我们需要在电脑发送这串数据的最后加上0x0D

STM32分析接收到的数据,如果读到0x0D,则将bit14置1

STM32分析接收到的数据,如果读到0x0A,则将bit15置1

这里的0x0D和0x0A不会给bit13~0加1

使用特权

评论回复
11
kzlzqi|  楼主 | 2023-4-30 11:11 | 只看该作者
外部函数只需要访问USART_RX_STA的bit15即可

若USART_RX_STA的bit15为1,则已经完成了一次接收了,而且我们知道,数据的长度是bit13~0

因此,我们只需要按照bit13~0到USART_RX_BUF中去读取即可

读取完成后,我们再把USART_RX_STA全部清0,以便下一次继续接收

使用特权

评论回复
12
kzlzqi|  楼主 | 2023-4-30 11:12 | 只看该作者

使用特权

评论回复
13
kzlzqi|  楼主 | 2023-4-30 11:12 | 只看该作者

使用特权

评论回复
14
kzlzqi|  楼主 | 2023-4-30 11:12 | 只看该作者
使用电脑发送数据时,记得勾选发送新行,这样就会以0x0D和0x0A结尾

使用特权

评论回复
15
sdlls| | 2023-5-5 17:49 | 只看该作者
STM32串口固件库中定义的几个中断标志位什么意思

使用特权

评论回复
16
louliana| | 2023-5-5 18:14 | 只看该作者
当串口接收到数据并保存到缓冲区中后,需要进行相应的数据处理。例如,可以将数据发送到其他设备,或者根据具体应用场景进行解析和处理等。在数据处理过程中,也可以使用中断方式实现,以提高系统的响应速度和效率。

使用特权

评论回复
17
updownq| | 2023-5-5 20:12 | 只看该作者
STM32的USART三种编程方式:轮询方式、中断方式、DMA方式?

使用特权

评论回复
18
lihuami| | 2023-5-5 20:25 | 只看该作者
在使用串口中断之前,需要先将对应的中断源打开,并配置相应的中断优先级。例如,在使用USART1串口时,可以通过如下代码开启接收中断,并将中断优先级设置为最高

使用特权

评论回复
19
tabmone| | 2023-5-7 14:11 | 只看该作者
在STM32系列单片机中,串口的数据通信可以使用中断方式进行实现。

使用特权

评论回复
20
huanghuac| | 2023-5-15 19:28 | 只看该作者
STM32串口固件库中定义的几个中断标志位什么意思

使用特权

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

本版积分规则

105

主题

858

帖子

2

粉丝