CH573中断进不去

[复制链接]
5093|1
 楼主| CGX990507 发表于 2021-8-18 09:34 | 显示全部楼层 |阅读模式
void KEY_GPIO_Init(void)
{
    GPIOB_ModeCfg(GPIO_Pin_22,GPIO_ModeIN_PU);//初始化位输入上拉
    GPIOB_ITModeCfg(GPIO_Pin_22,GPIO_ITMode_FallEdge);//开启下降沿中断
    PFIC_EnableIRQ( GPIO_B_IRQn );//开启GPIOB中断}
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
void GPIOB_IRQHandler(void)
{
    uint16_t GPIOB_irqFlag = GPIOB_ReadITFlagPort();
    if( GPIOB_irqFlag & GPIO_Pin_22 )
    {
        GPIOB_ClearITFlagBit(GPIO_Pin_22);
        if(GPIOB_ReadPortPin(GPIO_Pin_22) == 0)
        {
             按键控制;
        }
    }
}

进不去中断

Taoyukai 发表于 2021-8-18 17:27 | 显示全部楼层
  1. int main()
  2. {

  3.   SetSysClock( CLK_SOURCE_PLL_60MHz );

  4.   /* 配置串口调试 */
  5.   DebugInit();
  6.   PRINT( "Start @ChipID=%02X\n", R8_CHIP_ID );
  7.   
  8.   GPIOB_ModeCfg(GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_22,GPIO_ModeIN_PU);
  9.   GPIOB_ITModeCfg(GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_22,GPIO_ITMode_FallEdge);
  10.   PFIC_EnableIRQ(GPIO_B_IRQn);

  11.   while( 1 )
  12.     ;
  13. }

  14. __attribute__((interrupt("WCH-Interrupt-fast")))
  15. __attribute__((section(".highcode")))
  16. void GPIOB_IRQHandler( void )                        //GPIOB中断服务程序
  17. {
  18.     uint32_t GPIOB_irqFlag = GPIOB_ReadITFlagPort();

  19.     PRINT("GPIOB_irqFlag = 0x%08X\r\n",GPIOB_irqFlag);
  20.    if(GPIOB_irqFlag&GPIO_Pin_15)
  21.    {
  22.       PRINT("Run at EXTI GPIO_Pin_15 \r\n");
  23.       GPIOB_ClearITFlagBit(GPIO_Pin_15);     /* Clear Flag */
  24.    }
  25.    if(GPIOB_irqFlag&GPIO_Pin_14)
  26.    {
  27.       PRINT("Run at EXTI GPIO_Pin_14 \r\n");
  28.       GPIOB_ClearITFlagBit(GPIO_Pin_14);     /* Clear Flag */
  29.    }
  30.    if(GPIOB_irqFlag&GPIO_Pin_13)
  31.    {
  32.       PRINT("Run at EXTI GPIO_Pin_13 \r\n");
  33.       GPIOB_ClearITFlagBit(GPIO_Pin_13);     /* Clear Flag */
  34.    }

  35.    if(GPIOB_irqFlag&(GPIO_Pin_22))
  36.   {
  37.          PRINT("Run at EXTI GPIO_Pin_22 \r\n");
  38.          GPIOB_ClearITFlagBit(GPIO_Pin_22);    /* Clear Flag */
  39.   }
  40. }


去除警告
  1. #define        GPIOB_ClearITFlagBit( pin )                (R16_PB_INT_IF = (uint16_t)((pin)|(((pin)&(GPIO_Pin_22|GPIO_Pin_23))>>14)))                /* 清除GPIOB端口引脚中断标志状态 */


您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部