CH579M奇怪的问题

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);

  }

  R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;

  R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;

PRINT("why?\n"); // 加上就正常,去掉就崩溃

  R16_CLK_SYS_CFG = RB_CLK_OSC32M_XT|(2<<6)|0x08; // 32M -> Fsys

  R8_SAFE_ACCESS_SIG = 0;

如上,在ble初始化方法里,加上PRINT("why?\n")就正常,去掉就崩溃。

另外当使用Peripheral例程时,如果把时钟设置为内部CLK_OSC32K=1时,频繁断开重连reason: 8,设置为外部时钟的话,就正常。


您好,您板子上有32M晶振吗,两个问题是不是联系起来看待的。

配置安全寄存器是为了改用外部32M晶振作为高频时序源,默认使用的是内部32M振荡器。进入安全访问模式后有16个主频周期的写寄存器时间限制,加了打印后超时导致配置失败,继续用内部32M振荡器运行;没有加打印的话,由于缺少外部32M晶振产生主频,运行异常。在没有使用外部32M晶振的前提下,使用偏差相对较大的内部32M振荡器产生32K时序,时钟精度不足以支持运行BLE功能,易产生断连;使用外部32K晶振时,时钟精度足够运行BLE。


只有登录才能回复,可以选择微信账号登录