首页 > 其他分享 >初学STM32记录

初学STM32记录

时间:2024-11-22 16:30:36浏览次数:1  
标签:Project Keil 记录 STM32CubeMX STM32 点击 初学 GPIO 打开

一、硬件准备

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) 确保仿真器连接计算机,然后就可以调试运行了,Ctrl + F5 可以开启调试。

(5) 程序运行效果就是板载 LED 每秒闪烁一次。


四、系统板自救

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

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

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

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

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

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


 

标签:Project,Keil,记录,STM32CubeMX,STM32,点击,初学,GPIO,打开
From: https://www.cnblogs.com/eternalmoonbeam/p/18562506

相关文章

  • 洛谷 P1841 [JSOI2007] 重要的城市 做题记录
    前置芝士:floyd,组合数学思路因为要所有点的距离不变,所以我们需要一个全源最短路算法,理所当然的用上了floyd(下文循环顺序默认为\(k,i,j\))。我们在记录最短路长度的时候,同时记录最短路的数量\(sum\)。最后我们枚举所有三个点组成的三元组,如果有\(i\tok\toj\)的最短路,且有......
  • Python 初学者的学习指南:从入门到实践 ---亲身经历版本!!!
    前言Python因其简单易学、功能强大而成为初学者编程的首选语言。无论你是零基础的小白,还是想拓展技能的开发者,Python都能为你提供无限可能。本篇博客将为Python初学者提供一套学习方法和学习路线,帮助你在短时间内掌握Python编程的核心知识,并学以致用。学习方法明......
  • 自动批量打印文档,无需人工的 软件,指定一打印文件夹,所有丢进去的Word、PDF、图片都将被
    全自动批量打印文档指定一打印文件夹,所有丢进去的Word、PDF、图片都将被逐个自动打印,并记录打印日志、总页数,支持批量双面自动打印软件主页:http://6laohu.com使用介绍下载 全自动批量打印文档 可实时监控指定目录,如果有新增的Word、PDF、图片文件,软件将自动批量逐个打印,无需......
  • STM32/GD32/AT32 通过AT命令解析工具
    这是一个针对STM32/GD32/AT32等芯片的AT命令解析工具。其主要功能是从串口接收以“\r\n”结尾的命令数据,并将其解析为对应的命令,然后根据命令映射表调用相应的处理函数来执行特定操作。1.使用方式将串口的数据放入bsp_parseCommand函数,并且传入数组和数据长度,此函......
  • zabbix监控软件安装图文教程记录
    序言针对zabbix这个软件,我会从三个大的方向来去写,一块内容是监控项目的(如网络设备、服务器设备、网站等),一块内容是写告警的方式(如邮件、企微、飞书、短信等),后续会持续更新1.基础情况介绍1.1.安装监控软件的目的安装监控软件的目的是监控网络设备、服务器设备应用系统的......
  • 【调试记录】GT ip跑aurora 64b66b协议
    1.IP配置2.协议理解2.1变速箱Gearbox的理解64B66B编码,数据输入是64bit,输出是66bit,所以这之间存在着2bit的带宽差,Gearbox就是用来解决这种差异的,实现方式是:将66bit数据拿出来2bit先存入Gearbox,然后输出64bit.当发送32次后,用户这边暂停发送一帧,让Gearbox当中的64bit数据......
  • 动态规划部分题目代码记录
    A点击查看代码#include<iostream>#include<algorithm>usingnamespacestd;constintN=105;#definelllonglongllt,shu[N],n;intmain(){cin>>t;shu[1]=1;shu[0]=1;for(inti=2;i<82;i++)shu[i]=s......
  • STM32相关知识——DMA的基本概念与工作原理详解
    STM32相关知识——DMA的基本概念与工作原理详解目录什么是DMADMA的作用DMA与CPU的区别DMA的工作原理DMA控制器数据传输流程DMA传输模式优先级和通道管理STM32中DMA的应用外设与内存之间的数据传输内存与内存的数据传输示例应用场景数学公式数据传输速率计算总线带宽......
  • STM32定时器知识——看门狗详解
    STM32定时器知识——看门狗详解目录引言STM32看门狗概述看门狗的工作原理看门狗的主要组成4.1独立看门狗(IWDG)4.2窗口看门狗(WWDG)看门狗的主要参数5.1时钟源5.2预分频器5.3重载值看门狗的配置步骤6.1配置独立看门狗(IWDG)6.2配置窗口看门狗(WWDG)看门狗的数学公式......
  • 【linux之clickhouse的问题记录】记由于clickhouse服务内存打满导致cpu/mem都飙升然后
    在记录相关文档的过程中发现监控中关于该节点的clickhouse数据异常,随后在node节点监控中也不见该节点信息于是找到相关机器进行检查,堡垒机发现无法连接clickhouse的节点,随后找同网段的机器尝试ping一下测试连通性,随后发现无法ping通错误信息:From172.21.0.1icmp_seq=1Destin......