void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus = RCC_WaitForHSEStartUp();
/* ?HSE?????????? */
if(HSEStartUpStatus == SUCCESS)
{
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
/* Flash 2 wait state */
// FLASH_SetLatency(FLASH_Latency_2);
/* Enable Prefetch Buffer */
// FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
}
然后配置GPIO:
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//定义指向结构体的指针类型
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//选中管脚8,库函数124页
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设置为推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置选中管脚的速率
GPIO_Init(GPIOA, &GPIO_InitStructure);//根据GPIO_InitStructure 中指定的参数初始化外设 GPIOx 寄存器
GPIO_SetBits(GPIOA,GPIO_Pin_8);//拉高
}
所有代码如下
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
// void RCC_Configuration(void)
// {
// ErrorStatus HSEStartUpStatus;
// RCC_DeInit();
// RCC_HSEConfig(RCC_HSE_ON);
// HSEStartUpStatus = RCC_WaitForHSEStartUp();
// /* ?HSE?????????? */
// if(HSEStartUpStatus == SUCCESS)
// {
// RCC_HCLKConfig(RCC_SYSCLK_Div1);
// RCC_PCLK2Config(RCC_HCLK_Div1);
// RCC_PCLK1Config(RCC_HCLK_Div2);
// /* Flash 2 wait state */
// // FLASH_SetLatency(FLASH_Latency_2);
// /* Enable Prefetch Buffer */
// // FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
// RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
// RCC_PLLCmd(ENABLE);
// while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
// {
// }
// RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
// while(RCC_GetSYSCLKSource() != 0x08)
// {
// }
// }
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
// }
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
}
int main(void)
{
// RCC_Configuration();
// SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_Configuration();
delay_init(72);
NVIC_Configuration();
while(1)
{
GPIO_SetBits(GPIOA,GPIO_Pin_8);
delay_ms(250);
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
delay_ms(250);//一定要加延时
}
}