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

  • 任务创建

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

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

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

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

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

申请内存

内存初始化

  • 任务调度

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

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

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

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

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

相关推荐
淡忘旧梦30 分钟前
词错误率/WER算法讲解
人工智能·笔记·python·深度学习·算法
Dream Algorithm32 分钟前
POS机的机制,以及流量是怎么传送的
笔记
Jia shuheng39 分钟前
#ifdef __cplusplus extern “C“ #endif的作用
c语言·嵌入式硬件
狐5741 分钟前
2026-01-21-牛客每日一题-静态区间和(前缀和)
笔记·算法
破晓单片机1 小时前
STM32单片机分享:智能净化器系统
stm32·单片机·嵌入式硬件·智能家居
良月十二2652 小时前
ORCAD导出BOM
嵌入式硬件
Yu_Lijing2 小时前
基于C++的《Head First设计模式》笔记——状态模式
c++·笔记·设计模式
阳明Coding2 小时前
golang从入门到通天—数据库操作(gorm框架使用)(最简单最详细的golang学习笔记)
笔记·学习·golang
嗯嗯=2 小时前
STM32单片机学习篇6
stm32·单片机·学习
秋深枫叶红2 小时前
嵌入式第四十九篇——ARM系列——IMX6ULL开发板
arm开发·嵌入式硬件