系统函数

类名: M5

begin()

功能:

初始化 LCD; 初始化 SD 卡; 清串口缓冲区,设置串口波特率为 115200; 初始化 I2C; 设置 MBus模式; 初始化 Axp电源管理芯片; 初始化触屏功能; 初始化 RTC

函数原型:

void begin(bool LCDEnable = true, bool SDEnable = true, bool SerialEnable = true, bool I2CEnable = false, mbus_mode_t mode = kMBusModeOutput)

函数实现:

void M5Core2::begin(bool LCDEnable, bool SDEnable, bool SerialEnable, bool I2CEnable, mbus_mode_t mode) {
  // Correct init once
  if (isInited == true) {
    return;
  } else {
    isInited = true;
  }

  // UART
  if (SerialEnable == true) {
    Serial.begin(115200);
    Serial.flush();
    delay(50);
    Serial.print("M5Core2 initializing...");
  }

  // I2C init
  if (I2CEnable == true) {
    Wire.begin(32, 33);
  }

  Axp.begin(mode);

  // LCD INIT
  if (LCDEnable == true) {
    Lcd.begin();
  }

  // Touch init
  Touch.begin();  // Touch begin after AXP begin. (Reset at the start of AXP)

  // TF Card
  if (SDEnable == true) {
    SD.begin(TFCARD_CS_PIN, SPI, 40000000);
  }

  // TONE
  if (SerialEnable == true) {
    Serial.println("OK");
  }

  Rtc.begin();
}

使用示例:

#include <M5Core2.h>

void setup() {
  M5.begin();
}

update()

功能:

读取按键的状态

函数原型:

void update()

函数实现:

void M5Core2::update() {
  Touch.update();
  Buttons.update();
  yield();
}

使用示例:

#include <M5Core2.h>

void setup() {
  M5.begin();
}

void loop() {
  M5.update();
}

shutdown()

函数重载1:

关闭电源,再次启动需要通过PWR按键唤醒

void shutdown()

函数重载2:

关闭电源,根据传入的延时秒数,在延时结束后通过RTC唤醒设备。

int shutdown( int seconds )

函数重载3:

关闭电源,传入指定了某个时间点的RTC时间结构体,当符合该时间的,,的时候通过RTC唤醒设备。

int shutdown( const RTC_TimeTypeDef &RTC_TimeStruct)

函数重载4:

关闭电源,传入指定了某个时间点的RTC时间结构体,当同时符合该时间点的周数,天数,时间的时通过RTC唤醒设备。

int shutdown( const RTC_DateTypeDef &RTC_DateStruct, const RTC_TimeTypeDef &RTC_TimeStruct)

使用示例:

#include <M5Core2.h>

RTC_TimeTypeDef RTCtime;
RTC_TimeTypeDef RTCtime_Now;

char timeStrbuff[64];

void setup(){
  M5.begin(true,true,true,true);

  RTCtime.Hours = 10;
  RTCtime.Minutes = 30;
  RTCtime.Seconds = 45;

  M5.Lcd.setCursor(0,80);
  M5.Lcd.println("");
  M5.Lcd.println("BtnA:  shutdown, use power button to turn back on");
  M5.Lcd.println("");
  M5.Lcd.println("BtnB:  shutdown, wake up after 5 seconds");
  M5.Lcd.println("");
  M5.Lcd.println("BtnC:  shutdown, wake up at RTC Time 10:30:45");
}

void loop(){
  M5.update();
  if(M5.BtnA.wasPressed()){
    M5.shutdown();
  }else if(M5.BtnB.wasPressed()){
    M5.shutdown(5);
  }else if(M5.BtnC.wasPressed()){
    M5.shutdown(RTCtime);
  }

  M5.Lcd.setCursor(0,140);
  M5.Rtc.GetTime(&RTCtime_Now);
  sprintf(timeStrbuff,"RTC Time Now is %02d:%02d:%02d",
         RTCtime_Now.Hours,RTCtime_Now.Minutes,RTCtime_Now.Seconds);
  M5.Lcd.println(timeStrbuff);
}
On This Page