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

  • 任务创建

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

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

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

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

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

申请内存

内存初始化

  • 任务调度

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

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

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

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

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

相关推荐
Hello_Embed5 分钟前
USB 虚拟串口源码改造与 FreeRTOS 适配
笔记·单片机·嵌入式·freertos·usb
曦月逸霜17 分钟前
深入理解计算机系统——学习笔记(持续更新~)
笔记·学习·计算机系统
koo36425 分钟前
pytorch深度学习笔记18
pytorch·笔记·深度学习
hetao173383729 分钟前
2026-01-22~23 hetao1733837 的刷题笔记
c++·笔记·算法
无垠的广袤35 分钟前
【CPKCOR-RA8D1】RUHMI 转换 AI 模型
人工智能·python·嵌入式硬件·开发板
curry____3031 小时前
数据结构学习笔记
数据结构·笔记·学习
向前V1 小时前
Flutter for OpenHarmony轻量级开源记事本App实战:笔记编辑器
开发语言·笔记·python·flutter·游戏·开源·编辑器
望眼欲穿的程序猿2 小时前
SDCC+Ai8051U 中断点灯
stm32·单片机·嵌入式硬件
youcans_2 小时前
【动手学STM32G4】(15)三路互补带死区 PWM 输出
stm32·单片机·嵌入式硬件·pwm·死区
snow_star_dream2 小时前
(笔记)VSC python应用--函数补全注释添加
笔记·python