15-单片机烧录FreeTOS操作系统后,程序的执行流程

  • 任务创建

1、在系统上电后,第一个执行的是启动文件由汇编语言编写的复位函数

通过复位函数来初始化系统的时钟,然后再执行__main,初始化系统的堆和栈,然后跳转到main函数

2、在main函数中可以直接进行任务创建操作

因为在FreeRTOS中会自动帮助我们做一些初始化的工作,比如内存堆的初始化,在FreeRTOS中创建任务的时候,系统会自动帮助我们完成。

例如,动态创建任务的函数中就有

申请内存

内存初始化

  • 任务调度

任务创建好后,就需要开启任务调度器。因为创建只是把任务添加到系统中,还没有去实现调度,并且没有实现空闲任务和定时器任务,这些都是在开启任务调度函数的时候实现的。

在 Cortex-M3 架构中,FreeRTOS 为了任务启动和任务切换使用了三个异常:SVC、PendSV 和 SysTick:

SVC(系统服务调用,亦简称系统调用)用于任务启动。

PendSV(可挂起系统调用)用于完成任务切换。

SysTick 用于产生系统节拍时钟,提供一个时间片。

相关推荐
yewq-cn几秒前
Joplin 客户端与服务端
笔记
亿道电子Emdoor2 分钟前
【Altium】原理图中网络标签作用范围的设置
单片机·嵌入式硬件
佑白雪乐5 分钟前
<王道操作系统第1集>1.1.1~1.3.1
笔记
风行男孩9 分钟前
stm32基础学习——串口(USART)的基本使用
stm32·嵌入式硬件·学习
点灯小铭11 分钟前
基于单片机的多模式档位调节与过热保护风扇设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
bodybo30 分钟前
搭建内网穿透服务器NPS
笔记
星源~34 分钟前
Zephyr - MCU 开发快速入门指南
单片机·嵌入式硬件·物联网·嵌入式开发·zephyr
星源~34 分钟前
zephyr-开发环境配置疑难问题解决
单片机·嵌入式硬件·物联网·项目开发
强子感冒了40 分钟前
Java IO流学习笔记:从字节流到字符流
java·笔记·学习
BMS小旭42 分钟前
CubeMx-DMA
单片机·学习·cubemx·dma