完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
F2812
1、写的PWM波程序,用的是PWM56驱动电机,不清楚用比较寄存器产生PWM时与通用定时器有什么关系吗? 2、用定时器产生PWM,发生比较匹配时,发生触变,计数器继续计数直到与周期寄存器值相等,清零。在这个过程中,有中断吗?我现在搞不清楚下面这个程序运行流程,特别是void init_eva(void);之后进入到while()以后,while()为真且为空语句,那么程序是怎么到void init_eva(void);内的呢? #include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File void init_eva(void); void delay(); unsigned int i,j,k; unsigned int led[4]={0x01,0x02,0x20,0x40}; void main(void) { // Step 1. Initialize System Control: InitSysCtrl(); // Step 2. Initalize GPIO: EALLOW; // Enable PWM pins GpioMuxRegs.GPAMUX.all = 0x00FF; // EVA PWM 1-6 pins GpioMuxRegs.GPBMUX.all = 0x00FF; // EVB PWM 7-12 pins GpioMuxRegs.GPDMUX.all=0x00; GpioMuxRegs.GPDDIR.all=0x63; GpioMuxRegs.GPDQUAL.all=0x00; EDIS; // Step 3. Clear all interrupts and initialize PIE vector table: DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); // EvaRegs.EXTCONA.bit.INDCOE=1; // Step 4. Initialize all the Device Peripherals: init_eva(); init_evb(); // Step 5. User specific code, enable interrupts: // Just sit and loop forever: // PWM pins can be observed with a scope. while(1) { } void init_eva() { // EVA Configure T1PWM, T2PWM, PWM1-PWM6 // Initalize the timers // Initalize EVA Timer1 EvaRegs.T1PR = 0xFFFF; // Timer1 period EvaRegs.T1CMPR = 0x8000; // Timer1 compare EvaRegs.T1CNT = 0x0000; // Timer1 counter // TMODE = continuous up/down // Timer enable // Timer compare enable EvaRegs.T1CON.all = 0x1042; // Initalize EVA Timer2 EvaRegs.T2PR = 0x0FFF; // Timer2 period EvaRegs.T2CMPR = 0x03C0; // Timer2 compare EvaRegs.T2CNT = 0x0000; // Timer2 counter // TMODE = continuous up/down // Timer enable // Timer compare enable EvaRegs.T2CON.all = 0x1042; // Setup T1PWM and T2PWM // Drive T1/T2 PWM by compare logic EvaRegs.GPTCONA.bit.TCMPOE = 1; // Polarity of GP Timer 1 Compare = Active low EvaRegs.GPTCONA.bit.T1PIN = 1; // Polarity of GP Timer 2 Compare = Active high EvaRegs.GPTCONA.bit.T2PIN = 2; //2 high 1 low 0 force 0 3 force 1 // Enable compare for PWM1-PWM6 EvaRegs.CMPR1 = 0x7FFF; EvaRegs.CMPR2 = 0x4000; EvaRegs.CMPR3 = 0xC000; // Compare action control. Action that takes place // on a cmpare event // output pin 1 CMPR1 - active high // output pin 2 CMPR1 - active low // output pin 3 CMPR2 - active high // output pin 4 CMPR2 - active low // output pin 5 CMPR3 - active high // output pin 6 CMPR3 - active low EvaRegs.ACTRA.all = 0x0666; EvaRegs.DBTCONA.all = 0x0000; // Disable deadband // EvaRegs.COMCONA.all = 0xA600; EvaRegs.COMCONA.all = 0xA6ff; } void delay(unsigned int value) { for(i=0;i<10000;i++) { for(j=0;j |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
1566 浏览 0 评论
615 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
1985 浏览 0 评论
2775 浏览 1 评论
1082 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-28 21:20 , Processed in 0.505259 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号