0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

GReq_mcu168 2017-12-19 09:30 次阅读

接触了一阵子的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;


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5308

    浏览量

    119936

原文标题:对寄存器操作的通用方法总结

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    寄存器是什么?怎么操作寄存器点亮LED灯?

    寄存器,是集成电路中非常重要的一种存储单元,通常由触发组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两
    的头像 发表于 07-21 16:59 3869次阅读
    <b class='flag-5'>寄存器</b>是什么?怎么<b class='flag-5'>操作</b><b class='flag-5'>寄存器</b>点亮LED灯?

    寄存器操作

    ,即对各个位有先后设置的顺序的要求,使硬件产生的结果也不同;5,有时,对于一个寄存器要求必须一次赋值,若对某些位赋值先后顺序不同,便达不到预期的效果和功能。二,寄存器的赋值
    发表于 10-23 18:23

    C语言的位操作方法

    使用 C语言对寄存器赋值时,我们常常要求只修改该寄存器的某几位的值,且其它的寄存器位不变,这个时候我们就需要用到 C 语言的位操作方法了。1. 把变量的某位清零此处我们以变量 a代表
    发表于 11-26 08:00

    GPIO引脚操作方法概述

    目录一、硬件知识 - LED原理图1、通过硬件原理图剖析:怎么点亮的LED?二、GPIO引脚操作方法概述1、如果想要使得GPIO的某个引脚输出高低电平,该怎么做?2、GPIO寄存器的2种操作方法
    发表于 01-20 07:38

    RK3288的GPIO操作方法是什么

    GPIO寄存器操作方法有哪几种呢?RK3288的GPIO操作方法是什么?
    发表于 03-09 07:38

    寄存器传输级低功耗设计方法

    寄存器传输级的低功耗设计对降低整个芯片的功耗作用非常显著,本文讨论的三种寄存器传输级低功耗设计方法经验证对动态功耗的降低很有效。
    发表于 02-16 18:12 1452次阅读
    <b class='flag-5'>寄存器</b>传输级低功耗设计<b class='flag-5'>方法</b>

    ARM寄存器学习总结

    ARM寄存器学习总结
    发表于 01-04 15:10 0次下载

    寄存器操作方法_对寄存器操作的通用方法总结

    本文主要详解寄存器操作方法以及对寄存器操作的通用方法总结,具体的跟随小编来了解一下。
    的头像 发表于 05-22 15:53 2.3w次阅读

    STM32单片机修改寄存器的位操作方法(全网最全)

    使用 C语言对寄存器赋值时,我们常常要求只修改该寄存器的某几位的值,且其它的寄存器位不变,这个时候我们就需要用到 C 语言的位操作方法了。1. 把变量的某位清零此处我们以变量 a代表
    发表于 11-19 09:06 33次下载
    STM32单片机修改<b class='flag-5'>寄存器</b>的位<b class='flag-5'>操作方法</b>(全网最全)

    C语言:寄存器操作

    C语言:寄存器操作
    发表于 01-13 12:56 6次下载
    C语言:<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>

    STM32的寄存器操作

    操作。但是如果没有找到能满足你需求的库函数,或者你需要操作寄存器比较少那么使用直接操作寄存器方法
    发表于 01-13 15:43 19次下载
    STM32的<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>

    C语言操作寄存器的常见手法

    使用C语言对寄存器赋值时,常常需要用到C语言的位操作方法。把寄存器某位清零 假设a代表寄存器,且其中本来已有值。如果要把其中某一位清零且其它位不变,代码如下。
    的头像 发表于 03-12 09:06 3277次阅读

    RAL寄存器模型操作图鉴

    寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步寄存器模型与RTL中寄存器
    的头像 发表于 05-17 09:01 886次阅读
    RAL<b class='flag-5'>寄存器</b>模型<b class='flag-5'>操作</b>图鉴

    RAL寄存器模型操作指南

    寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步寄存器模型与RTL中寄存器
    的头像 发表于 07-12 09:37 1018次阅读
    RAL<b class='flag-5'>寄存器</b>模型<b class='flag-5'>操作</b>指南

    个人对STM32 SysTick的总结(寄存器操作)

    一、概述:SysTick是一个简单的递减24位计数。如果你不需要再应用程序中嵌入操作系统,SysTick可以作为简单的延时和产生周期性的中断。状态控制寄存器的第0位可以使能计数,当
    的头像 发表于 01-06 08:00 1699次阅读
    个人对STM32 SysTick的<b class='flag-5'>总结</b>(<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>)