做实验时想试着通过外部中断来做,发现会一直进入中断。后来查了手册说要加个上拉电阻,加上之后还是会不断进入。这是为什么??
关于笔中断的代码:
static void XTP2046_GPIO_Config(void)
{
RCC_APB2PeriphClockCmd (XTP2046_CLK_CLK|XTP2046_DOUT_CLK|XTP2046_DIN_CLK|XTP2046_CS_CLK|XTP2046_INT_CLK,ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP ;
GPIO_InitStruct.GPIO_Pin = XTP2046_CLK_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init (XTP2046_CLK_PORT,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU ;
GPIO_InitStruct.GPIO_Pin = XTP2046_DOUT_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init (XTP2046_DOUT_PORT,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP ;
GPIO_InitStruct.GPIO_Pin = XTP2046_DIN_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init (XTP2046_DIN_PORT,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP ;
GPIO_InitStruct.GPIO_Pin = XTP2046_CS_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init (XTP2046_CS_PORT,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING ;
GPIO_InitStruct.GPIO_Pin = XTP2046_INT_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init (XTP2046_INT_PORT,&GPIO_InitStruct);
}
static void XTP2046_EXIT_Config(void)
{
GPIO_EXTILineConfig (XTP2046_GPIO_PortSourceGPIOx,XTP2046_GPIO_PinSource);
EXTI_InitTypeDef EXTI_InitStruct;
EXTI_InitStruct.EXTI_Line = XTP2046_EXIT_LINE;
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt ;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling ;
EXTI_Init(&EXTI_InitStruct);
}
static void XTP2046_NVIC_Config(void)
{
NVIC_PriorityGroupConfig (NVIC_PriorityGroup_1);
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel = XTP2046_IRQ_CHANNEL;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_Init (&NVIC_InitStruct);
}
void XTP2406_Init(void)
{
XTP2046_GPIO_Config();
XTP2046_EXIT_Config();
XTP2046_NVIC_Config();
XTP2046_CE_LOW();
} |