这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 如何从快速51单片机转战STM32?(1)

共7条 1/1 1 跳转至

如何从快速51单片机转战STM32?(1)

高工
2019-10-19 16:36:43     打赏

初入 STM32 世界

你可能此前一直学习或者从事的工作都是使用的4 位或者8 位单片机, 比如51 类单片机。因为51是如此的深入人心,可以轻易获得大量关于他的学习资料, 在书店51 类的书籍教材甚至用几个架子来摆放,某宝上销量最大的开发板一定是51 开发板, 很少有哪个嵌入式工程师或者学生曾经避开过51 而直达别的平台,我们从51 学到了MCU 的概念,学到了控制的概念。但到了今天,51 的低成本,易用,已经不占优势, 反观现在的微控领域应用,对MCU 的资源要求越来高,51 越来越不适应。

8 位内核的51 类MCU 的资源往往是最大几K-100K 的flash。100-几K 字节的RAM, IO, 串口,定时器,8 位数据总线, AD 等简单的资源。目标确定,单一。结构简单,指令简单。易于理解和操作,这些特点也是51 能深入人心的因素。目前依然是高校的主导实验平台。也是很多企业的应用平台。

随着coretex-m3 内核的STM32 在中国的兴起,引起了广大51 使用者的注意,对于我当初进入时的认识,我觉得STM32 速度非常快, flash,ram 好大。能操作SD 卡,这简直相当于微控制器的硬盘了。Usb功能这一个51 以前从来没有的东西,终于可以和计算机不需要串口就可以实现通信了。定时器那么多路,可以使我做多少的PWM 控制啊。16 位的FSMC 总线,实现了高分辨率的LCD 也一样可以高速控制了, 再不是51 那个仅仅能使用一些低分辨率且昂贵的LCM 比如12864 这些行将没落的东东。以前在51 想都不要想的ucos ucgui 都可以STM32 上尽情发挥了。还有好多好的功能,can 控制器轻易实现以前要组合电路才能实现的can 通信以及以太网的应用等等。这是真正意义的微控领域的SOC 芯片。

初入STM32,可能我们最亲切的就是在51 使用过的keil , 在51 它叫keil c51, 在arm 它叫RealviewMKD-ARM,简称它MDK, 现在版本是MDK4.22, 操作方法基本类似于keil。我们常用的功能除了编辑工程,编译代码,还会用到下载,调试。我们在51 时,可能会很少有人用仿真功能,因为51 足够的简单,脑子想的往往就是你所看到的。直接下载到目标板对你来说更快捷。所以在51 最常见的是下载器。但在arm阶段,资源繁杂,寄存器复杂。变量众多,没有一个仿真器,会感到那么的无助。因此 coretex-m3 的使用者基本都会拥有仿真器,一般分为ST-LINK ULINK 及JLINK,尤以JLINK 在中国的应用最为普及。我们都懂的原因,JLINK V8 的性价比是这几个最好的。所以,你需要在获得了MDK 后,再拥有一个JLINK。它不仅仅只支持STM32,它支持绝大多数的ARM 芯片。

51 使用者初入STM32,都会存在一个平台转换带来迷惘的一个短暂过程,这是器件类型变化较大造成的认知差异。

但调整一下,这个不适会很快过去的。

▶▶1 先看看 51 和STM32 具有的相同类型资源是哪些。根据你对51 的熟悉程度, 你会从STM32 的手册上看到。这些往往是较简单的,也是最容易理解的。比如IO 口线控制,等等。

▶▶2 STM32 高级一些的资源,往往也是需要较多精力去理解的。这可以在入门后再行学习,比如USB,SDIO等。

▶▶4 编程方式的不同, 比如在 51,用置位或者复位指令就可以很方便的控制IO,而在STM32,由于所有资源的功能都和该资源对应的32 位寄存器组的操作有关系。因此对于资源的设置和操作都可能需要操作一个或者多个寄存器, 如果用多条指令来控制的话,会引起阅读的障碍,以及日后代码维护复杂,因此ST 公司引入了库函数的概念。用执行库函数的方式解决复杂的资源操作的问题。

▶▶4 STM32 例程的MDK 工程都有相似的程序结构,结合手册多看例程,会使你快速的形成对STM32 例程模板的认识,这个认识一旦形成,剩下的代码细节就好比是你预测到的填空题目。

当你做好了想学习新平台的准备,那就义无反顾的投入CORETEX-M3 的怀抱吧。它会使你进步到一个新的境界。带给你愉悦的技术享受。

如何迅速入门STM32单片机?

网上有大神说如果会51单片机和C语言一天可入门STM32,仅一天的时间,是否有真的这么快。这个要看自己给自己定的入门的标准了。

我眼中的入门:(前提是你学过51 单片机和C 语言)

▶▶1 知道参考官方的什么资料来学习,而不是陷入一大堆资料中无从下手。

▶▶2 知道如何参考官方的手册和官方的代码来独立写自己的程序,而不是一味的看到人家写的代码就觉得人家很牛逼。

▶▶3 消除对STM32 的恐惧,消除对库开发的恐惧,学习是一个快乐而富有成就感的过程。

学习本文时,配合《STM32 中文参考手册》GPIO 章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。

51 与STM32 简介

51 是嵌入式学习中一款入门级的精典MCU,因其结构简单,易于教学,且可以通过串口编程而不需要额外的仿真器,所以在教学时被大量采用,至今很多大学在嵌入式教学中用的还是51。51 诞生于70 年代,属于传统的8 位单片机,如今,久经岁月的洗礼,既有其辉煌又有其不足。现在的市场产品竞争激烈,对成本极其敏感,相应地对MCU 的要求也更苛刻:功能更多,功耗更低,易用界面和多任务。面对这些要求,51 现有的资源就显得得抓襟见肘了。所以无论是高校教学还是市场需求,都急需一款新的MCU 来为这个领域注入新的活力。

