|
本帖最后由 wangcharley 于 2021-3-23 16:39 编辑
下面的代码,定义两个按键,一个用查询的方法,一个用中断的方法,复位后查询那个正常,一按中断那个,两个按键就都不管用了,大佬帮看看是哪里有问题啊!
- #include "fm33lc0xx.h"
- #include "fm33lc0xx_fl_gpio.h"
- #include "fm33lc0xx_fl_rcc.h"
- void led1Init()
- {
- FL_GPIO_InitTypeDef GPIO_InitStruct;
-
- GPIO_InitStruct.pin = FL_GPIO_PIN_0 | FL_GPIO_PIN_1;
- GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
- GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
- GPIO_InitStruct.pull = DISABLE;
- GPIO_InitStruct.remapPin = DISABLE;
-
- FL_GPIO_Init(GPIOC,&GPIO_InitStruct);
-
- GPIO_InitStruct.pin = FL_GPIO_PIN_10 | FL_GPIO_PIN_9;
-
- FL_GPIO_Init(GPIOB,&GPIO_InitStruct);
-
- FL_GPIO_SetOutputPin(GPIOC,FL_GPIO_PIN_0);
- FL_GPIO_SetOutputPin(GPIOC,FL_GPIO_PIN_1);
- FL_GPIO_SetOutputPin(GPIOB,FL_GPIO_PIN_10);
- FL_GPIO_SetOutputPin(GPIOB,FL_GPIO_PIN_9);
-
- }
- void extiPC6Init()
- {
- FL_GPIO_InitTypeDef PC6_GPIO_InitStruct;
-
- FL_RCC_EnableGroup1OperationClock(FL_RCC_GROUP1_OPCLK_EXTI);
-
- PC6_GPIO_InitStruct.pin = FL_GPIO_PIN_6;
- PC6_GPIO_InitStruct.mode = FL_GPIO_MODE_INPUT;
- PC6_GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
- PC6_GPIO_InitStruct.pull = DISABLE;
- PC6_GPIO_InitStruct.remapPin = DISABLE;
- FL_GPIO_Init(GPIOC,&PC6_GPIO_InitStruct);
-
- PC6_GPIO_InitStruct.pin = FL_GPIO_PIN_10;
- FL_GPIO_Init(GPIOA,&PC6_GPIO_InitStruct);
-
- FL_GPIO_SetTriggerEdge(GPIO,FL_GPIO_EXTI_LINE_9,FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE);
- FL_GPIO_SetExtiLine9(GPIO,FL_GPIO_EXTI_LINE_9_PC6);
- FL_GPIO_EnableDigitalFilter(GPIO,FL_GPIO_EXTI_LINE_9);
- FL_GPIO_SetTriggerEdge(GPIO,FL_GPIO_EXTI_LINE_9,FL_GPIO_EXTI_TRIGGER_EDGE_FALLING);
- FL_GPIO_ClearFlag_EXTI(GPIO,FL_GPIO_EXTI_LINE_9);
-
-
- NVIC_DisableIRQ(GPIO_IRQn);
- NVIC_SetPriority(GPIO_IRQn,2);
- NVIC_EnableIRQ(GPIO_IRQn);
- }
- int main(void)
- {
- SystemInit();
- SysTick_Config(8000000);
- Do_DelayStart()
- While_DelayMsEnd(300);
- led1Init();
- extiPC6Init();
- while(1)
- {
- if(FL_GPIO_GetInputPin(GPIOC,FL_GPIO_PIN_6)==0)
- {
- FL_GPIO_ResetOutputPin(GPIOC,FL_GPIO_PIN_0);
- }
- else
- {
- FL_GPIO_SetOutputPin(GPIOC,FL_GPIO_PIN_0);
- }
- if(FL_GPIO_GetInputPin(GPIOA,FL_GPIO_PIN_10)==0)
- {
- FL_GPIO_ResetOutputPin(GPIOC,FL_GPIO_PIN_1);
- }
- else
- {
- FL_GPIO_SetOutputPin(GPIOC,FL_GPIO_PIN_1);
- }
- }
-
-
- }
- void GPIO_IRQHandle(void)
- {
- if(FL_GPIO_IsActiveFlag_EXTI(GPIO,FL_GPIO_EXTI_LINE_9))
- {
- FL_GPIO_ToggleOutputPin(GPIOC,FL_GPIO_PIN_0);
- FL_GPIO_ToggleOutputPin(GPIOC,FL_GPIO_PIN_1);
- FL_GPIO_ToggleOutputPin(GPIOB,FL_GPIO_PIN_10);
- FL_GPIO_ToggleOutputPin(GPIOB,FL_GPIO_PIN_9);
- FL_GPIO_ClearFlag_EXTI(GPIO,FL_GPIO_EXTI_LINE_9);
- }
- }
复制代码
|
|