这个不能唤醒掉电模式.. 有办法解决吗?
掉电模式单片机进入主时钟停振/省电模式,CPU 以及全部外设均停止工作。这个按键检测程序是放在定时器中断中执行的,掉电模式定时器应该也停止工作了,定时器中断无法执行,所以应该是不能唤醒的。
我的理解应该是,你专门拿一个按键做掉电唤醒(外部中断或普通 I/O 口都支持的外部中断),而且这个按键不能再放在按键检测程序中使用。
<p>点赞收藏</p>
xujibicool 发表于 2024-12-8 13:21
掉电模式单片机进入主时钟停振/省电模式,CPU 以及全部外设均停止工作。这个按键检测程序是放在定时器中 ...
是的,应该就是这样子,定时器中断扫描的按键程序
但是我的项目只有一个按键哦
没有别的办法解决吗?
掉电之前打开中断.唤醒后马上关闭中断. 理论上可行. 但是我实际用下来不能执行 <p>这代码和状态机的相比还是有点问题.</p>
<p>就是松手的时候,偶尔会有误按</p>
<p>应该是没有松手等待的处理</p>
vb2002 发表于 2024-12-12 13:33
这代码和状态机的相比还是有点问题.
就是松手的时候,偶尔会有误按
应该是没有松手等待的处理
前面的是按下触发,后面3个是弹起的时候触发。
测试时,按着按键,然后手抖动,(按下触发)的会误触发,(弹起触发)的更稳定 xujibicool 发表于 2024-12-12 17:10
前面的是按下触发,后面3个是弹起的时候触发。
测试时,按着按键,然后手抖动,(按下触发)的会误触发, ...
能不能改成(按下触发)
出发后接下来的50ms 不执行任何动作.
这样就好了.
因为抬起触发有一个弊端.就是不能及时发现指令已经执行 vb2002 发表于 2024-12-12 18:07
能不能改成(按下触发)
出发后接下来的50ms 不执行任何动作.
这样就好了.
key.h 修改KEYDELAYTIME 为50 就可以了
key_cnt[] 进中断+1 ,之后与KEYDELAYTIME比较,条件判断
定时器中断1ms就50 ,2ms就25 依此类推 xujibicool 发表于 2024-12-12 18:25
key.h 修改KEYDELAYTIME 为50 就可以了
key_cnt[] 进中断+1 ,之后与KEYDELAYTIME比较,条件判断
定时器 ...
这样也有个弊端哦, 如果按下的市场不够50ms .不会响应
不是我挑刺.. 是我用这个代码,碰到这个问题了
我还特意换了个好点的开关.
就稍微好点了.
vb2002 发表于 2024-12-12 18:30
这样也有个弊端哦, 如果按下的市场不够50ms .不会响应
不是我挑刺.. 是我用这个代码,碰到这个问题了
我还 ...
KEYDELAYTIME数值修改,你调试满意为止 <p>mark <img alt="qiang" class="emoji" src="https://www.stcaimcu.com/static/image/smiley/default/qiang.gif" title="qiang" /></p>
页:
1
[2]