我的一个lvgl工程从0x8000000启动,lvgl可以跑14帧,但我把lvgl工程写到0x800A000,用iap从0x800A000启动只有7帧?
int main(void)
{
system_clock_config();
at32_board_init();
key_config();
if(gpio_input_data_bit_read(GPIOD, GPIO_PINS_12)==0 && gpio_input_data_bit_read(GPIOD, GPIO_PINS_13)==0){
flash_upgrade_flag(FALSE);
}
if(flash_upgrade_flag_read() == TRUE)
{
/* check app starting address whether 0x08xxxxxx */
if(((*(uint32_t*)(APP_START_ADDR + 4)) & 0xFF000000) == 0x08000000)
app_load(APP_START_ADDR);//APP_START_ADDR=0x0800A000
}
while(1)
};
}
以上是iap启动简化代码
int main(void)
{
nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0xA000);//0x0800A000
nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
MainState main_state = MAIN_STATE_INIT_ML307;
crm_clocks_freq_type get_rcc_clock;
MqttSetData data;
volatile uint32_t last_mqtt_inti_time = 0;
volatile uint32_t last_mqtt_pub_time = 0;
volatile uint32_t last_signal_check_time=0;
int ret=0;
int i=0;
int dir=0;
char buffer[128];
uint32_t cnt=0;
system_clock_config();
delay_init();
uart_print_init(115200);
tmr7_int_init(239, 999);
usart2_config();
gn03s_init();
lcd_struct = &lcd_dev_struct;
lcd_struct->lcd_init();
tp_dev.init();
lv_init();
lv_port_disp_init();
lv_port_indev_init();
setup_ui(&guider_ui);
events_init(&guider_ui);
ml307r_init();
ml307r_on();
pwm_tmr3_init();
adc_dma_init();
SystemParamInit();
key_config();
// 初始化上下文
mqtt_init_param(&mqtt_param);
ml307_init_context(&ml307_ctx);
mqtt_init_context(&mqtt_ctx, &ml307_ctx);
http_init_context(&http_ctx, &ml307_ctx);
while(1)
{
tp_dev.scan(0);
lv_task_handler();
home_ui(&mqtt_ctx,key_ret);
setups_ui(&mqtt_ctx,key_ret);
}
}
以上是lvgl简化代码
|
|