记录一下单片机进行SPI+DMA传输时出现卡死在获取状态BUSY位置
检测中断发现,SPI和DMA的中断优先级都是1,然后按键优先级别是1和编码器按键优先级别是0。①百度问题现象,发现有的人遇到的问题是因为DMA缓存数组的存储的RAM位置异常会导致这个情况,然后就检测map表,同时进行调整空间大小无效。好吧,中断按键中加HAL_DELAY()也有这种情况,就是系统滴答定时器的中断优先级比中断按键低就会出现这个现象。②刚好今天添加的内容的中断按键触发,之前使用轮询按键
·

问题现象:
显示屏能正常显示东西,但是在中断按键触发事件后,卡死界面。DEBUG发现卡死在图片中位置了。
解决思路:
使用的单片机是PY32F403的单片机
①百度问题现象,发现有的人遇到的问题是因为DMA缓存数组的存储的RAM位置异常会导致这个情况,然后就检测map表,同时进行调整空间大小无效。并非这个原因导致。
②刚好今天添加的内容的中断按键触发,之前使用轮询按键控制界面完全是正常,突然不行,后面感觉问题应该出在中断上。
检测中断发现,SPI和DMA的中断优先级都是1,然后按键优先级别是1和编码器按键优先级别是0。应该就是DMA中断时,被编码器按键打断,导致中断没有清除数据然后卡在BUSY状态无法退出。
解决方法:
调整优先级:
SPI和DMA优先级还是1.然后编码器按键和普通中断按键优先级改3,然后就正常;
好吧,中断按键中加HAL_DELAY()也有这种情况,就是系统滴答定时器的中断优先级比中断按键低就会出现这个现象。
更多推荐



所有评论(0)