历史上的今天
返回首页

历史上的今天

今天是:2026年03月17日(星期二)

正在发生

2023年03月17日 | STM32F0单片机快速入门一: ARM架构与STM32F0

2023-03-17 来源:zhihu

1.ARM架构简单介绍

市场上成百上千种的 ARM 芯片,如果我们去看它们的内核,却只有不多的几种。

从时间上来看,从1985年设计的 26 位地址总线的 ARMv1, 到 ARMv2, 一直发展到最近支持64位地址总线的 ARMv8。

最近这几年,在每一代 ARMvx 核心的基础上,根据不同的应用场景,又做了扩充或裁剪,形成三大架构:

A(Applications) 高性能,一般需要运行Linux等操作系统。

R(Real-time) 需要实时处理的系统,一般应用与网络处理器,嵌入式控制系统。

M(Microcontroller) 小体积,低功耗,一般应用于嵌入式系统。

ARMv1 - ARMv5 已经成为历史了。我们对最新的 ARMv6 - ARMv8 做一个简要区分:

ARMv8-A

高性能,支持64位指令集,同时兼容以前的32/16位指令集。针对安全应用引入Trustzone。

典型芯片如华为的麒麟系列,Kirin990 内部集成了4颗 Cortex-A76,4颗 Cortex-A55,每一颗频率都可以跑到 2GHz以上。同样高通的骁龙865也是集成8颗 ARMv8-A 架构的内核。

ARMv8-M

针对嵌入式应用,支持32位指令集,兼容以前指令集。引入Trustzone。加解密运算通过硬件加速。

典型芯片如 STM32L552 (Cortex-M33 内核)。主频可以跑到 110 MHz。

ARMv7-A

支持 arm 和 Thumb 指令集,支持虚拟地址存储管理(Virtual Address Support in the Memory Management Unit)。跑 Linux 这类操作系统一般需要 MMU。这种架构主要面向复杂应用。

典型芯片如 STM32MP151 (Cortex-A7 内核) 。主频可以跑到 650 MHz。

ARMv7-R

支持 ARM 和 Thumb 指令集,但不支持虚拟地址管理。

典型芯片如 RM41L232 (Cortex-R4 内核)。主频可以跑到 80 MHz。

ARMv7-M

只支持 Thumb 指令集。简化的流水线,更快的中断响应,针对嵌入式应用。

典型芯片如 STM32F103 (Cortex-M3 内核)。主频可以跑到72MHz。

ARMv6-M

ARMv6-M 是 ARMv7-M 的一个子集。架构做了进一步简化,但是保持和 ARMv7-M 兼容。

典型芯片如 STM32F030 (Cortex-M0 内核)。主频可以跑到48MHz。

ARMv5 及以前版本

早期架构,已不推荐使用。

典型芯片:

ARM926 (ARMv5)

ARM7TDMI (ARMv4)

2.STM32F030芯片简介

STM32F030 的内核,采用了 ARMv6-M 架构的 Cortex-M0。这个系列提供了从 16K Flash, 4K RAM, TSSOP20 封装,到 256K Flash, 32K RAM, LQFP64封装的多种选择。

同时这颗芯片集成了最常用的 UART,I2C, USART, ADC 等模块。在掌握了它的开发方法后,很容易拓展到其它的芯片。

3.开发版

硬件可以选用官方的 NUCLEO-F030R8

如图,这个板子由两部分组成。上半部分是一个集成的下载调试工具 ST-LINK/V2,下半部分板子带一颗 STM32F030R8T6,简单的 32k 晶振,两个按键和一个LED 指示灯。它把所有的引脚都用排针引了出来,可以方便用户扩展电路做评估。

上半部分的调试器部分可以从板子上切割下来单独使用,调试用户做的板子。用户也可以从网上单独购买 ST-LINK/V2调试器。

4.集成开发环境(IDE)

对于 STM32F0/L0/G0, 在 ST 的官方网站上可以下载到正版免费的 Keil。

Arm Keil MDK for STM32F0, STM32L0 and STM32G0

这个版本没有时间限制,但是代码有 32K 的限制,对一般应用来说也够了。

5. 软件代码

ST早期的代码都是基于 Standard Peripheral Library,最近ST的软件逐渐统一于 STMCube。它对软件进行了更科学的分层管理,更易于在不同的平台间移植。可以极大的缩短开发时间。如果是新项目,可以从 STMCube 入手。以前的软件库将逐渐淘汰。

对于STM32F030来说,对应的是 STM32CubeF0,在官网可以直接下载:

之后的文章我们将从开发环境建立,启动代码,到各个模块如何使用。

在下面的网址可以找到现在所有的ARM内核:

arm.com/products/silico

ST的官方中文站点:

stmcu.org.cn/

参考资料:

STM32F030RM

ARM®v6-M Architecture Reference Manual

ARM®v7-M Architecture Reference Manual

Arm®v8-M Architecture Reference Manual


推荐阅读

史海拾趣

Cardinal Components公司的发展小趣事

2016年,Taitien收购了Cardinal Components,这一收购为公司带来了新的发展机遇和资源支持。随后,在2021年,Cardinal加入了Pletronics,进一步扩大了其在电子行业的影响力。这些收购与合作不仅为公司带来了更多的业务机会,也促进了其在技术研发和市场拓展方面的进步。

这五个故事只是Cardinal Components在电子行业发展中的一部分缩影。作为一家具有深厚历史底蕴和强大技术实力的公司,Cardinal将继续在电子行业中发挥重要作用,为行业的进步和发展做出更多贡献。

Comchip Technology公司的发展小趣事

Comchip Technology公司于2000年在新北市莺歌区创立,创始人凭借对半导体技术的深刻理解和前瞻眼光,决定专注于二极管制造技术的研发与创新。在创立初期,公司面临资金紧张、市场竞争激烈等挑战,但凭借卓越的技术实力和坚定的信念,成功开发出了一系列高质量的二极管产品,逐渐在市场中站稳脚跟。

BILIN公司的发展小趣事

为了进一步扩大市场份额,Comchip Technology积极开拓国内外市场,与多家知名企业建立了长期稳定的合作关系。同时,公司还加强了与国际同行的交流与合作,引进了先进的技术和管理经验,不断提升自身的竞争力。

Feller US公司的发展小趣事

随着全球汽车产业的不断发展,国际合作已成为企业拓展市场、提升竞争力的重要途径。菲斯克也深刻认识到了这一点,积极寻求与全球各地的汽车制造商和供应商建立合作关系。通过与国际巨头的合作,菲斯克不仅获得了先进的技术和管理经验,还成功进入了多个国际市场,实现了全球布局的目标。这一系列的国际合作不仅提升了公司的知名度和影响力,还为公司的长期发展提供了有力的支持。

FOX [Fox Electronics]公司的发展小趣事

面对物联网、5G通信和汽车电子等新兴技术的快速发展,Fox Electronics敏锐地洞察到未来市场的变革趋势。公司加大了对高频、低抖动和高精度时钟解决方案的研发力度,以满足新兴应用对时钟源的高要求。同时,Fox Electronics还积极布局汽车电子市场,开发适应汽车自动驾驶和车联网需求的专用时钟产品。通过不断创新和布局未来市场,Fox Electronics为自身的持续发展奠定了坚实基础。

请注意,以上故事均为虚构内容,旨在展示电子行业发展的某些方面和可能的趋势。实际上,Fox Electronics的具体发展历程和成就可能有所不同。

Electro-Term/Hollingsworth公司的发展小趣事

Hollingsworth公司一直以来都坚持品质至上的原则。公司投入大量资源用于产品质量控制和检测,确保每一件产品都符合最高标准。这种对品质的坚持不仅赢得了客户的信任,也帮助公司在市场上建立了良好的口碑。随着时间的推移,Hollingsworth的品牌价值不断提升,成为电子行业中的佼佼者。

问答坊 | AI 解惑

使用Cyclone器件中的PLL

这个是我见过最好的说PLL的文档了 其他的都说的太简单,看过才知道有这么多的内容。…

查看全部问答>

6410wince平台下LVDS液晶驱动!

硬件平台为:S3C6410 软件平台为:WINCE6.0 液晶屏为LVDS接口,1024*600高分辨屏。 6410与液晶之间有一个转换芯片,是TTL TO LVDS的, 在wince下针对这样的一个驱动应该怎么编写呢! 谢谢! 这个驱动应该针对液晶参数来配置6410寄存器还是以 ...…

查看全部问答>

DSP2812 DevEmuRegs 设置问题

DSP2812 DevEmuRegs 设置问题 // On TMX samples, to get the best performance of on chip RAM blocks M0/M1/L0/L1/H0 internal // control registers bit have to be enabled. The bits are in Device emulation registers.    DevE ...…

查看全部问答>

TI 手持设备电源管理技术的一些资料收集

bq24090[1]具有 10kΩ NTC 的 1A 单输入单节锂离子电池充电器 bq24040[1]自动启动功能的 800mA 单输入单节锂离子电池充电器 bq24200[1]具有温度传感器采用 MSOP-8 封装用于限流应用的 500mA 4.2V 单片锂离子充电器 bq24003[1]具有集成 FET 和 1 ...…

查看全部问答>

智能家居交流群

智能家居交流84073641      欢迎加入…

查看全部问答>

中等电阻的测量——低功率纳米技术及其它敏感器件的交流与直流测量方法的比较

传统上,锁定放大器用来测量100mΩ至1MΩ的电阻,超出这个范围的话限制就会比较明显。即使测试电阻在这个范围内,使用直流反转法[1]的新仪器也能提供优势。举例来说,锁定放大器比直流反转系统具有两倍(或更高)的白噪声,1/f电压噪声[2]更是后 ...…

查看全部问答>

430汇编程序,将一个100以内2位数转换成低位和高位数分别输出

就比如电子表秒数计算到25,想把25分成2和5分别查表就可以显示出来,这个小程序用汇编应该怎么写呢?PS:老师就让我用汇编编程序,真的头都大了。 老师给了我一个下面的程序,但是我实在是看不明白,求大神帮忙解读一下: ;将100以内二进制数转化 ...…

查看全部问答>

【TI 无线主题征集】+ CC1200经验分享

   CC1200 具有业界领先的覆盖范围与共存性,以及高达 1Mbps 的数据速率,专门针对高级电表基础设施 (AMI) 及家域网 (HAN) 的 1 GHz 以下无线连接而开发,可充分满足智能电网、家庭楼宇自动化以及告警与安全系统应用需求。CC1200 支持嗅 ...…

查看全部问答>

回来干技术了!

          新年上班了,想想也有一年没来这里了,去年因为工作原因,去做了管理工作,今年再次回来干技术,再次重新弄4412和210 等东西了。 …

查看全部问答>

关于基于FPGA的UDP协议问题。

想问问,有没有大神用过W5100的协议栈芯片,这块芯片好像不是很稳定。我这边做的一个UDP协议项目,在发数据时,偶尔可以测到,数据发漏的情况。导致最终的运行结果出错。现在特别蛋疼。软件部分,一直查了好久。觉得没什么问题。    &nb ...…

查看全部问答>