首先,代码分bootloader 和App 两个部分。首先执行的是bootloader部分,然后跳转到App.
看代码:
bootloader App
1.(初始化外围信息,串口打印等) 1.
app_periph_init(); app_periph_init();//外设初始化
==>bootloader_wdt_init(); ==>pwr_mgmt_mode_set();
==>pwr_mgmt_mode_set();
2.(调转App) 2.
user_boot(); ty_system_init();
==>bootloader_info_get(); ==>ty_system_log_init();
==>is_fw_need_copy(); ==>ty_flash_init();
==>is_jump_user_fw();==>jump_user_fw(); ======> Jump to App ==>ty_uart_init();
==>ty_uart2_init();
==>ty_rtc_init();
==>ty_pin_init();//gpio初始化
3. 3.
while (1) ty_ble_init();
{
pwr_mgmt_schedule(); 4.
} tuya_ble_sdk_demo_init();
==>tuya_ble_sdk_init()
==>lock_common_init()
==>lock_timer_creat()
==>tuya_ble_ota_init()
==>tuya_ble_disconnect_and_reset_timer_init()
==>tuya_ble_update_conn_param_timer_init()
5.
ty_ble_start_adv();
6.
while (1)
{
ty_system_mainloop();
//ty_system_wdt_feed();
//app_log_flush();
pwr_mgmt_schedule();
}
tuya_ble_status_t tuya_ble_sdk_init(tuya_ble_device_param_t * param_data)
1.
tuya_ble_storage_init();
==> tuya_ble_nv_init();//(啥也没做)
tuya_ble_storage_load_settings();//加载存储的设置
2.
tuya_ble_set_device_version();//设置设备的版本号
tuya_ble_set_external_mcu_version();//设置mcu的版本号
3.
tuya_ble_connect_status_set(); //设置连接状态
4.
tuya_ble_adv_change();//更改了一些数据
5.
tuya_ble_event_init();//事件初始化
6.
tuya_ble_gatt_send_queue_init();
==> tuya_ble_queue_init();//初始化队列参数(tuya_ble_queue_t)
7.
tuya_ble_common_uart_init();//设置通用串口(啥也没做)
8.
tuya_ble_connect_monitor_timer_init();
==> tuya_ble_timer_create();//创建了一个定时器
... #define tuya_ble_connect_monitor_timeout_ms 30000
版权声明:本文为teleger原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。