原语句为:
GPIOA->CRH &= 0X0F0FFFFF;//PA13,15设置成输入
GPIOA->CRH |= 0X80800000;
在keil中若用下列语句代替会出现警告:
..\HARDWARE\EXTI\exti.c(34): warning: #61-D: integer operation result is out of range
经查资料是由于溢出所致,宏定义默认常量是有符号型,当左移31位时,常数就变成负数,编译器就会给出如上的警告信息解决办法是强制类型转换成无符号类型:
GPIOA->CRH &=~(((u32)15<<20)|((u32)15<<28));
GPIOA->CRH |= (((u32)1<<31)|((u32)1<<23));//PA13,PA15设置为上拉输入
问题解决!!!