昨天发布了第一天的学习心得,今天来说第二期的。
因为空口无凭的讲述其实对学习并没有任何实质性帮助的,所以我简单的实现了一个项目计划来进行我们的学习。
还是我最爱的老朋友野火开发板
所以接下来的几天我会在这个板子上完成几个相关的搭载ucos系统的实质性小项目来总结学习。
它们分别是:
(一)多任务LED流水灯系列(包含任务通信&任务不通信两种)
(二)多任务LCD菜单显示(包含多任务通信&不通信)
(三)基于STM32&LCD的俄罗斯方块游戏(计分规则)
(四)基于STM32&LCD的触摸式阅读器(相关SD卡读取,触摸屏驱动)
(五)基于STM32&LCD的照相机(基于OV7725)
(六)基于STM32&LCD的虚拟示波器。
等六个小项目来巩固我之前STM32的学习,这些内容包括AD转换,GPIO操作,各种中断的配置,LCD显示&触屏驱动,OV7725摄像头驱动等等。
另外搭载ucos实现任务与任务之间的通讯以及实时调用等等。
有兴趣的同学可以Fork我的码云地址来查看我的项目代码
http://git.oschina.net/shedray/STM32Ucos
另外本次的学习全部基于stm32官方的标准外设库v3.5版本。
好了先跟着昨天的代码看整体的ucos系统结构
GQ%C$8UHD@6L_)4{5%GB~5U.png
其中startup,CMSIS,为常见的keil工程配置文件,自然不必关心。
最下面的UCOSII两个文件夹包含ucos与stm32板级别的移植两百行ASM代码
BSP,FWlib(直接摘野火的工程啦)分别为板载驱动库和stm32标准外设库。
多说一句。BSP包含的可能是实际外设的从驱动设置初始化到直接操作调用的库函数,FWlib为Stm32本身的芯片外设特性。比如说你要操作一个ADC或者一个GPIO
而BSP实际上是ADC更上一层的东西,或者是一个AD采样电路,或者是一个基于AD采样的MMA8351陀螺仪balabala....
最后是我们的APP,也就是我们的用户应用级任务分组。用于存放我们编写的任务实例。
BSP初始化包含系统时钟初始化用以配置提供整个系统的时钟源
Systick为ucos系统的中断源每1ms中断一次
Systick初始化
剩下就是外设的操作。
main函数创建一个taskstart主任务
Taskstart其中创建了两个任务LED2,LED3,另外Taskstart为主任务
LED2,LED3创建LED2&LED3的具体执行情况
LED2 1s显示一次,LED3 0.3s显示一次。
以上就是两个LED在ucos多任务下的实现情况。
网友评论