我有問題和希望,你可以幫助我。 我嘗試在兩個dsPIC30F4011之間進行CAN通信。它也可以。現在我必須製作標識符。我必須使用SID和EID。它們分爲4個部分。我想做一個位聲明並得到一個錯誤。 我做了一個新的頭文件位聲明 - 未定義的引用'變量'
#ifndef IDENTIFIER_H
#define IDENTIFIER_H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif /* IDENTIFIER_H */
#include <p30F4011.h>
#include "system.h"
#include <p30fxxxx.h>
typedef struct tagCxTXxSIDBITS{
unsigned : 11;
unsigned PRIO4_0 : 5;
}CxTXxPRIOBITS;
extern volatile unsigned int C1TX0PRIO __attribute__((__sfr__));
extern volatile CxTXxPRIOBITS C1TX0PRIObits __attribute__((__sfr__));
extern volatile unsigned int C1TX1PRIO __attribute__((__sfr__));
extern volatile CxTXxPRIOBITS C1TX1PRIObits __attribute__((__sfr__));
extern volatile unsigned int C1TX2PRIO __attribute__((__sfr__));
extern volatile CxTXxPRIOBITS C1TX2PRIObits __attribute__((__sfr__));
在代碼我想寫
...
...
C1TX0PRIO = 0x0000;
...
如果我要建立的項目中,我得到的錯誤
build/default/production/CAN_function.o(.text+0x66): In function `.LSM19': : undefined reference to `_C1TX0PRIO' make[2]: *** [dist/default/production/blink.X.production.hex] Error 255 make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2
我做錯了什麼? 我寫像p30F4011.h
您已經編寫了C1TX0PRIO的定義,但是您沒有編寫實現。即在你的C代碼中你需要'unsigned int C1TX0PRIO;'這樣該變量就存在 –