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

怎么用一个主机做多个网站wordpress如何建立网站

怎么用一个主机做多个网站,wordpress如何建立网站,wordpress导航横着,哈尔滨网站建设市场【嵌入式——FreeRTOS】任务 任务创建和删除动态方式创建任务静态方式创建任务 删除任务任务切换调度器任务切换流程 任务挂起任务恢复相关API函数 任务创建和删除 动态方式创建任务 任务的任务控制块以及任务的栈空间所需的内存#xff0c;均由freeRTOS从freeRTOS管理的堆中… 【嵌入式——FreeRTOS】任务 任务创建和删除动态方式创建任务静态方式创建任务 删除任务任务切换调度器任务切换流程 任务挂起任务恢复相关API函数 任务创建和删除 动态方式创建任务 任务的任务控制块以及任务的栈空间所需的内存均由freeRTOS从freeRTOS管理的堆中分配。此函数创建任务会立刻进入就绪态由任务调度器调度运行。 任务的优先级值越大优先级越高。 函数 xTaskCreate(); //返回值为pdPASS任务创建成功。 //返回值为errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY任务创建失败BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, //指向任务函数的指针const char * const pcName, //任务名字 最大长度configMAX_TASK_NAME_LEN(20)const configSTACK_DEPTH_TYPE usStackDepth, //任务堆栈大小 字为单位void * const pvParameters, //传递给任务函数的参数UBaseType_t uxPriority, //任务优先级 范围 0 ~ configMAX_PRIORITIES(32)-1 TaskHandle_t * const pxCreatedTask ) //任务句柄任务的任务控制块示例 static void udpserver_sendto_client (void* argument){}static TaskHandle_t udpserver_tid;#define UDPSERVER_THREAD_NAME task name #define UDPSERVER_THREAD_STKSZ (configMINIMAL_STACK_SIZE * 4) #define UDPSERVER_THREAD_PRIO (tskIDLE_PRIORITY 3)BaseType_t ret xTaskCreate(udpserver_sendto_client, UDPSERVER_THREAD_NAME, UDPSERVER_THREAD_STKSZ, NULL, UDPSERVER_THREAD_PRIO, udpserver_tid); 实现动态创建任务流程 将FreeRTOSConfig.h文件中的configSUPPORT_DYNAMIC_ALLOCATION宏配置为1定义函数入口参数编写任务函数。 动态创建任务内部实现 申请堆栈内存和任务控制块内存TCB结构体成员赋值把前面申请的堆栈地址赋值给控制块的堆栈成员初始化控制块中的成员添加新任务到就绪列表。 静态方式创建任务 任务的任务控制块以及任务的栈空间所需的内存需用户分配提供。 函数 xTaskCreateStatic(); //返回值为句柄或者其他值任务创建成功。 //返回值为NULL任务创建失败。TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode, //指向任务函数的指针const char * const pcName, //任务名字 最大长度configMAX_TASK_NAME_LEN(20)const uint32_t ulStackDepth, //任务堆栈大小 字为单位void * const pvParameters, //传递给任务函数的参数UBaseType_t uxPriority, //任务优先级 范围 0 ~ configMAX_PRIORITIES(32)-1 StackType_t * const puxStackBuffer, //任务堆栈一般为数组由用户分配StaticTask_t * const pxTaskBuffer ) //任务控制块指针由用户分配PRIVILEGED_FUNCTION;示例 #define STACK_SIZE 200//空闲任务配置 StaticTask_t idle_task_tcb; StackType_t idle_task_stack[configMINIMAL_STACK_SIZE];//软件定时器任务配置 StaticTask_t time_task_tcb; StackType_t time_task_stack[configTIMER_TASK_STACK_DEPTH];StaticTask_t xTaskBuffer; StackType_t xStack[ STACK_SIZE ];//空闲任务内存分配 void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer,StackType_t ** ppxIdleTaskStackBuffer,uint32_t * pulIdleTaskStackSize ) {*ppxIdleTaskTCBBuffer idle_task_tcb;*ppxIdleTaskStackBuffer idle_task_stack;*pulIdleTaskStackSize configMINIMAL_STACK_SIZE;}//软件定时器内存分配 void vApplicationGetTimerTaskMemory( StaticTask_t ** ppxTimerTaskTCBBuffer,StackType_t ** ppxTimerTaskStackBuffer,uint32_t * pulTimerTaskStackSize ) {*ppxTimerTaskTCBBuffer time_task_tcb;*ppxTimerTaskStackBuffer time_task_stack;pulTimerTaskStackSize configTIMER_TASK_STACK_DEPTH;}void vTaskCode( void * pvParameters ){}TaskHandle_t xHandle xTaskCreateStatic(vTaskCode, // Function that implements the task.NAME, // Text name for the task.STACK_SIZE, // Stack size in words, not bytes.( void * ) 1, // Parameter passed into the task.tskIDLE_PRIORITY,// Priority at which the task is created.xStack, // Array to use as the tasks stack.xTaskBuffer ); // Variable to hold the tasks data structure.静态创建任务使用流程 将FreeRTOSConfig.h文件中的configSUPPORT_STATIC_ALLOCATION宏配置为1 定义空闲任务和定时器任务的任务堆栈即TCB 实现两个接口函数 vApplicationGetIdleTaskMemory()vApplicationGetTimerTaskMemory()可选的 定义函数入口参数 编写任务函数 静态创建任务内部实现 TCB结构体成员赋值添加新任务到就绪列表 删除任务 用于删除已经被创建的任务。被删除的任务将从就绪态任务列表阻塞态任务列表挂起态任务列表和事件列表中移除。 函数 vTaskDelete();void vTaskDelete( TaskHandle_t xTaskToDelete ) //xTaskToDelete 待删除的任务句柄注意 当传入的参数为NULL则代表删除任务自身(当前正在运行的任务)。空闲任务会负责释放被删除任务中由系统分配的内存但是由用户在任务删除前申请的内存则需要由用户在任务被删除前提前释放否则将导致内存泄漏。 删除任务流程 将INCLUDE_vTaskDelete宏配置为1入口参数输入需要删除的任务句柄(NULL代表自身) 删除任务内部实现过程 获取所要删除任务的控制块 将被删除的任务移除所在列表 判断所需删除的任务 删除任务自身需先添加到等待删除列表内存释放将在空闲任务进行。删除其他任务释放内存任务数量– 更新下个任务的阻塞时间 任务切换 调度器 实现任务间的切换。本质就是CPU寄存器的切换 //启动任务开启调度 vTaskStartScheduler();当由任务A切换到任务B时主要分为两步 第一步需暂停任务A的执行并将此时任务A的寄存器保存到任务堆栈这个过程叫做保存现场。 第二步将任务B的各个寄存器值(被存于任务堆栈中)恢复到CPU寄存器中这个过程叫做恢复现场。对任务A保存现场对任务B恢复现场这个过程被称为上下文切换。 任务切换流程 触发PendSV中断当前的psp是正在运行的任务的栈指针读取当前psp进程指针存入r0压栈(保存现场)获取当前最高优先级任务的任务控制块出栈(恢复现场)更新切换后的任务的栈指针给pspbx r14指向新任务函数 PendSV中断如何触发 滴答定时器中断调用。执行FreeRTOS提供的相关API函数portYIELD(); 任务挂起 挂起任务 函数 此函数用于挂起任务使用时将FreeRTOSConfig.h文件中宏INCLUDE_vTaskSuspend配置为1。 无论优先级如何被挂起的任务都将不再被执行直到任务被恢复。 当传入参数为NULL则代表挂起任务自身(当前正在运行的任务)。 void vTaskSuspend( TaskHandle_t xTaskToSuspend ) PRIVILEGED_FUNCTION; //xTaskToSuspend 待挂起任务的句柄任务恢复 恢复被挂起的任务 函数 此函数用于恢复任务使用时将FreeRTOSConfig.h文件中宏INCLUDE_vTaskSuspend配置为1。 任务无论被挂起多少次只需在任务中调用vTaskResume()恢复一次就可以继续运行且被恢复的任务会进入就绪状态。 在中断中恢复被挂起的任务。带有“FromISR”后缀是在终端函数中专用的API函数 void vTaskResume( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION; //xTaskToResume 待恢复任务的任务句柄此函数用于恢复任务使用时将FreeRTOSConfig.h文件中宏INCLUDE_vTaskSuspend配置为1宏INCLUDE_xTaskResumeFromISR配置为1。 被恢复的任务的优先级大于当前执行的任务的优先级就会返回pdTRUE需要手动执行任务切换(portYIELD_FROM_ISR()函数)。 中断服务程序中要调用freeRTOS的API函数则中断优先级不能高于freeRTOS所管理的最高优先级(5~15)。 BaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION; //xTaskToResume 待恢复任务的任务句柄 //返回值 pdTRUE 任务恢复后需要进行任务切换 pdFALSE任务恢复后不需要进行任务切换相关API函数 函数描述uxTaskPriorityGet()获取任务优先级vTaskPrioritySet()设置任务优先级uxTaskGetNumberOfTasks()获取系统中任务的数量uxTaskGetSystemState()获取所有任务状态信息vTaskGetInfo()获取指定单个任务信息xTaskGetCurrentTaskHandle()获取当前任务的任何句柄xTaskGetHandle()根据任务名获取该任务的任何句柄uxTaskGetStackHighWaterMark()获取任务的任务栈历史剩余最小值eTaskGetState()获取任务状态vTaskList()以表格形式获取所有任务的信息vTaskGetRunTimeStats()获取任务的运行时间 更多API请查看官网
http://www.hkea.cn/news/14374122/

