📄 main.c
字号:
/*---------------------------------------------------------*/
/************************************************************
飞翔科技MC9S12XS128汽车电子综合开发平台
E-mail:bhfengchong@gmail.com
2008f.d@163.com
淘宝店:http://fxfreefly.taobao.com
http://fxfreefly2.taobao.com
************************************************************/
/*---------------------------------------------------------*/
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
#define BUS_CLOCK 32000000 //总线频率
#define OSC_CLOCK 16000000 //晶振频率
/*************************************************************/
/* 初始化锁相环 */
/*************************************************************/
void INIT_PLL(void)
{
CLKSEL &= 0x7f; //set OSCCLK as sysclk
PLLCTL &= 0x8F; //Disable PLL circuit
CRGINT &= 0xDF;
#if(BUS_CLOCK == 40000000)
SYNR = 0x44;
#elif(BUS_CLOCK == 32000000)
SYNR = 0x43;
#elif(BUS_CLOCK == 24000000)
SYNR = 0x42;
#endif
REFDV = 0x81; //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M
PLLCTL =PLLCTL|0x70; //Enable PLL circuit
asm NOP;
asm NOP;
while(!(CRGFLG&0x08)); //PLLCLK is Locked already
CLKSEL |= 0x80; //set PLLCLK as sysclk
}
/*************************************************************/
/* 初始化PWM */
/*************************************************************/
void init_pwm(void)
{
PWMCTL_CON01= 1; //联结通道0,1为16位的PWM
PWMPOL_PPOL1= 1; //通道01的极性为高电平有效
PWMPRCLK = 0x55; //A时钟和B时钟的分频系数为32,频率为1MHz
PWMSCLA = 25; //SA时钟频率为20KHz
PWMCLK =0x02; //通道01用SA时钟作为时钟源
PWMPER01 = 200; //通道01的周期为100Hz
PWMDTY01 = 0; //通道01的占空比为0%
PWME_PWME1 = 1; //使能通道01
}
/*************************************************************/
/* 延时函数 */
/*************************************************************/
void delay(void)
{
unsigned int i,j;
for(i=0;i<20;i++)
for(j=0;j<50000;j++);
}
/*************************************************************/
/* 主函数 */
/*************************************************************/
void main(void) {
DisableInterrupts;
INIT_PLL();
init_pwm();
LEDCPU_dir=1;
LEDCPU=0;
EnableInterrupts;
for(;;)
{
delay();
PWMDTY01=20; //占空比为10%
delay();
PWMDTY01=40; //占空比为20%
delay();
PWMDTY01=60; //占空比为30%
delay();
PWMDTY01=80; //占空比为40%
delay();
PWMDTY01=100; //占空比为50%
delay();
PWMDTY01=120; //占空比为60%
delay();
PWMDTY01=140; //占空比为70%
delay();
PWMDTY01=160; //占空比为80%
delay();
PWMDTY01=180; //占空比为90%
delay();
PWMDTY01=200; //占空比为100%
delay();
PWMDTY01=180; //占空比为90%
delay();
PWMDTY01=160; //占空比为80%
delay();
PWMDTY01=140; //占空比为70%
delay();
PWMDTY01=120; //占空比为60%
delay();
PWMDTY01=100; //占空比为50%
delay();
PWMDTY01=80; //占空比为40%
delay();
PWMDTY01=60; //占空比为30%
delay();
PWMDTY01=40; //占空比为20%
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -