本文來源電子發(fā)燒友社區(qū),作者:yjp, 帖子地址:https://bbs.elecfans.com/jishu_2293868_1_1.html
看手冊(cè),如何配置PWM,代碼如下
void HRPWM1_config(uint16 period){ /影子寄存器的立即裝載/ EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; /PWM周期值向上計(jì)數(shù)時(shí)為TBCLK+1個(gè)TBCLK,period-1表示其周期值與實(shí)際周期數(shù)相等/ EPwm1Regs.TBPRD = period - 1;/*CC比較寄存器的占空比配置*/
/*HRPWM占空比初始值設(shè)置:整數(shù)部分*/
EPwm1Regs.CMPA.half.CMPA = period / 2;
/*HRPWM占空比初始值設(shè)置常規(guī)PWM占空比右移8位,擴(kuò)展16位精度為24位*/
EPwm1Regs.CMPAM.half.CMPAHR = 1 << 8;
EPwm1Regs.CMPB = period / 2;
?
/*EPWM1的相位無偏移*/
EPwm1Regs.TBPHS.half.TBPHS = 0;
/*TB時(shí)基計(jì)數(shù)初始值從0開始計(jì)數(shù)*/
EPwm1Regs.TBCTR = 0;
/*仿真模式時(shí),時(shí)基計(jì)數(shù)器自由運(yùn)行*/
EPwm1Regs.TBCTL.bit.FREE_SOFT = 3;
?
/*時(shí)基計(jì)數(shù)器向上計(jì)數(shù)*/
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
/*禁止裝載相位*/
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
/*不產(chǎn)生同步事件*/
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
/*時(shí)基計(jì)數(shù)器高速時(shí)鐘與低速時(shí)鐘采用1分頻*/
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
?
/*在CTR=0時(shí)裝載影子寄存器的值*/
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
/*CC比較寄存器采用影子寄存器模式*/
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
?
/*在CTR=0時(shí)EPWMxA清零*/
EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;
/*EPWMxA向上計(jì)數(shù)時(shí)當(dāng)CTR=CMPA時(shí)EPWMxA置位*/
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
/*當(dāng)CTR=0時(shí)EPWMxB清零*/
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
/*EPWMxB向上計(jì)數(shù)時(shí)當(dāng)CTR=CMPB時(shí)EPWMxB置位*/
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
?
/*事件中斷配置*/
/*從CTR=0處開始執(zhí)行事件中斷*/
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;
/*ET事件中斷INT使能*/
EPwm1Regs.ETSEL.bit.INTEN = 1;
/*ET中斷事件次數(shù)配置:一中斷周期內(nèi)執(zhí)行3個(gè)事件*/
EPwm1Regs.ETPS.bit.INTPRD = ET_3RD;
?
EALLOW;
/*使能生成,占空比調(diào)節(jié)*/
EPwm1Regs.HRPCTL.bit.HRPE = 1;
/*相位調(diào)節(jié)屏蔽*/
EPwm1Regs.HRPCTL.bit.TBPHSHRLOADE = 0;
?
/*MEP校準(zhǔn)作用在上升沿,占空比控制模式*/
EPwm1Regs.HRCNFG.all = 0x0;
EPwm1Regs.HRCNFG.bit.EDGMODE = HR_REP;
EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP;
?
/*自CTR=0開始裝載高頻CMPAHR寄存器的值*/
EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO;
/*使能自動(dòng)校準(zhǔn)延遲功能*/
EPwm1Regs.HRCNFG.bit.AUTOCONV = 1;
?
/*自動(dòng)延遲校準(zhǔn)延遲數(shù)設(shè)置為1*/
EPwm1Regs.HRMSTEP = 0x00FC;
EDIS;}
再中斷服務(wù)函數(shù)如下/**********************函數(shù)名:EPWM2_ISR(void) 參 數(shù):無 返回值:無 作 用:EPWM2事件中斷:產(chǎn)生占空比從1到256變化的常規(guī)PWM波形**********************/void INTERRUPT EPWM2_ISR(void){ for(DutyFine=1;DutyFine<256;DutyFine++)? ?? ???{? ?? ?? ?? ?? ? EPwm2Regs.CMPA.half.CMPA=DutyFine;? ?? ???}EPwm2Regs.ETCLR.bit.INT=1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP3;}
看手冊(cè),如何配置PWM,代碼如下
void HRPWM1_config(uint16 period){ /影子寄存器的立即裝載/ EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; /PWM周期值向上計(jì)數(shù)時(shí)為TBCLK+1個(gè)TBCLK,period-1表示其周期值與實(shí)際周期數(shù)相等/ EPwm1Regs.TBPRD = period - 1;/*CC比較寄存器的占空比配置*/
/*HRPWM占空比初始值設(shè)置:整數(shù)部分*/
EPwm1Regs.CMPA.half.CMPA = period / 2;
/*HRPWM占空比初始值設(shè)置常規(guī)PWM占空比右移8位,擴(kuò)展16位精度為24位*/
EPwm1Regs.CMPAM.half.CMPAHR = 1 << 8;
EPwm1Regs.CMPB = period / 2;
?
/*EPWM1的相位無偏移*/
EPwm1Regs.TBPHS.half.TBPHS = 0;
/*TB時(shí)基計(jì)數(shù)初始值從0開始計(jì)數(shù)*/
EPwm1Regs.TBCTR = 0;
/*仿真模式時(shí),時(shí)基計(jì)數(shù)器自由運(yùn)行*/
EPwm1Regs.TBCTL.bit.FREE_SOFT = 3;
?
/*時(shí)基計(jì)數(shù)器向上計(jì)數(shù)*/
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
/*禁止裝載相位*/
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
/*不產(chǎn)生同步事件*/
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
/*時(shí)基計(jì)數(shù)器高速時(shí)鐘與低速時(shí)鐘采用1分頻*/
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
?
/*在CTR=0時(shí)裝載影子寄存器的值*/
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
/*CC比較寄存器采用影子寄存器模式*/
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
?
/*在CTR=0時(shí)EPWMxA清零*/
EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;
/*EPWMxA向上計(jì)數(shù)時(shí)當(dāng)CTR=CMPA時(shí)EPWMxA置位*/
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
/*當(dāng)CTR=0時(shí)EPWMxB清零*/
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
/*EPWMxB向上計(jì)數(shù)時(shí)當(dāng)CTR=CMPB時(shí)EPWMxB置位*/
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
?
/*事件中斷配置*/
/*從CTR=0處開始執(zhí)行事件中斷*/
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;
/*ET事件中斷INT使能*/
EPwm1Regs.ETSEL.bit.INTEN = 1;
/*ET中斷事件次數(shù)配置:一中斷周期內(nèi)執(zhí)行3個(gè)事件*/
EPwm1Regs.ETPS.bit.INTPRD = ET_3RD;
?
EALLOW;
/*使能生成,占空比調(diào)節(jié)*/
EPwm1Regs.HRPCTL.bit.HRPE = 1;
/*相位調(diào)節(jié)屏蔽*/
EPwm1Regs.HRPCTL.bit.TBPHSHRLOADE = 0;
?
/*MEP校準(zhǔn)作用在上升沿,占空比控制模式*/
EPwm1Regs.HRCNFG.all = 0x0;
EPwm1Regs.HRCNFG.bit.EDGMODE = HR_REP;
EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP;
?
/*自CTR=0開始裝載高頻CMPAHR寄存器的值*/
EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO;
/*使能自動(dòng)校準(zhǔn)延遲功能*/
EPwm1Regs.HRCNFG.bit.AUTOCONV = 1;
?
/*自動(dòng)延遲校準(zhǔn)延遲數(shù)設(shè)置為1*/
EPwm1Regs.HRMSTEP = 0x00FC;
EDIS;}
再中斷服務(wù)函數(shù)如下/**********************函數(shù)名:EPWM2_ISR(void) 參 數(shù):無 返回值:無 作 用:EPWM2事件中斷:產(chǎn)生占空比從1到256變化的常規(guī)PWM波形**********************/void INTERRUPT EPWM2_ISR(void){ for(DutyFine=1;DutyFine<256;DutyFine++)? ?? ???{? ?? ?? ?? ?? ? EPwm2Regs.CMPA.half.CMPA=DutyFine;? ?? ???}EPwm2Regs.ETCLR.bit.INT=1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP3;}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
中科昊芯
+關(guān)注
關(guān)注
5文章
85瀏覽量
5995 -
開發(fā)板試用
+關(guān)注
關(guān)注
3文章
303瀏覽量
2755
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
【獲獎(jiǎng)名單】2025開發(fā)板評(píng)測(cè)大賽優(yōu)秀開發(fā)者、最受歡迎開發(fā)板公布
試用測(cè)評(píng)后通過問卷調(diào)查投票,選出了各自心目中最受歡迎的開發(fā)板。現(xiàn)將名單一同予以公示。
大賽作品詳情:【作品精選】2025電子發(fā)燒友開發(fā)板測(cè)評(píng)大賽作品合集!
優(yōu)秀作品
發(fā)表于 11-21 09:31
【作品合集】飛凌嵌入式OK527N-C開發(fā)板測(cè)評(píng)
作品合集
第十三期合集 : 玄鐵Banana Pi BPI-RV2開發(fā)板測(cè)評(píng)作品合集
第十四期合集 : 玄鐵BPI-CanMV-K230D-Zero開發(fā)板測(cè)評(píng)作品合集
第十五期合集 : 中科昊
發(fā)表于 09-22 15:54
【作品合集】中科昊芯Core_DSC280025C開發(fā)板測(cè)評(píng)
的應(yīng)用
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】---外部中斷問題
第
發(fā)表于 09-18 10:52
【作品精選】2025電子發(fā)燒友開發(fā)板測(cè)評(píng)大賽作品合集!
Milk-V Duo S 開發(fā)板免費(fèi)試用
玄鐵Banana Pi BPI-RV2開發(fā)板試用
玄鐵Banana Pi BPI-CanMV-K230D-Zero17
發(fā)表于 09-03 15:24
中科昊芯Core_DSC280025C開發(fā)板的外部中斷問題
獲得中科昊芯Core_DSC280025C開發(fā)板開發(fā)板后,我就抓緊時(shí)間研究,無奈學(xué)識(shí)淺薄,學(xué)得很
發(fā)表于 08-08 22:06
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+4. CAN外設(shè)調(diào)試(含源碼)
前言
大家好,非常感謝電子發(fā)燒友與中科昊芯提供的DSC280025C開發(fā)板,這是一款DSP的
發(fā)表于 08-05 20:46
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+SCI測(cè)試與代碼解讀
Core_DSC280025C核心板使用了昊芯HXS320F28025CRISC-V DSP芯片,該芯片集成了吳芯自主研發(fā)的H28x內(nèi)核。核
發(fā)表于 07-17 10:42
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+3.DSP基礎(chǔ)外設(shè)調(diào)試(含源碼)
前言
大家好,非常感謝電子發(fā)燒友與中科昊芯提供的DSC280025C開發(fā)板,這是一款DSP的
發(fā)表于 07-13 16:07
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+2.RAM工程與FLASH工程對(duì)比
前言
大家好,非常感謝電子發(fā)燒友與中科昊芯提供的DSC280025C開發(fā)板,這是一款DSP的
發(fā)表于 07-04 10:37
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+1.開箱之浮點(diǎn)計(jì)算對(duì)比
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+1.開箱之浮點(diǎn)計(jì)算對(duì)比
前言
大家好,
發(fā)表于 06-29 10:01
AioneMotor_DSC28034_L3F驅(qū)控一體板現(xiàn)貨庫存
AioneMotor_DSC28034_L3F驅(qū)控一體板是中科昊芯新推出的性能卓越電機(jī)驅(qū)控
發(fā)表于 06-27 09:07
有獎(jiǎng)丨米爾 瑞芯微RK3562開發(fā)板免費(fèi)試用新增名額!
米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3562應(yīng)用處理器的MYD-YR3562開發(fā)板免費(fèi)試用名額增加
中科昊芯Core_DSC280025C開發(fā)板免費(fèi)試用
Core_DSC280025C核心板使用了昊芯HXS320F28025C RISC-V ? DSP芯片,該芯片集成了吳芯自主研發(fā)的H28x內(nèi)
中科昊芯DSP產(chǎn)品及公司信息
庫和驅(qū)動(dòng)庫,幫助用戶降低遷移成本,縮短開發(fā)周期。同時(shí),公司還推出了多種開發(fā)板和核心板,如Core_DSC28027和Start_DSC28034
發(fā)表于 04-07 09:16
【中科昊芯Start_DSC28034PNT湖人開發(fā)板試用體驗(yàn)】--學(xué)寫一個(gè)PWM
評(píng)論