函数:
参数:
返回值:
主函数代码:
#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);
这是用来判断是那个中断挂起的,具体的介绍,参数,返回值在开头三个图片中。