打印
[蓝牙芯片]

关于CH57X蓝牙的初始化中SysTick_IRQn开关的疑问

[复制链接]
2563|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lanjackg2003|  楼主 | 2021-5-21 08:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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 中断


使用特权

评论回复
评论
lanjackg2003 2021-5-21 11:01 回复TA
@WCHTech2 :能不能把考虑systick放出来,可以通过外部提供tick给bel协议栈使用 这样的话,系统灵活性会高,不然的话外设都给ble封装的静态库文件占用了,用户想用使用的外设都用不了 
WCHTech2 2021-5-21 09:27 回复TA
SysTick_IRQn 已被蓝牙协议栈中使用,外部不可使用 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

437

帖子

7

粉丝