freertos zynq 移植_分享一下FreeRTOS移植STM32F302经验

本文档详细介绍了如何在STM32F302平台上移植FreeRTOS操作系统,包括从官网下载源码、解压、配置工程、修改配置文件、配置IAR软件以及解决编译错误的过程。通过实例展示了如何创建任务并进行任务调度,最终实现LED闪烁和串口通信功能。
摘要由CSDN通过智能技术生成

本帖最后由 八度空间 于 2017-3-12 11:32 编辑

移植硬件平台:项目板子

编译环境:IAR7.6

库版本:V1.2.2

FreeRTOS版本:V9.0.0

一、下载FreeRTOS源码

官网直接下载http://www.freertos.org/a00104.html或者原子哥光盘附带的,本贴也上传

1.jpg (44.2 KB, 下载次数: 9)

2017-3-12 10:18 上传

二、解压源码

2.1、新建工程,工程中建FreeRTOS文件夹存放源码

2.2、打开解压文件“..\FreeRTOSv9.0.0”

2.jpg (22.87 KB, 下载次数: 12)

2017-3-12 10:25 上传

2.3、打开“FreeRTOS”文件夹,看到“Source”文件夹,这就是源码了,至于“FreeRTOS-Plus”文件夹就大家自己研究了,像研究水果6plus一样研究

3.jpg (17.61 KB, 下载次数: 9)

2017-3-12 10:28 上传

将此文件夹所有东西拷贝到工程新建的“FreRTOS”文件夹中

4.jpg (22.96 KB, 下载次数: 7)

2017-3-12 10:30 上传

2.4、在源码demo文件夹里“..\FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK”(STM32F302是Cortex-M4内核的)拷贝“FreeRTOSConfig.h”文件到工程中(放位置随意)

5.jpg (40.24 KB, 下载次数: 11)

2017-3-12 10:35 上传

6.jpg (41.95 KB, 下载次数: 11)

2017-3-12 10:37 上传

二、打开IAR软件新建工程(可参考http://www.openedv.com/thread-74004-1-1.html这贴进行,至于MDK就大家自行新建了

),往文件夹丢文件就是了

7.jpg (24.39 KB, 下载次数: 7)

2017-3-12 10:40 上传

“port.c和portmacro.h”文件路径“..\FreeRTOS\portable\IAR\ARM_CM4F”

“portasm.s”文件路径(IAR工程必须添加,MDK工程没有的):“..\FreeRTOS\portable\IAR\ARM_CM4F”

”heap_x“文件路径:”..\FreeRTOS\portable\MemMang“

三、配置工程,添加头文件路径(可参考http://www.openedv.com/thread-74004-1-1.html这贴进行)

8.jpg (62.16 KB, 下载次数: 7)

2017-3-12 10:46 上传

四、配置IAR环境完成

4.1、编写main函数

9.jpg (15.63 KB, 下载次数: 4)

2017-3-12 10:48 上传

就弄了两个任务在跑,一个是闪灯(板子上只有一个LED),一个是串口每隔1s就输出一个浮点运算(前面说的STM32F302使用的是Cortex-M4内核),有带浮点计算单元的FPU

4.2、修改文件”FreeRTOSConfig.h“

打开文件,在开头位置,增加相关的环境预编译条件

12.jpg (38.46 KB, 下载次数: 5)

2017-3-12 10:57 上传

上一个框框就是文件自带的,我增加几个编译环境的宏定义判断,或者去掉也行,下面一个框框就是MDK编译环境的区别了,接下来就是FreeRTOS裁剪宏定义了

4.3、修改”SYSTEM“相关文件

4.3.1、修改”sys“文件

主要是增加宏定义相关说明,详见工程

4.3.2、修改”delay“文件

增加FreeRTOS支持

[mw_shl_code=applescript,true]/**

*****************************************************************************

* @name   : 初始化延时函数

*

* @Brief  : 主要Cortex-M3内核对系统时钟计数单元

*           详细见《Cortex-M3权威指南(中文)》第216页 a)  时钟周期(CYCCNT) 的内容

*           周立功《CM3计数参考手册》第28、29页、第110、125页

*

* @Input  : none

*

* @Output : none

*

* @Return : none

*****************************************************************************

**/

void delay_init(void)

{

#if _DELAY_TYPE == 1  //使用其他资源做延时时基

DEM_CTRL |= 1<<24;  //该位必须为1,使能跟踪和调试模块的使用。详细见:周立功《CM3计数参考手册》第115页介绍

//在没有使用跟踪时,该位使能对功率使用的控制。它能够由应用程序或调试器使能,供ITM使用

//在DWT能够使用之前,调试异常和监控控制寄存器的TRCENA(bit24)位必须置位

DWT_CTR

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值