MSP430中断参数

发布者:Aq123456258最新更新时间:2019-03-14 来源: eefocus关键字:MSP430  中断参数 手机看文章 扫描二维码
随时随地手机看文章

1.中断向量入口参数

typedef enum

{

  VECTOR_RTC      =41u, /*  RTC */

  VECTOR_PORT2        , /*  Port 2 */

  VECTOR_TIMER2_A1    , /*  Timer0_A5 CC1-4, TA */

  VECTOR_TIMER2_A0    , /*  Timer0_A5 CC0 */

  VECTOR_USCI_B1      , /*  USCI B1 Receive/Transmit */

  VECTOR_USCI_A1      , /*  USCI A1 Receive/Transmit */

  VECTOR_PORT1        , /*  Port 1 */

  VECTOR_TIMER1_A1    , /*  Timer1_A3 CC1-2, TA1 */

  VECTOR_TIMER1_A0    , /*  Timer1_A3 CC0 */

  VECTOR_DMA          , /*  DMA */

  VECTOR_USB_UBM      , /*  USB Timer / cable event / USB reset */

  VECTOR_TIMER0_A1    , /*  Timer0_A5 CC1-4, TA */

  VECTOR_TIMER0_A0    , /*  Timer0_A5 CC0 */

  VECTOR_ADC12        , /*  ADC */

  VECTOR_USCI_B0      , /*  USCI B0 Receive/Transmit */

  VECTOR_USCI_A0      , /*  USCI A0 Receive/Transmit */

  VECTOR_WDT          , /*  Watchdog Timer */

  VECTOR_TIMER0_B1    , /*  Timer0_B7 CC1-6, TB */

  VECTOR_TIMER0_B0    , /*  Timer0_B7 CC0 */

  VECTOR_COMP_B       , /*  Comparator B */

  VECTOR_UNMI         , /*  User Non-maskable */

  VECTOR_SYSNMI       , /*  System Non-maskable */

  VECTOR_RESET        , /*  Reset [Highest Priority] */

  /************************为使用方便,下面对部分常用功能进行定义**************************************************/

  //IO口

  VECTOR_P1            = VECTOR_PORT1,

  VECTOR_P2            = VECTOR_PORT2,

  //SPI

  VECTOR_SPI0          = VECTOR_USCI_A0,

  VECTOR_SPI1          = VECTOR_USCI_A1,

  VECTOR_SPI2          = VECTOR_USCI_B0,

  VECTOR_SPI3          = VECTOR_USCI_B1,

  //I2C

  VECTOR_I2C0          = VECTOR_USCI_B0,

  VECTOR_I2C1          = VECTOR_USCI_B1,

  //UART

  VECTOR_UART0         = VECTOR_USCI_A0,

  VECTOR_UART1         = VECTOR_USCI_A1,

  //TIMER,注意定时器有两个中断向量,CCR0单独占用一个中断向量,其他中断源共同使用一个中断向量

  VECTOR_TIMER_A0      = VECTOR_TIMER0_A1,

  VECTOR_TIMER_A0_CCR0 = VECTOR_TIMER0_A0,

  VECTOR_TIMER_A1      = VECTOR_TIMER1_A1,

  VECTOR_TIMER_A1_CCR0 = VECTOR_TIMER1_A0,

  VECTOR_TIMER_A2      = VECTOR_TIMER2_A1,

  VECTOR_TIMER_A2_CCR0 = VECTOR_TIMER2_A0,

  VECTOR_TIMER_B0      = VECTOR_TIMER0_B1,

  VECTOR_TIMER_B0_CCR0 = VECTOR_TIMER0_B0,

}VECTORn;         //中断向量



50

51

2.设置中断向量地址

/*******************************************************************************

*  函数名称:Set_Vector_Handler(VECTORn vector,__interrupt void pfunc_handler(void))

*  功能说明:设置中断向量地址

*  参数说明:

            VECTORn vector  :中断向量(枚举变量,见.h文件)

            __interrupt void pfunc_handler(void)  : 中断服务函数

*  函数返回:无

********************************************************************************/

