因此在某些特殊情况下将数据临时存储在RAM或寄存器中更加合适,如.上图中标星的情形。应用中常用到的场景比如:
- 在进行DFU (OTA) 功能时,无论从应用程序跳转到bootloader (NVIC_ SystemReset),还是从bootloader跳转到应用程序,都可以用RAM或寄存器来传递变量、标志等。
- 应用程序有类似日历功能的应用,并且不希望其数据在应用重启时被清空。
#define ENTER_PAIR_GPREGRET2_MASK (0xF8)
#define ENTER_PAIR_GPREGRET2 (0x58)
#define ENTER_PAIR_BIT_MASK (0x01)
#define ENTER_PAIR_START (ENTER_PAIR_GPREGRET2 | ENTER_PAIR_BIT_MASK)
#define DTM_GPREGRET2_MASK (0xF8)
#define DTM_GPREGRET2 (0x58)
#define DTM_BIT_MASK (0x02)
#define DTM_START (DTM_GPREGRET2 | DTM_BIT_MASK)
#define RADIO_TEST_GPREGRET2_MASK (0xF8)
#define RADIO_TEST_GPREGRET2 (0x58)
#define RADIO_TEST_BIT_MASK (0x04)
#define RADIO_TEST_START (RADIO_TEST_GPREGRET2 | RADIO_TEST_BIT_MASK)
#define LED_OFF_GPREGRET2_MASK (0xF8)
#define LED_OFF_GPREGRET2 (0x48)
#define LED_OFF_BIT_MASK (0x01)
#define LED_OFF_START (LED_OFF_GPREGRET2 | LED_OFF_BIT_MASK)
// 写GPREGRET寄存器之前,需要先Clear
err_code = sd_power_gpregret_clr(0, 0xffffffff);
VERIFY_SUCCESS(err_code);
err_code = sd_power_gpregret_set(0, ENTER_PAIR_START);
VERIFY_SUCCESS(err_code);