|
发表于 2007-3-31 01:29:47
|
显示全部楼层
Post by 1ball
对,貌似操作寄存器应该是内核代码的事情,不应该应用做得 做单片机/嵌入开发,楼主提到的这种方式是经常遇到了。不过如果写成如下的方式会容易懂些:
-----------
尽量不要在代码中使用magic number- /* in header file */
- /* Register address */
- #define REG_BASE 0x20041140
- #define REG_CTRL_MODE (REG_BASE + 0 * sizeof(int))
- #define REG_BUFF_MODE (REG_BASE + 1 * sizeof(int))
- #define REG_WR_MODE (REG_BASE + 2 * sizeof(int))
- #define REG_RD_MODE (REG_BASE + 3 * sizeof(int))
- typedef enum WR_MODE_enum
- {
- WR_DISABLE = 0,
- WR_OVERWRITE,
- WR_APPEND
- } WR_MODE_E;
- /* in c file */
- volatile unsigned int *RegPtr;
- RegPtr = (volatile unsigned int *)REG_WR_MODE;
- *RegPtr = WR_DISABLE;
复制代码 |
|