CH573,睡眠模式,串口唤醒问题


//  UART1_Reset();

//  R8_UART1_MCR = 0;

//  R8_UART1_IER = 0;

//  R8_UART1_IIR = 1;

//  R8_UART1_LCR = 0;

//  R8_UART1_LSR = 0x60;

  GPIOA_ModeCfg(GPIO_Pin_8,GPIO_ModeIN_PU);

  GPIOA_ITModeCfg(GPIO_Pin_8,GPIO_ITMode_FallEdge);//PA8 串口唤醒

  PFIC_EnableIRQ(GPIO_A_IRQn);


  PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_GPIO_WAKE, Edge_LongDelay );//唤醒源

  DelayMs( 2 );

  LowPower_Sleep( RB_PWR_RAM16K | RB_PWR_RAM2K );       //只保留14+2K SRAM 供电

  HSECFG_Current( HSE_RCur_100 );     // 降为额定电流(低功耗函数中提升了HSE偏置电流)



这是睡眠配置,睡眠前把串口设置成外io唤醒

这是启动的时候配置的串口, 能用, 但唤醒后重新调用, 就出现死机现象了

void Uart1_Ble_Init(void)

{

  UART1_Reset();//串口复位

  GPIOA_SetBits(bTXD1);

  GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);

  GPIOA_ModeCfg(bRXD1, GPIO_ModeIN_PU);

  UART1_DefInit( );

  UART1_ByteTrigCfg( UART_1BYTE_TRIG );//UART_1BYTE_TRIG,UART_7BYTE_TRIG

  UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );

  PFIC_EnableIRQ( UART1_IRQn );

}

这是串口中断

void GPIOA_IRQHandler(void)

{

  GPIOA_irqFlag  = GPIOA_ReadITFlagPort();

  if(GPIOA_irqFlag  & GPIO_Pin_8){//chuankou

    GPIOA_ClearITFlagBit(GPIO_Pin_8);

    PFIC_DisableIRQ(GPIO_A_IRQn);

  }

}



死机不知道死在哪, 不方便debug, 问题有可能出在哪?


CH579 CH573 CH582 串口切换GPIO睡眠唤醒操作 - debugdabiaoge - 博客园 (cnblogs.com)

可看下这个,唤醒后要关闭GPIO中断,关闭GPIO唤醒,然后重新设置IO,再初始化串口


ch573 睡眠模式还能继续仿真吗? 


开启睡眠后无法进行仿真


请教一个问题:我现在使用的是573? PB4使用IO唤醒串口后 我把IO中断禁用了来接收数据? 但按键PB13也需要IO唤醒(禁用了就用不了了) 都是在GPIOB上? 现在我想要问的是: 这颗单片机能不能单独的一个PIN设置中断使能? ?比如我能单独设置GPIOB_Pin_4 设置为IO触发中断或RX接收中断? ?不会干扰我按键GPIOB_Pin_13的IO触发中断???



都是B组引脚的话,不能单独设置。建议使用一个A组引脚和一个B组引脚,这样可以区分开。


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