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

长春代做网站汕头如何建设网站设计

长春代做网站,汕头如何建设网站设计,泰安人才网招聘信息网电焊工,济南网站建设优化百家号STM32 CubeMX Freertos STM32 CubeMX (Freertos任务:创建、删除、挂起、恢复) STM32 CubeMX Freertos前言一、STM32 CubeMX 配置时钟树配置HAL时基选择TIM1(不要选择滴答定时器;滴答定时器留给OS系统做时基&#xff09…

STM32 CubeMX Freertos


STM32 CubeMX (Freertos任务:创建、删除、挂起、恢复)

  • STM32 CubeMX Freertos
  • 前言
  • 一、STM32 CubeMX 配置
    • 时钟树配置
    • HAL时基选择TIM1(不要选择滴答定时器;滴答定时器留给OS系统做时基)
    • 使能串口,用于用于检查实验现象
    • 使用STM32 CubeMX 库,配置Freertos
    • 创建任务
  • 二、实验一:创建两个任务,LED闪烁
  • 实验现象
    • 使用 vTaskDelayUntil()绝对延时
  • 三,实验二:删除LED1任务和自身任务
  • 实验现象
  • 四,实验三:任务的挂起和恢复
  • 实验现象
  • 总结


前言

学习使用Freertos第一步
FreeRTOS 任务管理,您需要掌握以下几个关键函数:

1. xTaskCreate():用于创建一个任务,需要指定任务函数、任务名称、任务栈大小和优先级等参数。
2. vTaskDelete():用于删除一个任务,可以由任务自身或其他任务调用。
3. vTaskDelay():用于使当前任务进入阻塞状态,延迟一段时间后再继续执行。
4. vTaskDelayUntil():类似于vTaskDelay(),但是可以实现周期性的延迟,使任务按照指定的时间间隔执行。
5. vTaskSuspend()和vTaskResume():用于暂停和恢复一个任务的执行,暂停后的任务将不会被调度执行。
6. xTaskResumeFromISR():在中断服务程序中恢复一个被挂起(暂停)的任务。
7. uxTaskPriorityGet()和vTaskPrioritySet():用于获取和设置任务的优先级。
8. uxTaskGetStackHighWaterMark():用于获取任务栈的剩余可用空间大小,可以用来检查任务是否使用了过多的栈空间。


一、STM32 CubeMX 配置

时钟树配置

在这里插入图片描述

HAL时基选择TIM1(不要选择滴答定时器;滴答定时器留给OS系统做时基)

在这里插入图片描述

使能串口,用于用于检查实验现象

在这里插入图片描述

使用STM32 CubeMX 库,配置Freertos

选择CMISS_V1接口就可以满足Freertos接口;且代码量比CMISS_V2小(CMISS_V2支持更多的RTOS接口,所以代码量比CMISS_V1多)
在这里插入图片描述

创建任务

请添加图片描述

二、实验一:创建两个任务,LED闪烁

在这里插入图片描述

代码如下(示例):

void LED1Task(void const * argument)
{/* USER CODE BEGIN LED1Task *//* Infinite loop */for(;;){HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13,1);printf("LED灭\r\n");		// printf输出字符串osDelay(1000);}/* USER CODE END LED1Task */
}/* USER CODE BEGIN Header_LED2Task */
/**
* @brief Function implementing the LED2 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_LED2Task */
void LED2Task(void const * argument)
{/* USER CODE BEGIN LED2Task *//* Infinite loop */for(;;){HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13,0);printf("LED亮\r\n");		// printf输出字符串osDelay(2000);}/* USER CODE END LED2Task */
}

实验现象

请添加图片描述
在这里插入图片描述

使用 vTaskDelayUntil()绝对延时

使能 vTaskDelayUntil函数
在这里插入图片描述

void LED1Task(void const * argument)
{/* USER CODE BEGIN LED1Task */TickType_t xlaswketime;xlaswketime = xTaskGetTickCount();//获取进入的时间/* Infinite loop */for(;;){HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13,1);printf("LED灭\r\n");		// printf输出字符串vTaskDelayUntil(&xlaswketime,1000);}/* USER CODE END LED1Task */
}/* USER CODE BEGIN Header_LED2Task */
/**
* @brief Function implementing the LED2 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_LED2Task */
void LED2Task(void const * argument)
{/* USER CODE BEGIN LED2Task */TickType_t xlaswketime;xlaswketime = xTaskGetTickCount();//获取进入的时间/* Infinite loop */for(;;){HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13,0);printf("LED亮\r\n");		// printf输出字符串vTaskDelayUntil(&xlaswketime,2000);}/* USER CODE END LED2Task */
}


三,实验二:删除LED1任务和自身任务

/* USER CODE END Header_LED1Task */
void LED1Task(void const * argument)
{/* USER CODE BEGIN LED1Task */TickType_t xlaswketime;xlaswketime = xTaskGetTickCount();//获取进入的时间/* Infinite loop */for(;;){HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13,1);vTaskDelayUntil(&xlaswketime,500);HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13,0);vTaskDelayUntil(&xlaswketime,500);}/* USER CODE END LED1Task */
}/* USER CODE BEGIN Header_LED2Task */
/**
* @brief Function implementing the LED2 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_LED2Task */
void LED2Task(void const * argument)
{/* USER CODE BEGIN LED2Task */TickType_t xlaswketime;xlaswketime = xTaskGetTickCount();//获取进入的时间printf("5s后删除LED1任务,再5S删除自身任务\r\n");		// printf输出字符串/* Infinite loop */for(;;){vTaskDelayUntil(&xlaswketime,5000);//5秒vTaskDelete(LED1Handle);printf("删除LED闪烁任务\r\n");		// printf输出字符串vTaskDelayUntil(&xlaswketime,5000);//5秒printf("删除自身任务\r\n");		// printf输出字符串vTaskDelete(NULL);printf("正常情况不会打印这段话\r\n");		// printf输出字符串}/* USER CODE END LED2Task */
}

实验现象

在这里插入图片描述

四,实验三:任务的挂起和恢复

void LED1Task(void const * argument)
{/* USER CODE BEGIN LED1Task */TickType_t xlaswketime;xlaswketime = xTaskGetTickCount();//获取进入的时间/* Infinite loop */for(;;){HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13,1);vTaskDelayUntil(&xlaswketime,500);HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13,0);vTaskDelayUntil(&xlaswketime,500);}/* USER CODE END LED1Task */
}/* USER CODE BEGIN Header_LED2Task */
/**
* @brief Function implementing the LED2 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_LED2Task */
void LED2Task(void const * argument)
{/* USER CODE BEGIN LED2Task */TickType_t xlaswketime;xlaswketime = xTaskGetTickCount();//获取进入的时间printf("5s后暂停,再5S恢复\r\n");		// printf输出字符串/* Infinite loop */for(;;){vTaskDelayUntil(&xlaswketime,5000);//5秒vTaskSuspend(LED1Handle);printf("暂停LED闪烁任务\r\n");		// printf输出字符串vTaskDelayUntil(&xlaswketime,5000);//5秒vTaskResume(LED1Handle);printf("恢复LED闪烁任务\r\n");		// printf输出字符串}/* USER CODE END LED2Task */
}

实验现象

在这里插入图片描述

总结

学会 任务管理: 需要掌握并熟练任务的创建、删除、挂起、恢复和切换等操作,以及任务的优先级和调度机制。

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

相关文章:

  • 中大型企业网络组网案例官网优化 报价
  • 网站图片设置链接公司网站建设的系统功能需求
  • 在家做网站或ps挣钱接活爱站网seo综合查询工具
  • 做网站设计的公司有哪些搜索引擎网站录入
  • 网站收录是什么意思wordpress 在线购物
  • 阿里百秀wordpress大前端seo专员工作内容
  • 一个做问卷调查的网站大连seo网站
  • 网站布局结构网站建设竞标书
  • 做分析图超牛的地图网站ps酒店网站模板
  • 企业做定制网站的好处济南网站设计建设
  • 网站备案信息是什么台州网站设计公司
  • 电子商务网站设计物流方案智慧宁乡app
  • 网站开发包括软件吗上线了小程序制作平台
  • 网站推广 昆明怎么建设网站电话
  • 网站seo数据分析东莞有哪些公司
  • 佛山网站制作profile wordpress
  • 小地方网站建设公司好设计工作室logo
  • 深圳网站设计机构wordpress账号创建
  • 网站最新发布址阿里做网站
  • mip网站有什么好处网络短剧免费观看
  • 网站建设 响应式 北京襄阳做网站
  • 网络服务商提供的adsl上网帐号及口令化工seo顾问
  • .net商城网站模板下载做外国网站买域名
  • wordpress是建站最快的泽库网站建设公司
  • 建立网站的几个步骤广州前端培训机构
  • 做响应式网站的常用尺寸网站建设_聊城
  • 网站建设市场烟台企业做网站
  • 建设部网站投诉核查企业名单比尤果网做的好的网站
  • 福田企业网站推广哪个好建设网站iss
  • 莱芜网站优化费用单县网页设计