⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm.c

📁 基于s3c2410硬件的 U-boot代码
💻 C
字号:
#include"main.h"


 
  unsigned char Pr2Reg,DutyIni,DutyVar,WdtCount;
  unsigned int Ccpr2Reg;
 
 void 
PwmSetup(unsigned char DutyVar)
{
 
 
 TRISC1=1;
 PR2=255;;//PWM period = [(PR2)+ 1]*4*TOSC *(TMR2 prescale value)
               ;//PWM Frequency=FOSC/(4*(PR2+1));TMR2 prescale value=1;
               ;//(PR2+1)=FOSC/(PWM Fre*4)
               ;//FOSC=(PR2+1)*PWM Fre*4*TMR2 Prescale value=256*488*4*1=499712
  
 
CCP2CON=0X0C;
PwmValueSetup(DutyVar);
 

 TMR2IF=0;
 T2CKPS0=1;
 T2CKPS1=1; //PRESCALE VALUE IS 16;
 TMR2ON=1;
 
 //T2CON=0X04;
 
 do{}
 while(TMR2IF==0);
 //TRISB=0X00;
 //RB6=0;
 TMR2IF=0;
 TRISC1=0;
}
void 
PwmValueSetup(unsigned char DutyVar)
{
 
 unsigned int Ccpr2Reg;
unsigned char BB;
//Pr2Reg=255;//Fosc/(Fre_Pwm*4)-1;
//DutyIni=0;
Ccpr2Reg=DutyVar*10;//Duty*4*(255+1)/100;
//AA=AA/100;
BB=Ccpr2Reg&0x03;
BB=BB<<4;
 CCP2CON|=BB;
 Ccpr2Reg=Ccpr2Reg>>2; 
 CCPR2L=Ccpr2Reg&0xff;
}

/*
void
Wdtcon_Set(unsigned int Rate)
{
  WDTCON=0X00;
 WDTCON|=0X01;
   switch(Rate)
  {
case 32:WDTCON|=0x00;break;
case 64:WDTCON|=0x02;break;
case 128:WDTCON|=0x04;break;
case 256:WDTCON|=0x06;break;
case 512:WDTCON|=0x08;break;
case 1024:WDTCON|=0x0a;break;
case 2048:WDTCON|=0xc;break;
case 4096:WDTCON|=0x0e; break;
case 8192:WDTCON|=0x10; break;
case 16384:WDTCON|=0x12; break;
case 32768:WDTCON|=0x14; break;
case 65536:WDTCON|=0x16; break;
 
 default:break;
  }
}
 

void
Wdt_Setup(void)
{
PSA=1;
  PsReg_Set(8);//2S*X
  Wdtcon_Set(65536);//2S
}
void 
Fosc_Setup(long int FOSC)
{
OSCCON&=0x8f;
switch(FOSC)
{
case 31000:OSCCON|=0x00;break;
case 125000:OSCCON|=0x10;break;
case 250000:OSCCON|=0x20;break;
case 500000:OSCCON|=0x30;break;
case 1000000:OSCCON|=0x40;break;
case 2000000:OSCCON|=0x50;break;
case 4000000:OSCCON|=0x60;break;
case 8000000:OSCCON|=0x70; break;
default:break;
}
}
void
Ee_Wr(unsigned char EEADR1,unsigned char EEDATA1)
{
EEADR=EEADR1;      //写地址
 EEDATA=EEDATA1;    //表示上电复位
 WREN=1;         
 EECON2=0X55;
 EECON2=0XAA;
 WR=1;
 while(WR); 
}
unsigned char
Ee_Rd(unsigned char EEADR1)
{
EEADR=EEADR1;      //写地址
 RD=1;
 while(RD);
 return(EEDATA);
}
void
PSSetup(unsigned char Rate)
{
  OPTION=0X88;
 switch(Rate)
{
case 1:OPTION|=0x00;break;
case 2:OPTION|=0x01;break;
case 4:OPTION|=0x02;break;
case 8:OPTION|=0x03;break;
case 16:OPTION|=0x04;break;
case 32:OPTION|=0x05;break;
case 64:OPTION|=0x06;break;
case 128:OPTION|=0x07; break;
default:break;
}
}
*/  
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -