声明
作者博客中具有"原创"标志的属个人所著,仅为个人学习记录整理所得,不涉及任何商业用途。在撰写过程中,包括但不限于会引用第三方图片、链接、表格等用于辅助讲解、分析等为目的行为,若此行为侵犯了您的权益,请您私信告知作者予以修正。创作不易,转载时请标注作者与来源,非经允许,不得用于盈利目的。
技术交流、学习、分享、使用等需遵守中华人民共和国相关法律法规、中华民族基本道德和基本网络道德规范。作者坚决反对和抵制一切不负责任的言行和违法犯罪行为,包括但不限于激进、破坏、低俗、广告等。一经转载,即表示您已经接受本声明!需自行承担一切风险与责任。
一、什么是STM32
STM32,其实就是ST(意法半导体)公司推出的32位微控制器,M就是Microelectronics的缩写,也经常称为MCU。
大家要注意下,STM32只是MCU的一员而已,NXP、TI等公司推出的相关产品也属于MCU的一员,开发方式都是大同小异的,只是不同厂商而已,就像手机有小米、华为等,都属于手机,只是品牌不同而已。
二、体系架构
STM32大多采用ARM(Advanced RISC Machine,是一种RISC Reduced Instruction Set Computing架构)公司的Cortex-M系列内核,大家都知道ARM公司只设计内核,SOC厂商根据ARM公司设计的内核在进行芯片的封装。
Cortex主要有四大类:
参考项 | Cortex-A (Application) | Cortex-R (Real-Time) | Cortex-M (Microelectronics) | Cortex-X (超大核) |
特点 | 高时钟频率 长流水线 高性能 多核处理 虚拟化支持 大小核设计 NEON SIMD指令集 安全性 等 | 较高时钟频率 较长的流水线 实时性强 低延迟 硬实施能力 高可靠性 多核设计 向量处理器支持 等 | 时钟频率较低 通常较短的流水线 超低功耗 低成本 精简指令集 小尺寸 实时性能 多核设计 等 | 更高时钟频率 更高性能 加大缓存 等 |
应用场景 | 智能手机 平板电脑 数字电视 等 | 军工 汽车电子 无线基带 硬盘控制器 等 | 工控 传感器 消费电子 物联网 医疗器械 等 | 智能手机 平板电脑 等 |
注:Cortex-X系列目前资料较少,按现有的资料分析,个人感觉Cortex-X更像是Cortex-A的plus版本,目前主流的SOC,如:骁龙Gen3芯片,就采用了Cortex-X4的超大核。
三、硬件平台
在后续的文章中,作者使用的硬件平台为:野火STM32F429挑战者(第一代),作为实验平台,野火的资料还是挺全的,有兴趣的朋友可以关注下野火的官网:EmbedFire东莞野火电子技术有限公司 – 野火电子https://embedfire.com/四、参考资料
在后续文章中,主要参考野火开发板相关的资料,以及ST公司的官方手册。阅读原厂的SOC手册结合野火通俗易懂的讲解,学习还是挺快的。以下资料在野火的官网都有支持,大家可以下载参考。
《STM32 库开发实战指南——基于野火挑战者开发板》
《STM32F4xx中文参考手册》1-2
《STM32F429_427中文数据手册》
《PM0214_STM32F4xx-Cortex_M4内核参考手册》
《STM32M4 programming manual》
五、学习建议
其实学习STM32,包括嵌入式等。最主要的是多写代码、多测试、多调,不要怕犯错,一个优秀的码农,不是靠写了多少行代码,个人觉得是看你写了多少BUG。写BUG很正常,要学会分析BUG,学会如何避免,这才是关键,逻辑代码谁都会写,往往是莫名其妙的BUG往往会让你学到很多东西,让你学会如何分析、总结、避免等,这是不可多得的财富。其次就是将基础打牢,基础包括C语言、中断、时钟、接口等等,搞设备虽然很多时候也是在写一些逻辑性代码,但是往往出现BUG的时候,抛开逻辑性问题就是底层问题,所以基础很重要。
大道至简,殊途同归,所以学习起来也不是那么复杂,掌握好学习方法和技巧,一起共同进步!
以上所述皆为作者个人理解,作者文笔和理解能力有限,难免存在理解错误或描述不清的地方,还请各位朋友多多海涵。也烦请阅读的朋友可以指出作者的问题,希望能和各位朋友一起共同进步,若是方便也可以在评论区留下您宝贵的意见或给作者发送私信一起探讨问题,作者在此提前谢过各位!