EBO-77/Sources/CPU.c

191 lines
7.6 KiB
C
Raw Normal View History

2024-12-23 11:04:44 +08:00
/*
* CPU.c
*
* Created on: Oct 4, 2016
* Author: Administrator
*/
#include "CPU.h"
//busʱ<73><CAB1>Ϊ32M<32><4D><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ64M<34><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ32M
void CLK_CONFIG(void)
{
/*** !!! Here you can place your own code using property "User code before PE initialization" on the build options tab of the CPU compoennt. !!! ***/
/* ### MC9S12ZVL32_48 "Cpu" init code ... */
/* PE initialization code after reset */
/* IVBR: IVB_ADDR=0x7FFF,??=0 */
setReg16(IVBR, 0xFFFEU);
/* ECLKCTL: NECLK=1,??=0,??=0,??=0,??=0,??=0,??=0,??=0 */
setReg8(ECLKCTL, 0x80U);
/* System clock initialization */
/* CPMUPROT: ??=0,??=0,??=1,??=0,??=0,??=1,??=1,PROT=0 */
setReg8(CPMUPROT, 0x26U); /* Disable protection of clock configuration registers */
/* CPMUCLKS: PSTP=0 */
clrReg8Bits(CPMUCLKS, 0x40U);
/* CPMUCLKS: PLLSEL=1 */
setReg8Bits(CPMUCLKS, 0x80U); /* Enable the PLL to allow write to divider registers */
/* CPMUPOSTDIV: ??=0,??=0,??=0,POSTDIV4=0,POSTDIV3=0,POSTDIV2=0,POSTDIV1=0,POSTDIV0=0 */
setReg8(CPMUPOSTDIV, 0x00U); /* Set the post divider register */
/* Whenever changing PLL reference clock (REFCLK) frequency to a higher value
it is recommended to write CPMUSYNR = 0x00 in order to stay within specified
maximum frequency of the MCU */
/* CPMUSYNR: VCOFRQ1=0,VCOFRQ0=0,SYNDIV5=0,SYNDIV4=0,SYNDIV3=0,SYNDIV2=0,SYNDIV1=0,SYNDIV0=0 */
setReg8(CPMUSYNR, 0x00U); /* Set the multiplier register */
/* CPMUPLL: ??=0,??=0,FM1=0,FM0=0,??=0,??=0,??=0,??=0 */
setReg8(CPMUPLL, 0x00U); /* Set the PLL frequency modulation */
/* CPMUSYNR: VCOFRQ1=0,VCOFRQ0=1,SYNDIV5=0,SYNDIV4=1,SYNDIV3=1,SYNDIV2=1,SYNDIV1=1,SYNDIV0=1 */
setReg8(CPMUSYNR, 0x5FU); /* Set the multiplier register */
while(CPMUIFLG_LOCK == 0U) { /* Wait until the PLL is within the desired tolerance of the target frequency */
}
/* CPMUPROT: ??=0,??=0,??=0,??=0,??=0,??=0,??=0,PROT=0 */
setReg8(CPMUPROT, 0x00U); /* Enable protection of clock configuration registers */
/* CPMUCOP: RSBCK=0,WRTMASK=1 */
clrSetReg8Bits(CPMUCOP, 0x40U, 0x20U);
/* CPMUHTCTL: ??=0,??=0,VSEL=0,??=0,HTE=0,HTDS=0,HTIE=0,HTIF=0 */
setReg8(CPMUHTCTL, 0x00U);
/* CPMUVREGCTL: ??=0,??=0,??=0,??=0,??=0,??=0,EXTXON=0,INTXON=1 */
setReg8(CPMUVREGCTL, 0x81U);
/*** End of PE initialization code after reset ***/
}
void Peripheral_Init(void)
{
/* Int. priority initialization */
/* No. Address Pri XGATE Name Description */
setReg8(INT_CFADDR, 0x28U);
setReg8(INT_CFDATA3, 0x04U); /* 0x2B 0x00FFFEAC 4 no ivVtim1ch0 used by PE */
setReg8(INT_CFADDR, 0x60U);
setReg8(INT_CFDATA1, 0x04U); /* 0x61 0x00FFFF84 4 no ivVadc0conv_compl used by PE */
setReg8(INT_CFDATA2, 0x04U); /* 0x62 0x00FFFF88 4 no ivVadc0conv_seq_abrt used by PE */
setReg8(INT_CFDATA3, 0x04U); /* 0x63 0x00FFFF8C 4 no ivVadc0err used by PE */
/* Common initialization of the CPU registers */
/* DIENADL: DIENADL7=1,DIENADL6=1,DIENADL5=1,DIENADL4=1,DIENADL3=1,DIENADL2=1 */
setReg8Bits(DIENADL, 0xFCU);
/* PIEADL: PIEADL7=0,PIEADL6=0,PIEADL5=0,PIEADL4=0,PIEADL3=0,PIEADL2=0 */
clrReg8Bits(PIEADL, 0xFCU);
/* PERADL: PERADL7=0,PERADL6=0,PERADL5=0,PERADL4=0,PERADL3=0,PERADL2=0 */
clrReg8Bits(PERADL, 0xFCU);
/* DDRADL: DDRADL7=0,DDRADL6=0,DDRADL5=0,DDRADL4=0,DDRADL3=0,DDRADL2=0 */
clrReg8Bits(DDRADL, 0xFCU);
/* TIM1TSCR1: TEN=0,TSWAI=0,TSFRZ=0,TFFCA=0,PRNT=1,??=0,??=0,??=0 */
setReg8(TIM1TSCR1, 0x08U);
/* TIM1OCPD: OCPD0=1 */
setReg8Bits(TIM1OCPD, 0x01U);
/* TIM1TIOS: IOS0=1 */
setReg8Bits(TIM1TIOS, 0x01U);
/* TIM1TCTL2: OM0=0,OL0=0 */
clrReg8Bits(TIM1TCTL2, 0x03U);
/* TIM1TTOV: TOV0=0 */
clrReg8Bits(TIM1TTOV, 0x01U);
/* TIM1TSCR2: TOI=0 */
clrReg8Bits(TIM1TSCR2, 0x80U);
/* TIM1TFLG1: ??=1,??=1,??=1,??=1,??=1,??=1,C1F=1,C0F=1 */
setReg8(TIM1TFLG1, 0xFFU);
/* TIM1TIE: C0I=1 */
setReg8Bits(TIM1TIE, 0x01U);
/* TIM1PTPSR: PTPS7=0,PTPS6=0,PTPS5=0,PTPS4=0,PTPS3=0,PTPS2=0,PTPS1=0,PTPS0=0 */
setReg8(TIM1PTPSR, 0x00U);
/* PERJ: PERJ1=0 */
clrReg8Bits(PERJ, 0x02U);
/* DDRJ: DDRJ1=0 */
clrReg8Bits(DDRJ, 0x02U);
/* PIEP: PIEP6=0,PIEP1=0 */
clrReg8Bits(PIEP, 0x42U);
/* PERP: PERP6=0,PERP1=0 */
clrReg8Bits(PERP, 0x42U);
/* PTP: PTP6=0 */
clrReg8Bits(PTP, 0x40U);
/* DDRP: DDRP6=1,DDRP1=0 */
clrSetReg8Bits(DDRP, 0x02U, 0x40U);
/* DIENADH: DIENADH1=1,DIENADH0=1 */
setReg8Bits(DIENADH, 0x03U);
/* PIEADH: PIEADH1=0,PIEADH0=0 */
clrReg8Bits(PIEADH, 0x03U);
/* PERADH: PERADH1=0,PERADH0=0 */
clrReg8Bits(PERADH, 0x03U);
/* DDRADH: DDRADH1=0,DDRADH0=0 */
clrReg8Bits(DDRADH, 0x03U);
/* PERT: PERT7=0 */
clrReg8Bits(PERT, 0x80U);
/* DDRT: DDRT7=0 */
clrReg8Bits(DDRT, 0x80U);
/* CPMUINT: LOCKIE=0,OSCIE=0 */
clrReg8Bits(CPMUINT, 0x12U);
/* CPMULVCTL: LVIE=0 */
clrReg8Bits(CPMULVCTL, 0x02U);
/* ECCIE: SBEEIE=0 */
clrReg8Bits(ECCIE, 0x01U);
/* ECCDCMD: ECCDRR=0 */
clrReg8Bits(ECCDCMD, 0x80U);
/* RDRP: RDRP7=0,RDRP5=0,RDRP3=0,RDRP1=0 */
clrReg8Bits(RDRP, 0xAAU);
/* IRQCR: IRQEN=0 */
clrReg8Bits(IRQCR, 0x40U);
clrReg8Bits(PTP, 0x88U);
/* DDRP: DDRP7=1,DDRP5=0,DDRP3=1 */
clrSetReg8Bits(DDRP, 0x20U, 0x88U);
/* PIEP: PIEP5=0,PIEP3=0 */
clrReg8Bits(PIEP, 0x28U);
/* PERP: PERP5=0,PERP3=0 */
clrReg8Bits(PERP, 0x28U);
/* ### ADC "AD1" init code ... */
AD1_Init();
/* ### BitIO "Bit1" init code ... */
/* ### BitIO "Bit2" init code ... */
/* ### BitIO "Bit3" init code ... */
/* ### BitIO "Bit4" init code ... */
/* ### TimerInt "TI1" init code ... */
/* TIM1TC0: BIT=0x7D00 */
setReg16(TIM1TC0, 0x7D00U); /* Store given value to the compare register */
/* ### BitIO "Bit5" init code ... */
/* ### BitIO "Bit6" init code ... */
/* ### BitIO "Bit7" init code ... */
/* ### BitIO "Bit8" init code ... */
/* ### BitIO "Bit9" init code ... */
/* ### BitIO "Bit10" init code ... */
/* ### BitIO "Bit11" init code ... */
/* ### BitIO "Bit12" init code ... */
/* ### BitIO "Bit13" init code ... */
/* ### BitIO "Bit14" init code ... */
/* ### Programable pulse generation "PWM1" init code ... */
//PWM1_Init();
/* ### WatchDog "WDog1" init code ... */
/* CPMUPROT: ??=0,??=0,??=1,??=0,??=0,??=1,??=1,PROT=0 */
setReg8(CPMUPROT, 0x26U); /* Disable protection of clock-source register */
/* CPMUCLKS: CSAD=1,PCE=0,COPOSCSEL0=0 */
clrSetReg8Bits(CPMUCLKS, 0x05U, 0x20U);
/* CPMUPROT: ??=0,??=0,??=0,??=0,??=0,??=0,??=0,PROT=0 */
setReg8(CPMUPROT, 0x00U); /* Re-Enable protection of clock-source register */
/* CPMURFLG: COPRF=0 */
setReg8(CPMURFLG, 0x00U); /* Clear COP reset flag */
/* CPMUCOP: WCOP=0,CR2=1,CR1=0,CR0=1 */
clrSetReg8Bits(CPMUCOP, 0x82U, 0x05U);
/* Common peripheral initialization - ENABLE */
/* TIM1TSCR1: TEN=1,TSWAI=0,TSFRZ=0,TFFCA=0,PRNT=1,??=0,??=0,??=0 */
setReg8(TIM1TSCR1, 0x88U);
AD1_Start();
EnableInterrupts;
}