只要在同壹條總線上外設,可以利用“|”對多個外設時鐘進行同時使能!
“|”是個位運算符,如0000 1111 | 1111 0000 = 1111 1111
比如:
使能APB2總線上的GPIOD和GPIOE。
APB2ENR的復位值為0x0000 0000
如果使能了ENABLE
RCC->APB2ENR |= RCC_APB2Periph; // “|=” >>>置1
“&=~” >>>清零
其中RCC_APB2Periph --- RCC_APB2Periph_GPIOD >>>> ((uint32_t)0x00000020)
--- RCC_APB2Periph_GPIOE >>>> ((uint32_t)0x00000040)
0x 0000 0000
"|"
0x 0000 0020
這裏的0020 即0000 0000 0010 0000
對應STM32F10x參考手冊,查找RCC_APB2ENR,低16位有效
第5位為1,即開啟了IO端口D時鐘
這裏的0040 即0000 0000 0100 0000
對應STM32F10x參考手冊,查找RCC_APB2ENR,低16位有效
第6位為1,即開啟了IO端口E時鐘
所以對於在同壹條總線上外設,如果使能多個外設時鐘,可以用“|”來同時使能。