- 任务创建
1、在系统上电后,第一个执行的是启动文件由汇编语言编写的复位函数
通过复位函数来初始化系统的时钟,然后再执行__main,初始化系统的堆和栈,然后跳转到main函数
2、在main函数中可以直接进行任务创建操作
因为在FreeRTOS中会自动帮助我们做一些初始化的工作,比如内存堆的初始化,在FreeRTOS中创建任务的时候,系统会自动帮助我们完成。
例如,动态创建任务的函数中就有
申请内存
内存初始化
- 任务调度
任务创建好后,就需要开启任务调度器。因为创建只是把任务添加到系统中,还没有去实现调度,并且没有实现空闲任务和定时器任务,这些都是在开启任务调度函数的时候实现的。
在 Cortex-M3 架构中,FreeRTOS 为了任务启动和任务切换使用了三个异常:SVC、PendSV 和 SysTick:
SVC(系统服务调用,亦简称系统调用)用于任务启动。
PendSV(可挂起系统调用)用于完成任务切换。
SysTick 用于产生系统节拍时钟,提供一个时间片。