自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 rt临时任务02

临时任务:适用于执行频率很低一次性、且允许失败(非关键)的简单工作,如图形界面中弹出一个“提示框”任务,显示完即退出。常驻任务:适用于绝大多数场景,尤其是需要频繁响应或可靠性要求高的场合。💡 最佳实践:针对本节的“按键-LED”需求,最好的方法不是使用临时任务,而是创建两个常驻任务。按键任务 (常驻)while(1)检测按键。LED 任务 (常驻)while(1)循环,但它平时通过一个信号量或消息队列阻塞等待。当按键任务检测到按键时,它发送一个信号量。

2025-10-29 18:02:06 743

原创 rt线程创建01

首先,我们需要定义两个任务各自要执行的函数。任务的标准结构:对于需要长期运行的周期性任务(如 LED 闪烁、按键检测),其标准结构通常是一个 while(1) 无限循环。C/* 定义两个全局变量来保存任务控制块指针 *//*** @brief LED 任务的入口函数* @param parameter 创建任务时传入的参数*//* 消除 "parameter 未使用" 的编译警告 */while (1)/* 1. 翻转 LED0 状态 (亮变灭, 灭变亮) */

2025-10-29 18:01:34 723

原创 rt任务运行00机制

RTOS 通过时间片轮转和抢占式调度,在多个任务间高速切换 CPU 执行权。这种高速切换利用了类似“视觉暂留”的原理,创造了任务“并发”执行的假象。为了确保任务在被暂停后能正确恢复,RTOS 引入了**上下文(Context)**的概念,即任务的“运行状态”。上下文切换(保存前一个任务的上下文,恢复下一个任务的上下文)是实现多任务调度的核心机制,它保证了每个任务都能从它上次离开的地方无缝继续执行。

2025-10-28 18:37:52 1001

原创 rt任务队列与tcb00

单独使用上述任何一种策略都有缺陷。因此,现代 RTOS(包括 RT-Thread)使用的是一种组合策略基于优先级抢占的调度 + 同优先级时间片轮转抢占 (Preemption)RT-Thread 会维护多个就绪队列,每个优先级对应一个队列(例如,优先级0一个队列,优先级1一个队列…)。调度器永远先查看最高优先级的就绪队列。只要最高优先级队列里有任务(如 P0),低优先级的任务(如 P1, P2)绝对没有运行机会。轮转 (Round-Robin)仅当最高优先级的就绪队列中有多个任务。

2025-10-28 18:37:22 354

原创 ebtn与回调

您并没有在代码的任何地方直接调用,而是将它“注册”给了按键库,授权库在适当的时候替您调用。这就是回调机制与控制反转您定义行为:您通过回调函数,清晰地定义了“做什么”(what to do),例如单击 KEY1 就翻转 LED。库决定时机:库负责所有底层的复杂判断,它决定了“何时做”(when to do),例如在检测到一次有效的、无抖动的单击后。这种模式极大地简化了应用层代码,实现了业务逻辑与底层驱动的解耦,让您的代码更清晰、更模块化、更易于维护。这份详细的笔记应该能帮助您更透彻地理解整个工作流程。

2025-09-18 18:52:46 902

原创 led警报闪烁

这个项目的目标是使用STM32的通用定时器(TIM3)来驱动一个LED,使其以逐渐加快的频率闪烁,最后变为常亮状态。整个逻辑完全由定时器中断来管理,这保证了主循环。是空的,CPU可以被释放出来去处理其他任务。这是一个典型的非阻塞式编程范例。以下是对代码中用到的核心HAL库函数和宏的详细解释。

2025-09-16 15:33:52 739

原创 SD卡基本信息

SD卡与FATFS集成指南 SD卡是一种便携存储设备,包含SDSC、SDHC、SDXC等容量规格,支持SDIO和SPI两种通信模式。SDIO模式(4位宽总线)可提供更高传输速率,适合嵌入式系统应用。 FATFS是嵌入式设备常用的文件系统模块,通过diskio.c硬件抽象层与SD卡驱动对接。关键配置包括: SDIO模式选择4位宽总线 时钟设置保持上升沿采样 禁用时钟旁路和硬件流控 分频系数根据系统时钟调整 典型集成包含ff.c(核心)、ff.h(API)、ffconf.h(配置)和diskio.c(硬件接口)

2025-09-04 11:23:57 905

原创 spi的相关配置

