ImageVerifierCode 换一换
格式:PDF , 页数:53 ,大小:2.63MB ,
资源ID:16119353      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16119353.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(一天入门STM资料下载.pdf)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

一天入门STM资料下载.pdf

1、现在的市场产品竞争激烈,对成本极其敏感,相应地对 MCU 的要求也更苛刻:功能更多,功耗更低,易用界面和多任务。面对这些要求,51 现有的资源就显得得抓襟见肘了。所以无论是高校教学还是市场需求,都急需一款新的 MCU 来为这个领域注入新的活力。基于这市场的需求,ARM 公司推出了其全新的基于 ARMv7 架构的 32 位 Cortex-M3微控制器内核。紧随其后,ST(意法半导体)公司就推出了基于 Cortex-M3 内核的MCUSTM32。STM32 凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多 Cortex-M3 MCU 中脱颖而出,成为最闪亮的一颗新星。STM32

2、 一上市就迅速占领了中低端 MCU 市场,受到了市场和工程师的无比青睐,颇有星火燎原之势。作为一名合格的嵌入式工程师,面对新出现的技术,我们不是充耳不闻,而是要尽快吻合市场的需要,跟上技术的潮流。如今 STM32 的出现就是一种趋势,一种潮流,我们要做的就是搭上这趟快车,让自己的技术更有竞争力。1.1.1 51与 STM32架构的区别我们先普及一个概念,单片机(即 MCU)里面有什么。一个人最重要的是大脑,身体的各个部分都在大脑的指挥下工作。MCU 跟人体很像,简单来说是由一个最重要的内核加其他外设组成,内核就相当于人的大脑,外设就如人体的各个功能器官。下面我们来简单介绍下 51 和 STM3

3、2 的结构。1.51系统结构51 系统结构框图零死角玩转零死角玩转 STM32 F1 系列系列第第 3 页 共页 共 53 页页图 1 51 系统结构框图我们说的 51 一般是指 51 系列的单片机,型号有很多,常见的有 STC89C51、AT89S51,其中国内用的最多的是 STC89C51/2,下面我们就以 STC89C51 来讲解,并以51 简称。内核内核51 由一个 IP 核和片上外设组成,IP 核就是上图中的 CPU,片上外设就是上图中的:时钟电路、SFR 和 RAM、ROM、定时/计数器、并行 I/O 口、串行 I/O 口、中断系统。IP核跟外设之间由系统总线连接,且是 8bit的

4、,速度有限。51 内核是上个世纪 70 年代 intel 公司设计的,速度只有 12M,外设是 IC 厂商(STC)在内核的基础上添加的,不同的 IC 厂商会在内核上添加不同的外设,从而设计出各具特色的单片机。这里 intel 属于 IP 核厂商,STC 属于 IC 厂商。我们后面要讲的 STM32 也一样,ARM 属于 IP 核厂商,ARM 给 ST 授权,ST 公司在 Cortex-M3 内核的基础上设计出STM32 单片机。外设外设我们在学习 51 的时候,关于内核部分接触的比较少,使用的最多的是片上外设,我们在编程的时候操作的也就是这些外设。零死角玩转零死角玩转 STM32 F1 系列

5、系列第第 4 页 共页 共 53 页页编程的时候操作的寄存器位于 SFR 和 RAM 这个部分,其中 SFR(特殊功能寄存器)占有 128字节(实际上只用了 26 个字节,只有 26 个寄存器,其他都属于保留区),RAM占有 128字节,我们在程序中定义的变量就是放在 RAM 中。其中 SFR 和 RAM 在地址上是重合的,都是在 80FF 这个地址区间,但在物理区间上是分开的,所以 51 的 RAM 是有256 个字节。编写好的程序是烧写到 ROM 区。剩下的外设都是我们非常熟悉的 IO 口,串口、定时器、中断这几个外设。2.STM32系统结构STM32 系统结构框图图 2 STM32 系统

6、结构框图内核内核在系统结构上,STM32 和 51 都属于单片机,都是由内核和片上外设组成。只是STM32 使用的 Cortex-M3 内核比 51 复杂得多,优秀得多,支持的外设也比 51 多得多,同时总线宽度也上升到 32bit,无论速度、功耗、外设都强与 51。零死角玩转零死角玩转 STM32 F1 系列系列第第 5 页 共页 共 53 页页从结构框图上看,对比 51 内核只有一种总线,取指和取数共用。Cortex-M3 内部有若干个总线接口,以使 CM3 能同时取址和访内(访问内存),它们是:指令存储区总线(两条)、系统总线、私有外设总线。有两条代码存储区总线负责对代码存储区(即 FL

7、ASH 外设)的访问,分别是 I-Code 总线和 D-Code 总线。I-Code 用于取指,D-Code 用于查表等操作,它们按最佳执行速度进行优化。系统总线(System)用于访问内存和外设,覆盖的区域包括 SRAM,片上外设,片外RAM,片外扩展设备,以及系统级存储区的部分空间。私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。还有一个 MDA 总线,从字面上看,DMA 是 data memory access的意思,是一种连接内核和外设的桥梁,它可以访问外设、内存,传输不受 CPU 的控制,并且是双向通信。简而言之,这个家伙就是一个速度很快的且不受老大

