1. STM32需要了解的基础知识

STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex®-M0,M0+,M3, M4和M7内核,按内核架构分为不同产品:主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)。

内核是ARM公司统一设计的

于ARMv7架构的Cortex系列由ARM公司在2006年推出,Cortex系列的推出满足人们对性能日渐复杂的设计要求,根据不同需求,Cortex系列共三个不同的子系列。Cortex-A系列主要面向一些复杂的应用,用来运行一些操作系统,运用到各类消费电子中;Cortex-R系列主要面向实时系统,运用到军事航天;Cortex-M系列主要面向微控制领域,为如今工业控制系统、微控制系统等对功耗和成本要求较高的嵌入式领域实现高性能低成本提供基础,对嵌入式系统编程进行了大大简化,可以说Cortex-M做到了集高性能、低功耗、低成本于一体。

参考链接:stm32_百度百科 (baidu.com)

参考链接:【普中教程视频】STM32F4开发板(完整版)_哔哩哔哩_bilibili

参考链接:ARM(英国ARM公司)_百度百科 (baidu.com)

参考链接:STM32是什么?STM32简介/结构与应用 - 知乎 (zhihu.com)

参考链接:DSP与STM32的对比浅见(一)_lingcoln的博客-CSDN博客_dsp和stm32的区别

参考链接:DSP与STM32的对比浅见(二)_lingcoln的博客-CSDN博客_stm32与dsp

2. STM32的4个库

先给结论:从ST公司的发展方向和主推的库来讲,目前使用HAL是最正确的选择。

下面就来讲讲开发STM32的四种库:

  • STM32Snippets
  • Standard Peripheral Library
  • STM32Cube LL
  • STM32Cube HAL

参考链接:STM32四种库对比:寄存器、标准外设库、HAL、LL | 贸泽工程师社区 (eetrend.com)

2.1 STM32Snippets

STM32Snippets是高度优化的示例代码集合,使用符合CMSIS的直接寄存器访问来减少代码开销,从而在各种应用程序中最大化STM32 MCUs的性能。每个STM32系列的100多个片段演示了如何以最小的内存占用有效地使用STM32外围设备。STM32Snippets目前官方只提供:STM32F0和L0的示例代码包。参考链接:STM32Snippets - STMicroelectronics

2.2 Standard Peripheral Library

简写SPL,也叫标准外设库。是一组外围设备的C语言代码集合。(因为现在ST官方主推STM32CubeMX,所以停止了对SPL的更新),标准外设库是在寄存器的基础上进行了一次简单封装,主要是面向过程的嵌入式系统开发人员。目前标准外设库支持STM32F0、 F1、 F2、 F3、 F4、 L1, 不支持F7、 H7、 MP1、L0、 L4、 L5、 G0、G4等后面推出的系列。所以,不要再问:在哪里下载L0的标准外设库了。参考链接:STM32 Standard Peripheral Libraries - STMicroelectronics

2.3 STM32Cube LL 和 HAL

LL:Low-Layer,底层库

HAL:Hardware Abstraction Layer,硬件抽象层库

STM32Cube HAL 和 LL配合STM32CubeMX工具对STM32进行开发。也是目前ST官方主推的一套开发STM32的库。HAL针对的是具有一定嵌入式基础的开发人员,HAL具有很好的移植性。LL库相对HAL,具有简单的结构,针对之前从事SPL(标准外设库),或寄存器开发的人员。STM32Cube HAL 和 LL是目前官方主推,并重点维护和更新的库,也建议大家都学习一下。而且新出来的型号(如L5、G4等系列)没有标准外设库,只有STM32Cube HAL 和 LL库了。参考链接:STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics

3. 开发前的准备工作

3.1 软件

1.MDK 5 | (Keil uVision5) ARM内核架构的集成开发环境
2.Keygen.exe MDK 5破解工具,能支持到2032年。
3.Keil.STM32F4xx_DFP.2.16.0.pack

当我们安装好MDK 5后,想让MDK 5支持STM32F4xx芯片的开发,还要安装 STM32F4xx的器件支持包:Keil.STM32F4xx_DFP.2.16.0.pack(STM32F4系列的器件包)。注意:这个支持包是ARM Keil公司提供的,不是ST公司提供的。安装了芯片支持包之后,在新建项目的时候,才能找得到对应的芯片信号。

4.STM32CubeMX

HAL库是和STM32CubeMX配合使用的,STM32CubeMX软件可提供图形化的操作,在配置完之后,可最终生成一个项目框架。此时项目框架里已经包含了系统各种外设的初始化配置代码,即使会降低代码的运行效率,但这一点真的太香了

5.仿真器驱动(我们使用ST-LINK) 不必多说,没安装仿真器驱动,系统无法识别仿真器,无法下载程序,没法儿玩。

同目录下:02_软件安装包.rar里。

3.2 硬件

仿真器 + 电路板(包含芯片的开发板 | 公司或自己设计的电路板)

3.3 资料

1. 电路板原理图

2. 芯片对应的 Reference manual + Datasheet (这个如果用外设库SPL编程应该用的多,但是用STM32CubeMX编程的话,应该用的不多)

3. 电路板使用的其它芯片资料

同目录下:

4 从零开始完成第一个程序

先说明一下,由于板子是公司开发的,第一个程序就不点灯了,改成实现串口通信吧。

4.1 首先使用STM32CubeMX生成项目框架

截图Warning! 截图 Warning! 截图warning!

