intmain()
{
u32i=0;
/*芯片装备初始化———————————————————-*/
RCC_Configuration();//复位和时钟操控装备
NVIC_Configuration();//嵌套中止向量操控器装备
GPIO_Configuration();//I/O装备
USART_Configuration();//串口装备
/*指示灯初始化————————————————————*/
GPIO_SetBits(GPIOA,GPIO_Pin_12);//平息LED1
GPIO_SetBits(GPIOA,GPIO_Pin_15);//平息LED2
while(1)
{
i++;
if(500000==i)//LED1业绩,一共正常。
{
GPIO_WriteBit(GPIOA,GPIO_Pin_12,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_12)));
i=0;
}
}
}
/******************************************************************************************
*函数称号:RCC_Configuration
*功用描绘:
*参数:
*
*返回值:
*作者:
*创立日期:2013年5月2日
*大局变量:
*大局静态变量:
*部分静态变量:
******************************************************************************************/
voidRCC_Configuration(void)
{
/*RCCsystemreset(fordebugpurpose)*/
RCC_DeInit();//RCC体系初始化,设为默认值
/*EnableHSE*/
RCC_HSEConfig(RCC_HSE_ON);//使能外部晶振(8MHz),封闭旁路
/*WaittillHSEisready*/
HSEStartUpStatus=RCC_WaitForHSEStartUp();//等候外部高速时钟安稳
if(HSEStartUpStatus==SUCCESS)//时钟安排妥当成功
{
/*EnablePrefetchBuffer*/
/*AHB预分频系数不为1时,有必要置预取缓冲区处于舱位状况
应与闪存存储器的拜访时刻一同运用
激活和制止预取形式时应该在制止快速时钟时进行(封闭AHB的分频器)*/
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//
/*HCLK=SYSCLK*/
RCC_HCLKConfig(RCC_SYSCLK_Div1);//SYSCLK不分频,作为AHB时钟(HCLK,闪存、SRAM等外设时钟设置):36M
/*PCLK2=HCLK*/
RCC_PCLK2Config(RCC_HCLK_Div1);//AHBCLK不分频,作为高速APB(APB2)时钟(PCLK2):36M
/*PCLK1=HCLK/2*/
RCC_PCLK1Config(RCC_HCLK_Div1);//AHBCLK二分频,作为低速APB(APB1)时钟(PCLK1):36M
/*ADCCLK=PCLK2/6*/
RCC_ADCCLKConfig(RCC_PCLK2_Div6);//PCLK26分频,作为ADC时钟(ADCCLK):6M
/*Flash2waitstate*/
/*(SYSCLK)频率与闪存拜访时刻的联系:
0等候周期,当0 1等候周期,当24MHz 2等候周期,当48MHz */ FLASH_SetLatency(FLASH_Latency_1);//设置1个等候周期 /*PLLCLK=8MHz/2*9=36MHz*/ RCC_PLLConfig(RCC_PLLSource_HSE_Div2,RCC_PLLMul_9);//外部时钟2分频后,9倍频(PLL),得36MHz /*EnablePLL*/ RCC_PLLCmd(ENABLE);//使能PLL电路
/*WaittillPLLisready*/
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)//等候PLL电路安排妥当
{
}
/*SelectPLLassystemclocksource*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//挑选PLL倍频时钟作为体系时钟(SYSCLK):36MHz
/*WaittillPLLisusedassystemclocksource*/
while(RCC_GetSYSCLKSource()!=0x08)//等候PLL切换成体系时钟源
{
}
/*SelectHSEassystemclocksource*/
//RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);//挑选外部晶振作为体系时钟源(SYSCLK)
/*WaittillHSEisusedassystemclocksource*/
//while(RCC_GetSYSCLKSource()!=0x04)//等候HSE切换成体系时钟源,并作为输出时钟(该时钟或许会有毛刺,仅作调试)
//{
//}
}
/*GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、AFIO时钟使能*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC
|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOF|RCC_APB2Periph_AFIO,ENABLE);
/*USART3Periphclockenable*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//USART3时钟使能(APB2)
}
/******************************************************************************************
*函数称号:NVIC_Configuraion
*功用描绘:
*参数:
*
*返回值:
*作者:
*创立日期:2013年5月2日
*大局变量:
*大局静态变量:
*部分静态变量:
******************************************************************************************/
voidNVIC_Configuration(void)
{
NVIC_InitTypeDefNVIC_InitStructure;
#ifdefVECT_TAB_RAM
/*SettheVectorTablebaselocationat0x20000000*/
NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);//RAM
#else/*VECT_TAB_FLASH*/
/*SettheVectorTablebaselocationat0x08000000*/
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);//FLASH
#endif
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//挑选第2组为优先级分组方法:高2位指定抢占优先级,低2位指定呼应优先级
/*enablinginterrupt*/
NVIC_InitStructure.NVIC_IRQChannel=USART3_IRQChannel;//USART中止
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//占先级为0级,最高
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//呼应级最高0
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//发动中止
NVIC_Init(&NVIC_InitStructure);//初始化嵌套向量中止操控器
}
/******************************************************************************************
*函数称号:GPIO_Configuration
*功用描绘:
*参数:
*
*返回值:
*作者:
*创立日期:2013年5月2日
*大局变量:
*大局静态变量:
*部分静态变量:
******************************************************************************************/
voidGPIO_Configuration(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关掉JTAG,开释PA15,PB3,PB4
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
/*ConfigureUSART3Tx(PB.10)asalternatefunctionpush-pull*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
/*ConfigureUSART3Rx(PB.11)asinputfloating*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB,&GPIO_InitStructure);//RX初始化
}
/******************************************************************************************
*函数称号:GPIO_Configuration
*功用描绘:
*参数:
*
*返回值:
*作者:
*创立日期:2013年5月2日
*大局变量:
*大局静态变量:
*部分静态变量:
******************************************************************************************/
voidUSART_Configuration(void)
{
USART_InitTypeDefUSART_InitStructure;
USART_InitStructure.USART_BaudRate=9600;//波特率9600
USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字符长度
USART_InitStructure.USART_StopBits=USART_StopBits_1;//中止位
USART_InitStructure.USART_Parity=USART_Parity_No;//
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//硬件流量操控无
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//串口发送和接纳形式
/*ConfigureUSART3basicandasynchronousparamters*/
USART_Init(USART3,&USART_InitStructure);//串口初始化
/*EnableUSART3*/
USART_Cmd(USART3,ENABLE);//指令翻开
/*EnablesCOMtransmitinterrupt*/
USART_ITConfig(USART3,USART_IT_TC,ENABLE);//发送中止翻开
/*EnablesCOMreceiveinterrupt*/
USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);//接纳中止翻开
}
voidDelay(vu32nCount)
{
for(;nCount!=0;nCount–);
}