首先在网上看到大部分移植FreeRTOS 都是选择修改他的启动文件,我个人感觉这样不是很好,毕竟是汇编,当你采用不同的芯片型号时,又要修改不同的xx.S文件,所以我选择修改FreeRTOSconfig.h文件。
1. 下载STM32官方源码:我的是基于V3.5的官方库(有工程模板的可以不用)。
2. 搭建好一个MDK的工程,我这里采用的是野火的工 程。
3. 在工程模板目录下新建一个FreeRTOS文件夹,在FreeRTOS文件夹在建一个includewen文件夹(存放.h文件,方便管理)。
(1)从FreeRTOS7.0.2 的源文件中找到 croutine.c, timers.c,list.c, queue.c, tasks.c这五个源文件,位置为: FreeRTOS7.0.2-》Source;拷贝文件至FreeRTOS文件夹下。
(2)从FreeRTOS7.0.2的源文件中找到heap_2.c文件,位置Source-》portable-》MemMang-》heap_2.c,拷贝至FreeRTOS文件夹。
(3)拷贝.h文件到指定文件夹(。./FreeRTOS/include文件夹)中: 1. 拷贝FreeRTOS7.0.2的源代码下的include文件夹里的全部.h文件至新建立的include文件夹里,位置: :FreeRTOSv7.0.2-》Source-》include
(4)从FreeRTOS7.0.2的源文件中找到portmacro.h文件拷贝至新建立的include文件夹里,文件位置 :FreeRTOSv7.0.2-》Source-》portable-》RVDS-》ARM_CM3 -》portmacro.h
(5)由于我使用的是Keil-MDK作为开发工具,使用的是STM32F103VET6为目标芯片,所以需要从FreeRTOS7.0.2的源文件中找到匹配我这个开发工具与目标芯片的config.h的配置文件。这个文件在Demo文件夹中,把这个配置文件拷贝到include文件夹内,配置文件位置在CORTEX_STM32F103_Keil文件夹下: FreeRTOSv7.0.2-》Demo-》CORTEX_STM32F103_Keil-》FreeRTOSConfig.h
4. 在工程中添加各系统文件(这里就不用我说了吧),配上一张图
5. 设置好路径,
6. 接下来就是修改文件了
7. 1. 在FreeRTOS的demo文件夹中拷贝对应的FreeRTOSConfig.h文件后,需要加入一行: #define configUSE_MUTEXES 1
在FreeRTOSConfig.h文件中定义如下几行,这样子就不用改标准的启动文件了!(不用百度的方法)这里采用重定向的方法。
#definevPortSVCHandlerSVC_Handler#definexPortPendSVHandlerPendSV_Handler#definexPortSysTickHandlerSysTick_Handler12345
stm32fxxx_it.c 中需要删除默认的3个中断空函数,就是上面define的3个空函数。因为FreeRTOS的port.c中定义了它需要的这3个中断函数。也就是SysTick_Handler、PendSV_Handler、SVC_Handler这三个函数。
在编译一下就好了,完成移植了。
关键字:STM32 单片机 移植 FreeRTOS
引用地址:
如何在STM32单片机上移植FreeRTOS
推荐阅读最新更新时间:2024-11-06 18:24
基于HT47系列RISC单片机的智能化仪表设计
HT47系列MCU是盛群(Holtek)半导体公司近年推出的8位精简指令系统(RISC)单片机,它除了具有RISC类单片机特有的指令数量少、易记忆、采用流水线式指令执行方式、运行速度快等优点外,其片内的两通道R-F型A/D转换电路,动态LCD液晶驱动电路以及软件狗定时器等硬件资源,为设计小型乃至便携式智能化仪器仪表提供了极大的方便,全部硬件由传感器+HT47C20+液晶片+少量阻容元件构成。 图1 HT47C20的两通道R-F型A/D转换电路 图2 R-F型A/D转换过程 图3 (c)温度θ和计算值Nt的关系曲线 图4 用分段线性插值法处理θ-Nt 关系曲线 R-F型A/D
[应用]
利用51单片机制作一个秒表的详细过程
前面的话: 和很多朋友一样,在学51单片机的过程中我们肯定会涉及到制作一个秒表,牵涉到把单片机的多个部分组合起来使用,这对于我们初学者来说可能显得有些困难,我同大家一样,百思不得其解,最后头都弄大了才把这个秒表制作出来,为了给以后的朋友们一些思路,一些参考,所以在这里我把自己制作的整个详细过程整理出来供大家参考。我调试出来是没有问题的,各方面都稳定运行,由于我水平有限,中间可能会有不对的地方,欢迎大家指正,我们一起学习,一起进步! 我将分为三个部分来介绍:1.整体思路,2.硬件电路方面,3.软件编程方面。 1.整体思路 利用51单片机制作秒表时,我介绍精确到十分位(即0.1s)的制作,并让其拥有启动,暂停,复位三个功能。
[单片机]
Kinetis MCU开发解决方案支持mbed IoT Device Platform
广受欢迎的Freescale Freedom FRDM-K64F开发板为ARM mbed软件、工具和云服务提供支持,旨在快速打造从终端节点到云的IoT产品 飞思卡尔半导体(纽交所证券代码:FSL)携手ARM mbed 设计的、广受欢迎的FRDM-K64F开发板现已供货,为ARM mbed IoT Device Platform技术提供全面的支持,包括ARM新的mbed OS操作系统。 今年早些时候,飞思卡尔的FRDM-K64F开发板被视为是业界首款可全面支持mbed的开发板之一,支持端到端mbed解决方案,也可以与mbed系列技术协同工作,包括mbed OS、mbed Client、mbed Device
[嵌入式]
单片机常用功能模块的使用 Part2. 共阴共阳数码管
本质就是发光二极管 LED 的连接方式,多个 LED 摆成 日 的形状就叫数码管,共阴共阳就是一端统一接地或者统一接 VCC。 1、具体参数: 好像少了个⑨ 2、连接方法: 注:数码管本来就是 10 引脚:7 个字形,1 个小数点,2 个电源(为嘛是 2 个,没有考证过 )
[单片机]
51单片机中断号对应的中断
interrupt()interrupt n{} n 是表示中断对应的是中断号 外部中断0(INT0),对应中断号是0, 中断入口地址0003H 定时/计数器0(T1),对应中断号1 ,中断入口地址000BH 外部中断1(INT1),中断号2 入口地址0013H 定时/计数器1(T1)中断号3 入口地址001BH 串行口中(RI/TI)中断号4 入口地址0023H 这五个是AT89S51的,52还多了下面这个 定时/计数器2(T2)中断号5,入口地址002BH
[单片机]
以STM32单片机为控制系统核心的数据记录装置设计
引言 本文针对电动汽车研究的实际需求,设计一款数据记录装置,该数据记录装置是搭建在电池能量管理系统基础上的,通过与能量管理系统通信,记录电动汽车实际运行时电池的外部状态(如:电池电压、电流、温度等),一方面为了研究电池的工作特性,另一方面为了对能量管理系统的工作情况做验证,为电动汽车动力电池的理论研究提供数据支持。 1 系统总体设计 本数据记录装置的设计包括硬件设计与软件设计两方面,软件设计主要包括数据接收的编程以及数据存储的编程,而硬件设计主要有几个方面:主控芯片的选择、复位功能的实现、电源模块、实时时钟、通信模块以及SD卡连接等。主控芯片是控制系统的核心,它内部所集成的模块越多,就能省去更多的外部电路,使得电路的设计更加简
[单片机]
MDK软件不能模拟仿真STM32的问题解决方法
引言 MDK软件在模拟仿真时,不能很好地支持各种STM32系列芯片,目前对STM32F103系列芯片支持模拟仿真,但对于其他系列芯片不支持或只是部分支持。主要存在的问题是:PC和SP不能自动装载,存储器不能访问,中断服务程序不能执行或触发,外设寄存器不能修改或观察。要解决上述问题,必须通过相应的设置和相关的操作,才能完成模拟仿真。 1 模拟仿真的实现及PC和SP的自动装载 在MDK软件中,只有部分STM32芯片支持模拟仿真(如STM32F103),大部分芯片都不支持模拟仿真。主要的问题是,当进入调试界面后,R15 (PC)的值为0x00000000,不能进行调试操作(如单步、全速等)。要能对STM32进行模拟仿真,必须使P
[单片机]
基于双单片机的信号处理系统设计
检测与控制系统处理大量数据和多路信息时,只用一片单片机往往无法满足系统实时性和扩展性要求,且处理时间较长。例如在液面信息采集过程中,单片机要在相等的时间间隔进行A/D转换以及数据处理。由于要实现高通量的液体操作,液体操作平台通常配置多根移液针同时进行液体操作工作,采集多路液面信息。因此这里提出一种基于双单片机的信号处理系统设计方案,该系统采用单片机(AT89S51)作为核心器件,2片AT89S51型单片机作为双核心分担整个检测单元的任务。 1 系统硬件电路设计 该信号处理系统的总体设计方案为:单片机1定时进行A/D转换,并且将转换结果存入外部数据存储器:单片机2读取数据存储器中的转换结果并且通过串口传递给计算机,同时还
[单片机]