關(guān)于LPC43XX系列IO配置方法:
IO配置環(huán)節(jié):
首先必須是能GPIO的時鐘,
調(diào)用函數(shù):
? ? ? ? ? ? ? ? ? ? ? ? GPIO_CLKEnable();//自己編寫
選擇IO的功能:
? ? ? ? ? ? ? ? ? ? ? ? LPC_SCU->SFSPX_Y:
? ? ? ? ? ? ? ? ? ? ? ? X 代表具體IO端口 數(shù)字為 0~F
? ? ? ? ? ? ? ? ? ? ? ? Y 示具體IO端口的管腳數(shù)目而定,最大數(shù)字為20
配置IO的方向:
? ? ? ? ? ? ? ? ? ? ? ? 主要操作的是LPC_GPIO_PORT 里面的DIR寄存器
? ? ? ? ? ? ? ? ? ? ? ? 主要操作為,0 表示此IO作為輸入,1表示IO為輸出
? ? ? ? ? ? ? ? ? ? ? ? 根據(jù)不同GPIO端口的分組的不同,將所有的IO統(tǒng)一到一個數(shù)組寬度為8的32位寄存器里面
? ? ? ? ? ? ? ? ? ? ? ? 具體分配可參考原理圖,弄懂到底是怎么分配的
EX:配置一個4X4的矩陣:
? ???選擇PA1_3 作為列:
? ???LPC_SCU->SFSPA_1 = 4;
? ???LPC_SCU->SFSPA_2 = 4;
? ???LPC_SCU->SFSPA_3 = 4;
? ???LPC_SCU->SFSPA_4? ? ? ? = 4;
? ???LPC_GPIO_PORT->DIR[4] |=??((1 << 8) |(1 << 9)|(1 << 10));//PA1_3// 輸出
? ???LPC_GPIO_PORT->DIR[5] |= (1 << 19);//PA4
? ???選擇PB0_3 作為行:
? ???LPC_SCU->SFSPB_0? ? ? ? = 4;//配置為通用IO功能
? ???LPC_SCU->SFSPB_1 = 4;
? ???LPC_SCU->SFSPB_2 = 4;
? ???LPC_SCU->SFSPB_3 = 4;
? ???LPC_GPIO_PORT->DIR[5]&=~((1 << 20)| (1 << 21)|(1 << 22) | (1 << 23));//輸入
? ???鍵盤設(shè)置為一個按鍵對應(yīng)一個IO,共陰,在此IO需設(shè)置為上拉輸入
? ???選擇PB0_4 作為例子
? ???LPC_SCU->SFSPB_0? ? ? ? = e;//配置為通用IO功能,使能上拉,禁止下拉,輸入緩沖使能,IO反轉(zhuǎn)快速,并是能濾波功能
? ???LPC_SCU->SFSPB_1 = e;
? ???LPC_SCU->SFSPB_2 = e;
? ???LPC_SCU->SFSPB_3 = e;
? ???LPC_GPIO_PORT->DIR[5]&=~((1 << 20)| (1 << 21)|(1 << 22) | (1 << 23));//輸入
? ???反之共陽,則IO需設(shè)置為下拉輸入
? ???LPC_SCU->SFSPB_0? ? ? ? = 0x18;//配置為通用IO功能
? ???LPC_SCU->SFSPB_1 = 0x18;
? ???LPC_SCU->SFSPB_2 = 0x18;
? ???LPC_SCU->SFSPB_3 = 0x18;
? ???LPC_GPIO_PORT->DIR[5]&=~((1 << 20)| (1 << 21)|(1 << 22) | (1 << 23));//輸入
? ???關(guān)于SFSPX_Y 寄存器位操作說明:
? ???BIT 2:0 選IO功能,
? ???BIT 3
? ???? ? ? ? ? ? ? ? ? ? ? ? 0,禁止下拉
? ???? ? ? ? ? ? ? ? ? ? ? ? 1,開啟下拉
? ???BIT 4
? ???? ? ? ? ? ? ? ? ? ? ? ? 0,使能上拉
? ???? ? ? ? ? ? ? ? ? ? ? ? 1,禁止下拉
? ???BIT 5
? ?? ?? ? 0,IO反轉(zhuǎn)速度為低速
? ?? ?? ? 1,??IO反轉(zhuǎn)為高速
? ???BIT 6
? ?? ?? ? 0,輸入緩沖禁止
? ?? ?? ? 1,輸入緩沖使能
? ???BIT 7
? ???? ? ? ? ? ? ? ? ? ? ? ? 0,使能濾波
? ???? ? ? ? ? ? ? ? ? ? ? ? 1,禁止濾波
? ? ? ?
提問者:yunhan8756
地點(diǎn):-
瀏覽次數(shù):5748
提問時間:08-28 07:08
我有更好的答案