update:
设备屏蔽功能 适配新版界面
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include "bsp_buzzer.h"
|
||||
#include "bsp_w25q.h"
|
||||
|
||||
/*开关控制电平,使用同一的电平控制方式*/
|
||||
#define BUZZER_GPIO_ON GPIO_PIN_SET
|
||||
@@ -14,6 +15,7 @@ static void bsp_buzzer_on(void);
|
||||
static void bsp_buzzer_off(void);
|
||||
static void bsp_buzzer_enable(void);
|
||||
static void bsp_buzzer_disable(void);
|
||||
static void bsp_buzzer_flash_data_load(void);
|
||||
|
||||
bsp_buzzer_t buzzer =
|
||||
{
|
||||
@@ -35,11 +37,40 @@ static void bsp_buzzer_init(void)
|
||||
{
|
||||
BUZZER_OFF;
|
||||
p_buzzer->p_flash_data = &flash_data;
|
||||
bsp_buzzer_flash_data_load();
|
||||
}
|
||||
|
||||
static void bsp_buzzer_flash_data_save(void)
|
||||
{
|
||||
|
||||
// 擦除整个扇区(地址是扇区起始)
|
||||
w25q32_sector_erase(W25Q32_BUZZER_STATE_ADDR);
|
||||
w25q32.write(W25Q32_BUZZER_STATE_ADDR, (uint8_t*)&flash_data, sizeof(bsp_buzzer_flash_data_t));
|
||||
}
|
||||
|
||||
static void bsp_buzzer_flash_data_load(void)
|
||||
{
|
||||
w25q32.read(W25Q32_BUZZER_STATE_ADDR, (uint8_t*)&flash_data, sizeof(bsp_buzzer_flash_data_t));
|
||||
|
||||
// 检查是否全为0xFF(首次使用)
|
||||
uint8_t *p = (uint8_t*)&flash_data;
|
||||
u8 all_ff = 1;
|
||||
for (u8 i = 0; i < sizeof(bsp_buzzer_flash_data_t); i++) {
|
||||
if (p[i] != 0xFF) {
|
||||
all_ff = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (all_ff) {
|
||||
// 首次使用,默认关闭蜂鸣器
|
||||
flash_data.sw = USR_DISABLE;
|
||||
bsp_buzzer_flash_data_save();
|
||||
}
|
||||
|
||||
// 根据加载的状态设置蜂鸣器使能
|
||||
if (flash_data.sw == USR_ENABLE) {
|
||||
p_buzzer->p_flash_data->sw = flash_data.sw;
|
||||
}
|
||||
}
|
||||
|
||||
static void bsp_buzzer_task(void)
|
||||
|
||||
Reference in New Issue
Block a user