STM32
[size=1em]介绍 STM32系列由意法半导体集团开发,基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M0,M0+,M3, M4和M7内核, 开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。全新STM32互联型(Connectivity)系列微控制器增加一个全速USB(OTG)接口,使终端产品在连接另一个USB设备时既可以充当USB主机又可充当USB从机;还增加一个硬件支持IEEE1588精确时间协议(PTP)的以太网接口,用硬件实现这个协议可降低CPU开销,提高实时应用和联网设备同步通信的响应速度。
[size=1em]系统作用
1、集成嵌入式Flash和SRAM存储器的ARM Cortex-M3内核。和8/16位设备相比,ARM Cortex-M3 32位RISC处理器提供了更高的代码效率。STM32F103xx微控制器带有一个嵌入式的ARM核,所以可以兼容所有的ARM工具和软件。
2、可变静态存储器。
3、嵌套矢量中断控制器(NVIC)
4、外部中断/事件控制器(EXTI)
5、时钟和启动:在启动的时候还是要进行系统时钟选择,但复位的时候内部8MHz的晶振被选用作CPU时钟。可以选择一个外部的4-16MHz的时钟,并且会被监视来判定是否成功。在这期间,控制器被禁止并且软件中断管理也随后被禁止。同时,如果有需要(例如碰到一个间接使用的晶振失败),PLL时钟的中断管理完全可用。
6、Boot模式:在启动的时候,Boot引脚被用来在3种Boot选项种选择一种:从用户Flash导入,从系统存储器导入,从SRAM导入。
7、电源供电方案:VDD ,电压范围为2.0V-3.6V,外部电源通过VDD引脚提供,用于I/O和内部调压器。VSSA和VDDA,电压范围为2.0-3.6V,外部模拟电压输入,用于ADC,复位模块,RC和PLL,在VDD范围之内(ADC被限制在2.4V),VSSA和VDDA必须相应连接到VSS和VDD。VBAT,电压范围为1.8-3.6V,当VDD无效时为RTC,外部32KHz晶振和备份寄存器供电(通过电源切换实现)。
8、电压调节:调压器有3种运行模式:主(MR),低功耗(LPR)和掉电
9、低功耗模式:STM32F103xx支持3种低功耗模式,从而在低功耗,短启动时间和可用唤醒源之间达到一个最好的平衡点。休眠模式:只有CPU停止工作,所有外设继续运行,在中断/事件发生时唤醒CPU;停止模式:允许以最小的功耗来保持SRAM和寄存器的内容。1.8V区域的时钟都停止,PLL,HSI和HSE RC振荡器被禁能,调压器也被置为正常或者低功耗模式。(通过六个超低功耗模式,STM32L系列产品能够在任何设定时间以最低的功耗完成任务。)
几款常见的stm32f103zet6板子:
Mini版
七星虫版
战舰板
[size=1em]如何学好STM32
1、准备好资料与开发板
学一款芯片首先想到的是买一块板子,可以根据情况选择,是具有许多外设的学习版还是精简的最小系统版,是要实惠的stm32f1还是计算速度强很多的stm32f4,也可以根据stm选型手册选择工程或者项目性能上满足要求的板子。至于资料,可以自行网上搜索stm32学习资料,淘宝上部分卖stm32的店家也会提供极为齐全的资料。
2、库开发与寄存器开发
stm32有两种“打开方式”——寄存器版本和库函数版本。寄存器比较接近底层,可以方便理解实现的原理,在某些循环操作中直接对寄存器操作可以提高速度;库函数则是把寄存器操作封装好,可读性强,易于跟人配合,使让开发变得简单。但因为时间不足,可能只来得及学一种,此时就要靠自己选择了。
3、要动手实践,要动手实践,要动手实践!
工科类的东西光看是不够的!外设如何驱动,找到芯片手册,照着时序图自己敲一遍;涉及到操作系统部分的内存管理与进程调用,找到源码仔仔细细研读几遍;算法如何实现,自己独立设计再动手去敲一敲就知道了;整体的工程思想和项目经验积累很重要。
4、注意事项
STM32偏难,不建议在没有单片机基础时直接入门。建议在有了51、arduino或者intorobot等较为简单的单片机一些基础后,再利用暑假或者其它充足的空余时间段里学习
[size=1em]具体学习
1、 阅读STM32文档。(建议读中文版)
学习的时候,关注两个比较重要的文档:《STM32F103xxx参考手册》,《STM32固件库使用手册》。
建议选读,但是前几章必读。存储器和总线架构、电源控制、备份寄存器、位和时钟控制,通用和复用功能I/O,中断和时间等等前几章一定要花时间阅读。后面章节,讲述的是具体的功能模块设计。如果我们用到哪个模块,就可以去阅读哪个模块。
2、设定一个入门计划,根据每个人的时间安排不同而不同。
如果您每天有充足的时间学习,那么可以规定自己尽快地能独立地进行简单的STM32开发。如果您每天只有业余时间来学习STM32,建议根据您的具体情况安排时间。毕竟计划时间如果安排太紧,反而收不到良好的效果,只能进入恶性循环,这是我们要避免的。但是建议,不管您有无充足的时间,都必须给自己做一个计划!!
[size=1em]学习思路(参考)
(1)安装STM32学习的软件,比如J-Link、Keilfor ARM(MDK)、ISP
(2)挑选部分例程的HEX,比如LED灯的例程HEX文件,下载到芯达STM32开发板中,观察两个LED灯的闪烁情况。这部分的操作,可以参考我们推出的相应的教程进行。
(3)准备几个常用的文档,比如《STM32的用户手册》,《STM32固件库使用手册》等文档。用于平时查阅。
(4)准备几个常用的文档,比如《STM32的用户手册》,《STM32固件库使用手册》等文档。用于平时查阅。
(5)查看例程的编写,看看例程是如何写的,自己可否修改下例程。
(6) Ucos-II的移植。
提前说一声恭喜。当你完成这些步骤以后,你就可以独立的操作了 END |