如何从快速51单片机转战STM32

所需积分/C币:26 2017-11-27 17:55:45 3.91MB PDF
49
收藏 收藏
举报

你可能此前一直学习或者从事的工作都是使用的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 芯片。
更多电源资料分享请加qq:858280174电源资料分享qq群:610792805 但调整一下,这个不适会很快过去的 1先看看51和STM32具有的相同类型资源是哪些。根据你对51 的熟悉程度,你会从STM32的手册上看到。这些往往是较简单的,也是最 容易理解的。比如IO口线控制,等等。 少2STM32高级一些的资源,往往也是需要较多精力去理解的。这可以 在入门后再行学习,比如USB,SDO等 4编程方式的不同,比如在51,用置位或者复位指令就可以很方便 的控制O,而在STM32,由于所有资源的功能都和该资源对应的32位寄存 器组的操作有关系。因此对于资源的设置和操作都可能需要操作一个或者多个 寄存器,如果用多条指令来控制的话,会引起阅读的障碍,以及日后代码维护 复杂,因此ST公司引入了库函数的概念。用执行库函数的方式解决复杂的资 源操作的问题。 4STM32例程的MDK工程都有相似的程序结构,结合手册多看例 程,会使你快速的形成对STM32例程模板的认识,这个认识一旦形成,剩下 的代码细节就好比是你预测到的填空题目。 当你做好了想学习新平台的准备,那就义无反顾的投入 CORETEX-M3的 怀抱吧。它会使你进步到个新的境界。带给你愉悦的技术亨受。 如何迅速入门STM32单片机? 网上有大神说如果会51单片机和C语言一天可入门STM32,仅一天的时 间,是否有真的这么快。这个要看自己给自己定的入门的标准了。 我眼中的入门:(前提是你学过51单片机和C语言) 1知道参考官方的什么资料来学习,而不是陷入一大堆资料中无从下手。 回回回 J更多资料请加q号:2464846717 306件资料分享群:67818 可就遇 微信扫一扫关注;电源研发精莢圈 微信扫一扫美注:张飞实战电子 已突破5电源工程师关注 已突破5W+电子工栏师美注 大牛每天分享开关电源知识与经验 大牛每天分享硬件研发知识与经验 更多电源资料分享请加qq:858280174电源资料分享qq群:610792805 >2知道如何参考官方的手册和官方的代码来独立写自己的程序,而不是 味的看到人家写的代码就觉得人家很牛逼。 p3消除对STM32的恐惧,消除对库开发的恐惧,学习是一个快乐而 富有成就感的过程。 学习木文时,配合《STM32中文参考手册》GPO章节一起阅读,效果会 更佳,特别是涉及到寄存器说明的部分。 1、51与STM32简介 51是嵌入式学习中一款入门级的精典MCU,因其结构简单,易于教学, 且可以通过串口编程而不需要额外的仿真器,所以在教学时被大量采用,至今很 多大学在嵌入式教学中用的还是51。51诞生于70年代,属于传统的8位 单片机,如今,久经岁月的洗礼,既有其辉煌又有其不足。现在的市场宀品竞争 激烈,对成本极其敏感,相应地对MCU的要求也更苛刻:功能更多,功耗更 低,易用界面和多任务。面对这些要求,S1现有的资源就显得得抓襟见肘了。 所以无论是高校教学还是市场需求,都急需一款新的MCU来为这个领域注入 新的活力。 基于这市场的需求,ARM公司推出了其全新的基于ARM7架构的32 位Coteⅹ-M微控制器内核。紧随其后,ST(意法半导体)公司就推出了基 于Co比ex-M3内核的MCU一STM32。STM32凭借其产品线的多样化 极高的性价比、简单易用的库开发方式,迅速在众多 Cortex-M3MCU中脱 颖而出,成为最闪亮的一颗新星。STM32一上市就迅速占领了屮低端MCU市 场,受刭∫市场和工程师的无比青睐,颇有星火燎原之势 回回回 更多资料请加q号:2464846717 306件资料分享群:67818 可就遇 微信扫一扫关注;电源研发精莢圈 微信扫一扫美注:张飞实战电子 已突破5电源工程师关注 已突破5W+电子工栏师美注 大牛每天分享开关电源知识与经验 大牛每天分享硬件研发知识与经验 更多电源资料分享请加qq:858280174电源资料分享qq群:610792805 作为·名合格的嵌入式工程师,面对新出现的技术,我们不是充耳不闻,而 是要尽快吻合市场的需要,跟上技术的潮流。如今STM32的出现就是一种趋 势,一种潮流,我们要做的就是搭上这趟快车,让自己的技术更有竞争力。 51与STM32架构的区别 我们先普及一个概念,单片机(即MCU)里面有什么。一个人最重要的是 大脑,身体的各个部分都在大脑的指挥下工作。MCU跟人体很像,简单来说是 由一个最重要的内核加其他外设组成,内核就相当于人的大脑,外设就如人体的 各个功能器官。 下面我们来简单介绍下51和STM32的结构。 51系统结构 系统结构框图 时钟源 时钟电路 sRR和R OM 定时/计数 系统总线 cpU 并行Io口 串行Io口 中断系统 PO P1 P2 P3 TXD RXD MT。T1 张实战电子 回回回 更多资料请加q号:2464846717 306件资料分享群:67818 可就遇 微信扫一扫关注;电源研发精莢圈 微信扫一扫美注:张飞实战电子 已突破5电源工程师关注 已突破5W+电子工栏师美注 大牛每天分享开关电源知识与经验 大牛每天分享硬件研发知识与经验 更多电源资料分享请加qq:858280174电源资料分享qq群:610792805 我们说的51一般是指51系列的单片机,型号有很多,常见的有 STC8qC51、AT8qS51,其中国内用的最多的是STC8qC51/2,下面我 就以STC8qC51来讲解,并以51简称。 内核 51出一个|P核和片上外设组成,|P核就是上图中的CPU,片上外设就 是上图中的:时钟电路、SFR和RAM、ROM、定时/计数器、并行O口、 串行′O口、中断系统。伊P核跟外设之间由系统总线连接,且是8b的,速 度有限 51内核是上个世纪70年代itel公司设计的,速度只有12M,外设是 C厂商(STC)在内核的基础上添加的,不同的C厂商会在内核上添加不同 的外设,从而设计出各具特色的单片机。这里itel属于|P核厂商,STC属 于1C厂商。我们后面要讲的STM32也一样,ARM属于|P核厂商,ARM给 ST授权,ST公司在 Cortex-M3内核的基础上设计出STM32单片机 外设 我们在学习51的时候,关于内核部分接触的比较少,使用的最多的是片上 外设,我们在编程的时候操作的也就是这些外设 编程的时候操作的寄存器位于SFR和RAM这个部分,其中SFR(特殊功 能寄存器)占有128字节(实际上只用了26个字节,只有26个寄存器 其他都属于保留区),RAM占有128字节,我们在程序中定义的变量就是放 回回回 更多资料请加q号:2464846717 306件资料分享群:67818 可就遇 微信扫一扫关注;电源研发精莢圈 微信扫一扫美注:张飞实战电子 已突破5电源工程师关注 已突破5W+电子工栏师美注 大牛每天分享开关电源知识与经验 大牛每天分享硬件研发知识与经验 更多电源资料分享请加qq:858280174电源资料分享qq群:610792805 在RAM中。其中SFR和RAM在地址上是重合的,都是在80~FF这个地 址区间,但在物理区间上是分开的,所以51的RAM是有256个字节 编写好的程序是烧写到ROM区。剩下的外设都是我们非常熟悉的1O口, 串口、定时器、中断这几个外设。 STM32系统结构 STM32系统结构框图 ICode Fash接口 Flash DCode Corte·M3 Syster - SRAM DMA1 DMA FSMC SDIO 通道1 通道2 AHB我桥接2 桥接1 APB2 APB 1 通 复位和时钟 控制RcC ADC1 G DAC SPRmS GPIOD PWR SP12/2S DMA请求 ADC3 GPIOE BKP TWDGI JSART1 GPIOF CAN wwDG SPI1 GPIOG USB RIC TIMI EXTI12C2 TIM DMA2 TIME AFIo 2c1 TIMG GPIOA UARTS TIMS UART4 TIM4 USART3 TIM3 通1 USART2 TIM2 通道2 通通5 DMA请求 张确战电子 内核 在系统结构上,STM32和51都属于单片机,都是由内核和片上外设组 成。只是STM32使用的Coteⅹ-M內核比51复杂得多,优秀得多,支持 回回回 更多资料请加q号:2464846717 306件资料分享群:67818 可就遇 微信扫一扫关注;电源研发精莢圈 微信扫一扫美注:张飞实战电子 已突破5电源工程师关注 已突破5W+电子工栏师美注 大牛每天分享开关电源知识与经验 大牛每天分享硬件研发知识与经验 更多电源资料分享请加qq:858280174电源资料分享qq群:610792805 的外设也比51多得多,同时总线宽度也上升到32bi,无论速度、功耗、外 设都强与51。 从结构框图上看,对比51内核只有一种总线,取指和取数共用。 Co比tex-M3内部有若干个总线接口,以使CM3能同时取址和访内(访问内 存),它们是 指令存储区总线(两条)、系统总线、私有外设总线。有两条代码存储区总 线负责对代码存储区(即FASH外设)的访问,分别是-C0de总线和D-Code 总线。 -Coε用于取指,D-Code用于査表等操作,它们按最佳执行速度进行优 化。 系统总线( Systen)用于访问内存和外设,覆盖的区域包括SRAM,片上 外设,片外RAM,片外扩展设备,以及系统级存储区的部分空间。 私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也 在系统级存储区 还有一个MDA总线,从字面上看,DMA是 data emory access的意 思,是一种连接内核和外设的桥梁,它可以访问外设、内存,传输不受CPU的 控制,并且是双向通信。简而言之,这个家伙就是一个速度很快的且不受老大控 制的数据搬运工,这个在51里面是没有的 外设 从结构框图上看,STM32比51的外设多得多,51有的串口、定时器、 1O口等外设STM32都有。STM32还多了很多特色外设:如FSMC、SDO 回回回 更多资料请加q号:2464846717 306件资料分享群:67818 可就遇 微信扫一扫关注;电源研发精莢圈 微信扫一扫美注:张飞实战电子 已突破5电源工程师关注 已突破5W+电子工栏师美注 大牛每天分享开关电源知识与经验 大牛每天分享硬件研发知识与经验 更多电源资料分享请加qq:858280174源资料分享qq群:610792805 SP、12C等,这些外设按照速度的不同,分别挂载到AHB、APB2、APB1这 条总线上 3、小结 从内核和外设这两大方面来比较,STM32之于51就是一个升级版的单 片杋。它适应市场,引流潮流,在中低端的微控制器中流光溢彩。 2、学习方法的区别 学习51用寄存器,学习STM32用库。 以前我们在学习51的时候,用的是寄存器编程的方法,想要实现什么效果, 直接往寄存器里面赋值,优点是直观,简单粗暴,知道自己具体干了啥,心里踏 实 直接操作寄存器之所以在51上可行,究其原因,我想有两点: 》151主频不高,资源有限,必须注重程序执行的效率,只能直接操作 寄存器。关键的地方还得用汇编,不适合用固件库。 要知道当初我们学习51单片机的吋候用的还是汇编,连现在的C编程都 不是,就更別说什么库函数编程 251功能简单,寄存器不多。以国内普及最广的STc89c52为例, 寄存器全部加起来不到30个。按照功能区分来记的话,可以把每个寄存器背 的滚瓜烂熟,并且寄存器每一位的功能都可以记得住,在编程的时候做到了然 于胸。 现在从51过度到STM32的学习,很多人还是喜欢沿用51的学习方法 接受不了库,在学习库的时候陷入迷糊之中,来回几个月下来,都不知道到底有 没学会STM32,因为在这一路的学习屮都是在调用库函数,压根就没有操作过 寄存器,心里面很不踏实。其实大家在调用库函数的时候心中难道就没有疑问 库的底层是怎么实现的?难道就没有勇气对库的底层一探究竞。可最后当我们开 回回回 更多资料请加q号:2464846717 306件资料分享群:67818 可就遇 微信扫一扫关注;电源研发精莢圈 微信扫一扫美注:张飞实战电子 已突破5电源工程师关注 已突破5W+电子工栏师美注 大牛每天分享开关电源知识与经验 大牛每天分享硬件研发知识与经验 更多电源资料分享请加qq:858280174电源资料分享qq群:610792805 始跟踪库函数底层的时候,看到一堆的宏定义、结构体、指针、各种的文件包含, 而且注释全部都是英文的,是不是又心生忌惮。 鉴于此,我想用两个原因来总结下很多初学者畏惧库不愿意用库的原因 》1C语言知识点的欠缺 库在实现寄存器映像时使用的宏定义,强制类型转换,在定义寄存器时使用 的结构体,在外设初始化函数时使用的指针,在组织头文件时使用的条件编译等 C语言知识,在大学课程屮很少涉及,大多数老师也基本是不讲。在一些简单 的51单片机编程中又很少会用到这些知识。学单片机,做嵌入式开发其实80% 的工作都跟C语言编程相关,剩下的20%的工作就是阅读各种数据手册,熟悉 各种硬件外设。所以掌握这些基本的C语言知识,是嵌入式学习中一道迈不过 去的坎,STM32的库则给了我们一次提升C的机会。凡是可以从书木中找到 的,相信我们基本都可以学会,很多初学者并不是不够聪明或者勤奋,只是缺少 方向性的指导罢了。对于这欠缺的知识点我们稍微花点时间就可以掌握,剩下的 就是不断地实践调试。这里我为大家推荐一本C语言的书籍《C和指针》。 p2程序架构设计思想的欠缺 这个比较难搞,很多C语言学习得挺好好的人,也比较难掌握。还好我们 遇到了STM32的库,这给了我们一个学习和提升C语言绝佳的机会。库的整 个架构是如何搭建起来的,代码上是如何如何一步一步写出来的:从寄存器映像 开始,到寄存器的封装,然后到函数的编写,到每个外设函数对应的驱动文件, 这里面涉及到了大量的条件编译,文件包含的思想,对应刚写过几行51单片机 的初学者来说简直就是噩梦。但是,如果你把这一系列的关系弄明白了,那么对 库的整个架构也了解的差不多了,以后你就不用嚷嚷着说要操作寄存器∫ 如果你一开始个喜欢用库,对库开发很忌惮,那么请自问:是个是我的C 语学得不够好。库是一种全新的学习方法,是一种潮流,我更把它看做是与C 语言的又一次历练和提升。是否用库,只差你一个闪亮的回眸。 3、用寄存器点亮LED 回回回 更多资料请加q号:2464846717 306件资料分享群:67818 可就遇 微信扫一扫关注;电源研发精莢圈 微信扫一扫美注:张飞实战电子 已突破5电源工程师关注 已突破5W+电子工栏师美注 大牛每天分享开关电源知识与经验 大牛每天分享硬件研发知识与经验

...展开详情
试读 69P 如何从快速51单片机转战STM32
立即下载 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
如何从快速51单片机转战STM32 26积分/C币 立即下载
1/69
如何从快速51单片机转战STM32第1页
如何从快速51单片机转战STM32第2页
如何从快速51单片机转战STM32第3页
如何从快速51单片机转战STM32第4页
如何从快速51单片机转战STM32第5页
如何从快速51单片机转战STM32第6页
如何从快速51单片机转战STM32第7页
如何从快速51单片机转战STM32第8页
如何从快速51单片机转战STM32第9页
如何从快速51单片机转战STM32第10页
如何从快速51单片机转战STM32第11页
如何从快速51单片机转战STM32第12页
如何从快速51单片机转战STM32第13页
如何从快速51单片机转战STM32第14页

试读结束, 可继续读6页

26积分/C币 立即下载