完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32F103C8T6及其系列的FreeRTOS移植
1.前言 嵌入式系统是实时性强、宏观上多线程运行、且在单片机上运行的操作系统。具体代码实现和代码风格较之原先单线程式执行有较大不同,因此使用者需要对嵌入式系统的运行原理有清晰的认识,且需要熟悉代码块跳转的方式。 本文介绍FreeRTOS系统在STM32系列单片机上最简单的移植 2.FreeRTOS的介绍 2.1FreeRTOS的特性 FreeRTOS全称:Free Real Time OS ,免费的实时操作系统。 主要特性如下: 1) 免费可商用 2) 多线程 3) 可设置任务优先级 4) 实时性强 5) 可裁剪 6) 低功耗 7) 高可移植性 8) 任务与任务、 任务与中断之间可以使用任务通知、消息队列、二值信号量、数值型信号量、 递归互斥信号量和互斥信号量进行通信和同步。 3. 移植步骤 1)准备基础工程和FreeRTOS源码 2)基础工程的文件夹新建“FreeRTOS”文件夹 3)复制“FreeRTOS”中的“source”的源码 4)在“portable”文件夹里留下“Keil”、“MenMang”、“RVDS”文件夹 5)打开工程代码,右键工程名→‘Add Group’并命名“FreeRTOS_CORE”和“FreeRTOS_PORTABLE”,并添加代码如图1所示 图1 添加代码 6) 添加头文件路径如图2所示 图2 头文件路径 7)编译后,处理“FreeRTOSConfig.h”的error,复制例程里的文件添加至“include” 8)有重复定义的错误则进入“stm32f10x_it.c”中注释或删除掉重复定义函数。 9)修改“SYSTEM”文件中的sys.h的#define SYSTEM_SUPPORT_OS 为1 修改“usart.c”中的‘include.h’→‘FreeRTOS.h’ 修改USART1的中断函数,删除OSIntEnter()和OSIntExit() 修改delay.c文件中的‘delay_init()’的分频倍数为1 删除OSIntEnter()和OSIntExit() 修改delay.c文件中的‘delay_init()’的分频倍数为1 注意:‘FreeRTOSConfig.h’中的‘configTOTAL_HEAP_SIZE (size_t)(20*1024)’。其中20代表STM32F10X系列的堆栈大小,需要按照型号修改匹配。20为ZET6,10为C8T6。 |
|
|
|
只有小组成员才能发言,加入小组>>
745 浏览 0 评论
6357 浏览 1 评论
3953 浏览 7 评论
TIM3定时器输出PWM波控制LED灯的亮暗程度,PWM输出的高电平还有不同的值吗?
2460 浏览 11 评论
1804 浏览 5 评论
1194浏览 9评论
280浏览 1评论
553浏览 1评论
113浏览 0评论
1730浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 粤ICP备14022951号 )
GMT+8, 2024-1-9 12:35 , Processed in 0.337441 second(s), Total 42, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:粤 B2-20160233 工商网监 湘ICP备2023018690号