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

  • 任务创建

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

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

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

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

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

申请内存

内存初始化

  • 任务调度

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

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

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

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

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

相关推荐
渡我白衣30 分钟前
计算机组成原理(7):定点数的编码表示
汇编·人工智能·嵌入式硬件·网络协议·机器学习·硬件工程
雾岛听风眠39 分钟前
电路板维修
单片机·嵌入式硬件
少一倍的优雅40 分钟前
hi3863(WS63) 智能小车 (一) 简单介绍
单片机·嵌入式硬件·harmonyos·hi3863
四谎真好看1 小时前
MySQL 学习笔记(进阶篇2)
笔记·学习·mysql·学习笔记
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [fs]ext4
linux·笔记·学习
Dillon Dong1 小时前
从C到Simulink:用Counter模块玩转嵌入式定时器
c语言·stm32·simulink
青铜弟弟1 小时前
WOFOST学习笔记4
笔记·python·学习·spring·作物模型·wofost
Vizio<1 小时前
STM32HAL库开发笔记-串口通信(UART)
笔记·stm32·嵌入式硬件
map_vis_3d1 小时前
JSAPIThree 加载 3D Tiles 学习笔记:大规模三维场景渲染
笔记·学习·3d
宵时待雨1 小时前
C语言笔记归纳22:预处理详解
c语言·开发语言·笔记