【MSP430】#pragma vector语句在IAR for MSP430中断程序编程过程中的使用

  在使用keil对STC89C52单片机程序开发过程中使用 void Name_Function interrupt n 来作为中断服务函数程序的入口,但是在IAR for MSP430程序开发过程中则使用#pragma vector提供中断函数入口地址,并使用 _interrupt void _Name_Function来定义中断函数名称,示例如下:

#pragma vector = 0xFFF4;		//WDT_VECTOR = 0xFFF4 是看门狗定时器中断地址
__interrupt void Watchdog_Timer(void)
{
    /****/
}

1、上面的入口地址也可写成#pragma vector=WDT_VECTOR,每种中断的入口地址在头文件里有描述,有官方给定的掩码。
2、函数名称Watchdog_Timer(void)可以为任意名称。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用MSP430的定时器有两种方式:基于循环计数和基于输入捕获。 基于循环计数的定时器可以使用MSP430的内置定时器TA(Timer_A)和TB(Timer_B),它们可以使用不同的时钟源,包括外部时钟源和内部时钟源。下面是基于循环计数的定时器的代码示例: 首先需要在main函数初始化定时器: ```c #include <msp430.h> void init_timer(void) { TA0CTL |= TASSEL_2 + MC_1; //选择SMCLK为定时器时钟源,启动定时器 TA0CCR0 = 50000; //设定计数器上限 TA0CCTL0 |= CCIE; //使能比较中断 } ``` 然后定义定时器的中断服务函数: ```c #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer_A (void) { // 这里可以写定时器中断服务函数的具体内容 } ``` 最后在main函数启用中断: ```c int main(void) { // ... init_timer(); // 初始化定时器 __enable_interrupt(); // 启用中断 // ... } ``` 基于输入捕获的定时器也可以使用MSP430的内置定时器TA和TB实现。下面是基于输入捕获的定时器的代码示例: 首先需要在main函数初始化定时器: ```c #include <msp430.h> void init_timer(void) { TA0CTL |= TASSEL_2 + MC_1 + TAIE; //选择SMCLK为定时器时钟源,启动定时器,使能定时器中断 TA0CCTL0 |= CCIE + CAP; //比较模式和捕获模式都使能,使能比较中断 } ``` 然后定义定时器的中断服务函数: ```c #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer_A (void) { // 这里可以写定时器中断服务函数的具体内容 } ``` 最后在main函数启用中断: ```c int main(void) { // ... init_timer(); // 初始化定时器 __enable_interrupt(); // 启用中断 // ... } ``` 需要注意的是,以上是基本的定时器使用方法,具体的代码实现还需要根据具体的应用场景进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值