LP-MSPM0G3507学习--04GPIO控制

发布于:2025-07-20 ⋅ 阅读:(18) ⋅ 点赞:(0)

关键函数:

  • 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
    }
}

可以看出,主循环效率不高,可以采用中断的方式来实现


网站公告

今日签到

点亮在社区的每一天
去签到