我正在使用 STM32CubeIDE 开发一个带有 STM32C031C6 微控制器的嵌入式项目。我的目标是对 ADC 输入数据执行 FFT 并通过 UART 传输结果。我正在利用 ARM CMSIS-DSP 库进行 FFT 处理。
以下是我的项目的详细信息:
微控制器:STM32C031C6 工具链:STM32CubeIDE 1.15.1 编译器:arm-none-eabi-gcc 12.3.1 CMSIS-DSP:使用arm_rfft_instance_q15和arm_cmplx_mag_q15进行FFT计算 外设:ADC(带 DMA)和 UART
当我尝试编译项目时出现问题。我收到以下错误: arm-none-eabi-gcc -o "FFT.elf" @"objects.list" -larm_cortexM0l_math -mcpu=cortex-m0plus -T"STM32C031C6TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="FFT .map" -Wl,--gc-sections -static -L"Lib" --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--起始组 -lc -lm -Wl,--结束组 C:/.../ld.exe: FFT.elf 部分
.rodata' will not fit in region
FLASH'
C:/.../ld.exe: 区域“FLASH”溢出 63696 字节
collect2.exe:错误:ld 返回 1 退出状态
make: *** [makefile:64: FFT.elf] 错误 1
这意味着该程序对于您的MCU来说太大了。
您的 MCU 是 STM32 系列中最便宜、最简单、最小的。
它具有小FLASH、小RAM,并且没有FPU和入门级ARM内核。这些 MCU 并不是为承担繁重的 DSP 工作而设计的。你需要多花一点钱,选择资源和FPU更多的MCU。