//TI-BLE协议栈main函数
int main(void)
{
/* Initialize hardware */
HAL_BOARD_INIT(); //初始化时钟稳定时钟等等
// Initialize board I/O
InitBoard( OB_COLD );//冷启动,关闭了led灯与中断, 一边接下来的各种初始化不受干扰
/* Initialze the HAL driver */
HalDriverInit(); //各种驱动的初始化、如按键、lcd、adc、usb、uart等
/* Initialize NV system */
osal_snv_init(); //snv内部用于保存配对数据或你的用户自定义数据的一段flash,4kB空间
/* Initialize LL */
/* Initialize the operating system */
osal_init_system(); //oasl操作系统初始化, 包含内存分配、消息队列、定时器、电源管理和任务等
/* Enable interrupts */
HAL_ENABLE_INTERRUPTS(); //开启全局中断
// Final board initialization
InitBoard( OB_READY ); //设置标志标示系统初始化完毕
#if defined ( POWER_SAVING ) //如果使能了低功耗,就启动低功耗模式
osal_pwrmgr_device( PWRMGR_BATTERY );
#endif
/* Start OSAL */
osal_start_system(); //osal 操作系统启动,实际上是一个大循环
return 0;
}
1.HAL_BOARD_INIT()详解
/* Board Initialization */
#define HAL_BOARD_INIT() \
{ \
/* Set to 16Mhz to set 32kHz OSC, then back to 32MHz */ \
START_HSOSC_XOSC();/*启动所有晶振并等待晶振稳定*/ \
SET_OSC_TO_HSOSC();/*使用16MHzRC振荡电路为主时钟并等待主时钟稳定*/ \
SET_32KHZ_OSC(); /*使用32KHz片内或片外)晶振(为休眠时钟并等待休眠时钟稳定*/ \
SET_OSC_T