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