文章目录

  • 一. 环境
  • 二. 使用STM32CubeMX
    • 1. 安装固件库
    • 2. 工程设置
    • 3. 添加代码
  • 三. 软件调试
  • 四. 使用STLink下载程序
  • 五. 总结

一. 环境

  • 硬件:stm32f103c8t6 核心板
  • 软件:STM32CubeMX 6.3.0
  • 软件:keil5 mdk

这里使用STLink进行下载程序。

二. 使用STM32CubeMX

1. 安装固件库

若点击 Manage embedded software packages 后,出现失败,则需要随便点击其它任一选项,进行下载一些文件,比如点击 file->new project ,等下载后,在进行安装固件库。

选择自己开发板的固件库,我这里是f1的。选择版本安装,我这里已经安装过了。

2. 工程设置

  1. 点击 file -> new project 建立工程

  1. 按步骤即可。搜索型号,选择合适的型号进行工程建立

  1. 进行系统调试及基准时钟配置。点击 System Core下拉栏中的 SYS。选择debug调试接口。我选择 serial Wire。

如果你使用串口进行烧录程序,你必须选一个,否则你很可能只能烧录一次程序。

SW模式就选择serial Wire。JTAG模式就选择JTAG,4pin和5pin的区别多了一个复位引脚

stlink调试就是SW模式,jlink调试就是JTAG模式

  1. 进行时钟RCC选项配置。点击 System Core下拉栏中的 RCC。这里我都选 Crystal/Ceramic Resonator

BYPASS Clock Source(旁路时钟源)

Crystal/Ceramic Resonator(石英/陶瓷 晶振)

  1. 进行系统具体时钟配置。点击“Clock Configuration”选项栏进入时钟树配置界面。选择 PLLCLK

  1. 进行LED对应GPIO的选择及配置。

先返回 PINout&Config 选项界面,进行端口设置。

我使用 PA0PB0PC13,将端口设置位 GPIO_Output. 输出模式

左键单击引脚即可进行选择

当设置完后,可以选择System Core下拉栏中的 GPIO,进行查看引脚设置

GPIO output level:有low和high两种选择,一般选择low
GPIO mode:推挽输出和开漏输出两者模式,两者模式的区别在于推挽输出中1代表VCC,0表示GND;开漏输出中1代表高阻态,0代表GND。
GPIO Pull-up/Pull-down:输入需要上下拉,输出一般没有上下拉
Maxinum output speed: 最大的输出速度,一般选择low就可以了。

  • 配置高速:输出频率高,噪音大,功耗高; (如 配置SPI、CAN引脚,要求通信稳定,速度过低会造成输出失真、通信异常。
  • 配置低速:输出频率低,噪音小,功耗低,提高系统EMI(电磁干扰)性能;(低功耗产品会选择低)实际应用中,满足要求的情况下就低不就高。
  1. 设置完成后,点击 Project Manager 选项,进入工程设置界面,选择 Project 选项。

不管工程名称还是路径都不要有中文,否则后面编译文件会出错。

Project Name:工程名称

Project Location:点击后面的"Browse"选择你想要将生成的工程保存到哪个目录里面。

Application Structure:应用程序结构

  • Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)
  • Advanced:相反就是包含中间件,一般针对相对复杂一点的工程。

Toolchain/IDE:根据你用的编译软件进行选择 使用KEIL就选择keil的对应版本。

其他默认。

  1. Code Generator 选项可以进行默认。

  1. copy all used libraries into the project folder复制所有库文件(不管工程需要用到还是没用到)到生成的工程目录中,此做法可以使在不使用Cubemx或者电脑没有安装cubemx,依然可以按照标准库的编程习惯调用HAL库函数进行程序编写。

  2. Copy only the necessary library files只复制必要的库文件。这个相比上一个减少了很多文件。比如你没有使用CAN、SPI…等外设,就不会拷贝相关库文件到你工程下。

  3. Add necessary library files as reference in the toolchain project configuration file在工具链项目配置文件中添加必要的库文件作为参考。这里没有复制HAL库文件,只添加了必要文件(如main.c)。相比上面,没有Drivers相关文件。

  4. Generate peripheral initialization as a pair of’.c/.h’ files per peripheral每个外设生成独立的.C .H文件,方便独立管理。不勾:所有初始化代码都生成在main.c 勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。

  5. Backup previously generated files when re-generating在重新生成时备份以前生成的文件。重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。

  6. keep user code when re-generating:重新生成代码时,保留用户代码(前提是代码写在规定的位置。也就是生成工程文件中的BEGIN和END之间。否则同样会删除。后面会根据生成的工程进行说明)

  7. delete previously generated files when not re-generated:删除以前生成但现在没有选择生成的文件 比如:之前生成了led.c,现在重新配置没有led.c,则会删除之前的led.c文件。(此功能根据自身要求进行取舍)

  1. 点击 GENERATE CODE 生成代码。然后打开工程

  1. 编译无误

3. 添加代码

打开 main.c ,在while 循环下添加代码

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);    // 置1
HAL_Delay(1000); // 延时1s
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);  // 清0HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
HAL_Delay(1000); // 延时1s
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(1000); // 延时1s
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);

三. 软件调试

  1. 点击魔法棒,设置debug。勾选Use Simulator 使用软件调试。更改 Dialog DLL 以及 Parameter

Dialog DLL 设置为 DARMSTM.DLL 和 TARMSTM.DLL

