是搬家的好时机;8位快死了;当您以5美元的价格购买带有STM32F103的板卡时,STM32F103是功能强大的32位ARM微控制器(甚至带有USB!),毫无疑问,时代已经改变了。
您已经有了一些很好的答案,但是主要是我要说“忘记组装”,几乎要说“忘记关心cpu的工作原理”-有一天,您将需要深入研究(特定的优化或用于调试),但ARM内核(根据设计)运行C代码的表现异常出色,并且您很少需要深入研究内胆。
这确实意味着您将花费一定的时间来应对编译器(尤其是链接器和makefile)的问题,以掩盖您的晦涩错误,但它们都是可以克服的。
直到您真正需要优化的那一天,关于ARM的工作原理(即ARM cpu书籍)的内容都很繁琐,并且并不十分有趣(而且您会惊讶地发现,拥有32位寄存器和PLL的情况很少见) d CPU时钟在100MHz的范围内。
“拆弹” ARM指令集比起更新的“ Thumb2”(在大多数现代微控制器级ARM(Cortex)上可以找到)更容易阅读反汇编代码,但同样也体现了汇编语言指令的内在特性。大部分消失在背景中;如果您拥有正确的工具集(尤其是带有断点/单个步骤等的体面的源代码级调试器),则根本就不必担心它是ARM。
一旦进入了32位寄存器和32位数据总线宽度的世界,而您想在片上获得的所有东西,您就再也不需要回到8位CPU了。基本上,“轻松”和编写代码比提高效率更易读常常没有任何惩罚。
但是...外围设备...是的,还有麻烦。
您肯定会在现代MCU上玩很多东西,其中很多都是花哨的东西。您经常会发现复杂的世界,远远超出了AVR,PIC和8051片上外围设备。
一个可编程计时器?不,有八个!DMA?12个具有可编程优先级和突发模式,链接模式以及自动重载和.. and .. and ...的通道怎么样
I2C?I2S?数十个引脚混合选项?重新编程片上闪存的十五种不同方式?当然!
通常感觉就像您从饥荒过渡到外围设备的盛宴一样,通常您会欣赏整块芯片,但却很少使用(因此,时钟门控)。
如今,片上硬件的数量(以及仅一个供应商的芯片产品线的变化)就令人难以置信。一个芯片供应商当然会倾向于重复使用IP块,因此,一旦您熟悉某个品牌,它就会变得更容易,但是“如今做起来很疯狂”。
如果外围设备及其交互(以及DMA和中断,总线分配以及and ...)非常复杂(有时,与数据表中所描述的不完全一样),那么工程师经常会选择最喜欢的ARM MCU和倾向于仅仅因为他们熟悉外围设备和开发工具而坚持使用它。
良好的库和开发工具(即使用适当的调试器进行快速的编译+调试周期)和大量可运行的示例代码项目对于当今选择ARM MCU绝对至关重要。似乎大多数供应商现在都拥有极其便宜的评估板(
正如我确定的那样,一旦您超越了ARM的微控制器级别并进入SOC级别(例如Raspberry Pi / etc风格的SOC),规则就会完全改变,这一切与您要使用的Linux类型有关跑,因为 - 有难以察觉的例外 - 你会吠叫疯狂尝试别的。
基本上; 无论在这次演出中为您预先选择的CPU是多少(可能),请从几个不同的供应商(TI,STM,Freescale等公司)中购买一些基于超便宜Cortex的评估板,并且对提供的示例代码有所了解。
最后的建议;一旦在数据表中找到第3页或第3页,该页描述了您正在使用的确切零件号芯片的引脚混合选项,您可能需要将其打印出来并粘贴在墙上。在一个项目的后期发现,由于引脚混合无法实现某种外围设备的组合是没有意思的,有时信息被掩埋了,您发誓他们会试图隐藏它:-)