(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分频后输出 */
-
-
- }
|