完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
贴出部分程序跟中断配置相关的,求解答,连上板子,在中断函数里加了断点,怎么也进不去,程序直接在主函数那等待
void main() [ InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); InitEPwm(); InitAdc(); EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1; //ePWM模块与基准时钟同步 PieVectTable.EPWM1_INT=&EPWM1_isr; //重新映射中断地址 EDIS; IER|=0x0004; //使能PIE组3向量 PieCtrlRegs.PIECTRL.bit.ENPIE=1; //使能PIE模块 PieCtrlRegs.PIEIER3.bit.INTx1=1; //使能PIE组3中中断1 PieCtrlRegs.PIEACK.all=0x0004; //确保组1中的PIEACK位被清除 EINT; //开全局中断 ERTM; //开实时中断 for(; ;) [ ] ] void InitEPwm(void) [ // Initialize ePWM1/2/3/4/5/6 //tbd... InitEPwmGpio(); EPwm1Regs.TBPRD=3750; //150Mhz/2=75Mhz 增减模式3750*2=7500 10K载波 EPwm1Regs.TBPHS.half.TBPHS=0; //相位置0 EPwm1Regs.TBCTR=0; //计数初值为0 EPwm1Regs.TBCTL.all=0x0082; //时间基准2分频变为75Mhz 对称PWM 无初始相位 同步输出 EPwm1Regs.CMPA.half.CMPA=3000; //比较初始值为0 EPwm1Regs.CMPB=0; //比较初始值为0 EPwm1Regs.CMPCTL.all=0x0000; //CTR=0时加载比较值,映射寄存器加载模式 EPwm1Regs.AQCTLA.all=0x0050; //输出强制低 EPwm1Regs.AQCTLB.all=0x0050; //输出强制低 EPwm1Regs.DBCTL.all=0x000B; //死区控制寄存器,00 1011,EPWMxA为输入,主高互补,死区对EPWMxA //的上升沿和EPWMxB的下降沿完全使能 EPwm1Regs.DBRED=0x0064; //上升沿加死区2us 0x0064=100 EPwm1Regs.DBFED=0x0064; //下降沿加死区2us 0x000A=10 EPwm1Regs.ETSEL.bit.INTEN=1; //使能EPwm1中断 EPwm1Regs.ETSEL.bit.INTSEL=2; //使能TBCTR=TBPRD事件 EPwm1Regs.ETPS.bit.INTPRD=1; //第一个事件产生中断,EPWM1中断 EPwm1Regs.ETCLR.bit.INT=1; //清楚中断标志位 EPwm2Regs.TBPRD=3750; //150Mhz/2=75Mhz 增减模式3750*2=7500 10K载波 EPwm2Regs.TBPHS.half.TBPHS=0; //相位置0 EPwm2Regs.TBCTR=0; //计数初值为0 EPwm2Regs.TBCTL.all=0x0082; //时间基准2分频变为75Mhz 对称PWM 无初始相位 同步输出 EPwm2Regs.CMPA.half.CMPA=3000; //比较初始值为0 EPwm2Regs.CMPB=0; //比较初始值为0 EPwm2Regs.CMPCTL.all=0x0000; //CTR=0时加载比较值,映射寄存器加载模式 EPwm2Regs.AQCTLA.all=0x0050; //输出强制低 EPwm2Regs.AQCTLB.all=0x0050; //输出强制低 EPwm2Regs.DBCTL.all=0x000B; //死区控制寄存器 EPwm2Regs.DBRED=0x0064; //上升沿加死区 EPwm2Regs.DBFED=0x0064; //下降沿加死区 EPwm3Regs.TBPRD=3750; //150Mhz/2=75Mhz 增减模式3750*2=7500 10K载波 EPwm3Regs.TBPHS.half.TBPHS=0; //相位置0 EPwm3Regs.TBCTR=0; //计数初值为0 EPwm3Regs.TBCTL.all=0x0082; //时间基准2分频变为75Mhz 对称PWM 无初始相位 同步输出 EPwm3Regs.CMPA.half.CMPA=3000; //比较初始值为0 EPwm3Regs.CMPB=0; //比较初始值为0 EPwm3Regs.CMPCTL.all=0x0000; //CTR=0时加载比较值,映射寄存器加载模式 EPwm3Regs.AQCTLA.all=0x0050; //输出强制低 EPwm3Regs.AQCTLB.all=0x0050; //输出强制低 EPwm3Regs.DBCTL.all=0x000B; //死区控制寄存器 EPwm3Regs.DBRED=0x0064; //上升沿加死区 EPwm3Regs.DBFED=0x0064; //下降沿加死区 ] interrupt void EPWM1_isr() [ EPwm1Regs.CMPA.half.CMPA=2000; ADSAMPLE(); PLL_PI(); if(k<=1600); //延时四个电网周期发脉冲 [ k++; //EPwm初始化里已强制低 if(k==1600) [ EPwm1Regs.AQCTLA.all=0x0060; //比较匹配CMPA时高有效 EPwm1Regs.AQCTLB.all=0x0090; //比较匹配CMPA时低有效 EPwm2Regs.AQCTLA.all=0x0060; EPwm2Regs.AQCTLB.all=0x0090; EPwm3Regs.AQCTLA.all=0x0060; EPwm3Regs.AQCTLB.all=0x0090; k=1601; ] ] CURRENT_PI(); SVPWM(); EPwm1Regs.ETCLR.bit.INT=1; //清楚EPWM那个相应的中断标志 PieCtrlRegs.PIEACK.bit.ACK3=1; //响应同组中断 EINT; //开全局中断 ] |
|
相关推荐
7 个讨论
|
|
只有小组成员才能发言,加入小组>>
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
453 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
934 浏览 1 评论
539 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
417 浏览 1 评论
971 浏览 0 评论
66浏览 3评论
CC3100BOOST使用CC3200lunchXL进行烧录
913浏览 2评论
TAS5411-Q1喇叭有爆破音,电压就会被拉低,有什么好办法解决吗?
244浏览 2评论
156浏览 2评论
202浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-2 20:55 , Processed in 1.001519 second(s), Total 80, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号