Neptune开发板 从sleep状态中唤醒 引出WAKE引脚 OpenHarmony

        最近入手了几块9.9元的Neptune开发板,可以运行OpenHarmony,在官方移植的OpenHarmony1.0版本中给了这么一个lowpower的例程:

#include <stdio.h>
#include <unistd.h>
#include "cmsis_os2.h"
#include "lowpower.h"
#include "ohos_init.h"

#define LP_TASK_STACK_SIZE 512
#define LP_TASK_PRIO 25

// USE PA0 High level to wakeup
static void* LowpowerTask(const char* arg)
{
    (void)arg;
    static int i = 0;

    printf("enter LowpowerTask\n");

    while (1) {   
        if (i == 0) {
            i++;
            LpcSetType(LIGHT_SLEEP);
        } else
        {
            LpcSetType(DEEP_SLEEP);
        }
        osDelay(500);
    }
}

static void LowpowerExampleEntry(void)
{
    osThreadAttr_t attr;

    LpcInit();

    attr.name = "LowpowerTask";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = LP_TASK_STACK_SIZE;
    attr.priority = LP_TASK_PRIO;

    if (osThreadNew((osThreadFunc_t)LowpowerTask, NULL, &attr) == NULL) {
        printf("[LowpowerExample] Falied to create LowpowerTask!\n");
    }
}

SYS_RUN(LowpowerExampleEntry); // if test add it

       这边有一句注释“// USE PA0 High level to wakeup”告诉我们给PA0这个引脚高电平来唤醒,但是我从板子背面的丝印找不到PA0这个引脚,遂查阅官方给出的原理图:

        

         可以看到,PA0这个引脚是没有引出的,于是我尝试对板子上的这个引脚加高电平,屁用没有。反复测试多次,最后得出结论:这个引脚啥都没接。

        遂查阅w800的芯片手册

        我们可以看到,pin3就是wakeup引脚,也就是说这个芯片是有wakeup引脚的,但是为什么从PA0唤不醒呢,到这里差不多可以判断,wakeup引脚没有引出到板子上的PA0引脚。

        于是把屏蔽盖拆开一探究竟

        破案了,wakeup引脚是悬空的,根本没引出来。

        于是尝试给这个引脚加高电平唤醒。

        这时候还发现它了旁边的pin4是reset_n引脚,在工作状态下是保持高电平,也就是说只要把pin3和pin4短接一下就可以了。拿了根杜邦线试了一下,成功唤醒。

那么,到这里还有一个困扰我的问题:为什么PA0是空的,wakeup也是空的,却不把两个脚接到一起呢?还请懂行的朋友替我解惑一下

--------完--------

猜你喜欢

转载自blog.csdn.net/oyanzhishiyue/article/details/118931109