完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、FreeRTOS 移植
说明:本部分内容是将 FreeRTOS 移植到裸机工程中的步骤,了解了该部分内容,以后各种开发就会 FreeRTOS 的移植了。 1、安装 keil 5 2、下载 FreeRTOS 的源码 将下载后的 zip 文件解压缩,然后下面开始将源码移植到一个工程文件中。 3、准备一个工程 解压缩后,进入目录FreeRTOS工程ProjectRVMDK(uv5)下双击打开工程文件。 点击编译按钮进行编译。 程序无错,可以移植。 4、移植 FreeRTOS 最简源码 由于整个的 FreeRTOS 源码太大了,包含了许多,我们只需要提取我们需要的即可。 “ FreeRTOS工程 ” 文件中新建文件夹——FreeRTOS(用于存储 FreeRTOS 源码),然后进入该文件夹中。 打开 FreeRTOS 源码文件夹,在FreeRTOSv9.0.0FreeRTOSSource路径下,将 include 文件夹复制到刚刚新建的 FreeRTOS 文件夹中。 然后 include 同目录下新建两个文件夹——port、src。 进入 port 文件夹,再打开 FreeRTOS 源码文件夹,在FreeRTOSv9.0.0FreeRTOSSourceportable路径下,将 MemMang、RVDS 文件夹复制到刚刚新建的 port 文件夹中。 进入 src 文件夹,再打开 FreeRTOS 源码文件夹,在FreeRTOSv9.0.0FreeRTOSSource路径下,将所有的 .c 文件复制到刚刚新建的 src 文件夹中。 5、拷贝 FreeRTOSConfig.h 文件到 user 文件夹中 打开 FreeRTOS 源码文件夹,在FreeRTOSv9.0.0FreeRTOSDemoCORTEX_STM32F103_Keil路径下,将 FreeRTOSConfig.h 文件拷贝到工程的 user 文件夹中。 6、添加 FreeRTOS 源码到工程分组中,创建 FreeRTOS/src 和 FreeRTOS/port 打开工程。 添加文件夹:三色方块 ——》 添加按钮 ——》 输入文件名 ——》 OK ——》 添加完成。 添加 FreeRTOS C 源程序:双击 FreeRTOS/src 文件 ——》 勾选上 src 文件夹中的 C 源程序(路径:FreeRTOS工程FreeRTOSsrc)——》 Add ——》 添加完成。 添加 FreeRTOS 端口源程序:上述同样的步骤(路径:FreeRTOS工程FreeRTOSportRVDSARM_CM3)。 还有一个 heap_4.c 文件(路径:FreeRTOS工程FreeRTOSportMemMang)。 7、添加 FreeRTOSConfig.h 到 USER 中 双击 USER,勾选 FreeRTOSConfig.h 文件(路径:FreeRTOS工程User) 8、添加头文件路径 魔术棒 ——》 C/C++ ——》 … ——》 添加按钮 ——》 添加两个路径:。.。.FreeRTOSinclude和。.。.FreeRTOSportRVDSARM_CM3(这两个路径都是 FreeRTOS工程文件夹下的,也就是我们刚刚在工程中移植的 FreeRTOS 源码)。 添加完成后:OK ——》 OK 即可。 点击编译一下。 没有错误,显示如下图(有错误的情况下,根据提示更改)。 9、修改 FreeRTOSConfig.h 文件 替换掉 FreeRTOSConfig.h 中的所有内容。 然后再编译一下,会有两个错误如下图,原因是 SVC_Handler 、PendSV_Handler 被重复实现了。 打开 stm32f10x_it.c 文件,将这两个函数注释掉,然后再编译,无错。 10、修改 stm32f10x_it.c 文件 添加两个头文件。 #include “FreeRTOS.h” //FreeRTOS使用 #include “task.h” 如下图所示: 修改 SysTick_Handler 函数体。 如下图所示: 这里说明一下,xPortSysTickHandler 函数时在 port.c 文件中,如下图所示: 编译一下工程,没有错误。 到此为止,整个的 FreeRTOS 的源码移植完毕了,接下来就在 main.c 函数写 3 个周期性 task ,也可以自己再另外创建一个 .c 文件用于编写这 3 个 tack ,记住在 main.c 中引用头文件就行了。 二、多任务程序 1、编写 main.c 的代码 将 main.c 文件的内容全部修改成如下内容: 如下图所示: 2、烧录程序到 stm32 指南者中 |
|
|
|
这没有完结吧,缺东西呀,这个要增加什么
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 16:53 , Processed in 0.708296 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号