初学STM32记录

一、硬件准备

1. 物品采购

(1) STM32F103C6T6 最小系统板

(2) STLink 仿真器(一般会随机赠送几条母对母杜邦线,若没有请购买)

(3) 一台计算机

2. 线路连接

(1) 将STM32系统板的VCC3V3、SWDIO、SWDCLK、GND这几个端口通过杜邦线连接到仿真器对应端口。

(2) 调试时将仿真器USB接口插入计算机相应位置。


二、软件准备

1. 下载软件

(1) Keil MDK

(2) STM32F1固件库

(3) Keil 注册机

(4) STM32CubeMX 最新版本

(5) STLink 驱动程序 (STLink Utility)

2. 安装 Keil MDK

(1) 默认安装即可,需要填写任何信息都可以随便写。

(2) 注意安装路径不要有中文,本文提及所有软件安装路径都不要有中文。

3. 导入固件库

(1) Keil 固件库管理模块位于窗口主菜单栏的“Project”下拉“Manage”->"Pack Installer",打开它。

(2) 在固件库管理界面,点开窗口主菜单栏“File”,单击“Import”,并选择固件库文件导入。

4. 破解 Keil

(1) 打开Keil,点开窗口主菜单栏“File”,再单击“License Management”,在弹出的界面右上角复制CID。

(2) 打开注册机,将刚刚复制的CID粘贴过来,右边的的“Target”下拉栏选“ARM”,点击下方的“Generate”,复制下方的序列号。

(3) 回到Keil刚才的证书管理界面,粘贴序列号到下方的“New License ID Code (LIC)”文本框,点击右侧按钮“Add LIC”,完成。

5. 安装 STM32CubeMX

注意必须要先在官网注册一个账号,然后在程序上登录,才能正常使用所有功能。

6. 下载芯片库

(1) 打开 STM32CubeMX 软件,点开窗口主菜单栏的“Help”,下拉栏中选择“Manage embedded software packages”。

(2) 在新弹出的界面中找到“STM32F1”系列,点开之后勾选最新一项,单击右下方的“Install”,等待完成。

7. 安装 STLink Utility

默认安装即可。


 三、进行实验

1. 创建工程

作为初学者,用 Keil 从零开始直接新建一个STM32工程难度过高,这样就需要借助 STM32CubeMX 的工程模板来创建,只需要配置一些属性就可以轻松完成。

(1) 打开STM32CubeMX,点击窗口主菜单栏的“File”,下拉栏中选择“New Project”,弹出新页面。

(2) 在左上角“Commercial Part Number”文本框中搜索用到的芯片型号STM32F103C6T6A,搜索结果会显示在右边列表,此时既可双击搜索结果,也可点击右上角“Start Project”。

2. 配置工程属性

(1) 开始在 STM32CubeMX 中配置工程属性,首先映入眼帘的是“Pinout & Configuration”选项卡,左侧点开“System Core”,选择“SYS”,会展开新界面。

(2) 新界面中“Mode”栏目中,将“Debug”设为“Sieral Wire”。若不慎遗漏此步骤,极有可能在烧录代码时触发 flash 写保护,将导致计算机无法正常连接系统板,详见本文第四节。

(3) 将“SYS”界面闭合,看向右侧的芯片引脚图,左键点击对应板载灯的引脚,将其设为“GPIO_Output”,我的板子是PC13这个引脚,具体可查看系统板原理图。

(4) 切换选项卡至“Project Manager”,左侧“Project”选项最先配置,在右侧“Project Location”中指定工程所在文件夹的位置。

(5) 在“Project Name”文本框中输入项目名称,随后在“Toolchain / IDE”选项中选择“MDK-ARM”,切换左侧选项至“Code Generator”。

(6) 选项组“STM32Cube MCU packages and embedded software packs”中点选“Copy all used libraries into the project folder”。

(7) 点击右上角“GENERATE CODE”生成代码。

3. 调试代码

(1) 找到创建工程的文件夹,然后打开工程名字的文件夹,再打开“MDK-ARM”文件夹,双击打开唯一的.uvprojx后缀的文件,就使用 Keil 打开了工程。

(2) 左侧打开工程文件夹下的“Application/User/Core”文件夹,双击打开“main.c”,找到“while(1)”代码段,在其中填写如下内容:

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(500);

(3) 参数调用是根据原理图来的,因为我的板载 LED 是对应 PC13 引脚,所以要用 GPIOC 和 GPIO_PIN_13,延时函数参数单位是毫秒。

(4) 在烧录程序之前,必须先编译程序确保没有语法错误,在编译时若提示编译器版本不可用等字样,则需要在项目属性中设置编译器版本。

(5) 确保仿真器连接计算机,然后就可以调试运行程序了,程序运行效果就是板载 LED 每秒闪烁一次。


四、系统板自救

创建工程时,若遗忘设置 Debug 模式,则可能触发芯片的 flash 写保护,导致无法正常调试。自救步骤如下:

(1) 确保硬件连接正常的情况下,打开 STLink Utility,窗口工具栏点击”Settings“(扳手图标),弹出新窗口。

(2) "Mode"选择”Connect Under Reset“,点击”OK“,窗口关闭,回到主窗口。

(3) 按住板上 RESET 键不松手,同时点击主窗口工具栏的”Connect“(插头图标),然后松开 RESET 键。

(4) 点击主窗口工具栏的”Full chip erase“(橡皮图标),就擦除了 flash 内数据,同时解开了写保护锁。

(5) 不成功就反复尝试多次。


 

posted @ 2024-11-22 16:37  永恒月华  阅读(8)  评论(0编辑  收藏  举报