STM32cubemx教程(一)2021.10.17

简介

STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。

在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等 省去了我们配置各种外设的时间。

补充:32的三种开发模式

1.stm32能基于寄存器开发,就是和51单片机一样,直接对寄存器进行编程。基于寄存器编写的代码简练、执行效率高。但由于 STM32 微控制器的片上外设和寄存器数量太多,这种编程方式移植性差,寄存器名称记起来也很痛苦。

2.基于st官方的固件库进行开发。现在大部分stm32教程教的都是这种库函数开发,如正点原子,野火等。他相比寄存器开发更加简单,我们不需要记住每个寄存器的地址和名称,只要会调用ST官方封装好的库函数进行编程就可以了。

3.基于STM32cubemx进行开发,就是我们今天要给大家介绍的内容。STM32cubemx使用的是st官方新推出的HAL库,然后我们可以通过软件内设计好的图形化界面进行配置,软件自动生成生成配置代码,然后我们再在IDE上面codding。

那么,如何编写一个基于HAL库的简单的STM32程序?(点亮一个LED)

一.需要的软件

STM32cubemx,keil5(或者其他支持cubemx插件的ide,如clion,vscode)

二.STM32CubeMX的界面配置

首先你需要下载32的软件包,步骤如图

然后搜索芯片型号,然后新建工程(这边以STM32F103C8T6为例)

然后会出现配置界面

左边是32的片上资源,右边是GPIO引脚的配置界面

DMA控制器

参考链接

GPIO口

GPIO的工作方式有4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入
4种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能

在STM32中选用IO模式:

 上拉输入、下拉输入可以用来检测外部信号;例如,按键等;
模拟输入 ——应用ADC模拟输入,或者低功耗下省电
开漏输出一般应用在I2C、SMBUS通讯等需要"线与"功能的总线电路中。推挽输出模式一般应用在输出电平为0和3.3伏而且需要高速切换开关状态的场合。在STM32的应用中,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。
复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)
复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

IO口学习参考链接

NVIC(嵌套向量中断控制器)

进行中断优先级分组

RCC(时钟)

设置你的时钟源,32有五个时钟源

时钟树学习参考这篇blog,写的很清楚

也可以参考正点原子视频第19讲

IWDG(独立看门狗)WWDG(窗口看门狗)

看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。


回到正题,点灯只需要用到RCC配置,GPIO配置

将外部高速时钟(HSE)配置为Crystal/Ceramic Resonator(晶体/陶瓷谐振器),外部低速时钟(LSE)用不到,可以不配置

配置GPIO

然后点击clock configuration配置时钟树。

然后点击generate code,点击open project

编译没有报错,可以用用串口将hex文件烧入单片机中,也可以直接使用JATG或SWD烧录

补充:单片机的三种烧录模式ICP,IAP,ISP

ICP:使用SWD接口进行烧录,如J-Link烧录器和J-Flash软件配合使用。
ISP:使用引导程序(Bootload)加上外围UART/USB等接口进行烧录。
IAP:软件自身实现在线电擦除和编程的方法,不使用任何工具。程序通常分成两块,分别为引导程序和应用程序。

详情参考链接

STM32cubemx教程及STM32入门(一)相关推荐

  1. STM32cubemx教程及STM32入门(五)IIC

    STM32cubemx教程及STM32入门(五)IIC 2022.8.25 前言 本章主要讲解IIC协议以及stm32cubemx配置和HAL库函数 简介 I2C(Inter-Integrated C ...

  2. micropython安装ros_ROS2与STM32入门教程-microROS的linux版本

    ROS2与STM32入门教程-micro_ros的linux版本 说明: 介绍如何安装使用micro_ros 步骤: 安装ros2版本foxy,查看教程 加载ros2环境 source ~/ros2_ ...

  3. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(二)

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 上一讲我们说了CubeMX配置SDRAM的一些基本配置,还有FMC跟SDRAM的讲解,这一讲我们 ...

  4. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 本文 1首先讲解什么是FMC及SDRAM,W9825G6KH芯片原理,2基于CubeMx创建工程 ...

  5. 【STM32】HAL库 STM32CubeMX教程十四---SPI

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 在我们的HAL库中,对硬件SPI函数做了很好的集成,使得之前SPI几百行代码,在HAL库中,只需 ...

  6. 【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...

  7. 【STM32】HAL库 STM32CubeMX教程十---DAC

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...

  8. 【STM32】HAL库 STM32CubeMX教程九---ADC

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...

  9. 【STM32】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 在之前的标准库中,STM32的硬件IIC非常复杂,更重要的是它并不稳定,所以都不推荐使用. 但是 ...

  10. 基于Proteus无实物STM32入门自学教程(二)--LED流水灯

    本教程面向新手,前期没有用到stm32的内部库,源程序尽量使用单文件.方便从51直接转过来的同学有个适应期.proteus仿真stm32总所周知没有51仿真的那么完美.笔者在51年代进行仿真时基本与实 ...

最新文章

  1. 5G 信令流程 — 5GC 的注册管理(RM,Registration Management)
  2. 每周分享五个 PyCharm 使用技巧(四)
  3. Python(4)--Pycharm安装、使用小技巧
  4. 类进阶学习目标 java 1614957028
  5. mqadmin命令运行出错
  6. 一个数如果刚好与它所有的真因子之和相等,则称该数为一个“完数
  7. mysql 查看autocommit_手把手教你分析Mysql死锁问题
  8. Java图形编程实验总结_实验二java图形界面编程2015级.doc
  9. Win10 不火不行!Edge 无缝兼容 Chrome扩展
  10. this kernel requires an x86-64 CPU, but only detected an i686 CPU
  11. 怎么给图片加水印?四个步骤搞定
  12. 虚拟内存设置在其他盘引发的问题(待解决)
  13. 关于求职及面试的一些小技巧
  14. 微信文章爬虫demo -- 综合实验和练习
  15. linux高性能集群搭建,sge linux高性能集群的搭建与使用
  16. Go语言学习培训靠谱吗
  17. SpringBoot Actuator 健康监测
  18. 2021年起重机司机(限桥式起重机)考试试题及起重机司机(限桥式起重机)操作证考试
  19. linux 快速找出上个命令,Linux 命令行快捷操作键
  20. Mysql数据库管理系统原理及基本操作

热门文章

  1. word三线表标题两条线之间如何出现空白间隔(论文必备)
  2. 9个主流影视站手机仿站源码分享 v1.0
  3. fft 窗函数特性对比
  4. 话题热议:有没有能替代Excel的数据处理软件?
  5. 金万维异速联再出大杀器 掀移动应用普及化年终热浪
  6. Mathematic Mac 中文版的下载和破解
  7. 如何修改已编译的dll文件
  8. 1元云购网站建设,一元云购网站制作,夺宝网站定制公司,一元云购源码开发
  9. Linux中安装JDK并配置环境变量
  10. SSH隧道putty使用