• 首页
  • kok下载官网app
  • KOKapp下载
  • KOK官方合作伙伴
  • 服务内容
  • 投资者关系
  • 加入我们
  • 联系我们
  • 网站地图
|
  1. kok下载官网app
  2. English

单片机多任务框架设计

发布时间:2022-07-07 07:22:02      来源:kok下载官网app 作者:KOK官方合作伙伴

  ,程序设计工作量也不小。如何方便快捷的移植、开发调试以及维护,可以实现是程序设计人员追求的缩短设计周期的目标。

  跑系统的单片机可以更有效支持多任务,完成更加复杂的任务,但需要更大的存储空间用于系统程序和用户程序;裸跑的单片机只能进行单任务,对存储空间需求较低。在这里主要研究一种多任务程序框架设计,让裸奔的单片机跑出操作系统的感觉,单片机虽然是裸机奔跑,但是往往现实的需要决定了我们必须跑出操作系统的姿态——多任务程序。

  系统实现多任务,最重要的特点是分时和消息传递与处理。引用一个网友的总结:stateMachine +timerTick + queue。

  queue,在设计框架时需要设计一个消息队列贯穿整个系统,把这个队列机制做成通用模块,在不同的程序执行模块中调用。消息队列用于缓冲事件,事件不知道什么时候会到来,也不能保证来了就能迅速得到处理,使用消息队列,可以保证每个事件都能处理到。消息通常分为两种类型:①外部事件收集,然后存储到队列,如按键、IO 中断、时钟任务等硬件发出;②在任务处理过程中,一个任务触发新的任务,例如在蓝牙遥控器中,接收解析串口数据的任务中发出按键消息。timerTick,系统的时钟基准。用一个定时器来建立通用定时器任务,管理不同任务相关的多个定时器,在定时到达时,由定时器任务发出消息。

  stateMachine,任务收到消息后,根据当前状态决定如何处理消息。

  我们以包含按键开关一个定时1 s 的LED 灯闪烁为例,示例包含框架的全部内容。

  1)顶层主程序设计,系统开始进行硬件初始化、任务初始化、时钟初始化;然后在1 个循环中不停地进行循环事件收集、时间事件收集和处理、消息队列时间处理。

  2)在时钟基准的设置上,建立1 个1 ms 的定时器,在定时器中断里判断开启的定时任务是否发生,满足条件设置定时标志,同时关闭此项定时任务。

  3)循环事件收集:在循环中判断是否有按键按下,如有按键按下,发送按键消息。

  1)添加消息定义:在消息定义enumEventList 里面加入串口功能定义。

  2)添加消息收集程序:在串口中断里接收数据,并把数据写到串口数据缓冲器,在循环事件收集里面进行串口数据分析,根据收到的数据完整性和协议分析,发出串口功能的消息到消息队列。

  整体看来我们的程序框架就成了通用的模板了,根据自己选定的MCU,选个定时器,再添加自己的事件收集、事件处理以及时间任务即可,非常灵活方便实用。

  [1] 李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社,2008.

  [3] 孙涵芳,徐爱卿.MCS-51/96系列单片机原理与应用[M].北京:北京航空航天大学出版社,1988.

  [4] 郭天祥.新概念51单片机C语言教程:入门、提高、开发、拓展全攻略.北京:电子工业出版社,2009.

  [5] 徐爱钧.Keil C51单片机高级语言应用编程技术.北京:电子工业出版社,2015.

023-68824060

地址:重庆市两江新区金渝大道9号 邮编:401122 网址:www.teaq.com.cn
kok下载官网app
KOK官方合作伙伴

业务伙伴