Tag: microchip

使用XC8接收有关plib I2Cfunction的“未定义符号”错误

嘿那里StackOverflow! 我的问题涉及在下面粘贴的程序中报告的错误。 目标器件是PIC12LF1552 ,它上面有一个串行外设,我假设它可以与Microchip的XC8编译器提供的库一起使用。 互联网上的一些消息人士表示,只有PIC18系列中的高端设备才支持库函数,其他消息来源表示库函数运行良好。 所以我决定不想从头开始重写I2C函数,也不想为这个项目编写任何数量的程序集。 因此,我决定使用随附的XC8外设库。 我阅读了编译器文档,了解如何获取它们(如下面的i2c.h所示)。 我知道根据文档和我见过的一些例子对这些命令进行了一些错误检查,但暂时我假设主人和奴隶都表现得很完美,所以我可以把这件事搞得一团糟地面。 我已经包含了所有相关路径,这就是为什么我认为它在编译过程中得到了这么多。 我在C语言和编译器的内部工作方面的知识水平非常有限,我只知道如何在基本级别使用这些工具,所以我可能会缺少一些基本的东西。 无论如何,当我在MPLABX v1.95中编译这段代码时,我得到了这个: :0: error: undefined symbols: _AckI2C(dist/pickit3/production\strobe.X.production.obj) _ReadI2C(dist/pickit3/production\strobe.X.production.obj) _IdleI2C(dist/pickit3/production\strobe.X.production.obj) _OpenI2C(dist/pickit3/production\strobe.X.production.obj) _StopI2C(dist/pickit3/production\strobe.X.production.obj) _NotAckI2C(dist/pickit3/production\strobe.X.production.obj) _WriteI2C(dist/pickit3/production\strobe.X.production.obj) _StartI2C(dist/pickit3/production\strobe.X.production.obj) 我无法在Google,StackOverflow或其他方面找到与我的特定上下文有关的任何相关信息(另一个人在从Microchip的传统C18编译器移植时有一个非常类似的问题,但我已经做了所有人为解决他的问题所做的一切) 。 所以我想,问题是,为什么我得到这个编译器错误,它在C语言或Microchip的实现背后的机制是什么导致了这个? /* * File: i2c.h * Author: James * * Created on July 23, 2014, 9:02 PM */ #ifndef I2C_H #define I2C_H #ifdef __cplusplus extern “C” { #endif […]

如果结构定义了uint16_t字和uint8_t字节,则数组的大小加倍

我有一个数组,每个数组的元素可以是uint16_t或一对uint8_t。 它的元素被定义为uint16_t和2 uint8_t的子数组的并集。 不幸的是,编译器(MicroChip XC16)分配的内存量应该是arrays的两倍。 typedef union { uint16_t u16; // As uint16_t uint8_t u8[2]; // As uint8_t } my_array_t; my_array_t my_array[1]; // 1 word array, for testing my_array[0].u8[0] = 1; my_array[0].u8[1] = 2; uint8_t byte_0 = my_array[0].u8[0]; // Gets 0x01 uint8_t byte_1 = my_array[0].u8[1]; // Gets 0x02 uint16_t byte_0 = my_array[0].u16; // Gets 0x0201 […]