STM32中操作暫存器GPIOB CRL0x0

時間 2021-08-30 10:27:48

1樓:牛排稀飯

沒有區別,在這個**中用到4*0的作用是因為是用的是作用於pb0,而4是對應gpio設定的最小位數,將4*0中的0改為1後就可以對pb1進行操作,這種寫法是為了後續操作的快捷。所以對於只用到pb0的程式~(0x0f<<(4*0))和~0x0f是沒有區別的,而若是使程式以後的修改更加的便利,還是推薦書上的那種寫法,希望採納。

2樓:煙夢山

本人小白,對於=0xf0,暫存器與0xf0,低四位正好至0

3樓:匿名使用者

#include "stm32f10x.h"

#include "gpio_config.h"

/***gpio_config***/

void gpio_config(void)

/***gpio_port_enable***/

void gpio_port_mode(gpio_typedef *gpio_numtemp,unsigned char gpio_portnum,unsigned char gpio_portmode)

stm32中{gpiob->crl&=0x0fffffff;gpiob->crl|=8<<28;}為什麼會報錯

4樓:匿名使用者

由於編譯器預設signed int即32位有符號整數型別,而1<<31實際為0x80000000,

這樣就有可能改寫了符號位(最高位)

依此類推,(2<<30),(3<<29)...等都會出現編譯警告問題.

解決辦法為: ((unsigned int)1<<31),((unsigned int)2<<30),...

你的問題和上述問題類似

stm32中的一句話,gpioa->crl&=0xffffff0f

5樓:

gpioa->crl原來是有初始值的 比如說0xffffffffgpioa->crl&=0xffffff0f則表示:

gpioa->crl=gpioa->crl&0xffffff0f 即

gpioa->crl=0xffffffff&0xffffff0f

6樓:匿名使用者

意思就是將該32位暫存器的bit4~bit7清零,其他位值不改變。

gpiob->crl|=0x00300000 後面的數值怎麼來的啊,什麼意思額?隨便再解釋下這個結構的意思?求大神解難!

7樓:

gpiob->crl |= 0x00300000;

等價於gpiob->crl = gpiob->crl | 0x00300000;

其功能是將gpiob的crl暫存器的第20位、第21位置1。

8樓:

crl對應的是低8位資料,0x00300000對應的是第6個(從0位開始計數,從右往左數過去,第幾位就是對應pb0 -pb7的哪個引腳)gpio引腳,也就是要操作的是pb5口,數值為3,那麼轉換成二進位制就是:0011,檢視資料手冊上的crl暫存器相關資料,可以找到對應的數值含義11:就是配置:

輸出模式,速度50mhz,00:就對應:通用推輓輸出模式,一句話概括:

配置pb5為:推輓輸出模式,速度為50mhz

9樓:白羊

如果你想知道這個數值該怎麼來的話,那麼我建議你問一問你的老師或者是學霸同學。

stm32中pwm的佔空比,如何設定stm32中pwm的佔空比為20 ?

首先,確定timx的時鐘,除非apb1的時鐘分頻數設定為1,否則通用定時器timx的時鐘是apb1時鐘的2倍,這時的timx時鐘為72mhz,用這個timx時鐘72mhz除以 psc 1 得到定時器每隔多少秒漲一次,這裡給psc賦7199,計算得定時器每隔0.0001秒漲一次,即此時頻率為10khz...

STM32晶元下,進行SD卡的讀寫操作,單塊讀寫都是OK,但

王趙著 你用的什麼晶元 是stm32f103vrt6 嗎 stm32f207晶元下的sd卡讀取怎麼不成功 二月的雨 排除硬體的問題情況下,建議用的官方例程嗎?看看正點原子或者野火的教程。 怎麼個不成功呢,返回什麼錯誤 大家好,我在做stm32f103的sd卡實驗的時候,初始化正常,也顯示 可移動磁碟...

stm32中delay 函式延時的時間是怎麼計算的

來自火星的世界 微控制器程式設計過程中經常用到延時函式,最常用的莫過於微秒級延時delay us 和毫秒級delay ms 1.普通延時法這個比較簡單,讓微控制器做一些無關緊要的工作來打發時間,經常用迴圈來實現,不過要做的比較精準還是要下一番功夫。下面的 是在網上搜到的,經測試延時比較精準。粗延時函...