搜索
查看: 1661|回复: 2

[求助] STM32L051使用HAL库串口中断奇怪问题

[复制链接]

该用户从未签到

1

主题

1

帖子

0

蝴蝶豆

新手上路

最后登录
2021-3-4
发表于 2021-3-4 13:05:26 | 显示全部楼层 |阅读模式
使用STM32CUB生成原始代码,然后采用串口中断接收

L051有两个串口,串口1,串口2,以及一个低功耗串口

发现只有串口2可以正常中断发收

为了使能中断,都在while主循环之前调用HAL_UART_Receive_IT(&huart2,(uint8_t *)&value,1);

但串口1或者低功耗串口,调用这个函数时,程序就卡死在HAL_UART_Receive_IT这个函数中,跟踪进去发现是卡死在
/* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */

                SET_BIT(huart->Instance->CR3, USART_CR3_EIE);
       /* Enable the UART Parity Error interrupt and Data Register Not Empty interrupt */
    SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);


这两句,

请教!
回复

使用道具 举报

该用户从未签到

133

主题

4688

帖子

239

蝴蝶豆

版主

最后登录
2021-4-10
发表于 2021-3-4 15:49:58 | 显示全部楼层
楼主在测试的过程中,是不是在串口2接收后加了断点了?如果是,是因为断点导致的串口1接收数据溢出。需要重新初始化串口1解决这个问题。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

1306

帖子

929

蝴蝶豆

版主

最后登录
2021-3-31
发表于 2021-3-18 14:29:45 | 显示全部楼层
从语句上看,这两句是设置寄存器位,并没有循环等待和错误判断,不明白为什么会卡死呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-26 12:19 , Processed in 0.151260 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表