驱动开发中如何定义寄存器啊?
VINT32 xx;
类似这样定义?
通常要看你需要定义的寄存器是一个什么位宽的8为的定义成一个unsigned char*的变量,把寄存器的地址给它就可以了,16位、32位。。。以此类推。
LS的,应该是这养定义寄存器吧:
#define DMR 0x040
那么寄存器地址是硬件固定的还是还是可以设置的啊?我该如何读写该寄存器呢?
举个例子,要定义寄存器IOPIN0 :
#define IOPIN0 (*(volatile unsigned long *)(GPIO_BASE_ADDR + 0x00))
具体要看这个寄存器是多少位寻址的。
#define rTICINT (*(volatile unsigned char *)0xB1700047)
typedef volatile unsigned char reg8
#define reg1 (reg8 *)(baseaddress+offset)
#define regset(reg,value) *(reg)=(unsigned char)value;
#define regread(reg,value) value=*(reg);
unsigned long 是32位的,而寄存器也是32位的,其实就是用个unsigned long 数据类型长度的内存空间对应32为宽的寄存器的位,好像是这样的