RCC_LSEConfig库函数

2019-07-21 01:27发布

void RCC_LSEConfig(uint8_t RCC_LSE)
{
   /* Reset LSEON bit */
  *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_OFF;
  /* Reset LSEBYP bit */
  *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_OFF;

  /* Configure LSE (RCC_LSE_OFF is already covered by the code section above) */
  switch (RCC_LSE)
  {
    case RCC_LSE_Bypass:
      /* Set LSEBYP and LSEON bits */
      *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_Bypass | RCC_LSE_ON;
      break;
    }
}

这个库函数有点看不懂,首先
/* Reset LSEON bit */
/* Reset LSEBYP bit */
两条下面的语句是一模一样的,为什么要写两遍呢?(橙 {MOD})

其次,参考手册里描述:
2 LSEBYP: 外部低速振荡器旁路 (External low-speed oscillator bypass)
由软件置 1 和清零,用于旁路调试模式下的振荡器。只有在禁止 LSE 时钟后才能写入该位。

只有在禁止LSE时钟后才能写入该位,函数中是开启LSE时钟同时写入该位的?(绿 {MOD})

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。