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

📄 mcuinit.c

📁 MC9S12单片机 通过SPI总线驱动AD2543 包含SPI的初始化以及AD2543相关操作
💻 C
字号:
//[MCUInit.c]DG128芯片初始化函数-------------------------------------------*
//功  能:                                                                  *
//    芯片初始化设置:通过设置CLKSEL寄存器,确定内部总线的时钟源;通过PLL编  *
//    程,设置PLLCLK;通过设置INTCR和COPCTL寄存器,分别决定是否允许IRQ中断和  *
//    看门狗。                                                             *
//    (1)外部晶振=9.8304Mhz BusClock=19.6608Mhz                            *
//    (2)禁止IRQ中断                                                       *
//    (3)禁止看门狗                                                        *
//参  数:无                                                                *
//返  回:无                                                                *
//-------------------------------------------------------------------------*

//头文件
#include "MCUInit.h"    //芯片初始化头文件

void MCUInit(void)
{
    //(1)禁止总中断
    DISABLE_INTERRUPTS;
    //(2)CLKSEL的第7位置0,选择系统时钟源为OSCCLK
      //在PLL程序执行前,内部总线频率=OSCCLK/2
      //clksel.7(PLL选择位)决定内部总线时钟来源
      //=O,BusClock=OSCCLK/2; =1,BusClock=PLLCLK/2
    CLKSEL &= 0x7f;      //此时:BusClock=OSCCLK/2
    //(3)禁止PLL
    PLLCTL &= 0xbf;//PLLCTL.6(pllon)设为0;先关闭PLL
    //(4)根据需要的时钟频率设置SYNR和REFDV寄存器
    //计算公式:PLLCLK=2*OSCCLK*((SYNR+1)/(REFDV+1))
    SYNR = 0x01;         //对PLLCLK增频的因子
    REFDV = 0x00;        //对PLLCLK分频的因子
        
    //(5)打开PLL
    PLLCTL |= (1<<6);    //PLLCTL.6(pllon)设为1;开PLL
    //(6)通过判断CRGFLG寄存器的LOCK位,确定PLL是否稳定 
    while ((CRGFLG&0x08) == 0x00);
    //(7)时钟频率稳定后,允许锁相环时钟源作为系统时钟源;
    CLKSEL |= (1<<7);    //本句执行后:BusClock=PLLCLK/2
    //(8)设置是否允许IRQ中断、是否允许看门狗
    INTCR &= 0xbf;       //IRQCR.6(IRQEN) =0禁止IRQ中断(默认开)
    COPCTL = 0x00;       //COPCTL.2-0(cr2:cr0) =000禁止看门狗
}

⌨️ 快捷键说明

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