嵌入式入门 -第1章 学嵌入式从STM32开始

1.1 STM32简介

ARM公司简介

ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。公司的特色是只设计芯片,而不生产。它将技术受权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。 编程

这里写图片描述

 

图1-1

 

ARM(Advanced RISC Machines)有3种含义:数组

  • 一个公司的名称;
  • 一类微处理器的通称;
  • 一种技术的名称。

ARM微处理器的特色

(1)体积小、低功耗、低成本、高性能; 
(2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件; 
(3)大量使用寄存器,指令执行速度更快; 
(4)大多数数据操做都在寄存器中完成; 
(5)寻址方式灵活简单,执行效率高; 
(6)指令长度固定。缓存

ARM微处理器系列

ARM处理器的产品系列很是广,包括ARM七、ARM九、ARM9E、ARM10E、ARM11和Cortex等。以及其它厂商基于ARM体系结构的处理器,除了具备ARM体系结构的共同特色之外,每一系列提供一套特定的性能来知足设计者对功耗、性能、体积的需求。 安全

表 1-1 ARM 系列

 

这里写图片描述


基于ARMv7版本的ARM Cortex系列产品由A、R、M三个系列组成,具体分类延续了一直以来ARM面向具体应用设计CPU的思路。 
其中: 
A应用处理器(Application Processor )系列 
R实时控制处理(Real Time Control )系列 
M微控制器(Micro Controller )系列网络

 

  • CortexTM-R4处理器简介

该处理器是首款基于ARMv7架构的高级嵌入式处理器,其主要目标为产量巨大的高级嵌入式应用系统,如硬盘,喷墨式打印机,以及汽车安全系统等等。架构

  • CortexTM-R4F处理器简介

该处理器在CortexTM-R4处理器的基础上加入了代码错误校订(ECC)技术,浮点运算单元(FPU)以及DMA综合配置的能力,加强了处理器在存储器保护单元、缓存、紧密耦合存储器、DMA访问以及调试方面的能力。框架

  • CortexTM-A8处理器简介

该处理器是ARM公司所开发的基于ARMv7架构的首款应用级处理器,其特点是运用了可增长代码密度和增强性能的技术、可支持多媒体以及信号处理能力的NEONTM技术、以及可以支持Java和其余文字代码语言的提早即时编译的Jazelle@RTC技术。众多先进的技术使其适用于家电以及电子行业等各类高端的应用领域。函数

  • CortexTM-M3处理器简介

Cortex-M3处理器是一个低功耗的处理器,具备门数少,中断延迟小,调试容易等特色。它是为功耗和价格敏感的应用领域而专门设计的、具备较高性能的处理器,应用范围可从低端微控制器到复杂SoC。 
Cortex-M3处理器使用了ARMv7-M体系结构,采用了纯Thumb2指令的执行方式,具备极高的运算能力和中断相应能力,是一个可综合的、高度可配置的处理器。它包含了一个高效的哈佛结构三级流水线,可提供1.25DMIPS/MHz的性能。在一个具备32个物理中断的标准处理器上实现(0.13umMetro@50MHz),达到了突出的0.06mW/MHz能效比。 性能

这里写图片描述

 

图1-2基于Cortex-M3的MCU

 

 

表1-2ARM7与Cortex-M3的比较

 

这里写图片描述


Cortex-M3处理器在高性能内核基础上,集成了多种系统外设,能够知足不一样应用对成本和性能的要求。处理器是所有可综合、高度可定制的(包括物理中断、系统调试等),Cortex-M3还有一个可选的细粒度的(fine-granularity)存储器保护单元(MPU)和一个嵌入式跟踪宏单元(ETM)。 
为了下降成本,Cortex-M3处理器采用了与系统部件紧耦合的实现方法,来缩小芯片面积,其内核面积比现有的三级流水线内核缩小了30%。Cortex-M3处理器实现了Thumb-2指令集架构,具备很高的代码密度,可下降存储器需求,并能达到很是接近32位ARM指令集的性能。 
对于系统和软件开发,Cortex-M3处理器具备如下优点: 
(1)小的处理器内核、系统和存储器,可下降器件成本; 
(2)完整的电源管理,很低的功耗; 
(3)突出的处理器性能,可知足挑战性的应用需求; 
(4)快速的中断处理,知足高速、临界的控制应用; 
(5)可选的存储器保护单元(MPU),提供平台级的安全性; 
(6)加强的系统调试功能,能够加快开发进程; 
(7)没有汇编代码要求,简化系统开发; 
(8)宽广的适用范围:从超低成本微控制器到高性能Soc。 
Cortex-M3主要应用于汽车车身系统,工业控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域。目前最便宜的基于该内核的ARM单片机售价为1美圆。学习

 

1.2 为何学习 STM32

能够发现,在嵌入式领域 STM32 芯片介于低端和高端之间,它相对于普通的 8/16 位机有更多的片上外设,更先进的内核架构,能够运行 μC/OS 等实时操做系统 ;相对于可运行 Linux 操做系统的高端 CPU,其成本低,实时性强。这个定位使得 STM32 不只占领了大部分中端控制器的市场,更是成为提高开发者技术的优良过渡平台,为后续的学习打下坚实的基础。 
本节系统介绍了嵌入式工程师的技术成长路线,并详细介绍技术路线中的岗位设置和知识结构,让读者对于嵌入式工程师有一个全面系统地了解,并在此基础上引导工程师规划本身职业生涯。在本章的最后,做为承上启下的内容,从为何学习 STM32 和如何学习 STM32 这两个话题入手,引导读者开始对于 STM32 的库开发方式有个初步地理解。

1.2.1 嵌入式技术知识结构

嵌入式技术是专用计算机系统技术,它以应用为核心,以计算机技术为基础,软硬件都可裁剪,适用在对功能、稳定性、功耗有严格要求的系统之中。嵌入式技术的开发人员须要对整个计算机体系(从底层硬件到软件操做系统)都有了解,而在这个体系之中,每一个部分均可以分出一些小领域,于是技术要求很高,见图 1- 3。 

这里写图片描述

 

图 1- 3 嵌入式技术知识结构


这个图只是粗略地归纳了嵌入式技术的知识结构,但从中已经能够看出它涉及的知识面很是广,难怪众多学生甚至技术人员老是“迷茫”。很多电子专业出身的嵌入式技术人员主要从事硬件抽象层(中间层)的开发,这一层是沟通嵌入式系统的硬件层和软件操做系统的桥梁,于是主要的工做是开发驱动程序、板级应用支持、协调软硬件的开发,于是对软硬件都要有深刻的了解。

 

1.2.2 嵌入式工程师成长之路

1.从学生成为工程师

若但愿从事硬件抽象层的开发,应该如何学习这些知识,才能从学生过渡到工程师呢?见图 1- 2,对于但愿成为其余方向的嵌入式技术人员也能够参考。从图 1- 2 能够看出,越往上层深刻,就越接近于纯软件开发,但这并不表明嵌入式技术人员就不须要了解硬件,相反,上层的知识都是以底层为基础的,不少人说的“作嵌入式软件开发至少要读懂原理图”就是这个道理。 

这里写图片描述

 

图 1- 4 从事硬件抽象层开发的工程师成长之路

 

2.职业规划

在嵌入式技术领域的公司,除了工程师还分不少职业岗位。通常公司的研发部门职位见图 1- 3。 

这里写图片描述

 

图 1- 5嵌入式工程师的职业成长路线


通常须要 3 ~ 5 年过渡到下一级的岗位,在小公司里项目经理通常也兼任部门经理。部门经理不必定要懂技术,并非非由项目经理升职而成。直接与技术相关的是开发工程师和系统架构师,开发工程师会针对嵌入式技术的不一样领域有不一样的区分。在小公司里,熟悉软硬件的跨领域工程师很受欢迎,而大公司则分工明确,更看重在某领域研究得深刻的开发工程师。做为系统架构师,则须要熟悉整个嵌入式领域,可以协调不一样领域的开发工程师进行项目开发。 
对于职业规划,不一样的人有不一样的看法,状况千差万别,以上所述仅供读者参考。

 

1.3学习STM32须要哪些基础

首先要对C语言有必定的了解,不用学到精通,只要会使用一些简单的命令语句。好比赋值语句、if语句、for循环语句、while语句、一维数组、二维数组等。还有一点须要重点学习的是函数的定义、调用,参数的传递与参数的返回。推荐给你们一本学C语言的书籍《谭浩强C语言程序设计》,这本书也是不少大学里的教材,写的很详细。 
当你学会了C语言,说明你已经掌握了软件的基础了,接下来须要学习一些硬件的基础知识。能够到书店买两本数字电路与模拟电路相关的书籍,建议你不用学的太深,只要简单的了解能看懂原理图就能够了,等到你真正到工做岗位上,大的公司里软件开发人员和硬件设计人员都是分开的,只有专心作一件事情才能作的精益求精,有一个好的发展。若是你之前学过51单片机,你必定熟悉C语言、模拟电路和数字电路。那么你就能够直接学习STM32。须要注意的是咱们之前学习51单片机时都是直接操做寄存器,而如今咱们学习STM32大部分都是调用库函数。 
咱们对初学者的要求是具备基本的单片机基础,如 5一、AVR 等,曾使用 C 语言写过单片机程序,但不需精通。读者在学习 STM32 的时候,无需太担忧本身的基础,咱们更须要的是学习的勇气,须要的是拿下 STM32 的决心。试问,咱们刚开始学习最简单的单片机的时候,是否是也没基础呢,是否是所以就中止了本身学习的脚步了呢?不是的。咱们须要作的是认定一个目标,行动起来,坚持朝向目标的苦行,其中艰辛芳华,惟你自知。

1.4 如何学习 STM32

若是你去问业内人士,怎样学习STM32,他们都会说多实践,作多了天然就会了。但是我以为对于一名初学者,没有一点的理论基础,根本就无从下手,不知道从何作起。咱们常说实践是在有理论的指导下进行的,没有理论的实践是蛮干,没有实践的理论那是空谈。那么怎样得到理论知识那?最好的办法就是看视频教程与配套的书籍。建议初学者多看视频教程,一遍不会就看两遍。而后再仔细看看配套的书籍,当咱们有了理论基础,就能够动手实践了。实践也要由小到大,由浅入深的进行,别总想一步登天。知识都是一点一滴的逐渐积累起来的。 
由于 STM32 的开发方式较普通的单片机开发仍是有很大的不一样,因此学习时要注意以下几点 : 
1)转变思惟,适应使用固件库的开发方式,增强运用 C 语言的能力,创建工程意 
识。 
2)熟悉 Cortex-M 系列芯片架构,了解 CMSIS 标准,熟悉 STM32 的总线架构。 
3)掌握 I 2 C、SPI、SDIO、CAN、TCP/IP 等各类通讯协议,掌握了这些协议,开发软件驱动就变得相对容易了。 
上面有关的内容本教程都会详细讲解,但“纸上得来终觉浅,绝知此事要躬行”,读者亲自编程实践是不能少的。
基础入门篇能够帮助初学者快速上手 STM32,写出本身的应用程序。以点亮 LED 灯的实例,从软件工程的角度深刻剖析什么是固件库、为何使用固件库和怎样使用固件库 ;从 STM32 固件库、新建工程、编译和下载程序出发,了解如何操做 GPIO,让新手步步为营,尽享 STM32 的学习乐趣。