void Set_Vector_Handler(VECTORn vector, __interrupt void pfunc_handler(void))

{

  if(SYSX->RIVECT == DISABLE)        //如果没有设置中断向量表到RAM,则设置

  {

    Set_VectorTable_To_RAM();                       //设置中断向量表到RAM

  }

  //此处若有警告可忽略

  __VECTOR_RAM[vector] = (ISR_TYPE)pfunc_handler;     //设置该中断向量地址

}


3.使用实例

3.1 GPIO实例

Set_Vector_Handler(VECTOR_PORT1,GPIO_IRQ_Handler);    

//设置PPORT1中断服务函数为GPIO_IRQ_Handler,需要先定义中断服务函数,另外最好先设置中断向量,再开启中断


3.2 定时器实例

Set_Vector_Handler(VECTOR_TIMER0_B0,TIMER_TB0_IRQ_Handler);    //设置中断向量,最好先设置中断向量,在开启中断


__interrupt void TIMER_TB0_IRQ_Handler()

{

  LED_Turn(LED1);               //指示灯闪烁

}


3.3 ADC中断实例

ADC_Init(ADC_CH2,ADC_VREF_3_3V,ADC_10bit);       //初始化通道,P6.2

Set_Vector_Handler(VECTOR_ADC12,ADC_IRQ_Handler);

ADC_ITConfig (ADC_CH2,ENABLE);


ADC_StartConv();

OLED_PrintfAt(FONT_ASCII_6X8,0,0,"ADValue:\n%f V",ad);         //在指定位置打印


__interrupt void ADC_IRQ_Handler()

{

   if(ADC_GetITStatus(ADC_CH2) == TRUE)

   {

      ad = ADC_ReadChanelValue (ADC_CH2)*3.3/1023;   //读取后会自动清除标志位

      ADC_ClearITPendingBit(ADC_CH2);

   }

}


关键字:MSP430  中断参数 引用地址:MSP430中断参数

上一篇:MSP430F5529 ADC参考
下一篇:MSP430定时器介绍

推荐阅读最新更新时间:2024-03-16 16:25

