stm32——寄存器操作,蜂鸣器原理

目录

一、STM32寄存器开发流程

不管是图形界面还是函数库开发,本质都是对硬件的寄存器进行配置,只不过函数库开发和图形界面开发都是ST公司的开发人员帮用户提前配置好了硬件的寄存器,并把配置过程封装在函数接口中,所以用户可以直接调用对应的函数接口来提高开发效率。

使用函数库开发(标准库 or HAL库)或者STM32CubuMX图形工具开发的缺点是代码运行效率比较低,因为函数内部可能嵌套调用其他函数,而且函数调用过程会占用堆栈空间。所以项目对实时性要求比较高的情况下,开发人员应直接通过配置寄存器的方式控制硬件,目的是提高程序的运行效率以及节约内存。

(1)查看原理图,找到控制发光二极管的芯片的IO口,LED0 -- PF9引脚,其他引脚类似!!

(2)分析原理图,理解硬件的控制原理(复杂外设还需要结合数据手册),输出低电平就亮

(3)查阅ST公司提供的芯片的中文参考手册,目的是为了了解当前的外设都有哪些寄存器!

(4)查阅ST公司提供的芯片的中文参考手册,目的是掌握外设的相关寄存器的使用流程!!




(5)查阅芯片的数据手册以及中文参考手册,计算出需要使用的外设的寄存器的物理地址!

(6)通过GPIO外设的寄存器的地址来对寄存器进行读写操作,需要把寄存器地址转为指针

(7)对外设的寄存器的指针进行访问即可,需对转换后的寄存器地址进行间接访问(解引用)

二、利用函数库提高开发效率

利用寄存器对硬件进行控制,需要计算出每个寄存器的物理地址,并把寄存器的地址转换为指针,然后对指针进行操作,流程是比较复杂,所以可以利用ST提供的寄存器指针来对硬件进行控制。

ST公司把MCU内部的所有的外设的寄存器地址都已经提前转换好并且存储在一个文件中,就是stm32f4xx.h头文件。

可以发现,GPIOF是一个宏定义,宏定义的值是一个结构体指针,指针指向的结构体内部有10个成员,每个成员都是32bit,其实就是GPIOF端口的寄存器组,所以用户可以直接包含stm32f4xx.h头文件,使用头文件中定义好的结构体指针。

可以发现,开发效率得到了提高,但是提升的不明显,所以ST公司帮用户把配置外设寄存器的动作都封装成函数接口,用户调用函数接口即可。

三、分析ST公司的函数库的源码

ST公司把每个外设的寄存器的配置都封装成若干个函数,并且把这些函数接口集成到了外设的源文件中,一个外设是有自己的独立的源文件和头文件,ST公司对文件的命名是有规律的,外设源文件命名: stm32f4xx_gpio.c and 外设头文件命名: stm32f4xx_gpio.h

作为用户而言,如果想要掌握某个外设的接口的使用,则需要阅读外设的源文件和头文件!!!

对GPIO引脚进行置位操作(输出高电平)

对GPIO引脚进行复位操作(输出低电平)

对GPIO引脚进行置位/复位操作

对GPIO引脚电平进行翻转操作

四、蜂鸣器的原理和应用


五、触摸按键的原理和应用



相关推荐
共享家95278 分钟前
LRU 缓存的设计与实现
开发语言·c++
brave and determined12 分钟前
MCU学习Day24——STM32G030多路ADC DMA采集深度解析:完全可配置序列器与不完全可配置序列器的陷阱与抉择
stm32·单片机·嵌入式硬件·dma·adc·hal·多通道采集
d111111111d16 分钟前
通过操作地址,来进行STM32的写入GPIO端口值
stm32·单片机·嵌入式硬件
奔跑吧邓邓子25 分钟前
【C语言实战(77)】STM32实战:解锁传感器数据采集的C语言奥秘
c语言·stm32·开发实战·传感器数据采集
小刘爱玩单片机27 分钟前
【stm32简单外设篇】- 土壤湿度传感器
c语言·stm32·单片机·嵌入式硬件
草莓熊Lotso38 分钟前
Linux 基础开发工具入门:软件包管理器的全方位实操指南
linux·运维·服务器·c++·人工智能·网络协议·rpc
小龙报1 小时前
算法通关指南:数据结构和算法篇 --- 队列相关算法题》--- 1. 【模板】队列,2. 机器翻译
c语言·开发语言·数据结构·c++·算法·学习方法·visual studio
晚秋大魔王1 小时前
基于python的jlink单片机自动化批量烧录工具
前端·python·单片机
d111111111d1 小时前
STM32外设学习--TIM定时器--编码器接口
stm32·嵌入式硬件·学习
晨非辰1 小时前
【数据结构初阶】--从排序算法原理分析到代码实现操作,参透插入排序的奥秘!
c语言·开发语言·数据结构·c++·算法·面试·排序算法