本帖最后由 chunfeng12 于 2013-7-29 15:17 编辑
先粘点程序
/* Input Pins Configuration */
GPIO_InitStructure.GPIO_Pin = 0x03F0;//0b 0000 0011 1111 0000
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_13 | GPIO_Pin_14;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = 0xE070;//0b 1110 0000 0111 0000
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_15;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = 0x80FC;//0b 1000 0000 1111 1100
GPIO_Init(GPIOE, &GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PinSource13, GPIO_PortSourceGPIOB);
GPIO_EXTILineConfig(GPIO_PinSource14, GPIO_PortSourceGPIOB);
GPIO_EXTILineConfig(GPIO_PinSource10, GPIO_PortSourceGPIOD);
GPIO_EXTILineConfig(GPIO_PinSource11, GPIO_PortSourceGPIOD);
GPIO_EXTILineConfig(GPIO_PinSource15, GPIO_PortSourceGPIOD);
GPIO_EXTILineConfig(GPIO_PinSource6, GPIO_PortSourceGPIOC);
GPIO_EXTILineConfig(GPIO_PinSource8, GPIO_PortSourceGPIOA);
GPIO_EXTILineConfig(GPIO_PinSource9, GPIO_PortSourceGPIOA);
GPIO_EXTILineConfig(GPIO_PinSource7, GPIO_PortSourceGPIOE);
GPIO_EXTILineConfig(GPIO_PinSource12, GPIO_PortSourceGPIOE);
EXTI_InitStructure.EXTI_Line = 0x7FC0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
/*以上是配置部分 省略了时钟源和中断部分*/
/*下面是中断的一部分*/
if((EXTI_GetITStatus(EXTI_Line13) != RESET))
{
EXTI_ClearITPendingBit(EXTI_Line13);
}
if((EXTI_GetITStatus(EXTI_Line14) != RESET))
{
EXTI_ClearITPendingBit(EXTI_Line14);
}
if((EXTI_GetITStatus(EXTI_Line15) != RESET))
{
EXTI_ClearITPendingBit(EXTI_Line15);
}
在线方式下读取EXTI寄存器值后16位如下
IMR:FFC0
EMR:0000
RTSR:FFC0
FTSR:0000
SWIER:0000
PR:E000
现在的问题是当 被贴出中断程序执行结束后PR的值不变并且还会进入到此段中断服务程序中。并且使用示波器测量 过相应引脚的波形情况,波形为很平滑的一条直线,保持电压值为0V。
各位有 经验的大神帮看看怎么回事。
补充一下使用的片子是STM32F103 |