简介

本stm32学习笔记均学习参考来自bilibili西风“【西门子】零基础入门省国赛教程”

本文主要介绍了如何快速从蓝桥杯单片机过渡到stm32的开发之中,包括环境的开发,代码框架的移植等

对比1

一、基础要求

  1. 基础的单片机和C语言的知识
  2. 会使用基本的外设,比如ds1302时钟模块,iic模块。
  3. 如果把国信长天的单片机板子换成普中开发版,能不能将蓝桥杯单片机那一套移植过去

二、代码规范化

1. 代码命名规范化

  1. 蛇形命名法

单词+下划线,都小写

  1. 驼峰命名法VS帕斯卡命名法

驼峰:首字母小写,其他每个单词的首字母都大写

帕斯卡:单词首字母都大写

  1. 全大写

全大写+下划线

适用于宏定义

2.注意事项

  1. 避免和系统关键词冲突!!!
  2. 避免名称过长
  3. 避免含义不清,例如Function1

3. 单片机架构

架构对比

8051架构 STM32架构
处理器 8位 12位
主频 12M-60M 最大216M
RAM 256B-1KB 数百KB-数MB
Flash 数KB-64KB 数KB-数MB
使用场景 简单控制 家电

数据类型的支持

  • 我们在stm32单片之中没有了unsigned char ,unsigned int ,unsigned …全部更换成了uint8_t,int8_t,int16_t,uint16_t,uint32_t,uint_64_t

8051VSstm32

stm32 可以支持uint64_t,而8051不可以

可视化处理能力

三、嵌入式的开发方式

  1. 寄存器开发

直接操作,效率最高,提供了最大灵活性和性能

然而开发效率低,工作量很大

很像蓝桥杯单片机中的定时器初始化

  1. 标准库开发

标准库开发

(不建议新手开发)有了hal库之后学标准库很快就能学好

  1. HAL库开发

硬件抽象出来,最后得到了代码

HAL库开发效率最高,易于移植

四、为什么GD32用stm32 的方式进行开发

  1. stm32与GD32开发板高度重合
  2. GD32环境较少而stm32的环境配套资源较多

课下作业

为什么HAL库的硬件移植性比标准库好很多

  1. HAL库的全称为Hardware Abstraction Layer(硬件抽象层),它名字就叫硬件抽象层,当然抽象性很好,也就易于移植
  2. HAL库统一接口,也就是说HAL库对各种外设都提供了一套统一风格的初始化、发送接收、DMI、中断回调等API,而标准库常针对每个外设和每个系列单独定制
  3. 跨商家跨系列支持
    • 同一套代码可以跑不同芯片,STM32的HAL库在从F0-F3到F7H7L4G0等多家产品线中,都保留了一致的API规格
    • 未来ST官方还会继续维护HAL库
  4. 代码能自动生成:通过CubeMX可以自动生成代码
  5. 模块直接可以在conf.h文件中打卡和关闭,并且HAL库提供了中间层
  6. 一致的错误处理与回调
    • 每次调试信息都为HAL_OK,HAL_ERROR,HAL_BUSY,HAL_TIMEOUT
    • 弱符号回调(不知道)
  7. 官方支持与文档
    • 官方会持续更新
    • 有大量示例