对寄存器操作方法的经验和其总结

发布者:TranquilMind88最新更新时间:2024-07-08 来源: elecfans关键字:寄存器  操作方法  STM32  函数库 手机看文章 扫描二维码
随时随地手机看文章

接触了一阵子的STM32函数库,使用起来挺方便的,但是很少有处理器会有函数库,大部分情况下还是要自己来对寄存器进行操作,所以还是不要生疏了对寄存器的操作。


对寄存器的操作有时候要考虑对其不同的位进行先后顺序不同的设置,因为这样可能达不到预期的效果,这个不太好总结,但是对寄存器操作的方法是固定的。


在这之前,首先要明白逻辑运算符(! && ||)和位运算符(<< >> ~ | ^&)的区别,对寄存器的操作使用的是位运算符,逻辑运算符一般用于在程序中判断逻辑中使用。
对寄存器操作方法的经验和其总结

例如 定义一个8位的寄存器(0xf0是寄存器的地址):

#defineREG0xFF

1)对单个的位进行赋值

(1)将寄存器REG的第5位置“1”

REG|=(1<< 5);

(2)将寄存器REG的第5位清零

REG&=~(1<< 5);

(3)将寄存器REG的第3和第5位置“1”

REG|=(1<< 5) | (1 << 3);

(4)将寄存器REG的第3和5位清零

REG&=~((1<< 5) | (1 << 3) );

该段总结如下:

将某位置1,移位取反后使用位运算'|'

将某位置0,移位取反后,使用位运算'&'


2)直接赋值

(1)将寄存器REG的1、2、3、5、7位置“1”

REG=0x5E;

(即给寄存器REG1赋值为10101110,这种方法多在初始化中使用)

(2)分别将寄存器REG的1、3、5、7位置“1”,0、2位置“0”

u8temp;

tmep=REG;

temp&=~0x01;//等价于 temp &=~(1<<0)  将第0位清零       

temp|=(1<< 1); 

temp&=~(1<< 2);

temp|=(1<< 3);

temp|=(1<< 5);

temp|=(1<< 7);

REG=temp;


关键字:寄存器  操作方法  STM32  函数库 引用地址:对寄存器操作方法的经验和其总结

上一篇:三种串口接收不定长数据方法详解
下一篇:无线节水滴灌自动控制系统的设计方案

推荐阅读最新更新时间:2026-03-15 23:50