整套教程主要分为四部分:

1.入门篇 ,主要介绍STM32及环境搭建,新建工程以及下载代码及调试等; 
2.基础篇,主要讲解的是STM32F103VET6芯片内部的资源。包括(TIMER、CAN、ADC、DAC、RTC、DMA、USART等); 
3.外设篇,主要讲解的是外围芯片的使用方法。包(24C0四、FLASH芯片、红外发射与接收、MP三、FM收音机、USB通信、以太网、触摸屏等); 
4.系统篇,主要讲解ucosⅡ实时操做系统和ucgui图形支持系统的移植与使用方法。

1.5应用领域

1.销售终端

银行的读卡机、收银机、热敏打印机、票据验证、包裹跟踪、自动售货机。

2.身份识别设备

安全和生物特征识别、公路自动收费系统。

3.工业自动化

现场数据采集器、电表、可编程逻辑控制器(PLC)、工业缝纫机。

4.消费电子

计算机外设、游戏手柄、玩具、万能遥控器、卫星收音机、

5.建筑安防/消防/HVAC

报警系统、控制面板。

6.医疗

心脏监控、便携试仪器。

7.通讯领域

同声翻译系统、光纤接入控制、3G基站监控。

8.家电

电动自行车、变频空调、洗衣机。

9.仪器仪表

