1樓:匿名使用者
用庫時,這樣
62616964757a686964616fe78988e69d8331333335313166 gpio_setbits(gpioa,gpio_pin_0) \\pa0 = 1
gpio_resetbits(gpioa,gpio_pin_0) \\pa0 = 0
是不是很簡單,如果你還要更簡單的用它,做成巨集定義如下#define pa0(a) if (a) \gpio_setbits(gpioa,gpio_pin_0);\else \
gpio_resetbits(gpioa,gpio_pin_0)用的時候這樣
pa0(1) //pa0 = 1
pa0(0) //pa0 = 0
如果你在上面再加個這樣的巨集定義
#define on 0
#define off 1
用的時候這樣
pa0(off) //pa0 = 1
pa0(on) //pa0 = 0
你看這樣的程式都直觀!!!
再加個初始化 gpioa口的**
void led_gpio_config(void)
2樓:匿名使用者
檢視使用者手冊,裡面有gpio的初始化函式gpio_init
關於stm32單個引腳多個功能時如何使用其中某個功能?
3樓:那次遇到過你
一個引腳作為什麼功能使用,除了兩個除錯引腳,其他的預設都是gpio,如果要使用其他功能,那就需要配置複用暫存器。
如果某個功能的引腳被佔用了,那就需要對映到其他io口,也就是配置重對映暫存器。如果非要用這個引腳的話,也可以分時複用。
具體操作可以參考晶片手冊,如果專案使用的是庫或者作業系統,那就直接呼叫配置函式就行了。
stm32如何實現同時讀一個埠的中某幾個管腳的資料
4樓:du瓶邪
規則:一、置gpiod->bsrr低16位的某位為'1',則對應的i/o埠置'1';而置gpiod->bsrr低16位的某位為'0',則對應的i/o埠不變。
二、置gpiod->bsrr高16位的某位為'1',則對應的i/o埠置'0';而置gpiod->bsrr高16位的某位為'0',則對應的i/o埠不變。
三、置gpiod->brr低16位的某位為'1',則對應的i/o埠置'0';而置gpiod->brr低16位的某位為'0',則對應的i/o埠不變。
例如:1)要設定d0、d5、d10、d11為高,而保持其它i/o口不變,只需一行語句:
gpiod->bsrr = 0x0c21;// 使用規則一
2)要設定d1、d3、d14、d15為低,而保持其它i/o口不變,只需一行語句:
gpiod->brr = 0xc00a;// 使用規則三
3)要同時設定d0、d5、d10、d11為高,設定d1、d3、d14、d15為低,而保持其它i/o口不變,也只需一行語句:
gpiod->bsrr = 0xc00a0c21;// 使用規則一和規則二
5樓:匿名使用者
value=gpiob->idr&0x00ff;
就這麼簡單。
6樓:
u16 value = gpio_readinputdata(gpiob);
value &= 0x00ff;
沒試過,不知道寫的對不對
請問stm32中如何設定位變數??keil51中
都已經用上32位機了,不要死抱著8位機的那些老觀念不放。針對位的操作,用標準c的位域就可以。如果對效率方面有要求,或者要求實現原子級的操作,就用 attrib bitband 屬性將結構體成員宣告成位繫結操作即可。另外要注意,位繫結是m3 m4核心的特性。m0核心是不支援位繫結的。keil51使用的...
keil編寫stm32時總是提示缺少af檔案這檔案到底
你是不是複製別人的工程檔案,來學習。雖然它們可以編譯通過,但執行時就會出錯說在你指定的檔案路徑下找不到axf檔案。你必須指定它的路徑。指定它方法是 按alt f7出現 options for target 在裡面選擇 output 選卡,點選 select folder objects.選擇你的ax...
stm32跟普通的51微控制器在程式編寫方面有什麼區別
1 庫函式不同。由st廠商推出的stm32系列微控制器,st廠商給了豐富的函式庫,可以直接使用庫函式,所以比起普通的51微控制器在程式編寫方面要更加的省時。2 執行速度不同。普通的51微控制器執行速度較慢,特別是雙資料指標,而stm32系列微控制器最高工作頻率可達72mhz。3 便利程度不同。51微...