一、空间分配
二、代码流程
1)user_custom_parameters 函数
__jump_table 结构体中保存了一些配置信息:
void user_custom_parameters(void)
{
/******* 设置本机蓝牙地址 *********/
__jump_table.addr.addr[0] = 0x01;
__jump_table.addr.addr[1] = 0x01;
__jump_table.addr.addr[2] = 0x01;
__jump_table.addr.addr[3] = 0x01;
__jump_table.addr.addr[4] = 0x01;
__jump_table.addr.addr[5] = 0xc1;
__jump_table.image_size = 0x19000; // 程序文件上限 100KB
__jump_table.firmware_version = 0x00010000; //版本信息
__jump_table.system_clk = SYSTEM_SYS_CLK_48M; //系统时钟为 48M
//协议栈中使用的key(包括 IRK,椭圆曲线加密算法中的 public key 和 privatekey)在 flash 中的保存地址为 0x30000
jump_table_set_static_keys_store_offset(0x30000);
}
2)user_entry_before_ble_init 函数
void user_entry_before_ble_init(void)
{
/* set system power supply in BUCK mode */
pmu_set_sys_power_mode(PMU_SYS_POW_BUCK);
pmu_enable_irq(PMU_ISR_BIT_ACOK
| PMU_ISR_BIT_ACOFF
| PMU_ISR_BIT_ONKEY_PO
| PMU_ISR_BIT_OTP
| PMU_ISR_BIT_LVD
| PMU_ISR_BIT_BAT
| PMU_ISR_BIT_ONKEY_HIGH);
NVIC_EnableIRQ(PMU_IRQn);
/* AT command interface */
app_at_init();
……
}
3)user_entry_after_ble_init 函数
user_entry_after_ble_init 为 BLE stack 在系统中初始化完成并成功创建 BLE stack task 后,用户进行自定义行为的入口
4)睡眠唤醒用户接口
- user_entry_before_sleep_imp
该函数在进入睡眠前被调用,用户可在里面实现控制 GPIO 的状态保持 - user_entry_after_sleep_imp
在系统唤醒后,用户可以在该函数中重新进行外设的初始化(进入睡眠后外设的状态因为掉电都会丢失)等操作