//while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
//{}
//RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
RCC_MSIRangeConfig(RCC_MSIRange_6);
RCC_HSEConfig(RCC_HSE_OFF);
if(RCC_GetFlagStatus(RCC_FLAG_HSERDY)!
=RESET)
{while
(1);}
/*EnablecomparatorclockLCDandPWRmngt*/
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_LCD|RCC_APB1Periph_PWR,ENABLE);
/*EnableADCclock&SYSCFG*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_SYSCFG|RCC_APB2Periph_USART1,ENABLE);
}
voidInit_GPIOs(void)
{GPIO_InitTypeDefGPIO_InitStructure;
/*EnableGPIOsclock*/
RCC_AHBPeriphClockCmd(LD_GPIO_PORT_CLK|USERBUTTON_GPIO_CLK,ENABLE);
/*ConfigureUserButtonpinasinput*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;//USERBUTTON_GPIO_PIN
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_40MHz;
GPIO_Init(USERBUTTON_GPIO_PORT,&GPIO_InitStructure);
/*ConfiguretheGPIO_LEDpinsLD3&LD4*/
GPIO_InitStructure.GPIO_Pin=LD_GREEN_GPIO_PIN|LD_BLUE_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(LD_GPIO_PORT,&GPIO_InitStructure);
//GPIO_LOW(LD_GPIO_PORT,LD_GREEN_GPIO_PIN);
//GPIO_LOW(LD_GPIO_PORT,LD_BLUE_GPIO_PIN);
/*ConfiguretheUSART1_GPIO_PORT*/
/*ConnectPA9toUSART1_Tx*/
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
/*ConnectPA10toUSART1_Rx*/
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);
/*ConfigureUSART1_TxandUSART1_Rxasalternatefunction*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_40MHz;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_Init(GPIOA,&GPIO_InitStructure);
/*EnableallGPIOsclock*/
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB|
RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOD|
RCC_AHBPeriph_GPIOE|RCC_AHBPeriph_GPIOH,ENABLE);
}
voidUSART_Configuration(void)
{
USART_InitTypeDefUSART_InitStructure;
USART_ClockInitTypeDefUSART_ClockIni;
USART_InitStructure.USART_BaudRate=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_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_Init(USART1,&USART_InitStructure);
USART_ClockIni.USART_Clock=USART_Clock_Disable;
USART_ClockIni.USART_CPOL=USART_CPOL_Low;
USART_ClockIni.USART_CPHA=USART_CPHA_2Edge;
USART_ClockIni.USART_LastBit=USART_LastBit_Disable;
USART_ClockInit(USART1,&USART_ClockIni);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
USART_Cmd(USART1,ENABLE)
}
voidEXTI_Configuration()
{EXTI_InitTypeDefEXTI_InitStructure;
/定义PA0,PA1,PA2为外部中断输入通道/
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource0);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource1);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource2);
/*ConfigureEXT1Line012ininterruptmodetriggedonFallingedge*/
EXTI_InitStructure.EXTI_Line=EXTI_Line0|EXTI_Line1|EXTI_Line2;//PA0forUserbutton
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStructure);
}
voidNVIC_Configuration()
{NVIC_InitTypeDefNVIC_InitStructure;
#ifdefVECT_TAB_RAM
//Èç¹ûC/C++Compiler\Preprocessor\DefinedsymbolsÖеĶ¨ÒåÁËVECT_TAB_RAM£¨¼û³ÌÐò¿â¸ü¸ÄÄÚÈݵıí¸ñ£©
NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);//ÔòÔÚRAMµ÷ÊÔ
#else//Èç¹ûûÓж¨ÒåVECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);//ÔòÔÚFlashÀïµ÷ÊÔ
#endif//½áÊøÅжÏÓï¾ä
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
/*EnableandsetEXTI0Interrupttothelowestpriority*/
NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=EXTI1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
voidDelay(uint32_tnTime)
{TimingDelay=nTime;
while(TimingDelay!
=0);
}
voidTimingDelay_Decrement(void)
{
if(TimingDelay!
=0x00)
{TimingDelay--;}
}
intfputc(intch,FILE*f)
{USART_SendData(USART1,(unsignedchar)ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
returnch;
}
#include"stm32l1xx_it.h"
#include"main.h"
voidNMI_Handler(void){}
voidHardFault_Handler(void)
{/*GotoinfiniteloopwhenHardFaultexceptionoccurs*/
while
(1){}
}
voidMemManage_Handler(void)
{/*GotoinfiniteloopwhenMemoryManageexceptionoccurs*/
while
(1){}
}
voidBusFault_Handler(void)
{/*GotoinfiniteloopwhenBusFaultexceptionoccurs*/
while
(1){}
}
voidUsageFault_Handler(void)
{/*GotoinfiniteloopwhenUsageFaultexceptionoccurs*/
while
(1){}
}
voidSVC_Handler(void){}
voidDebugMon_Handler(void){}
voidPendSV_Handler(void){}
voidSysTick_Handler(void)
{
TimingDelay_Decrement();
}
voidDMA1_Channel1_IRQHandler(void){}
voidRTC_WKUP_IRQHandler(void){}
voidEXTI0_IRQHandler(void)
{inti;
GPIO_TOGGLE(LD_GPIO_PORT,LD_GREEN_GPIO_PIN);
for(i=0;i<500000;i++){}
GPIO_TOGGLE(LD_GPIO_PORT,LD_GREEN_GPIO_PIN);
for(i=0;i<500000;i++){}
EXTI_GenerateSWInterrupt(EXTI_Line1);
EXTI_ClearFlag(EXTI_Line0);
}
voidEXTI1_IRQHandler(void)
{
inti;
GPIO_TOGGLE(LD_GPIO_PORT,LD_BLUE_GPIO_PIN);
for(i=0;i<500000;i++){}
GPIO_TOGGLE(LD_GPIO_PORT,LD_BLUE_GPIO_PIN);
for(i=0;i<500000;i++){}
GPIO_TOGGLE(LD_GPIO_PORT,LD_BLUE_GPIO_PIN);
for(i=0;i<500000;i++){}
GPIO_TOGGLE(LD_GPIO_PORT,LD_BLUE_GPIO_PIN);
for(i=0;i<500000;i++){}
EXTI_GenerateSWInterrupt(EXTI_Line2);
EXTI_ClearFlag(EXTI_Line1);
}
voidEXTI2_IRQHandler(void)
{
inti;
GPIO_TOGGLE(LD_GPIO_PORT,LD_GREEN_GPIO_PIN);
for(i=0;i<500000;i++){}
GPIO_TOGGLE(LD_GPIO_PORT,LD_GREEN_GPIO_PIN);
for(i=0;i<500000;i++){}
GPIO_TOGGLE(LD_GPIO_PORT,LD_GREEN_GPIO_PIN);
for(i=0;i<500000;i++){}
GPIO_TOGGLE(LD_GPIO_PORT,LD_GREEN_GPIO_PIN);
for(i=0;i<500000;i++){}
GPIO_TOGGLE(LD_GPIO_PORT,LD_GREEN_GPIO_PIN);
for(i=0;i<500000;i++){}