您好,
我使用的是一下链接内的GPIO例子
www.deyisupport.com/.../47664.aspx
发现里面的一些gpio的操作 set, clear都是对整个寄存器进行操作,不知道是否支持对某一个Bit的操作。
如果没有的话,是不是需要自己继续编写结构体来实现。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,
我使用的是一下链接内的GPIO例子
www.deyisupport.com/.../47664.aspx
发现里面的一些gpio的操作 set, clear都是对整个寄存器进行操作,不知道是否支持对某一个Bit的操作。
如果没有的话,是不是需要自己继续编写结构体来实现。
你好! 感谢回复~
不过我不知道你指的测试程序是不是那个首页的keystone1 的
K1_STK_v1.1.zip ?
举个例子
代码如下:
gpGPIO_regs->BANK_REGISTERS[0].CLR_DATA =0xffff4000; // DSP_ACK = 0
CSL_GpioRegs * gpGPIO_regs= (CSL_GpioRegs * )CSL_GPIO_REGS;
typedef struct {
volatile Uint32 DIR;
volatile Uint32 OUT_DATA;
volatile Uint32 SET_DATA;
volatile Uint32 CLR_DATA;
volatile Uint32 IN_DATA;
volatile Uint32 SET_RIS_TRIG;
volatile Uint32 CLR_RIS_TRIG;
volatile Uint32 SET_FAL_TRIG;
volatile Uint32 CLR_FAL_TRIG;
volatile Uint32 INTSTAT;
} CSL_GpioBank_registersRegs;
/**************************************************************************\
* Register Overlay Structure
\**************************************************************************/
typedef struct {
volatile Uint32 PID;
volatile Uint32 PCR;
volatile Uint32 BINTEN;
volatile Uint8 RSVD0[4];
CSL_GpioBank_registersRegs BANK_REGISTERS[4];
} CSL_GpioRegs;
这个就是clear GPIO寄存器的函数,但是在CLR_DATA之后就没有元素了,所以只能进行整个寄存器的操作。
比如我想单单某一个bit清除,或者单单某一个bit置位,没有bit操作了(我知道也可以用整个寄存器赋值实现)。
全部追踪的代码如上,
您能告诉我,如何进行bit操作么? 你有没有仔细看呢....
gpGPIO_regs->BANK_REGISTERS[0].SET_DATA= (1<<i);
gpGPIO_regs->BANK_REGISTERS[0].CLR_DATA= (1<<i);
这是不是按位操作,你这是仔细看了吗?谦虚点...