看了多特和皇馬的歐冠比賽,皇馬還是被KO了。最殘忍的是給了你希望,又讓你絕望。不過皇馬全武行,也抗不過多特的小配合,水銀瀉地似的,太給力了。皇馬現在就一流氓豪門,已經沒了以往的風采了。
言歸正傳。上午去老七公司宿舍,看了我寫的代碼,直接全部刪掉,然後讓我重寫。這才發現自己之前的C語言白學了,位操作不熟,coding style幾乎沒有!看了老七寫的代碼,自己想跳樓的心都有了。操作register,一定要帶volatile這個關鍵字,不然就是錯的。清除位是用&操作。
代碼如下:
/* led */
#define GPJ2CON 0xE0200280
#define GPJ2DAT 0xE0200284
/* pwm */
#define GPD0CON 0xE02000A0
#define GPD0DAT 0xE02000A4
void function(void)
{
volatile u32 reg_val;
/*****light up led*****/
//set pin output
reg_val = *(volatile u32 *)GPJ2CON;
reg_val &= ~(0xF<<4); //clear bits(12~15)
reg_val |= 0x1<<4;//set bit
*(volatile u32 *)GPJ2CON = reg_val;
reg_val = *(volatile u32 *)GPJ2DAT;
reg_val &= ~(0x1<<4);//low power(bit 4)
*(volatile u32 *)GPJ2DAT = reg_val;
/*****pwm buzzer*****/
reg_val = *(volatile u32 *)GPD0CON;
reg_val &= ~0xF;//clear bits(0~3)
reg_val |= 0x1;//set bit(0~3)
*(volatile u32 *)GPD0CON= reg_val;
reg_val = *(volatile u32 *)GPD0DAT;
reg_val &= ~0x1;//low power
*(volatile u32 *)GPD0DAT = reg_val;
}
Tiny210V2 booting sequence:
1、系統上電,ROM中的固化代碼做初始化操作;
2、根據跳線,選擇booting device,加載BL1、BL2到SRAM執行;
3、加載OS code到DRAM,跳到OS code執行。
VIM是linux上的主要文本編輯器,VIM會影響思維,有很多優秀的skill。熟悉VIM操作,在linux上開發是必須的。