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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-21 05:36
 精彩回答 2  元偷偷看……
ygrc45
2楼-- · 2019-07-21 07:41
 精彩回答 2  元偷偷看……
三叶草
3楼-- · 2019-07-21 11:50
我觉得是为了安全他才这么写的
正点原子
4楼-- · 2019-07-21 13:25
回复【3楼】ygrc45:
---------------------------------
1,那就是有重复了。你可以尝试去掉一句,看看能否正常工作。
2,1,2都回答了。

一周热门 更多>