目录
注意事项:
432并非所有的IO口都可以配置外部中断。从端口7到端口J就不可以配置外部中断了
外部中断
相关函数:
gpio.h里:
1.开启外部中断:GPIO_enableInterrupt(GPIO_PORT_PX, GPIO_PINX);
2.配置触发方式:GPIO_interruptEdgeSelect(GPIO_PORT_P1, GPIO_PIN1, Edge);
Edge有效值:
GPIO_HIGH_TO_LOW_TRANSITION //下降沿(只有引脚从高电平变为低电平时才会触发中断)
GPIO_LOW_TO_HIGH_TRANSITION //上升沿(只有引脚从低电平变为高电平时才会触发中断)
3.获取GPIO中断中断状态:GPIO_getEnabledInterruptStatus(GPIO_PORT_PX);
interrupt.h
5.端口中断:Interrupt_enableInterrupt(INT_PORTX);
INT_PORTX的范围就是从1到6
启用特定端口的中断功能。启用中断后,当该端口满足触发条件时,将会产生中断请求,从而执行中断处理程序。
6.开启总中断:Interrupt_enableMaster();
软件挂起中断:Interrupt_pendInterrupt(interruptNumber)
interruptNumber—对应中断
屏蔽中断优先级:Interrupt_setPriorityMask(level)
level(对应的组优先级)为0的时候关闭屏蔽中断优先级;如果填大于0的数字x,则是大于等于x的中断都会被屏蔽掉
配置中断的步骤:
1.配置GPIO配置输入
GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1); //P1.1
GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN4); //P1.4
2.清楚中断标志位
GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN1);
GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN4);
3.配置触发方式
GPIO_interruptEdgeSelect(GPIO_PORT_P1, GPIO_PIN1, GPIO_HIGH_TO_LOW_TRANSITION);
GPIO_interruptEdgeSelect(GPIO_PORT_P1, GPIO_PIN4, GPIO_HIGH_TO_LOW_TRANSITION);
3.5配置中断优先级
Interrupt_setPriority(INT_PORT1, 1 << 5);
Interrupt_setPriority(INT_PORT2, 2 << 5);
4.开启外部中断
GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN1);
GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN4);
5.开启端口中断
Interrupt_enableInterrupt(INT_PORT1);
6.开启总中断
Interrupt_enableMaster();
7.编写GPIO ISR(中断服务函数)
void PORT1_IRQHandler(void)
{
uint16_t status;
uint16_t i;
status = GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);
GPIO_clearInterruptFlag(GPIO_PORT_P1, status);
if (status & GPIO_PIN1) //对应P1.1
{
for (i = 0; i < 5000; i++);
if (KEY1 == 0)
{
LED_RED_On(); //点亮红灯
while (1);
}
}
if (status & GPIO_PIN4) //对应P1.1
{
for (i = 0; i < 5000; i++);
if (KEY1 == 0)
{
LED_RED_On(); //点亮红灯
while (1);
}
}
}
中断服务函数:PORTX_IRQHandler
PORTX对应着1-6
中断优先级
相关知识:
MSP432有8级可编程的中断优先级(0-7)
等级越低,优先级越高
可以动态调整优先级
优先级分为组优先级(可以更改)与子优先级(硬件优先级,已经设置好的,无法更改)
子优先级中断号:
配置组优先级:
代码:Interrupt_setPriority(INT_PORTX,level);
level:x<<5(x为0-7).因为只使用高3位,所以配置时要左移5位。
声明:432学习参考UP主m_RNA