MSP432中断初试

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

在MSP432中,中断函数的编写需要遵循一定的规则。首先,需要在代码中声明中断服务程序的函数原型,如`extern void PORT1_IRQHandler(void)`。然后,在中断服务程序中,可以通过检查中断标志位来确定触发中断的条件,例如`if(P1IFG & BIT1)`表示如果P1.1引脚触发了中断。在中断服务程序中,可以执行相应的操作,比如翻转LED的状态。最后,需要在GPIO初始化函数中配置中断条件,使能子级中断,并清除中断标志位。例如,可以使用`P1IE |= BIT1`来使能P1.1引脚的中断。总之,中断函数的编写需要结合具体的硬件和需求进行配置和操作。\[2\] #### 引用[.reference_title] - *1* *3* [MSP432P401R学习:GPIO(输入、输出、中断)](https://blog.csdn.net/qq_44360908/article/details/120064753)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MSP432中断初试](https://blog.csdn.net/azs0504/article/details/117450249)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值