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

做外贸网站那家专业单页网站模板做seo

做外贸网站那家专业,单页网站模板做seo,上海网站推广排名公司,专业展馆展厅设计目录 FreeRTOS学习第6篇--任务状态挂起恢复删除等操作任务的状态设计实验IRReceiver_Task任务相关代码片段实验现象本文中使用的测试工程 FreeRTOS学习第6篇–任务状态挂起恢复删除等操作 本文目标:学习与使用FreeRTOS中的几项操作,有挂起恢复删除等操作…

目录

  • FreeRTOS学习第6篇--任务状态挂起恢复删除等操作
    • 任务的状态
    • 设计实验
    • IRReceiver_Task任务相关代码片段
    • 实验现象
    • 本文中使用的测试工程

FreeRTOS学习第6篇–任务状态挂起恢复删除等操作

本文目标:学习与使用FreeRTOS中的几项操作,有挂起恢复删除等操作。

按照本文的描述,应该可以跑通实验并举一反三。

本文实验条件:拥有C语言基础,装有编译和集成的开发环境,比如:Keil uVision5

任务的状态

任务的状态

  • 就绪态(Ready):任务已经准备好运行,只等待调度器分配CPU时间片给它。就绪态的任务按照优先级排列在就绪列表中,优先级越高的任务越靠前。
  • 运行态(Running):任务正在执行,占用CPU资源。同一时刻,只有一个任务处于运行态,除非使用多核处理器。
  • 阻塞态(Blocked):任务因为等待某个事件(如信号量、队列、延时等)而无法运行,被放入阻塞列表中。阻塞态的任务不会占用CPU资源,也不会参与调度。当等待的事件发生时,任务会从阻塞列表中移出,重新进入就绪列表,等待调度。比如:使用函数vTaskDelay()或vTaskDelayUntil()就是进入阻塞状态,或者xSemaphoreTake()等函数也是进阻塞状态。
  • 挂起态(Suspended):任务被主动暂停,无论是否有事件发生,都不会运行,被放入挂起列表中。挂起态的任务不会占用CPU资源,也不会参与调度。只有当任务被主动恢复时,才会从挂起列表中移出,重新进入就绪列表,等待调度。比如:直接调用vTaskSuspend()函数。
  • 删除态:任务被主动删除,不再存在于任何列表中,也不会再运行。删除态的任务的内存资源会被释放,不会占用任何资源。

设计实验

本次实验就是设计一个实验,来实现任务的一些操作,有删除任务,恢复任务。在本次实验中,将使用两个按键,一个按键用作删除任务,一个按键用作挂起和恢复。基于这个实验情况,我在我的硬件平台进行实验。

IRReceiver_Task任务相关代码片段

void IRReceiver_Task(void * pvParameters)
{int bRunning;uint8_t dev, data;OLED_Init();IRReceiver_Init();while(1){OLED_ShowString(0,0,"IR Receiver: ",16);OLED_ShowString(0,16,"Device  Data",16);if (!IRReceiver_Read(&dev, &data)){OLED_ShowString(0, 32, "                ",16);OLED_ShowNum(0,32,dev,4,16);OLED_ShowNum(64,32,data,4,16);OLED_ShowString(0, 48, "                ",16);OLED_ShowString(0,48,"Key name: ",16);OLED_ShowString(80,48,(u8 *)IRReceiver_CodeToString(data),16);// 某个按键值  "1"  if(data == 48){// 创建闪灯任务if( ledTaskHandle == NULL){ledTaskHandle = osThreadNew(LedTask, NULL, &ledTask_attributes);bRunning = 1;}else{/* 要么suspend要么resume */if (bRunning){vTaskSuspend(ledTaskHandle);  // 挂起LED任务bRunning = 0;}else{vTaskResume(ledTaskHandle);   // 恢复LED任务bRunning = 1;}}}// 某个按键 "2"if(data == 24) {// 删除LED 任务if(ledTaskHandle != NULL){vTaskDelete(ledTaskHandle);ledTaskHandle = NULL;  // 进行清理操作,否则会莫名奇妙的进入HardFault_Handler错误}}}OLED_Refresh(); // 刷新屏幕}}
xTaskCreate( IRReceiver_Task, "IRReceiver_Task", configMINIMAL_STACK_SIZE, NULL, osPriorityNormal, NULL );
osThreadId_t ledTaskHandle;
const osThreadAttr_t ledTask_attributes = {.name = "ledTask",.stack_size = 128 * 4,.priority = (osPriority_t) osPriorityNormal,
};
void LedTask(void *argument)
{/* USER CODE BEGIN StartDefaultTask *//* Infinite loop */for(;;){HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);HAL_GPIO_TogglePin(LED3_GPIO_Port,LED3_Pin);mdelay(100);}/* USER CODE END StartDefaultTask */
}

实验现象

下载代码到板子上,当我按下1号按钮时,会创建LedTask的任务,当我继续按下1号按钮时,会把LedTask进行挂起或恢复,如果是挂起的状态则进行恢复,如果是恢复的状态则进行挂起,当我按下2号按钮时会把LedTask的任务进行删除,通过这些代码片段就实现了我们本次设计的实验,完美的实现了挂起恢复删除等操作。

本文中使用的测试工程

http://www.yayakq.cn/news/360856/

相关文章:

  • 知名建站企业哪家好山东省住房和城市建设厅网站
  • 整人网站怎么做汕头做网站优化公司
  • 什么网站做简历免费下载那里有做网站的
  • 小公司网站维护搭建之星
  • 宁波网站推广找哪家焦作建设银行网站
  • 网站版块策划清浦网站建设
  • 完全菜鸟七天学会建网站明月 WordPress
  • 买了个网站源码后要怎么用网站怎样改logo
  • 网站的基本功能上海知名网站开发公司
  • 大型网站开发 赚钱如何给网站增加外链
  • 网站建设后台cms管理系统方案南京网站定制南京
  • wordpress微信免签约支付插件智能网站优化 cms 加盟
  • discuz做的网站上传到网站空间的文件小说阅读网站开发视频
  • 泉州网站网站建设商标注册申请入口
  • 响应式网站开发工具简约的网站建设
  • 网站开发 避免 字段变化 代码企业移动网站制作
  • 网站下载下来怎么做后台深圳专门做网站的公司有哪些
  • 短网址生成网站源码天津平台网站建设设计
  • 喊人做网站需要注意些什么施工员证查询官方网站
  • 蒙古网站后缀wordpress二次元动漫
  • 电商网站设计公司排行榜页面设计思路怎么写
  • 罗琳做的网站我要软文网
  • 南京百度网站建设网站怎样做地理位置定位
  • 山西省建设工程信息网站天津和平做网站多少钱
  • 网站平台构建建设机械网站案例分析
  • 提升访问境外网站速度长沙企业建站
  • 永川区网站建设刚做的网站搜索不到
  • 公司网站管理制度建设官方网站企业网银登录
  • 商品展示网站源码长沙app制作
  • 网站开发用哪个程序wordpress ssl 设置