STM32
登录
直播中
姬盼希
7年用户
916经验值
擅长:控制/MCU
私信
关注
[问答]
STM32 HAL库的串口怎样才能进入中断回调函数呢
开启该帖子的消息推送
HAL库
串口
中断
STM32
HAL库的串口怎样才能进入中断回调函数呢?
回帖
(1)
倪辰曦
2021-12-8 15:30:14
关于STM32 HAL库 串口接收中断
串口每次接收到一个数据都会进入中断,而只有huart->RxXferCount减小到0了,才会进入中断回调函数。可以从下图中看出。
所以,中断接收的过程就是
(pTxBuffPtr,TxXferSize 和 TxXferCount 三个变量分别用来设置串口发送的数据缓存指针,发送的数据量和还剩余的要发送的数据量。
pRxBuffPtr,RxXferSize 和RxXferCount 则是用来设置接收的数据缓存指针,接收的最大数据量以及还剩余的要接收的数
据量。)
过程
当接收到一个字符之后,在函数
UART_Receive_IT中会把数据保存在串口句柄的成员变量pRxBuffPtr缓存中,并且使RxXferSize +1,RxXferCount -1,当RxXferCount 减小到0的时候,就会调用接收完成回调函数
HAL_UART_RxCpltCallback 进行处理。
1.CUBEMX配置的MX_USART1_UART_Init()中是没有开启中断的,需要加上
HAL_UART_Receive_IT(&huart1, (u8 *)aRxBuffer, RXBUFFERSIZE);
其中aRxBuffer是我们自己定义的临时缓冲区,如果它的长度RXBUFFERSIZE = 1,则每次进入中断之后,都会进入中断回调函数。
2.回调函数每调用一次,库的设置会自动将中断关闭,所以需要再次开启,这里我们放在了USART1_IRQHandler(),中断入口函数中。
3.读取USARTx->SR能避免莫名其妙的错误,所以在中断入口函数中加了
while(HAL_UART_GetState(&huart1) != HAL_UART_STATE_READY)//等待就绪
关于STM32 HAL库 串口接收中断
串口每次接收到一个数据都会进入中断,而只有huart->RxXferCount减小到0了,才会进入中断回调函数。可以从下图中看出。
所以,中断接收的过程就是
(pTxBuffPtr,TxXferSize 和 TxXferCount 三个变量分别用来设置串口发送的数据缓存指针,发送的数据量和还剩余的要发送的数据量。
pRxBuffPtr,RxXferSize 和RxXferCount 则是用来设置接收的数据缓存指针,接收的最大数据量以及还剩余的要接收的数
据量。)
过程
当接收到一个字符之后,在函数
UART_Receive_IT中会把数据保存在串口句柄的成员变量pRxBuffPtr缓存中,并且使RxXferSize +1,RxXferCount -1,当RxXferCount 减小到0的时候,就会调用接收完成回调函数
HAL_UART_RxCpltCallback 进行处理。
1.CUBEMX配置的MX_USART1_UART_Init()中是没有开启中断的,需要加上
HAL_UART_Receive_IT(&huart1, (u8 *)aRxBuffer, RXBUFFERSIZE);
其中aRxBuffer是我们自己定义的临时缓冲区,如果它的长度RXBUFFERSIZE = 1,则每次进入中断之后,都会进入中断回调函数。
2.回调函数每调用一次,库的设置会自动将中断关闭,所以需要再次开启,这里我们放在了USART1_IRQHandler(),中断入口函数中。
3.读取USARTx->SR能避免莫名其妙的错误,所以在中断入口函数中加了
while(HAL_UART_GetState(&huart1) != HAL_UART_STATE_READY)//等待就绪
举报
更多回帖
rotate(-90deg);
回复
相关问答
HAL库
串口
中断
如何去实现基于
HAL
库
改写的
STM32
L4
串口
接收定长
回
调
函数
呢
2021-12-07
1049
请问一下
stm32
串口
4要
怎样才能进入
HardFault_Handler
中断
呢
2021-12-09
951
如何去实现
HAL
库
的GPIO外部
中断
的
回
调
函数
呢
2021-12-01
2168
求教
STM32
CubeMx
串口
是
怎样
收发
中断
回
调
函数
的
2021-12-07
684
STM32
F409VE
串口
发送数据后无法
进入
回
调
函数
的原因是什么
2021-12-09
3298
如何去实现基于
HAL
库
的Printf
函数
功能重定向
呢
2021-10-15
2769
怎样
去使用
HAL
库
中断
接收
函数
呢
2021-11-16
999
请问一下
STM32
回
调
函数
和普通
函数
区别
2018-11-27
9182
怎样
去解决外部
中断
回
调
函数
执行错误的问题
呢
2022-08-22
2070
请问
hal
库
的
串口
接收完成
回
调
函数
中如何区分是不是DMA接收完成?
2024-05-07
182
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分