我无法使用变量传递值以从 math.h 记录

问题描述 投票:0回答:1

我在 stm32f411ret6 上使用 math.h 库的日志时遇到问题。 当我正常传递一个值来记录时,例如。

double var = log(2.0); 

比我在 var 中得到 0.69314718056 。 当我使用 stm32 以外的变量传递值时,转到 HardFault_Handler 等式

double var1 = 2.0;
double var2 = log(var1);

我的代码。

#include "main.h"

int main(void)
{


    double val = 2.0;
    double cos = log(2.0);
    double result = log((double)val);
    Board_Init();

    for(;;);
}

即使对于计算日志的自定义函数也存在同样的问题。

int main(void)
{


    double val = 2.0;
    double cos = log(2.0);
//  double result = log((double)val);
    double result = Math_Log(2.0, 2.7182);
    Board_Init();

    for(;;);
}

double Math_Log(double number , double base)
{
    double low = 0, high = number;
    double epsilon = 0.000001;
    while (high - low > epsilon) {
        double mid = (low + high) / 2;
        double power = 1;
        for (int i = 0; i < mid; ++i) {
            power *= base;
        }
        if (power < number) {
            low = mid;
        } else {
            high = mid;
        }
    }
    return low;
}

我使用stm32cubeIDE并且我标记了选项“使用C数学库”

很高兴知道是什么导致了这个问题

logging stm32 math.h
1个回答
0
投票

我明白了。 问题在于协处理器的访问权限。 修复:

SCB->CPACR |= 0x0F << 20;

将其添加到 main 的开头;

© www.soinside.com 2019 - 2024. All rights reserved.