第一课:入门引导

STM32学习系列:用最简单的话来解读STM32单片机


前言

本人因为课题需要单片机来做好机器人的机电系统,所以选择了STM32,主要是想做实时操作系统。但是,自己的基础较差,可能这个目标只能成为梦想了。由于网上的资料大多数是面向那些有一定单片机开发基础的人员,小白想要自己摸索学习STM32确实是有难度。所以,本人想趁着自己学习单片机的过程里,将一些心得体会写下来,希望可以帮助到各位快速入门,打好STM32学习的基础。


提示:以下是本篇文章正文内容

一、什么是单片机?

新手只要理解,单片机就是一种控制器。举例,电脑的主要由键盘、主机、显示器组成。比如键盘输入到屏幕显示,其实需要一个处理的过程。键盘相当于“指令输入”,但是这些指令计算机不能直接理解,所以利用主机(大脑)对这些输入的指令进行翻译转化,才能在屏幕上显示出结果。(主机还包含了极其负责的电路和很多硬件,核心是处理器CPU)

此外,单片机是控制器的缩小版(举例,单片机最小系统板C51),电脑的键盘输入相当于C51单片机的I/O口输入只能是0/1,并且需要借助相应的软件进行编写0/1的代码进行输入到单片机(因为单片机没有电脑的电路复杂,硬件也非常少,只有C51的芯片、晶振、电阻、电容等这些小硬件,处理能力非常有限),c51的电路框架如下:

在这里插入图片描述

简单总结就是,在电脑上的输入操作非常简单,想玩啥直接在商城或百度上下载某个应用(如微信/QQ等)安装就行,打开就能用了。但是想要在单片机上实现相应的指令,必须得借助编译软件Keil 4/5和烧录软件STC—ISP/普中。前者用于编程,对单片机的I/O口进行0/1的输入代码编写(0或1的组合能代表不同的指令,例如00000001,代表数字1这个指令),后者将编写好的代码转变成单片机可识别的语言二进制,并输入到单片机上(当然,后面有更好的方法取代烧录软件的这个过程,可以在keil上写完代码直接下载到单片机上,这个后面再展开讨论)。

讲到这里,大家觉得懂了的话请继续往下看?不懂的话欢迎提出哈。

二、什么是C51(AT89C51)和STM32?

下面简单介绍一下两者的情况,想要详细了解两款单片机请参考链接:C51单片机STM32单片机

1.AT89C51

AT:全名atmel公司。

8:该芯片为8051内核芯片。

9:内部含Flash E^2PROM储存器。

C:该器件为CMOS产品(CMOS是一种半导体)。

5:固定不变。

1:该芯片内部程序存储空间的大小。

2.STM32

STM: 全名STMicroelectronics, ST为意法半导体(公司), M是微电子。

32: 32为32位处理器(CPU)。

STM32: 是ST公司基于ARM内核(ARM公司研发的CPU架构)研发的一种微型控制器,叫做STM32,其内核采用了32位处理器。(太深了我也不懂,解释不对的地方请大家提出)

三、C51和STM32有什么区别?

这个问题我也问过度娘(百度搜索),发现很多文章讲的都比较杂乱,或者比较专业,很难满足一个小白的理解。这里我就重新梳理一下这些知识,从一个小白的角度去理解这两者的区别。

1.核心区别

C51采用的是8051的内核架构,STM32采用的是Cortex-M3架构(架构的个人理解:就是CPU执行处理过程的代码,Cortex-M3执行的效率更高)。内核架构影响CPU的处理能力。例如,C51采用了8位处理器,而STM32采用了32位处理器,处理能力甩了C51好几条街。因此,C51可以说是微型处理器中的低端单片机,STM32是高端单片机。

2.开发模式

(1)定义:C51是直接操作寄存器使用外设,而STM32是直接调用库函数使用外设。

