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

鄂州市网站建设_网站建设公司_React_seo优化

成都网站建设工作室,在线视频网站怎么做,汕头公关公司,学大数据专业后悔死了FreeRTOS是如今在小型嵌入式领域应用比较广泛的一种实时操作系统。它是一种开源且免费的操作系统#xff0c;而且移植和使用都非常的简单。在这里我们将学习并移植FreeRTOS。 1、必要的准备 工欲善其事#xff0c;必先利其器#xff0c;在开始学习和移植之前#xff0c;相…FreeRTOS是如今在小型嵌入式领域应用比较广泛的一种实时操作系统。它是一种开源且免费的操作系统而且移植和使用都非常的简单。在这里我们将学习并移植FreeRTOS。 1、必要的准备 工欲善其事必先利其器在开始学习和移植之前相应的准备工作必不可少。所以在开始我们需要有必要的准备 下载FreeRTOS源码可以从官网下载源码最新版本为V10.0.1官网地址https://www.freertos.org/a00104.html下载学习资料FreeRTOS官方提供入门手册和参考手册可以在线查看也可以下载pdf版本的电子书。下载网址https://www.freertos.org/Documentation/RTOS_book.html准备实验平台此次我们将在STM32F407平台上移植和测试FreeRTOS系统 下载的FreeRTOS源码是一个自解压的文件解压后包含的内容比较丰富不过目录结构很清晰主要包含两个子目录FreeRTOS和FreeRTOS-Plus。如下所示 FreeRTOS-Plus       包含FreeRTOS组件和演示例程FreeRTOS                包含FreeRTOS实时内核源文件和演示例程。我们学习的FreeRTOS内核部分在FreeRTOS目录之下打开FreeRTOS文件夹它又被分成两个主要的子目录如下所示 Demo         包含演示例程工程License      包含授权文件Source       包含实时内核源文件。RTOS代码的核心包含在三个文件中tasks.c、queue.c、list.c。这三个文件位于FreeRTOS/Source目录。在该目录下还包含三个可选的文件timers.c、event_groups.c、croutine.c分别实现软件定时、事件组和协程功能。打开Source文件夹FreeRTOS/Source目录结构如下所示 应用平台的不同所以每个支持的处理器架构都有一段与处理器架构相关的RTOS代码。这个是RTOS移植层它位于FreeRTOS/Source/Portable/[相应编译器]/[相应CPU架构]子目录。 对于FreeRTOS堆栈设计也属于移植层。FreeRTOS/Source/portable/MemMang目录下heap_x.c文件给出了多种堆栈方案在后续的移植中会详细说明。 2、简单的移植 前面我们简要说明了移植的准备工作接下来我们开始最主要的移植。本次移植我们将在IAR平台上进行首先要创建一个IAR项目。我们在IAR下创建一个名为pfreertos的项目并添加Application、Drivers和Middlewares几个组。并在Application下添加EWARM和User组在Drivers下添加CMSIS和STM32F4xx_HAL_Driver组在Middlewares下添加FreeRTOS组具体如下 至于具体文件的物理路径并没有特别要求但为了便于管理我们强烈建议放到一起。并将相关的FreeRTOS源码拷贝到该项目目录下。 将\FreeRTOSv10.0.1\FreeRTOS\Source目录下的源文件及include文件夹复制到新建项目的文件夹中。 将\FreeRTOSv10.0.1\FreeRTOS\Source\portable\IAR\ARM_CM4F目录下的三个文件也复制到新建项目的文件夹。 将\FreeRTOSv10.0.1\FreeRTOS\Source\portable\MemMang目录下的heap_4.c文件复制到新建项目的文件夹。 将\FreeRTOSv10.0.1\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK目录下的FreeRTOSConfig.h文件复制到新建项目的文件夹。 同时将这下文件添加到我们前面创建的pfreertos项目中其它如ST驱动及用户应用也添加到项目中。并将相关的引用目录添加到项目属性中。需要说一下的是在Assembler中的Preprocessor标签下添加也需要添加FreeRTOSConfig.h的引用路径因为在汇编文件中有对FreeRTOSConfig.h文件的引用。 在FreeRTOSConfig.h 配置文件中有如下3个宏定义 #define vPortSVCHandler          SVC_Handler #define xPortPendSVHandler     PendSV_Handler #define xPortSysTickHandler     SysTick_Handler 需要在stm32f4xx_it.c文件中将对应的三个空的函数定义注释掉。至此其实编译就已不会有错移植工作已经完成。当然在有些其他的基础库也需要使用SysTick时我们也可以在中断中调用xPortSysTickHandler()函数来实现我们的需求。 3、移植测试 前面我们已经移植了FreeRTOS接下来我们创建多个任务测试一下它。 在main.c文件中添加相应的代码声明如下函数及代码我计划4个任务 /*************************************************************************** 函数声明 ***************************************************************************/ static void vTask1(void *pvParameters); static void vTask2(void *pvParameters); static void vTask3(void *pvParameters); static void vTask4(void *pvParameters); static void AppTaskCreate (void);/*************************************************************************** 变量声明 ***************************************************************************/ static TaskHandle_t xHandleTask1 NULL; static TaskHandle_t xHandleTask2 NULL; static TaskHandle_t xHandleTask3 NULL; static TaskHandle_t xHandleTask4 NULL; 任务创建函数如下 static void AppTaskCreate (void) {xTaskCreate( vTask1, vTask1,512, NULL,1, xHandleTask1);xTaskCreate( vTask2, vTask2,512, NULL,1, xHandleTask2);xTaskCreate( vTask3, vTask3,512, NULL,1, xHandleTask3);xTaskCreate( vTask4, vTask4,512, NULL,1, xHandleTask4); } 主函数如下 int main(void) {/* 创建任务 */AppTaskCreate();/* 启动任务调度开始执行任务 */vTaskStartScheduler(); } 编译无错误4个任务同时运行。移植初步测试成功。 4、几点说明 在FreeRTOS中定义了多种内存管理方式对应的文件有5个那么每个文件实现了什么怎么选用呢我们对于内存管理的几个文件的大致内容描述如下 heap_1.c这是所有实现中最简单的一个。一旦分配内存之后它甚至不允许释放分配的内存。heap_2.c和heap_1不同这个方案使用一个最佳匹配算法它允许释放之前分配的内存块。它不会把相邻的空闲块合成一个更大的块可能会造成内存碎片。heap_3.c简单的包装了标准库中的malloc()和free()函数包装后的malloc()和free()函数具备线程保护。heap_4.c这个方案使用一个最佳匹配算法但不像方案2那样。它会将相邻的空闲内存块合并成一个更大的块。heap_5.c这个方案同样实现了heap_4.c中的合并算法并且允许堆栈跨越多个非连续的内存区。 在前面说过FreeRTOSConfig.h 配置文件中有如下3个宏定义。该宏定义避免了修改启动文件但有一个地方需要注意一下。就是第3个宏定义“#define xPortSysTickHandler       SysTick_Handler”。如果采用的是ST的标准库没有问题但如果采用的是HAL库由于HAL库需要SysTick中断才能稳定运行所以不能采用宏定义而是在stm32f4xx_it.c文件中的SysTick中断响应函数中调用xPortSysTickHandler函数。 欢迎关注
http://www.lebaoying.cn/news/24588.html

