潍坊建网站海南七星彩网站建设
多任务编程的概念

 方式一:实时操作系统(不建议新手使用)
 方式二 :裸机多任务模型
 
 逻辑多任务的基本原理
 
 把三个任务分别分为一个一个的片段 然后先执行任务一的第一个切片 执行第二个任务的第一个片段 执行第三个任务的第一个片段 然后再返回执行第一个任务的第二个片段 接着循环 达到右边彩色条纹的效果 如果把任务分足够多的片段 执行的速度够快 就可以认为三个任务并行执行
 裸机多任务模型
 
 第一个阶段是初始化 GPIO EXTI等外设和其他的初始化 第二个阶段是任务的执行注意在任务的执行中不能调用延时函数PAL_Delay 就是让CPU在多个任务中切换让三个任务达到同时并行执行 第三个阶段是中断函数执行阶段 也不能调用延时函数
裸机多任务练习 LED闪灯

 按下按钮后灯闪烁的速度变化 一共有三个挡位 由之前的代码可知 要在while中不断调用readbit这个函数 读取按键的状态 然后led闪灯也是要在while 就是两个并行的任务在while中
 
 按键的检测本来是要在while上用if语句检测两个变量previous和current 但是使用了PAL库直接调用函数
 
 只需要把按钮的初始化的句柄传入即可
 闪灯模式的切换 定义一个变量blinkmode
 
 闪灯的程序
 
就是调用一个writebit的函数写0就亮起 写1就熄灭 然后再亮起和熄灭之间增加一个延时函数
 根据闪灯变量来切换闪灯模式
 
 但是这个进程远远超过了进程的时间限制 5ms 所以要改造这个函数
 创建一个状态变量为stage stage=0就为灯熄灭 stage=1就为灯亮起 然后在这两个状态中来回切换就是灯的亮灭进程
 亮起就调用GPIOC write bit函数写reset 熄灭就写入set
 那么如何编写超时的函数?
 
 这个函数是用来获取时间的 就是单片机开启的一瞬间开始计时 0 1 2 3 …
