LP-MSPM0G3507学习--04GPIO控制
关键函数:
- 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}
}
可以看出,主循环效率不高,可以采用中断的方式来实现