关于寄存器操作的清0和置1

1.概述

  • 对于玩过单片机的人来说,寄存器多多少少都是有接触过的,只是有的开发板有现成的函数库可以用,所以很多人对寄存器的了解还是比较少的。其实,库函数最终还是对寄存器进行操作。 我要说的重点来了——>对于一个特定功能模块的实现,我们开发的过程大致如下:
    了解这个功能模块的相关知识并根据要求将模块化大为小;
    在开发过程中,我想 很重要的一份资料就是芯片手册;
    在所有功能完善之后,就需要整体连接进行测试,寻找bug,改bug;
    再接下里就是进行代码优化

2.寄存器操作

  • 对于寄存器的某些位清零,我们要用到 &
 LCDIF->CTRL &= ~(7<<13);  //对LCDIF 的 CTRL寄存器的 bit15~13 进行清零
  • 对于寄存器的某些位置1,我们要用到 |
LCDIF->CTRL |= (5<<13);  //对LCDIF 的 CTRL寄存器的 bit15~13 设置为 101

这些都是基本的操作,对一个寄存器的多个连续位进行配置,几乎基本上都是先清零,然后再进行或操作。
但是有些寄存器一定要注意复位的状态下某些位是有置1的,如果没有清零,将会很难发现错误。
例如在这里插入图片描述
寄存器CCM_ANALOG->PLL_VIDEO复位值为0x0001_100C,第12位为1,
其bit12 是关闭PLL在这里插入图片描述
由于没有这bit12 清0,造成功能时好时不好,调试了好几个小时,才发现这个问题。

3.总结

  • 对寄存器操作时,可先全部清零,然后根据芯片手册对对应位进行配置。
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来鸟 鸣间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值