STM32F1平台导入RDK库教程

STM32F1平台导入RDK库教程

创建Clion工程

打开STM32CubeMX,点击"ACCESS TO MCU SELECTOR"。
在这里插入图片描述
在“Commercial Part Number”中选择目标平台,这里以STM32F103C8T6为例。
在这里插入图片描述
选择“STM32F103C8T6”,点击“Star Project”。
在这里插入图片描述
在这里插入图片描述
在“System Core”->“SYS”->"Debug"选项中选择“Serial Wire”串口调试。
在这里插入图片描述
在“System Core”->“RCC”->"High Speed Clock(HSE)"选项中选择"Crystal/Ceramic Resonator"使用开发板上的外部晶振作为HSE时钟源。如果没有设置这个选项就会使用芯片的内置RC振荡器,时钟频率不稳定。
在这里插入图片描述
点击"Clock Configuration"进入时钟树配置界面。在"System Clock Mux"中选择“HSE”,HCLK(MHz)中输入72并按回车。

在这里插入图片描述
在这里插入图片描述
点击“OK”。
在这里插入图片描述
设置完的界面如下图所示。
在这里插入图片描述
点击“Project Manager”。
在这里插入图片描述
在“Project Name”中输入工程的名称,比如“Demo”。“Project Location”则是项目的保存路径。然后把“Toolchain/IDE”选项改成“STM32CubeIDE”。
在这里插入图片描述
点击“Code Generator”,勾选“Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral”。为每个外设生成一对’ .c/.h '文件。
在这里插入图片描述
最后点击“GENERATE CODE”生成工程代码。
在这里插入图片描述
点击“Close”关闭这个提示框。
在这里插入图片描述

使用Clion打开工程

打开Clion,在“Welcome to CLion”界面点击“Open”按钮或者在菜单栏中单击“File”选择“Open…”。
在这里插入图片描述
在这里插入图片描述
选择刚才创建的工程目录。以/Users/mac/CLionProjects/Demo为例,选择Demo文件夹,然后点击“Open”。
在这里插入图片描述
第一次打开工程会弹出“Open Project Wizard”界面。
在这里插入图片描述
勾选“Reload CMake project on editing CMakeLists.txt”。在CMakeLists.txt文件发生变更时重新加载CMake工程,否则就需要在Clion中手动右键项目根目录文件夹选择“Reload CMake Project”。

在这里插入图片描述
点击“+”添加Release编译选项。
在这里插入图片描述
点击右下角的“OK”完成项目向导设置。
在这里插入图片描述
此时会弹出“Board Config Files”界面选择OpenOCD烧录配置文件。
在这里插入图片描述
在列表中找到“stm32f4discovery.cfg”模版,点击“Copy to Project & Use”。
在这里插入图片描述
在Project项目文件树中找到“stm32f4discovery.cfg”并打开。
在这里插入图片描述
打开后显示如下。
在这里插入图片描述
将文件内容改成:

# SPDX-License-Identifier: GPL-2.0-or-later

# This is an STM32F4 discovery board with a single STM32F407VGT6 chip.
# http://www.st.com/internet/evalboard/product/252419.jsp

source [find interface/stlink.cfg]

transport select hla_swd

source [find target/stm32f1x.cfg]

一定要注意把13行中的"stm32f4x.cfg"改成"stm32f1x.cfg"。不然用stlink无法烧录。
在这里插入图片描述
如果出现找不到"arm-none-eabi-gcc"交叉编译器,则说明没有将交叉编译器的路径添加到PATH环境变量中。

在这里插入图片描述
解决办法:
点击菜单栏“CLion”选择“Settings…”。
在这里插入图片描述
在“Build,Execution,Deployment”中点击“CMake”。
在这里插入图片描述
点击“Edit environment variables”编辑环境变量。
在这里插入图片描述
在PATH变量末尾加上交叉编译器bin目录。
在这里插入图片描述这里的目录是你自己安装的arm交叉编译器bin目录,里面包含很多可执行程序。
在这里插入图片描述
设置完后点击“OK”关闭界面就不会出现红色报错。
在这里插入图片描述

导入RDK库

下载RDK库,点击“Download ZIP”就能以压缩包的形式下载。
在这里插入图片描述
在这里插入图片描述
进入"platforms"->“stm32f1"文件夹。
在这里插入图片描述
复制"stm32f1"文件夹下的“rdk”文件夹到clion工程根目录。
在这里插入图片描述
点击“OK”。
在这里插入图片描述
导入后可能会提示当前文件不属于该项目,暂时先不用管。
在这里插入图片描述
在工程根目录中有2个CMakeLists,其中"CMakeLists.txt"是由"CMakeLists_template.txt"模版生成,我们需要编辑模版让cmake识别rdk库。
在这里插入图片描述
打开cmake模版,修改48行,将 include_directories(${includes}) 改成 include_directories(. ${includes})
在这里插入图片描述
编辑52行,在)号前面加上"rdk/.
在这里插入图片描述
其实也就编辑这2处

include_directories(. ${includes})
file(GLOB_RECURSE SOURCES ${sources} "rdk/*.*")

编辑后的模版文件如下:

#${templateWarning}
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_VERSION 1)
${cmakeRequiredVersion}
# specify cross compilers and tools
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_AR arm-none-eabi-ar)
set(CMAKE_OBJCOPY arm-none-eabi-objcopy)
set(CMAKE_OBJDUMP arm-none-eabi-objdump)
set(SIZE arm-none-eabi-size)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

# project settings
project(${projectName} C CXX ASM)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 11)

#Uncomment for hardware floating point
#add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING)
#add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)
#add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)

#Uncomment for software floating point
#add_compile_options(-mfloat-abi=soft)

add_compile_options(-mcpu=${mcpu} -mthumb -mthumb-interwork)
add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0)

# uncomment to mitigate c++17 absolute addresses warnings
#set(CMAKE_CXX_FLAGS "$${CMAKE_CXX_FLAGS} -Wno-register")

if ("$${CMAKE_BUILD_TYPE}" STREQUAL "Release")
    message(STATUS "Maximum optimization for speed")
    add_compile_options(-Ofast)
elseif ("$${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo")
    message(STATUS "Maximum optimization for speed, debug info included")
    add_compile_options(-Ofast -g)
elseif ("$${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel")
    message(STATUS "Maximum optimization for size")
    add_compile_options(-Os)
else ()
    message(STATUS "Minimal optimization, debug info included")
    add_compile_options(-Og -g)
endif ()

include_directories(. ${includes})

add_definitions(${defines})

file(GLOB_RECURSE SOURCES ${sources} "rdk/*.*")

set(LINKER_SCRIPT $${CMAKE_SOURCE_DIR}/${linkerScript})

add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=$${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.map)
add_link_options(-mcpu=${mcpu} -mthumb -mthumb-interwork)
add_link_options(-T $${LINKER_SCRIPT})

add_executable($${PROJECT_NAME}.elf $${SOURCES} $${LINKER_SCRIPT})

set(HEX_FILE $${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.hex)
set(BIN_FILE $${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.bin)

add_custom_command(TARGET $${PROJECT_NAME}.elf POST_BUILD
        COMMAND $${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:$${PROJECT_NAME}.elf> $${HEX_FILE}
        COMMAND $${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:$${PROJECT_NAME}.elf> $${BIN_FILE}
        COMMENT "Building $${HEX_FILE}
Building $${BIN_FILE}")

然后重新回到STM32CubeMX中点击“GENERATE CODE”重新生成代码,此时就会根据模版文件重新生成CMakeLists.txt文件。
在这里插入图片描述
此时就不会出现当前文件不属于当前项目的警告了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值