问题现象:

显示屏能正常显示东西,但是在中断按键触发事件后,卡死界面。DEBUG发现卡死在图片中位置了。

解决思路:

使用的单片机是PY32F403的单片机

①百度问题现象,发现有的人遇到的问题是因为DMA缓存数组的存储的RAM位置异常会导致这个情况,然后就检测map表,同时进行调整空间大小无效。并非这个原因导致。

②刚好今天添加的内容的中断按键触发,之前使用轮询按键控制界面完全是正常,突然不行,后面感觉问题应该出在中断上。

检测中断发现,SPI和DMA的中断优先级都是1,然后按键优先级别是1和编码器按键优先级别是0。应该就是DMA中断时,被编码器按键打断,导致中断没有清除数据然后卡在BUSY状态无法退出。

解决方法:

调整优先级:

SPI和DMA优先级还是1.然后编码器按键和普通中断按键优先级改3,然后就正常;

好吧,中断按键中加HAL_DELAY()也有这种情况,就是系统滴答定时器的中断优先级比中断按键低就会出现这个现象。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