蓝桥杯过渡
简介
本stm32学习笔记均学习参考来自bilibili西风“【西门子】零基础入门省国赛教程”
本文主要介绍了如何快速从蓝桥杯单片机过渡到stm32的开发之中,包括环境的开发,代码框架的移植等
一、基础要求
- 基础的单片机和C语言的知识
- 会使用基本的外设,比如ds1302时钟模块,iic模块。
- 如果把国信长天的单片机板子换成普中开发版,能不能将蓝桥杯单片机那一套移植过去
二、代码规范化
1. 代码命名规范化
- 蛇形命名法
单词+下划线,都小写
- 驼峰命名法VS帕斯卡命名法
驼峰:首字母小写,其他每个单词的首字母都大写
帕斯卡:单词首字母都大写
- 全大写
全大写+下划线
适用于宏定义
2.注意事项
- 避免和系统关键词冲突!!!
- 避免名称过长
- 避免含义不清,例如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不可以
可视化处理能力
三、嵌入式的开发方式
- 寄存器开发
直接操作,效率最高,提供了最大灵活性和性能
然而开发效率低,工作量很大
很像蓝桥杯单片机中的定时器初始化
- 标准库开发
标准库开发
(不建议新手开发)有了hal库之后学标准库很快就能学好
- HAL库开发
硬件抽象出来,最后得到了代码
HAL库开发效率最高,易于移植
四、为什么GD32用stm32 的方式进行开发
- stm32与GD32开发板高度重合
- GD32环境较少而stm32的环境配套资源较多
课下作业
为什么HAL库的硬件移植性比标准库好很多
- HAL库的全称为Hardware Abstraction Layer(硬件抽象层),它名字就叫硬件抽象层,当然抽象性很好,也就易于移植
- HAL库统一接口,也就是说HAL库对各种外设都提供了一套统一风格的初始化、发送接收、DMI、中断回调等API,而标准库常针对每个外设和每个系列单独定制
- 跨商家跨系列支持
- 同一套代码可以跑不同芯片,STM32的HAL库在从F0-F3到F7H7L4G0等多家产品线中,都保留了一致的API规格
- 未来ST官方还会继续维护HAL库
- 代码能自动生成:通过CubeMX可以自动生成代码
- 模块直接可以在conf.h文件中打卡和关闭,并且HAL库提供了中间层
- 一致的错误处理与回调
- 每次调试信息都为HAL_OK,HAL_ERROR,HAL_BUSY,HAL_TIMEOUT
- 弱符号回调(不知道)
- 官方支持与文档
- 官方会持续更新
- 有大量示例
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 我亦在所不惜!