自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单片机从编译到启动的流程

c源文件、.h头文件:预处理后的.i文件删除所有注释展开宏定义(#define处理条件编译(#if#ifdef将#include的头文件内容插入到当前位置。

2026-03-01 16:40:07 831

原创 FreeRTOS内核(七)中断的核心机制

FreeRTOS 的所有内核对象操作(队列、信号量、任务通知等)都提供两套 API,分别用于和。FromISR:中断服务程序必须尽快执行,中断版本的 API 没有等待时间参数,总是立即返回成功或失败。:当在中断中向队列发送数据时,可能唤醒一个因等待该队列而阻塞的任务。如果这个被唤醒的任务优先级比当前被中断的任务高,理论上应该进行任务切换。:如果每唤醒一个高优先级任务就立即切换,而中断中可能多次调用 API(比如多次发送数据),就会导致多次无意义的切换,浪费 CPU 时间。。:中断版本多了一个输出参数。

2026-03-01 15:08:30 484

原创 FreeRTOS内核(六)定时任务的核心机制

定时器的通用实现逻辑,这是理解 FreeRTOS 的前提:超时时间:比如设置 100ms,就是(记为),当累加到这个值时触发回调;定时器链表:所有定时器通过挂到一个链表中,且链表按从小到大排序。FreeRTOS 为了保证中断的快速退出和提高灵活性,采用了“委托”机制。被唤醒的两种情况:情况1:收到用户操作(启动/停止/修改定时器)的命令消息(来自 xTimerQueue);情况2:阻塞等待超时(无新命令,且链表头定时器的超时时间已到);若因“阻塞超时”唤醒:主动遍历定时器链表,处理所有超时的定时

2026-03-01 13:15:12 913

原创 FreeRTOS内核(五)事件组与任务通知的核心机制

操作队列/信号量事件组临界区保护(关中断)(仅禁调度)原因支持 ISR 访问,需防中断干扰等待仅限任务;设置 ISR 版走代理模式,实际修改在任务中唤醒策略通常唤醒一个任务 (FIFO 或优先级)遍历链表,唤醒所有满足条件的任务数据清除队列出队即删除数据可选(自动清零) 或保留 (手动清零结构体复用Queue_t独立。

2026-02-28 22:54:01 945

原创 FreeRTOS内核(四)信号量与互斥量的核心机制

信号量、互斥量的句柄本质都是队列句柄,底层均通过计数值:复用队列的字段,代表「资源数 / 可用状态」;无数据区:创建时指定,无需拷贝数据,仅管理计数值和等待状态;等待链表:复用(等待获取)、(等待释放),管理阻塞的任务;原子操作:所有计数值修改(++/--)均在关中断后执行,保证多任务 / 中断下的原子性。

2026-02-28 17:30:34 676

原创 FreeRTOS内核(三)队列的核心机制

g_Count++

2026-02-28 14:29:15 750

原创 FreeRTOS内核(二)任务的核心机制

任务 = 函数 + 独立栈:函数是业务逻辑,栈是保存局部变量、调用关系、现场的空间;TCB 是任务的 “身份证”:保存栈顶指针、优先级、链表节点,用来管理任务;链表用于任务管理:就绪链表、延迟链表、挂起链表,分别管理不同状态的任务;调度器靠 Tick 中断驱动:每隔一段时间检查延迟链表、切换任务;核心调度规则:高优先级抢占,同优先级时间片轮转;空闲任务是 “兜底”:优先级最低,做清理工作,还会礼让同优先级任务;硬件中断(包括Tick) > PendSV 中断 > 任务。

2026-02-28 11:34:11 920

原创 FreeRTOS内核(一)ARM架构基础与栈

本文章适合有MCU和FreeRTOS的使用基础,进一步学习FreeRTOS内核与单片机底层。

2026-02-25 16:38:12 814 4

原创 力扣刷题记录8(无算法背景,纯C语言)

47、随机链表的复制。

2026-02-24 14:29:57 267

原创 力扣刷题记录7(无算法背景,纯C语言)

【代码】力扣刷题记录7(无算法背景,纯C语言)

2026-02-19 21:57:43 350

原创 力扣刷题记录6(无算法背景,纯C语言)

过年了,好几天没刷了。

2026-02-16 14:59:40 677

原创 力扣刷题记录5(无算法背景,纯C语言)

接下来遇到的都是middle难度题目,都是问AI的才会解答。

2026-02-10 16:08:38 319

原创 力扣刷题记录4(无算法背景,纯C语言)

一开始写错了(对和进行了跨越相加,而不是抛弃重新开始)后面加了一个globle参数进行历史记录,后边进行重新开始合计。

2026-02-04 14:54:24 212

原创 力扣刷题记录3(无算法背景,纯C语言)

15、杨辉三角(118 动态规划,正常解)15、只出现一次的数字(136技巧 异或)14、爬楼梯(70动态规划 记忆递归)16、多数元素(169技巧 投票法)13、找字符串中所有字母异位词。

2026-02-01 23:48:11 589

原创 力扣刷题记录2(无算法背景,纯C语言)

【代码】力扣刷题记录2(无算法背景,纯C语言)

2026-01-31 20:50:49 357

原创 力扣刷题记录1(无算法背景,纯C语言)

使用一个快指针一个慢指针,一个用来填充一个用来查找,最后补零。

2026-01-29 17:07:08 139

原创 单片机内存分配管理笔记

与 BSS 段的核心区别:BSS 段是静态分配(编译链接时确定大小),堆区是动态分配(运行时确定大小);核心特性:程序上电启动后,启动文件会自动将 bss 段对应的 RAM 区域全部清零(赋 0),因此未初始化的全局 / 静态变量默认值一定是 0;与 BSS 段的核心区别:都是存全局 / 静态数据、都占 RAM,但 data 段需要 Flash 存初始值,BSS 段不需要。与 text 段的关系:text 段偏 “执行指令”,rodata 段偏 “只读数据”,本质都是 Flash 中的只读内容。

2026-01-27 20:54:10 694

原创 STM32低频函数信号发生器(四通道纯软件生成)

本项目以 “低成本、多通道、易操作” 为目标,开发一款基于单片机 + DAC 方案的低频函数信号发生器,用于满足电子电路调试中的多支路同步信号激励需求。设备以STM32G431CBU6为主控,通过单片机定时器触发 DMA 传输与 DAC 转换,结合预定义波形数组实现信号生成,具备 4 路独立输出通道,支持 0.30~3.00V 幅值、0.1~50kHz 频率、0~100% 占空比的精准调节,可输出正弦波、双向锯齿波、方波、三角波共 5 种波形。

2026-01-26 19:17:39 703

原创 STM32简单的串口Bootloader入门

实现串口bootloader

2025-10-04 21:23:41 2379 2

原创 CMake如何添加.C.H文件

【代码】Cmake如何添加.C.H文件。

2025-09-21 22:32:16 298

原创 TFT屏幕:STM32硬件SPI+DMA+队列自动传输

加入队列前的基本流程是控制"DC电平->写入数据->等待DMA传输完成->DC电平->写入数据->等待DMA传输完成"这种操作是很浪费时间资源的,那么加入队列之后的操作是"写入数据->写入数据->写入数据"大部分时间都在写入队列与中断中,其它部分都是DMA自己在传输数据,不需要一直等待。看了网上的很多的SPI+DMA的代码,感觉都有一些缺陷,就是基本都是需要有手动等待DMA完成的这个操作,我感觉这种等待操作在很大程度上浪费了时间,那么我加入的“队列”就是一种将等待时间利用起来的方法。最后是完整版本的代码。

2025-09-01 21:46:49 952

原创 STM32 VS Code Extension + DAPlink实现

DAPLINK

2025-08-17 14:41:17 5039 4

原创 VScode报错ESP IDF PATH environment variable环境设置与指向不一致

解决环境路径报错问题

2025-05-15 10:41:36 627

原创 ESP32+CH343P电路设计心得

ESP32+CH343

2025-04-28 08:45:32 1885

原创 【已解决】供电需求突变,导致单片机重启

如果初始化时,使GPIO输出低电平,三极管截至,MOS关闭,此时,附属元器件无供电,单片机工作正常。后面若使GPIO输出高电平,开启附属元器件供电,此时会使单片机重启。

2025-04-20 13:00:00 690

原创 ESP-IDF下的软件串口softserial库

ESPIDF软件串口代码

2025-04-17 16:53:20 799 3

原创 Platformio 错误 No such file or directory

.cpp

2025-03-06 21:35:21 466

原创 如何利用Guider快速入门LVGL(ESP32+arduino)

通过GUIDER学习LVGL

2025-02-04 23:13:31 2388

原创 Keil debug无法进入main

keil debug

2025-01-15 13:24:26 516

原创 立创EDA如何批量更换同个元器件(器件与封装)

使用器件标准化更换元器件

2024-11-30 16:36:52 11445

原创 Vscode进入代理模式的暴力方法

就是在使用Platformio的时候,发现要使用新开发板的时候一直得下载很久,然后我就发现就算我在外面的软件打开了代理模式,但是Vscode还是无法访问外部网站。尝试了很多办法之后都没有成功,最后我不知道从哪里找来的方法,百试百灵。只要把这两部分结合一下,在我这里就是127.0.0.1:61995。然后进入CMD命令行输入以下命令,这样子就可以进入代理模式了。首先得找到自己的端口号,软件里面正常是有的。

2024-11-25 19:00:17 1088

原创 FreeRTOS学习笔记---软件定时器基础操作(基于ESPIDF)

参考文档是韦东山老师的。

2024-11-20 20:42:21 282

原创 FreeRTOS学习笔记---ESPIDF中的不同

3.自己的API,可以定义任务在哪个核上运行,通常0是运行无线信号任务,1是其他任务。1.ESP32具有多核心,而原本的FreeRTOS是为单核系统准备的。2.自动创建五个任务。

2024-11-18 20:36:07 251

原创 FreeRTOS学习笔记---事件组基础操作(基于ESPIDF)

参考文档与视频。

2024-11-18 20:14:23 264

原创 FreeRTOS学习笔记---互斥量基础操作(基于ESPIDF)

参考文档与视频。

2024-11-16 14:50:37 286

原创 FreeRTOS学习笔记---信号量基础操作(基于ESPIDF)

参考文档与视频。

2024-11-09 21:10:00 496

原创 FreeRTOS学习笔记---队列基础操作(基于ESPIDF)

没事就学习

2024-11-08 19:55:28 719

原创 ESP32+platformio+TFT_ESPI+ST7796S踩坑记录

ST7796

2024-08-22 15:03:46 3052 3

原创 FreeRTOS入门学习日志(1)

FreeRTOS如何入门

2024-04-28 13:23:08 2092 1

原创 学完江科大stm32后如何从零开始平衡车的开发(1)

学习stm32之后,零基础开发平衡车

2024-04-18 19:54:01 4610 12

空空如也

空空如也

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

TA关注的人

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