STM32系列MCU,写寄存器Or利用固件库

发布者:GoldenSerenity最新更新时间:2024-09-18 来源: elecfans关键字:STM32系列  MCU  寄存器  固件库 手机看文章 扫描二维码
随时随地手机看文章

写在开头的话:

最近心血来潮,打算重新捡起老本行,结果发现很多都忘记了。干脆重新开始学习,并做个从零开始的笔记了。


STM32系列MCU

STM32系列芯片包括F0/F1/F2/F3/F4/F7/L0/L1/L4/H7等系列芯片芯片。不同系列的芯片适用于不同的应用场景。F0/L0基于ARM Cortex®-M0,F1/F2/L1系列基于ARM Cortex®-M3,F3/F4/L4系列基于ARM Cortex®-M4,F7/H7基于ARM Cortex®-M7。L系列表示超低功耗,H表示超高性能(对应就是高功耗了),F就是个折中方案了,性能不错,功耗也不高。

其他的先不管,F1系列芯片主要分类如下:

·超值型STM32F100 - 24 MHz CPU,具有电机控制和CEC功能

·基本型STM32F101 - 36 MHz CPU,具有高达1MB的Flash

·连接型STM32F102 – 48 MHz CPU具备USB FS device接口

·增强型STM32F103 - 72 MHz CPU,具有高达1MB的Flash、电机控制、USB和CAN

·互联型STM32F105/107 - 72 MHz CPU,具有以太网MAC、CAN和USB 2.0 OTG

STM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:

具体信息可查阅网站https://www.stmcu.com.cn/。

RTT操作系统

官网的简介:

RT-Thread是一款来自中国的开源嵌入式实时操作系统,由国内一些专业开发人员从2006年开始开发、维护,除了类似FreeRTOS和UCOS的实时操作系统内核外,也包括一系列应用组件和驱动框架,如TCP/IP协议栈,虚拟文件系统,POSIX接口,图形用户界面,FreeModbus主从协议栈,CAN框架,动态模块等,因为系统稳定,功能丰富的特性被广泛用于新能源,电网,风机等高可靠性行业和设备上,已经被验证是一款高可靠的实时操作系统。RT-Thread实时操作系统遵循GPLv2+许可证,实时操作系统内核及所有开源组件可以免费在商业产品中使用,不需要公布应用源码,没有任何潜在商业风险。

RT-Thread操作系统源码风格与linux一致,在官方提供的源码中,包含有诸多芯片的工程示例,LPC系列和STM32F系列的很多。再者RT-Thread代码开源,又有那么详细的资料,如果遇到官方bsp下没有的芯片,对于动手能力强的同学,自己动手移植也比较方便。而且官方提供了详细的中文文档,对于英语不太好的同学简直就是一个福音。而且,RT-Thread提供了丰富的组件,使用者可以非常方便的实现诸如GUI、网络协议栈、Modbus甚至是SQLite数据库等功能。后续使用的时候再细细体会它的强大之处了。

写寄存器Or利用固件库

嵌入式的编程,往下说就是操作MCU的寄存器。而固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道,向上提供用户函数调用的接口(API)。相对于固件库的方式,直接写寄存器的代码更为简洁,只需要对指定的寄存器进行需要的操作就可以了,但是对于STM32来说,寄存器多达数百个,记起来也是一件非常让人头疼的事情。ST推出了官方固件库,固件库将这些寄存器底层操作都封装起来,提供一整套接口,你不需要去知道操作的是哪个寄存器,你只需要知道调用哪些函数即可。关于写寄存器还是利用固件库去开发哪个好,一直都有争议,只能说存在即为合理,各有各的好处,我个人比较懒,不太喜欢去记那些寄存器都是啥。再者,我也不是专门搞STM32的,要是用写寄存器的方式开发的话,过一段时间不弄,再回来估计又得花些时间对着文档看了。所以在后续的博客,我也都会利用固件库开发。当然,用不用是一回事儿,根据官网技术文档,操作寄存器的方式是必须要会的。个人建议,还是需要学会看硬件文档,看官方的技术资料,而不是遇到问题就百度。学会看官方的技术文档后,遇到问题解决起来将会事半功倍。

点亮LED

点亮LED,首先自然是安装Keil了。当然,使用其他工具也可以,对于我来说,我还是比较钟情于Keil。我现在使用的是Keil5,编译工具链为MDK-ARM v5.24。开发板为淘宝上找的便宜的不能再便宜的一块STM32C8T6开发板,引脚都要自己焊。下载线为ST-Link v2。根据淘宝商提供的硬件资料,这个板子PB12连接了一个LED灯,LED另外一端连接了上拉电阻,即LED在PB12低电平时点亮。


