关于头文件中寄存器的宏定义,请教!

youki1234 2009-11-11 11:10:18
在看2410的头文件,发现其中有些寄存器用*(volatile unsigned char *) 来定义,而有一些用*(volatile unsigned *) 来定义,这是为什么呢?这两个有什么区别呢?
...全文
315 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kelibin 2009-11-13
  • 打赏
  • 举报
回复
*(volatile unsigned char *) 寄存器是8位访问的
*(volatile unsigned *)得看是什么CPU,有可能16位访问,也有可能32位访问。至于有效位有几位并不影响你数据类型的定义,8位的话取低8位就行了
youki1234 2009-11-12
  • 打赏
  • 举报
回复
up
GARY 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 paul_chao 的回复:]
8 bits / 32 bits access.

Paul, Chao @ Techware

[/Quote]
前辈。很想认识你一下。可否留个网络上的联系方式?比如QQ。
HeyMe 2009-11-11
  • 打赏
  • 举报
回复
举个nand flasg的例子:
#define rNFCONF (*(volatile unsigned *)0x4e000000) //NAND Flash configuration
rNFCONF是32bit访问的
#define rNFCMD (*(volatile char*)0x4e000004) //NADD Flash command
rNFCMD是8bit访问的
可以对照数据手册看看。
lyx_wq 2009-11-11
  • 打赏
  • 举报
回复
正确!!
博说医械研发 2009-11-11
  • 打赏
  • 举报
回复
*(volatile unsigned char *) 寄存器是8位访问的
*(volatile unsigned *)寄存器是32位访问的
对应的你可以看datasheet上的寄存器说明,比如NAND FLASH的一些寄存器。
paul_chao 2009-11-11
  • 打赏
  • 举报
回复
8 bits / 32 bits access.

Paul, Chao @ Techware
猫界大佬 2009-11-11
  • 打赏
  • 举报
回复
*(volatile unsigned char *) 寄存器是8位访问的
*(volatile unsigned *)寄存器是32位访问
galle 2009-11-11
  • 打赏
  • 举报
回复
学习了!
youki1234 2009-11-11
  • 打赏
  • 举报
回复
我开始也是这么认为的,但最近发现好像有点不对~~大家看看2410手册的GPIO口,例如GPFDAT,它的有效位为8位,如下图所示:



那大家说它应该是用*(volatile unsigned char *) 还是*(volatile unsigned *)呢?


宇帆 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 veabol 的回复:]
*(volatile unsigned char *) 寄存器是8位访问的
*(volatile unsigned  *)寄存器是32位访问的

[/Quote]正确

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