相同的pin。 如A1 B1 C1…不能同时触发中断
2. 库函数配置一般步骤
①初始化IO口为输入。
GPIO_Init();
②开启IO口复用时钟。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
③设置IO口与中断线的映射关系。
void GPIO_EXTILineConfig();
④初始化线上中断,设置触发条件等。
EXTI_Init();
⑤配置中断分组(NVIC),并使能中断。
NVIC_Init();
⑥编写中断服务函数。
EXTIx_IRQHandler();
⑦清除中断标志位
EXTI_ClearITPendingBit();
———————————————
第一步打开外设时钟
第二步配置GPIO
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/*初始化GPIO结构体 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx,ENABLE);
/*打开APB2外设GPIOx端口的时钟 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_标号|GPIO_Pin_标号;
/*管脚位置定义,标号可以是NONE、ALL、 0至15 */
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
/*最高输出速度为50MHz */
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
/*推挽输出*/
GPIO_Init(GPIOx,&GPIO_InitStructure); /*GPIOx初始化 */
/*注:以上四行代码为一组,每组GPIO属性必须相同,默认的GPIO参数为:ALL,2MHz,FLATING。如果其中任意一行与前一组相应设置相同,那么那一行可以省略,由此推论如果前面已经将此行参数设定为默认参数(包括使用GPIO_InitTypeDefGPIO_InitStructure代码),本组应用也是默认参数的话,那么也可以省略。以下重复这个过程直到所有应用的管脚全部被定义完毕。*/
}
GPIO_Mode_IPU /*上拉输入 */
GPIO_Mode_IPD /*下拉输入 */
GPIO_Mode_AIN /*模拟输入 */
GPIO_Mode_IN_FLOATING /*浮空输入(GPIO的 默认电平由外部决定) */
GPIO_Mode_Out_PP /*普通推挽输出 */
GPIO_Mode_Out_OD /*普通开漏输出 */
GPIO_Mode_AF_PP /*复用推挽输出 */
GPIO_Mode_AF_OD