MSP430f5529外部中断

运行原理

IO口等待电平响应,未响应时CPU去做其他工作或者保持低功耗的休眠状态,直到获得响应时启动中断服务函数,处理中断内容。
MSP430中普通的IO口中断有P1和P2两组共16个,其中断优先顺序为从Px.0到Px.7中断优先级逐级递减

寄存器介绍

中断配置

首先要进行总中断使能(GIE),此步需要对状态寄存器SR进行配置
操作:_BIS_SR(GIE);

中断使能寄存器PxIE(Interrupt Enable Register)

在这里插入图片描述
此寄存器用于使能中断发生引脚
高电平开启
低电平关闭

中断标志寄存器PxIFG(Interrupt Flag Register)

在这里插入图片描述
此寄存器用于软件清除中断标志位,挂起中断。
低电平不挂起中断
高电平挂起中断

中断边沿选择寄存器PxIES(Interrupt Edge Select Tegister)

在这里插入图片描述
此寄存器用于选择中断检测边沿,即选择跳变方向。
高电平为检测引脚发生高电平跳变低电平
低电平为检测引脚发生低电平跳变高电平

中断发生检测

中断向量寄存器

在这里插入图片描述
此寄存器为只读状态

最高优先级使能中断在P1IV寄存器中产生一个序号,这个数字会被程序计数器识别或者加入其中,然后自动的执行合适的中断服务程序。关闭P1口中断不会影响P1IV寄存器中的值。P2口具有相同的功能。PxIV寄存器只能字访问。

中断服务函数

先贡上函数格式

#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
...
//用户自定义中断代码
...
}

编译器指令pragma
pragma用于连接中断向量与函数,相当于51 intterrput x和32的固定中断服务函数名称,指明发生中断所应执行的函数
=后面的内容根据给定的中断向量填写,函数名随意,interrupt前面是双横杠"_ _"

示例代码

#include "msp430.h"

int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  
  P1DIR = BIT0;
  P1REN = BIT0;
  P1OUT = BIT0;
  
  P1OUT |= BIT1;
  P1REN |= BIT1;
  P1IE |= BIT1;
  P1IES |= BIT1;
  P1IFG &= ~BIT1;
  
  _BIS_SR(GIE);
  while(1);
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1(void)
{
  P1OUT ^= BIT0;
  P1IFG &= ~BIT1;
}

引用

(3)MSP430F5529 通用I/O口的设置

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值