使用的是CH592F开发板,没看到有这个外部中断的检测的例子,是否有例子可以快速上手?


/*********************************************************************

 * @fn      Init_InterruptIO

 *

 * @brief   配置外部中断IO

 *

 * @return  none

 *********************************************************************/

void Init_InterruptIO(void)

{


    GPIOA_ModeCfg(GPIO_Pin_5, GPIO_ModeIN_PU);

    GPIOA_ITModeCfg(GPIO_Pin_5, GPIO_ITMode_RiseEdge); // 上升沿中断检测

    PFIC_EnableIRQ(GPIO_A_IRQn);


}



/*********************************************************************

 * @fn      my_uart1_init

 *

 * @brief   调试串口初始化

 *

 * @return  none

 *********************************************************************/

void My_uart1_init(void)

{


        /* 配置串口1:先配置IO口模式,再配置串口 */

        GPIOA_SetBits(GPIO_Pin_9);

        GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);    // RXD-配置上拉输入

        GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); //TXD-配置推挽输出


        UART1_DefInit();


        //中断配置

        UART1_ByteTrigCfg(UART_1BYTE_TRIG);

        UART1_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);

        PFIC_EnableIRQ(UART1_IRQn);



}


/*********************************************************************

 * @fn      GPIOA_IRQHandler

 *

 * @brief   GPIOA中断函数

 *

 * @return  none

 *********************************************************************/

__INTERRUPT

__HIGH_CODE

void GPIOA_IRQHandler(void)

{

    GPIOA_ClearITFlagBit(GPIO_Pin_5);


    printf("in IQR \r\n");

}



/*********************************************************************

 * @fn      main

 *

 * @brief   主函数

 *

 * @return  none

 *********************************************************************/

int main(void)

{

    SetSysClock(CLK_SOURCE_PLL_60MHz);


    Init_InterruptIO();


    My_uart1_init();


    while(1);

   


}




目前自己配置以上,但是测试没有效果,不知道IO检测中断还需要配置什么?是否有这方面的例子可以参考?

配置为上升沿进中断,那么除非外部电路有强下拉,否则这里要配置成下拉输入,才有产生上升沿的初始电平条件。image.png


可以进中断了。是我的中断数入波形不对,所以导致没有达到预期效果。程序没问题,可以用。


只有登录才能回复,可以选择微信账号登录