0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FreeRTOS_003 _让系统在板子上跑起来

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-14 11:25 次阅读

写在前面

为满足大家的好奇心,本文将讲述几个步骤可以让FreeRTOS系统直接在芯片上运行,源代码里面的许多细节将在下一篇文章呈现。最后提供可以直接运行的Demo工程给大家,方便大家直接拿来修改测试。

为什么不先讲述源代码?

相信很多朋友开始学习的时候都是参看别人写好的,可以直接使用的源代码。在正确代码工程的基础上,我们可以展开很多测试,从而可以知道为什么这样才可以运行。

整个FreeRTOS工程源代码里面的内容牵涉到许多东西,而只需要简单几个步骤就能将代码运行起来,看到效果。如果我一一给你们讲述源代码,估计没怎么讲述几条,大家都晕了,不知道为什么这个地方是这样。

所以,给你看写好源代码工程,让你们自己测试,并分析才是最好的。

移植几个步骤

源代码里面的内容有很少变动,本篇文章不具体讲述,只讲述移植的几个步骤,最终让代码工程可以运行在板子上。只需要如下简单几步即可:

1.提取源码添加到工程

上一篇文章讲述了下载FreeRTOS源码中各个目录及文件的意思,也大概讲述了一下需要提取源码。

主要提取:Source目录+FreeRTOSConfig.h

(里面有部分内容未使用,为了不让大家感觉文件比较多,或者杂,我删除了)

将这些源码添加到自己的工程(之前讲述并建立好的STM32工程),具体提取的源码和添加到工程中的效果,请下载代码查看。

2.添加路径

我们添加源码到工程,有部分头文件include需要添加到工程。因此,我们需要添加相应路径。

.c源代码添加路径的方法见文章:

1.MDK-ARM_新建软件工程详细过程

2.EWARM_新建软件工程详细过程

这里主要想提醒的是:在IAR工程中有个汇编文件portasm.s包含了,需要我们添加所在文件下的路径。

注意:是在EWARM的Project -> Options -> Assembler -> Preprocessor中添加。

3.创建自己任务和添加相应代码

我们创建四个任务,还是使用比较经典的LED灯任务。

void AppTaskCreate(void)

{

xTaskCreate(vAppTask1, "Task1", TASK1_STACK_SIZE, NULL, TASK1_PRIORITY, NULL);

xTaskCreate(vAppTask2, "Task2", TASK2_STACK_SIZE, NULL, TASK2_PRIORITY, NULL);

xTaskCreate(vAppTask3, "Task3", TASK3_STACK_SIZE, NULL, TASK3_PRIORITY, NULL);

xTaskCreate(vAppTask4, "Task4", TASK4_STACK_SIZE, NULL, TASK4_PRIORITY, NULL);

}

void vAppTask1(void *pvParameters)

{

for(;;)

{

LED1_TOGGLE;

vTaskDelay(50);

}

}

我新建了app_task.c和app_task.h文件添加任务的源代码。

4.修改FreeRTOSConfig.h配置文件

这个文件是必须配置的,而且根据实际情况而定。我们系统的裁剪也与该文件有关,类似于UCOS中的os_cfg.h文件。

比如:主频、系统滴答、系统堆栈大小等。

#define configCPU_CLOCK_HZ ((unsigned long)72000000)

#define configTICK_RATE_HZ ((TickType_t)100)

#define configTOTAL_HEAP_SIZE ((size_t)(4 * 1024))

本文不讲述具体内容。后期详细分析FreeRTOSConfig.h中的每一个参数

至此,基本的步骤算是完成了。

代码下载

目前只提供了STM32F0、F1和F4的Demo工程,后期更新。

【提示:微信公众号不支持外链接】

FreeRTOS_STM32F0_Demo下载地址:

http://pan.baidu.com/s/1qYbmfy0

FreeRTOS_STM32F1_Demo下载地址:

http://pan.baidu.com/s/1jHDHRPc

FreeRTOS_STM32F4_Demo下载地址:

http://pan.baidu.com/s/1bplLZ7x

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 目录
    +关注

    关注

    3

    文章

    13

    浏览量

    8240
  • 源代码
    +关注

    关注

    96

    文章

    2945

    浏览量

    66725
  • FreeRTOS
    +关注

    关注

    12

    文章

    484

    浏览量

    62122
  • Source
    +关注

    关注

    0

    文章

    17

    浏览量

    9815
