• STM32CUBEIDE编译库函数项目及库文件调用


    STM32CUBEIDE编译库函数项目及库文件调用

    通过将一些算法类的函数编译成二进制库,实现对C源代码的保护,是常见的方式。

    STM32CUBEIDE自身带有编译系统,可以建立静态库项目,将函数编译为库文件,为特定的STM32 MCU调用。这里对库项目的建立和编译使用做简单介绍。

    函数库项目的建立和编译

    对一个加法函数的库项目的建立和编译整个过程图示如下:
    在这里插入图片描述
    在这里插入图片描述
    这里就要选择ARM MCU的GCC编译器了
    在这里插入图片描述
    在这里插入图片描述
    这里就要选择和MCU型号的绑定关系了,毕竟编译的库是给MCU项目所用,这里选择STM32F401CCU6的芯片。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    然后就可以添加源文件编写加法函数:
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    编写加法函数:
    在这里插入图片描述
    然后进行编译:
    在这里插入图片描述
    在这里插入图片描述
    编译成功,在工程目录里就可以找到编译好的库文件了:
    在这里插入图片描述

    库文件的调用

    先配置一个对应MCU的基本工程,这里建立一个STM32F401CCU6的工程,并配置USART2作为串口输出。
    在这里插入图片描述
    在这里插入图片描述
    保存后产生基本工程代码:
    在这里插入图片描述
    然后重载printf函数方便打印输出,参考 STM32 UART串口printf函数应用及浮点打印代码空间节省 (HAL)

    然后在工程的core/inc/ 目录新建一个和库文件同名的头文件,如libLib_C_Demo.h,内容为什么库文件里的函数:

    #ifndef libLib_C_Demo_H
    #define libLib_C_Demo_H     
    
    int add(int i, int j);
    
    #endif
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    然后将库文件libLib_C_Demo.a放置到工程的源文件目录core/src/ , 则在工程目录树立可以看到:
    在这里插入图片描述
    因为编译器默认只是识别C语言源代码(.c文件),还需要进行库文件的指定,这样编译器才会对二进制库文件(.a)进行识别。

    先打开属性菜单:
    在这里插入图片描述
    然后在如下位置进行库文件所在目录和库文件名的添加指定,注意库文件名前需要加:(冒号)
    在这里插入图片描述
    Apply and Close后,就可以在工程文件里对库文件进行调用,首先要引入库文件的头文件:

    在这里插入图片描述
    然后在while循环里进行打印输出,打印数据为库函数调用的加法和:
    在这里插入图片描述
    编译下载到STM32F401CCU6芯片后运行,通过串口工具观察打印结果:

    在这里插入图片描述
    输出打印结果正确,库函数正常调用成功。

    注意事项

    如果遇到xxx uses VFP register arguments xxx does not的报错,是因为浮点执行方式识别的冲突,一般将浮点执行方式调回软件计算浮点即可解决。
    在这里插入图片描述
    –End–

  • 相关阅读:
    PLC易学但是后期如何发展?
    【Linux】软件管理器yum和编辑器vim
    面试问到MySQL模块划分与架构体系怎么办
    二刷力扣--字符串
    leetcode 热题 100
    1010 Radix 甲级 xp_xht123
    flink cdc多种数据源安装、配置与验证
    uniapp h5发行
    python一招完美搞定Chromedriver的自动更新
    Kaggle学习之M5 直接单步预测
  • 原文地址:https://blog.csdn.net/hwytree/article/details/126886129