- 博客(25)
- 收藏
- 关注
原创 STM32 FreeRTOS 保护共享资源(关开中断 / 调度器上锁 / 信号量 / 互斥信号量)
本文介绍了共享资源保护的四种方法:临界区、调度器上锁和信号量和互斥信号量。临界区通过关中断实现原子操作,适用于短时操作但影响系统实时性;调度器上锁防止任务切换,适合长耗时操作但不保护中断;信号量用于任务同步和互斥访问,但可能导致优先级反转,要采取互斥信号量。FreeRTOS中提供了相关API函数,并区分了可管理的中断优先级范围(5-15),其中0-4为不可屏蔽的高优先级中断。实际应用中需根据场景选择合适方法,权衡实时性与安全性。
2025-11-28 14:41:25
947
原创 STM32 RTOS概述与FreeRTOS介绍
RTOS(实时操作系统)是为实时场景设计的专用操作系统,强调在限定时间内完成任务响应。FreeRTOS是一款轻量级开源RTOS,广泛应用于嵌入式系统。它具有规范的代码结构,支持任务管理、事件组、堆管理等核心功能。任务管理包括创建、删除、挂起和恢复等操作,通过xTaskCreate()创建任务,vTaskDelete()删除任务,vTaskSuspend()挂起任务。FreeRTOS遵循MISRA代码规范,提供模块化设计,支持并发处理,适用于STM32、ESP32等多种MCU平台。使用RTOS可提高系统
2025-11-26 20:19:17
754
原创 STM32 串口线A-B
本文将介绍STM32F4系列USART串口通信的初始化配置过程。主要步骤包括:1)启用USART和GPIO时钟;2)配置引脚复用功能(GPIO_PinAFConfig);3)初始化GPIO引脚参数(模式、速度、类型、上下拉);4)配置USART通信参数(波特率、数据位等);5)可选配置中断或DMA模式;6)最后启用USART模块。文中以USART1与PA9、PA10引脚为例,详细说明了每个配置环节的具体实现方法,并附有官方文档说明和代码示例。
2025-11-06 14:05:24
1043
原创 STM32 串口概念 UART协议
本文介绍了串行通信中的TTL电平标准及其应用。TTL(晶体管-晶体管逻辑)在串口通信中表示采用0V和3.3V/5V电平的串行通信标准,通常基于UART协议实现。文章详细说明了TTL串口的工作原理、连接方式、板级通信优势,并解释了UART协议的核心要素(帧结构、波特率、校验等)以及与USART的区别。同时,文章还对比了同步/异步通信、串行/并行通信以及单工/半双工/全双工等基础概念。这些知识为理解串口通信技术提供了基础框架。
2025-11-06 14:01:16
790
原创 STM32 异常和中断
文章摘要: ARM架构中异常和中断的处理机制分析,重点介绍了Cortex-M处理器的NVIC控制器特性。文章详细解析了STM32外部中断(EXTI)的工作原理,指出16条中断线(EXTI0-15)与GPIO引脚的映射关系,强调同一EXTI线只能连接一个引脚。提供了ST官方库的中断配置模板,包括LED初始化、EXTI线配置方法(SYSCFG寄存器设置)和软件中断触发实现。最后给出了中断服务函数的标准命名格式和优先级配置建议,为嵌入式系统中断处理提供实用参考。
2025-10-26 23:11:54
845
原创 STM32 系统定时器(精准延迟)
摘要:SysTick是Cortex-M4内核中的24位递减计数器,用于定时中断或事件延时。它可配置AHB时钟或其8分频作为时钟源。通过CTRL、LOAD、VAL寄存器控制计数启停、重装载值及状态监测。标准流程包括关闭定时器、设置计数值、清零计数器、启用定时器并等待计数完成。使用时需注意意外关闭中断问题,ST例程中未处理此情况。定时器位数影响定时时长,需通过计数值间接计算时间。SysTick_Handler为中断服务函数,需与启动文件定义一致。
2025-10-26 23:06:44
1008
原创 LVGL 快速入门:对象、事件与样式介绍
LVGL(Light and Versatile Graphics Library)是一款开源、轻量级且功能丰富的嵌入式 GUI 库,广泛应用于 STM32、ESP32 等 MCU/MPU 的图形界面开发。它提供了对象系统、样式系统、事件机制、布局管理、动画以及文件系统等完整功能,使开发者能够在资源有限的硬件上快速构建美观、流畅的界面。
2025-09-04 16:59:52
1383
原创 24位 BMP图片
BMP图片格式由文件头和数据组成,采用无压缩方式存储,文件体积较大。文件头包含两个关键结构体:tagBITMAPFILEHEADER(14字节)描述文件基本信息,tagBITMAPINFOHEADER(40字节)定义图像属性(宽高、位深等)。24位BMP无需调色板,直接存储RGB三通道数据。图像数据存储采用倒序方式:像素点从图像左下角开始,从左到右、从下到上排列,形成上下颠倒但左右顺序的存储特性。颜色值以BGR顺序存储,每个像素占3字节(0-255)。这种结构使BMP格式简单直观但存储效率较低。
2025-08-23 10:36:33
771
原创 一维数组与二维数组地址跨越
本文详细讲解了一维数组和二维数组的地址跨越问题。首先阐明了数组名的含义,指出除特殊情况外,数组名代表首元素地址,而在sizeof、取地址等情况下代表整个数组。接着通过示例说明了数组下标运算符的等价转换规则,包括一维数组的a[i]等价于*(a+i),以及二维数组的a[i][j]等价于*(*(a+i)+j)。最后重点分析了数组地址的跨越和偏移量计算,指出一维数组的偏移量基于元素类型大小,而二维数组的地址运算对应一维数组的整体偏移。文章通过具体代码示例和内存图解,帮助读者深入理解数组地址运算的本质原理。
2025-07-19 15:10:39
907
原创 【C++】命名空间
命名空间里面可以放 变量 函数 类型namespace 名int a;double b;...变量在使用嵌套变量时,同样是用::来访问。(套娃的感觉)...变量...变量int main()cout
2023-04-17 15:54:15
94
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