野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20964|回复: 2

求助——————HSE配置系统时钟问题

[复制链接]
发表于 2020-9-11 19:52:35 | 显示全部楼层 |阅读模式

野火论坛202009111952166302..png

上图中,第7行代码 RCC->CR |= ((uint32_t)RCC_CR_HSEON);
查询系统定义,#define  RCC_CR_HSEON     ((uint32_t)0x00010000)   ,发现RCC_CR_HSEON=0x00010000,RCC_CR初始值为0x0000 xx83 , RCC->CR =RCC->CR |=RCC_CR_HSEON=0x0000 xx83 |= 0x0001 0000 = 0x0001 xx83, 将RCC->CR寄存器第16位置1,HSE振荡器开启。

接着,在do-while循环中,HSEStatus = RCC->CR & RCC_CR_HSERDY;
查询系统定义#define  RCC_CR_HSERDY     ((uint32_t)0x00020000),又上一句将RCC->CR寄存器第16位置1,RCC->CR & RCC_CR_HSERDY=0x0001 xx83 & 0x0002 0000 =0x0000 0000. 则HSEStatus的值始终为0,无法结束while循环。

回复

使用道具 举报

发表于 2020-9-13 23:19:12 | 显示全部楼层
HSEStatus=0,它就跳出循环了。
一直干do{}里面的内容,直到while()条件成立,就结束跳出来了。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-9-14 20:53:34 | 显示全部楼层
十分感谢,懂了。do—while循环和while循环弄混了
再次感谢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 10:11 , Processed in 0.078596 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表