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

天津做一个简单的网站满堂彩谁做的网站

天津做一个简单的网站,满堂彩谁做的网站,建站做网站哪家好,wordpress插 件文章目录 前言一、freertos任务管理是什么#xff1f;二、任务管理涉及到的一些概念1.任务状态2.优先级3.栈(Stack)4.事件驱动5.协助式调度(Co-operative Scheduling) 二、任务的基本操作1.创建任务什么是任务 2.创建任务3.任务的删除4.任务的调度3.简单示例 总结 前言 本fre… 文章目录 前言一、freertos任务管理是什么二、任务管理涉及到的一些概念1.任务状态2.优先级3.栈(Stack)4.事件驱动5.协助式调度(Co-operative Scheduling) 二、任务的基本操作1.创建任务什么是任务 2.创建任务3.任务的删除4.任务的调度3.简单示例 总结 前言 本freertos是以stm32系列为操作的 任务管理是实时操作系统RTOS的核心功能之一它允许开发者以并发的方式组织和管理多个任务。FreeRTOS 是一个流行的开源RTOS它提供了强大的任务管理功能让开发者能够轻松创建和控制任务。本文将介绍 FreeRTOS 的任务管理功能包括任务的创建、删除、挂起、恢复和优先级控制等方面的内容。 一、freertos任务管理是什么 当我们编写一个程序时通常会有多个任务需要同时执行比如说检测传感器数据、控制执行器、处理用户输入等等。而FreeRTOS就是一个帮助我们管理这些任务的工具。 任务管理就像是一个调度员它知道每个任务应该在什么时候执行。它可以创建任务就像给每个人分配一个工作一样。创建一个任务就相当于告诉系统“嘿我有一个任务需要完成它需要做什么事情有多重要还有执行的顺序。” 而任务之间可能也会有一些协作和通信的需求比如一个任务需要等待另一个任务完成某个操作才能继续执行。FreeRTOS也提供了一些机制让任务之间可以方便地共享数据、同步操作。 任务管理还可以通过设置任务的优先级告诉系统哪个任务更重要。例如一个任务负责处理实时的数据另一个任务负责打印日志我们可以设置实时数据任务的优先级更高这样它就会优先执行。同时我们还可以暂停或恢复任务的执行例如当不需要某个任务运行时可以将其暂停待需要时再恢复。 总而言之FreeRTOS的任务管理帮助我们组织、调度和控制多个任务的执行让我们的程序能够并发地运行提高效率和可靠性。通过合理设置任务的创建、优先级、通信和同步我们可以构建出更加复杂和功能强大的嵌入式系统。 二、任务管理涉及到的一些概念 以日常生活为例比如这个母亲要同时做两件事 喂饭这是一个任务 回信息这是另一个任务 1.任务状态 当前正在喂饭它是running状态另一个回信息的任务就是not running状态 not running状态还可以细分 ready就绪随时可以运行 blocked阻塞卡住了母亲在等待同事回信息 suspended挂起同事废话太多不管他了 2.优先级 我工作生活兼顾喂饭、回信息优先级一样轮流做 我忙里偷闲还有空闲任务休息一下 厨房着火了什么都别说了先灭火优先级更高 3.栈(Stack) 喂小孩时我要记得上一口喂了米饭这口要喂青菜了 回信息时我要记得刚才聊的是啥 做不同的任务这些细节不一样 对于人来说当然是记在脑子里 对于程序是记在栈里 每个任务有自己的栈 4.事件驱动 孩子吃饭太慢先休息一会等他咽下去了、等他提醒我了再喂下一口 5.协助式调度(Co-operative Scheduling) 你在给同事回信息 同事说好了你先去给小孩喂一口饭吧你才能离开 同事不放你走即使孩子哭了你也不能走 你好不容易可以给孩子喂饭了 孩子说好了妈妈你去处理一下工作吧你才能离开 孩子不放你走即使同事连发信息你也不能走 二、任务的基本操作 1.创建任务 什么是任务 在FreeRTOS中任务就是一个函数原型如下 void ATaskFunction( void *pvParameters );要注意的是 这个函数不能返回 同一个函数可以用来创建多个任务换句话说多个任务可以运行同一个函数 函数内部尽量使用局部变量 每个任务都有自己的栈 每个任务运行这个函数时 任务A的局部变量放在任务A的栈里、任务B的局部变量放在任务B的栈里 不同任务的局部变量有自己的副本 函数使用全局变量、静态变量的话 只有一个副本多个任务使用的是同一个副本 要防止冲突(后续会讲) 下面是一个示例 void ATaskFunction( void *pvParameters ) {/* 对于不同的任务局部变量放在任务的栈里有各自的副本 */int32_t var 0;/* 任务函数通常实现为一个无限循环 */while(1){/* 任务的代码 */}/* 如果程序从循环中退出一定要使用vTaskDelete删除自己* NULL表示删除的是自己*/vTaskDelete( NULL );/* 程序不会执行到这里, 如果执行到这里就出错了 */ }2.创建任务 创建任务时使用的函数如下 BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, // 函数指针, 任务函数 const char * const pcName, // 任务的名字:不会影响什么但是尽量不要重名 const configSTACK_DEPTH_TYPE usStackDepth, // 栈大小,单位为word,10表示40字节 void * const pvParameters, // 调用任务函数时传入的参数:他会他函数参数里面得到 UBaseType_t uxPriority, // 优先级 TaskHandle_t * const pxCreatedTask ); // 任务句柄, 以后使用 它来操作这个任务void * const pvParameters他会他函数参数里面得到 在这个函数里面参数void * const pvParameters、TaskHandle_t * const pxCreatedTask可以不填 参数具体说明 pvTaskCode 函数指针可以简单地认为任务就是一个C函数。 它稍微特殊一点永远不退出或者退出时要调用vTaskDelete(NULL) pcName 任务的名字FreeRTOS内部不使用它仅仅起调试作用。 长度为configMAX_TASK_NAME_LEN usStackDepth 每个任务都有自己的栈这里指定栈大小。 单位是word比如传入100表示栈大小为100 word也就是400字节。 最大值为uint16_t的最大值。 怎么确定栈的大小并不容易很多时候是估计。 精确的办法是看反汇编码。 pvParameters 调用pvTaskCode函数指针时用到pvTaskCode(pvParameters) uxPriority 优先级范围0~(configMAX_PRIORITIES – 1) 数值越小优先级越低 如果传入过大的值xTaskCreate会把它调整为(configMAX_PRIORITIES – 1) pxCreatedTask 用来保存xTaskCreate的输出结果task handle。 以后如果想操作这个任务比如修改它的优先级就需要这个handle。 如果不想使用该handle可以传入NULL。 返回值 成功pdPASS 失败errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY(失败原因只有内存 不足) 注意文档里都说失败时返回值是pdFAIL这不对。 pdFAIL是0errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY是-1。 3.任务的删除 void vTaskDelete( TaskHandle_t xTaskToDelete )使用这个函数即可删除一个任务。 如果是NULL则删除自己 4.任务的调度 vTaskStartScheduler()使用他开启任务调度必须要有这个freertos才知道你创建了任务需要我来调用了 3.简单示例 在任务中我们需要使用vTaskDelay进行延时 参数可以直接填数字但我建议填pdMS_TO_TICKS(延时数)比较好,因为他是freertos自带的宏 vTaskStartScheduler()使用他开启任务调度必须要有这个freertos才知道你创建了任务需要我来调用了 void Task(void *p) {int32_t *i (int*)p;while(1){printf(Count:%d\r\n,*i);(*i);vTaskDelay(pdMS_TO_TICKS(500));}vTaskDelete(NULL); } uint32_t count 0; TaskHandle_t mytaskHandle;void TaskTest(void) {xTaskCreate(Task,MyTask,50,count,1,mytaskHandle);vTaskStartScheduler();//任务调度必须要有这个freertos才知道你创建了任务需要我来调用了 }调用运行后就会在串口看到打印的消息了如下 除了使用串口来观察也可以使用HAL_GPIO_TogglePin来观测灯或者其他的一些模块来看到我们的任务效果 总结 任务管理是 FreeRTOS 提供的一个强大功能它允许开发者以并发的方式组织和管理多个任务。通过任务的创建、删除、挂起、恢复和优先级控制等操作开发者可以灵活地控制任务的执行顺序和调度策略从而实现复杂的系统功能。任务通信与同步机制进一步增强了任务的协同工作能力使任务之间能够高效地共享数据和协调操作。借助 FreeRTOS 提供的任务管理功能开发者可以更加方便地构建实时嵌入式系统并具备可靠性和高效性。 需要注意的是在使用 FreeRTOS 进行任务管理时开发者需要注意任务的资源管理、优先级设置和调度策略等方面以确保系统能够稳定地运行并满足实时性和响应性的要求。
http://www.dnsts.com.cn/news/281835.html

