STM32使用HAL库寄存器判断串口2中断类型并清楚该中断
时间: 2023-06-20 10:05:24 浏览: 182
在使用STM32 HAL库时,可以通过以下步骤来判断串口2中断类型并清除该中断:
1. 定义一个USART_HandleTypeDef类型的结构体变量,用于存储USART2的参数和状态信息:
```c
USART_HandleTypeDef huart2;
```
2. 在串口初始化函数中,使能USART2中断,并设置中断优先级:
```c
/* 使能USART2中断 */
HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART2_IRQn);
```
3. 在USART2中断处理函数中,判断中断类型并清除该中断:
```c
void USART2_IRQHandler(void)
{
uint32_t isrflags = READ_REG(huart2.Instance->SR);
if (isrflags & USART_SR_RXNE) // 接收寄存器非空中断
{
// 处理接收数据
// ...
// 清除接收寄存器非空中断标志
__HAL_UART_CLEAR_FLAG(&huart2, UART_FLAG_RXNE);
}
if (isrflags & USART_SR_TXE) // 发送寄存器空中断
{
// 发送数据
// ...
// 清除发送寄存器空中断标志
__HAL_UART_CLEAR_FLAG(&huart2, UART_FLAG_TXE);
}
if (isrflags & USART_SR_TC) // 传输完成中断
{
// 关闭发送中断
__HAL_UART_DISABLE_IT(&huart2, UART_IT_TC);
// 清除传输完成中断标志
__HAL_UART_CLEAR_FLAG(&huart2, UART_FLAG_TC);
}
}
```
在上面的代码中,使用了`__HAL_UART_CLEAR_FLAG`和`__HAL_UART_DISABLE_IT`宏来清除中断标志和关闭中断。这些宏在HAL库中已经定义好了,可以直接使用。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)