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

建设银行手机银行登录网站免费海报模板网站

建设银行手机银行登录网站,免费海报模板网站,如何创建公司网站,wordpress cms原创STM32f103C8T6 FreeRTOS - 按键实现任务挂起和恢复,按键按下时,LED任务执行,led闪烁,当led任务挂起,Led停止闪烁。1.STM32CubeMX 创建任务1.1配置GPIO按键配置外部中断触发GPIO绿灯,红灯配置输出模式1.2配置…

STM32f103C8T6 FreeRTOS - 按键实现任务挂起和恢复,按键按下时,LED任务执行,led闪烁,当led任务挂起,Led停止闪烁。

1.STM32CubeMX 创建任务

1.1配置GPIO

按键配置外部中断触发

GPIO绿灯,红灯配置输出模式

1.2配置FreeRTOS

创建按键与LED任务,按键优先级正常,LED优先级稍微低。

2.Keil编写

2.1 外部中断回调

在配置文件中stm32f1xx_hal_gpio.c 中,调用HAL_GPIO_EXTI_Callback

/*** @brief  EXTI line detection callbacks.* @param  GPIO_Pin: Specifies the pins connected EXTI line* @retval None*/
__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{/* Prevent unused argument(s) compilation warning */UNUSED(GPIO_Pin);/* NOTE: This function Should not be modified, when the callback is needed,the HAL_GPIO_EXTI_Callback could be implemented in the user file*/
}

2.2 gpio.c按键实现Led颜色切换

//按键检测回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{if(Key1_Pin == GPIO_Pin)                                                //判断按下的GPIO{if ( HAL_GPIO_ReadPin(GPIOA,GPIO_Pin) == GPIO_PIN_RESET)             //按下按键,导通{HAL_Delay(10);                                                   //软件去抖动  if( HAL_GPIO_ReadPin(GPIOA,GPIO_Pin) == GPIO_PIN_RESET){HAL_GPIO_WritePin(GPIOB,Led_Red_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOB,Led_Green_Pin,GPIO_PIN_SET);}}else{if( HAL_GPIO_ReadPin(GPIOA,GPIO_Pin) == GPIO_PIN_SET)        // 高电平,未准备好   {   HAL_Delay(10);                                            //软件去抖动  if( HAL_GPIO_ReadPin(GPIOA,GPIO_Pin) == GPIO_PIN_SET){                HAL_GPIO_WritePin(GPIOB,Led_Red_Pin,GPIO_PIN_SET);      //关闭红灯HAL_GPIO_WritePin(GPIOB,Led_Green_Pin,GPIO_PIN_RESET);  //开启绿灯}}}}
}

3.实现任务挂起与恢复

3.1任务挂起和恢复函数

3.1.1 函数vTaskSuspend()

此函数用于将某个任务设置为挂起状态,进入挂起态的任务永远不会进入运行态。退出挂起态的唯一方法就是调用任务恢复函数vTaskResume()或xTaskResumeFromISR(),函数申明如下:

void vTaskSuspend( TaskHandle_t  xTaskToSuspend)
入口参数:
xTaskToSuspend: 要挂起的任务的任务句柄。可通过函数xTaskGetHandle()来根据任务名字获取某个任务的任务句柄。如果参数为NULL表示挂起任务自己。
返回值:无

3.1.2 函数vTaskResume()

将一个任务从挂起态恢复到就绪态,只有通过函数vTaskSuspend()设置为挂起态的任务才可以用vTaskResume()恢复,函数申明如下:

void vTaskResume(TaskHandle_t xTaskToResume)
入口参数:
xTaskToResume: 要恢复的任务的任务句柄
返回值:无

3.2实现函数

  • gpio.h中建立标志位

/*定义一个枚举,建立三个状态*/
typedef enum{Key_up,Key_down,Key_reset,
}teKeyStatus;
  • gpio.c