相关文章:

  • flash建网站教程网站项目运营
  • cms网站建设实训报告搜索类的网站优点
  • 绵阳网站建设推广网站开发调研
  • 呼和浩特做网站的电子商务网站开发过程论文
  • 建立网站的基本条件网店代运营收费多少钱
  • 服务器网站路径问题桐乡微网站建设公司
  • 网站开发工资德阳网站建设推广
  • 网站怎么做支付宝支付接口郑州网站推广公司咨询
  • 哪个网站免费h5模板多有什么网站可以做一起作业
  • 网站备案电话号码asp.net网站支持多国语言
  • 晋江市规划局建设网站app制作免费平台
  • 动画网站模块wordpress 意见反馈
  • flash网站建设教程专注成都网站建设及推广
  • 做电商网站用什么技术漳州正规网站建设
  • 怎么制作网站模板抖音关键词排名查询工具
  • 实例网站制作教程wordpress添加投稿
  • 德阳网站建设ghxhwl个人网站建设一般流程
  • 互联网公司网站建设ppt模板企业概况的内容
  • 济南手机网站建设公司哪家好360推广怎么收费
  • 南昌高端网站开发网站的链接结构
  • 网站备案查询不了免费软件下载存在哪些风险
  • 北京通网站建设价格低网络营销概念是谁提出的
  • 东莞凤岗企业网站建设推广建立网站有怎么用途
  • 网站网络广告推广wordpress 翻译函数
  • 寻找网站优化公司网站文件保护怎么做
  • 网站开发技术方法与路线如何做网站嵌入腾讯地图
  • 传媒公司招聘信息东莞关键词优化免费诊断
  • 官方网站优化方法.net企业门户网站开发
  • 做英文网站多钱天津seo排名公司
  • 58同城西安网站建设网站管理助手哪个好用