废话不说了,Keil的安装和破解,网上多的是,随便找个教程,走一走就完了。

第一步,创建工程

打开Keil后,首先需要创建个工程。点击project->New μVision Project。

填写工程名

选择芯片,如果没有你要的芯片,就需要到官网上去下载,然后安装。

选择需要用到的功能,Core、Startup和GPIO,可以看到下面有警告,GPIO依赖FrameWork和RCC,也要去勾选上就好了。

然后确定,工程就创建成功了。

第二步,增加main.c文件到工程中

点击如下按钮,创建一个新文件,并保存文件到工程目录中。

点击工程管理按钮,管理工程

点击Add Files 把main.c加入到Source Group 1下,Target 1和Source Group 1都可以修改,改成一个合适的名字。

第三部,编写main.c 文件

#include'stm32f10x.h'


关键字:STM32系列  MCU  寄存器  固件库 引用地址:STM32系列MCU,写寄存器Or利用固件库

上一篇:STM32用串口下载后,不小心写保护和读保护了,如何解锁?
下一篇:应用笔记|STM32U575/585 MCU 硬件开发入门

推荐阅读最新更新时间:2026-03-19 12:38

STM32系列MCU,写寄存器Or利用固件库
写在开头的话: 最近心血来潮,打算重新捡起老本行,结果发现很多都忘记了。干脆重新开始学习,并做个从零开始的笔记了。 STM32系列MCU STM32系列芯片包括F0/F1/F2/F3/F4/F7/L0/L1/L4/H7等系列芯片芯片。不同系列的芯片适用于不同的应用场景。F0/L0基于ARM Cortex®-M0,F1/F2/L1系列基于ARM Cortex®-M3,F3/F4/L4系列基于ARM Cortex®-M4,F7/H7基于ARM Cortex®-M7。L系列表示超低功耗,H表示超高性能(对应就是高功耗了),F就是个折中方案了,性能不错,功耗也不高。 其他的先不管,F1系列芯片主要分类如下: ·超值型STM32F100
[单片机]
<font color='red'>STM32</font><font color='red'>系列</font><font color='red'>MCU</font>,写<font color='red'>寄存器</font>Or利用<font color='red'>固件库</font>
第9章 初识STM32固件库—零死角玩转STM32-F429系列
本章参考资料:《STM32F4xx参考手册》、《STM32F4xx规格书》、《Cortex-M3权威指南》, STM32标准库帮助文档:《stm32f4xx_dsp_stdperiph_lib_um.chm》。 在上一章中,我们构建了几个控制GPIO外设的函数,算是实现了函数库的雏形,但GPIO还有很多功能函数我们没有实现,而且STM32芯片不仅仅只有GPIO这一个外设。如果我们想要亲自完成这个函数库,工作量是非常巨大的。ST公司提供的标准软件库,包含了STM32芯片所有寄存器的控制操作,我们直接学习如何使用ST标准库,会极大地方便控制STM32芯片。 9.1 CMSIS标准及库层次关系 因为基于Cortex系列芯片采用的
[单片机]
第9章 初识<font color='red'>STM32</font><font color='red'>固件库</font>—零死角玩转STM32-F429<font color='red'>系列</font>
STM32入门系列-存储器与寄存器介绍
介绍两部分内容: 什么是存储器映射 什么是寄存器及寄存器映射 为了让大家对存储器与寄存器有一个更清楚的认识,并且为之后使用 C 语言来访问 STM32 寄存器内容打下基础。等明白了如何使用 C 语言封装底层寄存器,也就为后面学习库函数的开发做好了铺垫。 什么是存储器映射 程序存储器、数据存储器、寄存器和I/O端口排列在同一顺序的4GB地址空间内。这就是我们曾提到过的被控总线的连接部分,而编程时就是操作这一块地方。存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射。 STM32F103ZET6 数据手册中存储器映射图如下所示。 从上图中可以看到
[单片机]
STM32入门系列-创建寄存器模板
介绍如何使用 KEIL5 软件创建寄存器模板, 方便之后使用寄存器方式来操作STM32开发板上的LED,让大家创建属于自己的寄存器工程模板。 获取工程模板的基础文件 首先我们在电脑任意位置创建一个文件夹,命名为“寄存器模板创建”,然后在其下面新建 2 个文件夹,如下: Obj 文件夹: 用于存放编译产生的 c/汇编/链接的列表清单、 调试信息、hex文件、预览信息、封装库等文件。 User 文件夹: 用于存放用户编写的 main.c、 STM32F1 启动文件、stm32f10x.h头文件。 我们需要将寄存器工程模板所需的基础文件 main.c、STM32F1 启动文件及stm32f10x.h 头文件放入到
[单片机]
<font color='red'>STM32</font>入门<font color='red'>系列</font>-创建<font color='red'>寄存器</font>模板
基于STM32从零写操作系统系列---基于寄存器写串口驱动
目的 尝试基于寄存器层面,编写串口的驱动。用这种方式编写串口驱动,有点类似于使用汇编语言。面向的是每一个单独的寄存器,通过读、改、写的手段,配置寄存器。但是这种方式能够更接近硬件,用硬件的思维编程。 相对于《基于STM32从零写操作系统系列---使用C语言》,这章重新调整了文件结构,让项目文件更好管理和维护。主要使用了makefile的嵌套编译方法来编译多目录下的代码文件。 分析 1.Makefile嵌套编译 首先简单来看一下文件结构: 再看一下顶层Makefile,主要差异如下: 各子目录下的Makefile比较简单 其中需要注意的是: 在windows的cmd命令行中for命令用于查找
[单片机]
基于<font color='red'>STM32</font>从零写操作系统<font color='red'>系列</font>---基于<font color='red'>寄存器</font>写串口驱动
STM32 系列MCU 不同型号的移植步骤解析
STM32 系列MCU 不同型号的移植! 第一步 更换启动文件: 第二步 修改宏定义: 图 1 或者修改stm32f10x.h 具体修改如下: 图2 第三步 修改系统主频率: 文件:system_stm32f10x.c 具体修改如下: 图 3 第四步 修改外部晶振源: 文件:stm32f10x.h 具体修改如下: 图 4 第五步 定时器需要根据以上修改的系统主频率进行对应的修改。 其他: 修改 Flash 地址 文件:misc.h 具体修改如下: 图 5 与以下配置一致: IAP 设置步骤 一、 IAP 工程设置 1、修改main 中的按键触发键 2、修改下载串口 二、 下载工程设置 1、修改程序入
[单片机]
<font color='red'>STM32</font> <font color='red'>系列</font><font color='red'>MCU</font> 不同型号的移植步骤解析
使用STM32微控制器系列中的DAC生成音频和波形之应用实例
《使用DAC生成正弦波形》 1、说明 本示例分步说明如何生成正弦波形。 正弦波形也称作单频正弦波音,它是一种纯音或绝对音。在确定听觉系统的各种响应时,正弦音一般用作刺激源。 2、准备数字模式的正弦波形 要准备数字模式的波形,需要进行一些数学运算。这里的目标是产生正弦波的 10 个数字模式数据(采样),变化范围为 0 到 2*PI。 采样间隔为 (2*PI)/ ns (采样数)。 sin(x) 的结果值在 -1 到 1 之间,经过必要的重新校准后,可以生成 0 和 0xFFF 之间(对应电压范围为 0 V 到 3.3 V)的正向正弦波。 经过线性转换后,数字输入会转换为 0 到 VREF+ 之间的输出电压。 各 DAC 通道
[单片机]
使用<font color='red'>STM32</font><font color='red'>微控制器</font><font color='red'>系列</font>中的DAC生成音频和波形之应用实例
基于STM32系列MCU使用软件模拟I2C步骤
一、Bit Bang 关于 Bit Bang 的解释:Use software to control serial communication at general-purpose I/O pins,简单来讲就是使用软件通过 IO 脚去实现 I2C 的时序从而使用 I2C 协议进行通信。 这样做的好处是可以突破硬件上的限制,例如芯片不具有硬件 I2C 模块,或者硬件 I2C 模块损坏,又或者使用硬件 I2C 模块时布线非常麻烦。坏处是需要写代码模拟时序,根据不同的硬件平台和不同的时钟频率,代码中的部分参数是不一样的。 二、代码分析 以下代码基于 STM32 系列 MCU 使用软件模拟 I2C 的步骤如下: 1、设置 GPI
[单片机]
基于<font color='red'>STM32</font><font color='red'>系列</font><font color='red'>MCU</font>使用软件模拟I2C步骤
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved