《8051U深度入门到32位51大型实战视频》定时器中断学习心得
第7集
定时器是一个重要的单片机外设,很多与时间尺度相关的引用都需要用到定时器。比如精准的计时,精准的延时。
例如单线的DS18B20通信,就要精准计时,不然就无法识别出0和1,以及WS2812三色LED,也是需要时间刻度来确保区分出串行数据。
配置的时候结合手册外设的结构图来配置就很容易了。上面标注的寄存器名字跟头文件都是一一对应的。
定时器计数,溢出后可以中断,中断后触发中断函数,中断函数内处理相关的时间节点事件。
像8051一样,定时器的中断入口通过关键字确定
void Timer0_Isr(void) interrupt 1 //3秒执行一次
{
state = !state;
P00 = state;
P01 = !state;
}
学arm的时候也是,中断的入口都是在某个配置文件内设置好的。
第十一集
矩阵按键学习心得
矩阵按键可以实现更多的按键功能,通过扫描方式,逐行确定是哪个按钮被按下的。
通过对不同的行列组合测试以确定是哪一行,哪一列短接了,这样就可以判断处是哪个按钮被按下了。
该课程可以学到IO的基本输入和输出功能,以及上拉电阻的概念。另外就是通过逻辑组合识别出是哪个位置按钮被按下了。
这个方法有给缺点没法实现组合按钮的识别,不知道我的理解正确不。
第八集
定时器周期性调度任务 学习心得
通过定时器实现周期性的对各个任务执行,可以有效避免卡在某个任务里,这样就需要对每个任务做细分了,确保每个任务在自己的执行周期内能够执行完毕。
定时器只需要在指定的周期内标记对应的任务要执行,并在主函数内执行相关的函数后清理标记确保下个周期再被记录。
实现类似的功能还可以通过时钟参考点,类似Ardunio提供的时间函数一样,循环里在每个任务有一个时间记录变量,循环到自己就去读取一下时钟看看有没有到自己的任务执行点,如果有就执行,否则就跳过去。
我觉得这两者还是挺像的。
页:
[1]