完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
老师您好!初学,不知道什么时候进入中断,为了能说明白问题,下面的例程在开发板上已经测试了,正常,是PWM控制两个LED闪烁,我只是想知道,进入中断的条件,在哪条语句中能看到满足某个条件就进入了中断啊?感谢了
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File #define PWM1_INT_ENABLE 1 #define PWM2_INT_ENABLE 1 #define PWM3_INT_ENABLE 1 #define PWM1_tiMER_TBPRD 0x1FFF #define PWM2_TIMER_TBPRD 0x1FFF #define PWM3_TIMER_TBPRD 0x1FFF #define DELAY 1000000L interrupt void epwm1_timer_isr(void); interrupt void epwm2_timer_isr(void); interrupt void epwm3_timer_isr(void); void InitEPwmTimer(void); Uint32 EPwm1TimerIntCount; Uint32 EPwm2TimerIntCount; Uint32 EPwm3TimerIntCount; Uint32 LoopCount; void main(void) [ InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; PieVectTable.EPWM1_INT = &epwm1_timer_isr; PieVectTable.EPWM2_INT = &epwm2_timer_isr; PieVectTable.EPWM3_INT = &epwm3_timer_isr; EDIS; InitEPwmTimer(); InitFlash(); EPwm1TimerIntCount = 0; EPwm2TimerIntCount = 0; EPwm3TimerIntCount = 0; LoopCount = 0; EINT; ERTM; InitXintf(); for(;;) [] ] void InitEPwmTimer() [ EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; EDIS; // Setup Sync EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // Allow each timer to be sync'ed EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE; EPwm1Regs.TBPHS.half.TBPHS = 100; EPwm2Regs.TBPHS.half.TBPHS = 200; EPwm3Regs.TBPHS.half.TBPHS = 300; EPwm1Regs.TBPRD = PWM1_TIMER_TBPRD; EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; EPwm1Regs.ETSEL.bit.INTEN = PWM1_INT_ENABLE; EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; EPwm2Regs.TBPRD = PWM2_TIMER_TBPRD; EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; EPwm2Regs.ETSEL.bit.INTEN = PWM2_INT_ENABLE; EPwm2Regs.ETPS.bit.INTPRD = ET_2ND; EPwm3Regs.TBPRD = PWM3_TIMER_TBPRD; EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; EPwm3Regs.ETSEL.bit.INTEN = PWM3_INT_ENABLE; EPwm3Regs.ETPS.bit.INTPRD = ET_3RD; EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; EDIS; ] interrupt void epwm1_timer_isr(void) [ // Put the Flash to sleep FlashRegs.FPWR.bit.PWR = FLASH_SLEEP; EPwm1TimerIntCount++; if ((EPwm1TimerIntCount%2000)==0) GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1; EPwm1Regs.ETCLR.bit.INT = 1; PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; ] interrupt void epwm2_timer_isr(void) [ EPwm2TimerIntCount++; if ((EPwm2TimerIntCount%2000)==0) GpioDataRegs.GPATOGGLE.bit.GPIO1 = 1; FlashRegs.FPWR.bit.PWR = FLASH_STANDBY; EPwm2Regs.ETCLR.bit.INT = 1; PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; ] interrupt void epwm3_timer_isr(void) [ Uint16 i; EPwm3TimerIntCount++; for(i = 1; i < 0x01FF; i++) [] EPwm3Regs.ETCLR.bit.INT = 1; PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; ] |
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
321 浏览 1 评论
523 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
762 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
643 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1119 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
15浏览 28评论
28浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
234浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
191浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
51浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 23:35 , Processed in 0.885853 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191