ARM芯片GPIO等寄存器的地址 常见的此类地址有什么啊解决方法
ARM芯片GPIO等寄存器的地址 常见的此类地址有什么啊小弟正在看嵌入式 水平非常的水还请各位大侠不吝点化看
ARM芯片GPIO等寄存器的地址 常见的此类地址有什么啊
小弟正在看嵌入式 水平非常的水
还请各位大侠不吝点化
看程序中有如下语句
C/C++ code#define GPBCON (*(volatile unsingned long *)0x56000010)#define GPBDAT (*(volatile unsingned long *)0x56000014)#define GPB5_out (1<<(5*2))GPBCON=GPB5_out; //GPB5引脚设置为输出GPBDAT&=~(1<<5); //GPB5输出低电平
问题1.定义的那个宏GPBCON对应的地址哪位高手有整理过相关的资料 就是各种寄存器的地址 每个寄存器各个位所代表的含义哪里有介绍啊
问题2.这一行#define GPB5_out (1<<(5*2))那个位移操作里面的5*2是什么东西呀
小弟特别特别水!希望大侠们指点!
[解决办法]我也不怎么懂,
不过第二个问题是5乘以2的意思是不
[解决办法]每个寄存器所代表的含义及为什么是后面的地址,请查阅芯片的用户手册
至于用5*2而不是直接用10,应该是编程习惯问题,主要是想从代码上更好的表达意图
[解决办法]每个芯片的各寄存器地址及各位功能都不相同,没办法总结,具体应用到哪个芯片就看哪个芯片的DATASHEET。
[解决办法]寄存器地址在那个DATASHEET里面,5*2是习惯问题,比如5*1可能是一个意思,5*3是另外一个,直接用5,15失去了意义了。
[解决办法]和手册对着看,千万不要看着程序瞎琢磨。嘿嘿
[解决办法][解决办法]LS的第二点我有不同看法.
#define GPB5_out (1<<(5*2))
GPBCON=GPB5_out; //GPB5引脚设置为输出
其实是设置积存器GPBCON(地址:0x56000010) = 1<<(5*2)
从代码注释"//GPB5引脚设置为输出",看,GPBCON=GPB5_out;应该是配置某组GPIO的第10根因脚成输出模式.
说实话,这代码不怎么好.
应该这样
define BIT10 (1<<10)
GPBCON|=BIT10;
GPBDAT&=~(BIT10);