08.AI8051U-定时器周期性调度任务
**本视频深入讲解定时器周期性调度任务的基础与应用,先回顾上节课定时器相关常见问题及解决方法,强调编译时检查错误的重要性。接着介绍利用定时器实现周期性任务的基本框架,涵盖变量计数与中断函数执行任务。还讲解数组用于方便管理多个周期性任务及结构体数组在更复杂任务调度系统中的应用,最后讨论文件创建及引用注意事项,旨在助观众掌握技能、提升编程实践能力。 **
定时器使用常见问题
1.定时器初始化错误:定时器初始化函数名称错误或大小写错误。
2.编译错误:编译时提示错误,但错误信息可能不完整。
3.符号错误:中文分号或括号使用错误。
4.括号不匹配:代码中括号不匹配或缺失。
5.代码格式不规范:代码缩进和排版不规范,导致阅读困难。
定时器使用技巧
1.时间显示设置:在更多设置中关闭数据分包显示和显示分包收发时间。
2.按键响应问题:按键响应时间设置不当,导致按键无法正常响应。
周期性任务介绍
1.周期性任务定义:每隔一定时间执行一次的函数。
2.任务示例:LED1每0.3秒闪烁一次,LED2每0.6秒闪烁一次,LED3每0.9秒闪烁一次。
定时器初始化优化
1.定时器初始化改进:使用毫秒级定时器初始化函数。
2.代码优化:删除不必要的延时函数和定时器初始化函数。
周期性任务实现
1.变量计数:使用毫秒级变量计数器实现周期性任务。
2.LED控制:根据计数器的值控制LED的闪烁频率。
数组的定义和使用
1.数组定义:通过中括号定义数组,并指定数组长度。
2.数组索引:数组索引从零开始,类似于寄存器的位操作。
3.数组赋值:通过索引访问数组元素并进行赋值。
for循环的使用
1.for循环基本语法:for(i=0; i<3; i++)。
2.for循环应用:在定时器中断和主循环中使用for循环执行固定次数的循环。
流水灯实现
1.流水灯功能:实现LED0到LED7的顺序点亮和熄灭。
2.数组应用:使用数组定义LED状态,并通过循环切换LED状态。
按键处理优化
1.按键抖动处理:通过检测按键按下和松开的时间来避免抖动。
2.按键累积计数:使用计数器记录按键按下的次数,达到一定次数后执行相应操作。
文件创建与工程添加
1.文件创建步骤:新建文件并保存,添加到工程,添加引用路径。
2.config.c和config.h:用于配置和初始化的C和H文件。
结构体数组应用
1.结构体定义:定义包含run、timestamp和task字段的结构体。
2.任务调度系统:使用结构体数组实现周期性任务调度。
IO操作封装
1.IO操作封装:将IO操作封装在单独的文件中,便于管理和维护。
2.LED闪烁任务:在IO文件中定义LED闪烁的任务函数。
按键处理任务添加
1.按键处理任务:在主循环中调用按键处理函数,实现按键单击事件的处理。
总结
定时器实现周期性任务的基本原理
定时器设置的关键步骤
变量自加操作
按键控制任务执行
数组的定义与使用方法
for循环语句的使用方法
*代码中不要出现中文的符号