stm32 stlink驱动程序(stlinkv2驱动安装教程)

最近这段时间因为成谜于物联网中无法自拔,所以独自在互联网的世界中汲取着为数不多的知识,虽然教程有很多,但是实际的可以从最基础的开始写的教程并不常见,所以在自己经过很长时间的学习,在这里记录一下自己从0开始到点亮STM32F103C8T6这块小板上LED的过程。

基础环境介绍

操作系统:Ubuntu 20.04 LTS

基础软件列表

STM32CubeMX (makefile 代码生成作用)

stlink驱动

交叉编译工具 (gcc-arm-eabi)

调试接口程序 (openocd)

libusb 驱动(保证stlink正常工作)

基础软件配置1.STM32CubeMX

安装java环境sudo apt install default-jre

下载STM32CubeMX,下载链接看底部

下载的zip压缩包中,有linux和exe的版本,自行选择安装,如果碰到安装linux报错,有可能是64位系统不兼容32位程序库,安装sudo apt install libc6-i386

给linux文件执行权限sudo chmod a xSetupSTM32CubeMX-6.0.1.linux

执行安装: sudo ./SetupSTM32CubeMX-6.0.1.linux

2.stlink驱动安装

安装必备的库和编译工具

sudo apt install git make cmake libusb*

sudo apt install gcc build-essential

克隆stlink的项目文件到指定目录

git clone https://github.com/stlink-org/stlink

生成cmake并编译

cd stlink

cmake .

make

将bin目录下文件拷到系统bin目录下,拷贝udev rules文件到系统目录下

sudo cp stlink/config/udev/rules.d/49-stlinkv* /etc/udev/rules.d/

验证, 插入stlink设备,不要连接硬件目标板

lsusb, 则在列表中会显示 STMicroelectronics ST-LINK/V2

st-info –probe, 会显示找到一个stlink编程器

读,写,擦拭案例:

st-flash read dummy.bin 0 0xFFFF# 读取

st-flash write dummy.bin 0x8000000# 写入

st-flash erase# 擦除芯片内容

3.gcc-arm-none-eabi

使用apt直接安装

sudo apt install gcc-arm-none-eabi

arm-none-eabi-gcc -v测试是否安装成功

添加ppa源进行安装

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa

sudo apt update

sudo apt install gcc-arm-embedded

所有前置步骤完成后,下面开始软件的使用及项目配置环节

STM32CubeMX

配置代理:

stm32 stlink驱动程序(stlinkv2驱动安装教程)

打开软件首先配置proxy,有代理的最好先挂上代理,之后库文件下载会比较快,不然会很慢,没有代理的需要将类型设置为使用系统代理。

下载库文件:

接下来开始下载目标板所对应的库文件,这里我的板子是STM32F1系列的,所以下载对应的库文件

创建工程:

在这里有几个地方是需要提前配置的,一个是RCC时钟配置,这些都需要一点芯片的基础知识,这里只要照做就可以了,将HSE高速时钟配置成Crystal/Ceramic Resonator,LSE低速时钟不做配置

紧接着配置GPIO口,查看目标板的数据手册,可以知道PC13即C13口是直接控制主板一个LED灯的通断的,所以这里将PC13口设置为GPIO-Output

配置完成后如下所示

最后进入这个软件最后配置的环节

添加代码并编译:

使用vscode打开Core/Src/main.c 文件,在while循环中添加如下代码,作用是将13号口,进行设置/复位操作,并进行1s的延迟。

while (1) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); HAL_Delay(1000); }

保存代码后,打开Terminal,定位到项目目录下,和Makefile同级,然后执行:

make

最后会在当前目录下生成一个build文件夹,里面有产生的中间文件、hex文件、和bin文件,最后将目标板连接上stlink。

上传代码:

在Terminal中执行:

st-flash write ./build/BasicLED.bin 0x8000000

建议每次写入前先执行一个擦除操作: st-flash erase

总结:

至此,整个入门项目就结束了,起初一直在纠结于到底是用什么软件进行开发,是KD5好还是IAR好,最后发现,还是最适合自己的才是最好的,我就喜欢使用Vscode,我就是喜欢最简单的Terminal进行代码的上传,然后刚开始不了解一些STM的原理的时候很纠结STM32CubeMX到底怎么使用,后来发现,STM32CubeMX根据你项目的复杂程度进行项目的配置,比如这个项目中只需要配置GPIO13口,和高速时钟,所以在继续进行STM32的学习中,还需要学习一些基础的知识,不会让你在学习开发的过程中像只无头苍蝇。

最后,希望大家可以坚持自己所坚持的,喜欢自己所喜欢的!

STM32CubeMX链接:

https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html

发表评论

登录后才能评论