国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 4128|回復: 0
打印 上一主題 下一主題

CortexM0菜鳥之IO配置(第7天作業)

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2010-9-6 23:56:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關鍵詞: 菜鳥 , 作業
在菜農決定做CortexM0菜鳥之瞬間就感覺最簡單和最難做的就是復用IO的配置問題。
在5年前成功挑戰NXPARM7頭文件后,感覺M0應該更上一層樓,特別是見到NXP的LPC11XX.H后。
在弟子的唆使下,菜農開始了LPC11XXcfg.h的構造,第一個理念就是打造GPIO尿童系列。
近來在網上看到很多有關GPIO的求助,也看了NXP的例程,感覺應該專題一番。

在LPC11XXcfg.h下,GPIO的配置實際就是“三板斧”:
//KEY1宏定義三板斧
#define PioKey1   PIO2_6 //P2.6
#define PortKey1  P2     //P2
#define PinKey1   Pin6   //Px.6
//KEY2宏定義三板斧
#define PioKey2   PIO2_0 //P2.0
#define PortKey2  P2     //P2
#define PinKey2   Pin0   //Px.0
//LED1宏定義三板斧
#define PioLed1   PIO1_8 //P1.8
#define PortLed1  P1     //P1
#define PinLed1   Pin8   //Px.8
//LED2宏定義三板斧
#define PioLed2   PIO0_2 //P0.2
#define PortLed2  P0     //P0
#define PinLed2   Pin2   //Px.2
//LED3宏定義三板斧
#define PioLed3   PIO2_7 //P2.7
#define PortLed3  P2     //P2
#define PinLed3   Pin7   //Px.7
//LED4宏定義三板斧
#define PioLed4   PIO2_8 //P2.8
#define PortLed4  P2     //P2
#define PinLed4   Pin8   //Px.8
//LED5宏定義三板斧
#define PioLed5   PIO2_1 //P2.1
#define PortLed5  P2     //P2
#define PinLed5   Pin1   //Px.1
//LED6宏定義三板斧
#define PioLed6   PIO1_9 //P1.9
#define PortLed6  P1     //P1
#define PinLed6   Pin9   //Px.9
//LED7宏定義三板斧
#define PioLed7   PIO3_4 //P3.4
#define PortLed7  P3     //P3
#define PinLed7   Pin4   //Px.4
//LED8宏定義三板斧
#define PioLed8   PIO3_5 //P3.5
#define PortLed8  P3     //P3
#define PinLed8   Pin5   //Px.5
//BEEP宏定義三板斧
#define PioBeep   PIO0_8 //P0.8
#define PortBeep  P0     //P0
#define PinBeep   Pin8   //Px.8

SYSCON.SYSAHBCLKCTRL.Bits.GPIOCLK = 1;//使能GPIO的時鐘
//BeepInit
IOCON.PioBeep.Bits.FUNC = IOCON_PIO;//選擇PIO0.8為BEEP
IOCON.PioBeep.Bits.MODE = IOCON_INACTIVE;//高阻
PortBeep.DIR.Bits.PinBeep = 1;//設置輸出方式
PortBeep.DATA.Bits.PinBeep = 0;//蜂鳴器不響
//Key1Init
IOCON.PioKey1.Bits.FUNC = IOCON_PIO;//選擇P2.6為KEY1
IOCON.PioKey1.Bits.MODE = IOCON_PULLUP;//上拉電阻
PortKey1.DIR.Bits.PinKey1 = 0;//設置輸輸入方式
PortKey1.DATA.Bits.PinKey1 = 1;//釋放鍵盤
//Key2Init
IOCON.PioKey2.Bits.FUNC = IOCON_PIO;//選擇P2.0為KEY2
IOCON.PioKey2.Bits.MODE = IOCON_PULLUP;//上拉電阻
PortKey2.DIR.Bits.PinKey2 = 0;//設置輸輸入方式
PortKey2.DATA.Bits.PinKey2 = 1;//釋放鍵盤
//Led1Init
IOCON.PioLed1.Bits.FUNC = IOCON_PIO;//選擇PIO1.8為LED1
IOCON.PioLed1.Bits.MODE = IOCON_INACTIVE;//高阻
PortLed1.DIR.Bits.PinLed1 = 1;//設置輸出方式
PortLed1.DATA.Bits.PinLed1 = 1;//LED1滅
//Led2Init
IOCON.PioLed2.Bits.FUNC = IOCON_PIO;//選擇PIO0.2為LED2
IOCON.PioLed2.Bits.MODE = IOCON_INACTIVE;//高阻
PortLed2.DIR.Bits.PinLed2 = 1;//設置輸出方式
PortLed2.DATA.Bits.PinLed2 = 0;//LED2亮
//Led3Init
IOCON.PioLed3.Bits.FUNC = IOCON_PIO;//選擇PIO2.7為LED3
IOCON.PioLed3.Bits.MODE = IOCON_INACTIVE;//高阻
PortLed3.DIR.Bits.PinLed3 = 1;//設置輸出方式
PortLed3.DATA.Bits.PinLed3 = 1;//LED3滅
//Led4Init
IOCON.PioLed4.Bits.FUNC = IOCON_PIO;//選擇PIO2.8為LED4
IOCON.PioLed4.Bits.MODE = IOCON_INACTIVE;//高阻
PortLed4.DIR.Bits.PinLed4 = 1;//設置輸出方式
PortLed4.DATA.Bits.PinLed4 = 0;//LED4亮
//Led5Init
IOCON.PioLed5.Bits.FUNC = IOCON_PIO;//選擇P2.1為LED5
IOCON.PioLed5.Bits.MODE = IOCON_INACTIVE;//高阻
PortLed5.DIR.Bits.PinLed5 = 1;//設置輸出方式
PortLed5.DATA.Bits.PinLed5 = 1;//LED5滅
//Led6Init
IOCON.PioLed6.Bits.FUNC = IOCON_PIO;//選擇P1.9為LED6
IOCON.PioLed6.Bits.MODE = IOCON_INACTIVE;//高阻
PortLed6.DIR.Bits.PinLed6 = 1;//設置輸出方式
PortLed6.DATA.Bits.PinLed6 = 0;//LED6亮
//Led7Init
IOCON.PioLed7.Bits.FUNC = IOCON_PIO;//選擇P3.4為LED7
IOCON.PioLed7.Bits.MODE = IOCON_INACTIVE;//高阻
PortLed7.DIR.Bits.PinLed7 = 1;//設置輸出方式
PortLed7.DATA.Bits.PinLed7 = 1;//LED7滅
//Led8Init
IOCON.PioLed8.Bits.FUNC = IOCON_PIO;//選擇P3.5為LED8
IOCON.PioLed8.Bits.MODE = IOCON_INACTIVE;//高阻
PortLed8.DIR.Bits.PinLed8 = 1;//設置輸出方式
PortLed8.DATA.Bits.PinLed8 = 0;//LED8亮

