完善资料让更多小伙伴认识你,还能领取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。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1760 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1613 浏览 1 评论
1058 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1932浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
723浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
564浏览 3评论
590浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
548浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 12:43 , Processed in 0.825114 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号