ATMEL328的c库创建
Posted
技术标签:
【中文标题】ATMEL328的c库创建【英文标题】:c library creation for ATMEL328 【发布时间】:2016-09-28 08:30:13 【问题描述】:我正在尝试用 C 创建一个库以用于 ATMEL 328pu。我已经用 C 语言制作了源文件和头文件,但是当我尝试编译库时却卡住了。我想我需要另一个包含以下类型的 AVR 库:
TWDR TWCRATMEGA328 中有哪些 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)