S12G128底层代码分析

来源:互联网 发布:健身 饮酒 知乎 编辑:程序博客网 时间:2024/06/05 18:44

下决定转软件了,不知是福是祸,不管如何先努力再说。

看别人的代码真心痛苦,而且是商业生成的。但是不一点一点的看代码,又怎么会写呢,所以从底层代码一点一点看吧。

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、

---未完待续---