请看下面这行代码:
GpioDataRegs.GPASET.bit.GPIO0=1;
我们都知道,这行代码的功能是对某一个io进行赋值。回顾一个c语言的语法,这行代码其实是对结构体进行变量进行的操作。我们提一个问题大家思考:编译器是如何将这行代码编译为对io的操作指令的呢?
再换一个问法:如果不这样写,我们如何写对io的操作代码呢?
下面我们继续分析代码,再看一看GpioDataRegs结构体的定义处,如下:
struct GPIO_DATA_REGS {
union GPADAT_REG GPADAT; // GPIO DataRegister (GPIO0 to 31)
union GPADAT_REG GPASET; // GPIO DataSet Register (GPIO0 to 31)
union GPADAT_REG GPACLEAR; // GPIO Data Clear Register (GPIO0to 31)