从零使用新版STM32cubeMX配置STM32单片机
我曾经写过一篇cubemx的配置教程,最近使用新版发现ui布局跟以前区别很大,而且上一篇也写的不是很详细。
0.为什么使用HAL库
转载自: https://blog.csdn.net/xuzhexing/article/details/90137754
通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的。一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配置寄存器进行开发。
一、直接配置寄存器
不少先学了51的朋友可能会知道,会有一小部分人或是教程是通过汇编语言直接操作寄存器实现功能的,这种方法到了STM32就变得不太容易行得通了,因为STM32的寄存器数量是51单片机的十数倍,如此多的寄存器根本无法全部记忆,开发时需要经常的翻查芯片的数据手册,此时直接操作寄存器就变得非常的费力了。
二、标准库
上面也提到了,STM32有非常多的寄存器,而导致了开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的。在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。
三、HAL库
HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。库如其名,很抽象,一眼看上去不太容易知道他的作用是什么。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴,注意是相通外设,意思也就是不能无中生有,例如F7比F3要多几个定时器,不能明明没有这个定时器却非要配置,但其实这种情况不多,绝大多数都可以直接复制粘贴。而且使用ST公司研发的STMcube软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件,非常方便
0.1. 安装STM32cubeMX
cubeMX需要JAVA环境,因此先要安装JAVA(64位系统建议64位版),之后再在官网上自行下载安装cubeMX
cubeMX和cubeIDE都是免费软件,不需要破解激活
1.安装所需的软件包
点击右侧INSTALL按照单片机型号安装所需的最新软件包,我使用的是F1系列
2.选择具体单片机型号
在首页点击ACCESS TO MCU SELECTOR
3.配置系统核心
首先配置外部时钟 (晶振) 输入
配置调试引脚
选择SYS选项
配置时钟分频
点击上方Clock Configuration
基础配置到此结束,接下来就是按照需求配置引脚
4.举例-配置I2c协议
5.生成代码
点击右上角GENERATE CODE,自动跳转到project manager选项卡,因为还有些信息没填
注意此处!!application structure 建议选择advance。并且不要在生成代码之后再次修改该选项,会有bug!!具体我会写一篇文章说明
之后再次点击 右上角 GENERATE CODE