不多說了,代碼很明白。
再舉Uart和I2C
//位域寫法
IOCON.TXD.Bits.FUNC = IOCON_TXD;
IOCON.TXD.Bits.MODE = IOCON_PULLUP;
//寄存器寫法
// IOCON.TXD.Regs = (IOCON_TXD << IOCON_FUNC)
//                | (IOCON_PULLUP << IOCON_MODE);
//位域寫法
IOCON.RXD.Bits.FUNC = IOCON_RXD;
IOCON.RXD.Bits.MODE = IOCON_PULLUP;
//寄存器寫法
// IOCON.RXD.Regs = (IOCON_RXD << IOCON_FUNC)
//                | (IOCON_PULLUP << IOCON_MODE);

   SYSCON.SYSAHBCLKCTRL.Bits.UARTCLK = 1;//使能UART的時鐘
   SYSCON.UARTCLKDIV.Regs = 1;//UART時鐘分頻器值

SYSCON.PRESETCTRL.Bits.I2C0_RST_N = 1;//復位I2C,否則死機
SYSCON.SYSAHBCLKCTRL.Bits.I2CCLK = 1;
//位域寫法
IOCON.PIO0_4.Bits.FUNC    = IOCON_SCL;//選擇PIO0.4為I2C_SCL
IOCON.PIO0_4.Bits.I2CMODE = IOCON_SCL_I2CMODE;//選擇PIO0.4為I2C_SCL
IOCON.PIO0_5.Bits.FUNC    = IOCON_SDA;//選擇PIO0.5為I2C_SCL
IOCON.PIO0_5.Bits.I2CMODE = IOCON_SDA_I2CMODE;//選擇PIO0.5為I2C_SDA
//寄存器寫法
/*
IOCON.PIO0_4.Regs = (IOCON_SCL << IOCON_FUNC)
                   | (IOCON_SCL_I2CMODE << IOCON_I2CMODE);
IOCON.PIO0_5.Regs = (IOCON_SDA << IOCON_FUNC)
                   | (IOCON_SDA_I2CMODE << IOCON_I2CMODE);
*/



HotPower@163.com  2010.9.6 23:28 于雁塔菜地

菜農通訊工具:

新浪網頁版:http://t.sina.com.cn/hotpower
新浪手機版:http://t.sina.cn/hotpower

網 易微 博:http://t.163.com/hotpower
騰訊QQ:    1270688699

菜農郵箱:     HotPower@163.com
菜農導航: http://www.hotpage.net.cn/

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本黄色大全 | 99热中文| 91麻豆国产免费观看 | 日韩国产欧美一区二区三区 | 久久久久国产一级毛片高清板 | 97视频在线观看免费播放 | 亚洲一区视频在线 | 欧美一级成人一区二区三区 | 欧美日本日韩 | 国产亚洲高清在线精品不卡 | 四虎影视免费在线 | 欧美一区二区三区高清视频 | 日韩精品视频一区二区三区 | 亚洲国产精品自产在线播放 | 欧美亚洲国产另类 | 欧美成a| 又粗又长嗯啊futa | 明星大侦探第四季免费可投屏 | 欧美日韩性视频一区二区三区 | 美国大片在线观看 | 91av视频在线免费观看 | 粉嫩极品国产 | 青青在线国产视频 | 日韩欧美精品有码在线观看 | 麻豆网站在线免费观看 | 色多多幸福宝 | 成片免费观看视频在线网 | 中文精品视频一区二区在线观看 | 午夜秒播 | 黄色视屏在线免费观看 | 中文国产成人精品久久96 | 欧美国产视频 | 毛片免费视频 | 国产精品久久久久影院色 | 欧美成人h版影院在线播放 欧美成人h版影片在线观看 | 成人午夜动漫在线观看 | 在线观看一区二区精品视频 | 黄色视屏免费在线观看 | 久久亚洲国产成人精品性色 | 国产在线精品福利一区二区三区 | 天天好比网 |