在stm32中比如對gpioa的某幾個引腳進行操作請

2021-04-19 06:16:51 字數 1748 閱讀 4114

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微...