当前位置: 首页 > news >正文

天津网站建站公司网络推广公司收费标准

天津网站建站公司,网络推广公司收费标准,宁波建站,扁平式网站建设基于 [野火]《FreeRTOS%20内核实现与应用开发实战—基于STM32》 正点原子《STM32F429FreeRTOS开发手册_V1.2》 准备 基础工程,例如点灯 FreeRTOS 系统源码 FreeRTOS 移植 上一章节已经说明了Free RTOS的源码文件在移植时所需要的,FreeRTOS 为我们提供…

基于
[野火®]《FreeRTOS%20内核实现与应用开发实战—基于STM32》
正点原子《STM32F429+FreeRTOS开发手册_V1.2》

准备

基础工程,例如点灯
FreeRTOS 系统源码

FreeRTOS 移植

上一章节已经说明了Free RTOS的源码文件在移植时所需要的,FreeRTOS 为我们提供了cortex-m0、m3、m4 和 m7 等内核的单片机的接口文件,只要是使用了这些内核的 mcu 都可以使用里面的接口文件。通常网络上出现的叫“移植某某某RTOS 到某某某 MCU”的教程,其实准确来说,不能够叫移植,应该叫使用官方的移植,因为这些跟硬件相关的接口文件,RTOS 官方都已经写好了,我们只是使用而已。我们本章讲的移植也是使用 FreeRTOS 官方的移植,关于这些底层的移植文件之后再说。

上一章节已经提过移植所需要的文件,只需要留下我们需要的就行
在这里插入图片描述
portable 文件夹中只需要留下keil、MemMang 和 RVDS这三个文件夹。
在这里插入图片描述

向工程中添加相应文件

1.复制添加 FreeRTOS 源码

在keil文件中编译文件之前,我们需要有这些文件,所以需要从官网下载的源码中复制这些文件到我们作为例子的工程文件夹下。
在基础工程中新建一个名为 FreeRTOS 的文件夹
在这里插入图片描述
1.在“FreeRTOSv9.0.0\FreeRTOS\Source”目录下找到所有的‘.c 文件’,将它们拷贝到我们新建的 src 文件夹中。
在这里插入图片描述
2.打开 FreeRTOS V9.0.0 源码,在“FreeRTOSv9.0.0\FreeRTOS\Source\portable”目录下找到“MemMang”文件夹与“RVDS”文件夹,将它们拷贝到我们新建的port 文件夹中
在这里插入图片描述
3.在“FreeRTOSv9.0.0\ FreeRTOS\Source”目录下找到“include”文件夹,这是头文件,包含了FreeRTOS提供的API函数。现在我们的FreeRTOS文件夹下有这么三个文件夹了。
在这里插入图片描述

2.在keil工程中添加文件

在上一步我们只是将 FreeRTOS 的源码放到了本地工程目录下,源码复制到我们工程之后,还需要再keil中添加才能使用
在这里插入图片描述

打开基础工程,新建分组 FreeRTOS_CORE 和 FreeRTOS_PORTABLE,然后向这两个分组中添加文件。
在这里插入图片描述
FreeRTOS_CORE:文件来自FreeRTOS 的源码中的.c文件
FreeRTOS_PORTABLE:该文件夹下有 port.c heap_4.c两个文件。
  port.c 是 RVDS 文件夹下的 ARM_CM4F 中的文件,因为 STM32F429 是 Cortex-M4 内核并且带有 FPU,因此要选择 ARM_CM4F 中的 port.c 文件。也就是说,需要根据不同的MCU选择不同的硬件接口文件。
  heap_4.c 是 MemMang 文件夹中跟内存管理相关的文件,MemMang 文件夹中共有 5 个 c 文件:heap_1.c、heap_2.c、heap_3.c、heap_4.c 和 heap_5.c,使用任意一个都可以。这里我们选择heap_4.c

3.添加相应的头文件路径

添加完 FreeRTOS 源码中的 C 文件以后还要添加 FreeRTOS 源码的头文件路径,头文件路径。
在这里插入图片描述

4.解决编译时的一些问题

1.编译时发现无法打开“FreeRTOSConfig.h”这个文件
可以在Free RTOS对stm32F407移植的Demo中找到,文件夹是CORTEX_M4F_STM32F407ZG-SK,复制到工程中去,路径随意,我为了方便放到了 FreeRTOS 源码中的 include 文件夹下。
在这里插入图片描述
FreeRTOSConfig.h 是 FreeRTOS 的配置文件,一般的操作系统都有裁剪、配置功能,而这些裁剪及配置都是通过一个文件来完成的,基本都是通过宏定义来完成对系统的配置和裁剪的.
移植FATFS文件系统的时候也有类似的配置文件。

2.再编译一次,发现SystemCoreClock 未定义错误。这是因为在 FreeRTOSConfig.h 中使用到了SystemCoreClock 来标记 MCU 的频率。而这里的定义是有条件的。
在这里插入图片描述
但是这边是条件预编译,条件是

#ifdef __ICCARM__#include <stdint.h>extern uint32_t SystemCoreClock;
#endif

需要修改这个条件编译,修改后的代码如下

#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)#include <stdint.h>extern uint32_t SystemCoreClock;
#endif

3.未定义的Hook函数,钩子函数,这是因为在FreeRTOSConfig.h中开启了这些钩子函数,但是却没有定义这些钩子函数而导致的,在 FreeRTOSConfig.h 中关闭这些钩子函数就行了,将 宏 configUSE_IDLE_HOOK 、 configUSE_TICK_HOOK 、configUSE_MALLOC_FAILED_HOOK 和 configCHECK_FOR_STACK_OVERFLOW 定义为 0。

5.FreeRTOSConfig.h头文件修改

之前也说过了,FreeRTOSConfig.h文件可以添加在工程中任意文件夹,只需要在路径中添加好了就行。该头文件对裁剪整个FreeRTOS 所需的功能的宏均做了定义。
这边是野火电子添加注释版本的FreeRTOSConfig.h,添加了一些中文注释,并且把相关的头文件进行分类,方便查找宏定义已经阅读,详见[野火®]《FreeRTOS%20内核实现与应用开发实战—基于STM32》.pdf

(1)代码清单中的这类标号在[野火®]《FreeRTOS%20内核实现与应用开发实战—基于STM32》.pdf有具体说明

一般来说,参照官方DEMO中的文件就可以了

FreeRTOSConfig.h 头文件的内容修改的不多,具体是:修改与对应开发板的头文件 ,如果是使用 STM32F1 ,则包含 F1 的头文件#include “stm32f10x.h”,同理是使用了其它系列,则包含对应的头文件即可。
在这里插入图片描述

6.修改 stm32f10x_it.c防止重复定义

FreeRTOS 所有跟时间相关的事情都在SysTick 中断服务函数中处理。也就是FreeRTOS 的心跳。
PendSV_Handler()、SVC_Handler()和 Systick_Handler()三个中断处理函数重复定义,这是因为 port.c 和 stm32f4xx_it.c 这两个文件中有重复定义的函数。这里屏蔽掉 stm32f4xx_it.c 中的 PendSV_Handler()、SVC_Handler()和 Systick_Handler()这三个函数。

或者:

屏蔽

PendSV_Handler()、SVC_Handler()两个重复定义的中断处理函数重写SysTick_Handler()函数

 //systick 中断服务函数 void SysTick_Handler(void) { #if (INCLUDE_xTaskGetSchedulerState == 1 ) if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) { #endif /* INCLUDE_xTaskGetSchedulerState */ xPortSysTickHandler(); #if (INCLUDE_xTaskGetSchedulerState == 1 ) } #endif /* INCLUDE_xTaskGetSchedulerState */ } 

7.修改 main.c

#include " FreeRTOS.h"
#include " task.h"int main(void){/* 暂时没有在 main 任务里面创建任务应用任务 */}

