普冉PY32单片机CLion开发环境配置
本文档旨在指导开发人员使用JetBrains CLion搭建普冉半导体PY32系列单片机的开发环境,并以PY32F030型号为例进行详细说明。选择CLion作为主要开发工具基于以下考虑:- 开发效率提升:相较于Keil μVision等传统嵌入式IDE,CLion提供更强大的代码编辑、智能补全、实时错误检查和重构功能,能够显著提高代码编写和调试效率。
概述
本文档说明用JetBrains CLion搭建普冉半导体PY32系列单片机的开发环境的基本步骤,以PY32F030型号为例进行详细说明。
选择CLion作为主要开发工具基于以下考虑:
- 开发效率提升:相较于Keil μVision等传统嵌入式IDE,CLion提供更强大的代码编辑、智能补全、实时错误检查和重构功能,能够显著提高代码编写和调试效率。
- 现代化开发支持:CLion支持集成各类AI代码辅助插件(如JetBrains AI Assistant),为代码生成、解释和优化提供智能建议,该功能在Keil μVision环境中难以实现。
本文档将详细说明从工具链配置、工程创建、编译调试到利用CLion进行高效开发的完整流程,以提供标准化、可复用的开发环境配置方案。
软件安装
Clion
从 JetBrains官网下载并安装,本文以2025.2.1为例。
PY32_GCC_SDE
这是普冉公司对于PY32系列单片机的GCC软件开发环境工具包,内容包含了交叉编译工具链、SDK、openocd以及相关配置文件,这是关键的工具包,可以从官网下载。
安装时注意:安装路径不要包含空格,以尽量避免潜在的问题,例如:安装路径设置为`C:\PuyaSDE`。安装完成后,会自动将必要的路径添加到环境变量中。
在Clion中进入设置界面,在“构建、执行、部署”栏的“工具链”页面中,点击“+”,添加工具链,配置如下:
- 名称:可以自行指定。
- C编译器:配置为通过PY32_GCC_SDE安装的编译器。
- C++编译器:配置C编译器后,会自动检测。
- 调试器:配置为通过PY32_GCC_SDE安装的调试器。
- 其它内容可以保留默认值。
项目配置
本文以PY32_GCC_SDE附带的PY32F0xx_Firmware_V1.4.7为例,说明创建和配置项目的过程,可据此自行修改,建立自己的项目。
创建项目
文件准备
- 建立一个项目文件夹。
- 复制`PY32F0xx_Firmware_V1.4.7\Templates\PY32F030xx_Templates`下的Src和Inc文件夹到项目文件夹。
- 复制`PY32F0xx_Firmware_V1.4.7`下的Drivers文件夹到复制到项目文件夹。
- 复制链接文件:从PY32_GCC_SDE安装目录下的`sdk\ld`文件夹复制py32f030x8.ld到项目文件夹。
- 复制启动文件:从PY32_GCC_SDE安装目录下的`sdk\startup`文件夹复制startup_py32f030xx.s到项目文件夹。
新建项目
- 在Clion中新建项目,位置选择前面建立的项目文件夹,语言标准选择C11。
- 项目类型选择C可执行文件。
- 点击“创建”按钮,在弹出的对话框中点击“从现有的源创建”。
- 新建项目后,删除自动创建的main.c文件。
添加CMake配置
- 进入配置,在“构建、执行、部署”栏的CMake界面中,单击“+”,添加配置文件。
- 名称可以自行指定,构建类型选择“Debug”,工具链选择前面创建的工具链。
修改CMakeLists.txt
删除原有内容,添加以下内容。
# CMakeLists.txt
cmake_minimum_required(VERSION 3.20)
project(demo_project C CXX ASM)set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)# 处理器和浮点单元设置
set(MCU_CPU "-mcpu=cortex-m0plus")
set(MCU_THUMB "-mthumb")
set(CPU_FLAGS "${MCU_CPU} ${MCU_THUMB}")
set(FPU_FLAGS "")# debug设置
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g")
set(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -g")# 全局编译flags
set(CMAKE_C_FLAGS "${CPU_FLAGS} -fdata-sections -ffunction-sections -Og -Wall -g -gdwarf-2")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")# 编译启动汇编代码选项,缺少会报错!
set(CMAKE_ASM_FLAGS "${CPU_FLAGS} -x assembler-with-cpp -DUSE_HAL_DRIVER -DPY32F030x8")# 目标芯片
add_definitions(-DUSE_HAL_DRIVER -DPY32F030x6)# 链接选项
set(LD_SCRIPT ${CMAKE_SOURCE_DIR}/py32f030x8.ld)
set(CMAKE_EXE_LINKER_FLAGS "${CPU_FLAGS} -T${LD_SCRIPT} ${MCU_SPECS} -Wl,--gc-sections -Wl,-Map=${PROJECT_NAME}.map")# 添加头文件包含目录
include_directories(
Inc
Drivers/PY32F0xx_HAL_Driver/Inc
Drivers/CMSIS/Device/PY32F0xx/Include
Drivers/CMSIS/Core/Include
Drivers/CMSIS/Include
)# 自动包含Src目录和Drivers目录下的所有源文件
file(GLOB_RECURSE SRC_FILES
Src/*.c
Drivers/PY32F0xx_HAL_Driver/Src/*.c
)# 查找汇编启动文件
file(GLOB_RECURSE ASM_FILES
startup_py32f030xx.s
)# 汇编启动文件
set(STARTUP_ASM_SOURCE "startup_py32f030xx.s")add_executable(${PROJECT_NAME}
${SRC_FILES}
${STARTUP_ASM_SOURCE}
)# 设置输出目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)# 添加自定义目标用于生成二进制和hex文件
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_OBJCOPY} -O binary $<TARGET_FILE:${PROJECT_NAME}> ${PROJECT_NAME}.bin
COMMAND ${CMAKE_OBJCOPY} -O ihex $<TARGET_FILE:${PROJECT_NAME}> ${PROJECT_NAME}.hex
COMMAND ${CMAKE_SIZE} $<TARGET_FILE:${PROJECT_NAME}>
COMMENT "Generating binary and hex files"
)
交叉编译配置
建立交叉编译工具链文件
在项目根目录下建立名为toolchain-arm-none-eabi.cmake的文件,内容如下。
# 设置目标系统为通用嵌入式系统
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR ARM)set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_OBJCOPY arm-none-eabi-objcopy)
set(CMAKE_SIZE arm-none-eabi-size)
# 此项必须,否则Clion加载配置文件会失败。
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
指定叉编译工具链文件
- 进入设置,进入“构建、执行、部署”栏的CMake配置界面。
- 在“CMake选项中”输入:-DCMAKE_TOOLCHAIN_FILE=toolchain-arm-none-eabi.cmake
编译
- 在Clion主界面底部左侧栏中点击CMake按钮,在工具栏中点击“重新加载CMake项目”。
- 在菜单栏中依次点击:构建、构建项目,应该可以成功编译。
调试配置
配置OpenOCD路径
- 进入设置,点击“构建、执行、部署”栏的“嵌入式开发”。
- 在“OpenOCD位置”中,输入PY32_GCC_SDE安装路径下的OpenOCD可执行文件路径,例如:`C:\PuyaSDE\openocd\bin\openocd.exe`。
OpenOCD配置
采用ST-Link作为调试工具。在项目根目录下建立OpenOCD配置文件,内容如下。
# py32f030_openocd.cfg
# 指定调试探头接口
source [find interface/stlink.cfg]# 设置适配器速度
adapter speed 500# 指定目标芯片
source [find target/py32f030.cfg]# 此项必须注释掉,否则无法进行调试!
#reset_config srst_only# 连接后执行的初始化脚本
$_TARGETNAME configure -event reset-init {
# 确保复位后立即暂停
halt
echo "*** Target halted after reset ***"
}
运行/调试配置
- 依次点击菜单栏上的“运行”、“编辑配置”,进入运行/调试配置界面。
- 点击“+”,添加新配置,选择“OpenOCD下载并运行”。
- 目标和可执行文件:都选择编译生成的文件。
- 调试器:选择PY32_GCC_SDE安装目录下的调试器。
- 面板配置文件:选择前面建立的文件。
- 重置:选择“停止”。
完成后,可以删除现有的自动生成的运行配置,只留新建的配置。
调试
开始调试
- 将ST-Link连接到目标板,上电。
- 在代码中设置断点。
- 在工具栏中点击“调试”按钮,应该会先下载固件,然后自动运行到断点。
加载SVD文件
- 在调试工具栏中,点击“外设”。
- 点击界面上的“加载.svd文件”,在PY32_GCC_SDE的安装目录下的svd文件夹中,找到目标芯片的svd文件。
- 在弹出的“选择要显示的外设”界面中,勾选最顶部的svd文件名,选择所有外设, 然后关闭界面。
- 在调试界面的“外设”标签页,即可看到各外设的寄存器值。
更多推荐
所有评论(0)