wangch_sh 发表于 2013-12-21 08:24

5509aIO口的问题

我用5509a写程序,IO口操作都是这样:
GPIO_RSET(IODATA,0x1);
有没有向28系列那样对IO口的一位进行操作的方式啊?高手指教,谢谢!

zhangmangui 发表于 2013-12-21 23:13

用CSL库这样写的   这个函数也就是对寄存器的直接操作
如果要跟28一样那样对寄存器按位域操作你就需要按照datasheet上寄存器对应的地址
定义寄存器   结构体位域
然后就可以啦看到有些基于5509的代码就是这么写的

wangch_sh 发表于 2013-12-22 11:54

谢谢!

zhangmangui 发表于 2013-12-22 21:34

我找到直接操作寄存器的代码   给你分享

wangch_sh 发表于 2013-12-22 21:53

多谢!

zhangmangui 发表于 2013-12-23 10:00

wangch_sh 发表于 2013-12-22 21:53 static/image/common/back.gif
多谢!

你看看这个是直接对寄存器地址定义操作的


wangch_sh 发表于 2013-12-23 10:27

再次感谢!

ttxs_2013 发表于 2013-12-26 16:54

也遇到的类似的问题,想只观察定义的那一位I/O口的电平怎么读出来,尝试着用GPIO_FGET(IODATA, _GPIO_IODATA_IO7D)语句,但是老是报错,说是_GPIO_IODATA_IO7D未定义,在csl_gpiohal.h文件中对数据寄存器的0-7位都进行了宏定义,看不明白是什么意思
#define _GPIO_IODATA_IO7D_SHIFT                (0x0007u)
#define _GPIO_IODATA_IO7D_MK(n)                (((Uint16)(n) & 0x0001u) << _GPIO_IODATA_IO7D_SHIFT)
#define _GPIO_IODATA_IO7D_MASK               (_GPIO_IODATA_IO7D_MK(0x0001u))
#define _GPIO_IODATA_IO7D_CLR              (~(_GPIO_IODATA_IO7D_MK(0x0001u)))
页: [1]
查看完整版本: 5509aIO口的问题