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

带空间二字的韩国视频网站网站网站开发的

带空间二字的韩国视频网站,网站网站开发的,建网站网络推广优势,如何在别人网站挂黑链理论 NVIC#xff1a;嵌套向量中断控制器#xff08;解释教程#xff09; 外部通用中断线(EXTI0~EXTI15)#xff1a;每个GPIO设置成中断模式#xff0c;与中断控制器连接的线 外部中断触发方式 上升沿触发、下降沿触发、双边沿触发 外部中断触发函数 在stm32f1xx_it.c文件… 理论 NVIC嵌套向量中断控制器解释教程 外部通用中断线(EXTI0~EXTI15)每个GPIO设置成中断模式与中断控制器连接的线 外部中断触发方式 上升沿触发、下降沿触发、双边沿触发 外部中断触发函数 在stm32f1xx_it.c文件里(大概204行) 中断触发函数EXTI0_IRQHandlerEXTI1_IRQHandlerEXTI2_IRQHandlerEXTI3_IRQHandlerEXTI4_IRQHandlerEXTI9_5_IRQHandlerEXTI15_10_IRQHandler 解析 解析初始化中断过程 //gpio.c中58/*Configure GPIO pins : PEPin PEPin */GPIO_InitStruct.Pin EXTI_Key1_Pin|EXTI_Key2_Pin;GPIO_InitStruct.Mode GPIO_MODE_IT_FALLING;GPIO_InitStruct.Pull GPIO_PULLUP;HAL_GPIO_Init(GPIOE, GPIO_InitStruct); //将上面三行代码的数据传入这个函数解析初始化//stm32f1xx_hal_gpio.c中286 /*--------------------- EXTI Mode Configuration ------------------------*/ /* Configure the External Interrupt or event for the current IO */ if ((GPIO_Init-Mode EXTI_MODE) EXTI_MODE) { /* Enable AFIO Clock */ __HAL_RCC_AFIO_CLK_ENABLE(); //打开复用时钟 temp AFIO-EXTICR[position 2u]; CLEAR_BIT(temp, (0x0Fu) (4u * (position 0x03u))); SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) (4u * (position 0x03u))); AFIO-EXTICR[position 2u] temp; //把固定引脚设置成复用模式(如复用成外部中断)//配置上升沿还是下降沿 /* Enable or disable the rising trigger */ if ((GPIO_Init-Mode RISING_EDGE) RISING_EDGE) {SET_BIT(EXTI-RTSR, iocurrent); } else {CLEAR_BIT(EXTI-RTSR, iocurrent); }/* Enable or disable the falling trigger */ if ((GPIO_Init-Mode FALLING_EDGE) FALLING_EDGE) {SET_BIT(EXTI-FTSR, iocurrent); } else {CLEAR_BIT(EXTI-FTSR, iocurrent); }/* Configure the event mask */ if ((GPIO_Init-Mode GPIO_MODE_EVT) GPIO_MODE_EVT) {SET_BIT(EXTI-EMR, iocurrent); } else {CLEAR_BIT(EXTI-EMR, iocurrent); }//打开或关闭中断 /* Configure the interrupt mask */ if ((GPIO_Init-Mode GPIO_MODE_IT) GPIO_MODE_IT) {SET_BIT(EXTI-IMR, iocurrent); } else {CLEAR_BIT(EXTI-IMR, iocurrent); }中断实现过程 确认中断清除中断标志位执行中断回调函数 //stm32f1xx_it.大概204行 void EXTI3_IRQHandler(void) //中断入口函数 {/* USER CODE BEGIN EXTI3_IRQn 0 *//* USER CODE END EXTI3_IRQn 0 */HAL_GPIO_EXTI_IRQHandler(EXTI_Key1_Pin); //在库函数不能写/* USER CODE BEGIN EXTI3_IRQn 1 *//* USER CODE END EXTI3_IRQn 1 */ }void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) //stm32f1xx_hal_gpio.c大概546行 {/* EXTI line interrupt detected */if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) ! 0x00u) //判断有没有中断触发(有:1,没:0){__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); //若进来则为1为1则清除中断标志位HAL_GPIO_EXTI_Callback(GPIO_Pin); //回调函数(Callback)执行函数} }//stm32f1xx_hal_gpio.h中190 #define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI-PR (__EXTI_LINE__)) //挂起寄存器(EXTI_PR)(参考手册140) 有没有中断触发//stm32f1xx_hal_gpio.h中198 #define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI-PR (__EXTI_LINE__)) //赋值(参考手册140)//调用这个函数__weak弱声明若别文件也有相同的函数优先调用没有弱声明 __weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) //stm32f1xx_hal_gpio.c大概561行 {/* 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*/ }若相同有一个PA0设置了中断别的PB0等等都不能设置成中断 代码编写 实验按键PE3控制蜂鸣器(PB8)、按键PE4控制LED灯(PB5) Cube IDE代码 Cube IDE中编写 LED灯、蜂鸣器、按键配置 LED灯、蜂鸣器配置上一篇已经说过地址 按键设置下降沿触发(也可上升沿触发)GPIO Pull-up/Pull-down设置上拉空闲状态为高电平 按键没按下时高电平按下时有下降沿和上升沿所以两个触发都可按键这里是中断触发功能不是GPIO输入功能 配置NVIC(嵌套向量中断控制器) 调节不同中断优先级(数字越小优先级越高) 若抢占优先级相同比较子优先级 调节多少bit对应代码在 HAL_Init(); //main.c(74)//HAL_StatusTypeDef HAL_Init(void)中的 HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); //stm32f1xx_hal.c(157)代码 main.c144行在mian函数外任意一个 /* USER CODE BEGIN / / USER CODE END */中 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {//若需要延时需要将延时中断优先级比外部中断优先级高优先级高才可以打断低优先级HAL_Delay(10);if(HAL_GPIO_ReadPin(EXTI_Key1_GPIO_Port, EXTI_Key1_Pin) 0) //读引脚相同0,不同1{HAL_GPIO_TogglePin(BEEP_GPIO_Port, BEEP_Pin);}if(HAL_GPIO_ReadPin(EXTI_Key2_GPIO_Port, EXTI_Key2_Pin) 0){HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);} }中断处理程序要少用延时的原因 中断处理的要求是即时处理尽快退出。如果在中断中使用延时函数或者使用IO阻塞函数会影响到系统的实时性。如果下次中断来临延时或者阻塞还没结束那么就永远在中断里死循环了。 因此对于中断处理程序的要求是     短小精悍不要处理过多任务     不使用延时函数或者IO阻塞的函数 Keil代码 需要修改的地方如下 mian.c(144) void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {//若需要延时需要将延时中断优先级比外部中断优先级高优先级高才可以打断低优先级HAL_Delay(10);if(HAL_GPIO_ReadPin(EXTI_Key1_GPIO_Port, EXTI_Key1_Pin) 0) //读引脚相同0,不同1{HAL_GPIO_TogglePin(BEEP_GPIO_Port, BEEP_Pin);}if(HAL_GPIO_ReadPin(EXTI_Key2_GPIO_Port, EXTI_Key2_Pin) 0){HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);} }main.h(60) #define EXTI_Key1_Pin GPIO_PIN_3 #define EXTI_Key1_GPIO_Port GPIOE #define EXTI_Key1_EXTI_IRQn EXTI3_IRQn #define EXTI_Key2_Pin GPIO_PIN_4 #define EXTI_Key2_GPIO_Port GPIOE #define EXTI_Key2_EXTI_IRQn EXTI4_IRQn #define LED1_Pin GPIO_PIN_5 #define LED1_GPIO_Port GPIOB #define BEEP_Pin GPIO_PIN_8 #define BEEP_GPIO_Port GPIOBgpio.c(42) void MX_GPIO_Init(void) {GPIO_InitTypeDef GPIO_InitStruct {0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOE_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();/*Configure GPIO pin Output Level */HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);/*Configure GPIO pin Output Level */HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_RESET);/*Configure GPIO pins : PEPin PEPin */GPIO_InitStruct.Pin EXTI_Key1_Pin|EXTI_Key2_Pin;GPIO_InitStruct.Mode GPIO_MODE_IT_FALLING;GPIO_InitStruct.Pull GPIO_PULLUP;HAL_GPIO_Init(GPIOE, GPIO_InitStruct);/*Configure GPIO pins : PBPin PBPin */GPIO_InitStruct.Pin LED1_Pin|BEEP_Pin;GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull GPIO_NOPULL;GPIO_InitStruct.Speed GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOB, GPIO_InitStruct);/* EXTI interrupt init*/HAL_NVIC_SetPriority(EXTI3_IRQn, 5, 0);HAL_NVIC_EnableIRQ(EXTI3_IRQn);HAL_NVIC_SetPriority(EXTI4_IRQn, 5, 0);HAL_NVIC_EnableIRQ(EXTI4_IRQn); }stm32f1xx_hal_it.c(204) void EXTI3_IRQHandler(void) {/* USER CODE BEGIN EXTI3_IRQn 0 *//* USER CODE END EXTI3_IRQn 0 */HAL_GPIO_EXTI_IRQHandler(EXTI_Key1_Pin);/* USER CODE BEGIN EXTI3_IRQn 1 *//* USER CODE END EXTI3_IRQn 1 */ }void EXTI4_IRQHandler(void) {/* USER CODE BEGIN EXTI4_IRQn 0 *//* USER CODE END EXTI4_IRQn 0 */HAL_GPIO_EXTI_IRQHandler(EXTI_Key2_Pin);/* USER CODE BEGIN EXTI4_IRQn 1 *//* USER CODE END EXTI4_IRQn 1 */ }修改延时中断优先级 HAL_Init(); //main.c(74)//HAL_StatusTypeDef HAL_Init(void)中的 HAL_InitTick(TICK_INT_PRIORITY); //stm32f1xx_hal.c(160)//进入参数里修改 #define TICK_INT_PRIORITY 1U //stm32f1xx_hal_conf.h(132)
http://www.hkea.cn/news/14470624/

