关键函数:
- 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 1
if (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));//等待按键释放
}
#else
DL_GPIO_togglePins(LED_PORT,LED_LED1_PIN);
delay_cycles(32000000);
#endif
}
}
可以看出,主循环效率不高,可以采用中断的方式来实现