[蓝牙芯片] 关于CH57X蓝牙的初始化中SysTick_IRQn开关的疑问

[复制链接]
 楼主| lanjackg2003 发表于 2021-5-21 08:00 | 显示全部楼层 |阅读模式
本帖最后由 lanjackg2003 于 2021-5-21 08:01 编辑

EVT包里面BLE需要调用CH57X_BLEInit 此函数进行初始化


  1. /*******************************************************************************
  2. * @fn          CH57X_BLEInit
  3. *
  4. * [url=home.php?mod=space&uid=247401]@brief[/url]       BLE 库初始化
  5. *
  6. * input parameters
  7. *
  8. * @param       None.
  9. *
  10. * output parameters
  11. *
  12. * @param       None.
  13. *
  14. * [url=home.php?mod=space&uid=266161]@return[/url]      None.
  15. */
  16. void CH57X_BLEInit( void )
  17. {
  18.   uint8 i;
  19.   bleConfig_t cfg;
  20.   if ( tmos_memcmp( VER_LIB, VER_FILE, strlen( VER_FILE ) ) == FALSE )
  21.   {
  22.     PRINT( "head file error...\n" );
  23.     while( 1 )
  24.       ;
  25.   }
  26.   SysTick_Config( SysTick_LOAD_RELOAD_Msk );
  27.   PFIC_DisableIRQ( SysTick_IRQn );

  28.   tmos_memset( &cfg, 0, sizeof(bleConfig_t) );
  29.   cfg.MEMAddr = ( u32 ) MEM_BUF;
  30.   cfg.MEMLen = ( u32 ) BLE_MEMHEAP_SIZE;
  31.   cfg.BufMaxLen = ( u32 ) BLE_BUFF_MAX_LEN;
  32.   cfg.BufNumber = ( u32 ) BLE_BUFF_NUM;
  33.   cfg.TxNumEvent = ( u32 ) BLE_TX_NUM_EVENT;
  34.   cfg.TxPower = ( u32 ) BLE_TX_POWER;
  35. #if (defined (BLE_SNV)) && (BLE_SNV == TRUE)
  36.   FLASH_ROM_LOCK( 0 );                    // 解锁flash
  37.   cfg.SNVAddr = ( u32 ) BLE_SNV_ADDR;
  38.   cfg.readFlashCB = Lib_Read_Flash;
  39.   cfg.writeFlashCB = Lib_Write_Flash;
  40. #endif
  41. #if( CLK_OSC32K )        
  42.   cfg.SelRTCClock = ( u32 ) CLK_OSC32K;
  43. #endif
  44.   cfg.ConnectNumber = ( PERIPHERAL_MAX_CONNECTION & 3 ) | ( CENTRAL_MAX_CONNECTION << 2 );
  45.   cfg.srandCB = SYS_GetSysTickCnt;
  46. #if (defined TEM_SAMPLE)  && (TEM_SAMPLE == TRUE)
  47.   cfg.tsCB = HAL_GetInterTempValue;    // 根据温度变化校准RF和内部RC( 大于7摄氏度 )
  48. #if( CLK_OSC32K )
  49.   cfg.rcCB = Lib_Calibration_LSI;    // 内部32K时钟校准
  50. #endif
  51. #endif
  52. #if (defined (HAL_SLEEP)) && (HAL_SLEEP == TRUE)
  53.   cfg.WakeUpTime = WAKE_UP_RTC_MAX_TIME;
  54.   cfg.sleepCB = CH57X_LowPower;    // 启用睡眠
  55. #endif
  56. #if (defined (BLE_MAC)) && (BLE_MAC == TRUE)
  57.   for ( i = 0; i < 6; i++ )
  58.     cfg.MacAddr[i] = MacAddr[5 - i];
  59. #else
  60.   {
  61.     uint8 MacAddr[6];
  62.     GetMACAddress( MacAddr );
  63.     for(i=0;i<6;i++) cfg.MacAddr[i] = MacAddr[i];    // 使用芯片mac地址
  64.   }
  65. #endif
  66.   if ( !cfg.MEMAddr || cfg.MEMLen < 4 * 1024 )
  67.     while( 1 )
  68.       ;
  69.   i = BLE_LibInit( &cfg );
  70.   if ( i )
  71.   {
  72.     PRINT( "LIB init error code: %x ...\n", i );
  73.     while( 1 )
  74.       ;
  75.   }
  76. }
我想问一下,初始化当中的 SysTick_IRQn 中断是否一定得关掉。
当前我代码中的其他功能都是使用 SysTick_IRQn 中断


评论

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

本版积分规则

56

主题

441

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部