课程内容

描述文本。

STM32的软件环境

写在前面

STM32的软件安装要比C51复杂的多,总的来看,可以分为下面的几个步骤

  1. MDK-ARM的安装:这是程序编写的主体
  2. MDK-ARM中对于STM32的支持包:MDK-ARM下载后没有STM32的支持,需要单独下载这个。
  3. 初始代码生成器:STM32的初始代码非常复杂,牵扯到时钟配置,引脚配置等等,自己去写费事费力,初始代码生成器可以用图形界面解决这个问题
  4. STLInk的驱动下载:要想往STM32单片机里烧录程序,需要用到仿真器STLINK(也有其他的),需要下载安装它的驱动,不然电脑不认识。

总的安装说明http://t.csdn.cn/MMJqh


MDK-ARM

官方链接:https://www.keil.com/download/product,进入后选择第一个MDK-ARM,下载安装


MDK-ARM中对于STM32的支持包

下载完成MDK-ARM后,还需要安装支持包,才能进行STM32的编程工作,打开链接https://www.keil.com/dd2/Pack/#!/%23eula-containerSTMicroelectronics,网页搜索“STM32F1 Series Device Support, Drivers”,下载后,打开pack installer,点击import


MDK-ARM中老版编译器compiler 5的安装

现在软件默认带的是compiler6,但是很多的教程都是基于老版写的,用compiler6编译不了,所以可以把compiler 5一并装上。


初始代码生成器:STM32CubeMX

ST公司产的M32芯片,就是我们今天所说的STM32,针对这款产品,ST公司专门编写了初始代码生成器,建议一并下载https://www.st.com/zh/development-tools/stm32cubemx.html 找到STM32CubeMX-Win下载

安装完成后打开桌面STM32CubeMX,点击help-->manage embedded software packages,在下拉菜单中找到STM32F1的第一个,点击install

STM32CubeMX的配置


STLInk V2的安装与设置

具体请参照这个链接,点击打开

MDK: 即RealView MDK 或MDK-ARM(Microcontroller Development kit),是 ARM 公司收购Keil公司以后,基于uVision界面推出的针对ARM7、ARM9、Cortex-M0、Cortex-M1、Cortex-M2、Cortex-M3、Cortex-R4等ARM处理器的嵌入式软件开发工具。

Cortex:ARM公司在经典处理器ARM11以后的产品改用Cortex命名,并分成A、R和M三类,旨在为各种不同的市场提供服务。

软件介绍

STM32建好工程后,其代码看起来也要比51复杂的多,光是C文件和头文件就有很多个,其分类放在不同的文件夹里

STM32的三种开发方式)转载自https://www.elecfans.com/d/1814945.html

通带新手在入门ST32的时候,首先都要先选择一种要用的开发友式不同的开发友式会导致你编程的架构是完全不一样的。一殷大多数都会选用标准库和HAL库,而极少部分人会通过直接配置寄存器进行开发。网上关于标准库、HAL库的描述相信是数不胜数。可是一个对于很多刚入门的朋友还是没法很直观的去真正了解这些不同开发发方式彼此之间的区别,所以笔者想以一种非常直白的方式,用自己的理解去将这些东西表述出来,如果有描述的不对的地方或者是不同意见的也可以大家提出。

直接配置寄存器

不少先学了51的朋友可能会知道,会有一小部分人或是教程是通过汇编语言直接操作寄存器实现功能的,这种方法到了STM32就变得不太容易行得通了,因为STM32的寄存器数量是51单片机的十数倍,如此多的寄存器根本无法全部记忆,开发时需要经常的翻查芯片的数据手册,此时直接操作寄存器就变得非常的费力了。但还是会有很分人,喜欢去直接操作寄存器,因为这样更接近原理,知其然也知其所标准库面也提到了,STM32有非常多的寄存器,而导致了开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的。在这些ch文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPO口时钟等。所以我们只需要配置结构体变呈成员就可以修改外设的配置寄存器,从而选择不同的功能。也是目前最多人使用的方式,也是学习STM32接触最多的一种开发方式,我也就不多阐述了

HAL库

HAL库是ST公司日前主力推的开发方式,全称就是 Hardware Abstraction Layer(抽象印象层)。库如其名,很抽象,一眼看上去不太容易知道他的作用是什么。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴,注意是相通外设,意思也就是不能无中生有,例如F7比F3要多几个定时器,不能明明没有这个定时器却非要配置,但其实这种情况不多,绝大多数都可以直接复制粘贴。是而且使用ST公司研发的 Stmcube软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件,可以说是方便至极,但是方便的同时也造成了它执行效率的低下,在各种论坛帖子真的是被吐槽的数不胜数

============================找指导老师布置任务吧==============================