打印
[N32WBxxx]

严重问题: BLE睡眠中断,LPUART中断唤醒都用同一个中断EXIT

[复制链接]
6685|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Sam131208|  楼主 | 2023-1-13 17:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  如题所说,由于BLE睡眠中断与LPUART唤醒中断都是同一个入口EXTI4_12。 在启用LPUART唤醒中断后,程序应该怎么处理这个中断函数?
  是简单的清除BLE_SLP_IRQ中断标记?

使用特权

评论回复
沙发
Sam131208|  楼主 | 2023-1-13 20:05 | 只看该作者
   已经解决,在中断服务函数使用指南里面找到说明。

使用特权

评论回复
板凳
wahahaheihei| | 2023-1-14 11:20 | 只看该作者
可喜可贺,这个唤醒才是低功耗必备。

使用特权

评论回复
地板
数据采集存储| | 2023-1-28 10:51 | 只看该作者
这个不错的方案,很棒的。

使用特权

评论回复
5
pixhw| | 2023-2-2 09:49 | 只看该作者
这个在内部查看使用的是哪个标志              

使用特权

评论回复
6
邓林冲| | 2023-2-3 09:34 | 只看该作者
点赞

使用特权

评论回复
7
mickit| | 2023-2-4 20:39 | 只看该作者
这个LPUART不能中断唤醒的吗?

使用特权

评论回复
8
Sam131208|  楼主 | 2023-2-6 10:35 | 只看该作者
mickit 发表于 2023-2-4 20:39
这个LPUART不能中断唤醒的吗?

  可以中断唤醒,但是接收过程再次进入睡眠,接收可能接收数据有问题,静待官方给出答案。
  我目前处理方法是,中断唤醒后,锁定睡眠,进入idle模式,接收完解锁睡眠。

使用特权

评论回复
9
hearstnorman323| | 2023-2-6 16:49 | 只看该作者
这个两个中断源吗?              

使用特权

评论回复
10
loutin| | 2023-2-7 20:10 | 只看该作者
查看标志是哪个唤醒?              

使用特权

评论回复
11
zhouchen605768| | 2023-2-8 09:29 | 只看该作者
Sam131208 发表于 2023-2-6 10:35
可以中断唤醒,但是接收过程再次进入睡眠,接收可能接收数据有问题,静待官方给出答案。
  我目前处理 ...

相关的程序可以分享下不?

使用特权

评论回复
12
Sam131208|  楼主 | 2023-2-9 08:48 | 只看该作者
zhouchen605768 发表于 2023-2-8 09:29
相关的程序可以分享下不?

  代码上传了,但愿可以帮助用到LPUART的人。在低功耗下的发送(TX + CTS)若有改善,也希望可以分享到这里.

shci.rar

3.5 KB

使用特权

评论回复
13
Sam131208|  楼主 | 2023-2-9 08:50 | 只看该作者

   睡眠函数的修改如下(测试暂时没发现问题):


void ns_sleep(void)
{

    switch(rwip_sleep())
    {
        case RWIP_DEEP_SLEEP:
        if(ns_sleep_lock == 0){
                        GLOBAL_INT_DISABLE();
                        app_sleep_prepare_proc();
                        NS_LOG_DEINIT();
                        entry_sleep();
                        NS_LOG_INIT();
                        GLOBAL_INT_RESTORE();
                        app_sleep_resume_proc();
                        if(g_sleep_status_flag)
                        {
                                RCC->APB1PCLKEN |= RCC_APB1_PERIPH_PWR; // PWR enable
                                PWR->CR2 |= 0x100; //1<<8
                                while(!(PWR->CR1&0x20));
                        }
                        break;
        }

        case RWIP_CPU_SLEEP:
        {
            EXTI_PA11_Configuration();
            PWR->CR1 &= 0xF0;
            SCB->SCR &= 0xFB;
            __WFI();
        }
        break;
        case RWIP_ACTIVE:
        default:
        {

        }
        break;
    }

}

使用特权

评论回复
14
zhouchen605768| | 2023-2-9 21:23 | 只看该作者
Sam131208 发表于 2023-2-9 08:50
睡眠函数的修改如下(测试暂时没发现问题):

确实很nice,给力.

使用特权

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

本版积分规则

38

主题

122

帖子

0

粉丝