📄 init._c
字号:
#include "init.h"
/*参数声明*/
unsigned char msg_buffer[300]; //消息体
unsigned char seqNumber; //顺序数
unsigned char checkSum; //和校验
unsigned char clockSpeed; //时钟速度
unsigned char resetPolarity; //复位极性
unsigned char paramControllerInit; //参数控制器初始化
unsigned char prgMode; //编程模式
unsigned char statusMachine; //状态机
unsigned int msgSize; //消息尺寸
unsigned char flag = 0; //接收到消息
unsigned long address; //地址
/*IO口初始化函数*/
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();
/*入口判断*/
/*
在执行强行跳转指令"jmp 0x0000"前,对寄存器MCUCR的操作是将中断向量地址
迁移回应用程序区的头部,因为在ICCAVR环境中编译Bootloader程序时,其自动
把中断向量地址迁移到了Bootloader区的头部。
*/
if (PINE == 0xFF) { /*判断按键是否按下*/
MCUCR = 0x01;
MCUCR = 0x00; /*将中断向量表迁移到应用程序区头部*/
RAMPZ = 0x00; /*RAMPZ清零初始化*/
asm("jmp 0x000000\n");; /*进入应用程序区*/
}
DDRB = 0xFF;
uart0_init(); /*串口初始化函数*/
timer1_init(); /*定时器T初始化*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -