我现在想在LM3S8962 上使用 I2C 外扩IO,我在控制IO的时候需要发送一个字节来控制对应的8路IO,如果我只想单独控制其中一路IO,那么我就只需要改变其中1位,也就是说我原来想控制一个字节中单独1位,是像你帖子所说的那样,用与,异或等方式来实现,而且很容易误操作,如果用位带特性来操作的话应该很简单。
我的问题是:如何定义一个属于位带特性的字节变量?又如何实在对应内存区,对其操作?有没有这样的例程能参照一下?
我现在想在LM3S8962 上使用 I2C 外扩IO,我在控制IO的时候需要发送一个字节来控制对应的8路IO,如果我只想单独控制其中一路IO,那么我就只需要改变其中1位,也就是说我原来想控制一个字节中单独1位,是像你帖子所说的那样,用与,异或等方式来实现,而且很容易误操作,如果用位带特性来操作的话应该很简单。
我的问题是:如何定义一个属于位带特性的字节变量?又如何实在对应内存区,对其操作?有没有这样的例程能参照一下?
请参考以下代码:
void
GPIOPinWrite(unsigned long ulPort, unsigned char ucPins, unsigned char ucVal)
{
//
// Check the arguments.
//
ASSERT(GPIOBaseValid(ulPort));
//
// Write the pins.
//
HWREG(ulPort + (GPIO_O_DATA + (ucPins << 2))) = ucVal;
}
这个函数的使用:GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1, GPIO_PIN_1);