C7-结构体类型指针做为函数传参

//函数体
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period);
{

    // Initialize timer period:
    Timer->CPUFreqInMHz = Freq;
    Timer->PeriodInUSec = Period;
....

}
//函数调用
ConfigCpuTimer(&CpuTimer0, 200, 500000);
//被传入的结构体
struct CPUTIMER_VARS CpuTimer0;

struct CPUTIMER_VARS {
   volatile struct  CPUTIMER_REGS  *RegsAddr;
   Uint32    InterruptCount;
   float   CPUFreqInMHz;
   float   PeriodInUSec;
};

struct CPUTIMER_REGS {
    union   TIM_REG    TIM;                          // CPU-Timer, Counter Register
    union   PRD_REG    PRD;                          // CPU-Timer, Period Register
    union   TCR_REG    TCR;                          // CPU-Timer, Control Register
    Uint16             rsvd1;                        // Reserved
    union   TPR_REG    TPR;                          // CPU-Timer, Prescale Register
    union   TPRH_REG   TPRH;                         // CPU-Timer, Prescale Register High
};

所以函数ConfigCpuTimer里可以对寄存器位操作,如Timer->RegsAddr->TCR.bit.TSS = 1;

 另外,同一个结构体被声明三个不同的名

这是一个很有趣的操作 ,

在一个结构体里面用一个结构体指针类型成员,使函数能灵活用另一个结构体

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值