在OpenSTLinux中使用CMSIS-DAP

在OpenSTLinux中使用CMSIS-DAP

第一步、下载CMSIS-Core内核源码包和CMSIS-DSP源码包

git clone https://github.com/ARM-software/CMSIS_5.git

git clone https://github.com/ARM-software/CMSIS-DSP.git

第二步、将DSP 源码包编译成.a预编译文件

cd CMSIS-DSP/Source

然后打开CMakeList.txt文件

include_directories(/home/bai/project/CMSIS-DSP/Include)

include_directories(/home/bai/project/CMSIS_5/CMSIS/Core_A/Include)

include_directories(/home/bai/project/CMSIS-DSP/PrivateInclude)

添加这几个头文件不然会报找不到文件的错误,记得替换为自己的路径

然后

cmke …

make编译之前记得使用交叉编译环境

export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

然后 make

然后你ls Source/ 就会看到
CMakeFiles cmake_install.cmake libCMSISDSP.a Makefile

此时libCMSISDSP.a 就是我们需要的文件

使用示例

如果你单独编译.c文件

创建一个CMakeList.txt 也可以使用Makefile

cmake_minimum_required(VERSION 3.15)
# 使用C99标准
set(CMAKE_C_STANDARD 99)
# 项目名称
project(CMSIS_DSP_Project C CXX ASM)

# 设置交叉编译工具链路径
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
set(CMAKE_ASM_COMPILER arm-linux-gnueabihf-gcc)
# 添加 CMSIS-DSP 头文件路径
include_directories("/home/bai/project/CMSIS-DSP/Include")
include_directories("/home/bai/project/CMSIS_5/CMSIS/Core_A/Include")
# 添加 CMSIS-DSP 静态库路径
link_directories("/home/bai/project/CMSIS-DSP/Source/Source")

# 定义你的可执行文件(以 main.c 为例)
add_executable(main_executable main.c)

# 链接 CMSIS-DSP 库和数学库
target_link_libraries(main_executable CMSISDSP m)

然后再创建一个main.c文件

#include "arm_math.h"
#include <stdio.h>

int main(void) {
    float32_t inputArray[4] = {1.0, 2.0, 3.0, 4.0};
    float32_t outputArray[4];
    arm_rfft_fast_instance_f32 S;

    // 初始化FFT实例
    arm_rfft_fast_init_f32(&S, 4);

    // 进行FFT
    arm_rfft_fast_f32(&S, inputArray, outputArray, 0);

    // 打印输出结果
    for (int i = 0; i < 4; i++) {
        printf("%f\n", outputArray[i]);
    }

    return 0;
}

如果你使用Qt

你需要在pro文件中添加

INCLUDEPATH += /home/bai/project/CMSIS-DSP/Include
INCLUDEPATH += /home/bai/project/CMSIS_5/CMSIS/Core_A/Include/
# 指定库路径
LIBS += -L/home/bai/project/CMSIS-DSP/Source/Source -lCMSISDSP
# 如果项目需要数学库,可以加入数学库链接
LIBS += -lm
#define FFT_SIZE 1024     // 设置 FFT 的点数,必须是 2 的幂

float32_t input[FFT_SIZE * 2];  // 输入数组,存放时域信号,FFT 输入是复数,因此大小为 2*FFT_SIZE
float32_t output[FFT_SIZE];     // 输出数组,用于存储 FFT 的幅度(频域数据)

void performFFT() {
    arm_cfft_instance_f32 fft_instance;

    // 初始化 FFT
    arm_cfft_init_f32(&fft_instance, FFT_SIZE);

    // 执行 FFT
    arm_cfft_f32(&fft_instance, input, 0, 1);

    // 计算频谱幅度
    arm_cmplx_mag_f32(input, output, FFT_SIZE);

    // 输出结果
    for (int i = 0; i < FFT_SIZE; i++) {
        printf("Frequency bin %d: Magnitude = %f\n", i, output[i]);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_47142657

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值