📄 initial.c
字号:
/****************************************Copyright (c)**************************************************
**
** 小松工程(ilan2003)出品
**
** 文 件 名: initial.c
** 最后修改日期: 2005-12-9 0:04
** 描 述: 系统初始化函数
** 版 本: V1.0
** 主 控 芯 片:M16 晶振频率:7.3728MHZ
** IDE:ICCAVR 6.31
**********************************************************************************************************/
#include <iom16v.h>
#include <macros.h>
#include <eeprom.h>
#include "define.h"
#include "function.h"
#include "externPara.h"
#include "Hvprog.h"
#include "eeprom_add.h"
/**********************************************************************
functionName:void timer1_init(void)
description:定时器1初始化,用于可控频率的输出,ctc模式
**********************************************************************/
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0x00; //setup
TCNT1L = 0x00;
OCR1BH = 0x00;
OCR1BL = 0xFF;
TCCR1A = 0x10;
TCCR1B = 0x01; //start Timer
}
/**********************************************************************
functionName:void paraInit(void)
description:变量初始化
**********************************************************************/
void globalParaInit(void)
{
statusMachine = ST_START;
paramControllerInit=0x00;
prgMode=0;
mssageEndFlag=0;
}
/**********************************************************************
functionName:void eepromParaInit(void)
description:对存储在EEPROM的变量初始化
读函数原形:uint16 eepromReadWord(uint16 location);
#define EEP_VOL_ADJUST 0x01
#define EEP_VOL_TARGET 0x02
**********************************************************************/
void eepromParaInit(void)
{
clockSpeed = EEPROMread(EEP_SCK_DURATION);
vTarget = EEPROMread(EEP_VOL_TARGET);
vAdjust = EEPROMread(EEP_VOL_ADJUST);
ocsPscale=EEPROMread(EEP_OCS_PSCALE);
ocsCmatch=EEPROMread(EEP_VOL_CMATCH);
}
/**********************************************************************
functionName:void uart0Init(void)
description:串口初始化函数
desired baud rate: UBRRL决定
char size: 8 bit
parity: Disabled
BAUD19200 23
BAUD57600 7
BAUD115200 3
**********************************************************************/
void uart0Init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
UCSRC = 0x06;
UBRRL = BAUD115200; //set baud rate lo 115200
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x98;
//UCSRB = 0x18; //不产生中断
}
/**********************************************************************
functionName:void portInit(void)
description:M16 IO初始化
************************************ **********************************/
void portInit(void)
{
DDRA = DDRA_VALUE;
PORTA = PORTA_VALUE;
DDRB = DDRB_VALUE;
PORTB = PORTB_VALUE;
DDRC = DDRC_VALUE;
PORTC = PORTC_VALUE;
DDRD = DDRD_VALUE;
PORTD = PORTD_VALUE;
SET_OE;
SET_WR;
CLR_BS2;
}
/**********************************************************************
functionName:void ledInit(void)
description:LED 状态初始化
#define LED_ON_1 CLR_BIT(PORTA,PA1) //LDE1 ON
#define LED_OFF_1 SET_BIT(PORTA,PA1) //LDE1 OFF
************************************ **********************************/
void ledInit(void)
{
uint08 i;
LED_ON_3;
msDelay(255);
LED_ON_2;
msDelay(255);
LED_ON_1;
msDelay(255);
LED_OFF_2;
msDelay(255);
LED_OFF_3;
msDelay(255);
msDelay(255);
msDelay(255);
}
/**********************************************************************
functionName:void allInit(void)
description:初始化所有的器件以及变量
**********************************************************************/
void allInit(void)
{
CLI(); //关闭中断源
//portInit();
exitProgMode();
uart0Init();
timer1_init();
globalParaInit();
eepromParaInit();
ledInit();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00; //定时器0中断源设置
//WDTCR=0x0B; //看门狗使能,看门狗定时时间130ms
SEI(); //中断使能
//完成所有的初始化工作
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -