为ATMEGA328创建c库

c library creation for ATMEL328

我正在尝试用 C 创建一个用于 ATMEL 328pu 的库。我已经用 C 语言制作了源文件和头文件,但是当我尝试编译库时出现了问题。我想我需要另一个包含以下类型的 AVR 库:

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 以便编译器理解函数?我该怎么做,是否像我想的那样包含另一个库?

您不能引用未声明的标识符,这会使编译器无法理解您的意思。

你或许应该添加

#include <avr/io.h>

到您图书馆的源代码。