使用cube开发工具进行开发,使用HAL库,有一个问题就是当我们在cube界面配置完成后“以为完全配置好了”,结果在实际代码编写的时候回发现常见以下问题:
1:中断没配置
2:优先级没配置
这里简单分析以下手动开启中断的配置 取两个例子
example1:如何在无法改动cube工程的情况下 使能外部中断
step1
gpio.c 中
GPIO_InitStruct.Pin = MotoFG_Pin;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(MotoFG_GPIO_Port, &GPIO_InitStruct);
HAL_NVIC_SetPriority(EXTI3_IRQn, 5, 0); //改为外部中断9
HAL_NVIC_EnableIRQ(EXTI3_IRQn); //手动修改外部中断设置
step2
it.c中
void EXTI3_IRQHandler(void)
{
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3); //增加中断句柄
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) //添加中断相应函数处理
{
switch(GPIO_Pin)
{
switch(GPIO_Pin)