写在前面的话马自达mx5论坛
   
    本系列笔记一共七篇,是我个人学习FreeRTOS的实验笔记。
    学习过程中写笔记有几个好处:一是可以加深自己对FreeRTOS的理解;二是使学习更有成就感。笔记可以作为自己学习进步和知识储备的凭证,当然没人去查,关键是自己真的从中有更多的收获。
    在开始学习FreeRTOS时,我就已经计划写成笔记并上传带百度文库,希望对初学者有所帮助。因为我的学习历程也非常依赖网络资源。
    本人在学习FreeRTOS之前,已经学过μC/OS II,也上传了几篇学习笔记。这两个系统非常相似,都是开源的RTOS,但是一个是免费的,另一个是收费的。
    笔记的主要内容就是学习FreeRTOS的各种通讯机制。
    笔记的结构非常简单,就是通过简单的实例,演示FreeRTOS的各种通讯机制的使用方法。
    跟随本笔记学习完,能够做到以下几点即可:
    1.了解FreeRTOS程序的基本架构;
    2.能够理解和应用信号量、消息队列、邮箱队列等相关知识。
    特别说明:
    本笔记以STM32为平台,任何STM32平台都可以。所有例程只用到简单的硬件资源:最小系统的资源,LED输出,UART输出。
    为了开发简单,本笔记的例程全部使用STM32Cube配置生成,只需要添加很少的代码。如果不熟悉STM32Cube的使用,也没关系。只要在网上下载安装STM32CubeMX和相应芯片的支持包,然后跟着笔记的步骤操作即可,该笔记没有省略任何步骤。
    要学习STM32Cube,可到ST社区论坛/module/forum/forum.php,搜索STM32Cube,即可查看相关帖子。其中比较详细和全面的是微雪电子发布的帖子。
    重要参考资料:
    FreeRTOS实时内核实用指南.pdf (由Zou Changjun翻译并分享),建议学习者先通读一遍该文档,这是翻译自FreeRTOS作者Richard Barry于2009年发布的手册。
    最新最详细的资料当然是发布的信息。
    由于本人水平有限,错漏难免,欢迎指正,谢谢!
    S.D.Lu    于 深圳
    20168
E-mail:547068172@qq
FreeRTOS学习之一:任务的创建
    前提:默认已经装好MDK V5和STM32CubeMX,并安装了STM32F1xx系列的支持包。
    硬件平台:STM32F1xx系列。
    目的:学习FreeRTOS任务的创建。
创建任务是使用FreeRTOS的必要步骤,本文通过实例描述怎样使用STM32CubeMX配置创建FreeRTOS的任务。本文例子将创建两个任务,每个任务分别控制一个LED的闪烁。
Step1.打开STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103RBTx。
Step2.配置时钟引脚。
   
Step3.配置PA8和PD2为Output,并把用户标签分别改为LED0,LED1。
   
Step4.使能FreeRTOS。
   
Step5.配置时钟树。8M输入时,通过PLL得到72M内部时钟。
   
Step6.配置FreeRTOS。
   
Config parameters选项卡中是配置参数,其中列出了FreeRTOS的可配置参数,对应于FreeRTOSConfig.件中的配置参数。
   
Include parameters选项卡的参数则是用来配置裁剪FreeRTOS的。
   
Tasks and Queues用于添加任务和队列。
默认配置了一个名为defaultTask的任务,其优先级为普通,任务堆栈大小为128字,任务
函数名为StartDefaultTask。
   
双击蓝的地方,弹出对话框,将任务名修改为Task_LED0,将任务函数名修改为Func_LED0。
   
点击Add按钮,增加一个任务Task_LED1,优先级设置为Normal,函数名为Func_LED1。
   
需要注意的是,STM32Cube对FreeRTOS进行了一些修改,比如优先级只有7个,如下图。