目录
1.简介-初识STM32
2.开发环境
2.1使用Keil5
2.2使用STM32CubeMX
3.标准库与HAL库区别
4.推挽输出与开漏输出
1.简介-初识STM32
什么是单片机?
- 单片机(Single-Chip Microcomputer)是一种集成电路芯片,把具有数据处理能力的中央处
理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功
能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成
到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
STM系列单片机命名规则
- ST -- 意法半导体
- M -- Microelectronics 微电子
- 32 -- 总线宽度
项目 | 介绍 |
内核 | Cortex-M3 |
Flash | 64K x 8bit |
SRAM | 20K x 8bit |
GPIO | 37个GPIO,分别为PA0-PA15、PBO-PB15、PC13-PC15、PDO-PD1 |
ADC | 2个12bit ADC合计12路通道,外部通道: PAO到PA7+PBO到PB1内部通道: 温度传感器通道ADC Channel 16和内部参考电压通道ADC Channel 17 |
定时器/计数器 | 4个16bit定时器/计数器,分别为TIM1、TIM2、TIM3、TIM4TM1带死区插入,常用于产生PWM控制电机 |
看门狗定时器 | 2个看门狗定时器 (独立看门狗IWDG、窗口看门狗WWDG) |
滴答定时器 | 1个24bit向下计数的滴答定时器systick |
工作电压、温度 | 2V —3.6V、-40°—C85°C |
通信串口 | 2 * IIC,2 * SPI,3 * USART,1 * CAN |
系统时钟 | 内部8MHz时钟HSI最高可倍频到64MHZ,外部8MHZ时钟HSE最高可倍频到72MHZ |
2.开发环境
2.1使用Keil5
1.安装MDK
地址选择
2.破戒
3.安装芯片对应的固件包——F1固件包
双击固件包直接安装即可
4.创建STM32F1模板工程
在魔术棒中的C/C++需要添加文件头文件路径
5.接线
烧录工具有很多种,比如:串口、J-Link、ST-Link、U-Link 等等,本教程使用 ST-Link。
安装驱动
- 官网下载(慢)https://www.st.com/en/development-tools/stsw-link009.html
- 资料包
接线
6.编译及下载
后两个编译生成hex文件
LOAD就是下载程序到开发板
需要程序运行,需要按一下开发班的复位按钮。
F12:查看对应函数的具体信息
2.2使用STM32CubeMX
作用:通过界面的方式,快速生成工程文件。
缺点:只能对IO口进行操作,不能生成复杂代码。
下载:官网(慢)https://www.st.com/zh/development-tools/stm32cubemx.html#overview
安装:一路下一步,建议不要安装在C盘
配置:更新固件包位置(比较大,默认在C盘,可以更改到其它盘)
- help ---> update settings --> Firmware Repository
步骤:
1. 点击「ACCESS TO MCU SELECTOR」;
2. 左上角搜索对应的芯片,并在右侧双击对应的芯片;
3. 点击芯片对应的引脚,并进行配置;
4. 配置工程名称及位置:
1. 按下图配置 Coder Generator :
6. 点击右上角 generate code :
7. 点击 Open Project 即可调用 Keil5 打开自动生成的工程文件。
3.标准库与HAL库区别
1. 寄存器
- 寄存器众多,需要经常翻阅芯片手册,费时费力;
- 更大灵活性,可以随心所欲达到自己的目的;
- 深入理解单片机的运行原理,知其然更知其所以然。
2. 标准库
- 将寄存器底层操作都封装起来,提供一整套接口(API)供开发者调用
- 每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的;
- 配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能;
- 大大降低单片机开发难度,但是在不同芯片间不方便移植。
3. HAL库
- ST公司目前主力推的开发方式,新的芯片已经不再提供标准库;
- 为了实现在不同芯片之间移植代码;
- 为了兼容所有芯片,导致代码量庞大,执行效率低下。
4.推挽输出与开漏输出
推挽输出: 可以真正能真正的输出高电平和低电平。
开漏输出: 开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完
成对外驱动。