智能车制作
标题:
新手提问 PWM的问题
[打印本页]
作者:
cgd514
时间:
2012-5-8 22:21
标题:
新手提问 PWM的问题
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
void PWM_Init(void){
PWME = 0x00; //禁止PWM输出
PWMPOL = 0x00; //PWM输出起始为低电平
PWMPRCLK = 0x25; //ClockB=Bus/4=8MHz, ClockA=Bus/32=1MHz 00100101 对时钟A,B分频
PWMSCLA = 1; //ClockSA=ClockA/(1*2)=500kHz Clock SA=Clock A /(2*PWMSCLA)
PWMSCLB = 1; //ClockSB=ClockB/(1*2)=500kHz Clock SB=Clock B /(2*PWMSCLB)
PWMCLK = 0xFF; //时钟来源选择ClockSA、ClockSB
PWMCAE = 0x00; //左对齐方式
PWMCTL = 0xF0; //通道01 23 45 67级联
PWMPER01 = 5000; //输出周期=(1/500kHz)x(10000)= 20MS PWMx周期=通道时钟周期*PWMPERx
PWMPER45 = 10000; //输出周期=(1/500kHz)x(10000)=20ms
PWMPER23 = 25000; //输出周期=(1/4MHz)x(1000)= ms 4kHz
PWMPER67 = 10000; //输出周期=(1/4MHz)x(1000)=
PWMDTY01 = 2500; //占空比=[(PWMPERx-PWMDTYx)/(PWMPERx)]x100%=
PWMDTY45 = 2000; //占空比=[(PWMPERx-PWMDTYx)/(PWMPERx)]x100%=
PWMDTY23 = 12500;
PWMDTY67 = 800;
PWME=0xAA; //01级联模块初始化 00001000
}
void SetBusClock(void)
{
CLKSEL=0x00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR =0x40 | 0x03; // VCOFRQ[7:6];SYNDIV[5:0]; //SYNR=0xc0|0x09可以超频到80MHZ
REFDV=0x80 | 0x01; // REFFRQ[7:6];REFDIV[5:0]
POSTDIV=0x00;
//fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1);fPLL= fVCO/(2 × POSTDIV);
//BUS= fPLL/2
//if POSTDIV=0, fPLL= fVCO
_asm(nop); //BUS CLOCK=32M
_asm(nop);
while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
}
void main(){
SetBusClock();
PWM_Init();
for(;;) {
};
}
我觉得 1 3 5 7 引脚都应该有相应的波形输出 但是只有1口能出波形 3 5 7 都没有 高手麻烦告知一下 太谢谢您
作者:
OPQ_XYQ
时间:
2012-5-8 23:17
改为OXFF试试
作者:
醉清风
时间:
2012-5-9 09:08
事实证明是由波形的,看看是不是哪儿没接好线。
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2