前言! T( L3 e2 l# x( g# @" V( Y0 v( o 这是我将UCOSII操作系统移植在STM32单片机上后进行UCOSII操作系统学习的一些笔记与理解,此文最后会附上我自己在UCOSII操作系统下使用STM32写的ESP8266+onenet+http协议的程序链接,可以作为参考,如果文中有不当的地方,还请各位大佬加以中指正,我一定会虚心求教。 1.UCOSII操作系统的简介: J& B; |" L N! P! I0 V% X4 L8 I 前台后台系统 8 Y) A6 A Y; ~. A- I 相信大家都使用过单片机,比如51,STM32,但是我们在使用的时候呢,我们都是在裸机下面写程序(也就是裸奔),也就是说,我们写的程序无非就是在主函数里面加一个死循环,然后再加上中断服务程序。应用程序以无限循环的方式在主函数被调用,调用相应的函数来完成所需要的功能,这个大的循环就叫做后台系统。而中断服务程序就是来处理我们的异常,异常结束后跳出中断服务程序,回到原来进入中断的地方继续执行我们的程序,中断处理的事件就是前台系统。 / N7 W1 H3 i) U7 l4 R 关于操作系统有很多,我这里选择的是UCOSII来进行一个讲解 UCOSII是一个可以基于RAM运行的、可裁剪(这里不是太理解)、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器的实时操作系统(讲求实时性,实时性自己去了解)( F' d+ p, K7 n 3 d9 B9 h1 x+ _( v$ Y8 h 1.1任务7 m( z& d1 b% B6 C0 Y6 t. G 在操作系统下呢,任务其实就是一个死循环函数,在循环里面调用相关函数,实现一定滴功能,当然了,在操作系统下,一个工程可以有多个任务,我们的UCOSII操作系统呢就对这些任务进行任务调度管理,让这些任务可以并发工作。 % `; O5 }9 G* t 任务格式如下:* W3 m) o# z3 G3 T3 }0 u. } ; W% }6 x9 b8 U' ^( v - A- @3 `$ b5 g- J7 l# A; h 1.2设置任务优先级9 a# n! q+ Y; Z% d 在操作系统下呢,每个任务都有唯一确定的优先级。优先级高的任务优先获得CPU的使用权,只有当优先级高的任务执行完毕之后呢,我们的高优先级任务才会让出CPU的使用权,从而呢次优先级的任务才能获得CPU的使用权,等所有的任务执行完毕,又重复这一步骤。注意:每个任务都有唯一确定的优先级,不同的任务不能拥有一样的优先级。 & S. l. d/ M' l6 A$ [, Z 在程序中我是这样宏定义的 0 x/ C N) L3 o9 R" ^ 数字代表的是优先级,数字越小代表优先级越高。( X+ H) ?# H$ r$ R, Z7 S! B * _1 j6 N: B- w7 X5 Y2 d 1.3设置任务堆栈大小 后面的数字代表的是堆栈大小,如果任务函数的局部变量多,嵌套的层数多,那么相应的我们的堆栈就要设置得大一些。! {' [/ ~4 e9 V ( |# O/ i/ y8 U: a: f W 1.4设置任务堆栈! `3 G; Q- g8 |& C. `0 S$ j4 Z, I, s( J2 M _0 v% R1 j! ~+ I 这里注意堆栈字节对齐的问题(特别是使用到串口的printf函数打印时)* h) M. p! \* r . c% }- B! e$ w) F$ z 1 V" p9 _6 k( z8 w 1.5初始化UCOSII、创建任务、启动UCOSII! f ^; v, ]1 o4 _3 C I3 p( T ) o+ u( X+ H3 c) Y$ p, e& ` 调用函数OSInit初始化、调用OSTaskCreate来创建任务、调用函数OSStart,启动OS。# y7 k7 {$ T+ @. y5 V 到这里呢,一个任务基本的实现步骤就完成了,至于任务里面的功能函数,我就不展示了,你们就自己去移植相应的功能函数过来并加以修改就可以了。4 O5 u. ?9 Y4 w/ @* K 对UCOSII更详细的说明请移步顶楼相应的链接。接下来我对STM32的学习呢,所有的工程都是基于UCOSII操作系统的。此篇文章第一次发布好,文中有不当的地方还请大佬们加以指正,我会及时修改。 ———————————————— 版权声明:田同学在深漂" J* k- W. Z+ J5 V) f6 ~ 如有侵权请联系删除5 S# b H9 C! K/ s v |
基于STM32的BootLoader经验分享
基于STM32如何选择 S2-LP 的外部晶体经验分享
基于是STM32的BLE 设备地址经验分享
基于ToF传感器的3D手势识别
NUCLEO-U545RE-Q评测(2)运行环境建立
基于使用 STM32 TT 类型 IO 的注意事项经验分享
基于STM32使用Framebuffer_Analyzer工具调试图像显示
ST安全连接,护航工业物联网一路前行
基于STM32的TouchGFX 4.22解锁新功能经验分享
基于STM32的MPU子区经验分享