TI中文支持网
TI专业的中文技术问题搜集分享网站

首页给的keystone 1的GPIO的例子,有没有对gpio各个位的操作?

您好,

我使用的是一下链接内的GPIO例子

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx

发现里面的一些gpio的操作 set, clear都是对整个寄存器进行操作,不知道是否支持对某一个Bit的操作。

如果没有的话,是不是需要自己继续编写结构体来实现。

ahong007:

测试程序已经是bit操作,你没有仔细看吧

dongdong yu:

回复 ahong007:

你好! 感谢回复~

不过我不知道你指的测试程序是不是那个首页的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操作么?  你有没有仔细看呢….

ahong007:

回复 dongdong yu:

gpGPIO_regs->BANK_REGISTERS[0].SET_DATA= (1<<i);

gpGPIO_regs->BANK_REGISTERS[0].CLR_DATA= (1<<i);

这是不是按位操作,你这是仔细看了吗?谦虚点…

dongdong yu:

回复 ahong007:

。。。。。

哥们,首先可能你我理解的对bit的操作不一样,而且我在前面也说过了,我知道怎么对整个寄存器操作达到操作某一位的效果,正如你的移位操作。 

那我再说明白点好了,我指的是操作对象就是某一位 比如 gpGPIO_regs->BANK_REGISTERS[0].bit.GIOPx = 1; 这种操作。

我很感谢你的回复是真的,但是是谁一上来就说 你仔细看了么? 我咋觉的你一直没有仔细看我的问题…谦虚也是对谦虚的人才谦虚的…

赞(0)
未经允许不得转载:TI中文支持网 » 首页给的keystone 1的GPIO的例子,有没有对gpio各个位的操作?
分享到: 更多 (0)