我的微控制器程序中有标题
#ifndef __IRQ_HANDLER__
#define __IRQ_HANDLER__
#ifdef __cplusplus
volatile tU32 ticks = 0; // <- with that variable i have problem
extern "C" {
#endif
void interrupt2(void);
#ifdef __cplusplus
}
#endif
#endif //__IRQ_HANDLER__
然后是file.c
#include <lpc2xxx.h>
#include "interrupt.h"
void interrupt2(void) {
ticks++;
T1IR = 0xff;
VICVectAddr = 0x00;
}
每当我尝试使用变量滴答声时。我收到一个错误: 'ticks'未声明(首次使用此功能)。
你有什么想法可能有什么问题吗?
问候!
答案 0 :(得分:2)
注意:在下面的代码示例中,我删除了所有不相关的语句
1)不要在头文件中声明变量。如有必要,请使用&#39; extern&#39;头文件中的修饰符。
2)在源文件中声明变量,如main.c
3)以下划线+大写字母开头的任何符号名称或两个下划线都是&#39;保留&#39;对于系统。因此,强烈建议将__IRQ_HANDLER__
的所有实例替换为(典型)INTERRUPT_H
示例代码:
file:interrupt.h
#ifndef INTERRUPT_H
#define INTERRUPT_H
#ifdef __cplusplus
extern "C" {
#endif
extern volatile unsigned int ticks;
void interrupt2(void);
#ifdef __cplusplus
}
#endif
#endif // INTERRUPT_H
file:interruptHandler.c
#include "interrupt.h"
volatile unsigned int ticks = 0;
void interrupt2(void)
{
ticks++;
}
需要第三个文件声明变量:ticks
如果在文件全局空间中声明, 它会自动初始化为0
还必须将访问ticks
变量的第三个文件中的代码视为关键部分。可能是:
ticks
复制到本地变量