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.

从DSP 到arm编程,好多地方不习惯,请问一下各位同行及TI 专家。。简单的问题TMS570LS3137

各位好!

 本人看hal中给的例子,RTI 定时器中,点亮LEU

gioSetDirection(hetPORT1, 0xFFFFFFFF);

其中

void gioSetDirection(gioPORT_t *port, uint32 dir)
{
port->DIR = dir;
}

#define hetPORT1 ((gioPORT_t *)0xFFF7B84CU)

这三者之间...0xFFF7B84C对应的是NHET1  Direction Register (HETDIR)的内存地址啊,,他怎么能对应上固定的管脚呢,通过什么方式

中断定时器函数点灯

gioSetPort(hetPORT1, gioGetPort(hetPORT1) ^ 0x00000001);

  • TI  专家帮忙 解释解释呗!

    困扰了 好几天了,固定的地址  对应的固定的寄存器,他怎么对应的固定的管脚呢

  • 这里有几个变量先解释一下,有助于你理解。

    gioPORT_t :这是一个定义的结构体类型,其成员为IO控制与数据相关的一些寄存器,如DIR方向寄存器。

    #define hetPORT1 ((gioPORT_t *)0xFFF7B84CU):这个定义把hetPORT1定义成为一个结构指针,其指向的结构类型为gioPORT_t。0xFFF7B84CU确实是HETDIR寄存器地址,但是你仔细看gioPORT_t结构体定义就会发现,其第一个成员就是方向寄存器DIR。所以,hetPORT1指针指向的地址就是HET的IO控制相关寄存器的第一个寄存器地址,也就是HETDIR的地址。

    关于管脚对应。每个HET支持32个引脚(当然有些可能没有引出)。gioPORT_t结构体内的寄存器都是32位整型,寄存器的每一位,对应一个管脚。第0位对应于HETx【0】管脚,第31位对应于HETx【31】管脚。

    再来看你调用的两个函数。

    gioSetDirection(hetPORT1, 0xFFFFFFFF);

    这个函数是用来设置引脚输入输出方向的,其改变的是结构体内的DIR寄存器值。如上面调用所写,第二个参数为0xFFFFFFFF,所以这一句就是把32个HET1的引脚都设置成了输入状态。

    gioSetPort(hetPORT1, gioGetPort(hetPORT1) ^ 0x00000001);

    这里有两个函数。GetPort是获取引脚电平,SetPort是设置引脚电平。可以看到,在获取引脚电平后,与0x00000001相与,就会使第0位一定变成“1”,然后,再设置到对应管脚,就实现了把HET1【0】这个引脚电平拉高的功能。

  • 熟悉dsp,arm也比较容易上手啊!

  • 仔细看手册,慢慢就好了

  • 另外这款芯片很贵不?

  • 非常感谢! 懂了!