22
272
836
高级技术员
定时器中断函数() { 变量定义; n多的函数调用; 清除中断标志; }
void main() { 单片机初始化; while(1) { 喂看门狗函数(); 附带一些操作flash的函数(因为一般的操作flash时间都比较长,如果放在中断中处理可能会引起一些不可预知的错误) } }
使用特权
222
1万
4万
技术总监
ayb_ice 发表于 2014-8-3 09:26 别放在中断中处理 因为很多MCU其实不支持中断嵌套,这样会导致其它中断严重延迟响应
定时器中断函数() { 变量(静态变量)定义; 定时计数; if(定时时间到) { 定时标志位置1; } 清除中断标志; } 然后main()函数: void main() { 。。。略; while(1) { if(标志位为1) { 清除标志位; 处理定时任务; } } }
4
374
1249
助理工程师
排山倒海 发表于 2014-8-3 09:38 我很多项目需要驱动蜂鸣器、检测过零信号、驱动可控硅等需要用定时中断100-200uS甚至需要50-80uS定时中断, ...
南宫云明 发表于 2014-8-3 09:45 我以前做过红外编码的学习一个项目,它是需要用到定时器捕获功能的,捕获上升沿下降沿,捕获之后肯定要计 ...
排山倒海 发表于 2014-8-3 09:52 解码部分在中断中处理,至于遥控按键功能在主函数中处理。 类似真正的数码管底层动态扫描在中断里处理, ...
排山倒海 发表于 2014-8-3 10:00 《匠人手记》的“手记3 编程思路漫谈”的“六、 中断与前/后台的程序结构”中有一些介绍。 ...
南宫云明 发表于 2014-8-3 10:23 还有一点,比如有许多任务需要处理时,会不会用模拟堆栈的方法来处理? ...
159
5万
版主
NE5532 发表于 2014-8-3 14:45 原则上说,中断处理程序里的东西尽量少,尽量只处理“紧急”的事情,但是最高手的答案就是——没有禁止你在 ...
南宫云明 发表于 2014-8-3 09:38 比如这样:
5
70
220
中级技术员
wstcllx 发表于 2014-8-4 08:56 呵呵呵。。。你也搞这个?你用什么mcu?
南宫云明 发表于 2014-8-4 09:14 这是我最开始写的一个程序,用的LPC2214,现在想想当时写那个程序太白痴了,框架乱的一塌糊涂。。。 ...
wstcllx 发表于 2014-8-4 09:51 你用ARM应该好点的。我用51去搞的。用了两个输入实现上升和下降沿中断。不过我没有过零什么的东西。收完 ...
南宫云明 发表于 2014-8-4 10:20 现在增强型51也有很多带定时器捕获功能的,最好用定时器去做,如果实在没有只能用外部中断和普通定时器去 ...
发表回复 本版积分规则 回帖后跳转到最后一页
人才类勋章
时间类勋章
发帖类勋章
等级类勋章
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号