關鍵函數:
- DL_GPIO_readPins(GPIO_Regs* gpio, uint32_t pins):同時讀一組端口
- DL_GPIO_writePins(GPIO_Regs* gpio, uint32_t pins):同時寫一組端口
- DL_GPIO_setPins(GPIO_Regs* gpio, uint32_t pins):對指定某組端口的某管腳置高
- DL_GPIO_clearPins(GPIO_Regs* gpio, uint32_t pins):對指定某組端口的某管腳置低
- DL_GPIO_togglePins(GPIO_Regs* gpio, uint32_t pins):對指定某組端口的某管腳翻轉
G3507多達 60個 GPIO,分成兩組PA和PB,在LP-MSPM0G3507學習--02建立新工程已經初步學習了GPIO的輸出功能,學習了如何配置GPPIO管腳控制LED燈閃爍,下面實現GPIO輸入功能,lanchpan有兩個按鍵:
?有2個led:
?現在實現按鍵S2按下時,led1翻轉
![]() | ![]() |
從原理圖中可以看出led燈設定為PA0,輸出,初始值為高(led熄滅);
對于button設為PB21,輸入,當按鍵按下時為低電平,釋放時為高電平,所以內部連接上拉電阻。
在工程文件中的compiler include中的ti\mspm0_sdk_2_05_01_00\source\ti\driverlib\mop中有一系列的文件,其中dl_gpio.h是關于GPIO的HAL函數操作的頭文件,其中讀一個管腳的函數為 DL_GPIO_readPins(GPIO_Regs* gpio, uint32_t pins),寫為DL_GPIO_writePins(GPIO_Regs* gpio, uint32_t pins)
#include "ti_msp_dl_config.h"int main(void)
{SYSCFG_DL_init();while (1) {#if 1if (0==DL_GPIO_readPins(Buttons_PORT,Buttons_Button_PIN)) {//有按鍵按下delay_cycles(320000);//等待10ms,消抖if (0==DL_GPIO_readPins(Buttons_PORT,Buttons_Button_PIN)) {//再次檢測DL_GPIO_togglePins(LED_PORT,LED_LED1_PIN);}while(0==DL_GPIO_readPins(Buttons_PORT,Buttons_Button_PIN));//等待按鍵釋放}#elseDL_GPIO_togglePins(LED_PORT,LED_LED1_PIN);delay_cycles(32000000);#endif}
}
可以看出,主循環效率不高,可以采用中斷的方式來實現
---------------------------------------------------------------------------------------------------------------------------------
創作不易,請各位打賞!