01 

前言 

有读者问,如何系统地入门学习stm32呢?

假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习。

我们要考虑的是, 我可以快速用STM32实现什么?

为什么使用STM32而不是8051?

  • 是因为51的频率太低,无法满足计算需求?

  • 是51的管脚太少,无法满足众多外设的IO?

  • 是51的功耗太大,电池挺不住?

  • 是51的功能太弱,而你要使用SPI、I2C、ADC、DMA?

  • 是51的内存太小而你要存储的东西太多?

当你需要使用STM32某些功能,而51实现不了的时候, 那STM32自然不需要学习,你会直接去寻找STM32某方面的使用方法。

比如要用spi协议的网卡、要使用串口通信、要使用rtos等等...

02 

快速上手的学习步骤

我们假定大家已经对STM32的书籍或者文档有一定的理解。如不理解,请立即阅读STM32的文档,以获取最基本的知识点。

英文好的同学,请不要以为你很牛,可以只看英文文档。毕竟你是中国人,你最熟悉的,理解最好的还是中文。

看英文的速度还是比看中文慢一些,我们要的是最短的时间,而不是追求短时间内记住所有细节。当然,如果是一篇论文,建议看英文原版还是有好处的。

STM32处理器进入国内市场时候,ST官方(或者第三方)的推广工作做得非常好。翻译了大量的英文文档,迎合了国内的很多工程师的思维。

学习的时候,关注两个比较重要的文档:《STM32F103xxx参考手册》,《STM32固件库使用手册》。

这是针对有充足的时间、精力的同学,建议去下载需要查阅的文档,以获取更多信息。

阅读《STM32F103xxx参考手册》,一定要注意,不需要全部阅读——没有时间的。

建议选读,但是前几章必读。存储器和总线架构、电源控制、备份寄存器、复位和时钟控制,通用和复用功能I/O,中断和时间等等前几章一定要花时间阅读。

后面章节,讲述的是具体的功能模块设计。如果我们用到哪个模块,就可以去阅读哪个模块。

比如在使用AD的时候,就需要去阅读第10章ADC。其他不举例。相信每个初学者都有自己的研究方向和判断。

阅读《STM32固件库使用手册》,主要是为了简化编程。STM32给我们提供了一个非常好的固件函数库,我们只要去调用即可。

这里我主要强调的是,阅读《STM32固件库使用手册》的时候,前面几章也是必须阅读的。比如第一章文档和库规范中的命名规则,编码规则,这些都是需要注意的。

第二章是最关键的,希望大家熟读。

第四章开始之后,就可以根据大家的需要来阅读。实际上,后续的章节,都是描述某个模块有什么什么函数,每个函数如何使用等。

关于后面的章节,建议对GPIO库函数、中断部分库函数、复位和时钟设置的库函数要比较熟悉,因为平时经常会用到。

以上提到的这两个文档,可以从中获取大量的STM32基础知识。

03 

设定一个不错的两周入门计划

这里所谓的“入门”,指的是能理解并掌握一些常用的STM32外设,真正想掌握一款处理器,两周根本说明不了什么问题。只能说,你已经有所了解了。但是,这对我们初学者来说已经足够了。

这里所谓的“两周”,根据每个人的时间安排不同而不同。

如果您每天有充足的时间学习,那么可以规定自己尽快地能独立地进行简单的STM32开发。

如果您每天只有业余时间来学习STM32,建议根据您的具体情况安排时间。

毕竟计划时间如果安排太紧,反而收不到良好的效果,只能进入恶性循环,这是我们要避免的。

但是建议,不管您有无充足的时间,都必须给自己做一个计划!

这里列出一个思路,仅供参考。

步骤一:环境搭建,安装完STM32学习的软件,比如J-Link、Keilfor ARM(MDK)、ISP(如果需要从串口下载的话)。

步骤二:搞一个开发板,挑选部分例程的HEX,比如LED灯的例程HEX文件,下载到STM32开发板中,观察运行情况。

