上图中,第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循环。
|