下决定转软件了,不知是福是祸,不管如何先努力再说。
看别人的代码真心痛苦,而且是商业生成的。但是不一点一点的看代码,又怎么会写呢,所以从底层代码一点一点看吧。
10月23日
Rte_Init包含Mcu_InitClock(时钟初始化)、Fls_Init(HLASH初始化)、LinIf_Init(LIN通讯初始化)、Gpt_Init(中断定时器初始化)、IoHwAb_Init(IO口初始化)、Com_Init()、InitSensor_Parameter()、InitSwitch_Parameter()、InitKnobRes_Parameter();
时钟的初始化:
1、将时钟保护寄存器CPMUPROT的保护关闭,写0x26(00100110);
2、将时钟选择寄存器CPMUCLKS选择为PLL时钟源,写0x80(10000000);
3、选择时钟参数CPMUREFDIV = 0x80(不分频),CPMUSYNR = 0x01(fVCO = 4*fPLL),CPMUPOSTDIV = 0x00(fBUS = fPLL/2);
4、将外部时钟寄存器CPMUOSC开启,写0x80(10000000),外部时钟打开;
5、等待这些配置准备好((CPMUFLG & 0x08 == 0)||(CPMUFLG & 0x01 == 0));
6、将时钟保护寄存器CPMUPROT的保护开启,写0x00;
7、延时一段时间,然后返回OK;
FLASH及EEPROM的初始化:
1、配置FLASH时钟寄存器FCLKDIV,且根据FLASH状态寄存器FSTAT的CCIF位判断是否操作成功;
2、操作FSTAT寄存器,清除标志位且将ACCERR,FPVIOL置1;
3、EEPROM直接写并进行CRC校验;
LIN通讯初始化:
商业代码没得看,恶心,这种结构体嵌套,打算从应用看在分析了。
中断定时器初始化:
1、TSCR1高位置0,关闭定时器;
2、TSCR2时钟分频选择为BUSCLOCK/128;
3、
---未完待续---