相关文章:

  • 建设嘉陵摩托车官方网站哈尔滨建设网证件查询
  • 重庆网站建公司大全运城网站制作
  • 做网站的优点齐齐哈尔网站seo
  • 电商网站开发源码网站卖东西怎么做的
  • 免费软件站青浦门户网站
  • 郑州做网站琴清河哪里做网站
  • 中化山东公路建设集团网站可以做调查问卷的网站
  • phpstudy搭建网站教程视频怎么到wordpress
  • 网站建设服务便宜wordpress删除所有评论
  • 网站上传的流程wordpress上下页
  • 怎么搭建一个视频网站江苏建设行政主管部门网站
  • 做花馍网站九江新闻
  • 荆州 网站建设石家庄北国商城
  • 做网站建设的公司是什么类型vs html5网站开发
  • 做推广的网站带宽需要多少合适怎么做网络广告
  • 在线考试类网站怎么做深圳家具网站建设
  • 创意礼物网站建设与管理win7创建wordpress
  • 做视频网站侵权吗wordpress怎么做出三个模块
  • 如何用凡科做网站最具有口碑的网站建设
  • 江苏苏中建设集团股份有限公司网站宜昌市住房和城乡建设局网站
  • 做网站的域名怎么申请徐州英才招聘网
  • 网站备案的用户名是什么快手做任务网站
  • 自住房车各项建设部网站wordpress 邮件订阅
  • 什么是网站降权处理做公司网站方案
  • 视频网站如何推广毕业设计实在不会怎么办
  • 网站需要维护网络推广方案找v信hyhyk1做推广好
  • 涿州市网站建设免费制作一个自己的网站吗
  • 网站做适配多少钱动漫设计和动漫制作技术的区别
  • 网站建设费能算作广告费用吗十堰学校网站建设
  • 专业论坛网站开发开发vr技术对网站建设有哪些影响