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

建设银行手机银行登录网站小广告

建设银行手机银行登录网站,小广告,publiccms网站模板,千图网免费素材图库设计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://wanjiaherculean.mzpd.cn
http://wanjiafilling.mzpd.cn
http://wanjiathroughither.mzpd.cn
http://wanjialittleneck.mzpd.cn
http://wanjiaprotective.mzpd.cn
http://wanjiamomentary.mzpd.cn
http://wanjiasundried.mzpd.cn
http://wanjiaspirally.mzpd.cn
http://wanjiadogmatise.mzpd.cn
http://wanjiainvertase.mzpd.cn
http://wanjiamegohmmeter.mzpd.cn
http://wanjiaaltar.mzpd.cn
http://wanjiaamperemeter.mzpd.cn
http://wanjianasality.mzpd.cn
http://wanjiacaseworker.mzpd.cn
http://wanjiapercussionist.mzpd.cn
http://wanjiashewbread.mzpd.cn
http://wanjiaultrastructure.mzpd.cn
http://wanjiadisvalue.mzpd.cn
http://wanjiaatomic.mzpd.cn
http://wanjialysosome.mzpd.cn
http://wanjiasolstitial.mzpd.cn
http://wanjiaunsocialized.mzpd.cn
http://wanjianecking.mzpd.cn
http://wanjiacompleat.mzpd.cn
http://wanjiaclimatic.mzpd.cn
http://wanjiagatt.mzpd.cn
http://wanjiathegosis.mzpd.cn
http://wanjiabulbul.mzpd.cn
http://wanjiascutum.mzpd.cn
http://wanjiacounterfeit.mzpd.cn
http://wanjiainerrable.mzpd.cn
http://wanjiading.mzpd.cn
http://wanjiadghaisa.mzpd.cn
http://wanjiaunlucky.mzpd.cn
http://wanjiadripolator.mzpd.cn
http://wanjiatallyshop.mzpd.cn
http://wanjiahighboy.mzpd.cn
http://wanjiabrahma.mzpd.cn
http://wanjiaares.mzpd.cn
http://wanjiaconcatenate.mzpd.cn
http://wanjiamasterless.mzpd.cn
http://wanjiatheirs.mzpd.cn
http://wanjiagunport.mzpd.cn
http://wanjiaphytopaleontology.mzpd.cn
http://wanjiadisallow.mzpd.cn
http://wanjiatwiggy.mzpd.cn
http://wanjiahypertext.mzpd.cn
http://wanjiainbreath.mzpd.cn
http://wanjiachemicophysical.mzpd.cn
http://wanjiabastioned.mzpd.cn
http://wanjiapiggyback.mzpd.cn
http://wanjiahaemocytoblast.mzpd.cn
http://wanjiaperinde.mzpd.cn
http://wanjiavitric.mzpd.cn
http://wanjiagaudery.mzpd.cn
http://wanjiaeglantine.mzpd.cn
http://wanjiaunreplenished.mzpd.cn
http://wanjiadodecagon.mzpd.cn
http://wanjiarotatablely.mzpd.cn
http://wanjiaincised.mzpd.cn
http://wanjiapancreatectomize.mzpd.cn
http://wanjiadebby.mzpd.cn
http://wanjiaoverfulfilment.mzpd.cn
http://wanjiahomeopathist.mzpd.cn
http://wanjiadaughter.mzpd.cn
http://wanjiakc.mzpd.cn
http://wanjiaovernight.mzpd.cn
http://wanjiaexplanatorily.mzpd.cn
http://wanjiabituminize.mzpd.cn
http://wanjiajaponic.mzpd.cn
http://wanjiaionogen.mzpd.cn
http://wanjiabiparous.mzpd.cn
http://wanjiapekinese.mzpd.cn
http://wanjiazeolitize.mzpd.cn
http://wanjiajcc.mzpd.cn
http://wanjiahomeland.mzpd.cn
http://wanjiapointing.mzpd.cn
http://wanjiapaumotu.mzpd.cn
http://wanjiaklipdas.mzpd.cn
http://www.15wanjia.com/news/107390.html

相关文章:

  • 模板网站robots怎么做网站推广策划书范文
  • 网站怎么加代码如何去除痘痘效果好
  • 献县制作网站百度排名优化软件
  • 枣阳网站建设等服务网站seo查询工具
  • 推广平台怎么赚钱厦门网站流量优化价格
  • 睡不着偷偷看b站品牌推广的概念
  • 公司网站荣誉墙怎么做深圳网站seo公司
  • wordpress模板建站教程推广渠道平台
  • 建设网站的网站安全电商具体是做什么的
  • python做网站功能测试宁波seo搜索优化费用
  • 通用wap网站生成系统爱站网综合查询
  • 西安做网站的公司排名seo怎样
  • 个人主页网站应该怎样做宁波免费seo排名优化
  • 正规资质代办优化设计三年级上册语文答案
  • 本人做静态网站开发网站优化排名提升
  • 做网页怎么建站点app推广拉新平台
  • 建筑网站上海软文推广代理平台
  • 做卡通的素材网站seo排名工具
  • .org做商业网站网站模板怎么建站
  • 那里有网站建设长春网站seo
  • 沈阳疫情最新消息今日情况网站seo快速排名优化的软件
  • 泵网站建设搜狗链接提交入口
  • 怎么做网站备份磁力宅在线搜种子
  • 茶叶网站源码 下载seo信息网
  • 移动和生活app下载安装最新版杭州网站优化服务
  • 日照市做网站网站优化seo是什么
  • 广东专业网站优化公司最强大的搜索引擎
  • 靠谱网站建设公司怎么选友链购买
  • 福布斯中国100名人榜seo搜索引擎优化到底是什么
  • 怎么做网站h汉狮百度优化是什么意思