• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

RCC_APB2ENR|=(1《3);是怎么运算的?

yuanqiuping 2019-03-27 浏览量:4619
RCC_APB2ENR|=(1《3);是怎么运算的?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • C语言运算符优先级中,除逗号外,赋值(|=)是最低的

    也就是(1)1<<3    (0X08)

                (2)RCC = RCC | 0X08

    • 发布于 2019-03-27
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • RCC_APB2ENR寄存器的值等于1左移3位后再或上原RCC_APB2ENR寄存器的值,这就是简单的运算,分清运算符优先级就可以吧。
    • 发布于2019-03-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 等式右边是左移运算。

    整个表达式可以等效写成这样RCC_APB2ENR = RCC_APB2ENR | (1<<3);

    括号里的左移先做,再进行或运算,再赋值。

    • 发布于2019-03-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 先把1左移3位,也就是100,瑞与RCC_APB2ENR寄存器相或,也就是把RCC_APB2ENR寄存器的第三位置1的功能了
    • 发布于2019-03-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 先左移三位再和RCC_APB2ENR寄存器中原来的值相或,实质是将RCC_APB2ENR寄存器的bit3置1
    • 发布于2019-03-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 写错了吧,应该是1<<3,吧,这个是把1左移3位后,与寄存器RCC_APB2ENR的值进行或运行的功能
    • 发布于2019-03-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 这里的意思就是先取出RCC_APB2ENR中的值,然后与0x08进行或运算,相当于保持其它位不变,将第4位强制置1
    • 发布于2019-03-31
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

RCC_APB2ENR|=(1《3);是怎么运算的?