实际上,以上两个步骤,是为了熟悉要使用的工具软件而已。属于找感觉的阶段。其实我们还没开始STM32的学习呢!

步骤三:准备几个常用的文档,比如《STM32的用户手册》,《STM32固件库使用手册》等文档。用于平时查阅。

步骤四:开始查看例程的编写,看看例程是如何写的,自己可否修改下例程,达到自己想要的效果呢?

步骤五:RTOS的使用,是否需要试一下?

恭喜你,至此,你已经可以自如进行独立的开发了。最后一步,给自己一个目标(项目),把它实现出来!

再次强调,以上只是一个学习STM32的思路,供大家参考。下面列出了前面关键的步骤,希望大家能尽快入门。

第1步:熟悉调试软件

对初学者来说,我们至少需要的几个软件:J-Link驱动软件、ST-Link驱动、MDK(就是原来的Keil)软件。

该步骤要达到的目标:熟悉调试软件,如烧写HEX出现问题,可简单判别问题所在,并独立解决。

第2步:GPIO编程

这是第一次接触固件库的编程,一定要硬着头皮去了解固件库。建议大家尽量去用固件库。

常见的比如HAL库,LL库等等。

而不是避开固件库自己写代码——这样只能在学习中才会发生。实际的项目中,代码成百上千个,如何一个一个自己写?

使用现成稳定的轮子,才是王者之道。

GPIO本身的编程实际上很简单:

  • 设置GPIO口的引脚为输入或者输出模式。我们在进行点灯代码的时候,一般设置为推挽输出模式。

  • 操作寄存器,往寄存器里置1或者清零操作——这个步骤,固件库已经提供了专门的GPIO_SetBits函数和GPIO_ResetBits函数,我们只要去调用即可实现对IO口的置1和清零。

  • 实现多种花样的LED闪动,使得自己熟悉GPIO的编程过程。

该步骤要达到的目标:熟悉调试软件,如烧写HEX出现问题,可简单判别问题所在,并独立解决。

第3步:开始全新的STM32深入研究

经过以上调试软件的熟悉和GPIO口的编程调试后,相信您已经对STM32有一定的了解。

至少知道如何利用STM32的固件库去写一个代码。

在这个阶段,将要接触到串口编程、TFT液晶屏驱动编程、定时器编程、串行外设接口SPI编程、存储器编程、SD卡与文件系统移植、USB读写、UCOS移植等,有精力还可以研究其他外设。

版权声明:本文来源网络,版权归原作者所有。版权问题,请联系删除。

-END-


往期推荐:点击图片即可跳转阅读

电烙铁焊锡到底有没有毒?

计算机专业,下一个土木?

拆一辆十万元的比亚迪“元”,快来看看里面的有哪些元器件。

