This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/MSP430FR5847:独立文件中的中断例程

Guru**** 2553600 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/587120/compiler-msp430fr5847-interrupt-routine-in-separate-file

部件号:MSP430FR5847

工具/软件:TI C/C++编译器

大家好,

您知道如何将中断例程放在单独的文件中,以便它可以访问main.c中的全局变量吗?

例如,我将ADC配置作为函数保存在单独的文件中:

  • 主要c:

#include "adc.h"
...
ADC_INIT();

  • ADC.h:

#ifndef ADC_H_
#define ADC_H_
extern void ADC_INIT(void);
#endif /* ADC_H_*/

  • ADC.c:

#define extern
#include "adc.h"
#UNDEF外部

#include <MSP4S.h>

void ADC_INIT (void)

   ADC12CTL0 || ADC12ON | ADC12SHT0_3 | ADC12MSC;
   ...
}

但在main.c中,我需要有一个中断例程:

// ADC12中断服务例程
#pragma vector=ADC12_vector
__interrupt void ADC12ISR (void)
Switch(__偶 数_in_range(ADC12IV, ADC12IV_ADC12RDYIFG))
 {
 ....
 CASE ADC12IV_ADC12IFG1:
      Vres -=(无符号长) VRS_RAW[ADC_avg_cnT];             //计算ADC输入的移动平均值
      VRS_RAW[ADC_avg_cnT]= ADC12MEM1;
      Vres +=(无符号长) VRS_RAW[ADC_avg_cnT];
      中断;  
  ....
 }

我希望将此例程放入ADC.c文件中