本帖最后由 黄大话 于 2014-12-3 16:31 编辑  
 
//------------------------------------------------------------------------------ 
#define SetBit(VAR,Place)         ( VAR |= (1<< Place) ) 
#define ClrBit(VAR,Place)         ( VAR &= ((1<< Place)^0xffffFFFF) ) 
#define ChgBit(VAR,Place)         ( VAR ^= (1<< Place) )         //取反 
#define AffBit(VAR,Place,Value)   ((Value) ? \ 
                                   (VAR |= (1<< Place)) : \ 
                                   (VAR &= ((1<< Place)^0xffffFFFF))) 
#define MskBit(Dest,Msk,Src)      ( Dest = (Msk & Src) | ((~Msk) & Dest) ) 
#define ValBit(VAR,Place)         ((VAR>> Place) & 1 ) 
#define ClrBits(Var,Lstart,n)      {unsigned char i=n,Place=Lstart;while(i--){ClrBit(Var,Place); Place++;}} 
#define LoadBits(Var,Lstart,n,val) {unsigned long j=((unsigned long)1<<n)-1;j&=val;j<<=Lstart;ClrBits(Var,Lstart,n);Var|=j;} 
#define GetBits(Var,Lstart,n)      ( (Var>>Lstart)& (((unsigned long)1<<n)-1) ) 
//---------------------------------------------------------------------------------------------------------------------------- 
 
 
 
void PwmInit( void ) 
{ 
         LoadBits( CLK->APBCLK, 20, 3, 7);  //  pwm clock 
         LoadBits( CLK->CLKSEL1,28, 2, 2 ); //  pwm 01 
         LoadBits( CLK->CLKSEL1,30, 2, 2 ); //  pwm 23 
         LoadBits( CLK->CLKSEL2, 4, 2, 2 ); //  pwm 45 
         //--------io-------------------------------------------- 
         LoadBits( GCR-> P2_MFP,12 ,3, 7 );   // 2.4, 2.5, 2.6 
         LoadBits( GCR-> P2_MFP,4  ,3, 0 );   // 0 
         LoadBits( GCR-> P0_MFP,12 ,1, 1 );   // 0.4 
         LoadBits( GCR-> P0_MFP,4  ,1, 1 );   // 0 
          
         PWM-> POE =0x3C; // EN OUT 2 3 4 5 
         //------------------------------------------------------- 
         PWM->CSR = 0x333333;  // 时钟选择寄存器(CSR) /16 
         PWM-> PPR = 91 |((u32)91<<8)|((u32)91<<16);  //15K 
         
         PWM->CNR2 = 10; 
         PWM->CMR2 = 8; 
         PWM->CNR3 = 10; 
         PWM->CMR3 = 8; 
         PWM->CNR4 = 10; 
         PWM->CMR4 = 8; 
         PWM->CNR5 = 10; 
         PWM->CMR5 = 8; 
         
         PWM-> PCR  = 0x888888; 
         PWM-> PCR  |=0x111111; 
} 
 
 
想得到 四路PWM 输出,PWM2 PWM3  PWM4 PWM5 ,但现在引脚上没有反应,一直是高电平。 请高手看看,哪儿没有设置好? 
//  以上的 位操作: 置位,复位,置多个位等 ,是OK的  没有问题,问题 可能是还有哪个寄存器没有设置。  
 
 
 
 
 |