相关文章:

  • 教育局两学一做网站怎么自己开发软件
  • 做程序开发的网站wordpress 做淘宝客
  • 湖北黄石域名注册网站建设wordpress可以上传网页吗
  • 企业网站建设的一般要素公益网站建设的意义
  • 厦门市建设安全管理协会网站盐城建设局网站
  • 常州高端模板建站哪个网站亲子游做的好
  • 网站建设属于经营什么范围wordpress标签 扩展
  • 网站后台上次图片百度上首页
  • 湖州做网站建设的公司哪家好南京 app开发公司
  • 太谷网站建设广州东站建站时间
  • 网站模板上传一个工厂的网站建设
  • 可信赖的丹阳网站建设百度竞价广告代理
  • 西安双语网站建设网站淘宝客 难做
  • 合肥网站建设费用营销型网站建
  • 广汉网站建设ghxhwl室内设计的概念和内涵
  • 新浪云计算 网站开发企业cms建站系统
  • 百度网盘资源搜索引擎优化推广服务
  • 国外免费网站服务器链接如何自己做网站
  • 郑州网站推广排名有什么推广产品的渠道
  • 池州网站网站建设网络推广平台都有哪些
  • 建设一个房产网站赚钱吗苏州网站制作聚尚网络
  • 正规的合肥网站建设价格网站建设合同审批
  • 手机网站开发 c酒店营销推广方案
  • 宁波网站建设大概要多少钱禁止wordpress更新提示
  • 设计师个人网站欣赏 中国商铺装修找谁
  • 网站建设服务是什么意思购物网站后台设计
  • 外贸自助建站哪个好吴中网页设计报价
  • 公司网站开发维护软件仓库
  • 使用公网ip做网站地址抓取网站后台密码
  • 修改网站模板详解国外装修网站模板