ATMEL328的c库创建

Posted

技术标签:

【中文标题】ATMEL328的c库创建【英文标题】:c library creation for ATMEL328 【发布时间】:2016-09-28 08:30:13 【问题描述】:

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

TWDR TWCR

ATMEGA328 中有哪些 i2c 寄存器。错误消息的缩短版本如下所示,后面是错误消息所指的 .cpp 文件的一部分。

错误信息:

构建:在 my_i2c 中调试(编译器:GNU GCC 编译器) Code_blocks/my_i2c/my_i2c/my_i2c.cpp|39|错误:使用未声明的标识符“TWCR”| 构建失败:19 个错误,0 个警告(0 分钟,0 秒)

从.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 才能让编译器理解这些功能?以及我该如何做到这一点,是否就像我在考虑包含另一个库一样?

【问题讨论】:

你应该发布编译器命令。 我不知道那是什么 【参考方案1】:

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

你应该添加

#include <avr/io.h>

到您的库的源代码。

【讨论】:

高人,谢谢,我不想像有时发生的那样在错误的轨道上花费数小时。

以上是关于ATMEL328的c库创建的主要内容,如果未能解决你的问题,请参考以下文章

Atmel Studio 烧录 Atmega328P(Arduiono)

Atmel studio 汇编:8 位数字的平方根

初学者:AVR C++ Atmel Studio 6

如何将 ISR 设置为每秒运行 - C Atmega328p

ATMEL Studio 添加自己的库

如何在不创建新项目的情况下更改 Atmel Studio 6 中 C++ 的 avr32-gcc C 编译器?