📄 init.c
字号:
/*
*********************************************************
********* init.c ************
********* 初始化程序 ************
*********************************************************/
#include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
//clock setting,bus_clock=24mhz
void init_clock(void){
REFDV=0x01;
SYNR=0x02;
while(CRGFLG_LOCK==0x00);
CLKSEL_PLLSEL=1;
}
void init_portb(void){
DDRB=0xff;
PORTB=0xaa;
}
//ATD初始化
void init_atd(void){
ATD0CTL2=0X40;//AD禁止,禁止中断,自动清除标志位
ATD0CTL3=0X40;//8路转换
ATD0CTL4=0X87;//8位精度,clk=1.5mhz,fs=750khz
ATD0CTL5=0XB0;//右对齐,多通道转换,连续转换
}
//pwm init
void init_pwm(void){
PWME=0X00;
PWMPRCLK=0X33;//clk=3mhz
PWMPOL=0Xff; //起始高电平
PWMCAE=0X00;
PWMCTL_CON01=1; //01级连
PWMCTL_CON23=1; //23级连
PWMCTL_CON45=1; //45级连
PWMPER01=60000;//50hz
PWMPER23=60000;
PWMPER45=60000;
PWMDTY01=4500;//1.5ms
PWMDTY23=0x0000;
PWMDTY45=0x0000;
}
//PAI init
void init_pai(void){
PACTL=0x00;//PAI禁止,记数模式,中断关,下降沿捕捉
}
//定时器初始化,20ms中断
void init_timer(void){
TIOS=0X80; //TC7工作方式:输出比较
TIE=0x80; //TC7中断使能
TSCR2=0X03; //溢出中断禁止,置分频系数,f=3mhz
TFLG1=0XFF; //清除中断标志
TC7=60000; //TC7赋初值,f=50hz
TCNT=0X0000;
TSCR1=0X00; //定时器禁止
}
void init(void){
init_clock();
init_portb();
init_atd();
init_pwm();
init_pai();
init_timer();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -