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

  • 任务创建

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

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

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

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

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

申请内存

内存初始化

  • 任务调度

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

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

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

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

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

相关推荐
wdfk_prog33 分钟前
[Linux]学习笔记系列 -- [fs]file
linux·笔记·学习
JSMSEMI111 小时前
JSM9N20C 200V N 沟道 MOSFET
单片机·嵌入式硬件
其美杰布-富贵-李1 小时前
Python 反射完整学习笔记
笔记·python·学习·反射
梁下轻语的秋缘2 小时前
I2S与I2C
运维·stm32·单片机·51单片机
charlie1145141912 小时前
快速在WSL上开发一般的C++上位机程序
开发语言·c++·笔记·学习·环境配置·工程
chipsense2 小时前
机器人用霍尔电流传感器,能提升操作安全性么?
单片机·嵌入式硬件·人形机器人·霍尔电流传感器
jimmyleeee2 小时前
人工智能基础知识笔记二十八:几款有用的LLM管理工具
人工智能·笔记·python
Zeku2 小时前
20251222 - 韦东山Linux开发板I.MX6ULL连接无线WiFi
stm32·freertos·linux驱动开发·linux应用开发
云雾J视界2 小时前
PWM不只是调速!深入电机驱动中的动态响应、EMI抑制与电源完整性设计
mcu·pwm·emi·电机驱动·电源完整性·mosfet
许商2 小时前
【stm32】cmake脚本(二)
stm32·单片机·嵌入式硬件