- /*********************************************************************************
- ************************* STM32F103RC开发板******************************
- **********************************************************************************
- * 文件名称: 例程1 LED跑马灯主函数main() *
- * 文件简述:LED跑马灯 *
- * 创建日期:2018.03.03 *
- * 版 本:V1.0 *
- * 作 者:Clever *
- * 说 明:有三种方式控制LED亮灭 *
- * 声 明:本例程代码仅用于学习参考 *
- **********************************************************************************
- *********************************************************************************/
- #include "stm32f10x_gpio.h"
- #include "led.h"
- #include "keyint.h"
- #include "common.h"
- //LED对应IO初始化
- //void mydelay(int c)
- //{
- // int i,j;
- // for(;c>=0;c--)
- // {
- // for(i=0;i<10000;i++)
- // for(j=0;j<10000;j++)
- // ;
- // }
- //}
- int main( )
- {
- int i;
- LedInit();
- KEYInt();
- while(1)
- {
- ;
- }
- }
- #include "stm32f10x_rcc.h"
- #include "stm32f10x_exti.h"
- #include "Led.h"
- void KeyGPIOConfig()
- {
- GPIO_InitTypeDef GPIOKeyInit;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);
- GPIOKeyInit.GPIO_Pin=GPIO_Pin_5;
- GPIOKeyInit.GPIO_Mode=GPIO_Mode_IPU;
- GPIO_Init (GPIOC,&GPIOKeyInit);
- GPIOC->ODR|=(0x01<<5);
-
- GPIOKeyInit.GPIO_Pin=GPIO_Pin_6;
- GPIOKeyInit.GPIO_Mode=GPIO_Mode_IPU;
- GPIO_Init (GPIOC,&GPIOKeyInit);
- GPIOC->ODR|=(0x01<<6);
-
- GPIOKeyInit.GPIO_Pin=GPIO_Pin_7;
- GPIOKeyInit.GPIO_Mode=GPIO_Mode_IPU;
- GPIO_Init (GPIOC,&GPIOKeyInit);
- GPIOC->ODR|=(0x01<<7);
-
- GPIOKeyInit.GPIO_Pin=GPIO_Pin_8;
- GPIOKeyInit.GPIO_Mode=GPIO_Mode_IPU;
- GPIO_Init (GPIOC,&GPIOKeyInit);
- GPIOC->ODR|=(0x01<<8);
-
- GPIOKeyInit.GPIO_Pin=GPIO_Pin_9;
- GPIOKeyInit.GPIO_Mode=GPIO_Mode_IPU;
- GPIO_Init (GPIOC,&GPIOKeyInit);
- GPIOC->ODR|=(0x01<<9);
- }
- void KeyEXTIConfig()
- {
- EXTI_InitTypeDef EXTIKeyInit;
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource6);
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource7);
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource8);
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource9);
-
- EXTIKeyInit.EXTI_Line=EXTI_Line5;
- EXTIKeyInit.EXTI_Mode=EXTI_Mode_Interrupt;
- EXTIKeyInit.EXTI_Trigger=EXTI_Trigger_Falling;
- EXTIKeyInit.EXTI_LineCmd=ENABLE;
- EXTI_Init(&EXTIKeyInit);
-
- EXTIKeyInit.EXTI_Line=EXTI_Line6;
- EXTIKeyInit.EXTI_Mode=EXTI_Mode_Interrupt;
- EXTIKeyInit.EXTI_Trigger=EXTI_Trigger_Falling;
- EXTIKeyInit.EXTI_LineCmd=ENABLE;
- EXTI_Init(&EXTIKeyInit);
-
- EXTIKeyInit.EXTI_Line=EXTI_Line7;
- EXTIKeyInit.EXTI_Mode=EXTI_Mode_Interrupt;
- EXTIKeyInit.EXTI_Trigger=EXTI_Trigger_Falling;
- EXTIKeyInit.EXTI_LineCmd=ENABLE;
- EXTI_Init(&EXTIKeyInit);
-
- EXTIKeyInit.EXTI_Line=EXTI_Line8;
- EXTIKeyInit.EXTI_Mode=EXTI_Mode_Interrupt;
- EXTIKeyInit.EXTI_Trigger=EXTI_Trigger_Falling;
- EXTIKeyInit.EXTI_LineCmd=ENABLE;
- EXTI_Init(&EXTIKeyInit);
-
- EXTIKeyInit.EXTI_Line=EXTI_Line9;
- EXTIKeyInit.EXTI_Mode=EXTI_Mode_Interrupt;
- EXTIKeyInit.EXTI_Trigger=EXTI_Trigger_Falling;
- EXTIKeyInit.EXTI_LineCmd=ENABLE;
- EXTI_Init(&EXTIKeyInit);
- }
- void KeyNVICConfig()
- {
- NVIC_InitTypeDef NVICKeyInit;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
-
- NVICKeyInit.NVIC_IRQChannel|=EXTI9_5_IRQn;
- NVICKeyInit.NVIC_IRQChannelPreemptionPriority=0;
- NVICKeyInit.NVIC_IRQChannelSubPriority=0;
- NVICKeyInit.NVIC_IRQChannelCmd=ENABLE;
- NVIC_Init (&NVICKeyInit);
-
- // NVICKeyInit.NVIC_IRQChannel|=EXTI2_IRQn;
- // NVICKeyInit.NVIC_IRQChannelPreemptionPriority=0;
- // NVICKeyInit.NVIC_IRQChannelSubPriority=0;
- // NVICKeyInit.NVIC_IRQChannelCmd=ENABLE;
- // NVIC_Init (&NVICKeyInit);
- }
- void KEYInt(void)
- {
- KeyGPIOConfig();
- KeyEXTIConfig();
- KeyNVICConfig();
- }
- //中断子程序1
- void EXTI9_5_IRQHandler()
- {
- static int a = 0;
- if(EXTI_GetITStatus(EXTI_Line5)!=RESET)
- {
- if(a==0)
- {
- LedOn(GPIOB,GPIO_Pin_0);
- a=1;
- }
- else if (a==1)
- {
- LedOff(GPIOB,GPIO_Pin_0);
- a=0;
- }
- EXTI_ClearITPendingBit(EXTI_Line5);
- }
- else if(EXTI_GetITStatus(EXTI_Line6)!=RESET)
- {
- if(a==0)
- {
- LedOn(GPIOB,GPIO_Pin_1);
- a=1;
- }
- else if (a==1)
- {
- LedOff(GPIOB,GPIO_Pin_1);
- a=0;
- }
- EXTI_ClearITPendingBit(EXTI_Line6);
- }
- else if(EXTI_GetITStatus(EXTI_Line7)!=RESET)
- {
- if(a==0)
- {
- LedOn(GPIOB,GPIO_Pin_2);
- a=1;
- }
- else if (a==1)
- {
- LedOff(GPIOB,GPIO_Pin_2);
- a=0;
- }
- EXTI_ClearITPendingBit(EXTI_Line7);
- }
- else if(EXTI_GetITStatus(EXTI_Line8)!=RESET)
- {
- if(a==0)
- {
- LedOn(GPIOB,GPIO_Pin_3);
- a=1;
- }
- else if (a==1)
- {
- LedOff(GPIOB,GPIO_Pin_3);
- a=0;
- }
- EXTI_ClearITPendingBit(EXTI_Line8);
- }
- else if(EXTI_GetITStatus(EXTI_Line9)!=RESET)
- {
- LedOff(GPIOB,GPIO_Pin_1|GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3);
- EXTI_ClearITPendingBit(EXTI_Line9);
- }
- }
复制代码 |