使用中断
- 通过配置串口的接收作为中断源,开启中断输出控制,配置NVIC。开启中断通道。
//开启中断输出控制
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
//配置NVIC
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel=USART2_IRQn; //选择USART2的中断通道
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE; //中断使能
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStruct);
- 中断服务子函数
中断服务子函数写好后,就可以在中断里读取接收到的数据了。
当接收到数据后,触发接收中断,主程序暂停执行。接收完数据后主程序回复执行。当接收到数据时,就触发中断。
void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET) //RXNE 标志位为1 表示可以接收数据
{
RX_Data=USART_ReceiveData(USART2);
Flag=1;
USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清除RXNE标志位
}
}
- 主程序测试
uint8_t RX_Data;
uint8_t Flag;
int main()
{
Serial_Init();
Serial_SendByte(0x16);
while(1)
{
if(Flag==1)
{
Serial_SendByte(RX_Data);
}
}
}
void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET) //RXNE 标志位为1 表示可以接收数据
{
RX_Data=USART_ReceiveData(USART2);
Flag=1;
USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清除RXNE标志位
}
}
下图为程序现象:可以看到,串口确实收到了数据,只是我把接收到的数据0xFE放在了while循环里,这说明数据接收是成功的,使用中断是可行的。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
STM32
+关注
关注
2240文章
10675浏览量
348869 -
串口通信
+关注
关注
32文章
1578浏览量
54873 -
函数
+关注
关注
3文章
3911浏览量
61313 -
中断源
+关注
关注
0文章
16浏览量
7895
发布评论请先 登录
相关推荐
【图文解说】利用飞思卡尔S12X系列单片机双核功能实现串口空闲中断接收
利用飞思卡尔S12X系列单片机双核功能实现串口空闲中断接收【详解】1. 关于XGATE2. XGATE的工作模式3. 软件实现3.1 XGATE核功能配置3.1.1 XGATE初始化
发表于 11-26 20:21
•3次下载
STM32 HAL CubeMX 串口IDLE接收空闲中断+DMA
关于DMA原理部分讲解,及CubeMx配置部分,请参考该文章【STM32】HAL库 STM32CubeMX教程十一—DMA (串口DMA发送接收)本篇文章我们仅针对例程进行详解剖析本篇文章提供两种
发表于 12-20 19:39
•30次下载
STM32F407串口中断配置
花费了很久,发现用库函数去访问发送完成和接收完成的标志位会出问题,改成了直接访问寄存器对应的位,终于实现串口中断的通信。至于为什么库函数不行,lz还没有发现原因。 串口中断适合用于发送数据较少的情况
发表于 12-24 18:48
•1次下载
STM32CubeMx配置DMA+串口空闲中断+FreeRTOS,完美处理串口数据。
作为STM32最常用的外设之一,可以说串口用的好不好可以看出使用者有没有深入掌握STM32的使用。常见的串口轮训发送+接收中断虽然能够应付一
发表于 12-24 19:11
•48次下载
单片机串口接收超时中断是怎么回事啊?
以确保单片机能够及时响应并处理各种不同的串口通信问题。在本文中,我们将详细探讨单片机串口接收超时中断的相关知识。 1. 单片机串口
评论