电子秤、电表、水表。

小贴士:寄存器与库函数的区别

首先,两个都是C语言。从51过渡过来的,就先说寄存器操做。每一个MCU都有本身的寄存器,51是功能比较简单的一种,相应的寄存器也比较少,咱们经常使用的就那么几个,像P0、P一、SMOD、TMOD之类的,这些存在于标准头文件reg.h里面。由于少,因此你们就直接去操做了。每一位对应的意义随便翻一下手册就看获得,甚至作几个小项目就记的很清楚了。因此作51开发的时候大多数都是直接操做寄存器。 
到了STM32,原理同样,也是有本身的寄存器,可是做为一款ARM内核的芯片,功能多了不少,寄存器天然也就多了不少,STM32的手册有1000多页,这时候想去像51那样记住每一个寄存器已经不现实了,因此ST的工程师就给你们提供了库函数这么一个东西。库函数里面把STM32的全部寄存器用结构体一一对应而且封装起来,并且提供了基本的配置函数。咱们要去操做配置某个外设的时候不须要再去翻眼花缭乱的数据手册,直接找到库函数描述拿来就能够用,这样就能把精力放在逻辑代码的开发上,而不是去费力的研究一个芯片的外设要怎么配置寄存器才能驱动起来。 
简单讲就是这些了,库函数是为了让开发者从大量繁琐的寄存器操做中脱离出来的一个文件包,在使用一个外设的时候让开发者直接去调用相应的驱动函数而不是本身去翻手册一个一个配置寄存器。 
有人说用库函数掌握不到芯片的精髓,仁者见仁智者见智。熟悉一款芯片是在不断的开发使用中逐渐了解并掌握的,调试的过程当中会遇到不少问题,会要求咱们去跟踪相关寄存器的状态,在整个框架都已经创建起来的基础上再去对照手册作具体到寄存器每一位的分析,代码对照现象,很快就能积累起来经验。

参考资料:http://www.makeru.com.cn/ 

相关文章
相关标签/搜索