打印

GD32F427无法通过串口EXTI中断从deepsleep唤醒

[复制链接]
1938|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
asdsdafdsfs|  楼主 | 2024-7-2 17:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GD32F4xx_Demo_Suites里的PMU_Sleep_Wakeup示例没有展示如何从串口从deepsleep状态唤醒
官方应用笔记中的sleep相关的串口唤醒也是有uart WAKEUP功能的串口器件,没有GD32F103或GD32F4XX系列的串口deepsleep唤醒示例
我尝试了几次,deepsleep后从串口输入字符,灯没有闪,都没有成功,请问GD32官方论坛的研发人员如何解决该问题

下面是大概的代码框架, 串口RX是PA10(EVAL_COM0)
void prepare_sleep()
{
    usart_disable(EVAL_COM0);
    usart_interrupt_disable(EVAL_COM0, USART_INT_RBNE);
    usart_deinit(EVAL_COM0);

    gpio_mode_set(EVAL_COM0_GPIO_PORT, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP,EVAL_COM0_RX_PIN);
    gpio_output_options_set(EVAL_COM0_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,EVAL_COM0_RX_PIN);

    nvic_irq_enable(EXTI10_15_IRQn, 2U, 0U);
    syscfg_exti_line_config(EXTI_SOURCE_GPIOA, EXTI_SOURCE_PIN10);
    exti_init(EXTI_10, EXTI_INTERRUPT, EXTI_TRIG_RISING);
    exti_interrupt_flag_clear(EXTI_10);
    exti_interrupt_enable(EXTI_10);
}

void do_sleep()
{
    rcu_periph_clock_enable(RCU_PMU);
    pmu_to_deepsleepmode(PMU_LDO_NORMAL, PMU_LOWDRIVER_DISABLE, WFI_CMD);
    while (1) {
      toggle_alarmled();        //灯没有闪
      delay_ms(500);
    }
}

void EXTI15_10_IRQHandler()
{
    if(exti_interrupt_flag_get(EXTI_10) != RESET){
        do_wakeup_irq();
        exti_interrupt_flag_clear(EXTI_10);
    }
}

void do_wakeup_irq()
{
    SystemInit();
    SystemCoreClockUpdate();
    systick_config();
}

int main()
{
    //闪灯初始化,略
    //串口初始化,略
    prepare_sleep();
    do_sleep();
}

使用特权

评论回复
沙发
canfeil| | 2024-7-23 12:35 | 只看该作者
GD32F427是一款基于ARM Cortex-M4内核的微控制器,它支持多种低功耗模式,包括深度睡眠(Deep Sleep)模式。要从深度睡眠模式中唤,通常需要使用外部中断(EXTI)或其他唤醒源。如果你遇到无法通过串口EXTI中断从深度睡眠模式唤醒的问题,可以检查中断配置

使用特权

评论回复
板凳
星星点点didi| | 2024-7-23 13:41 | 只看该作者
看看串口接收中断(RXNE中断)已经正确配置,并且中断使能位已经设置。确认EXTI线路已经正确配置,并且与串口接收中断相关联

使用特权

评论回复
地板
miltk| | 2024-7-23 14:35 | 只看该作者
我觉得可以查一下,在进入深度睡眠模式之前,已经正确配置了唤醒源。对于GD32F427,这可能涉及到设置PWR控制寄存器中的相关位,以允许特定的中断作为唤醒源。确认串口接收中断被配置为唤醒源

使用特权

评论回复
5
yuliangren| | 2024-7-23 15:45 | 只看该作者
在深度睡眠模式下,某些时钟可能会被关闭以节省功耗。确保在唤醒后,系统时钟和其他必要的时钟已经正确恢复

使用特权

评论回复
6
清芯芯清| | 2024-7-23 17:12 | 只看该作者
要保障电源管理配置正确,特别是在进入和退出深度睡眠模式时的电源状态转换

使用特权

评论回复
7
pe66ak| | 2024-7-23 18:54 | 只看该作者
确认串口线路和外部中断线路的硬件连接正确无误。检查是否有任何硬件故障或连接问题,可能导致中断信号无法正确传递。

使用特权

评论回复
8
hight1light| | 2024-7-23 19:43 | 只看该作者
使用调试工具(如JTAG或SWD)来监控微控制器的状态,确保它在接收到中断信号时能够正确地从深度睡眠模式唤醒。在进入深度睡眠模式之前和唤醒之后,添加调试打印或LED指示,以帮助确定问题发生的位置

使用特权

评论回复
9
eleg34ance| | 2024-7-24 08:49 | 只看该作者
查阅GD32F427的数据手册和用户手册,了解关于深度睡眠模式和中断唤醒的详细信息

使用特权

评论回复
10
gra22ce| | 2024-7-24 10:20 | 只看该作者
参考官方提供的示例代码或应用笔记,看看是否有类似的配置和使用案例。

使用特权

评论回复
11
ewyu| | 2024-7-24 12:30 | 只看该作者
在调试过程中,确保记录所有的配置更改和测试结果,这将有助于更快地找到问题的根源

使用特权

评论回复
12
地瓜patch| | 2024-7-31 22:06 | 只看该作者
配置错了吗

使用特权

评论回复
13
小小蚂蚁举千斤| | 2024-7-31 23:15 | 只看该作者
GD32F4xx与ST 的差别大嘛?

使用特权

评论回复
14
qn7a12| | 2024-8-31 11:28 | 只看该作者
UART 在深度睡眠模式下的唤醒并不是直接支持的功能,尤其是在使用 deepsleep 模式时。

使用特权

评论回复
15
发货后已经wi| | 2024-9-30 23:40 | 只看该作者
官方应用笔记中的sleep相关的串口唤醒也是有

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