本帖最后由 jiangjiayu 于 2020-12-9 18:50 编辑
///< PortX中断服务函数
void PortD_IRQHandler(void)
{
if( M0P_GPIO->PD_STAT_f.PD04 == 1)
{
M0P_GPIO->PDOUT_f.PD05 = ~M0P_GPIO->PDOUT_f.PD05;//< LED 取反
M0P_GPIO->PD_ICLR_f.PD04 = 0;
}
}
void App_UserKeyInit(void) //配置 PD4 下降沿中断
{
///< 打开GPIO外设时钟门控
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
// M0P_GPIO->PD04_SEL = 0;
// M0P_GPIO->PDADS_f.PD04 = 0;
// M0P_GPIO->PD04_SEL = 0;
M0P_GPIO->PDDIR_f.PD04 = 1; //输入
M0P_GPIO->PDPU_f.PD04 = 1; //上拉
M0P_GPIO->PDFIE_f.PD04 = 1; //下降沿中断
// M0P_GPIO->CTRL2_f.AHB_SEL = GpioAHB;
EnableNvic(PORTD_IRQn, IrqLevel2, TRUE);
}
代码如上所示
PD5为LED正常输出,且能控制LED的亮灭
PD4为外部按键中断,下降沿触发,死活进不了中断。。。。MCU无睡眠,用的是\HC32L13x_SDK\hc32l13x_ddl_Rev1.9.2 Lite\example\gpio\gpio_interrupt 例程修改
把外部中断改为PA4就可以进入
请教下代码有不对的地方吗?
硬件确认没问题,开发板为 : HC32LF136x3x-STK-V2.0
下面为main函数
int32_t main(void)
{
App_UserKeyInit();
App_LedInit();
while(1)
{
;
}
}
问题已解决: 上面的外部中断初始化代码没问题,LED灯的控制脚初始化有问题
|