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 @   叕叒双又  阅读(517)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示