2016-09-28 82 views
0

我想在C中創建一個用於ATMEL 328pu的庫。我在C中創建了源文件和頭文件,但是當我試圖編譯這個庫的時候,它們已經不起作用了。我想我需要包含的各類另一AVR庫:爲ATMEL328創建C庫

  • TWDR
  • TWCR

這是在ATMEGA328 I2C寄存器。下面可以看到錯誤消息的縮寫版本,後面跟着錯誤消息所指的.cpp文件的一部分。

錯誤消息:

Build: Debug in my_i2c (compiler: GNU GCC Compiler) Code_blocks/my_i2c/my_i2c/my_i2c.cpp|39|error: use of undeclared identifier 'TWCR'| Build failed: 19 error(s), 0 warning(s) (0 minute(s), 0 second(s))

提取from.cpp文件:

#include "my_i2c.h" 

/////////////////////WRITE BIT//////////////////// 
void my_i2c :: i2cWriteBit (uint8_t i2cAdd, uint8_t i2cReg, uint8_t i2cBit, bool i2cBool) { 
uint8_t writeBuff; 
writeBuff = i2cRead(i2cAdd, i2cReg); //read uint8_t 
i2cBool == true ? writeBuff |= 1 << i2cBit : writeBuff &= ~(1 << i2cBit); 
i2cWrite (i2cAdd, i2cReg, writeBuff); 
} 


/////////////////////WRITE uint8_t//////////////////// 
void my_i2c :: i2cWrite (uint8_t i2cAdd, uint8_t i2cReg, uint8_t i2cData) { 
/////START CONDITION//// 
TWCR = 0b10100100; //(TWINT)(TWSTA)(TWEN) - Set START condition 
while (!(TWCR & 0b10000000)) { //Wait for TWI to set TWINT 
} 

我需要定義什麼TWCR與TWDR的編譯器要了解的功能?我如何做到這一點,是否像我想包括另一個圖書館一樣?

+0

您應該發佈編譯器命令。 – LPs

+0

我不知道那是什麼 – hoboBob

回答

1

您無法引用未聲明的標識符,這使得編譯器無法弄清楚您的意思。

你也許應該補充

#include <avr/io.h> 

到庫的源代碼。

+0

頂級男士謝謝,我不想花時間在錯誤的軌道上,似乎有時會發生。 – hoboBob