• 使用 FreeRTOS 时注意事项总结(基础篇教程完结)


    以下转载自安富莱电子: http://forum.armfly.com/forum.php

    FreeRTOS 的初始化流程
    推荐的初始化流程如下,本教程配套的所有例子都是采用的这种形式,当然,不限制必须采用这种初
    始化方式,适合自己项目的才是最好的: 

    int main(void)
    {
    /*
    在启动调度前,为了防止初始化 STM32 外设时有中断服务程序执行,这里禁止全局中断(除了 NMI 和 HardFault)。
    这样做的好处是:
    1. 防止执行的中断服务程序中有 FreeRTOS 的 API 函数。
    2. 保证系统正常启动,不受别的中断影响。
    3. 关于是否关闭全局中断,大家根据自己的实际情况设置即可。
    在移植文件 port.c 中的函数 prvStartFirstTask 中会重新开启全局中断。通过指令 cpsie i 开启,__set_PRIMASK(1)
    和 cpsie i 是等效的。
    */
        __set_PRIMASK(1);
    /* 硬件初始化 */
        bsp_Init();
    /* 创建任务 */
        AppTaskCreate();
    /* 创建任务通信机制 */
        AppObjCreate();
    /* 启动调度,开始执行任务 */
        vTaskStartScheduler();
    /*
    如果系统正常启动是不会运行到这里的,运行到这里极有可能是用于定时器任务或者空闲任务的
    heap 空间不足造成创建失败,此要加大 FreeRTOSConfig.h 文件中定义的 heap 大小:
    #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 17 * 1024 ) )
    */
            while(1);
    }    

    中断优先级分组设置
    强烈推荐用户将 Cortex-M3 内核的 STM32F103 和 Cortex-M4 内核的 STM32F407 以及 F429 的
    NVIC 优先级分组设置为 4,即:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);这样中断优先级的
    管理将非常方便。 此函数在 bsp_Init 中第一个被调用:

    FreeRTOS 中使用中断注意事项
    对于初学者来说,首先,务必要把FreeRTOS 中断优先级配置弄明白,非常重要。 其次,
    FreeRTOS 中断方式的同步或者通信机制,在教程中都有配套的例子及其使用注意事项,使用时务必要注
    意。 另外,用户要注意以下两个问题,在前面的章节中也有啰嗦过:
    PendSV 中断,SysTick 中断和 SVC 0 中断用户不可调用,这三个被 FreeRTOS 占用。
    对于 STM32F103,STM32F407 和 STM32F429 来说,当用户将优先级分组设置为 4 的时候,PendSV
    的中断优先级是 15,SysTick 的中断优先级也是 15,而 SVC 的中断优先级是 0。 其中 SVC 中断,仅
    在系统启动的时候调用了一次。

    FreeRTOS 官方整理的 FAQ
    官方总结的问题汇总地址:http://www.freertos.org/FAQ.html

    写在最后:

    到这里,FreeRTOS的基础篇,即了解基本操作系统原理和能使用提供的API函数操作已经告一段落,如果确实到了需要分析源码和汇编的时候,再进行之后的提高练习。先做好应用层,再慢慢深入。提高自身水平的永远是自己的不断学习,不断练习,多动手操作,多动脑思考,有了FreeRTOS基础之后,学习之后的小型嵌入式系统,会很得心应手。最后会出一个所有关于FreeRTOS的随笔目录,方便之后复习的浏览。

     之后的提高篇是根据自己的使用经验的分享。

  • 相关阅读:
    iOS~runtime理解上篇
    iOS
    iOS-数据库+上传队列+runtime
    python3
    必应壁纸破解下载
    python3-django Mac下安装以及查看路径
    iOS
    iOS
    Tornado异步之-协程与回调
    iOS
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/7233538.html
Copyright © 2020-2023  润新知