本帖最后由 Dluffy 于 2019-6-28 16:06 编辑
前言: 这笔记本来我是写在博客上的,边学边写的。所以想着也分享到这里来,大家一起学习,我有理解错的,大家也好帮忙指正。目前我还没有飞机,先学软件,后面再考虑买个飞机玩玩。
之前看过原子哥的FreeRTOS开发手册,但是对整个项目用FreeRTOS 怎么架构还不是很清楚。由于最近工作需要上FreeRTOS,所以决定通过MiniFly来学习一下FreeRTOS的架构。
一、main 函数
int main()
{
systemInit(); /*底层硬件初始化*/
xTaskCreate(startTask, "START_TASK", 300, NULL, 2, &startTaskHandle); /*创建起始任务*/
vTaskStartScheduler(); /*开启任务调度*/
while(1){};
}
main函数很简洁,初始化硬件-----然后建立一个开始任务-----接下来开启系统调度。
内容比较多的是在初始化硬件中,需要把用到的IO,串口,变量、信号量,队列等初始化完。
二、开始任务 开始任务创建了10个任务,在前面用序号1-10标出来了。方便后面对照。开始任务的作用就是创建其它任务,创建完后就把自己给删除了。
因为调度器已经开启,所以在这里创建任务时,需要进入临界保护,就是关中断
使用printf函数需要重定义, 现在暂时没有找到在哪里重定义了。
三、每个文件结构
每个.c文件就是一个模块,每个模块都有以下内容组成:
1、包含需要的头文件
2、定义本模块用到的变量,用关键字static限制了变量只在本模块使用
3、声明本模块的函数,方便本模块写在前面的函数可以调用写在后面的函数。
4、编写本模块函数 例子如下图:
|