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;


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

    关注

    30

    文章

    5025

    浏览量

    117706

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

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

收藏 人收藏

    评论

    相关推荐

    STM32学习笔记-GPIO做为输出时操作方法

    操作方法。GPIOx_ODR: 端口输出数据寄存器,它的31:16位保留不用,15:0对应x的相应引脚,他只能以16位方式操作。GPIOx_BSRR:端口位设置/复位寄存器,它的31
    发表于 10-07 15:51

    寄存器操作

    ,即对各个位有先后设置的顺序的要求,使硬件产生的结果也不同;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

    你知道STM32操作寄存器方法有哪些吗

    操作。但是如果没有找到能满足你需求的库函数,或者你需要操作寄存器比较少那么使用直接操作寄存器方法
    发表于 02-28 07:13

    RK3288的GPIO操作方法是什么

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

    ARM寄存器学习总结

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

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

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

    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 18次下载
    STM32的<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>

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

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

    RAL寄存器模型操作图鉴

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

    RAL寄存器模型操作指南

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

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

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