这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » CYT4BFgpio中断不起作用的原因?

共1条 1/1 1 跳转至

CYT4BFgpio中断不起作用的原因?

高工
2024-02-29 20:15:45     打赏

我目前正在使用 ModustoolBox 为 CYT4BF 创建一个项目。
我正在开发一个程序,该程序在按下按钮时利用 GPIO 中断来切换 LED。
尽管设置了 GPIO 中断标志,但回调函数并未被触发。
请指出代码中的任何错误或错误。
在主函数的无限循环中调用 ButtonInthandler 函数时,它可以正常工作。 但是,当尝试启用 NVIC 并在检测到中断时调用 ButtonInthandler 函数时,该函数可能无法按预期调用。
这是源代码:
const cy_stc_sysint_t intrCfg ={    .intrsrc=ioss_interrupts_gpio_16_IRQn,

 /* Interrupt source is GPIO port 16 interrupt */   

 .intrPriority = GPIO_INTERRUPT_PRIORITY                           

 /* Interrupt priority is 7 */};

int main(void){   

 cy_rslt_t result;   

 /* Initialize the device and board peripherals */   

 result = cybsp_init();   

 /* Board initialize failed. Stop program execution */ 

   if (result != CY_RSLT_SUCCESS)   

 {        CY_ASSERT(0);    }  

  __enable_irq(); 

/* Enable global interrupts. */  

  init_cycfg_pins();    

Cy_GPIO_ClearInterrupt(USER_SW_PORT, USER_SW_PIN);  

  Cy_SysInt_Init( intrCfg, ButtonIntHandler);    

NVIC_EnableIRQ(intrCfg.intrSrc);    

for(;;);}

void ButtonIntHandler(void){    

uint32_t intStatus;   

 /* If falling edge detected */    

intStatus = Cy_GPIO_GetInterruptStatusMasked(USER_SW_PORT, USER_SW_PIN);   

 if (intStatus != 0ul)    {        

Cy_GPIO_ClearInterrupt(USER_SW_PORT, USER_SW_PIN);        

/* Toggle LED */        

Cy_GPIO_Inv(USER_LED_PORT, USER_LED_PIN);    }}




关键词: CYT4BF     ModustoolBox     GPIO    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]