<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel rdf:about="https://blog.atoery.cn/index.php/feed/rss/tag/cubemx/">
<title>JRNitre&#039;s Blog - CubeMX</title>
<link>https://blog.atoery.cn/index.php/tag/cubemx/</link>
<description></description>
<items>
<rdf:Seq>
<rdf:li resource="https://blog.atoery.cn/index.php/2025/04/16/92.html"/>
<rdf:li resource="https://blog.atoery.cn/index.php/2025/04/14/90.html"/>
</rdf:Seq>
</items>
</channel>
<item rdf:about="https://blog.atoery.cn/index.php/2025/04/16/92.html">
<title>[FreeRTOS] 堆和栈的基本概念&amp;amp;在FreeRTOS中的使用</title>
<link>https://blog.atoery.cn/index.php/2025/04/16/92.html</link>
<dc:date>2025-04-16T21:41:29+08:00</dc:date>
<description>1.0 堆1.1 基本概念堆的本质是在 RAM 中的一段连续的内存区域，开发者可以主动申请一些内存块，其中与栈不同的是，堆的声明周期是完全由程序员进行控制的。1.2 堆的管理机制动态性碎片化风险手动管理1.3 例子在 C/C++ 中，定义一个变量时，其存储位置取决于其定义位置上下文：如果在函数内定义，则其存储在栈中。若在全局或静态作用域定义，则存储在静态存储区。真正的堆内存必须通过动态分配函数进行显示申请。char heap_buf[1024];    // 若在函数内进行申请，则存储在栈中，函数结束后自动释放-char* heap_buf = (char*)malloc(1024);   // 显式申请堆内存
2.0 栈2.1 基本概念栈是一种先进后出的数据结构，其基本操作通常包括：压栈和弹栈。2.2 栈的特点后进先出 (LIFO)高效性有限容量 (固定大小栈)自动管理：在嵌入式系统中，函数调用时使用的栈由编译器和处理器自动管理，无需程序员手动干预。3.0 RTOS 如何使用栈END 参考 & 声明[参考]FreeRTOS入门与工程实践 --由浅入深带你学习FreeRTOS（FreeRTOS教程 基于STM32，以实际项目为导向） -&gt; BV1Jw411i7Fz本文部分内容由 Ai 辅助生成</description>
</item>
<item rdf:about="https://blog.atoery.cn/index.php/2025/04/14/90.html">
<title>[FreeRTOS] 学习记录 - 创建一个多任务程序</title>
<link>https://blog.atoery.cn/index.php/2025/04/14/90.html</link>
<dc:date>2025-04-14T22:44:58+08:00</dc:date>
<description>HAL 库版本在使用 CubeMX 初始化的 FreeRTOS 工程后，可以选择默认创建一个线程（名称可配置），位于 freertos.c 中：/* creation of mainTask */
mainTaskHandle = osThreadNew(StartDefaultTask, NULL, &amp;mainTask_attributes);
/* USER CODE BEGIN RTOS_THREADS */创建一个新的任务，则需要使用 xTaskCreate 函数，这个函数的声明如下：BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,
                        const char * const pcName,
                        const configSTACK_DEPTH_TYPE usStackDepth,
                        void * const pvParameters,
                        UBaseType_t uxPrioity,
                        TaskHandle_t * const pxCreateTask );TaskFunction_t pxTaskCode：指定的运行函数const char * const pcName：名字const configSTACK_DEPTH_TYPE usStackDepth：栈的深度void * const pvParameters：参数UBaseType_t uxPrioity：优先级TaskHandle_t * const pxCreateTask：句柄创建一个任务用于串口发送数据：xTaskCreate(usartTask, &quot;usartTask&quot;, 128, NULL, osPriorityNormal, NULL);void usartTask(void *argument){
        while(1){
            printf(&quot;usart task is run!\n&quot;);
            HAL_Delay(500);
    }
}标准库版本</description>
</item>
</rdf:RDF>