我在Raspberry PI中的pow()有问题。我用了它,只是像这样转动gpio针:
*((unsigned int *)(GPIO_PIN_ON)) = ( 1 * pow(2,16) ); // 1 << 16
GPIO_PIN_ON是我在顶部定义的常数。这很好。我什至不必包括“ Math.h”,但是当我在其他文件中创建“ GPIOsetFunction()”并使用pow()甚至与“ math.h”库一起使用时,也会出现此错误:
gpio.c:(.text+0x38): undefined reference to `__aeabi_i2d'
gpio.c:(.text+0x48): undefined reference to `__aeabi_i2d'
>> gpio.c:(.text+0x64): undefined reference to `pow'
gpio.c:(.text+0x80): undefined reference to `__aeabi_dmul'
gpio.c:(.text+0x94): undefined reference to `__aeabi_d2iz'
这里表明pow()是未定义的。有谁可以帮助我吗。
P.S:我正在将BakingPI教程从Assembly转换为C,并且我不想使用Shift运算符。
以下是我在没有“ math.h”和“ -lm”且没有解决方案的情况下成功运行的代码,以及如何运行此代码? (这是BAKING-PI教程的OK-02的完整代码)
P.S2:我正在使用YAGARTO编译器。
#include <sys/types.h>
void main(void);
#define GPIO_BASE 538968064 //0x20200000
#define GPIO_PIN_FUNC (GPIO_BASE+4)
#define GPIO_PIN_ON (GPIO_BASE+28)
#define GPIO_PIN_OFF (GPIO_BASE+40)
void main(void) {
register int counter = 0;
*((unsigned int *)(GPIO_PIN_FUNC)) = ( 1 * pow(2,18) ); //1 << 18
while (1 == 1) { // forever
*((unsigned int *)(GPIO_PIN_OFF)) = ( 1 * pow(2,16) ); //1 << 16
counter = 4128768; //0x3f0000;
while (counter--);
*((unsigned int *)(GPIO_PIN_ON)) = ( 1 * pow(2,16) ); // 1 << 16
counter = 4128768; //0x3f0000;
while (counter--);
}
// should never get here
}
最佳答案
您必须与数学库链接。将-lm
附加到您的编译(链接)命令行中。
关于c - Raspberry PI中的幂函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24259507/