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.普通延時法這個比較簡單,讓微控制器做一些無關緊要的工作來打發時間,經常用迴圈來實現,不過要做的比較精準還是要下一番功夫。下面的 是在網上搜到的,經測試延時比較精準。粗延時函...