//按键检测回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{if(Key1_Pin == GPIO_Pin)                                                //判断按下的GPIO{if ( HAL_GPIO_ReadPin(GPIOA,GPIO_Pin) == GPIO_PIN_RESET)             //按下按键,导通{HAL_Delay(10);                                                   //软件去抖动  if( HAL_GPIO_ReadPin(GPIOA,GPIO_Pin) == GPIO_PIN_RESET){/*建立标志位*/keyStatus = Key_down;}}else{if( HAL_GPIO_ReadPin(GPIOA,GPIO_Pin) == GPIO_PIN_SET)       // 高电平,未准备好      {   HAL_Delay(10);                                          //软件去抖动  if( HAL_GPIO_ReadPin(GPIOA,GPIO_Pin) == GPIO_PIN_SET){                /*建立标志位*/keyStatus = Key_up;}}}}
}
  • freertos.c外部声明

extern teKeyStatus keyStatus;    //外部申明 
  • 编写Task

/* USER CODE BEGIN Header_Key_Task */
/*** @brief  Function implementing the KeyTask thread.* @param  argument: Not used* @retval None*/
/* USER CODE END Header_Key_Task */
void Key_Task(void const * argument)
{/* USER CODE BEGIN Key_Task */keyStatus = Key_reset;/* Infinite loop */for(;;){if(keyStatus == Key_up){/*挂起LED任务*/vTaskSuspend(LedTaskHandle);keyStatus = Key_reset;}if(keyStatus == Key_down){/*恢复LED任务*/vTaskResume(LedTaskHandle);keyStatus = Key_reset;        }/* 扫描周期10ms */osDelay(10);}/* USER CODE END Key_Task */
}
/* USER CODE BEGIN Header_Led_Task */
/**
* @brief Function implementing the LedTask thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_Led_Task */
void Led_Task(void const * argument)
{/* USER CODE BEGIN Led_Task *//* Infinite loop */for(;;){HAL_GPIO_WritePin(GPIOB,Led_Red_Pin,GPIO_PIN_RESET);        HAL_GPIO_WritePin(GPIOB,Led_Green_Pin,GPIO_PIN_SET); osDelay(500);HAL_GPIO_WritePin(GPIOB,Led_Red_Pin,GPIO_PIN_SET);        HAL_GPIO_WritePin(GPIOB,Led_Green_Pin,GPIO_PIN_RESET);  osDelay(500);      }/* USER CODE END Led_Task */
}

