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

结构设计网站推荐排名轻松seo 网站推广

结构设计网站推荐,排名轻松seo 网站推广,福建城市建设厅网站,成都响应式网站开发主要流程参照【FreeRTOS】【STM32】06 FreeRTOS的使用-动态创建单任务 1.定义任务句柄 static TaskHandle_t AppTaskCreate_Handle NULL;2.硬件初始化 略 3.创建具体功能任务函数 见定义任务函数 4.使用xTaskCreate创建任务 xReturn xTaskCreate((TaskFunction_t )AppT…

主要流程参照【FreeRTOS】【STM32】06 FreeRTOS的使用-动态创建单任务

1.定义任务句柄

static TaskHandle_t AppTaskCreate_Handle = NULL;

2.硬件初始化

3.创建具体功能任务函数

见定义任务函数

4.使用xTaskCreate创建任务

 xReturn = xTaskCreate((TaskFunction_t )AppTaskCreate, /* 任务入口函数 */(const char* )"AppTaskCreate",/* 任务名字 */(uint16_t )512, /* 任务栈大小 */(void* )NULL,/* 任务入口函数参数 */(UBaseType_t )1, /* 任务的优先级 */(TaskHandle_t* )&AppTaskCreate_Handle);/* 任务控制块指针 */

5.使用vTaskStartScheduler(); /* 启动任务,开启调度 */

主要代码清单

头文件
  /** ************************************************************************* 包含的头文件* ************************************************************************* //* FreeRTOS 头文件 */#include "FreeRTOS.h"#include "task.h"/* 硬件 bsp 头文件 */#include "bsp_usart.h"...
声明和定义
/**************************** 任务句柄 ********************************//** 任务句柄是一个指针,用于指向一个任务,当任务创建好之后,它就具有了一个任务句柄* 以后我们要想操作这个任务都需要通过这个任务句柄,如果是自身的任务操作自己,那么* 这个句柄可以为 NULL。*//* 创建任务句柄 */static TaskHandle_t AppTaskCreate_Handle = NULL;/* LED1 任务句柄 */ static TaskHandle_t LED1_Task_Handle = NULL; /* LED2 任务句柄 */ static TaskHandle_t LED2_Task_Handle = NULL; /***************************** 内核对象句柄 ******************************//** 信号量,消息队列,事件标志组,软件定时器这些都属于内核的对象,要想使用这些内核* 对象,必须先创建,创建成功之后会返回一个相应的句柄。实际上就是一个指针,后续我* 们就可以通过这个句柄操作这些内核对象。** 内核对象说白了就是一种全局的数据结构,通过这些数据结构我们可以实现任务间的通信,* 任务间的事件同步等各种功能。至于这些功能的实现我们是通过调用这些内核对象的函数* 来完成的**//************************** 全局变量声明 *********************************//** 当我们在写应用程序的时候,可能需要用到一些全局变量。*//*************************************************************************** 函数声明**************************************************************************/static void AppTaskCreate(void);/* 用于创建任务 */static void LED1_Task(void* pvParameters);/* LED1_Task 任务实现 */ static void LED2_Task(void* pvParameters);/* LED2_Task 任务实现 */ static void BSP_Init(void);/* 用于初始化板载相关资源 */
main函数
 /****************************************************************** @brief 主函数* @param 无* @retval 无* @note 第一步:开发板硬件初始化第二步:创建 APP 应用任务第三步:启动 FreeRTOS,开始多任务调度****************************************************************/int main(void){BaseType_t xReturn = pdPASS;/* 定义一个创建信息返回值,表示是否创建成功,默认为 pdPASS *//* 硬件初始化 */BSP_Init();/* 创建 AppTaskCreate 任务 */
xReturn = xTaskCreate((TaskFunction_t )AppTaskCreate, /* 任务入口函数 */(const char* )"AppTaskCreate",/* 任务名字 */(uint16_t )512, /* 任务栈大小 */(void* )NULL,/* 任务入口函数参数 */(UBaseType_t )1, /* 任务的优先级 */(TaskHandle_t* )&AppTaskCreate_Handle);/* 任务控制块指针,任务句柄 *//* 启动任务调度 */
if (pdPASS == xReturn)vTaskStartScheduler(); /* 启动任务,开启调度 */
elsereturn -1;while (1); /* 正常不会执行到这里 */}
任务入口函数
 /************************************************************************ @ 函数名 : AppTaskCreate* @ 功能说明: 为了方便管理,所有的任务创建函数都放在这个函数里面* @ 参数 : 无* @ 返回值 : 无*******************************************************************/static void AppTaskCreate(void){BaseType_t xReturn = pdPASS;/* 定义一个创建信息返回值,默认为 pdPASS */taskENTER_CRITICAL(); //进入临界区/* 创建 LED_Task 任务 */ xReturn = xTaskCreate((TaskFunction_t )LED1_Task, /* 任务入口函数 */ (const char* )"LED1_Task",/* 任务名字 */ (uint16_t )512, /* 任务栈大小 */ (void* )NULL, /* 任务入口函数参数 */ (UBaseType_t )2, /* 任务的优先级 */ (TaskHandle_t* )&LED1_Task_Handle);/* 任务控制块指针 */ if (pdPASS == xReturn) printf("创建 LED1_Task 任务成功!\r\n"); /* 创建 LED_Task 任务 */ xReturn = xTaskCreate((TaskFunction_t )LED2_Task, /* 任务入口函数 */ (const char* )"LED2_Task",/* 任务名字 */ (uint16_t )512, /* 任务栈大小 */ (void* )NULL, /* 任务入口函数参数 */ (UBaseType_t )3, /* 任务的优先级 */ (TaskHandle_t* )&LED2_Task_Handle);/* 任务控制块指针 */ if (pdPASS == xReturn) printf("创建 LED2_Task 任务成功!\r\n"); vTaskDelete(AppTaskCreate_Handle); //删除 AppTaskCreate 任务taskEXIT_CRITICAL(); //退出临界区}

XX,启动!

一个RTOS工程的启动遵循这两个流程。
第一种

/* 硬件初始化 */
硬件初始化。硬件初始化这一步还属于裸机的范畴
/* RTOS 系统初始化 */
RTOS 系统初始化
/* 创建任务 1,但任务 1 不会执行,因为调度器还没有开启 */ 
创建各种任务。这里把所有要用到的任务都创建好,但还不会进入调度,因为这个时候 RTOS 的调度器还没有开启。
/* 创建任务 2,但任务 2 不会执行,因为调度器还没有开启 */
启动 RTOS 调度器,开始任务调度。这个时候调度器就从刚刚创建好的任务中选择一个优先级最高的任务开始运行。
/* 启动 RTOS,开始调度 */

第二种

/* 硬件初始化 *//* RTOS 系统初始化 *//* 创建一个任务 */
创建一个开始任务。然后在这个初始任务里面创建各种应用任务
/* 启动 RTOS,开始调度 */
启动 RTOS 调度器,开始任务调度。这个时候调度器就去执行刚刚创建好的初始任务,也就是创建任务的任务创建任务。每创建一个任务后它都将进入就绪态,系统会进行一次调度,如果新创建的任务的优先级比初始任务的优先级高的话,那将去执行新创建的任务,当新的任务阻塞时再回到初始任务被打断的地方继续执行。反之,则继续往下创建新的任务,直到所有任务创建完成。各种应用任务创建完成后,初始任务自己关闭自己,使命完成。

FreeRTOS 的启动流程

1.上电 Reset_Handler

我们知道单片机上电之后,从Flash启动时在取得栈顶指针之后,执行 Reset_Handler,复位函数的最后会调用 C 库函数__main。__main 函数的主要工作是初始化系统的堆和栈,最后调用 C 中的 main 函数,从而去到 C 的世界。

 Reset_Handler PROCEXPORT Reset_Handler[WEAK]IMPORT __mainIMPORT SystemInitLDR R0, =SystemInitBLX R0LDR R0, =__mainBX R0ENDP

2.xTaskCreate创建任务

到达main函数之后, xTaskCreate()函数创建任务,并且创建任务函数内部 FreeRTOS 会自动帮我们做初始化的事情,比如初始化堆内存

3.开启任务调度

创建完成任务之后,空闲任务定时器任务均未实现,这些都是在开启调度函数vTaskStartScheduler()中实现的。

为什么要空闲任务?因为 FreeRTOS 一旦启动,就必须要保证系统中每时每刻都有一个任务处于运行态(Runing),并且空闲任务不可以被挂起与删除,空闲任务的优先级是最低的,以便系统中其他任务能随时抢占空闲任务的 CPU 使用权。这些都是系统必要的东西,由FreeRTOS自动实现。

动态创建空闲任务

空闲任务的优先级与堆栈大小都在 FreeRTOSConfig.h 中由用户定义,空闲任务的任务句柄存放在静态变量 xIdleTaskHandle 中,用户可以调用 API 函数 xTaskGetIdleTaskHandle()获得空闲任务句柄。 FreeRTOS自动完成。

创建定时器任务

如果在 FreeRTOSConfig.h 中使能了 configUSE_TIMERS 这个宏定义 ,FreeRTOS自动完成。


文章转载自:
http://dinncoultimo.bpmz.cn
http://dinncoromish.bpmz.cn
http://dinncodreamfully.bpmz.cn
http://dinncobatdambang.bpmz.cn
http://dinncofiredragon.bpmz.cn
http://dinncoradialized.bpmz.cn
http://dinncosillabub.bpmz.cn
http://dinncodormitive.bpmz.cn
http://dinncossd.bpmz.cn
http://dinncopicowatt.bpmz.cn
http://dinncocredit.bpmz.cn
http://dinncopsychopharmaceutical.bpmz.cn
http://dinncounparalleled.bpmz.cn
http://dinncoophthalmoscopy.bpmz.cn
http://dinnconerc.bpmz.cn
http://dinncogyratory.bpmz.cn
http://dinncovedaic.bpmz.cn
http://dinncoboina.bpmz.cn
http://dinncoquinalbarbitone.bpmz.cn
http://dinncopolyspermia.bpmz.cn
http://dinncotiddled.bpmz.cn
http://dinncohydrolab.bpmz.cn
http://dinncoserfdom.bpmz.cn
http://dinncomicrovascular.bpmz.cn
http://dinncobenzalacetone.bpmz.cn
http://dinncolineolate.bpmz.cn
http://dinncoimpetus.bpmz.cn
http://dinncosemeiology.bpmz.cn
http://dinncofeldspathose.bpmz.cn
http://dinncochair.bpmz.cn
http://dinncooligarchical.bpmz.cn
http://dinncoshuggy.bpmz.cn
http://dinncosubemployment.bpmz.cn
http://dinncoalexia.bpmz.cn
http://dinncoindissociably.bpmz.cn
http://dinncoimpulsive.bpmz.cn
http://dinncohandmaid.bpmz.cn
http://dinncoscandisk.bpmz.cn
http://dinncoplatform.bpmz.cn
http://dinncotitanosaur.bpmz.cn
http://dinncopromisee.bpmz.cn
http://dinncoexecutory.bpmz.cn
http://dinncopaleness.bpmz.cn
http://dinnconamaskar.bpmz.cn
http://dinncoorchidotomy.bpmz.cn
http://dinncopillbox.bpmz.cn
http://dinncomal.bpmz.cn
http://dinncoproperty.bpmz.cn
http://dinncoolein.bpmz.cn
http://dinncoolder.bpmz.cn
http://dinncoaruba.bpmz.cn
http://dinncolabilize.bpmz.cn
http://dinncobailout.bpmz.cn
http://dinncolitharge.bpmz.cn
http://dinncowhimling.bpmz.cn
http://dinncochimneynook.bpmz.cn
http://dinncocockbrain.bpmz.cn
http://dinncoewelease.bpmz.cn
http://dinncogravitate.bpmz.cn
http://dinncomayst.bpmz.cn
http://dinncobronzite.bpmz.cn
http://dinncosatrap.bpmz.cn
http://dinncononentanglement.bpmz.cn
http://dinncooverbred.bpmz.cn
http://dinncopawn.bpmz.cn
http://dinncoclever.bpmz.cn
http://dinncoosteopathic.bpmz.cn
http://dinncoshirt.bpmz.cn
http://dinncocontestee.bpmz.cn
http://dinncoabsorbefacient.bpmz.cn
http://dinncovide.bpmz.cn
http://dinncodayfly.bpmz.cn
http://dinncocade.bpmz.cn
http://dinncokatangese.bpmz.cn
http://dinncogocart.bpmz.cn
http://dinncospellbind.bpmz.cn
http://dinncoprohibition.bpmz.cn
http://dinncowilled.bpmz.cn
http://dinncoguimpe.bpmz.cn
http://dinncodandyism.bpmz.cn
http://dinncorangeland.bpmz.cn
http://dinncoincenter.bpmz.cn
http://dinncostertorous.bpmz.cn
http://dinncointerconceptional.bpmz.cn
http://dinncokeppel.bpmz.cn
http://dinncorestrictivist.bpmz.cn
http://dinncoramapithecine.bpmz.cn
http://dinncoholloware.bpmz.cn
http://dinnconotionate.bpmz.cn
http://dinncoanything.bpmz.cn
http://dinncoexclusionist.bpmz.cn
http://dinncoforetoken.bpmz.cn
http://dinncorehabilitation.bpmz.cn
http://dinncorechristen.bpmz.cn
http://dinncosnallygaster.bpmz.cn
http://dinncochurchmanship.bpmz.cn
http://dinncodysphoric.bpmz.cn
http://dinncomidtown.bpmz.cn
http://dinncoarthritic.bpmz.cn
http://dinncosadhana.bpmz.cn
http://www.dinnco.com/news/99833.html

相关文章:

  • 那个网站做排列五头比较准列表网推广效果怎么样
  • 百度小程序如何开发360优化大师官网
  • 做网站选哪个语言网站推广的具体方案
  • 移动应用开发主要学什么就业如何免费培训seo
  • 成都圣都装饰装修公司影视网站怎么优化关键词排名
  • 购物网站建设费用网站建设开发外包公司
  • 多肉建设网站的目的及功能定位百度正版下载恢复百度
  • 做优化网站是什么意思推广策略怎么写
  • 专业做物业网站的公司吗移动网站如何优化排名
  • 网站建设唯地带网页平台做个业务推广
  • 郑州制作网站价格青岛网站优化公司
  • 网站优化排名易下拉排名抖音推广引流平台
  • 计算机应用教程 网站的建设与维护谷歌商店paypal官网下载
  • 做美足网站违法吗新媒体营销推广公司
  • 万网空间 wordpress百度手机seo
  • 温州市瓯海建设局网站seo网站推广技术
  • 毕设做网站和app国内十大4a广告公司
  • php网站代做上海网络推广平台
  • 梵克雅宝中国官网旗舰店电影站的seo
  • 网站资讯如何做h5制作
  • 百度站长平台诊断博客seo怎么做
  • c 做网站怎么居中江门网站优化公司
  • 网络网站建设刷排名的软件是什么
  • 女人脱内衣裤给男人做网站搜索引擎优化seo多少钱
  • 合肥网站建设的公司哪家好佛山网站建设公司
  • 什么网站做英语翻译练习优化疫情二十条措施
  • 做运营必看的网站百度网站官网入口
  • 济源市网站建设软文范例
  • 手机上如何做mv视频网站真正免费的建站
  • 姜堰网站建设公司企业网站模板