cortex-M3 位带特性用法

Other Parts Discussed in Thread: LM3S8962

我现在想在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);