MSP430中常用的pragma命令

pragma命令

  1. pragma命令作为C语言中的预编译命令
  2. 使用方法: #pragma [option] 内容
  3. #pragma message(“info”) 编译器编译到此处打印相应文本info信息
  4. #pragma error “error” 编译器编译到此处产生错误并打印错误error信息
  5. #pragma inline [=forced | never] 编译时将指令后面的函数内联到调用它的函数的函数体中
  • 当#pragma inline = forced,强制编译器对函数内联,内联不成功,发出警告消息
  • 当#pragma inline = never,编译器不对函数内联
  1. #pragma location = {address | register | NAME} 指令将之后的全局或静态变量指定到address、register或NAME上
#include <msp430f169.h>

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD + WDTNMI + WDTNMIES;     // WDT off NMI hi/lo

  P6DIR |= 0x01;                                    // Set P1.0 to output direction
  P6OUT |= 0x01;                                    // Clear P1.0 LED off
  IE1 |= NMIIE;                                     // Enable NMI

  LPM0;                                             // Enter LPM0
}

#pragma vector=NMI_VECTOR
__interrupt void nmi_ (void){
  volatile unsigned int i;

  P6OUT |= 0x01;                                    // Set P1.0 LED on
  for (i = 50000; i > 0; i--);                      // Delay
  P6OUT ^= 0x01;                                    // Clear P1.0 LED off
  IFG1 &= ~NMIIFG;                                  // Reclear NMI flag in case bounce

  IE1 |= NMIIE;                                     // Enable NMI
}

代码说明,第14~24行是中断函数:

  • 第14行是将vector和NMI_VECTOR关联
  • 第15~24行是中断函数的具体实现
  • 第15行中的函数头部分:
  • __interrupt是中断函数的必须要的修饰
  • void是必须的,中断函数不能返回值
  • nmi_函数名称是可以根据需要修改的,一般是和中断源关联,加上interrupt service routine的简写(ISR),这里最好写作nmi_ISR
  • void是必须的,要求中断函数不传参数

中断向量见图:

vector

posted @ 2021-03-30 21:44  叕叒双又  阅读(494)  评论(0编辑  收藏  举报