STM32】DMA基本原理、寄存器、库函数
DMA的基本介绍 1DMA的基本定义 DMA,全称Direct Memory Access,即直接存储器访问。 DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。 2DMA的主要特征 每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置; 在同一个DMA模块上,多个请求间的优先权可以通过软件编程设
[单片机]
STM32 GPIO 寄存器的配置
配置每组IO口的寄存器:(每一组一套寄存器) 1、两个32位的配置寄存器;GPIOx_CRL,GPIOx_CRH 2、两个32位的数据寄存器:GPIOx_IDR,GPIOx_ODR 3、一个32位置位/复位寄存器:GPIOx_BSRR 4、一个16位的复位寄存器GPIOx_BRR 5、一个32位的锁定寄存器GPIOx_LCKR 详解 : CRL和CRH控制IO口,是四个位控制一个口,所以要两个32位的来控制16个口 1、GPIOx_CRL:端口配置低寄存器: 每个口由四位控制,为MODE+CNF联合配置,具体模式在下图中。(输入要与输入对应,输出也要与输出对应) 具体对应输入输出配置表(对上图的详解): 2、GPIOx_
[单片机]
<font color='red'>STM32</font> GPIO <font color='red'>寄存器</font>的配置
STM32复位来源(寄存器版)
最近项目遇到了一个问题:一个子系统,具有IAP升级的功能,Bootloader位于0x08000000,也就是说系统在运行过程允许复位。但是,该子系统需要在上电的过程中处理某项任务(而且只需要上电的那一次)。 问题来了:我们如何判断系统是第一次上电复位? 解决的办法有很多种,但是最简单的办法就是获取系统复位来源,详情请看文章。 其实,这篇文章的内容也能回答之前一位网友的问题,不知你会不会阅读本文。 Ⅰ RCC复位和时钟控制 RCC:Reset and Clock Control 相信大家都知道RCC是什么,主要就是讲述复位和时钟的章节。先来讲述一下复位种类。 STM32的复位大概分为三类:系统复位、电源复位和后备域复位。 系统
[单片机]
<font color='red'>STM32</font>复位来源(<font color='red'>寄存器</font>版)
STM32单片机GPIO概述及相关寄存器
5.1 STM32单片机GPIO概述 STM32中每个IO口都有很多个作用,比如这次我们使用的STM32F103ZET6的PA0口,既可以作为IO口使用,还可以作为待机唤醒(WAKEUP),模拟输入(ADC功能)等。根据数据手册中列出的每个I/O端口的特定硬件特征,GPIO端口的每个位可以由软件分别配置成多种模式。 (1)输入浮空 (2)输入上拉 (3)输入下拉 (4)模拟输入 (5)开漏输出 (6)推挽式输出 (7)推挽式复用功能 (8)开漏复用功能 每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问)。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/
[单片机]
<font color='red'>STM32</font>单片机GPIO概述及相关<font color='red'>寄存器</font>
STM32单片机寄存器的功能解析
“大神”叫你先上STM32,51是小朋友玩的,所以你就不学51了 初学者建议从51单片机开始,虽然很多人建议直接上STM32,但本人还是建议先学习51单片机,简单且不容易打消积极性,很多人都是在积极性消退之后就会半途而废,等熟悉了LED、串口、SPI、按键、中断、IIC等这些基础之后,如果对单片机还有兴趣,不妨再去晋升学习STM32单片机,有了51单片机作为基础,这时候学习STM32也是可以非常快的就能上手。 一般的寄存器的定制是从0开始定义,0000这个寄存器地址存放的是温度的一个数据,然后0001这个采用的是湿度的数据,它们两个数据的范围都是0到65535,并且都是只读的,所以它适用于的是03这个功能,组态地址就不用关心了
[单片机]
<font color='red'>STM32</font>单片机<font color='red'>寄存器</font>的功能解析
STM32入门系列-存储器与寄存器介绍
介绍两部分内容: 什么是存储器映射 什么是寄存器及寄存器映射 为了让大家对存储器与寄存器有一个更清楚的认识,并且为之后使用 C 语言来访问 STM32 寄存器内容打下基础。等明白了如何使用 C 语言封装底层寄存器,也就为后面学习库函数的开发做好了铺垫。 什么是存储器映射 程序存储器、数据存储器、寄存器和I/O端口排列在同一顺序的4GB地址空间内。这就是我们曾提到过的被控总线的连接部分,而编程时就是操作这一块地方。存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射。 STM32F103ZET6 数据手册中存储器映射图如下所示。 从上图中可以看到
[单片机]
stm32 常量 指定位置_STM32寄存器讲解
原理讲解芯片讲解STM32F103芯片 我们看到的 STM32 芯片是已经封装好的成品,主要由内核和片上外设组成。若与电脑类比,内核与外设就如同电脑上的 CPU与主板、内存、显卡、硬盘的关系。 STM32F103采用的是 Cortex-M3内核,内核即 CPU,由 ARM公司设计。ARM公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商(SOC)如 ST、TI、Freescale,负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设。如 GPIO、USART(串口)、I2C、SPI等都叫做片上外设。(采用野火官方的介绍)。 芯片(这里指内核,或者叫 CPU)和外设之间通过各种总线连接,其中驱动
[单片机]
<font color='red'>stm32</font> 常量 指定位置_<font color='red'>STM32</font><font color='red'>寄存器</font>讲解
STM32笔记(二)—STM32寄存器概念(附寄存器版简易LED流水灯)
(内核+外设) ICode 总线 ICode 中的 I 表示 Instruction,即指令。我们写好的程序编译之后都是一条条指令,存 放在 FLASH 中,内核要读取这些指令来执行程序就必须通过 ICode 总线,它几乎每时每刻都需要被使用,它是专门用来取指的。 驱动单元 DCode 总线 DCode 中的 D 表示 Data,即数据,那说明这条总线是用来取数的。我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,用 C 语言中的 const 关键字修饰,是 放到内部的 FLASH 当中的,变量是可变的,不管是全局变量还是局部变量都放在内部的 SRAM。因为数据可以被 Dcode 总线和 D
[单片机]
<font color='red'>STM32</font>笔记(二)—<font color='red'>STM32</font>与<font color='red'>寄存器</font>概念(附<font color='red'>寄存器</font>版简易LED流水灯)
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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