目录
1、stlink 下载F4程序失败报错
Error: timed out while waiting for target halted
embedded:startup.tcl:1473: Error: ** Unable to reset target **
in procedure 'program'
in procedure 'program_error' called at file "embedded:startup.tcl", line 1510
at file "embedded:startup.tcl", line 1473
首先配置板子的时候不要选择cfg,之后去图1配置Board config file,cfg去D:\software_code\Embedded\OpenOCD\share\openocd\scripts\board找到F4,之后将cfg里面的reset_config srst_only
改为reset_config none,即可下载成功
图1 配置界面
2、Clion的文字、背景、界面大小设置
首先界面这些肯定在设置里面找,最好找的是代码大小的配置在setting中如图2所示,还有就是整个界面大小还有背景的设置,在appearance里面,如图3所示,最后就是图4所示的鼠标滑轮调整字体大小的设置。
图2 代码大小设置界面
图3 界面设置与背景设置
图4 调整字体快捷键设置
3、Clion 嵌入式开发过程中添加头文件与源文件
需要在CMakeLists.txt中添加,在include_directories中添加头文件,在file里面加源文件,需要注意set中的代码不能改变,如果改变了需要删除否则报错。
include_directories(Core/Inc
Drivers/STM32F4xx_HAL_Driver/Inc
Drivers/STM32F4xx_HAL_Driver/Inc/Legacy
Drivers/CMSIS/Device/ST/STM32F4xx/Include
Drivers/CMSIS/Include
User/APP
User/Framework
User/MCUDriver
User/RTT
User/Function
User/PeripheralsDriver
)
add_definitions(-DDEBUG -DUSE_HAL_DRIVER -DSTM32F407xx)
file(GLOB_RECURSE SOURCES
"Core/*.*"
"Drivers/*.*"
"User/APP/*.*"
"User/Framework/*.*"
"User/Function/*.*"
"User/MCUDriver/*.*"
"User/RTT/*.*"
"User/PeripheralsDriver/*.*"
)
set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32F407VETX_FLASH.ld)
4、Clion中的芯片不是我想要的
需要用cubemx重新生成一个和文件名字一模一样的ioc来替换原来的ioc。
图5 替换ioc
5、环境突然配置坏了一直报错
File-NEWproject生成一个一模一样的工程来重置工程,再用cubemx generate 一下生成新的ioc就相当重置工程了,当然之前添加的路径都会没有了,所以重置之前需要先复制一下之前的头文件源文件路径。
6、Clion 添加DSP库失败
需要添加其他的库,首先是cubemx不能拷贝所有的库,其次是库复制到Clion时不能识别与添加,如图6。后续更是报错无数,解决方法为降低cubemx版本使用古老的cubemx,古老到可以生成SW4STM32的版本,当你使用cube IDE作为Toolchain时,只能添加必要的库而无法添加其他库。
或者手动复制库,然后在cmake里面添加link,还没试不知道行不行,
图6 无法识别库
In file included from D:\software_code\Embedded\blushless\op_FOC\Drivers\CMSIS\Device\ST\STM32F4xx\Include/stm32f407xx.h:166,
from D:\software_code\Embedded\blushless\op_FOC\Drivers\CMSIS\Device\ST\STM32F4xx\Include/stm32f4xx.h:132,
from D:\software_code\Embedded\blushless\op_FOC\Drivers\STM32F4xx_HAL_Driver\Inc/stm32f4xx_hal_def.h:29,
from D:\software_code\Embedded\blushless\op_FOC\Drivers\STM32F4xx_HAL_Driver\Inc/stm32f4xx_hal_rcc.h:27,
from D:\software_code\Embedded\blushless\op_FOC\Core\Inc/stm32f4xx_hal_conf.h:274,
from D:\software_code\Embedded\blushless\op_FOC\Drivers\STM32F4xx_HAL_Driver\Inc/stm32f4xx_hal.h:29,
from D:\software_code\Embedded\blushless\op_FOC\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c:36:
D:\software_code\Embedded\blushless\op_FOC\Drivers\CMSIS\Include/core_cm4.h:2052:25: error: declaration for parameter 'ITM_RxBuffer' but no such parameter
2052 | extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */
| ^~~~~~~~~~~~
In file included from D:\software_code\Embedded\blushless\op_FOC\Drivers\CMSIS\Include/core_cm4.h:1960,
from D:\software_code\Embedded\blushless\op_FOC\Drivers\CMSIS\Device\ST\STM32F4xx\Include/stm32f407xx.h:166,
from D:\software_code\Embedded\blushless\op_FOC\Drivers\CMSIS\Device\ST\STM32F4xx\Include/stm32f4xx.h:132,
from D:\software_code\Embedded\blushless\op_FOC\Drivers\STM32F4xx_HAL_Driver\Inc/stm32f4xx_hal_def.h:29,
from D:\software_code\Embedded\blushless\op_FOC\Drivers\STM32F4xx_HAL_Driver\Inc/stm32f4xx_hal_rcc.h:27,
from D:\software_code\Embedded\blushless\op_FOC\Core\Inc/stm32f4xx_hal_conf.h:274,
from D:\software_code\Embedded\blushless\op_FOC\Drivers\STM32F4xx_HAL_Driver\Inc/stm32f4xx_hal.h:29,
from D:\software_code\Embedded\blushless\op_FOC\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c:36:
D:\software_code\Embedded\blushless\op_FOC\Drivers\CMSIS\Include/mpu_armv7.h:183:3: error: declaration for parameter 'ARM_MPU_Region_t' but no such parameter
183 | } ARM_MPU_Region_t;
| ^~~~~~~~~~~~~~~~
7、Clion开发FreeRTOS遇到的错误
报错内容:
C:\Users\ADMINI~1\AppData\Local\Temp\ccznsDp0.s: Assembler messages:
C:\Users\ADMINI~1\AppData\Local\Temp\ccznsDp0.s:529: Error: selected FPU does not support instruction -- `vstmdbeq r0!,{s16-s31}'
C:\Users\ADMINI~1\AppData\Local\Temp\ccznsDp0.s:551: Error: selected FPU does not support instruction -- `vldmiaeq r0!,{s16-s31}'
mingw32-make[3]: *** [CMakeFiles\F4_FreeRTOS_demo.elf.dir\build.make:508: CMakeFiles/F4_FreeRTOS_demo.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c.obj] Error 1
mingw32-make[3]: *** Waiting for unfinished jobs....
[ 92%] Building C object CMakeFiles/F4_FreeRTOS_demo.elf.dir/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c.obj
mingw32-make[2]: *** [CMakeFiles\Makefile2:82: CMakeFiles/F4_FreeRTOS_demo.elf.dir/all] Error 2
mingw32-make[1]: *** [CMakeFiles\Makefile2:89: CMakeFiles/F4_FreeRTOS_demo.elf.dir/rule] Error 2
mingw32-make: *** [Makefile:123: F4_FreeRTOS_demo.elf] Error 2
解决方法
修改Cmake