- 博客(8)
- 收藏
- 关注
原创 关于FreeRTOS任务运行时间统计函数vTaskGetRunTimeStats( char * pcWriteBuffer )使用时出现的问题
然后portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()只是 FreeRTOS 定义的宏名,它本质是 FreeRTOS 内核里的一个预定义宏占位符,没有任何可执行代码,也不是函数(不能被修改、不能直接写逻辑),,只是一个起到一个标签的作用,真正实现功能的函数是:ConfigureTimerForRunTimeStats()。FreeRTOS 把portGET_RUN_TIME_COUNTER_VALUE()写成带括号的形式,完全是设计层面的 “接口统一”。
2026-01-22 19:47:38
513
原创 关于FREERTOS的任务切换
将入栈后的最终 PSP(0x20002EC0)写入任务A的 TCB,作为 “下次切换回 B 的锚点”:→ 任务 A 的 TCB->pxTopOfStack = 0x20002EC0(仅切换出时更新,切换入时只读)。(“保存寄存器” 的区域(硬件 + 手动压栈的 16 个寄存器)只是任务A栈里的一部分,任务 A 的栈里还有局部变量、函数调用的返回地址 / 参数、嵌套函数的栈帧等动态内容)任务A的 PSP = 0x20002EC0(入栈后的最终栈顶,指向最后压入的 R11 的下一个低地址)。
2026-01-14 15:29:31
27
原创 堆栈的理解
栈(Stack):按后进先出规则使用的内存区域,由 CPU 的栈指针(SP/PSP)自动管理,用于存储函数调用帧、局部变量、任务上下文。:是 main 函数 / 中断服务程序使用的栈,由编译器 / 启动文件分配,物理上独立于 FreeRTOS 的堆,是硬件栈指针(MSP)指向的区域。栈和堆是两种不同的内存管理逻辑,是同一块物理 RAM 的不同使用 / 管理规则,而非硬件层面割裂的两块内存。:是 FreeRTOS 任务专属的栈,物理上可来自堆(动态)或静态内存,是任务栈指针(PSP)指向的区域。
2026-01-14 10:41:52
22
原创 在FreeRTOS中使用portDISABLE_INTERRUPTS()关闭中断无效
寄存器配置,每个中断占 8 位,但仅高 4 位(bit4~bit7)有效(低 4 位保留,写 0),优先级数值的换算规则是:原始寄存器值 = 优先级数值 × 16 (因为每级优先级占16个原始值)。所以,当设置定时器的中断优先级为6时并不能被portDISABLE_INTERRUPTS()关闭,因为此时的FreeRTOS管理的中断是11-15。它决定了FreeRTOS 系统调用能屏蔽的中断优先级阈值,191 这个数值是 STM32 优先级寄存器的 “原始值”,对应实际中断优先级 11。
2026-01-12 13:15:02
248
原创 error: #20: identifier “uint8_t“ is undefined
使用keil5进行stm32的代码编写,在编译是提示error: #20: identifier "uint8_t" is undefined这个错误,但是检查了代码等,都没有问题。只需要把#include "stm32f10x.h"的位置放在首位就可以解决。后面发现是#include "stm32f10x.h"没有放在第一行。头文件的顺序问题会导致报错。
2025-12-27 21:17:11
125
原创 在移植FREERTOS时出现的报错:Error: L6218E: Undefined Symbol
此错误通常与 FreeRTOS 配置有关。确保在 FreeRTOSConfig.h 文件中定义了 INCLUDE_xTaskGetCurrentTaskHandle 宏。确保在使用 xTaskGetCurrentTaskHandle 的源文件中正确包含了 FreeRTOS 的头文件。错误时,这意味着编译器无法找到 xTaskGetCurrentTaskHandle 符号的定义。解决 Error: L6218E: Undefined Symbol 错误。将其改为 1 以启用该功能。2. 确保正确包含头文件。
2025-12-26 10:55:26
248
原创 Encountered an improper argument
摘要:使用Keil5调试STM32程序时,选择退出Debug出现"Encountered an improper argument"错误。经排查发现该问题是由于调试时设置了断点但未清除所致。解决方法很简单:在退出调试前清除所有断点即可正常退出。该问题在使用ST-Link下载器时出现,属于常见的调试操作失误。
2025-11-28 13:10:45
180
原创 烧录程序时ESP32-cam接线问题。
当电源,rxd,txd,gnd都正确连接上时,ioo与旁边的gnd也相连,一切都准备就绪,为什么不成功呢?使用usb转ttl进行烧录时,接线后烧录失败,并且出现下面的字样。在芯片上有gnd,但还有一个gnd/r的引脚,原因就在这里。
2025-04-09 16:37:21
422
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