基于这市场的需求, ARM 公司推出了其全新的基于ARMv7 架构的32 位Cortex-M3微控制器内核。紧随其后,ST(意法半导体)公司就推出了基于Cortex-M3 内核的MCU—STM32。STM32 凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多Cortex-M3 MCU 中脱颖而出,成为最闪亮的一颗新星。STM32 一上市就迅速占领了中低端MCU 市场,受到了市场和工程师的无比青睐,颇有星火燎原之势。

作为一名合格的嵌入式工程师,面对新出现的技术,我们不是充耳不闻,而是要尽快吻合市场的需要,跟上技术的潮流。如今STM32 的出现就是一种趋势,一种潮流,我们要做的就是搭上这趟快车,让自己的技术更有竞争力。

51 与STM32 架构的区别

我们先普及一个概念,单片机(即MCU)里面有什么。一个人最重要的是大脑,身体的各个部分都在大脑的指挥下工作。MCU 跟人体很像,简单来说是由一个最重要的内核加其他外设组成,内核就相当于人的大脑,外设就如人体的各个功能器官。

下面我们来简单介绍下51 和STM32 的结构。

51 系统结构框图


QQ图片20191019162908.png

图1 51 系统结构框图

我们说的51 一般是指51 系列的单片机,型号有很多,常见的有STC89C51、AT89S51,其中国内用的最多的是STC89C51/2,下面我们就以STC89C51 来讲解,并以51 简称。

内核

51 由一个IP 核和片上外设组成,IP 核就是上图中的CPU,片上外设就是上图中的:时钟电路、SFR 和RAM、ROM、定时/计数器、并行I/O 口、串行I/O 口、中断系统。IP核跟外设之间由系统总线连接,且是8bit 的,速度有限。

51 内核是上个世纪70 年代intel 公司设计的,速度只有12M,外设是IC 厂商(STC)在内核的基础上添加的,不同的IC 厂商会在内核上添加不同的外设,从而设计出各具特色的单片机。这里intel 属于IP 核厂商,STC 属于IC 厂商。我们后面要讲的STM32 也一样,ARM 属于IP 核厂商,ARM 给ST 授权,ST 公司在Cortex-M3 内核的基础上设计出STM32 单片机。

外设

我们在学习51 的时候,关于内核部分接触的比较少,使用的最多的是片上外设,我们在编程的时候操作的也就是这些外设。

编程的时候操作的寄存器位于SFR 和RAM 这个部分,其中SFR(特殊功能寄存器)占有128 字节(实际上只用了26 个字节,只有26 个寄存器,其他都属于保留区),RAM占有128 字节,我们在程序中定义的变量就是放在RAM 中。其中SFR 和RAM 在地址上是重合的,都是在80~FF 这个地址区间,但在物理区间上是分开的,所以51 的RAM 是有256 个字节。

编写好的程序是烧写到ROM 区。剩下的外设都是我们非常熟悉的IO 口,串口、定时器、中断这几个外设。

STM32 系统结构框图

QQ图片20191019163147.png

图2 STM32 系统结构框图

内核

在系统结构上,STM32 和51 都属于单片机,都是由内核和片上外设组成。只是STM32 使用的Cortex-M3 内核比51 复杂得多,优秀得多,支持的外设也比51 多得多,同时总线宽度也上升到32bit,无论速度、功耗、外设都强与51。

从结构框图上看,对比51 内核只有一种总线,取指和取数共用。Cortex-M3 内部有若干个总线接口,以使CM3 能同时取址和访内(访问内存),它们是:

指令存储区总线(两条)、系统总线、私有外设总线。有两条代码存储区总线负责对代码存储区(即FLASH 外设)的访问,分别是I-Code 总线和D-Code 总线。

I-Code 用于取指,D-Code 用于查表等操作,它们按最佳执行速度进行优化。

系统总线(System)用于访问内存和外设,覆盖的区域包括SRAM,片上外设,片外RAM,片外扩展设备,以及系统级存储区的部分空间。

私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。

还有一个MDA 总线,从字面上看,DMA 是data memory access 的意思,是一种连接内核和外设的桥梁,它可以访问外设、内存,传输不受CPU 的控制,并且是双向通信。简而言之,这个家伙就是一个速度很快的且不受老大控制的数据搬运工,这个在51 里面是没有的。

外设

从结构框图上看,STM32 比51 的外设多得多,51 有的串口、定时器、IO 口等外设STM32 都有。STM32 还多了很多特色外设:如FSMC、SDIO、SPI、I2C 等,这些外设按照速度的不同,分别挂载到AHB、APB2、APB1 这三条总线上

小结

从内核和外设这两大方面来比较,STM32 之于51 就是一个升级版的单片机。它适应市场,引流潮流,在中低端的微控制器中流光溢彩。

转贴自网络



工程师
2019-10-19 22:25:38     打赏
2楼

很不错的建议


工程师
2019-10-24 18:51:03     打赏
3楼

学习一下


高工
2019-10-26 23:25:00     打赏
4楼

学习学习


工程师
2019-10-27 23:01:56     打赏
5楼

看看


助工
2019-11-04 22:28:53     打赏
6楼

接着看楼主的连载


工程师
2019-11-07 22:07:07     打赏
7楼

51我都还没学明白


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]