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--------