找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1076|回复: 5
打印 上一主题 下一主题
收起左侧

大家好,单片机初学者一直有个定时器疑问望能给指点

[复制链接]
楼主
ID:451718 发表于 2020-7-20 17:30 | 显示全部楼层
要看你对这个IO检测对象是什么,还有这个对象产生IO变化的时长是什么级别,毫秒级还是10毫秒级,或是更长。 一般来说,
1:毫秒级以下的IO变化,都应该采用外部中断来处理。
2:毫秒以上的到10毫秒以内,我一般是在毫秒的定时中断函数里面,做一个标志位检测,在主程序或者其它地方判断这个标志位。
3 : 10毫秒到200毫秒的级别,放在10ms的定时器中就好了。
4:大于200毫秒的级别,直接放主程序中就行。
刚做单片机的时候,也有你同样的问题,假如定义了2个定时器,分别是定时器0和定时器1,定时器0是1ms的,定时器1是10ms的。在系统时钟运行到第10ms时候,到底是先触发第10个定时器0,还是第一个定时器1?按照优先级,应该是理解为先触发定时器0,再触发定时器1。其实是同时触发的,只是硬件会先执行定时器0里面的程序,再执行定时器1里面的程序。 那么值得注意的问题来了,如果定时器0执行的时间消耗了900ns会怎么样呢?那么留给定时器1的资源时长就只有1ms了。这样,很容易就会跑飞。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表