本帖最后由 lanjackg2003 于 2021-5-21 08:01 编辑
EVT包里面BLE需要调用CH57X_BLEInit 此函数进行初始化
/*******************************************************************************
* @fn CH57X_BLEInit
*
* [url=home.php?mod=space&uid=247401]@brief[/url] BLE 库初始化
*
* input parameters
*
* @param None.
*
* output parameters
*
* @param None.
*
* [url=home.php?mod=space&uid=266161]@return[/url] None.
*/
void CH57X_BLEInit( void )
{
uint8 i;
bleConfig_t cfg;
if ( tmos_memcmp( VER_LIB, VER_FILE, strlen( VER_FILE ) ) == FALSE )
{
PRINT( "head file error...\n" );
while( 1 )
;
}
SysTick_Config( SysTick_LOAD_RELOAD_Msk );
PFIC_DisableIRQ( SysTick_IRQn );
tmos_memset( &cfg, 0, sizeof(bleConfig_t) );
cfg.MEMAddr = ( u32 ) MEM_BUF;
cfg.MEMLen = ( u32 ) BLE_MEMHEAP_SIZE;
cfg.BufMaxLen = ( u32 ) BLE_BUFF_MAX_LEN;
cfg.BufNumber = ( u32 ) BLE_BUFF_NUM;
cfg.TxNumEvent = ( u32 ) BLE_TX_NUM_EVENT;
cfg.TxPower = ( u32 ) BLE_TX_POWER;
#if (defined (BLE_SNV)) && (BLE_SNV == TRUE)
FLASH_ROM_LOCK( 0 ); // 解锁flash
cfg.SNVAddr = ( u32 ) BLE_SNV_ADDR;
cfg.readFlashCB = Lib_Read_Flash;
cfg.writeFlashCB = Lib_Write_Flash;
#endif
#if( CLK_OSC32K )
cfg.SelRTCClock = ( u32 ) CLK_OSC32K;
#endif
cfg.ConnectNumber = ( PERIPHERAL_MAX_CONNECTION & 3 ) | ( CENTRAL_MAX_CONNECTION << 2 );
cfg.srandCB = SYS_GetSysTickCnt;
#if (defined TEM_SAMPLE) && (TEM_SAMPLE == TRUE)
cfg.tsCB = HAL_GetInterTempValue; // 根据温度变化校准RF和内部RC( 大于7摄氏度 )
#if( CLK_OSC32K )
cfg.rcCB = Lib_Calibration_LSI; // 内部32K时钟校准
#endif
#endif
#if (defined (HAL_SLEEP)) && (HAL_SLEEP == TRUE)
cfg.WakeUpTime = WAKE_UP_RTC_MAX_TIME;
cfg.sleepCB = CH57X_LowPower; // 启用睡眠
#endif
#if (defined (BLE_MAC)) && (BLE_MAC == TRUE)
for ( i = 0; i < 6; i++ )
cfg.MacAddr[i] = MacAddr[5 - i];
#else
{
uint8 MacAddr[6];
GetMACAddress( MacAddr );
for(i=0;i<6;i++) cfg.MacAddr[i] = MacAddr[i]; // 使用芯片mac地址
}
#endif
if ( !cfg.MEMAddr || cfg.MEMLen < 4 * 1024 )
while( 1 )
;
i = BLE_LibInit( &cfg );
if ( i )
{
PRINT( "LIB init error code: %x ...\n", i );
while( 1 )
;
}
}
我想问一下,初始化当中的 SysTick_IRQn 中断是否一定得关掉。
当前我代码中的其他功能都是使用 SysTick_IRQn 中断
|
@WCHTech2 :能不能把考虑systick放出来,可以通过外部提供tick给bel协议栈使用 这样的话,系统灵活性会高,不然的话外设都给ble封装的静态库文件占用了,用户想用使用的外设都用不了
SysTick_IRQn 已被蓝牙协议栈中使用,外部不可使用