(2)举例:上面说过单片机需要在Keil上编写0/1的代码,并烧录进单片机中,才能执行你想要的某项指令。要想在单片机的I/O口上实现输入同一个指令(如1),c51和STM32在Keil上的操作是不一样的,c51编写的代码是对寄存器进行操作的,就是改变单片机中某个寄存器里面的数值,从而实现对I/O口的操作。相反,STM32编写的代码是对库函数进行操作的,就是调用库函数,修改库函数里面的数值就行。这样如果还不理解的话,你可以将操作I/O看成一扇门需要被你打开或者关上,c51需要亲自到现场去开门或关门,而STM32坐在办公室,通过电脑就能控制那扇门的开关,是不是更加便利了呢。

总的来说,STM32不需要直接对寄存器进行操作(开发人员早已经把它打包好了),你可以直接调用,改一下参数就能实现控制。一般单片机的寄存器会非常多,你每次都要对某一个寄存器进行操作,你怎么记得住!!STM32只需要通过调用一个库函数来进行修改,就可以对所有寄存器进行操作(每个I/O口都能实现输入操作)。

3.开发环境

C51和stm32虽然都可以用keil开发,但是版本不同。C51一般使用keil 4,而stm32的开发环境也比较多元化,主流的就是mdk、keil5或者IAR。

4.烧录方式

C51采用的烧录方法通常是ISP和ASP,而STM32采用的烧录方法有ISP,IAP和SW/JTAG。其中,ISP是两款单片机都能使用的烧录方法。ASP目前只见到用于C51和C52烧录,但是现在很少人使用这种方式了。相比之下,STM32采用的SW/JTAG的方式能够实现keil软件上在线烧录和仿真,无需再通过烧录软件。后面会专门对这些烧录方式做一次详细讲解。

四、小白能不能直接学STM32?

小白可以直接入手STM32,只需要学一点C语言就行。不用学得很深入,找谭浩强的书籍,下载Vscode练习敲代码,从hello world学到结构体就行(数组、指针不用太深究,知道基本使用就可以)。个人建议学以致用,需要用的时候再去深入研究。

很多人说,小白直接学习C51单片机会容易入门,因为STM32单片机需要一定的基础知识,大部分刚学习单片机。可我认为,小白也可以直接学习STM32,原因有以下三点:

(1) C51直接操作寄存器,而STM32直接操作库函数。由于单片机的性能与寄存器的内核大小有关,性能强大的单片机都会有几百个寄存器,通过操作寄存器的方法就需要通过查手册,这无疑增加了很大的工作量。相反,通过库函数的操作方式会更简便(库函数相当于封装好的寄存器操作函数)。如果你不想从事底层开发的工作,我建议还是直接学习STM32,C51对于想研究底层开发的人是很好的入门单片机

(2) 现在STM32有三种学习方向,寄存器(STM32也可以使用寄存器的操作),库函数和HAL库。为什么会推荐小白可以直接学习STM32呢?原因是STM32的服务做得越来越好了,也就是操作越来越简单方便了。大家可以参考这个链接,它讲的很好:HAL库与库函数的比较

(3) STM32F103的最小开发板其实和C51最小开发板差不多,学习视频也很详细,网上资料也非常多,完全不必担心STM32能不能学会。最主要还是基础要打扎实,前面的基础知识一定要搞清楚,这也是我为什么要开坑这个系列的原因。我的初衷就是每个人都不要被STM32吓到,只要肯耐心学习,就可以堆砌出参天大厦。我也是一个对编程没啥敏感的普通人,希望能在自学的过程中帮助到大家。

总结

学习STM32是一个漫长的过程,我希望把自己在自学过程中的经验分享给大家。当然,很多内容的编写我也是站在巨人的肩膀上,只是把他们的内容整理好再呈现给大家。这个系列将会逐步分享本人如何从基础学起,并且弄通透的(当然,这只是基于个人而言)。我是不太聪明的笛卡尔,学习需要做笔记的笨蛋,再见。

更新可能会有点慢,个人需要捋清楚了再发博,也有课题原因无法专心更博,希望大家理解。

参考资料
1.51单片机介绍
2.STC51-C51基础知识
3.STM32介绍
4.stm32中库函数和hal库的区别
5.大神带你认识单片机

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值