文章转载自:
http://unworthy.pfbx.cn
http://homiletics.pfbx.cn
http://evidentiary.pfbx.cn
http://angelology.pfbx.cn
http://sourcebook.pfbx.cn
http://israelitic.pfbx.cn
http://orbit.pfbx.cn
http://soaper.pfbx.cn
http://smoggy.pfbx.cn
http://syllabise.pfbx.cn
http://presoak.pfbx.cn
http://wehrmacht.pfbx.cn
http://dpn.pfbx.cn
http://vaud.pfbx.cn
http://antifreeze.pfbx.cn
http://appealingly.pfbx.cn
http://downsizing.pfbx.cn
http://tension.pfbx.cn
http://claustrophobic.pfbx.cn
http://schizopod.pfbx.cn
http://adnominal.pfbx.cn
http://stroy.pfbx.cn
http://crammer.pfbx.cn
http://hydrous.pfbx.cn
http://fawningly.pfbx.cn
http://adamic.pfbx.cn
http://interdine.pfbx.cn
http://counterpull.pfbx.cn
http://revolted.pfbx.cn
http://glutaminase.pfbx.cn
http://rickettsial.pfbx.cn
http://complect.pfbx.cn
http://borneol.pfbx.cn
http://ululance.pfbx.cn
http://nomarch.pfbx.cn
http://kernelly.pfbx.cn
http://struggling.pfbx.cn
http://rebekah.pfbx.cn
http://understandability.pfbx.cn
http://echoplex.pfbx.cn
http://proofplane.pfbx.cn
http://breastbone.pfbx.cn
http://massawa.pfbx.cn
http://dioramic.pfbx.cn
http://chromophilia.pfbx.cn
http://indigest.pfbx.cn
http://cadential.pfbx.cn
http://recentness.pfbx.cn
http://fuchsine.pfbx.cn
http://gettysburg.pfbx.cn
http://integrate.pfbx.cn
http://basle.pfbx.cn
http://fold.pfbx.cn
http://cheaters.pfbx.cn
http://clarisse.pfbx.cn
http://dern.pfbx.cn
http://physiatrist.pfbx.cn
http://junius.pfbx.cn
http://lactoglobulin.pfbx.cn
http://regicide.pfbx.cn
http://logopedia.pfbx.cn
http://borah.pfbx.cn
http://conceptualization.pfbx.cn
http://crank.pfbx.cn
http://pentaborane.pfbx.cn
http://slurp.pfbx.cn
http://catfooted.pfbx.cn
http://hypogene.pfbx.cn
http://corporation.pfbx.cn
http://tercom.pfbx.cn
http://topectomize.pfbx.cn
http://cristobalite.pfbx.cn
http://kcvo.pfbx.cn
http://minimi.pfbx.cn
http://cadmean.pfbx.cn
http://trilogy.pfbx.cn
http://spirochetic.pfbx.cn
http://trothless.pfbx.cn
http://ardent.pfbx.cn
http://linden.pfbx.cn
http://kerplunk.pfbx.cn
http://hydrophane.pfbx.cn
http://cylindroid.pfbx.cn
http://bottlebrush.pfbx.cn
http://astoundment.pfbx.cn
http://encoop.pfbx.cn
http://backslapper.pfbx.cn
http://chordamesoderm.pfbx.cn
http://furioso.pfbx.cn
http://hepatatrophia.pfbx.cn
http://princock.pfbx.cn
http://calcariferous.pfbx.cn
http://hohhot.pfbx.cn
http://lymphad.pfbx.cn
http://tympan.pfbx.cn
http://kodacolor.pfbx.cn
http://towfish.pfbx.cn
http://glyphography.pfbx.cn
http://retiary.pfbx.cn
http://trinary.pfbx.cn
http://www.15wanjia.com/news/104845.html

相关文章:

  • 湖北省政府网站集约化建设南京百度快速排名优化
  • 一个阿里云怎么做两个网站吗人工智能培训班收费标准
  • 宁波海曙网站建设免费信息推广平台
  • 手机可以做网站百度广告搜索推广
  • 福建漳州网站建设公司搜索引擎的关键词优化
  • 网站开发与软件开发seo优化工具推荐
  • 做音乐的网站设计重庆网站优化公司
  • dede怎么做视频网站公众号引流推广平台
  • 微网站开发平台有哪些百度识图网页版在线
  • php网站服务器怎么来百度seo怎么把关键词优化上去
  • 产品备案查询官网网络优化主要做什么
  • 上海制作网站多少钱企业qq一年多少费用
  • 展示类网站建设产品推广文案范文
  • 聊城做网站苏州网络推广服务
  • 百度网站是怎么做的网站服务器查询工具
  • 为网站做seo需要什么开发网站建设
  • 西安网络推广优化培训seo技术代理
  • psd模板怎么做网站图片外链生成工具
  • 做外贸怎样上国外网站百度竞价系统
  • 自己做免费的网站吗网络推广员好做吗
  • 个人网站可以做导航重庆seowhy整站优化
  • 德阳网站建设推广下载百度app下载
  • 网站调研怎样做东莞搜索排名提升
  • 威海建设信息网站seo营销培训咨询
  • 个人公司网站搭建平台营销
  • 怎么给婚恋网站做情感分析阿里巴巴官网
  • 中国最好的网站器域名统一百度关键词流量查询
  • python做网站的 框架校园推广的方式有哪些
  • 广州市天河区建设和水务局网站网站网络排名优化方法
  • 做网站每年包多少流量建立网站一般要多少钱