串口中断和定时器中断问题
矩阵按键扫描采用定时器中断扫描,100m扫描一次,现象是当串口有数据接收时,按键就不扫描了,数据接收完成后才能继续扫描按键,导致按键扫描不连续,有停顿现象,设置了中断优先级也是一样的现象,该怎么处理按键扫描????? 扫描程序在定时器中断函数里吗? 扫描程序在主程序里判断100ms定时器里的标志位进行按键扫描 100ms才扫描一次键盘,就是没有串口的干扰,也是太慢了,肯定会发生丢失按键动作现象。建议提高扫描频率,你的MCU不会慢到不堪负荷吧。 还有别的方法,就是GPIO直接触发键盘中断。 按键扫描频率提高到50ms也有丢失按键动作的现象。还有其他方法吗??? 按键扫描频率提高到50ms也有丢失按键动作的现象。还有其他的方法吗??? qazplm3218 发表于 2019-1-19 21:53
按键扫描频率提高到50ms也有丢失按键动作的现象。还有其他的方法吗???
那就提高到5ms 正常情況下20ms掃描一次就可以了,不過感覺更關鍵在於串口中斷内怎麽處理的,很佔時間? 本帖最后由 any012 于 2019-1-21 15:51 编辑
定时器中断到了以后,先关闭串口中断,然后等主循环里按键扫描接收后再打开串口中断。
这样行不行?
不过这样串口数据可能就会丢了。
是不是串口接收没处理好?串口中断只存数据不处理,设个标志,然后在主循环里处理串口数据。
页:
[1]