基于正点原子探索者stm32的FreeRTOS学习01
之前玩单片机一直使用的是前后台系统,什么都是模块硬怼,中断和循环写好之后,加上一些输入输出感觉什么都可以肝出来,但是一直感觉自己没什么提升,觉得单片机已经走到头了,之后才发现是自己没了解到,现在重新进行新的RTOS系统学习,以前学32刚好买了正点原子的stm32,刚好就顺着原子哥的视频先入入门,顺便记录下一些问题
RTOS系统全称:Real TIme OS 实时操作系统,主要强调实时性,市面上有很多,例如:FreeRTOS UCOS RTX RT-Thread DJYOS等
RTOS操作系统的核心内容在于:实时内核!
可剥夺性内核,可以剥夺其他任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务
FreeRTOS系统是一个可裁剪、可剥夺型的多任务内核,而且没有任务数量限制,它提供了实时操作系统所需要的所有功能,并且是使用c和汇编写的,结构简洁,可读性很强!非常适合嵌入式入门学习
双击下载安装,之后会有这些:
Plus是官方做的拓展功能,不是FreeRTOS的升级版
其中Source是内核源码
开始进行FreeRTOS移值操作
先在原子库中打开一个工程模板,整体复制出来放在桌面:
在其目录下面创建一个名为:FreeRTOS 的文件夹
将FreeRTOS的源码复制在这个文件夹下
在portable文件下只留下这些:
然后打开工程,添加分组:
添加对应文件:
下图中 port.c在 实验1 FreeRTOS移值FreeRTOSportableRVDSARM_CM4F 路径下
关于 heap_4.c 这个文件是FreeRTOS的内存管理,有多种,这里先添加第四个,以后会学习
接着添加头文件路径
接着需要添加FreeRTOS官方的demo
文件路径是:FreeRTOS源码FreeRTOSv9.0.0FreeRTOSDemo 找到上述文件夹,打开:
这个demo是基于iar的,所以这个.h文件我们要稍作修改,在下面
把这个文件复制到工程中
工程中的 usart.c 文件,第47行 在 _sys_exit(int x) 前加入 void
void _sys_exit(int x) 这是由于新版mdk支持性问题
由于FreeRTOS 官方给出的demo历程是基于IAR的,但是这是使用的编译器是mdk5,所以我们刚才复制过来的 FreeRTOS.h 是要进行修改:
打开 FreeRTOS.h 文件,在87行可以看到这样的
改为:
1#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
接着下面的函数使能改为关闭:
接着去这里,将这几个函数注释掉
此时编译,应该是完全没有错误了
但是,还是无法使用的,我们将已经配置好 FreeRTOS 工程的 SYSTEM 复制替换掉我们自己新建的工程的 SYSTEM 文件夹
然后将该宏定义屏蔽
接着再次编译,无错误无警告,成功
补充:
关于MDK5显示中文乱码的问题,更改如下设置:
就可以了
以上是 基于正点原子探索者stm32的FreeRTOS学习01 的全部内容, 来源链接: utcz.com/z/519621.html