?? init.c
字號:
/* * init.c: 進行一些初始化 */ #include "s3c24xx.h"/* * LED1-4對應GPB5、GPB6、GPB7、GPB8 */#define GPB5_out (1<<(5*2)) // LED1#define GPB6_out (1<<(6*2)) // LED2#define GPB7_out (1<<(7*2)) // LED3#define GPB8_out (1<<(8*2)) // LED4/* * K1-K4對應GPG11、GPG3、GPF2、GPF0 */#define GPG11_eint (2<<(11*2)) // K1,EINT19#define GPG3_eint (2<<(3*2)) // K2,EINT11#define GPF2_eint (2<<(2*2)) // K3,EINT2#define GPF0_eint (2<<(0*2)) // K4,EINT0 /* * 關閉WATCHDOG,否則CPU會不斷重啟 */void disable_watch_dog(void){ WTCON = 0; // 關閉WATCHDOG很簡單,往這個寄存器寫0即可}void init_led(void){ GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out ;}/* * 初始化GPIO引腳為外部中斷 * GPIO引腳用作外部中斷時,默認為低電平觸發、IRQ方式(不用設置INTMOD) */ void init_irq( ){ GPFCON = GPF0_eint | GPF2_eint; GPGCON = GPG3_eint | GPG11_eint; // 對于EINT11、19,需要在EINTMASK寄存器中使能它們 EINTMASK &= (~(1<<11)) & (~(1<<19)); /* * 設定優先級: * ARB_SEL0 = 00b, ARB_MODE0 = 0: REQ1 > REQ3,即EINT0 > EINT2 * 仲裁器1、6無需設置 * 最終: * EINT0 > EINT2 > EINT11,EINT19,即K4 > K3 > K1,K2 * EINT11和EINT19的優先級相同 */ PRIORITY = (PRIORITY & ((~0x01) | (0x3<<7))) | (0x0 << 7) ; // EINT0、EINT2、EINT8_23使能 INTMSK &= (~(1<<0)) & (~(1<<2)) & (~(1<<5));}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -