初级会员

- 积分
- 109
- 金钱
- 109
- 注册时间
- 2019-7-4
- 在线时间
- 37 小时
|
5金钱
代码如下
int START = 0;
int k;
void EXTIX_Init(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能复用功能时钟
/* EXTI line gpio config(PA0) */
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); // 使能PB端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入
GPIO_Init(GPIOB, &GPIO_InitStructure);
/* EXTI line(PA0) mode config */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource4);
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //使能按键WK_UP所在的外部中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级2,
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道
NVIC_Init(&NVIC_InitStructure);
}
/********************************************************************************
*函数原型:
*参数说明: 无
*返回值: 无
*说明:
********************************************************************************/
void EXTI0_IRQHandler(void)
{
// if(EXTI_GetITStatus(EXTI_Line0) != RESET) //确保是否产生了EXTI Line中断
// {
delay_ms(10); //延时消抖
if(KEY2 == 0) //PB4按下
{
START=0;
GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
GPIO_ResetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
STOP_TIME;
MAX_time = 0;
timetickLED = 0 ;
for(k = 0;k < 6; k++)
{
Valve_time_on[k]=0;
Valve_time_off[k]=0;
}
}
EXTI_ClearITPendingBit(EXTI_Line0); //清除中断标志位
// }
}
PB4处为按键,端口上啦输入,按键按下gpio输入为低电平。
不知道哪里出错了 按键按下 没有反应?????
|
|