Parameter 都设置为 -pSTM32F103C8
(后面是芯片型号)

  1. 点击方框内,开始调试

  1. 打开 logic analyzer窗口,进行波形分析

  1. 点击 Setup 选项

  1. 点击方框 新建

我使用了A0、B0、C13 端口

新建三个并分别填写三个端口:GPIOA_ODR.0 GPIOB_ODR.0 GPIOC_ODR.13

  1. 类型都设置为比特流。并可以选择设置各个波形颜色。

设置完就可以点击下方 Close 退出了

  1. 点击方框内 run开始

  1. 查看波形

四. 使用STLink下载程序

打开STlink驱动程序 STM32 ST-LINK Utility 进行下载程序

最终效果:

五. 总结

使用STM32CubeMX进行开发确实方便并且快捷了许多,不过熟悉软件以及固件库需要时间。

参考链接:

  1. STM32CubeMX系列教程06_Project Manager工程管理器详细说明_strongerHuang-CSDN博客

  2. STM32CUBEMX 创建流水灯工程(详细图文教程)_quanhengwen123的博客-CSDN博客_stm32cubemx流水灯

STM32F103 + STM32CubeMX实现流水灯闪烁相关推荐

  1. 8盏流水灯反向闪烁c语言,课程设计(论文)_利用8255A芯片实现流水灯闪烁设计.doc...

    课程设计(论文)_利用8255A芯片实现流水灯闪烁设计 利用8255A芯片实现流水灯闪烁设计 27 - 目录 摘要··········································· ...

  2. 基于STM32F103芯片实现LED灯闪烁

    基于STM32F103芯片实现LED灯闪烁 前言 一,寄存器配置 1,时钟控制 2,GPIO端口设置: 二.实际操作 1.具体代码 2.keil5项目运行 3.硬件的连接 4.链接到 mcuisp 串 ...

  3. 使用STM32CubeMX实现流水灯

    文章目录 一.安装STM32CubeMX (一)下载并安装 (二)安装固件库 二.流水灯实现 1. 配置时钟 2. GPIO设置 3. 项目配置 三.波形图观察 总结 参考 一.安装STM32Cube ...

  4. 流水灯闪烁(c语言)

    目录 一.实验初始化 地址映射和寄存器映射 1. 总线基地址 2. 外设基地址 3. 外设寄存器地址 4.接线 5.程序下载 二.用C语言寄存器实现流水灯 1.main.c 2.加入设备 3.编译生成 ...

  5. 实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)

    /** ****************************************************************************** * @file main.c * ...

  6. c语言流水灯定时器延时,实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)...

    /** ****************************************************************************** * @file main.c * ...

  7. 实验一 stm32F407VETx点亮流水灯

    实验一.stm32F407VETx点亮流水灯 一.前期准备 软件:STM32CubeMX,Keil(ARM) 硬件:stm32F407VETx开发板,stm32其他系列也可 二.设计指标 使电路板上的 ...

  8. 80c51流水灯汇编语言,单片机AT89C51可控流水灯课程设计报告(汇编语言).docx

    单片机AT89C51可控流水灯课程设计报告(汇编语言).docx 目录目录1第一章 课题的意义及应用2第二章 系统的总体设计32.1 设计方法32.2 数码管显示方案32.3 键盘输入方案4第三章 硬 ...

  9. c语言利用中断系统控制流水灯,基于流水灯的“微控制器应用”课程项目教学设计...

    彭远芳,张静,黄晓峰 摘 要:"微控制器應用"课程是高职应用电子技术专业核心课程,对培养学生的分析问题.解决问题能力,以及创新能力都具有十分重要的作用.但由于课程逻辑性强,与其他课 ...

最新文章

  1. linux sftp 重命名,linux下ssh/sftp配置和权限设置
  2. rpm方式安装mysql5.7.24_linux centOS 7安装mysql 5.7.24
  3. 寻找Archie服务器中的文件,Archie服务
  4. NFC Basics(基本NFC)——翻译自developer.android.com
  5. 机器学习入门的百科全书-2018年“机器学习初学者”公众号文章汇总
  6. WCF - 服务实例管理模式
  7. mysql基础知识整理_MYSQL基础知识整理
  8. stringreader_Java StringReader markSupported()方法与示例
  9. 公司管理系列--最难挖的阿里,最好挖的百度;最难走的360,最易走的腾讯
  10. 基于springboot宠物医院管理系统java源码
  11. 使用uib-tab时,获取页面输入框内容
  12. 配置keepalived实现Nginx高可用(单主、双主模式)
  13. IDEA 断点出现 no executable code found at line
  14. 泛函分析——内积空间定义的概念
  15. java list里数据用逗号结合
  16. Launcher进程启动流程
  17. 比例阀测试仪RT-T101
  18. 特征选择过滤法-方差过滤、F检验、互信息法
  19. mysql学校教务系统_java servlet+mysql开发的学校官网+教务系统+图书馆系统,功能完善,供参考学习...
  20. Kafka的命令行操作

热门文章

  1. linux mtd - mtdpart.c
  2. CXF 集成wss4j
  3. 机器学习(四):批量梯度下降法(BGD)、随机梯度下降法(SGD)和小批量梯度下降法(MBGD)
  4. 扎实的PHP编程基础,PHP的一些基础编程题
  5. 帮你分清嵌入式与单片机
  6. Android合理的使用闪屏
  7. js 面试题之---数组、字符串操作
  8. 辽宁丰睿佳业:抖音店铺选品注意事项有哪些?
  9. 常用集合转JSON字符串公共类
  10. 计算机课件制作总结,课件制作比赛活动总结范文