SPI(串行外设接口)是一种全双工同步串行通信协议,支持多种传输模式和数据格式配置。主要模式包括全双工主/从(最常用)、半双工和仅接收模式。数据传输时需配置帧格式(Motorola标准或TI特殊格式)、数据位宽(4-16位)和位序(MSB或LSB优先)。时钟配置涉及波特率分频、极性(CPOL)和相位(CPHA),组合形成四种SPI模式(0-3),需与从设备匹配。NSS(片选)信号可通过硬件或软件管理,通常低电平有效。可选CRC校验功能用于增强数据可靠性。SPI广泛用于Flash、ADC、传感器等设备通信。

2025-06-29 10:16:18 1221

原创 ADC DAC

分辨率(Resolution)分辨率决定了 ADC 能将模拟电压"切"成多少份,也就是它能区分多么细微的电压变化。通常用"位" (bits) 来表示。例如,一个 12 位的 ADC,能表示 2(12次方)=4096 个不同的数字级别。如果参考电压是 3.3V,那么它能分辨的最小电压变化大约是 3.3V/4096≈0.0008V 或 0.8mV。参考电压(Reference Voltage, Vref)参考电压是 ADC 进行测量的"标尺"。它定义了 ADC 能够转换的模拟电压的。

2025-06-09 19:45:06 2347

原创 串口及ringbuffer

串口初始化与配置摘要: 串口通信需要正确配置GPIO、时钟和参数。GPIO需设为复用模式并指定复用编号,如USART1对应GPIO_AF7_USART1。串口参数包括:波特率(115200常见)、数据位(8位)、停止位(1位)、校验位(无)、模式(全双工)等。中断和DMA可提高效率,常用中断类型有RXNE(接收)、TXE(发送)、TC(传输完成)和IDLE(帧结束)。DMA配置需选择方向(外设↔内存)、模式(普通/环形)和数据宽度。初始化流程为:使能时钟→配置GPIO→设置USART参数→初始化→可选DMA

2025-06-02 21:20:18 2249

原创 key与easy_button

想象引脚内部有一根"橡皮筋"轻轻地把它往"高电平"(通常是电源VCC)拉。当没有更强的力量(比如按键按下接地)作用时,它就保持在高电平。防止引脚"悬空"乱飘。就像一个开关,默认是开着的,只有你按下时才关断。当你需要引脚在空闲时稳定地输出高电平,或者连接的按键按下时会把引脚拉到低电平 (GND这是最常见的按键连接方式之一。

2025-05-30 17:31:26 882

原创 LED点亮及实现呼吸灯

本文介绍了STM32 GPIO的基础知识及其应用,重点包括GPIO模式(输入/输出/模拟/复用)、输出速度等级和上下拉电阻配置。详细解释了推挽输出和开漏输出的特点及适用场景,并给出了HAL库配置GPIO的三个关键步骤:时钟使能、结构体配置和初始化函数调用。最后提供一个LED呼吸灯实现的代码框架,通过正弦函数计算亮度变化实现平滑呼吸效果。该代码利用静态变量保持状态并采用软件PWM控制LED亮度。

2025-05-27 20:25:26 2424

原创 调度器gpt

本文介绍了嵌入式系统中的任务调度器及其结构体应用。任务调度器作为系统时间管理器,具有定时执行、周期性操作、非阻塞设计和模块化等特点。重点阐述了结构体在任务调度中的关键作用,包括定义任务属性(名称、优先级等)、内存分布、成员访问方式(点运算符和箭头运算符),以及结构体指针的应用价值。结构体指针通过间接访问任务数据提高了嵌入式系统的运行效率(节省SRAM和CPU周期),同时实现了模块化设计和解耦,增强了代码的可维护性和扩展性,特别适用于STM32等资源受限的嵌入式平台。

2025-05-26 15:02:22 204

原创 stm32的开发方式

摘要: STM32开发主要采用HAL(硬件抽象层)和SPL(标准外设库)两种方式。HAL提供统一API,支持全系列STM32芯片,结合STM32CubeMX工具可快速生成代码,移植性强,适合新手和跨型号开发,但存在代码体积较大的缺点。SPL更贴近硬件,性能较高,但移植性差且官方已停止更新。HAL因高抽象级别和工具链支持,显著优于SPL的移植性,例如更换芯片时仅需调整配置,核心代码无需修改。建议新项目优先选择HAL,对性能敏感场景可混合使用寄存器操作。

2025-05-26 10:35:45 826 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除