初级会员

- 积分
- 134
- 金钱
- 134
- 注册时间
- 2013-12-7
- 在线时间
- 0 小时
|
5金钱
外界干扰比较大,因此用一个15k的电阻上拉,并且代码配置如下:
//中断NVIC配置
void NVIC_cfg()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
/* Enable the EXTI0 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
//中断配置
void EXTI_cfg()
{
EXTI_InitTypeDef EXTI_InitStructure; //定义一个EXTI结构体变量
/* EXTI line mode config */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource0);
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
}
//中断IO配置
void IO_cfg()
{
GPIO_InitTypeDef GPIO_InitStructure;
/* EXTI line gpio 设置(PC0、PC1、PC2、PC3) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 设置为上拉输入
GPIO_Init(GPIOC, &GPIO_InitStructure);
//PD.2 输出高
}
void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line0) != RESET)//检测中断是否挂起
{
EXTI_ClearITPendingBit(EXTI_Line0);
co=co+1;
}
}
结果发现,co是实际值两倍,请问是什么原因?谢谢!
|
|