永发信息网

【ARM】RCC->APB2ENR|=1<<5; //使能PORTD时钟 RCC->APB2ENR=1<<5; 以上两句代码效果差别是什么

答案:2  悬赏:50  手机版
解决时间 2021-11-28 02:27
  • 提问者网友:送舟行
  • 2021-11-27 12:24
【ARM】RCC->APB2ENR|=1<<5; //使能PORTD时钟 RCC->APB2ENR=1<<5; 以上两句代码效果差别是什么
最佳答案
  • 五星知识达人网友:孤独入客枕
  • 2021-11-27 12:39
这基本上有两个答题方向, 端看问题人想要知道的是什麼.


    语法
    在语法上, = 与 |= 是不同概念.
    a = 2 ; // a变数为2
    a |= 2 ; // 等同於 a = (a | 2); 只有a=0时, a才会是2
    OR语法若不清楚, 网路上很容易查到Digital Logic方面的介绍.
    单片机功能
    RCC->APB2ENR, 指的是APB2(第二组 Peripheral Bus)各区块IP的Clock使能或禁能.
    在语法上的作用同前,
    (1) = 1<<5 ; // 将APB2ENR这一rigister内容设定为(1<<5), 也就是只有bit5代表的硬件使能生效.
    (2) |= 1<<5 ; // 将APB2ENR这一rigister内容OR(1<<5), 也就是除原有硬件使用设定外, 额外增加bit5代表的硬件, 可以工作.


由於题目没有列出单片机的型别, 各家也不一样, 这边引用STM32F1的某型号,

当使用 ( = 1<<5) 此APB2 bus上仅有PORTD有效;
当使用 ( |= 1<,5) 此APB2 bus上, 原有设定不变, 额外增加使能PORTD.
全部回答
  • 1楼网友:逐風
  • 2021-11-27 13:53
RCC->APB2ENR|=1<<5;是不影响其他片上外设并时能PORTD的时钟;
RCC->APB2ENR=1<<5;是把其他APB2的外设时钟禁能并把PORTD的时钟使能;
后者运行不了的原因大概就是你把不该关的外设的时钟给关了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