基于MSP430单片机的M430/OS对系统的意义解析
1 在 MSP 430上使用RTOS的意义 一般的观点认为,MSP430上使用RTOS是没有意义的这是可以理解的。因为MSP430的硬件资源有限(以MSP430F149为例,只有2KB RAM),任何商业操作系统都不可能移植到MSP430上。目前在MSP430上得到应用的RTOS,只有μC/OS-II,但使用μC/OS-II 必须有昂贵的C编译器,这严重地限制了其在MSP430上的使用。 正是基于以上情况,笔者在应用MSP430过程中,编写了一个基于MSP430F149的RTOS,暂定名为M430/OS。它占用RAM量少、代码短小,稍加改动就可适用于大多数其它MSP430 单片机 。 在MSP430单片机系统上
[单片机]
MSP430系统时钟 ACLK、MCLK、SMCLK
MSP430基础时钟模块包含以下3个时钟输入源。 一、4个时钟振荡源 1、LFXT1CLK: 外部晶振或时钟1 低频时钟源 低频模式:32768Hz 高频模式:(400KHz-16MHz) 2、XT2CLK: 外部晶振或时钟2 高频时钟源(400KHz-16MHz) 3、DCOCLK: 内部数字RC振荡器,复位值1.1MHz 4、VLOCLK: 内部低功耗振荡器 12KHz 注:MSP430x20xx: LFXT1 不支持 HF 模式, XT2 不支持, ROSC 不支持. (1)LFXT1CLK 低频时钟源:由
[单片机]
MSP430待机功耗问题
最近由于项目原因使用了TI公司的MSP430F149单片机,在使用过程中遇到了有关于功耗方面的一点问题,以此文章作为记录。 问题描述:单片机进入低功耗模式4(low_power_mode_4)之后测量待机电流高达8mA。 解决方法:通过程序调试运行发现当运行了串口初始化程序后,进入低功耗之后会有较大电流,串口初始化程序如下: 串口初始化程序 继续调试发现,当屏蔽掉对于管脚端口的设置后程序运行进入低功耗后电流能够维持在ua级别,由此推断是因为进入低功耗前没有对相应管脚进行配置导致。在进入低功耗前添加管脚配置程序如下: P3SEL &= ~(BIT4 + BIT5); //管脚配置为普通IO口 P3DIR &= ~(BIT4
[单片机]
<font color='red'>MSP430</font>待机功耗问题
MSP430之AD12笔记及使用一例
MSP430的AD12使用灵活,功能强大.我在学习的过程中特别总结了一下,以后回头来也方便咯,呵呵. 1.AD12(12路输入通道(8路外部输入通道,4路内部输入通道),4种模式) (1)寄存器: A.转换控制:ADC12CTL0、ADC12CTRL1 B.中断控制:ADC12IFG 、 ADC12IE 、ADC12IV C存储控制类:ADC12MCTL0 — ADC12MCTL15(8位寄存器,每个寄存器对应于一个ADCMEM12x,定义参考电压和通道) D.存储器类:ADC12MEM0 — ADC12MEM15 (2)四种工作模式 A.单通道单次转换 B.单通道多次转换 C.多通道(序列
[单片机]
MSP430内部flash操作程序
////////////////////////////////////////////// //功能:FLASH操作-BYTE数据写入 // //参数:char *Data_ptr,char byte // //返回:无 // //日期:2003.11.6 // ////////////////////////////////////////////// void Flash_wb(char *Data_ptr,char byte) { FCTL3=0x0A500; // Lock=0 FCTL1=0x0A540; // WRT=1 *Data_ptr=byte; } /////////////////////////////
[单片机]
msp430的一些常用的C语言控制程序---ADC12(3)
下面是ADC12的序列通道单次转化的例子: //ADC12序列通道单次 #include msp430x14x.h unsigned ADC_Result1,ADC_Result2; void ADC12_Init(); void main(){ WDTCTL = WDTPW + WDTHOLD; ADC12_Init(); ADC12CTL0 |= ADC12SC; _BIS_SR(GIE); while(1); } // void ADC12_Init(){ P6DIR &= (~BIT6 + ~BIT7);//设置状态为输入态 P6SEL |= BIT6 + BIT7;//选择端口的第二功能 AD
[单片机]
基于MSP430F149的超声波测距
#include msp430.h void ultrasound_trig(); unsigned char segdata = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; #define ComOut() P5OUT|= BIT5 #define ComLatch() P5OUT&= ~BIT5 #define SegmentLatch() P6OUT &= ~BIT6 #define SegmentOut() P6OUT |= BIT6 int main(void) { WDTCTL = W
[单片机]
便携式低功耗雷达导航仪智能测控系统
0 引言     为了解决许多航空设备采用的航空总线种类各异,难以互相兼容的问题,现代飞机航空电子系统要求各机载航空设备使用统一的航空总线,以方便系统集成。ARINC429总线是航空电子设备之间数据传输的航空工业标准,具有接口方便、数据传输可靠的特点,目前已经是航空领域应用最广泛的航空电子总线。ARINC429是美国航空无线电公司(ARINC)制定的航空数字总线传输标准,属单向数据总线,可由两根独立总线实现双向传输,数据传输率为12.5~100 Kb/s,传输字为32位。总线上的发送器只能有一个,而接收器可多达20个。国内外研究和实现ARINC429总线通信的文献很多,接口丰富且使用广泛。文献采用FPGA实现了ARINCA29的接口
[测试测量]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved