(2)代码实现
#include "sys.h"
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
void Stm32_Clock_Init()
{
uint8_t temp=0; /* 定义temp */
RCC_DeInit (); /* 复位RCC */
RCC->CR|=1<<16; /* HSE使能 */
while(!(RCC->CR>>17)); /* 判断HSE是否Ready */
RCC->CFGR|=1<<16; /* 配置HSE时钟作为PLL时钟输入 */
RCC->CFGR|=0x00100000; /* PLL 6倍输出 */
RCC->CR|=1<<24; /* PLL使能 */
while(!(RCC->CR>>25)); /* 判断PLL时钟是否Ready */
RCC->CFGR|=0x02; /* 选择PLL为SYSCLK */
while(temp!=0x02) /* 判断SYSCLK是否设置成功 */
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
}
int main(void)
{
Stm32_Clock_Init();
RCC->APB2ENR|=1<<2; /* IOPA使能 */
GPIOA->CRH&=0xFFFFFFF0; /* PA8输出,CHR后四位清零 */
GPIOA->CRH|=0x0000000B; /* 推挽输出,最高50MHZ */
RCC->CFGR|=4<<24; /* SYSCLK输出 */
//RCC->CFGR|=5<<24; /* HSI输出 */
//RCC->CFGR|=6<<24; /* HSE输出 */
//RCC->CFGR|=7<<24; /* PLL 2分频后输出 */
}
|