没有位操作的ARM单片机(STM32 LPC1114等)如何反转IO口
IO口电平反转,常用来驱动LED时,使得LED闪烁。
51单片机中,是这么写:
sbit led = P1 ^5; led = ~led;
那么,一般的ARM单片机没有位操作,如何反转IO口电平呢?
方法1:
unsigned char i; if(i==0) { IO口数据寄存器 = 对应位置1; i=1; } else if(i==1) { IO口数据寄存器 = 对应位置0; i=0; }
方法2:
IO口数据寄存器 ^= 对应位;
方法2巧妙利用c语言逻辑“异或”实现了与51一样的单语句就实现了IO口的电平反转,看来还是那句话,一切高手都是掌握了扎实的基础!
举例1:STM32的PB5连接LED,使得PB0电平反转
GPIOB->ODR^=(1<<5);
举例2:LPC1114的P3.2引脚连接LED,使得P3.2电平反转
LPC_GPIO3->DATA^=(1<<2);