8、控制的数据搬运工,这个在 51 里面是没有的。外设外设从结构框图上看,STM32 比 51 的外设多得多,51 有的串口、定时器、IO 口等外设STM32 都有。STM32 还多了很多特色外设:如 FSMC、SDIO、SPI、I2C 等,这些外设按照速度的不同,分别挂载到 AHB、APB2、APB1 这三条总线上。3.小结从内核和外设这两大方面来比较,STM32 之于 51 就是一个升级版的单片机。它适应市场,引流潮流,在中低端的微控制器中流光溢彩。1.2 学习方法的区别学习 51 用寄存器,学习 STM32 用库。以前我们在学习 51 的时候,用的是寄存器编程的方法,想要实现什么效果,直接往

9、寄存器里面赋值,优点是直观,简单粗暴,知道自己具体干了啥,心里踏实。直接操作寄存器之所以在 51 上可行,究其原因,我想有两点:1、51 主频不高,资源有限,必须注重程序执行的效率,只能直接操作寄存器。关键的地方还得用汇编,不适合用固件库。零死角玩转零死角玩转 STM32 F1 系列系列第第 6 页 共页 共 53 页页要知道当初我们学习 51 单片机的时候用的还是汇编,连现在的 C 编程都不是,就更别说什么库函数编程。2、51 功能简单,寄存器不多。以国内普及最广的 STC89C52 为例,寄存器全部加起来不到 30 个。按照功能区分来记的话,可以把每个寄存器背的滚瓜烂熟,并且寄存器每一位的

10、功能都可以记得住,在编程的时候做到了然于胸。现在从 51 过度到 STM32 的学习,很多人还是喜欢沿用 51 的学习方法。接受不了库,在学习库的时候陷入迷糊之中,来回几个月下来,都不知道到底有没学会 STM32,因为在这一路的学习中都是在调用库函数,压根就没有操作过寄存器,心里面很不踏实。其实大家在调用库函数的时候心中难道就没有疑问,库的底层是怎么实现的?难道就没有勇气对库的底层一探究竟。可最后当我们开始跟踪库函数底层的时候,看到一堆的宏定义、结构体、指针、各种的文件包含,而且注释全部都是英文的,是不是又心生忌惮。鉴于此,我想用两个原因来总结下很多初学者畏惧库不愿意用库的原因。1、C 语言知

11、识点的欠缺库在实现寄存器映像时使用的宏定义,强制类型转换,在定义寄存器时使用的结构体,在外设初始化函数时使用的指针,在组织头文件时使用的条件编译等 C语言知识,在大学课程中很少涉及,大多数老师也基本是不讲。在一些简单的 51 单片机编程中又很少会用到这些知识。学单片机,做嵌入式开发其实 80%的工作都跟 C 语言编程相关,剩下的20%的工作就是阅读各种数据手册,熟悉各种硬件外设。所以掌握这些基本的 C 语言知识,是嵌入式学习中一道迈不过去的坎,STM32 的库则给了我们一次提升 C 的机会。凡是可以从书本中找到的,相信我们基本都可以学会,很多初学者并不是不够聪明或者勤奋,只是缺少方向性的指导罢

12、了。对于这欠缺的知识点我们稍微花点时间就可以掌握,剩下的就是不断地实践调试。这里我为大家推荐一本 C 语言的书籍C 和指针。2、程序架构设计思想的欠缺这个比较难搞,很多 C 语言学习得挺好好的人,也比较难掌握。还好我们遇到了STM32 的库,这给了我们一个学习和提升 C 语言绝佳的机会。库的整个架构是如何搭建起来的,代码上是如何如何一步一步写出来的:从寄存器映像开始,到寄存器的封装,然后到函数的编写,到每个外设函数对应的驱动文件,这里面涉及到了大量的条件编译,文件包含的思想,对应刚写过几行 51 单片机的初学者来说简直就是噩梦。但是,如果你把这一系列的关系弄明白了,那么对库的整个架构也了解的差

13、不多了,以后你就不用嚷嚷着说要操作寄存器了。如果你一开始不喜欢用库,对库开发很忌惮,那么请自问:是不是我的 C 语学得不够好。库是一种全新的学习方法,是一种潮流,我更把它看做是与 C 语言的又一次历练和提升。是否用库,只差你一个闪亮的回眸。零死角玩转零死角玩转 STM32 F1 系列系列第第 7 页 共页 共 53 页页1.3 用寄存器点亮 LED为了顺利过渡到库开发,在 STM32 编程的开始,我们对照 51 点亮一个 LED 的方法,给大家演示一下 STM32 如何用操作寄存器的方法点亮一个 LED,然后再慢慢讲解到底什么是库,让大家知道库跟寄存器的关系。1.3.1 用 51点亮一个 LE

14、D在用 STM32 点亮一个 LED 之前,我们先来复习下用 51 如何点亮一个 LED。硬件上我们假设 51 单片机的 P0 口的第 0 位接了一个 LED,负逻辑亮。如果我们要点亮这个 LED,代码上我们会这么写:1 P0=0XFE;/总线操作点亮 LED这时候我们就把 LED 点亮了,如果要关掉 LED,则是:1 P0=0XFF;/总线操作关闭 LED这里面我们用的是总线操作的方法,即是对 P0 口的 8 个 IO 同时操作,但起作用的只是 P00。除了这种总线操作的方法,我们还学习过位操作,利用 51 编译器的关键字 sbit,我们可以定义一个位变量:1 sbit LED=P00;那么 LED=0;就点亮了 LED,LED=1;就关闭了 LED。为了让程序看起来见名知义,我们定义两个宏:1#define ON02#define OFF 1点亮和关闭 LED 的代码就变成了:1 LED=ON;/位操作点亮 LED2 LED=OFF;/位操作关闭 LED稍微整理下代码,整体的效果就是:1/假设 51 单片机的 P00 口接 LED,负逻辑

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1