接触了一阵子的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;
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
原文标题:对寄存器操作的通用方法总结
文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。
相关推荐
寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两
发表于 07-21 16:59
•3869次阅读
,即对其各个位有先后设置的顺序的要求,使硬件产生的结果也不同;5,有时,对于一个寄存器要求必须一次赋值,若对其某些位赋值先后顺序不同,便达不到预期的效果和功能。二,寄存器的赋值
发表于 10-23 18:23
使用 C语言对寄存器赋值时,我们常常要求只修改该寄存器的某几位的值,且其它的寄存器位不变,这个时候我们就需要用到 C 语言的位操作方法了。1. 把变量的某位清零此处我们以变量 a代表
发表于 11-26 08:00
目录一、硬件知识 - LED原理图1、通过硬件原理图剖析:怎么点亮的LED?二、GPIO引脚操作方法概述1、如果想要使得GPIO的某个引脚输出高低电平,该怎么做?2、GPIO寄存器的2种操作方法
发表于 01-20 07:38
GPIO寄存器的操作方法有哪几种呢?RK3288的GPIO操作方法是什么?
发表于 03-09 07:38
寄存器传输级的低功耗设计对降低整个芯片的功耗作用非常显著,本文讨论的三种寄存器传输级低功耗设计方法,经验证对动态功耗的降低很有效。
发表于 02-16 18:12
•1452次阅读
ARM寄存器学习总结
发表于 01-04 15:10
•0次下载
本文主要详解寄存器操作方法以及对寄存器操作的通用方法总结,具体的跟随小编来了解一下。
发表于 05-22 15:53
•2.3w次阅读
使用 C语言对寄存器赋值时,我们常常要求只修改该寄存器的某几位的值,且其它的寄存器位不变,这个时候我们就需要用到 C 语言的位操作方法了。1. 把变量的某位清零此处我们以变量 a代表
发表于 11-19 09:06
•33次下载
C语言:寄存器操作
发表于 01-13 12:56
•6次下载
操作。但是如果没有找到能满足你需求的库函数,或者你需要操作的寄存器比较少那么使用直接操作寄存器的方法
发表于 01-13 15:43
•19次下载
使用C语言对寄存器赋值时,常常需要用到C语言的位操作方法。把寄存器某位清零 假设a代表寄存器,且其中本来已有值。如果要把其中某一位清零且其它位不变,代码如下。
发表于 03-12 09:06
•3277次阅读
寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步寄存器模型与RTL中寄存器
发表于 05-17 09:01
•886次阅读
寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步寄存器模型与RTL中寄存器
发表于 07-12 09:37
•1018次阅读
一、概述:SysTick是一个简单的递减24位计数器。如果你不需要再应用程序中嵌入操作系统,SysTick可以作为简单的延时和产生周期性的中断。状态控制寄存器的第0位可以使能计数器,当
发表于 01-06 08:00
•1699次阅读
评论