wb_exti
1) 在wb_ledblink设置基础上
Pinout View
PB13->GPIO_EXTI13
Categories->GPIO->GPIO->GPIO mode->External Interrupt Mode with Falling Edge(我的编码器小板按键输出下降沿)
NVIC
勾选 EXTI line[15:10] interrupts
2) SAVE,generate Code
3) main.c
检查void MX_GPIO_Init(void)函数
看看GPIO_InitStruct.Mode 设置管脚的工作方式:
/** Configure pins as : * Analog / * Input/ * Output / * EVENT_OUT/ * EXTI */
/*Configure GPIO pin : PB13 */ GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
另外在函数结尾处可看到EXTI中断已经使能: HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
在stm32f103xb.h里有中断号列表:
4) 建立中断服务程序 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
在main外面
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_13)
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_12);
}
5)编译运行
编译运行,PB13接开关,每按下一次,板载LED toggle一次
网友评论