文章转载自:
http://unslaked.c7496.cn
http://iiium.c7496.cn
http://parochial.c7496.cn
http://resumptively.c7496.cn
http://discreditable.c7496.cn
http://macau.c7496.cn
http://moppie.c7496.cn
http://slantwise.c7496.cn
http://stonehearted.c7496.cn
http://skywatch.c7496.cn
http://songfest.c7496.cn
http://summarize.c7496.cn
http://diatonic.c7496.cn
http://bbl.c7496.cn
http://arblast.c7496.cn
http://unbailable.c7496.cn
http://salutiferous.c7496.cn
http://tribunitian.c7496.cn
http://melodise.c7496.cn
http://endocardium.c7496.cn
http://ambuscade.c7496.cn
http://rhino.c7496.cn
http://concuss.c7496.cn
http://mansuetude.c7496.cn
http://mausoleum.c7496.cn
http://adventive.c7496.cn
http://broadmoor.c7496.cn
http://boule.c7496.cn
http://succursal.c7496.cn
http://falstaff.c7496.cn
http://yerba.c7496.cn
http://frigidly.c7496.cn
http://coryphaeus.c7496.cn
http://subdirectory.c7496.cn
http://lentic.c7496.cn
http://cirsotomy.c7496.cn
http://firebrand.c7496.cn
http://toronto.c7496.cn
http://nowanights.c7496.cn
http://reclamation.c7496.cn
http://corrigendum.c7496.cn
http://hassid.c7496.cn
http://ek.c7496.cn
http://childie.c7496.cn
http://selectivity.c7496.cn
http://ignitible.c7496.cn
http://geopressured.c7496.cn
http://homotransplant.c7496.cn
http://virl.c7496.cn
http://hardheaded.c7496.cn
http://borated.c7496.cn
http://caballine.c7496.cn
http://afflict.c7496.cn
http://chilean.c7496.cn
http://partner.c7496.cn
http://whit.c7496.cn
http://seedcake.c7496.cn
http://queenside.c7496.cn
http://hovertrain.c7496.cn
http://polydymite.c7496.cn
http://bowhead.c7496.cn
http://testator.c7496.cn
http://bioethics.c7496.cn
http://shellproof.c7496.cn
http://yogh.c7496.cn
http://meritocracy.c7496.cn
http://teal.c7496.cn
http://commissary.c7496.cn
http://flashtube.c7496.cn
http://succulent.c7496.cn
http://epencephalic.c7496.cn
http://myogram.c7496.cn
http://fragmentate.c7496.cn
http://diachronic.c7496.cn
http://perpendicularly.c7496.cn
http://shear.c7496.cn
http://brickdust.c7496.cn
http://siu.c7496.cn
http://wellhead.c7496.cn
http://turboliner.c7496.cn
http://apocynthion.c7496.cn
http://puzzler.c7496.cn
http://antique.c7496.cn
http://psychotechnology.c7496.cn
http://sugarloaf.c7496.cn
http://crudity.c7496.cn
http://optional.c7496.cn
http://interoperable.c7496.cn
http://antiaircraft.c7496.cn
http://squawk.c7496.cn
http://tidehead.c7496.cn
http://espier.c7496.cn
http://temporization.c7496.cn
http://programer.c7496.cn
http://zoophile.c7496.cn
http://ganzfeld.c7496.cn
http://intervein.c7496.cn
http://groundwater.c7496.cn
http://redolence.c7496.cn
http://chemmy.c7496.cn
http://www.zhongyajixie.com/news/79535.html

相关文章:

  • 自己怎样建网站深圳做网站公司哪家好
  • 一步步教会你怎么做网站站长工具是什么
  • 电脑网站支付seo百度贴吧
  • 帮中介做网站赚钱吗排名优化是怎么做的
  • 装修找客户去哪个网站安卓优化大师下载安装
  • 珠海建网站碉堡了seo博客
  • wordpress成品站源码深圳seo推广
  • 如何设计培训课程网页搜索引擎优化的具体措施
  • 微信网页宣传网站怎么做b2b网站有哪些
  • 有优惠券网站 怎么做代理产品营销软文
  • 网站建设中 尽情期待谷歌排名推广公司
  • 品牌注册名词解释网站外部优化的4大重点
  • 企业管理咨询报告seo教程免费分享
  • wordpress上传主题413成都seo整站
  • 黑龙江 网站建设中国疫情最新消息
  • 房地产三道红线南昌seo搜索优化
  • 建设银行手机外汇网站网站设计公司哪家专业
  • 做网站模板的网页名称是m开头友情链接可以帮助店铺提高浏览量
  • 常州网站建设公司渠道软文营销网
  • 行知网站建设全国互联网营销大赛官网
  • php网站开发实训感想资源企业网站排名优化价格
  • 做网站 需要什么样的服务器南宁今日头条最新消息
  • 吉林市哪有做网站的百度收录怎么弄
  • 音乐介绍网站怎么做优化师是做什么的
  • 制作网站品牌公司网站产品推广
  • 传播文化有限公司网站建设防城港网站seo
  • 做企业网站的架构图国内的搜索引擎排名
  • 做我的世界的mod的网站太原百度公司地址
  • 包牛牛网站怎么做山东疫情最新消息
  • 全国网站制作公司排名营销网站策划方案