首先选RCC,把系统时钟一配置。

网上讲的,有些设置要设置一下

4.2 串口代码

添加代码只需三行,功能就是每隔1000ms通过串口发送0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 8个字节。

int main(void)
{/* USER CODE BEGIN 1 */uint8_t data[8] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}; // 这行是添加的/* USER CODE END 1 */
… 省略 …
/* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE */HAL_UART_Transmit(&huart1,data,8,10); // 这行是添加的HAL_Delay(1000);/* USER CODE BEGIN 3 */}
/* USER CODE END 3 */

4.3 烧写代码流程

4.4 运行结果

STM32_编程入门相关推荐

  1. python编程求圆的面积案例_Python实用案例编程入门:第七章 调式手段

    本章的主题为调试手段,这是程序开发必不可少的步骤,也是占用时间最多的环节.在程序员的正常开发工作中,调试工作至少占据1/3的时间,而实际编码工作相对占用实际比较少.因此,无论您是初学者,还是编程兴趣爱 ...

  2. 《C++游戏编程入门(第4版)》——1.12 习题

    本节书摘来自异步社区出版社<C++游戏编程入门(第4版)>一书中的第1章,第1.1节,作者:[美]Michael Dawson(道森),更多章节内容可以访问云栖社区"异步社区&q ...

  3. 编程入门到进大厂,你需要这套学习架构

    我相信大多数学习编程的同学都有着对大公司的憧憬.技术.声望.薪资.福利,这些都足以成为吸引你进入大厂的理由. 但是,如何进入大厂呢? 对于很多同学来说,通往大厂的道路并不明朗,不知道是否有希望,也不知 ...

  4. 《C++游戏编程入门(第4版)》——1.8 Lost Fortune简介

    本节书摘来自异步社区出版社<C++游戏编程入门(第4版)>一书中的第1章,第1.8节,作者:[美]Michael Dawson(道森),更多章节内容可以访问云栖社区"异步社区&q ...

  5. [译]函数式响应编程入门指南

    原文地址:An Introduction to Functional Reactive Programming 原文作者:Daniel Lew 译文出自:掘金翻译计划 本文永久链接:github.co ...

  6. 《C++游戏编程入门(第4版)》——2.4 使用带else子句的if语句序列

    本节书摘来自异步社区出版社<C++游戏编程入门(第4版)>一书中的第2章,第2.4节,作者:[美]Michael Dawson(道森),更多章节内容可以访问云栖社区"异步社区&q ...

  7. 《树莓派Python编程入门与实战》——3.5 关于Python交互式shell

    本节书摘来异步社区<树莓派Python编程入门与实战>一书中的第3章,第3.5节,作者:[美]Richard Blum,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  8. 编程指南_今晚7点,译者编程入门指南抽奖!

    各位关注"简言"的同学们好.老师们! 我的新书<译者编程入门指南>出版啦!感谢大家一直以来的支持和陪伴,我每次发完文章后都会得到大家的点赞.转发.留言甚至打赏,我感到非 ...

  9. 《树莓派Python编程入门与实战(第2版)》——3.9 小结

    本节书摘来自异步社区<树莓派Python编程入门与实战(第2版)>一书中的第3章,第3.9节,作者[美] Richard Blum Christine Bresnahan,陈晓明 马立新 ...

  10. 《Java并发编程入门与高并发面试》or 《Java并发编程与高并发解决方案》笔记

    <Java并发编程入门与高并发面试>or <Java并发编程与高并发解决方案>笔记 参考文章: (1)<Java并发编程入门与高并发面试>or <Java并发 ...

最新文章

  1. 最高奖金5万|带打目标检测大赛!还给匹配神助攻队友!
  2. python字典实现关键字检索_如何实现搜索框的关键词提示功能
  3. 五大关键物联网应用助力优化数据中心基础设施管理
  4. android studio设置Tab为四空格缩进
  5. excel怎么把单元格内某个字标红,其他字不变
  6. imx6 mac地址设置
  7. 如何使用泛型在新的可空上下文中启动健壮的C#项目?
  8. Java GC 原理
  9. 卷积的物理意义是什么?
  10. 一阶滤波算法公式推导
  11. 软件工程专业要学什么课程?
  12. 安卓抖音怎么切换国际版Tiktok自带无水印下载
  13. 传智黑马java基础学习——day14
  14. Android 虚拟多开系列二——技术原理
  15. Windows API-GDI入门基础知识详解 来源: PConline.com.cn
  16. 视频怎么转为GIF,如何制作GIF
  17. [转] 肾有多好人就有多年轻
  18. 什么是monkey patch(猴子补丁)
  19. facebuilder免费版_Nuke新插件FaceBuilder轻松实现人物角色头部建模
  20. ROS综合学习记录(一)---cmd_vel转换为阿克曼模型的速度变换

热门文章

  1. 面试IT公司的时候,程序员的简历应该写多少个项目经验比较合适?
  2. OBS+SRS+centos7搭建局域网直播推流服务器
  3. python内置函数( )可以返回列表长度_python内置函数总结
  4. 编程算法 - 赛马问题
  5. wget: unable to resolve host address的解决方法
  6. K8S加入新的node节点
  7. 原来,神文竟然是汉字
  8. 基于Java Swing的进销存管理系统
  9. 【毕业设计】python opencv 深度学习 指纹识别算法实现
  10. 苹果画画软件_数位板可以连手机画画?有哪些好用的绘画APP?