STM32 不断进入串口中断问题 解决方法
来源:互联网 发布:阳光罐子 淘宝 编辑:程序博客网 时间:2024/05/16 13:03
STM32 有时候会不断进入中断,解决方法如下
1.串口初始化配置时,需要打开ORE 溢出中断,如下红色代码所示
void Usart_Init(void){GPIO_InitTypeDef GPIO_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;USART_InitTypeDef USART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);// 开启串口时钟GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1); GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_Init(GPIOA,&GPIO_InitStructure);USART_InitStructure.USART_BaudRate = 57600;// 配置波特率为115200USART_InitStructure.USART_StopBits = USART_WordLength_8b;// 配置数据长度为8USART_InitStructure.USART_StopBits = USART_StopBits_1;//设置停止位USART_InitStructure.USART_Parity = USART_Parity_No;// 配置奇偶校验为NONEUSART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;// 配置硬件流为NONE USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;// 打开Rx接收和Tx发送功能USART_Init(USART1,&USART_InitStructure);// 配置USART_Cmd(USART1,ENABLE);NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;// 选择中断通道NVIC_InitStructure.NVIC_IRQChannelPriority = 2;// 抢断优先1NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;// 使能中断NVIC_Init(&NVIC_InitStructure);<span style="color:#ff0000;">USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);// 打开中断USART_ITConfig(USART1, USART_IT_ORE, ENABLE);</span>// 打开中断}
2.在中断中,检测溢出中断并作处理,代码如下所示
void USART1_IRQHandler(void){u8 dat;<span style="color:#ff0000;">if (USART_GetITStatus(USART1, USART_IT_ORE) == SET){USART_ClearITPendingBit(USART1,USART_IT_ORE); USART_ReceiveData( USART1 );}</span>if( USART_GetITStatus(USART1,USART_IT_RXNE) != RESET )// 等价于if( !RI ) 检查串口数据是否已就位{USART_ClearITPendingBit(USART1,USART_IT_RXNE);dat = USART_ReceiveData( USART1 );uart_rec_buf[uart_len++]=dat;RX_TIM=UART_INIT_TIM;}}
这样就可以解决,串口不断进入中断的问题
0 1
- STM32 不断进入串口中断问题 解决方法
- STM32中关于串口中断的调试(不断进入发送中断的原因)
- stm32不断的进入中断形成死循环
- STM32串口一直进中断解决方法
- STM32串口一直进中断解决方法
- STM32串口悬空导致CPU持续进入中断函数
- 关于STM32串口调试RS485时自动进入接收中断
- STM32串口中断卡死主循环问题分析
- STM32串口中断卡死主循环问题分析
- STM32串口中断卡死主循环问题分析
- stm32 EXTI中断BUG,无法进入外部中断的问题
- STM32定时器进入中断后无法退出的解决方法
- STM32串口中断使用
- STM32 串口中断 BUG
- STM32串口中断使用
- STM32串口发送中断
- stm32 串口中断
- stm32串口中断
- ios7 滑动返回
- 常见tcp/ip协议结构定义
- 【启发式搜索】八数码问题
- 利用Memcache解决数据库高并发访问的瓶颈问题
- firefox 阻止此页面创建其他对话框
- STM32 不断进入串口中断问题 解决方法
- 【简易的APP开发】开发简易安卓浏览器(一)
- cisco3550交换机的端口限速配置
- NUTCH2.3 hadoop2.7.1 hbase1.0.1.1 solr5.2.1部署(一)
- 高德地图01---在activity中展示高德地图
- struts2的s:iterator 标签 详解
- 优秀架构博文
- Sniffer简介
- sqlplus登录\连接命令、sqlplus命令的使用大全