- 博客(73)
- 资源 (4)
- 收藏
- 关注
原创 RT-Thread源码阅读(4)——定时器管理
RT-Thread定时器分为硬件定时器和软件定时器两种类型: 硬件定时器在systick中断服务函数中处理超时 软件定时器通过高优先级线程处理超时 通过宏RT_USING_TIMER_SOFT控制是否启用软件定时器 定时器使用: 通过rt_timer_create创建定时器 参数包括名称、回调函数、周期等 通过rt_timer_start启动定时器 定时器管理机制: 使用跳表算法管理定时器链表 定时器按超时时间有序排列 软件定时器会唤醒定时器线程处理超时 定时器启动流程: 设置超时时间 将定时器插入到有序链
2025-05-26 13:52:02
372
原创 RT-Thread源码阅读(3)——内核对象管理
RT-Thread内核对象管理机制解析 RT-Thread通过_object_container数组实现内核对象分类管理,该数组按对象类型(线程、信号量等)组织,每个元素包含类型标识、对象链表和对象大小。关键特性包括: 使用链表结构(rt_list_t)管理同类对象,通过rt_object_allocate动态创建对象并插入链表 对象基础结构rt_object包含名称、类型标志和链表节点,所有内核对象均继承该结构 提供遍历接口如list_find_init,支持通过链表查询对象状态(如list_thread
2025-05-26 13:49:45
585
原创 RT-Thread源码阅读(2)——任务启动与调度
因此针对满堆栈,写入数据的流程为先移动SP指针再填写有效数据;观察后续代码可知,R4-R11在地址小的空间,也会被先出栈,此时返回的栈指针stk指向的就是R4,返回给。是对应着当前栈顶,例如栈空间buff[100],不减的话栈指向buff[100],访问就会溢出。,可以知道怎么调度,至于为什么调度,什么时候调度,请后续了解。当SP指针指向的地址空间没有存放有效数据,则称之为空堆栈。当SP指针指向的地址空间存放有有效数据,则称之为满堆栈。第一眼看这个代码,可能会有一个疑问,调用。线程初始化,相关解释见注释。
2025-05-22 16:30:56
519
原创 RT-Thread源码阅读(1)——基本框架
本文基于RT-Thread V4.1.1和STM32F103(Cortex-M3)平台,使用STM32CubeIDE(GCC)编译环境,旨在解析RT-Thread的基本设计逻辑。文章首先介绍了双向链表的核心操作,包括插入、初始化和判断链表是否为空等。接着,通过链表元素反推内核对象地址的方法,展示了如何从链表节点获取线程对象的结构体首地址。随后,文章详细描述了RT-Thread的启动流程,包括板级初始化、调度器初始化、线程创建和调度器启动等步骤。最后,文章深入探讨了调度器的初始化过程,特别是优先级相关的变量和
2025-05-22 16:28:29
1081
原创 Python正则表达式学习
非贪婪,遇到开始和结束就进行截取,因此截取多次符合的结果,中间没有字符也会被截取。用于在给定的字符串开头进行模式匹配,即可以通过此方法来判断目标的格式是否符合要求。用于在给定的字符串中查找所有匹配的模式,并以列表的形式返回匹配结果。一个"."就是匹配除 \n (换行符)以外的任意一个字符。这里必须使用非贪婪,不然所有返回都是0x0000b30a。以匹配成功的正则表达式进行分割字符串,返回字符串列表。与match不同的是search在整个字符串中匹配。贪婪,匹配从.*前面为开始到后面为结束的所有内容。
2025-01-09 14:09:45
395
原创 STM32中的MCO
在嵌入式系统中,时钟是一个至关重要的部分。STM32微控制器系列提供了一个名为MCO(Microcontroller Clock Output)的功能,它允许用户将微控制器内部的时钟信号输出到外部设备。这对于调试、测试或者与其他设备同步时钟非常有用。在这篇博客中,我们将深入了解STM32中的MCO功能,介绍如何配置MCO以及它的常见应用。
2025-01-09 14:07:52
1095
原创 I.MX6ULL裸机开发之时钟篇
在嵌入式开发中,时钟配置是至关重要的一部分。它影响整个系统的运行速度、定时和能耗等多个方面。作为一位合格的嵌入式开发工程师,总不能连内核、外设、总线各自的频率都不清晰吧?
2024-08-01 09:29:01
908
原创 哈希表简介
哈希表(Hash Table)是一种非常高效的数据结构,广泛应用于需要快速插入、删除和查找操作的场景中。哈希表是一种将键(Key)映射到值(Value)的数据结构。其核心思想是通过一个哈希函数将键转化为哈希值,然后将该哈希值映射到表中的索引位置。
2024-07-17 11:11:30
434
原创 内联汇编简介
在C语言中嵌入汇编(Assembly)代码,可以使用内联汇编(Inline Assembly),这在一些需要精确控制硬件或者优化性能的场合非常有用以下是关于ASM语法的介绍,主要基于GCC(GNU Compiler Collection)提供的内联汇编特性。
2024-06-03 10:30:12
233
原创 Makefile+OpenOCD开发STM32
下可找到,第一个是调试器的配置文件,第二个是芯片的配置文件,可以合二为一。平台:Windows11(Linux,MAC同理)下载对应平台工具链并添加到环境变量,使用。打印空间信息即编译成功,否则日志中会报错。第三个是上一节编译出的hex文件。是执行完成后退出OpenOCD。是下载成功后复位芯片。
2024-03-15 09:45:16
1189
原创 STM32移植SFUD
SFUD是一款开源的串行 SPI Flash 通用驱动库。由于现有市面的串行 Flash 种类居多,各个 Flash 的规格及命令存在差异, SFUD 就是为了解决这些 Flash 的差异现状而设计,让我们的产品能够支持不同品牌及规格的 Flash,提高了涉及到 Flash 功能的软件的可重用性及可扩展性,同时也可以规避 Flash 缺货或停产给产品所带来的风险。
2024-03-15 09:44:20
1352
1
原创 GCC中常用的内建函数
GCC(GNU Compiler Collection)是一个包含多个编程语言的编译器集合,而内建函数通常是为了提高代码性能或者实现一些特定功能而在编译器层面提供的函数。
2024-01-08 16:15:19
1001
原创 MobaXterm自定义关键字高亮(解决绿色不亮问题)
终端中的一些关键字高亮可以提高我们的效率,本文是解决在部分关键字没有高亮的情况下,添加自定义关键字使其高亮
2023-12-28 16:38:30
5092
2
原创 Cortex-M与RISC-V区别
Cortex-M以STM32H750为代表,RISC-V以芯来N305为代表RTOS版本为RT-Thread 4.1.1
2023-11-24 16:34:18
2335
2
原创 STM32驱动QSPI Flash
W25Q64存储容量共64M-bit/ 8M-byte,32768页(pages)、每页256-bytes,最大一次可编程256-bytes一次擦除大小可以为16页(4KB)、128页(32KB)、256页(64KB)或者全擦除W25Q64JV有2048个可擦除扇区(sectors),或者可以说有128个可擦除块(blocks关系 1 Block = 16 sectors;1 sector = 4KB,所以算起来能达到8M-byte编程即写数据,由于Flash的特性,只能从1编程0。
2023-11-24 16:22:25
2470
1
原创 栈回溯之CmBacktrace
(Cortex Microcontroller Backtrace)是一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪、定位,错误原因自动分析的开源库。支持的错误包括:断言(assert)故障(Hard Fault, Memory Management Fault, Bus Fault, Usage Fault, Debug Fault)故障原因自动诊断:可在故障发生时,自动分析出故障的原因,定位发生故障的代码位置,而无需再手动分析繁杂的故障寄存器;输出错误现场的。
2023-11-08 13:27:41
1295
原创 STM32+FreeRTOS 使用SystemView监控系统
本文以STM32F407ZET6 + FreeRTOS V9.0作为演示,其它的Cortex M芯片同样可以参考此文,其他内核和RTOS理论上也支持,本文暂时不做研究。所以开始阅读本文前,需要一块能运行FreeRTOS的Cortex M芯片,如果没有移植好操作系统,可以参考我的另一篇文章《STM32F103移植FreeRTOS完整过程》本文打包提供FreeRTOS V9.0源码SystemView安装包STM32F407ZET6示例工程
2023-07-11 17:30:47
3721
1
原创 通过DAPLink和STLink使用RTT输出日志
由于`SEGGER RTT` 自带的 `JLinkRTTViewer.exe` 只支持自家的`J-Link`,所以使用`DAPLink`和`STLink`我们得另辟蹊径,这里我们选择得是PyOCD
2023-07-06 09:14:00
7329
4
原创 基于J-Link RTT Viewer输出日志(适用于JLink DAPLink STLink)
通过RTT输出日志,可以不占额外的引脚和外设,速度非常快,几乎不影响程序的实时性
2023-07-04 19:39:51
4041
原创 STM32F103移植RT-Thread完整过程
RT-Thread官网有很多通过IDE一键移植的方法,本文选择的是手动移植,文末提供移植好的完整工程。
2023-06-28 13:55:32
4748
1
IIC学习之SHT30温湿度传感器(基于STM32)配套资料
2024-01-12
STM32+FreeRTOS 使用SystemView监控系统
2023-07-11
STM32F103-FreeRTOS基础工程,0错误0警告 FreeRTOS V9.0源码
2023-07-11
J-Link驱动V7.60 64位版本
2023-07-04
mqttfx-1.7.1-windows-x64.rar
2020-07-05
求解STM32H750 SPI1作为从机回复错误的问题
2024-08-16
请教OpenSSL中AES_cbc加密的问题
2022-11-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人