相关文章:

  • 在线制作插画网站手表网站app推荐
  • 做门户网站私活多少钱成都公众号小程序开发
  • 洛阳免费网站建设小卖部做网站
  • 怎么用织梦做自适应网站企业网站建设杭州公司
  • 网站的支付系统怎么做的腾讯cdc用wordpress
  • 石家庄网站建设找汉狮wordpress主题仿
  • 如何选择镇江网站建设h5网站案例
  • 西安电商平台网站建设wordpress 4评测
  • 怎么创建教育网站重庆渝兴建设有限公司网站
  • 网站开发招聘甘肃省住房和城乡建设部网站
  • 梵高网站建设常熟智能网站建设
  • 怎么设置网站关键词长春市人才网
  • 长治建立公司网站的步骤精品网的功能和服务
  • 公众号江苏建设信息网站公司网站开源源码
  • 有哪些做特卖的网站网站和后台
  • 网站建设报价明细及方案演示网站怎么做
  • 在一家传媒公司做网站编辑_如何?住建部城乡建设网站
  • 给我一个网站贴吧定制柜设计
  • 如何申请建设个人网站湖北做网站多少钱
  • 张掖做网站基层科普网站建设的现状
  • 无锡做网站6青岛网站建设公司招聘
  • 石家庄网站建设兼职旅游网页设计说明书
  • 成都建设局网站深圳企业公司网站设计
  • 辽宁朝阳网站建设wordpress 获取插件目录下
  • 无锡网站制作优化推广网站建设免责申明书
  • 个人网站建设课程介绍国内免费可用域名
  • 淄博什么兼职的网站建设中国建设银行网站分析
  • 网站 营销中英文网站英文
  • 购物网站设计流程图阿里云服务器网站目录
  • 教育网站建站网店运营数据分析