当前位置:首页 > 嵌入式 > 技术让梦想更伟大
[导读]关注、星标公众号,直达精彩内容来源:华为云社区作者:LongYorke❝摘要:从STM32新建工程、编译下载程序出发,让新手由浅入深,尽享STM32标准库开发的乐趣。❞自从CubeMX等图像配置软件的出现,同学们往往点几下鼠标就解决了单片机的配置问题。对于追求开发速度的业务场景下...

关注、星标公众号,直达精彩内容

来源:华为云社区

作者:LongYorke


摘要:从STM32新建工程、编译下载程序出发,让新手由浅入深,尽享STM32标准库开发的乐趣。

自从CubeMX等图像配置软件的出现,同学们往往点几下鼠标就解决了单片机的配置问题。对于追求开发速度的业务场景下,使用快速配置软件是合理的,高效的,但对于学生的学习场景下,更为重要的是知其然并知其所以然。

以下是学习(包括但不限于)嵌入式的三个重要内容,

1、学会如何参考官方的手册和官方的代码来独立写自己的程序。

2、积累常用代码段,知道哪里的问题需要哪些代码处理。

3、跟随大佬步伐,一步一个脚印。

首先:我们都知道编程时一般查的是《参考手册》,而进行芯片选型或需要芯片数据时,查阅的是《数据手册》。此外市面上所有关于STM32的书籍都是立足于前二者( Cortex内核手册)进行编著。

其次:要分清什么是内核外设与内核之外的外设,为了便于区分,按照网上的一种说法,将“内核之外的外设”以“处理器外设”代替。再者:如今很少使用标准库了,都是HAL库,但作为高校目前教学方式,

我们将以STM32f10xxx为例对标准库开发进行概览。

一、STM32 系统结构

STM32f10xxx 系统结构

内核IP

从结构框图上看,Cortex-M3 内部有若 干个总线接口,以使 CM3 能同时取址和访内(访问内存),它们是:指令存储区总线(两条)、系统总线、私有外设总线。有两条代码存储区总线负责对代码存储区(即 FLASH 外设)的访问,分别是 I-Code 总线和 D-Code 总线

I-Code 用于取指,D-Code 用于查表等操作,它们按最佳执行速度进行优化。

系统总线(System)用于访问内存和外设,覆盖的区域包括 SRAM,片上外设,片外 RAM,片外扩展设备,以及系统级存储区的部分空间。

私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。

还有一个 DMA 总线,从字面上看,DMA 是 data memory access 的意思,是一种连接内核和外设的桥梁,它可以访问外设、内存,传输不受 CPU 的控制,并且是双向通信。简而言之,这个家伙就是一个速度很快的且不受老大控制的数据搬运工。

处理器外设(内核之外的外设)

从结构框图上看,STM32 的外设有 串口、定时器、IO 口、FSMC、SDIO、SPI、I2C 等,这些外设按 照速度的不同,分别挂载到 AHB、APB2、APB1 这三条总线上。

二、寄存器

什么是寄存器?寄存器是内置于各个 IP 外设中,是一种用于配置外设功能的存储器,并且有想对应的地址。一切库的封装始于映射

是不是“又臭又长”,如果进行寄存器开发,就需要怼地址以及对寄存器进行字节赋值,不仅效率低而且容易出错。

来,开个玩笑。

你也许听说过“国际 C 语言乱码大赛(IOCCC)”下面这个例子就是网上广为流传的 一个经典作品:

#include 
 
main(t,_,a)char *a;{return!03?main(-79,-13,a main(-87,1-_,
main(-86,0,a 1) a)):1,t<_?main(t 1,_,a):3,main(-94,-27 t,a)
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在嵌入式系统工程领域,主要挑战在于在严格的时间约束下实现任务的确定性执行。微控制器通常需要同时执行复杂的数学运算,并管理高频的输入和输出。如果采用简单的定时方法,例如使用阻塞式的忙等待循环,常常会导致处理器饥饿问题,即一...

关键字: 信号发生器 嵌入式系统 STM32

本实验活动重点在于利用微控制器的模数转换器(ADC)外设来监测外部电压源。具体而言,该系统设计用于测量CR1220纽扣电池和5V USB总线供电电源的电压。对这些电平进行监测对于依赖电池作为备用电源的嵌入式系统非常有用,...

关键字: 电压分压器 噪声滤波器 STM32

本项目展示了我们在固件编程方面的初步工作。我们开发该项目,旨在通过实践操作更好地理解课程中的概念和应用。我们的项目名为“电子音调发生器”,通过一个小扬声器产生不同的声音。按下不同的按钮或组合按键,系统会生成不同频率,从而...

关键字: 扬声器 音频合成器 示波器 STM32

嵌入式系统,STM32内部Flash的擦写寿命始终是悬在开发者头顶的达摩克利斯之剑。STM32F103系列Flash典型擦写次数仅为10000次,若每次温度调整、参数变更都直接写入,按每日操作数十次计算,不足一年便逼近寿...

关键字: STM32 Flash

电池供电的物联网设备中,降低待机功耗是延长续航的核心课题。STM32的Stop模式提供了保留SRAM和寄存器内容的最低功耗状态,是实现“微安级待机、毫秒级唤醒”的关键技术。实测数据表明,STM32L4系列在Stop 2模...

关键字: STM32 低功耗

一切始于一个我不断在身边发现的常见问题——无论是亲密的朋友,还是我在健身训练的健身房圈子中。经过数周高强度的锻炼后,很多人都在问同一个问题:“我想要增肌的肌肉为什么没有增长,而那些我本意没想练的肌肉却反而变得酸痛?”

关键字: 可穿戴设备 机器学习 STM32

在STM32嵌入式控制中,PID控制器是温度、电机转速、平衡小车等闭环系统的核心算法。本文提供一份可直接移植的增量式PID代码模板,并分享工程中行之有效的参数整定方法。

关键字: STM32 PID控制器

在STM32软件开发中,ST官方提供两套固件库:HAL(Hardware Abstraction Layer)与LL(Low-Layer)。很多工程师困惑:两者除了API风格不同,运行效率和资源消耗究竟差多少?本文基于S...

关键字: STM32 HAL库 LL库

本项目是一个专为RT-Thread RT-Spark开发板设计的硬件与软件定制接口。它创建了一个交互式系统,通过物理输入(按钮)产生数字输出(LCD文本和LED信号)。通过连接外部面包板组件与开发板内置功能之间的桥梁,我...

关键字: LCD LED STM32

在STM32嵌入式开发中,精确延时是非常基础但又极其关键的功能。无论是驱动单总线传感器(比如DS18B20)、控制LCD屏幕时序、还是生成精确的脉冲信号,都需要用到微秒级甚至纳秒级精度的延时。很多新手刚开始使用STM32...

关键字: STM32 嵌入式
关闭