# FreeRTOS学习笔记 **Repository Path**: Wiscreate/freertos_study ## Basic Information - **Project Name**: FreeRTOS学习笔记 - **Description**: freertos学习笔记 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-09 - **Last Updated**: 2025-11-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FreeRTOS学习笔记 ## 介绍 freertos学习笔记 ## 基础知识 ### 1.什么叫程序? CPU内部有寄存器R0~R15 1)常用的汇编语言 ①读内存: ``` LDR R0, [R1,#4]//从内存地址R1+4读4个字节数据到寄存器R0 ``` ②写内存: ``` STR R0, [R2,#8]//将R0寄存器的数据写到内存地址R2+8开始的内存空间 ``` ③加/减: ``` ADD R0,R1,R2 //R0=R1+R2 ADD R0,R0,#1 //R0=R0+1 SUB R0,R1,R2 //R0=R1-R2 SUB R0,R0,#1 //R0=R0-1 ``` ④比较: ``` CMP R0,R1//比较R0与R1是否相同,结果保存在PSR(程序状态寄存器)中 ``` ⑤跳转: ``` B //跳转 BL //跳转和记录返回指令 ``` 2)反汇编文件 ![输入图片说明](pngimage.png) ``` PUSH {r3, lr} ; 函数开场,将寄存器 r3 和链接寄存器 lr 压栈保存 LDR r0, [pc, #8] ; 将程序计数器 pc 向后偏移 8 字节的地址(即 0x20000000)加载到 r0 LDR r0, [r0, #0] ; 将 r0 中地址(0x20000000)处存储的值(123)加载到 r0 STR r0, [sp, #0] ; 将 r0 的值(123)存储到栈顶(sp+0)的位置 MOVS r0, #0 ; 将寄存器 r0 的值设置为 0(这通常是函数的返回值) POP {r3, pc} ; 函数收尾,恢复 r3,并将 lr 弹出到 pc,实现函数返回 DCD 536870912 ; 定义一个32位常数,其值为 536870912(即 0x20000000) ```