当前位置:首页 > 嵌入式 > 嵌入式大杂烩
[导读]点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看嵌入式笔记!来源:华为云社区 作者: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 )。
换一批
延伸阅读

SHT11是Sensirion公司推出的数字式温湿度传感器,采用CMOSens™技术将温湿度传感、信号放大、A/D转换、校准数据存储及I²C类串行接口集成于单芯片。与标准I²C协议不同,SHT11的接口为“类似I²C”的...

关键字: SHT11 单片机 I²C

很多嵌入式开发者天天写单片机代码、烧录程序调试功能,却很少真正把它的完整运行逻辑串起来。你可能知道单片机里有CPU、RAM、ROM,也知道写的C代码会被编译成机器指令,但你未必清楚从按下复位键的那一刻开始,芯片内部的每一...

关键字: 单片机 芯片

在2000年到2010年的单片机黄金时代,消费电子、工业控制设备里跑的几乎都是8位、16位的早期MCU芯片。那时候没有现在成熟的硬件加密核、OTA固件签名这类方案,开发者却要面对固件被轻易破解、山寨产品快速抄板的行业痛点...

关键字: 单片机 MCU

很多单片机开发者在调试通信功能时,都遇到过类似的“玄学”问题:同样的代码在实验室里跑完全正常,拿到量产设备里就随机丢包;I2C传感器偶尔返回乱码,用示波器抓波形却看不出明显异常;UART串口在高波特率下,只要设备靠近电机...

关键字: 单片机 传感器

在汽车电子、石油钻探和工业控制领域,单片机往往需要在-40℃至125℃的极端温差下持续工作。片内SRAM通常只有几十KB,难以满足数据采集和缓冲需求,而外部SRAM提供了容量扩展的可能,但高温环境对其稳定性构成了严峻挑战...

关键字: 工业高温场景 单片机

在物联网与工业控制设备的实际运行中,系统状态的可观测性直接决定了故障排查的效率。然而,许多低成本单片机受限于内部RAM资源,难以长期驻留大量运行日志,一旦遭遇异常重启或意外断电,内存中的调试信息便会瞬间丢失,导致售后团队...

关键字: 单片机 NOR Flash

在工业控制与物联网终端设备中,EEPROM存储的计数器数据(如设备开机次数、运行时长)常因突发断电导致数值丢失或错乱。传统方案采用页写入模式,单次修改需重写整页数据(通常64-128字节),不仅加速存储器磨损(EEPRO...

关键字: EEPROM 单片机

在资源极度受限的8位单片机场景中,64B RAM往往是整机系统最稀缺的硬件资源——除去堆栈、全局变量和寄存器映射占用的空间后,留给用户自定义数据的可用内存通常不足30B,想要同时实现3路传感器的实时缓存几乎是常规编程思路...

关键字: 8位 单片机 RAM

外部脉冲明明到了,计数却偶尔少一次,这类故障常被误判成传感器抖动。单片机中断链路如果把屏蔽窗口、标志位和优先级混在一起处理,真实边沿很容易在软件忙碌时消失。

关键字: 单片机 中断 屏蔽窗口

在嵌入式产品的全生命周期里,STM32的Flash就像设备内部的“数字保险柜”,既存放着工程师熬夜写出来的核心固件代码,也保存着设备运行过程中积累的关键校准参数、用户配置数据。

关键字: STM32单片机 单片机
关闭