c语言读寄存器某一位的值,寄存器位读写,结构体位域定义,位域操作,位操作...

文章来自http://book.51cto.com/art/201012/237939.htm,个人意见:C语言结构体位域操作寄存器仅供参考,能不用则不用~

1.2.3 添加位域结构体

1)增加位域定义

我们经常需要直接访问寄存器中的某个位域。C281x C/C++头文件及外设示例所涉及的位域结构体方法,为多数片上外设寄存器提供了位域定义。例如,可以为CPU 定时器(CPU-Timer)中的每个寄存器定义一个位域结构体类型。CPU 定时器(CPU-Timer)控制寄存器的位域定义如下所示:

//*****************************************************************************

//DSP281x_headersincludeDSP281x_CpuTimers.h CPU 定时器头文件

//*****************************************************************************

struct TCR_BITS //定义一个TCR_BITS 结构体类型(不是变量)

{ Uint16 rsvd1:4; //3:0 保留,从最低位开始,顺序取位到最高位。取低4 位

Uint16 TSS:1; //4 定时器开始/停止,取第5 位

Uint16 TRB:1; //5 定时器重装,取第6 位

Uint16 rsvd2:4; //9:6 保留,取第7 位到第10 位

Uint16 SOFT:1; //10 仿真模式,取第11 位

Uint16 FREE:1; //11 仿真模式,取第12 位

Uint16 rsvd3:2; //12:13 保留,取第13 位到第14 位

Uint16 TIE:1; //14 输出使能,取第15 位

Uint16 TIF:1; //15 中断标志,取第16 位

};

然后,通过共用体进行声明,以便访问位域结构体定义的各个成员或者16 位或32位寄存器的值。例如,定时器的控制寄存器共用体如下所示:

//*****************************************************************************

//DSP281x_headersincludeDSP281x_CpuTimers.h CPU 定时器头文件

//*****************************************************************************

union TCR_REG //定义共用体类型TCR_REG

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值