MSP432中断初试
@目录
MSP432单片机中断
再次领悟中部中断实验
一、MSP432 单片机中断
与所有单片机一样包括
中断请求,中断响应,中断处理,中断返回
下面展示一些 中断程序编写格式
。
#pragma vector=中断向量名(中断向量号,为中断地址)
__interrupt void 自定义中断函数名(void)
{… }
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
P1OUT ^= BIT0; // P1.0 = toggle
P1IFG &= ~BIT3; // P1.3 IFG cleared
};
中断向量号在startup_msp432p401r_ccs.c有定义
中断处理函数
二、再次领悟中部中断实验
进入中断条件总结:中断条件配置、子级中断允许、总中断允许
一般而言,都需要进行手动清除中断标志位。从而可以再次进入中断。
以下示例代码说明
/*
MSP432:
基于寄存器编程:利用P1.1和P1.4引脚外部中断,实现对LED灯亮灭的控制。
P1.1和P1.4引脚连接S1和S2按键,该按键按下将触发引脚中断,P2.1和P2.2引脚分别连接连个LED灯,当按键P1.1被按下后,P2.1引脚LED灯的亮灭状态将会发生翻转,当按键P1.4按下后,P2.2引脚的电平将发生翻转。
*/
//中断服务程序
extern void PORT1_IRQHandler(void)//在之前提到的startup_msp432p401r_ccs.c可以查到
{
if(P1IFG & BIT1)//同时为一即条件满足
{
P2OUT ^= BIT1;//异或实现2.1电平翻转
P1IFG &= ~BIT1;//清中断标志位
}
if(P1IFG & BIT4)//同上
{
P2OUT ^= BIT2;
P1IFG &= ~BIT4;
}
}
//GPIO初始化函数
void IOinit(void)
{
P2DIR |= BIT1 | BIT2; //设置P2.1,P2.2输出
P1DIR &= (~BIT1) | (~BIT4); //设置P1.1,1.4输入
//中断条件配置
P1OUT |= BIT1 | BIT4; //P1.1,1.4输出高电平
P1REN |= BIT1 | BIT4; //P1.1,1.4内部上拉
//子级中断允许
P1IE |= BIT1 | BIT4; //p1.1/4中断使能
P1IFG = 0; //清除p1端口的中断标志位
P1IES &= (~BIT1) | (~BIT4); //p1.1上升沿触发 此时上升沿BITx是0,所以取非再用与运算,使P1IES为1。是 注:P1IES |= BIT1下降沿
Interrupt_enableInterrupt(INT_PORT1);//使能P1口的NVIC中断
}
————————————————
原文链接:https://blog.csdn.net/weixin_45744537/article/details/115612702
总结
1.main中需要的步骤
{
设置IO输入/输出方向,带上拉电阻的输入模式
清除中断标识位,在配置时就需要清除标志位
设置中断触发边沿,上升沿/下降沿
使能GPIO中断
使能总中断
}
2.中断服务函数PORT1_IRQHandler,需要的步骤
{
与运算条件判断
自定义操作(如电平翻转)
清中断标志位
}
CCS 下载地址:http://processors.wiki.ti.com/index.php/Download_CCS