- 博客(66)
- 收藏
- 关注
原创 STM32——FreeRTOS - 任务挂起与恢复
本文围绕任务挂起与恢复机制展开分析。首先介绍了实现任务挂起与恢复的相关API函数及其功能。其次通过实验验证了任务挂起和恢复的操作流程及效果。接着对任务挂起和恢复API函数进行了详细解析,阐明其内部实现原理。最后总结了课堂要点,系统梳理了任务调度中挂起与恢复机制的重要性和实现方法。全文从理论到实践,完整呈现了任务挂起与恢复机制的关键技术要点。
2026-03-25 22:02:15
127
原创 STM32——FreeRTOS - 任务创建和删除 ~ 静态方法
本文介绍了FreeRTOS中静态创建和删除任务的方法。主要内容包括:1)在FreeRTOSConfig.h中配置静态内存分配相关宏定义;2)需要手动实现vApplicationGetIdleTaskMemory和vApplicationGetTimerTaskMemory函数来分配空闲任务和定时器任务的内存;3)详细展示了任务创建流程,包括任务堆栈和控制块的静态定义,以及xTaskCreateStatic函数的使用方法;4)提供了完整的示例代码,演示了如何创建多个任务并通过按键删除指定任务。相比动态方法,静
2026-03-25 21:40:41
417
原创 STM32——FreeRTOS - 任务创建和删除 ~ 动态方法
本文详细分析了FreeRTOS中任务创建和删除的动态实现过程。任务创建方面,通过xTaskCreate函数动态分配TCB和堆栈空间,初始化任务控制块并设置任务优先级,最终将任务加入就绪列表。任务删除方面,vTaskDelete函数处理任务移除逻辑,区分当前任务和非当前任务两种情况:非当前任务直接释放资源,当前任务则需切换至空闲任务进行资源回收。文章还深入探讨了任务堆栈初始化、优先级处理、临界区保护等关键实现细节,并解析了空闲任务在资源回收中的重要作用。这些机制共同保障了FreeRTOS任务管理的安全性和高效
2026-03-22 23:34:47
332
原创 STM32——FreeRTOS - 任务创建和删除*
本文介绍了FreeRTOS中任务创建和删除的API函数。动态方式通过xTaskCreate()自动分配堆栈空间,而xTaskCreateStatic()需用户手动分配。vTaskDelete()用于删除任务,会从所有任务列表中移除该任务,并自动释放系统分配的内存(动态方式)。静态方式需用户自行释放内存。删除当前任务时可传入NULL参数。文章还对比了动态和静态两种创建方法的特点及实现流程。
2026-03-18 22:46:06
318
原创 STM32——FreeRTOS - 移植
本文介绍了FreeRTOS操作系统的学习要点,主要包括:1)如何获取FreeRTOS V10.4.6源码;2)关键源码文件说明(include、portable等文件夹);3)FreeRTOS移植目的;4)系统配置文件解析。文章为STM32开发者提供了FreeRTOS学习的总体框架,包含源码下载地址和核心文件介绍,适合嵌入式系统开发者参考。
2026-03-11 22:42:12
89
原创 STM32——FreeRTOS - 基础
摘要:任务调度系统包含抢占式和时间片两种调度方式。抢占式调度中,高优先级任务可中断低优先级任务执行,被抢占任务进入就绪态。时间片调度则按时间轮转执行任务。任务状态包括就绪态(pxReadyTasksLists)、延迟态(pxDelayedTaskList)和挂起态(xSuspendedTaskList)。相同优先级任务按创建顺序后进先出执行,不同优先级则优先执行高优先级任务,仅当优先级相同时才采用时间片调度。
2026-03-10 22:24:13
74
原创 STM32——FreeRTOS - 入门
《FreeRTOS实时系统入门教程》摘要:本视频教程由正点原子团队制作,全面讲解FreeRTOS实时操作系统。内容涵盖裸机系统与RTOS的区别(裸机采用中断优先级控制但任务处理能力有限,RTOS支持多线程切换和优先级调度),FreeRTOS作为免费嵌入式RTOS的特性与优势,以及相关学习资源(官网freertos.org和正点原子提供的视频/文档/代码)。教程基于ARM Cortex-M架构讲解任务切换等核心概念,适合嵌入式开发者系统学习。
2026-03-02 22:09:15
588
1
原创 STM32——DMA
本文系统介绍了STM32的DMA(直接内存访问)功能。主要内容包括:DMA的基本概念和工作原理,STM32F1系列的DMA结构框图分析,DMA相关寄存器和HAL库驱动函数详解。重点讲解了DMA配置步骤,包括时钟使能、初始化、传输启动等关键操作,并介绍了DMA_HandleTypeDef和DMA_InitTypeDef等核心结构体。文章最后通过编程实战演示DMA应用,总结了DMA作为数据传输通道的作用,以及STM32中DMA1(7个通道)和DMA2(5个通道)的资源分配情况。
2026-01-26 21:12:06
446
原创 STM32——MPU(内存保护)
【免费】STmcu选型手册资源资源-CSDN下载【免费】芯片资料STM32F103ZET6(中文版)资源-CSDN下载【免费】STM32F1系列参考手册-V10(中)
2026-01-17 14:41:57
66
原创 STM32——定时器:高级定时器
本文介绍了高级定时器的功能及应用实验。主要内容包括:1)高级定时器输出指定个数PWM实验,通过RCR寄存器控制PWM输出数量;2)输出比较模式实验,实现方波输出和相位控制;3)互补输出带死区控制实验,用于H桥电机驱动,防止MOS管直通;4)PWM输入模式实验,测量PWM信号参数。详细说明了各实验的原理、配置步骤和HAL库函数使用方法,并提供了相关例程下载链接。通过合理设置ARR、PSC、RCR等寄存器参数,可实现精确的定时控制和PWM信号处理。
2026-01-17 14:31:41
858
原创 STM32——定时器:通用定时器
本文介绍了STM32F1系列通用定时器的功能与应用。主要内容包括:1)通用定时器TIM2-5的基本特性,如16位计数器、预分频器、4个独立通道等;2)计数器时钟源的4种模式(内部时钟、外部时钟模式1/2、内部触发输入)及其配置方法;3)详细讲解了PWM输出实验和输入捕获实验的实现步骤,包括寄存器配置、HAL库函数使用等;4)介绍了脉冲计数实验原理及配置流程。通过实例代码展示了如何利用定时器实现PWM输出、脉宽测量和脉冲计数功能,为STM32定时器开发提供了实用参考。
2026-01-17 14:29:27
640
原创 STM32——定时器
本文介绍了STM32定时器的学习框架和基础知识。主要内容包括:1.定时器概述,对比了软件定时和硬件定时的优劣;2.STM32定时器的分类和特性,重点介绍了F1系列基本/通用/高级定时器的区别;3.详细讲解了基本定时器的工作原理、框图、计数模式、中断实验寄存器配置和溢出时间计算方法;4.提供了定时器中断实验的具体配置步骤和编程实践指导。文章通过理论讲解与实验结合的方式,帮助读者系统掌握STM32定时器的工作原理和应用方法。
2025-11-05 20:47:32
542
1
原创 STM32——WWDG
本文概述了STM32学习资源及WWDG(窗口看门狗)相关内容。介绍了WWDG的基本原理、寄存器配置和超时时间计算方法,并详细说明了配置步骤及编程验证方法。通过对比IWDG(独立看门狗)和WWDG的主要区别,帮助读者理解两者的应用场景。文章还提供了STM32芯片选型手册、参考手册等免费学习资源,为开发者快速掌握STM32的WWDG功能提供了系统性的学习路径。
2025-10-30 21:50:14
378
原创 STM32——IWDG
本文介绍了STM32的独立看门狗(IWDG)功能,包括其递减计数器特性、RC振荡器时钟源以及在系统复位中的作用。详细解析了IWDG的寄存器结构(键寄存器、预分频器寄存器、重装载寄存器、状态寄存器)和工作原理,提供了溢出时间计算公式,并说明HAL库简化了配置过程。最后提到实际编程中的喂狗操作和配置步骤,帮助开发者掌握IWDG的使用方法,确保系统稳定运行。
2025-10-27 22:43:45
450
原创 LeetCode刷题总结
为什么 n & 1可判断是奇数?二进制: 0b 8 4 2 1,bit0 为 2 的0次方,后续皆为 2的n次方,bit0为奇数,则都为奇数。
2025-10-21 23:42:37
215
原创 STM32——串口
本文系统介绍了STM32串口通信的学习要点。首先阐述了数据通信的基础概念,包括串行/并行通信、单工/半双工/全双工通信方式,以及同步/异步通信的区别。重点讲解了STM32的USART模块、HAL库初始化机制和中断回调机制,详细说明了异步通信配置步骤和IO引脚复用功能。最后通过串口收发字符的编程实例和源码解读,帮助读者掌握STM32串口通信的实践应用。文章为STM32串口通信学习提供了完整的知识框架和实践指导。
2025-09-02 20:57:36
490
原创 STM32——中断
本文介绍了STM32中断系统的基本概念和应用,重点讲解了NVIC(嵌套向量中断控制器)和EXTI(外部中断/事件控制器)的工作原理及使用方法。主要内容包括:1.中断向量表的结构与作用;2.NVIC优先级分组机制(共5组)及寄存器配置方法;3.HAL库中断配置三步骤(设置分组、优先级、使能中断);4.EXTI控制器特性及与GPIO的映射关系;5.通过实际案例演示如何利用外部中断控制LED灯状态。
2025-08-27 21:03:03
1440
原创 STM32——GPIO
本文系统总结了STM32F1系列GPIO模块的学习要点,主要包括:1. GPIO基本特性与引脚分布;2. 8种工作模式(输入/输出/复用/模拟)及其特点;3. 关键寄存器配置(CRL/CRH、ODR、IDR等);4. HAL库驱动开发流程(时钟使能、初始化、读写操作);5. 实践案例:LED控制与按键扫描实现,包含硬件电路分析、软件消抖处理及状态检测方法。
2025-08-12 21:54:46
593
原创 STM32——system文件夹
本文介绍了STM32学习总纲,重点讲解SYSTEM文件夹中的sys、delay和usart模块。详细剖析了delay文件夹中SysTick定时器的工作原理,包括时钟源选择和寄存器配置(LOAD/VAL寄存器关系)。文章具体说明了delay_init()、delay_us()和delay_ms()三个关键延时函数的实现原理。最后提到可通过MDK工程进行裸机测试,使用断点验证延时精度。该内容为正点原子整理的STM32常用驱动函数,可直接应用于实际项目开发。
2025-08-11 21:36:42
575
原创 STM32——时钟系统
本文介绍了STM32时钟系统的学习框架,重点解析了STM32F1系列的时钟树配置。内容涵盖:1)时钟源分类(外部/内部高低速晶振);2)总线架构(AHB/APB);3)HAL库时钟配置函数(HAL_RCC_OscConfig等);4)系统时钟初始化流程;5)外设时钟管理方法;6)使用STM32CubeMX配置时钟的实践要点。特别强调了FLASH时钟与系统时钟的关系,以及在72MHz主频下FLASH需要设置等待周期的注意事项,为STM32时钟系统开发提供了完整的技术指引。
2025-08-09 20:31:39
1263
原创 STM32——STM32CubeMX
本文介绍了STM32CubeMX工具的使用指南,主要内容包括:一、工具简介,说明其专用于STM32芯片配置;二、安装步骤;三、以F1系列为例详解新建工程流程,涵盖芯片选型、时钟配置、GPIO设置、内核调试等关键步骤;四、特别提醒避免中文路径问题,否则会导致启动文件缺失,需手动添加.s文件解决。文章强调用户代码应写在预留区,并提供了完整的工程配置到代码生成的操作流程。
2025-08-07 21:17:57
1020
原创 STM32——启动过程浅析
本文介绍了STM32开发中的Map文件解析和启动过程分析。主要内容包括:1)Map文件组成与作用,详细解析了函数调用关系、内存分布等关键信息;2)STM32不同系列(F1/F4/F7/H7)的启动模式设置,重点说明MSP和PC指针的定位原理;3)启动文件分析,涵盖Reset_Handler函数、中断向量表和堆栈分配等内容。通过Map文件可查看实际启动地址,帮助开发者优化代码和内存使用。文章为STM32开发者提供了系统的学习框架和调试方法参考。
2025-08-02 13:20:43
886
原创 STM32——HAL 库MDK工程创建
本文介绍了基于HAL库的STM32工程新建方法。主要内容包括:1)工程目录结构(Drivers、Middlewares等文件夹);2)工程框架搭建步骤(删除原有工程文件);3)文件添加方法(手动选择.c文件并修改属性);4)MDK配置要点(Target、Output等6个选项卡设置);5)main.c文件创建(保存到User文件夹并导入)。文章提供了从零开始建立STM32 HAL库工程的具体操作指南,适合初学者快速上手STM32开发。
2025-07-31 22:08:47
666
原创 STM32——HAL库
本文系统介绍了STM32开发中的关键知识点:1. 概述了CMIS架构和HAL库特点;2. 详细说明STM32Cube固件包的获取方式及目录结构,重点分析正点原子整理的固件包中CMSIS关键文件;3. 解析HAL库框架结构,包括文件夹组织、API命名规则、寄存器操作宏定义和回调函数机制;4. 阐述HAL库实际应用,包括开发文件结构、用户配置方法(外设驱动裁剪和晶振频率设置)及设备驱动层调用。内容涵盖从理论到实践的完整STM32开发流程。
2025-07-29 22:29:22
1853
原创 STM32——寄存器映射
本文总结了STM32 HAL库的寄存器基础知识和映射原理。主要内容包括:1)寄存器概念,类比电路开关控制功能;2)寄存器类型与映射方法,通过指针转换实现地址访问;3)存储器映像分析,包括总线基地址和GPIO外设地址计算;4)结构体映射技术,利用连续内存分配特性实现寄存器访问。重点阐述了寄存器地址计算方法和结构体指针映射原理,为深入理解STM32底层驱动开发提供了基础指导。
2025-07-28 22:18:21
793
1
原创 STM32——存储器映射(Memory mapping)
《STM32F103ZET6存储器架构解析》摘要:本文介绍了STM32F103ZET6芯片的存储器系统,重点阐述其寻址机制(1地址对应1字节)和存储器映射原理。对比了存储芯片与单片机的差异(单片机采用8位数据线)。详细解析了存储器功能划分的三个主要区块(BLOCK0、BLOCK1、BLOCK2),其中BLOCK0-BLOCK2构成片上外设的核心存储区域,为开发者理解STM32存储架构提供了基础认知框架。
2025-07-01 21:58:01
533
原创 STM32——DAP下载程序和程序调试
从原理图可知,此接口不仅支持JTAG接口,还支持SWD,(SWIO、SWCLK) .正点原子DAP仿真器:链接:这里默认SWD,因为就使用了两个IO口。时钟配置10MHz,实际只有4MHz,由MDK自动配置。 F1系列Device Size为512K,只能给芯片容量小于此值的下载,向下兼容。右上角为下载算法要使用的RAM。(默认就行) 推荐SWD接口调试的缘由:F1通过配置AFIO_MAPR寄存器,可释放下面三个IO口。参考手册:STM32 F10xx参考手册 中文版 :全局变量查看仿真窗口→断点快速设置
2025-06-30 23:02:50
1090
原创 ELSE、基础算法
for(i=min;i<=max;i++){flag=1;if(i<=2)flag = 0;for(j=2;j<sqrt(i);j++){flag = 0;count++;
2025-03-11 09:15:00
183
原创 十三、静态库 && 动态库
因为如果调用多个他.c 麻烦(例如不同公司间的软件开发合作,不能提供代码,只能提供软件.a) ——> 引进库(库也是文件,也是代码) ——> 做成一个静态库。
2025-03-11 09:00:00
641
原创 十二、文件读写
关键问题是同时读写,只要你使用标准库的I/O操作,同时读写的结果都是没有定义的,不管是像楼主的代码那样使用两个文件指针,或者使用fseek。如果是分别用fopen打开的两个指针,也存在这个问题,因为你没有办法掌握I/O系统刷新的确切时间,可能你的写操作生效以后,读操作可以得到更新后的数据,或者也可能由于缓冲的原因,前一次读操作已经把剩余内容全部读到缓冲区中,这样读操作得到的数据是前一次的快照,不能反映最新的变化。这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。
2025-03-10 09:00:00
769
原创 十一、宏定义
一般形式:#define 宏名 宏体一般定义在函数外部,可在任意处定义#undef 宏名 // 可终止宏名的作用域引号中的内容与宏名相同也不置换功能(宏展开):预编译时,用宏体替换宏名 ---- 不作语法检查生命周期:从声明处开始,若无#undef,则到程序终止为止,反之,则在#undef处结束宏定义可以嵌套,不能递归宏定义时,需要使用必要的括号 ---- 宏展开为不作语法检查的展开,若无括号,程序读取语句优先级可能会不符合逻辑一般形式:#define S(a,b) (a)*(b)
2025-03-09 09:00:00
406
原创 十、链表操作
1、当需要存储一个比较大的数据时,如果使用数组,就意味着需要计算机分配一个连续的一整块内存空间系统会分配空间失败。2、链表中数据元素的逻辑顺序是通过链表中的指针链接次序实现的。1、链表(linked list)是一种在物理上非连续、非顺序的数据结构,由若干节点(node)所组成。双向链表的每一个节点除了拥有data和next指针,还拥有指向前置节点的prev指针。1、头结点的数据类型和首节点的类型是一摸一样。尾节点:存放最后一个有效数据的节点。一个是存储数据元素的数据域。首节点:存放第一个有效数据的节点。
2025-03-09 02:30:00
486
原创 九、结构体
为了模拟一些复杂的事物,把一些基本的数据类型组合在一起,形成了一种新的复合数据类型。//第一种:经常使用,也是推荐的一种。int age;char sex;//第二种int age;char sex;}st2;//第三种structint age;char sex;}st3;。
2025-03-08 16:55:40
966
Proj-14-TIM-Advanced Timer PWM Input Mode Experiment
2026-01-17
Advanced Timer Complementary Output with Dead-Time Control Project
2026-01-17
XCOM正点原子(ALIENTEK)官方推出的串口调试助手XCOM
2025-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