本文介绍TI开源“iqmath”(Q格式库)移植。

前面文章介绍过Q格式数据,在没有FPU的MCU或DSP使用非常广泛。但使用起来不太方便,TI开源了其iqmath库,下面介绍将其移植到其它平台。

1.源代码获取

TI在其“MSPM0-SDK”中开源了其iqmath库,因此,需要先下载,安装其SDK,再从其安装目录获取其源代码。

下载地址:

MSPM0-SDK 支持软件 | 德州仪器 TI.com.cn

安装完成后,在安装目录“xxx\ti\mspm0_sdk_1_20_00_05\source\ti”(我下载的SDK是这个版本)下有一个“iqmath”的目录,这里就是我们需要的源代码。

这里剔除一些无用的文件。

1)删除其目录下lib目录及其下所有文件(这里的lib与所用的MCU相关)

2)删除其目录下hwa.h(这个文件与具体的MCU相关)

处理好的文件也可以直接从我的CSDN资源中下载,名称:TI iqmath的源码,网址:https://download.csdn.net/download/propor/88785671

2.参考文档

iqmath使用方法可查阅:

MSPM0 IQMath User’s Guide — IQMath Documentation 1.0 documentation

里面介绍的很详细。

3.移植

这里以移植到ST的cortex-m0平台为例,我这里使用的是ST官方开发环境“STM32CubeIDE",其他开发环境也大同小异。

1)将iqmath目录拷贝到工程目录下。

2)添加头文件路径。

a)"iqmath/include"

b)"iqmath/_IQNfunctions"

c)"/iqmath/support"

3)修改相应头文件

将"support.h"头文件中的“#include <ti/devices/msp/msp.h>”修改为“#include "stm32f1xx_hal.h”(或指定的MCU头文件路径)

4)开发环境配置(不同的开发环境可能有所不同)

右击"iqmath"文件夹,去掉"Exclude resource from build"选项。

4.测试

在"main.c"中添加头文件"#include "IQmathLib.h",在"main"函数中添加:

#include "IQmathLib.h"

int main(void)
{
    _iq24 a = 0;
    _iq24 b = 0;
    _iq24 c = 0;
    float d = 0;

    a = _IQ24(3.5f);
    b = _IQ24(4.2f);
    c = _IQ24div(a, b);

    d = _IQ24toF(c);

    printf("%f\r\n", d);

    return 0;
}

验证是否编译成功。

总结,本文介绍了TI开源“iqmath”(Q格式库)移植。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