mcu_ab568x/app/projects/AB5681F_240_64M/main.c
2025-05-30 18:03:10 +08:00

146 lines
3.4 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "include.h"
//320x385 60Hz 数据量为14.784MByte
const u8 tbl_despi_clk1[] = {
[SYS_88M] = 1, //44M
[SYS_132M] = 2, //44M
[SYS_144M] = 2, //48M
#if MODE_4WIRE_8BIT
[SYS_176M] = 2, //58M 需要注意屏幕是否支持这么高的速度
#else
[SYS_176M] = 3, //44M
#endif
[SYS_192M] = 3, //48M
};
const u8 tbl_despi_clk2[] = {
[SYS_88M] = 2, //29.3M
[SYS_132M] = 4, //26.4M
[SYS_144M] = 4, //28.8M
[SYS_176M] = 2,//5, /29.3M
[SYS_192M] = 2,//6 //27.4M
};
//设置DESPI CLK接口
void sys_set_despi_baud_hook(u32 sys_clk)
{
sys_cb.despi_baud1 = tbl_despi_clk1[sys_clk];
sys_cb.despi_baud2 = tbl_despi_clk2[sys_clk];
sys_cb.despi_baud = sys_cb.te_mode ? sys_cb.despi_baud1 : sys_cb.despi_baud2;
DESPIBAUD = sys_cb.despi_baud;
}
const uint8_t *bt_rf_get_inq_param(void)
{
return NULL;
}
u8 get_chip_package(void)
{
return 0;
}
const uint8_t *bt_rf_get_param(void)
{
return (const uint8_t *)&xcfg_cb.rf_pa_gain;
}
//正常启动Main函数
int main(void)
{
u32 rst_reason, rtccon10;
rst_reason = LVDCON;
rtccon10 = RTCCON10;
bsp_sys_init();
printf("Hello AB5680: %08x\n", rst_reason);
if (rst_reason & BIT(24))
{
printf("SW reset\n");
}
else if (rst_reason & BIT(19))
{
if (rtccon10 & BIT(10))
{
printf("WKO10S reset\n");
clear_allData();
#if USE_APP_TYPE
app_platform_init();
#endif
bsp_vbat_percent_init();
bt_nor_delete_link_info();
/* 心率传感器初始化 */
bsp_sensor_hr_init();
bsp_sensor_hr_stop();
}
else
{
// printf("RTC_WDT reset\n");
}
}
else if (rst_reason & BIT(18))
{
// printf("WKUP reset\n");
}
else if (rst_reason & BIT(17))
{
// printf("VUSB reset\n");
}
else if (rst_reason & BIT(16))
{
// printf("WDT reset\n");
}
printf("cm_read8(BLE_OTA_FLAG)--%d\n", cm_read8(BLE_OTA_FLAG));
// 长按PP/POWER开机
if (cm_read8(BLE_OTA_FLAG) == 1)
{
u8 ble_ota = 0;
cm_write((u8 *)&ble_ota, BLE_OTA_FLAG, 1);
#if defined(TJD_SET_PUSH_DIAL_FLAH_TO_BUILT_IN_DIAL_FLASH)
sys_cb.ble_dial_updated = 0;
param_dial_update_write();
#endif
cm_clear(0);
cm_sync();
func_pwroff(1);
}
func_cb.sta = FUN_POWER_ON_LOGO;
if (bsp_charge_sta_get() > 0) {
func_cb.sta = FUNC_CHARGE;
}
func_run();
return 0;
}
//升级完成
void update_complete(int mode)
{
// printf("update_complete mode = %d\n", mode);
bsp_update_init();
if (mode == 0) {
WDT_DIS();
while (1)
;
}
user_data_recovery_clear();
func_cb.sta = FUNC_PWROFF;
bsp_sys_init();
clear_allData();
bt_nor_delete_link_info();
/*写CM区必须放在bsp_sys_init()初始化函数之后否则蓝牙盒子OTA后走这里会报错导致看门狗复位升级失败重启*/
#if defined(TJD_SET_PUSH_DIAL_FLAH_TO_BUILT_IN_DIAL_FLASH)
sys_cb.ble_dial_updated = 0;
param_dial_update_write();
#endif
func_run();
}