?? init.c
字號(hào):
#include "init.h"
/*參數(shù)聲明*/
unsigned char msg_buffer[300]; //消息體
unsigned char seqNumber; //順序數(shù)
unsigned char checkSum; //和校驗(yàn)
unsigned char clockSpeed; //時(shí)鐘速度
unsigned char resetPolarity; //復(fù)位極性
unsigned char paramControllerInit; //參數(shù)控制器初始化
unsigned char prgMode; //編程模式
unsigned char statusMachine; //狀態(tài)機(jī)
unsigned int msgSize; //消息尺寸
unsigned char flag = 0; //接收到消息
unsigned long address; //地址
/*IO口初始化函數(shù)*/
void io_init(void) {
DDRA = 0x00; /*方向輸入*/
PORTA = 0xFF; /*打開(kāi)上拉*/
DDRB = 0x00; /*方向輸出*/
PORTB = 0xFF; /*輸出高電平*/
DDRC = 0x00; /*不用的IO口建議設(shè)置為輸入帶上拉*/
PORTC = 0xFF;
DDRD = 0x00;
PORTD = 0xFF;
DDRE = 0x00;
PORTE = 0xFF;
DDRF = 0x00;
PORTF = 0xFF;
DDRG = 0x00;
PORTG = 0xFF;
}
void timer1_init(void) {
TCCR1B = 0x00;
TCNT1H = 0x00;
TCNT1L = 0x00;
TCCR1A = 0x00;
TCCR1B = 0x05;
}
void init(void) {
CLI(); /*關(guān)閉中斷源 */
statusMachine = ST_START; /*變量初始化*/
paramControllerInit=0x00;
prgMode=0;
io_init();
/*入口判斷*/
/*
在執(zhí)行強(qiáng)行跳轉(zhuǎn)指令"jmp 0x0000"前,對(duì)寄存器MCUCR的操作是將中斷向量地址
遷移回應(yīng)用程序區(qū)的頭部,因?yàn)樵贗CCAVR環(huán)境中編譯Bootloader程序時(shí),其自動(dòng)
把中斷向量地址遷移到了Bootloader區(qū)的頭部。
*/
if (PINE & (1 << PE7)) { /*判斷按鍵是否按下*/
MCUCR = 0x01;
MCUCR = 0x00; /*將中斷向量表遷移到應(yīng)用程序區(qū)頭部*/
RAMPZ = 0x00; /*RAMPZ清零初始化*/
asm("jmp 0x000000\n");; /*進(jìn)入應(yīng)用程序區(qū)*/
}
DDRB = 0xFF;
uart0_init(); /*串口初始化函數(shù)*/
timer1_init(); /*定時(shí)器T初始化*/
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -