qazplm3218 发表于 2019-1-19 14:02:20

串口中断和定时器中断问题

矩阵按键扫描采用定时器中断扫描,100m扫描一次,现象是当串口有数据接收时,按键就不扫描了,数据接收完成后才能继续扫描按键,导致按键扫描不连续,有停顿现象,设置了中断优先级也是一样的现象,该怎么处理按键扫描?????

any012 发表于 2019-1-19 14:22:54

扫描程序在定时器中断函数里吗?

qazplm3218 发表于 2019-1-19 17:47:00

扫描程序在主程序里判断100ms定时器里的标志位进行按键扫描

radio2radio 发表于 2019-1-19 20:14:59

100ms才扫描一次键盘,就是没有串口的干扰,也是太慢了,肯定会发生丢失按键动作现象。
建议提高扫描频率,你的MCU不会慢到不堪负荷吧。 还有别的方法,就是GPIO直接触发键盘中断。

qazplm3218 发表于 2019-1-19 21:52:01

按键扫描频率提高到50ms也有丢失按键动作的现象。还有其他方法吗???

qazplm3218 发表于 2019-1-19 21:53:45

按键扫描频率提高到50ms也有丢失按键动作的现象。还有其他的方法吗???

radio2radio 发表于 2019-1-20 11:24:40

qazplm3218 发表于 2019-1-19 21:53
按键扫描频率提高到50ms也有丢失按键动作的现象。还有其他的方法吗???

那就提高到5ms

yklstudent-1794 发表于 2019-1-20 19:44:45

正常情況下20ms掃描一次就可以了,不過感覺更關鍵在於串口中斷内怎麽處理的,很佔時間?

any012 发表于 2019-1-21 15:48:17

本帖最后由 any012 于 2019-1-21 15:51 编辑

定时器中断到了以后,先关闭串口中断,然后等主循环里按键扫描接收后再打开串口中断。
这样行不行?
不过这样串口数据可能就会丢了。

是不是串口接收没处理好?串口中断只存数据不处理,设个标志,然后在主循环里处理串口数据。
页: [1]
查看完整版本: 串口中断和定时器中断问题