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

C6748 GPIO配置问题

请问一下我将GPIO bank7所在的引脚配置成IO后,GPIO所有相关寄存器值仍全是0,比如控制输入输出的DIR寄存器本来默认应该是全1的,但现在全是0,而且不能对他们进行写操作,这是什么原因?是还需要设置什么东西启动GPIO的功能么?

noaming:

你好,请检查一下芯片的管脚复用设置是否正确,管脚是否用于GPIO功能。

Hao Wang5:

回复 noaming:

代码如下,已经配置GPIO了,是不是还有其他东西没有配置?刚开始学习DSP,麻烦了。

#include <stdio.h>

#define SYS_BASE           0x01C14000#define PINMUX16           *(unsigned int*)(SYS_BASE + 0x160)  //PINMUX16#define PINMUX17           *(unsigned int*)(SYS_BASE + 0x164)  //PINMUX17#define GPIO_BANK67_DIR       *(unsigned int*)(GPIO_BANK67_BASE)#define GPIO_BANK67_DAT       *(unsigned int*)(GPIO_BANK67_BASE + GPIO_DAT_OFFSET)#define GPIO_REG_BASE         (0x01E26000)#define GPIO_BANK_OFFSET      (0x28)#define GPIO_DAT_OFFSET       (0x04)#define GPIO_SET_OFFSET       (0x08)#define GPIO_CLR_OFFSET       (0x0C)#define GPIO_BINTEN           *(unsigned int*)(GPIO_REG_BASE + 0x08)#define GPIO_BANK01_BASE      (GPIO_REG_BASE + 0x10)#define GPIO_BANK23_BASE      (GPIO_BANK01_BASE + GPIO_BANK_OFFSET)#define GPIO_BANK45_BASE      (GPIO_BANK23_BASE + GPIO_BANK_OFFSET)#define GPIO_BANK67_BASE      (GPIO_BANK45_BASE + GPIO_BANK_OFFSET)

/* * main.c */void main(void) { int i; PINMUX16 = 0x88888822; PINMUX17 = 0x88888888; GPIO_BANK67_DIR = 0x00ffffff; while(1) {  for(i=0;i<0x0000ffff;i++){;}

      GPIO_BANK67_DAT = 0xffffffff;

  for(i=0;i<0x0000ffff;i++){;}

      GPIO_BANK67_DAT = 0x0;

 }

 }

noaming:

回复 Hao Wang5:

一般的方法就是:

配置管脚复用;

设置为输出方向;

然后置位:GPIO Set Data Registers (SET_DATAn)

noaming:

回复 Hao Wang5:

你用CCS检查一下寄存器:

当执行完程序后,在地址0x01E2608C处的值现在是多少?

Hao Wang5:

回复 noaming:

值是0。引脚复用我已经设置成了GPIO,但是从设置GPIO方向开始就不行了,GPIO方向寄存器的值没法改,全是0。另外GPIO的REVID寄存器的值也是0,貌似IO功能根本就没有启动

Hao Wang5:

回复 noaming:

另外GPIO的REVID寄存器值也是0,好像IO的功能根本就没有启动

noaming:

回复 Hao Wang5:

恩,首先建议你在debug状态下查看一下你所操作的GPIO寄存器地址,对应手册中的GPIO寄存器地址,是否准确。因为我看程序中这个写的有点乱。

确定每次配置急促去你的数据,准确的写入到了相应地址的寄存器中,这一点你可以写一个寄存器,用CCS查看该寄存器一次。

赞(0)
未经允许不得转载:TI中文支持网 » C6748 GPIO配置问题
分享到: 更多 (0)