使用STM32F030F4P6芯片做了一個傳感器,使用LORA無線方式將傳感器采集的資料發送出去。考慮到功耗,使用了Standby待機模式。
現在是可以進入待機模式,使用RTC喚醒,資料也能發送出來。
現在想讓整個傳感器初始上電后先進入休眠,然后在RTC喚醒后,再發送資料;但是現在只要上電就直接發送資料,然后才進入休眠。
通過查看PWR->CSR暫存器,看到RM手冊中說SBF和WUF位是可以用來判斷是否從待機模式中醒來的,但是程式這么做了不起作用,還是上電就發送資料。
請各位大佬給看看可能因為什么導致的。
int main(void)
{
/* MCU Configuration--------------------------------------------------------*/
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
MX_GPIO_Init();
MX_RTC_Init();
RTC_AlarmConfig();
/* USER CODE BEGIN SysInit */
if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET ) //在此判斷SBF標志位,若為1,則表明是被喚醒過
//if(__HAL_PWR_GET_FLAG(PWR_FLAG_WU)!= RESET)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
MX_SPI1_Init();
Lora_init();
//HAL_Delay(10000);
Read_Ds18b20();
Lora_SendTemp1();
}
__HAL_RCC_PWR_CLK_ENABLE();
if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET)
{
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
}
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);
if (__HAL_PWR_GET_FLAG(PWR_FLAG_WU) != RESET)

HAL_PWR_EnterSTANDBYMode();
while (1)
{
}
}
圖片中紅框部分,我看字面翻譯就是說這2個標志位,一個是用來說明曾進入待機模式;另一個是曾被喚醒過,通過判斷這個,認為設備進入過待機模式,那么就可以發送資料;若沒進入過,那就先進入待機,不發資料。
uj5u.com熱心網友回復:
怎么沒人回復呢uj5u.com熱心網友回復:
可以自己加個標志位,表示剛上電,還未發數轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/29104.html
標籤:單片機/工控
上一篇:這個 Error: W25Q128 flash device is initialize fail.不知道什么問題?
下一篇:基于SOPC的DDS設計
