加上了__weak 修饰符的函数,用户可以在用户文件中重新定义一个同名函数,最终编译器编译的时候,会选择用户定义的函数,如果用户没有重新定义这个函数,
那么编译器就会执行__weak 声明的函数,并且编译器不会报错。
所以重点是其中的回调函数(Callback)就是外部中断出发时所执行的函数
前面都是外部中断开启所必须的步骤。
令KEY1和KEY2的时钟打开;设置GPIO_InitStruct初始化位上下沿触发,同时位上拉电阻;分别将KEY1和KEY2分别射中Init,这边也再次强调了再外部中断设置中,类似于PB1和PE1并不能复用哦,端口不同但是针脚相同就不太行;设置外部中断的优先级;设置外部中断使能(EnableIRQ);重定向中断服务函数,随后在重定向中断服务函数时再重定向外部回调函数
#define K1 HAL_GPIO_ReadPin(KEY1_PORT,KEY1_PIN)
#define K2 HAL_GPIO_ReadPin(KEY2_PORT,KEY2_PIN)
//hal_gpio_readpin函数的返回值为GPIO引脚状态,类型为GPIO_PinState。
void HAL GPIO EXTI Callback(uint16 t GPIO Pin)
{
if(KEY1_PIN == GPIO Pin){
key1_val = Kl;}
else if(KEY2PIN == GPIO Pin){
key2_val = K2;}
uint8_t KEYl_Value (void){return key1_val;}
uint8_t KEY2_Value (void){
return key2 val;}