学前班
最后登录1970-1-1
在线时间 小时
注册时间2017-10-4
|
- #include"stm32f10x.h"
- typedef enum {LedR,LedG,LedB,Led1,Led2}Light;
- Light light=LedR;
- int main(void)
- {
- GPIO_InitTypeDef InitLedR;
- GPIO_InitTypeDef InitLedG;
- GPIO_InitTypeDef InitLedB;
- GPIO_InitTypeDef InitLed1;
- GPIO_InitTypeDef InitLed2;
- GPIO_InitTypeDef InitKey1;
- GPIO_InitTypeDef InitKey2;
-
-
- NVIC_InitTypeDef InitKey1NVIC;
- NVIC_InitTypeDef InitKey2NVIC;
-
-
- EXTI_InitTypeDef InitKey1EXTI;
- EXTI_InitTypeDef InitKey2EXTI;
-
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
-
- InitKey1NVIC.NVIC_IRQChannel=EXTI0_IRQn;
- InitKey1NVIC.NVIC_IRQChannelPreemptionPriority=0;
- InitKey1NVIC.NVIC_IRQChannelSubPriority=0;
- InitKey1NVIC.NVIC_IRQChannelCmd=ENABLE;
-
- InitKey2NVIC.NVIC_IRQChannel=EXTI15_10_IRQn;
- InitKey2NVIC.NVIC_IRQChannelPreemptionPriority=0;
- InitKey2NVIC.NVIC_IRQChannelSubPriority=0;
- InitKey2NVIC.NVIC_IRQChannelCmd=ENABLE;
-
-
- NVIC_Init(&InitKey1NVIC);
- NVIC_Init(&InitKey2NVIC);
-
-
- InitLedR.GPIO_Mode=GPIO_Mode_Out_PP;
- InitLedR.GPIO_Speed=GPIO_Speed_50MHz;
- InitLedR.GPIO_Pin=GPIO_Pin_5;
-
- InitLedG.GPIO_Mode=GPIO_Mode_Out_PP;
- InitLedG.GPIO_Speed=GPIO_Speed_50MHz;
- InitLedG.GPIO_Pin=GPIO_Pin_0;
-
- InitLedB.GPIO_Mode=GPIO_Mode_Out_PP;
- InitLedB.GPIO_Speed=GPIO_Speed_50MHz;
- InitLedB.GPIO_Pin=GPIO_Pin_1;
-
- InitLed1.GPIO_Mode=GPIO_Mode_Out_PP;
- InitLed1.GPIO_Speed=GPIO_Speed_50MHz;
- InitLed1.GPIO_Pin=GPIO_Pin_7;
-
- InitLed2.GPIO_Mode=GPIO_Mode_Out_PP;
- InitLed2.GPIO_Speed=GPIO_Speed_50MHz;
- InitLed2.GPIO_Pin=GPIO_Pin_8;
-
- InitKey1.GPIO_Mode=GPIO_Mode_IN_FLOATING;
- InitKey1.GPIO_Pin=GPIO_Pin_0;
-
- InitKey2.GPIO_Mode=GPIO_Mode_IN_FLOATING;
- InitKey2.GPIO_Pin=GPIO_Pin_13;
-
- GPIO_Init(GPIOB,&InitLedR);
- GPIO_Init(GPIOB,&InitLedG);
- GPIO_Init(GPIOB,&InitLedB);
- GPIO_Init(GPIOF,&InitLed1);
- GPIO_Init(GPIOF,&InitLed2);
- GPIO_Init(GPIOA,&InitKey1);
- GPIO_Init(GPIOC,&InitKey2);
-
-
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);
-
-
- InitKey1EXTI.EXTI_Line=EXTI_Line0;
- InitKey1EXTI.EXTI_Mode=EXTI_Mode_Interrupt;
- InitKey1EXTI.EXTI_Trigger=EXTI_Trigger_Rising;
- InitKey1EXTI.EXTI_LineCmd =ENABLE;
-
- InitKey2EXTI.EXTI_Line=EXTI_Line13;
- InitKey2EXTI.EXTI_Mode=EXTI_Mode_Interrupt;
- InitKey2EXTI.EXTI_Trigger=EXTI_Trigger_Rising;
- InitKey2EXTI.EXTI_LineCmd =ENABLE;
-
- EXTI_Init(&InitKey1EXTI);
- EXTI_Init(&InitKey2EXTI);
-
- GPIO_SetBits(GPIOB,GPIO_Pin_5);
- GPIO_SetBits(GPIOB,GPIO_Pin_0);
- GPIO_SetBits(GPIOB,GPIO_Pin_1);
- GPIO_SetBits(GPIOF,GPIO_Pin_7);
- GPIO_SetBits(GPIOF,GPIO_Pin_8);
-
- while(1)
- {
- if(light==LedR)
- {
- GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_RESET);
- GPIO_WriteBit(GPIOB, GPIO_Pin_0, Bit_SET);
- GPIO_WriteBit(GPIOB, GPIO_Pin_1, Bit_SET);
- GPIO_WriteBit(GPIOF, GPIO_Pin_7, Bit_SET);
- GPIO_WriteBit(GPIOF, GPIO_Pin_8, Bit_SET);
- }
- else if(light==LedG)
- {
- GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET);
- GPIO_WriteBit(GPIOB, GPIO_Pin_0, Bit_RESET);
- GPIO_WriteBit(GPIOB, GPIO_Pin_1, Bit_SET);
- GPIO_WriteBit(GPIOF, GPIO_Pin_7, Bit_SET);
- GPIO_WriteBit(GPIOF, GPIO_Pin_8, Bit_SET);
- }
- else if(light==LedB)
- {
- GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET);
- GPIO_WriteBit(GPIOB, GPIO_Pin_0, Bit_SET);
- GPIO_WriteBit(GPIOB, GPIO_Pin_1, Bit_RESET);
- GPIO_WriteBit(GPIOF, GPIO_Pin_7, Bit_SET);
- GPIO_WriteBit(GPIOF, GPIO_Pin_8, Bit_SET);
- }
- else if(light==Led1)
- {
- GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET);
- GPIO_WriteBit(GPIOB, GPIO_Pin_0, Bit_SET);
- GPIO_WriteBit(GPIOB, GPIO_Pin_1, Bit_SET);
- GPIO_WriteBit(GPIOF, GPIO_Pin_7, Bit_RESET);
- GPIO_WriteBit(GPIOF, GPIO_Pin_8, Bit_SET);
- }
- else if(light==Led2)
- {
- GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET);
- GPIO_WriteBit(GPIOB, GPIO_Pin_0, Bit_SET);
- GPIO_WriteBit(GPIOB, GPIO_Pin_1, Bit_SET);
- GPIO_WriteBit(GPIOF, GPIO_Pin_7, Bit_SET);
- GPIO_WriteBit(GPIOF, GPIO_Pin_8, Bit_RESET);
- }
- }
- }
- void EXTI0_IRQHandler()
- {
- if( EXTI_GetITStatus(EXTI_Line0)==SET)
- {
- if(light==Led2)
- light=LedR;
- else if(light<Led2)
- light++;
-
- EXTI_ClearITPendingBit(EXTI_Line0);
- }
- }
- void EXTI15_10_IRQHandler()
- {
- if( EXTI_GetITStatus(EXTI_Line13)==SET)
- {
- if(light==LedR)
- light=Led2;
- else if(light>LedR)
- light--;
-
- EXTI_ClearITPendingBit(EXTI_Line13);
- }
- }
复制代码
Key1正常,但是Key2死活没反应,求解 |
|