我是靠谱客的博主 寂寞橘子,最近开发中收集的这篇文章主要介绍msp430中断,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

     

首先我们要知道哪些io口可以实现中断。(如上图所示)

一、基本
那么什么是中断呢。我们可以认为是放下目前要做的事A,去做另外的事B,做完B后再回来继续做A。比如说我们要写一个程序,中途渴了要去喝水,我们喝完水后再继续写程序。停止写程序就相当于中断,而喝水就相当于是中断里面做的事情。中断里面做的事情就是中断函数。,
把它类比到函数中,写程序就相当于main函数,那么去喝水就相当于是中断函数。
430中的IO中的一部分、定时器、ADC等都具有中断功能。
二、各种中断

1   IO口的中断


#include <msp430.h> 
 int main(){
 //关闭看门狗,必须要这一步
 WDTCTL = WDTPW | WDTHOLD;
 P2DIR &=~BIT3 ;  //开启2.3口中断 也就是设置2.3为输入io口
 P2IES |= BIT3 ;  //设定2.3口为下降沿触发,如果是上升沿触发则P2IE &=~BIT3 
 P2IFG &=~BIT3 ;  //清除中断标志
 P2IE  |= BIT3 ;  //P2.3中断使能
_EINT();			//开启总中断
}
#pragma vector = PORT2_VECTOR //中断服务开启,是哪个端口就填哪个具体请查看头文件
 
//中断函数固定写法:
__interrupt void port1_zhongduan (void){
        //如果是2.3口产生了中断
        if(P2IFG&BIT3){
             
             P2IFG &=~BIT3;     //固定写法,每次中断产生都要清除中断标志位
 
 
             /*然后写中断产生后,你想要执行的代码,如:让2.4io口置1*/
             P2DIR|=BIT4;   //配置2.4为输出口
             P2OUT|=BIT4;   //让2.4输出1
             
        }
}
 

2   定时器的中断

#include <msp430.h> 
//用TA0里面的CCR2来控制CCR1;
/*
 * main.c
 */
unsigned int t;
int main(void) {
    WDTCTL = WDTPW | WDTHOLD;	// Stop watchdog timer
    UCSCTL5=DIVS__2 ;			//现在SMCLK为500 000HZ
    t=600;
    P4DIR|=BIT2;
    P4OUT|=BIT2;
    P4DIR|=BIT3;
P4OUT|=BIT3;				//配置IO

	TA0CTL=TASSEL__SMCLK+MC__UP+ID__8+TACLR;
//配置定时器,时钟选择SMCLK,UP模式,八分频
	TA0CCR0=10000;		//CCR0设置为10000,也就是说,当以500000/8的周期计数记//到10000的时候,重新计数
	TA0CCR1=t;			//CCR1为t
	TA0CCR2=5000;		//CCR2为5000
	TA0CCTL0 = CCIE;
	TA0CCTL1 = CCIE;
	TA0CCTL2 = CCIE;
//开启每一个捕获器的中断使能
	_EINT();			//开启总中断
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIME0_A0_ISR(void)
{
	P4OUT|=BIT2;
	P4OUT|=BIT3;

}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIME0_A1_ISR(void)
{
	{
	    switch(TA0IV)
	    {
	        case 2:
	        	{
	        		P4OUT &= ~BIT2;
	        		break;
	        	}
	        case 4:
	        	{
	        		P4OUT &= ~BIT3;
	        		if(t<8000)
	        			t=t+100;
	        		else
	        			t=600;
	        		TA0CCR1=t;		//当CCR2产生中断的时候改变CCR1的值
	     	break;
	        	}
	        case 10:break;
	    }
	}
}


定时器的基本配置流程简述
1、设置时钟
2、TAxCTL选择模式、时钟等等
3、TAxCCRn设置CCR
4、设置中断
5、中断函数

具体判断TA1IV中的值。然后在相应的值里面做操作。如果不用这个的话是没有办法做出来中断

3   ADC的中断  

ADC12CTL0 = SHT0_2 + ADC12ON;               //   设置采样时间
  ADC12CTL1 = SHP;                          // 
  ADC12IE = 0x01;                           //   打开使能
  ADC12CTL0 |= ENC;                         //   打开转换开关
  P6SEL |= 0x01;                            //   选择P6.0端口的电压进行转换
  P2DIR |= 0x01;
  ADC12CTL0 |= ADC12SC;

#pragma vector=ADC12_VECTOR
__interrupt void ADC12_ISR (void)
{
    if (ADC12MEM0 < 0x7FF)
      P2OUT = 0;                       //  关闭P1.0的全部灯
    else
      P2OUT = 0XFF;                        // 打开P1.0的全部灯
    __low_power_mode_off_on_exit();
    
}

                                                                                                                                                                 基本步骤

  • 1.设置ADC12CTL0,使ADC12通道0采样保持时间为16 ADC12CLK(SHT0_2),开启ADC12模块(ADC12ON);
  • 2.设置ADC12CTL1,选择采样保持脉冲模式即SAMPCON为采样定时器(SHP)
  • 3.设置ADC12IE,是通道0中断使能(0x01);
  • 4.设置ADC12CTL0,使能AD转换(ENC)
  • 5.设置模拟信号输入IO口P60
  • 7.设置ADC12CTL0,开启AD转换(ADC12SC),等待中断
  • 8.中断中读取通道0转换值ADC12MEM0

                                                                                                                                                                                                                                                                                                                         学习了这么久msp430中断发现最重要的就是寄存器的配置,我们必须熟悉各类寄存器的对应的功能,多多利用好用户手册,就可以发挥出430系列单片机强大的性能。

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

最后

以上就是寂寞橘子为你收集整理的msp430中断的全部内容,希望文章能够帮你解决msp430中断所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部