MC9S12G128 PWM
来源:互联网 发布:帝国cms 文件权限 编辑:程序博客网 时间:2024/06/06 15:43
/******************************************************************* 程序名:MC9S12G128 PWM** 参 数:无** 功 能:初始化G128PWM,频率,16KHz,占空比50% ** 注 意:总线时钟需超频至32MHz** 作 者:赵露露** 版 本:v1.0** 时 间:2012.5.11 ******************************************************************/#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions *//******************************************************************* 函数名: delayms()** 参 数:xms** 功 能:在32MHz总线时钟下大约延时xms毫秒 ** 注 意: ******************************************************************/void delayms(uint xms){ uint z,j;for(z=xms;z>0;z--) for(j=5340;j>0;j--);}/******************************************************************* 函数名: PLL_Init()** 参 数:无** 功 能:将G128超频至16M,32M,64M ** 注 意: ******************************************************************/void PLL_Init(void) { CPMUPROT = 0x26; //保护时钟配置寄存器 CPMUCLKS_PSTP = 0; //禁用PLL CPMUCLKS_PLLSEL = 1; //选择PLL作为系统时钟源 CPMUOSC_OSCE = 1; //外部晶振使能 CPMUSYNR = 0x07; //fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1) CPMUREFDIV = 0x03; //16M:07,0F;32M:07,07;64M:07,03 CPMUPOSTDIV = 0x00; // PLL CLOCK = VCO CLOCK / (POSTDIV + 1) //BUS CLOCK = PLL CLOCK/2 _asm(nop); _asm(nop); CPMUPLL=0x10; //锁相环调频启用,用以减少噪音 while(CPMUFLG_LOCK == 0); //等待PLL稳定 CPMUPROT = 0x00; //关闭保护时钟 }/******************************************************************* 函数名: PWM_Init()** 参 数:无** 功 能:初始化G128的PWM模块 ** 注 意:01 23通道级联使用 ******************************************************************/static void PWM_Init(void){ PWME_PWME0 = 0; //禁止通道 PWME_PWME1 = 0; PWME_PWME2 = 0; PWME_PWME3 = 0; PWMCTL_CON01 = 1; //01,23通道连接成16位PWM使用 PWMCTL_CON23 = 1; PWMCNT0 = 0x00; //0123通道计数被禁止 PWMCNT1 = 0x00; PWMCNT2 = 0x00; PWMCNT3 = 0x00; PWMPRCLK = 0x00; //预分频 A、B 1分频 32MHz PWMSCLB = 0x01; //0x01 : SB_CLK = B_CLK / (1*2) == 16MHz //SB时钟设置 PWMSCLA = 0x01; //0x01 : SA_CLK = B_CLK / (1*2) == 16MHz //SA时钟设置 PWMPOL_PPOL1 = 1; //起始高电平 PWMCLK_PCLK1 = 1; //PWM1---SB 时钟源的选择 PWMPOL_PPOL3 = 1; PWMCLK_PCLK3 = 1; //SA时钟设置 PWMCAE_CAE1 = 0; //对齐方式设置 PWMCAE_CAE3 = 0; PWMDTY01 = 500; // Duty cycle = 占空比寄存器设置 3500 PWMPER01 = 1000; //周期==(1/16M)*(1000)= ms; 16kHz 周期寄存器设置 PWMDTY23 = 500; PWMPER23 = 1000; //周期==(1/16M)*(1000)= ms; 16kHz PWME_PWME1 = 1; //Enable PWM 使能 PWME_PWME3 = 1; }void main(void) { DDRD = 0xFF; //设置PD(0-7)方向为输出 PORTD = 0xFF; //设置PD(0-7)输出高电平 PLL_Init(); PWM_Init(); while(1) { PORTD_PD0 = ~PORTD_PD0; //LED取反 delayms(1000); } }
新手上路,如有错误,欢迎指正。
- MC9S12G128 PWM
- MC9S12G128 ADC
- PWM
- PWM
- pwm
- PWM?
- PWM
- PWM
- PWM
- PWM
- PWM
- PWM
- PWM
- PWM
- PWM
- PWM
- MC9S12G128 IO LED
- MC9S12G128 按键检测
- Linux Apache无法解析PHP综合因素
- 文件(6)XCB前奏
- 电脑通过vnc控制android 手机
- winform 分页控件,源码下载
- 线程基类的实现(一)
- MC9S12G128 PWM
- 盛大云搭建lnmp环境范例
- wp7 图片的读取处理
- starting spamd:bind:address already in use at /usr/bin/spamd line 177 [failed]。
- 资料
- UIView你知道多少
- FileReader小结
- Linux下Apache中PHP无法解析终结办法
- iphone开发资源汇总