我是靠谱客的博主 寂寞橘子,这篇文章主要介绍msp430中断,现在分享给大家,希望可以做个参考。

 

     

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

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

1   IO口的中断

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#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   定时器的中断

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#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的中断  

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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中断内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部