MSPM0G3507——GPIO例程讲解1——input_capture

函数:

参数:

返回值:

主函数代码:

#include "ti_msp_dl_config.h"

extern volatile uint32_t interruptVectors[];

int main(void)
{
    SYSCFG_DL_init();                               //把所有的LED灯和按键初始化了一遍

    /*
     * Turn OFF LED if SW is open, ON if SW is closed.
     * LED starts OFF by default.
     */

    NVIC_EnableIRQ(GPIO_SWITCHES_INT_IRQN);                  //先允许外部中断

    while (1) {
        __WFI();                                            
    }
}

void GROUP1_IRQHandler(void)                            
{
    switch (DL_Interrupt_getPendingGroup(DL_INTERRUPT_GROUP_1))             //判断是GROUP1中哪个中断挂起
    {
        case GPIO_SWITCHES_INT_IIDX:                                        //是按键的中断
            /* If SW is high, turn the LED off */
            if (DL_GPIO_readPins(GPIO_SWITCHES_PORT, GPIO_SWITCHES_USER_SWITCH_1_PIN)) 
            {
                DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
            }
            /* Otherwise, turn the LED on */
            else
             {
                DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
            }
            break;
    }
}

宏定义代码:

#ifndef ti_msp_dl_config_h
#define ti_msp_dl_config_h

#define CONFIG_MSPM0G350X

#if defined(__ti_version__) || defined(__TI_COMPILER_VERSION__)
#define SYSCONFIG_WEAK __attribute__((weak))
#elif defined(__IAR_SYSTEMS_ICC__)
#define SYSCONFIG_WEAK __weak
#elif defined(__GNUC__)
#define SYSCONFIG_WEAK __attribute__((weak))
#endif

#include <ti/devices/msp/msp.h>
#include <ti/driverlib/driverlib.h>
#include <ti/driverlib/m0p/dl_core.h>

#ifdef __cplusplus
extern "C" {
#endif

/*
 *  ======== SYSCFG_DL_init ========
 *  Perform all required MSP DL initialization
 *
 *  This function should be called once at a point before any use of
 *  MSP DL.
 */


/* clang-format off */

#define POWER_STARTUP_DELAY                                                (16)



#define CPUCLK_FREQ                                                     32000000




/* Port definition for Pin Group GPIO_LEDS */
#define GPIO_LEDS_PORT                                                   (GPIOA)

/* Defines for USER_LED_1: GPIOA.0 with pinCMx 1 on package pin 33 */
#define GPIO_LEDS_USER_LED_1_PIN                                 (DL_GPIO_PIN_0)
#define GPIO_LEDS_USER_LED_1_IOMUX                                (IOMUX_PINCM1)
/* Port definition for Pin Group GPIO_SWITCHES */
#define GPIO_SWITCHES_PORT                                               (GPIOB)

/* Defines for USER_SWITCH_1: GPIOB.21 with pinCMx 49 on package pin 20 */
// pins affected by this interrupt request:["USER_SWITCH_1"]
#define GPIO_SWITCHES_INT_IRQN                                  (GPIOB_INT_IRQn)
#define GPIO_SWITCHES_INT_IIDX                  (DL_INTERRUPT_GROUP1_IIDX_GPIOB)
#define GPIO_SWITCHES_USER_SWITCH_1_IIDX                    (DL_GPIO_IIDX_DIO21)
#define GPIO_SWITCHES_USER_SWITCH_1_PIN                         (DL_GPIO_PIN_21)
#define GPIO_SWITCHES_USER_SWITCH_1_IOMUX                        (IOMUX_PINCM49)

/* clang-format on */

void SYSCFG_DL_init(void);
void SYSCFG_DL_initPower(void);
void SYSCFG_DL_GPIO_init(void);
void SYSCFG_DL_SYSCTL_init(void);



#ifdef __cplusplus
}
#endif

#endif /* ti_msp_dl_config_h */

主函数中有这个函数:

DL_Interrupt_getPendingGroup(DL_INTERRUPT_GROUP_1);

这是用来判断是那个中断挂起的,具体的介绍,参数,返回值在开头三个图片中。

相关推荐
Sean_woo19984 个月前
【笔记】MSPM0G3507使用RT-Thread console——MSPM0G3507与RT_Thread(三)
笔记·mspm0g3507·rt-thread nano
幻想时刻@6 个月前
MSPM0G3507——解决printf重定向在其他位置不能用的问题(printf重定向的补充)
mspm0g3507
幻想时刻@6 个月前
MSPM0G3507——读取引脚的高低电平方法(数字信号循迹模块)
mspm0g3507
幻想时刻@6 个月前
MSPG3507——蓝牙接收数据显示在OLED,滴答定时器延时500MS
mspm0g3507
幻想时刻@6 个月前
MSPM0G3507——定时器例程讲解2——TIMX_time_mode_capture_duty_and_period
mspm0g3507