A placa de desenvolvimento Neptune acorda do estado de suspensão e leva ao pino WAKE OpenHarmony

        Recentemente, comprei várias placas de desenvolvimento Neptune de 9,9 yuans, que podem executar OpenHarmony.Na versão oficialmente transplantada do OpenHarmony1.0, é fornecida uma rotina de baixo consumo de energia:

#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

       Aqui está um comentário "// USE PA0 Alto nível para despertar" nos dizendo para dar ao pino PA0 um nível alto para despertar, mas não consegui encontrar o pino PA0 na serigrafia na parte de trás da placa, então verifiquei a imagem principal oficial:

        

         Percebe-se que o pino PA0 não está saindo, então tentei adicionar um nível alto a esse pino na placa, mas não funcionou. Depois de vários testes repetidos, finalmente cheguei à conclusão: este pino não está conectado a nada.

        Então verifique o manual do chip do w800

        Podemos ver que o pino3 é o pino de ativação, ou seja, este chip possui um pino de ativação, mas por que ele não pode despertar do PA0, pode-se julgar aqui que o pino de ativação não é conduzido ao pino PA0 na placa .

        Então tirei a capa de proteção para descobrir.

        O caso foi resolvido, o pino de ativação foi suspenso e não foi retirado.

        Então tente acordar esse pino com um nível alto.

        Nesse momento, também descobri que o pino 4 próximo a ele é o pino reset_n, que é mantido em um nível alto no estado de funcionamento, ou seja, apenas curto-circuita o pino 3 e o pino 4. Peguei um cabo DuPont e experimentei, e ele foi ativado com sucesso.

Então, aqui está outra pergunta que me incomoda: por que o PA0 está vazio e o wakeup também está vazio, mas os dois pinos não estão conectados entre si? Peça também a amigos experientes que me esclareçam

--------sobre--------

Acho que você gosta

Origin blog.csdn.net/oyanzhishiyue/article/details/118931109
Recomendado
Clasificación