初级会员

- 积分
- 96
- 金钱
- 96
- 注册时间
- 2014-8-26
- 在线时间
- 0 小时
|
5金钱
代码如下:
#define JIEJING GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)
void Car_Status_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOC时钟
GPIO_InitStructure.GPIO_Pin = KEY_JIEJING; //PC2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化GPIOC
/*劫警功能外部中断初始化*/
Extix_Init();
}
void Extix_Init(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能复用功能时钟
/*GPIOC.2 中断线以及中断初始化配置 上升沿触发*/
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource2);
EXTI_InitStructure.EXTI_Line=EXTI_Line1; //劫警按键
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure); /*根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器*/
/*配置NVIC相关功能*/
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn; /*使能劫警按键所在的外部中断通道*/
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; /*抢占优先级1, */
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; /*子优先级1*/
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /*使能外部中断通道*/
NVIC_Init(&NVIC_InitStructure);
}
void EXTI1_IRQHandler(void)
{
/*劫警按键被按下或者因为干扰而发生中断*/
if(JIEJING == 1)
{
delay_ms(10);
LED0=~LED0;
}
EXTI_ClearITPendingBit(EXTI_Line0); /*清除LINE0上的中断标志位 */
}
|
|