S12G128底層代碼分析

下決定轉軟件了,不知是福是禍,不管如何先努力再說。

看別人的代碼真心痛苦,而且是商業生成的。但是不一點一點的看代碼,又怎麼會寫呢,所以從底層代碼一點一點看吧。

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、

---未完待續---



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章