库中的HAL_GPIO_EXTI_Rising_Callback回调函数是加有weak前缀的虚弱函数,可自己封装HAL_GPIO_EXTI_Rising_Callback函数实现中断后的操作;
GPIO.C文件中添加以下代码
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{
uint8_t ch[] = {"恭喜发财"};
int i;
if(GPIO_Pin == GPIO_PIN_8)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2);
for(i=0;i<strlen(ch);i++)
{
while(!(USART1->ISR & 1<<7)){};
USART1->TDR=ch[i];
}
}
}
效果:
按一下按键,向串口发送一句“恭喜发财”并且GPIO_PIN_0 | 1 | 2 三个引脚的LED等状态翻转一次。
main函数正常运行,不用另加程序代码。