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

网站制作字体网络教学平台

网站制作字体,网络教学平台,海阳做网站,手机软件编程对于FreeRTOS中的操作,最常用的就是创建、删除、暂停和恢复任务。 此次实验目标: 1.创建任务一:LED1每间隔1秒闪烁一次,并通过串口打印 2.创建任务二:LED2每间隔0.5秒闪烁一次,并通过串口打印 3.创建任…

对于FreeRTOS中的操作,最常用的就是创建、删除、暂停和恢复任务。

此次实验目标:

1.创建任务一:LED1每间隔1秒闪烁一次,并通过串口打印

2.创建任务二:LED2每间隔0.5秒闪烁一次,并通过串口打印

3.创建任务三:通过KEY1实现对任务一的创建和删除。

按键按下以后如果有任务一就删除任务一,没有任务一就创建任务一。

4. 创建任务四:通过KEY2实现对任务二的暂停和恢复。

按键按下以后如果任务二在执行就暂停任务二,任务二在暂停就恢复任务二。

实现方式:

使用正点原子探索者,主控芯片为STM32F407ZGT6。

一、主要的电气原理图如下:

 

二、CubeMX配置

1.设置FreeRTOS

2.设置usart1

波特率115200

3.设置时钟,选择外部高速时钟

配置时钟树如下

4.注意一定要修改时基

5.生成代码

三、编写代码(都在freertos.c中写)

1.串口重定向

#include <stdio.h>// 包含标准输入输出头文件int fputc(int ch,FILE *f)
{
//采用轮询方式发送1字节数据,超时时间设置为无限等待
HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,HAL_MAX_DELAY);
return ch;
}
int fgetc(FILE *f)
{
uint8_t ch;
// 采用轮询方式接收 1字节数据,超时时间设置为无限等待
HAL_UART_Receive( &huart1,(uint8_t*)&ch,1, HAL_MAX_DELAY );
return ch;
}

2.实现任务的代码

void MX_FREERTOS_Init(void) {/* USER CODE BEGIN Init *//* USER CODE END Init *//* USER CODE BEGIN RTOS_MUTEX *//* add mutexes, ... *//* USER CODE END RTOS_MUTEX *//* USER CODE BEGIN RTOS_SEMAPHORES *//* add semaphores, ... *//* USER CODE END RTOS_SEMAPHORES *//* USER CODE BEGIN RTOS_TIMERS *//* start timers, add new ones, ... *//* USER CODE END RTOS_TIMERS *//* USER CODE BEGIN RTOS_QUEUES *//* add queues, ... *//* USER CODE END RTOS_QUEUES *//* Create the thread(s) *//* definition and creation of LED1 */osThreadDef(LED1, led1, osPriorityNormal, 0, 128);LED1Handle = osThreadCreate(osThread(LED1), NULL);/* definition and creation of LED2 */osThreadDef(LED2, led2, osPriorityIdle, 0, 128);LED2Handle = osThreadCreate(osThread(LED2), NULL);/* definition and creation of KEY1 */osThreadDef(KEY1, key1, osPriorityIdle, 0, 128);KEY1Handle = osThreadCreate(osThread(KEY1), NULL);/* definition and creation of KEY2 */osThreadDef(KEY2, key2, osPriorityIdle, 0, 128);KEY2Handle = osThreadCreate(osThread(KEY2), NULL);/* USER CODE BEGIN RTOS_THREADS *//* add threads, ... *//* USER CODE END RTOS_THREADS */}/* USER CODE BEGIN Header_led1 */
/*** @brief  Function implementing the LED1 thread.* @param  argument: Not used* @retval None*/
/* USER CODE END Header_led1 */
void led1(void const * argument)
{/* USER CODE BEGIN led1 *//* Infinite loop */for(;;){printf("led1\n\r");HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_9);osDelay(1000);}/* USER CODE END led1 */
}/* USER CODE BEGIN Header_led2 */
/**
* @brief Function implementing the LED2 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_led2 */
void led2(void const * argument)
{/* USER CODE BEGIN led2 *//* Infinite loop */for(;;){printf("led2\n\r");HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_10);osDelay(500);}/* USER CODE END led2 */
}/* USER CODE BEGIN Header_key1 */
/**
* @brief Function implementing the KEY1 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_key1 */
void key1(void const * argument)
{/* USER CODE BEGIN key1 *//* Infinite loop */for(;;){if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0){osDelay(20);//防误触if(LED1Handle==NULL){printf("key1==creat\n\r");osThreadDef(LED1, led1, osPriorityNormal, 0, 128);LED1Handle = osThreadCreate(osThread(LED1), (void*)"new task1");}else{vTaskDelete(LED1Handle);LED1Handle=NULL;printf("key1==delete\n\r");}}}/* USER CODE END key1 */
}/* USER CODE BEGIN Header_key2 */
/**
* @brief Function implementing the KEY2 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_key2 */
void key2(void const * argument)
{/* USER CODE BEGIN key2 */char Flag=0;/* Infinite loop */for(;;){if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3)==0){osDelay(20);//防误触if(Flag==0){printf("key2 suspend\n\r");vTaskSuspend(LED2Handle);Flag=1;}else{vTaskResume(LED2Handle);printf("key2  resume \n\r");Flag=0;}}}/* USER CODE END key2 */
}/* Private application code --------------------------------------------------*/

注意:任务被删除时,句柄不会删除,需要手动清空。

http://www.bdqn1.cn/news/271.html

相关文章:

  • 哈尔滨专业制作网站四平网络推广
  • 如何设置网站logo在百度平台如何做营销
  • 浙江建设银行网站推广项目
  • 公司自己做网站流程和备案百度中心
  • 打开汽车之家网页版搜索引擎优化的基础是什么
  • 专门做音乐的网站百度竞价排名规则
  • 做数据图网站企业网站制作步骤
  • 淮北网站建设windows7优化大师
  • 手机网站禁止缩放百度广告推广价格
  • 赣州网站建设 赣州网页设计seo是什么职位的简称
  • 公司网站建设价格推广软件赚钱的app
  • 做马来西亚生意的网站近10天的时事新闻
  • dedecms5.7装饰公司网站模板专门看网站的浏览器
  • windows图标wordpress历下区百度seo
  • 微信网站开发用什么语言网络推广的优势
  • 可以自己做漫画的网站百度客服24小时电话
  • 欧莱雅的网络营销策划方案seo技术培训班
  • 代理备案网站seo专员是什么职业
  • 怎样把自己做的网站上传2022年最好用的搜索引擎
  • 跨境独立网站怎么建设关键词组合工具
  • 部门网站开发搜索引擎推广的常见形式有
  • 技术支持 武汉网站优化windows优化大师在哪里
  • 淘宝开店流程步骤图片短视频seo代理
  • 手机壳在线设计网站线上销售平台
  • 企业主体负责人和网站负责人搜索引擎推广方式有哪些
  • 代理手游平台哪家靠谱谷歌seo视频教程
  • 上海市网站seo公司个人网页制作成品欣赏
  • 青岛做网站建设的公司哪家好如何制作自己的网页链接
  • 衡水移动端网站建设优化技术
  • 自己做网站内容读取太慢网站流量