收藏 人收藏

    评论

    相关推荐

    1X Technologies明示:机器人跑起来

    近日,OpenAI投资的机器人公司1X Technologies(简称1X)透露了其机器人研发的下一步计划。11月23日,1X的AI副总裁Eric Jang社交媒体发帖求推荐跑步机,并特别注明
    的头像 发表于 11-25 14:40 404次阅读

    TM4C MCUFreeRTOS开发通用应用程序应用说明

    电子发烧友网站提供《TM4C MCUFreeRTOS开发通用应用程序应用说明.pdf》资料免费下载
    发表于 09-11 14:15 0次下载
    <b class='flag-5'>在</b>TM4C MCU<b class='flag-5'>上</b>用<b class='flag-5'>FreeRTOS</b>开发通用应用程序应用说明

    TM4C MCU使用FreeRTOS开发高级应用

    电子发烧友网站提供《TM4C MCU使用FreeRTOS开发高级应用.pdf》资料免费下载
    发表于 09-06 10:17 0次下载
    <b class='flag-5'>在</b>TM4C MCU<b class='flag-5'>上</b>使用<b class='flag-5'>FreeRTOS</b>开发高级应用

    BLE MESH console用例跑起来,除了开发板、串口线、小灯还需要什么外设吗?

    BLE MESH console用例跑起来,除了开发板、串口线、小灯还需要什么外设吗?其次是输入命令行的窗口是不是执行idf build的窗口?最后就是能输入的命令行是否ble_mesh_commands_README.md中,我尝试输入第一个Example: bmre
    发表于 06-21 15:27

    请问esp32使用lvgl的时候要怎么配置使用外部ROM?

    components/lvgl这个demo 刚刚可以把实例正常的跑起来 就是竖屏的时候不流畅 想把缓冲器区弄的大一点但是不知怎么配置 有大佬用过这个的吗 可以指点一下吗?
    发表于 06-20 06:29

    espidf5.0.0版本的LCD中的rgb_panel例程怎么跑起来

    想请问一下 espidf5.0.0版本的LCD中的rgb_panel例程怎么跑起来,之前跑起来过几次,不过现在完全跑不起来了 报错代码中出现的错误均为例程中的源代码,且其头文件都是有包含的,请问
    发表于 06-12 08:04

    板子的TVS管为什么总是坏?

    板子的TVS管为什么总是坏?
    的头像 发表于 06-08 08:10 332次阅读
    <b class='flag-5'>板子</b><b class='flag-5'>上</b>的TVS管为什么总是坏?

    使用STMF030C6T6开发板做的工程,能否用到使用L031F6P6做的产品

    使用STMF030C6T6开发板做的工程,能否用到使用L031F6P6做的产品?就是用CUBEMAX生成的STMF030C6T6工程,L031F6P6做的产品能否跑起来
    发表于 05-24 07:19

    用STVP将STVD生成的.hex文件直接下载到板子板子就不能跑,请问是什么原因?

    STVD仿真下载程序,程序下进去,板子可以跑起来,可是我用STVP将STVD生成的.hex文件直接下载到板子
    发表于 04-28 08:23

    请问STM32f103rct6怎么用emwin+AppWiard开发OLED屏啊?

    我的板子单用6.24版本的emwin能正常跑起来,但是用AppWizard开发emwin然后移植就不行了,屏幕用的是128*64的OLED,谁搞过吗或者哪里有教程?我弄了好几天了都不行。希望弄过的前辈指点一下。
    发表于 03-27 06:43

    MotorControl Workbench生成的代码是开环的吗,为什么电机跑起来很容易受到外力导致停机?

    请问各位高手 MotorControl Workbench 生成的代码是开环的吗?为什么我的电机跑起来很容易受到外力导致停机,我想它不停机,请问有什么好的办法吗 ?
    发表于 03-21 07:12

    STM32F103RET6电后出现复位脚对地0.09V电压,一直处于复位状态为什么?

    STM32F103RET6 电后出现复位脚对地0.09V电压,芯片一直处于复位状态,接入JLINK后亮红灯,如果把复位脚强制接3.3V后,软件正常跑起来,仿真器能正常识别到ID,但无法更新FLASH及仿真
    发表于 03-21 06:42

    CYPD5125 TYPE-C作为Consumer的时候,CYPD5125里的程序为什么没有跑起来

    CYPD5125 TYPE-C作为Consumer的时候,外接设备是有5V输出的,当TYPE-C作为Provider的时候,此时VBUS为5V,VDDD也有3.3V左右,CYPD5125里的程序为什么没有跑起来
    发表于 02-28 08:05

    psoc63能否不开启蓝牙的时候蓝牙不耗电?

    的情况下,功耗大概13mA,M4睡眠,M0唤醒的情况下待机功耗7mA。我M0跑起来的时候我是没有开启蓝牙广播的。 我记得之前用62的时候M0跑起来没有这么大的功耗。 好像也就2~3mA。我现在有个疑问,是不是
    发表于 02-19 07:38

    PCB设计:错把毫米当厘米怎么办?

    50块的板子:小事,重打吧,这点钱算啥啊,这个留作纪念吧。 200块的板子:出了点小问题,一切都在控制当中,重新做一套就没问题了。 1000块的板子:这一块设计有问题,我观察电源和高频那块也没考虑好,估计这块
    发表于 12-25 11:43 387次阅读
    PCB设计:错把毫米当厘米怎么办?