设计网站一般多少钱,湖北建设网站信息查询中心,整站建设 想做一个外卖网站,北京建设网站公司一.cubeMX外部中断配置 1.系统内核 2.中断管理 3.选择抢占优先级和响应优先级#xff0c;共有5个等级#xff0c;在这里就使用库函数编写代码时最常用的2位抢占优先级2位响应优先级。 4.勾选使能选项#xff0c;后面的两个零#xff0c;第一个代表抢占优先级的等级#xf…一.cubeMX外部中断配置 1.系统内核 2.中断管理 3.选择抢占优先级和响应优先级共有5个等级在这里就使用库函数编写代码时最常用的2位抢占优先级2位响应优先级。 4.勾选使能选项后面的两个零第一个代表抢占优先级的等级第二个代表子优先级的等级。
二.配置外部中断对应引脚 1.系统内核 2.GPIO相关配置 3.GPIO的模式由于引脚配置为中断模式故在当前的GPIO模式下会显示出6种外部触发模式分别为外部中断上升沿触发外部中断下降沿触发外部中断上升沿下降沿触发外部上升沿触发时间外部下降沿触发事件外部上升沿下降沿触发事件。 4.由于选择了上升沿触发为了使上升沿触发更加稳定故将引脚下拉。
三.生成代码
//stm32f1xx_hal_msp.c里面有 void HAL_MspInit(void)配置中断优先级分组void HAL_MspInit(void)
{/* USER CODE BEGIN MspInit 0 *//* USER CODE END MspInit 0 */__HAL_RCC_AFIO_CLK_ENABLE();__HAL_RCC_PWR_CLK_ENABLE();HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_2);/* System interrupt init*//** NOJTAG: JTAG-DP Disabled and SW-DP Enabled*/__HAL_AFIO_REMAP_SWJ_NOJTAG();/* USER CODE BEGIN MspInit 1 *//* USER CODE END MspInit 1 */
}//GPIO.c里面有配置好的引脚和中断使能GPIO_InitStruct.Pin KEY0_Pin|KEY1_Pin;GPIO_InitStruct.Mode GPIO_MODE_IT_RISING;GPIO_InitStruct.Pull GPIO_PULLUP;HAL_GPIO_Init(GPIOE, GPIO_InitStruct);GPIO_InitStruct.Pin KEY_UP_Pin;GPIO_InitStruct.Mode GPIO_MODE_IT_FALLING;GPIO_InitStruct.Pull GPIO_PULLDOWN;HAL_GPIO_Init(KEY_UP_GPIO_Port, GPIO_InitStruct);/* EXTI interrupt init*/HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);HAL_NVIC_EnableIRQ(EXTI0_IRQn);HAL_NVIC_SetPriority(EXTI3_IRQn, 1, 0);HAL_NVIC_EnableIRQ(EXTI3_IRQn);HAL_NVIC_SetPriority(EXTI4_IRQn, 2, 0);HAL_NVIC_EnableIRQ(EXTI4_IRQn);
//stm32f1xx_it.c里面有中断服务函数的代码(可以配置各部分的中断服务函数)void EXTI0_IRQHandler(void)
{/* USER CODE BEGIN EXTI0_IRQn 0 *//* USER CODE END EXTI0_IRQn 0 */HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);/* USER CODE BEGIN EXTI0_IRQn 1 */__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);/* USER CODE END EXTI0_IRQn 1 */
}/*** brief This function handles EXTI line3 interrupt.*/
void EXTI3_IRQHandler(void)
{/* USER CODE BEGIN EXTI3_IRQn 0 *//* USER CODE END EXTI3_IRQn 0 */HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);/* USER CODE BEGIN EXTI3_IRQn 1 */__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_3);/* USER CODE END EXTI3_IRQn 1 */
}/*** brief This function handles EXTI line4 interrupt.*/
void EXTI4_IRQHandler(void)
{/* USER CODE BEGIN EXTI4_IRQn 0 *//* USER CODE END EXTI4_IRQn 0 */HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);/* USER CODE BEGIN EXTI4_IRQn 1 */__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);/* USER CODE END EXTI4_IRQn 1 */
}
四.自己编写 stm32f1xx_hal.c里面设置了中断优先级分组
void exti_init(void)
{GPIO_InitTypeDef gpio_init_struct;__HAL_RCC_GPIOE_CLK_ENABLE();gpio_init_struct.Pin GPIO_PIN_4;gpio_init_struct.Mode GPIO_MODE_IT_FALLING;//设置成中断触发gpio_init_struct.Pull GPIO_PULLUP;HAL_GPIO_Init(GPIOE, gpio_init_struct);HAL_NVIC_SetPriority(EXTI4_IRQn, 2, 0);HAL_NVIC_EnableIRQ(EXTI4_IRQn);
}void EXTI4_IRQHandler(void)
{HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);
}void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{delay_ms(20);if(GPIO_Pin GPIO_PIN_4){if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_4)0){HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);}}
}