📄 init.h
字号:
/*=============系统初始化 bus=24M=========*/
void mcu_init(void)
{
REFDV=3; //锁相环时钟频率:f(suo)=2*f(fos)*(synr+1)/(refdv+1)
SYNR=7; //所以,这里时钟为32mhz,fos是外部时钟频率的一半
while(!CRGFLG_LOCK); // 锁相环已锁定 CRGFLG_LOCK=1;
CLKSEL=0X80; //选用锁相环时钟
}
void rti_init(void)
{
RTICTL=0X7F; //实时时钟分频系数
CRGINT_RTIE=1; //开实时时钟中断,中断号为7
}
/*=================A/D初始化====================*/
void adc_init(void)
{
ATD0CTL2=0XC0; //a/d模块上电,快速清零,无等待模式,中断禁止
ATD0CTL3=0X08; //转换序列长度为1
ATD0CTL4=0X81; //这里本来是0x81,分频系数4,严重超频
ATD0CTL5=0XA2; //转换结果存低位,选用atd1的1通道
ATD0DIEN=0X00; //数字输入禁止
}
/*=================SCI初始化===================*/
void sci_init(void)
{
SCI0BD=52; // 208的时候是9600bps,52的时候是38400
SCI0CR1=0; //正常8位模式,无奇偶校验
SCI0CR2=0x0c; //接受中断允许
}
/**************************************************
PWM初始化函数
**********************************************************/
void init_pwm(void)
{
PWME = 0x00; //初始化的时候先禁止pwm输出
//PWMSCLB = 4; //进一步分频,分频系数为2*4,
//PWMPOL = 0x28; //极性选择,周期开始时,pwm输出高,当计数器等于预设值时,输出低
//PWMCLK = 0x08; //23选择clocksb=2M,45选择clocka=16M
//PWMCTL = 0x60; //控制寄存器,con45和con23级联
PWMPRCLK =0X22; //总线时钟四分频 ,得到8M时钟
PWMCTL = 0x90; //con12级联,67级联
PWMCLK = 0X82; //
PWMPOL = 0XFF;
PWMSCLA = 4; //在预分频的基础上再8分频,得到1M时钟
PWMSCLB = 4;
PWMPER67=1000;
PWMPER01=20000;
}
/**********************************************************
计数器初始化函数
**********************************************************/
void init_counter(void)
{
PACTL_PAEN=1; //PAI 系统时能
PACTL_PAMOD=0; //事件计数模式
PACTL_PEDGE=0; //下降沿计数
DLYCT=3; //延时256总线时钟,去除噪声
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -