天天看点

STM32(2):点亮LED(下)概述

概述

点亮LED表面看起来貌似很简单,但是如何想要搞清楚其背后牵涉的每一行代码的具体含义,还是需要花费一些功夫的,而且,只有把LED的背后只是搞清楚了,才算嵌入式开发的基础入门。

今天我们就来研究一下LED的重头戏,RCC_Init;什么是RCC?上手册:

STM32(2):点亮LED(下)概述

RCC

RCC,Reset and Clock Control,重置以及时钟控制;STM32手册使用了两个章节来对其进行描述,可见它的重要性;对于RCC的初始化也是比较复杂,里面包含了STM32对于时钟的相关机制,

代码总览

void RCC_init(uint16_t PLL)
{
	uint32_t temp=0;  

	*((uint32_t *)RCC_CR) |= 0x00010000; 
	while(!( *((uint32_t *)RCC_CR) >>17));

	*((uint32_t *)RCC_CFGR) = 0X00000400;

	PLL -= 2;
	*((uint32_t *)RCC_CFGR) |= PLL<<18;   

	*((uint32_t *)RCC_CFGR) |= 1<<16;

	*((uint32_t *)FLASH_ACR)|=0x2;
	*((uint32_t *)RCC_CR) |= 0x01000000;
	while(!(*((uint32_t *)RCC_CR) >> 25));

	*((uint32_t *)RCC_CFGR) |=
           

继续阅读