工具/软件:Code Composer Studio
中"半"的含义是什么
EPwm1Regs.TBPRD = 37500;
EPwm1Regs.CMPA.half.CMPA = EPwm1Regs.TBPRD/2
EPwm1Regs.CMPB = EPwm1Regs.TBPRD/4;
为什么不使用 CMPB ??
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
中"半"的含义是什么
EPwm1Regs.TBPRD = 37500;
EPwm1Regs.CMPA.half.CMPA = EPwm1Regs.TBPRD/2
EPwm1Regs.CMPB = EPwm1Regs.TBPRD/4;
为什么不使用 CMPB ??
Sandeep、
上面引用的代码行中的"半"是一个助记符、允许您访问结构。
ePWM_reg 结构中的一个联合体的类型为"cmpa_HRPWM_Group"(在上面突出显示)。 该联合体包含一个"cmpa_HRPWM_REG"类型的结构、该结构别名为助记符"half"、这是您在上面询问的问题。
只是一个助记符、可以是任何东西。 之所以选择'half-'字、是因为"cmpa_HRPWM_regs"结构中的两个 uint16变量是 整个寄存器的一半。
CMPB 没有相同的联合体、它只是一个 UINT16... CMPA.half 具有"CMPA"和"CMPAHR"。
此致、
Cody
请清晰地取消。 找不到你。 为什么一半不 是用 CMPA 写入"// ePWM 模块1配置"中,而是用 "// ePWM 模块2配置 "写入?
// ePWM 模块1配置
EPwm1Regs.TBPRD = 1200;//周期= 1201 TBCLK 计数
EPwm1Regs.CMPA = 600;//为 EPWM1A 设置50%固定占空比
EPwm1Regs.TBPHS.Half.TBPHS = 0;//将相位寄存器设置为零
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//非对称模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//主机模块
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;//同步下流模块
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;//设置 EPWM1A 的操作
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;//启用死区模块
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;//活动高电平互补
EPwm1Regs.DBFED = 50;// FED = 50 TBCLK
EPwm1Regs.DBRED = 70;//最初为70 TBCLK
// ePWM 模块2配置
EPwm2Regs.TBPRD = 1200;//周期= 1201 TBCLK 计数
EPwm2Regs.CMPA.half.CMPA = 600;//设置50%固定占空比 EPWM2A
EPwm2Regs.TBPHS.Half.TBPHS = 0;//最初将相位寄存器设置为零
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//非对称模式
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;//从机模块
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;//同步直通
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET;//设置 EPWM2A 的操作
EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;//启用死区模块
EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;//活动高电平互补
EPwm2Regs.DBFED = 30;// FED = 30 TBCLK
EPwm2Regs.DBRED = 40;//最初红色= 40 TBCLK