10天学会STM32的学习心得总结相关推荐

  1. 10条靠谱的学习心得

    学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 一.学习也是一种能力 看到这个标题,有人会说:&q ...

  2. STM32学习心得十九:电容触摸按键实验及相关代码解读

    记录一下,方便以后翻阅~ 主要内容 1) 电容触摸按键原理: 2)部分实验代码解读. 实验内容 手触摸按键后,LED1灯翻转. 硬件原理图 上图,TPAD与STM_ADC用跳线帽相连,即TPAD与PA ...

  3. STM32学习心得二十一:实时时钟RTC和备份寄存器BKP特征、原理及相关实验代码解读

    记录一下,方便以后翻阅~ 主要内容 1) RTC特征与原理: 2) BKP备份寄存器特征与原理: 3) RTC常用寄存器+库函数介绍: 4) 相关实验代码解读. 实验内容: 因为没有买LCD屏,所以计 ...

  4. STM32学习心得十八:通用定时器基本原理及相关实验代码解读

    记录一下,方便以后翻阅~ 主要内容: 1) 三种定时器分类及区别: 2) 通用定时器特点: 3) 通用定时器工作过程: 4) 实验一:定时器中断实验补充知识及部代码解读: 6) 实验二:定时器PWM输 ...

  5. STM32学习心得二十六:DAC数模转换实验

    记录一下,方便以后翻阅~ 主要内容: 1) DAC数模转换原理: 2) 寄存器和库函数介绍: 3) 相关实验代码解读. 实验功能:系统启动后,按WK_UP键,输出电压加200点,对应电压值200*3. ...

  6. 计算机新课标学习心得体会,【精品】新课标学习心得体会模板锦集10篇

    [精品]新课标学习心得体会模板锦集10篇 在平日里,心中难免会有一些新的想法,马上将其记录下来,这样可以记录我们的思想活动.很多人都十分头疼怎么写一篇精彩的心得体会,下面是小编收集整理的新课标学习心得 ...

  7. STM32学习心得十七:窗口看门狗(WWDG)实验及旧知识点复习

    记录一下,方便以后翻阅~ 主要内容: 1) 窗口看门狗概述: 2) 常用寄存器和库函数配置: 3) 窗口看门狗实验. 窗口看门狗实验内容: 为了对之前的知识进行总结复习,本人在教学案例的基础上又&qu ...

  8. 计算机科学与技术前沿讲座心得体会,技术学习心得体会范文(精选10篇)

    技术学习心得体会范文(精选10篇) 有了一些收获以后,可以通过写心得体会的方式将其记录下来,这么做可以让我们不断思考不断进步.到底应如何写心得体会呢?以下是小编整理的技术学习心得体会范文(精选10篇) ...

  9. STM32学习心得二十四:内部温度传感器原理及实验

    记录一下,方便以后翻阅~ 主要内容: 1) STM32内部温度传感器概述: 2) 相关实验代码解读. 实验功能:系统启动后,实时将内部温度传感器的值传至串口助手上. 官方资料:<STM32中文参 ...

最新文章

  1. Linux Shell编程 test命令
  2. [转]制作BlogWriter 博客客户端
  3. python爬取js加载的数据_Python爬虫学习,记一次抓包获取js,从js函数中取数据的过程...
  4. 【Leaflet】鼠标提取坐标
  5. 将变量区分_【统计学】区分定类、定序、定距、定比变量!
  6. php代码格式化工具 php-cs-fixer的使用
  7. 【codevs2516】【BZOJ2461】符环,DP
  8. 多目标跟踪——MOT数据集的学习笔记
  9. DAY21 反射(hasattr,getattr,setattr,delattr)
  10. CMM&CMMI 简介
  11. 带农历万年历C语言程序,c语言万年历程序代码
  12. Python图像灰度化处理
  13. 二进制原码一位乘法运算
  14. Flutter type ‘List<dynamic>‘ is not a subtype of type ‘Map<String, dynamic>‘
  15. Less语法-01-简介
  16. 80004005错误代码_win7系统出现错误代码0x80004005该如何解决
  17. 这特么也太好看了----------博客园主题美化
  18. python英文词频统计-Python实现统计英文文章词频的方法分析
  19. nodejs绿色版下载安装及配置淘宝镜像、安装vue脚手架
  20. 达人评测 联想小新Pro16和小米笔记本Pro15选哪个好

热门文章

  1. Android Sensor调试
  2. 红芯致歉信:融资宣传存在夸大 我们确实做错了
  3. 流放之路进入服务器时显示,《流放之路》游戏快捷键和界面提示
  4. 论文抄袭!她的硕士、博士学位,将全部撤销!
  5. NLP: 基于文本语义的智能问答系统
  6. 菜鸟在线带你了解2016年值得期待的手机游戏
  7. 办公室日常工作生活常用购置品汇总(都是便宜货)——19-7-6更新
  8. java csv 日期_java读取excel或者csv时日期格式数据处理
  9. 将ChatGPT集成到搜索引擎上(稳定版)
  10. 小案例:东西还是那个东西,就看你怎么卖