#include"stm32l1xx.h"
#include<stdio.h>
#define DeIay(n) while((n)--)
void RCC_HSI_Configuration(void);/*ϵͳʱÖÓÉèÖÃ*/
void GPIO_Configuration(void);/*ÉèÖÃI/O*/
int main(void)
{
unsigned long n=500;
RCC_HSI_Configuration();/*ϵͳʱÖÓÉèÖÃ*/
GPIO_Configuration();/*ÉèÖÃI/O*/
printf("Program Running!\n");
while(1)/*ʹÓÃPC13À´¿ØÖƵÆÒÔ1HzµÄƵÂʲ»¶ÏÉÁ˸*/
{
/*Êä³ö¸ßµçƽ*/
GPIO_SetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_11);
GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11);
GPIO_SetBits(GPIOC,GPIO_Pin_12|GPIO_Pin_13);
GPIO_SetBits(GPIOD,GPIO_Pin_13);
DeIay(n);/*ÑÓʱº¯Êý*/
/*Êä³öµÍµçƽ*/
GPIO_ResetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_11);
GPIO_ResetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11);
GPIO_ResetBits(GPIOC,GPIO_Pin_12|GPIO_Pin_13);
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
DeIay(n);/*ÑÓʱº¯Êý*/
}
}
/*¸´Î»ºÍʱÖÓÅäÖú¯Êý*/
void RCC_HSI_Configuration(void)
{
ErrorStatus HSIStartUpStatus; /*ʹÓÃö¾ÙÀàÐÍErrorStatus¶¨Òåö¾ÙÀàÐͱäÁ¿HSEStartUpStatus,±íʾ¸ßËÙʱÖÓµÄÆô¶¯×´Ì¬*/
RCC_DeInit(); /*¸´Î»ÏµÍ³Ê±ÖÓÉèÖÃ,½«ÍâÉèRCC¼Ä´æÆ÷ÖØÉèΪĬÈÏÖµ,Õâ¾ä±ØÐëÒª*/
RCC_HSICmd(ENABLE); /*ʹÄÜHSI*/
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET) /*µÈ´ýHSIÆðÕñ²¢Îȶ¨*/
{}
/*ÅжÏHSIÆðÕñÊÇ·ñ³É¹¦,ÊÇÔò½øÈëif()ÄÚ²¿*/
if(HSIStartUpStatus==SUCCESS)
{
RCC_HCLKConfig(RCC_SYSCLK_Div1); /*ÉèÖøßËÙ×ÜÏßʱÖÓ,Ñ¡ÔñHCLK(AHB)ʱÖÓԴΪSYSCLK1·ÖƵ,ÅäÖÃAHBƵÂÊÓëϵͳʱÖÓÒ»ÖÂ*/
RCC_PCLK2Config(RCC_HCLK_Div1); /*Ñ¡ÔñPCLK2ʱÖÓԴΪHCLK(AHB)1·ÖƵ,¶¨Òå¸ßËÙAPBʱÖÓƵÂÊ*/
RCC_PCLK1Config(RCC_HCLK_Div2); /*Ñ¡ÔñPCLK1ʱÖÓԴΪHCLK(AHB)2·ÖƵ,¶¨ÒåµÍËÙAPBʱÖÓƵÂÊ*/
/*ÉèÖÃFLASHÑÓʱÖÜÆÚÊýλ1¸ö.µ±ÏµÍ³Ê±ÖÓƵÂÊΪ0-24MHzʱ,²»ÐèÒª²åÈëµÈ´ýÖÜÆÚ,ÔòµÈ´ýÖÜÆÚ¸öÊýΪ0¼´Ê¹FLASH_Latency_0;
µ±ÏµÍ³Ê±ÖÓƵÂÊΪ24-48MHzʱ,ÐèÒª²åÈë1¸öµÈ´ýÖÜÆÚ,ÔòµÈ´ýÖÜÆÚ¸öÊýΪ1¼´Ê¹FLASH_Latency_1;
µ±ÏµÍ³Ê±ÖÓƵÂÊΪ48-72MHzʱ,ÐèÒª²åÈë2¸öµÈ´ýÖÜÆÚ,ÔòµÈ´ýÖÜÆÚ¸öÊýΪ2¼´Ê¹FLASH_Latency_2*/
FLASH_SetLatency(FLASH_Latency_1);
FLASH_PrefetchBufferCmd(ENABLE); /*ʹÄÜFLASHԤȡָÁ³åÇø*/
/*RCC_PLLSource¶¨ÒåPLLʱÖÓÔ´,Ñ¡ÔñPLLʱÖÓԴΪHSIʱÖÓƵÂÊ(16MHz)µÄ1·ÖƵ,RCC_PLLMul¶¨ÒåPLL±¶ÆµÊý,Ϊ4,ÔòPLL=16MHz¡Á4=64MHz*/
RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_4);
RCC_PLLCmd(ENABLE); /*ʹÄÜPLL*/
/*µÈ´ýPLLÊä³öÎȶ¨
RCC_FLAG_HSIRDY:HSI¾§Õñ×¼±¸¾ÍÐ÷;RCC_FLAG_HSERDY:HSE¾§Õñ¾ÍÐ÷
RCC_FLAG_PLLRDY:PLL¾ÍÐ÷; RCC_FLAG_LSERDY:LSE¾§Õñ¾ÍÐ÷
RCC_FLAG_LSIRDY:LSI¾§Õñ¾ÍÐ÷*/
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
{
}
/*RCC_GetSYSCLKSource¶¨Òå¿ÉÑ¡µÄϵͳʱÖÓ,Ñ¡ÔñSYSCLK(ϵͳ)ʱÖÓԴΪPLL
RCC_SYSCLKSource_HSI:Ñ¡ÔñHSI×÷ΪϵͳʱÖÓ;
RCC_SYSCLKSource_HSE:Ñ¡ÔñHSE×÷ΪϵͳʱÖÓ;
RCC_SYSCLKSource_PLLCLK:Ñ¡ÔñPLLCLK×÷ΪϵͳʱÖÓ*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/*µÈ´ýPLL×÷ΪSYSCLK(ϵͳ)ʱÖÓ±ê־λÖÃλ
0x00:HSI×÷ΪϵͳʱÖÓ;
0x04:HSE×÷ΪϵͳʱÖÓ;
0x08:PLL×÷ΪϵͳʱÖÓ*/
while(RCC_GetSYSCLKSource()!=0x08)
{
}
}
/*RCC_APB2Periph¶¨ÒåAPB2ÍâÉèʱÖÓ,´ò¿ªAPB2×ÜÏßÉϵÄGPIOA,GPIOB,GPIOC,GPIODʱÖÓ*/
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOD,ENABLE);
}
/*ͨÓÃGPIO¶Ë¿ÚÉèÖú¯Êý*/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure; /*GPIO_InitTypeDef¶¨ÒåÓÚstm32f10x_gpio.hÎļþ*/
/*ÉèÖÃLED IO½Å*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_11; /*Ñ¡ÔñÒý½Å*/
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_40MHz; /*GPIO_Speed¶¨ÒåGPIO×î¸ßÊä³öƵÂÊ*/
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; /*GPIO_ModeÉèÖÃÑ¡ÖÐÒý½ÅµÄ¹¤×÷ģʽΪͨÓÃÊä³öģʽ*/
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_11|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9; /*Ñ¡ÔñÒý½Å*/
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_40MHz; /*GPIO_Speed¶¨ÒåGPIO×î¸ßÊä³öƵÂÊ*/
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; /*GPIO_ModeÉèÖÃÑ¡ÖÐÒý½ÅµÄ¹¤×÷ģʽ*/
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_13; /*Ñ¡ÔñÒý½Å*/
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_40MHz; /*GPIO_Speed¶¨ÒåGPIO×î¸ßÊä³öƵÂÊ*/
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; /*GPIO_ModeÉèÖÃÑ¡ÖÐÒý½ÅµÄ¹¤×÷ģʽ*/
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; /*Ñ¡ÔñÒý½Å*/
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_40MHz; /*GPIO_Speed¶¨ÒåGPIO×î¸ßÊä³öƵÂÊ*/
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; /*GPIO_ModeÉèÖÃÑ¡ÖÐÒý½ÅµÄ¹¤×÷ģʽ*/
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_Init(GPIOD,&GPIO_InitStructure);
} |
希望大家看一下