嵌入式第四天(GPIO口輸入總結)

2021-08-22 03:10:48 字數 1337 閱讀 2014

gpio口輸入總結

總結一下:

對於gpio口的輸出操作總共有三種方式。

一 庫函式

庫函式就跟工作中呼叫到的初始化函式一樣。

不過知道了對於結構體的成員具體是怎麼初始化的。

gpio_initstruct.gpio_mode = gpio_mode_out; //選擇輸出模式  輸出輸出 復用 模擬  最後兩個不知道是什麼模式

gpio_initstruct.gpio_otype = gpio_otype_pp;//推挽輸出  開路輸出

gpio_initstruct.gpio_pin = gpio_pin_9|gpio_pin_10;//對pin腳的選擇  當兩個pin腳設定為一樣的時候 可以這樣寫

gpio_initstruct.gpio_pupd = gpio_pupd_up;//上拉下拉  不拉  上拉輸入 下拉輸出?

gpio_initstruct.gpio_speed =gpio_speed_50mhz;//設定頻率

gpio_init(gpiof,&gpio_initstruct);//設定完畢 把結構體值設定進去

然後到主函式呼叫函式 然後延時  正常流程  

二 暫存器

暫存器是一位一位對gpio口的設定

f9的暫存器設定:

gpiof->moder &= ~(3<<18);

gpiof->moder |= 1<<18;

gpiof->ospeedr &= ~(3<<18);

gpiof->ospeedr |= 2<<18;

gpiof->pupdr &= ~(3<<18);

gpiof->pupdr |= 1<<18;    

gpiof->otyper &= ~(1<<9);

gpiof->ospeedr |= 0<<9;

gpiof->odr |= 1<<9;//1

正常流程應該是先讀  然後再改 然後再寫入   (不知道為毛直接改不行)

~(3<<18)  高階操作  3 =11(2進製) 右移18位 然後再取反

相當於乙個32位的暫存器 第18 19位設定為0.  (這個好像是先置0 然後再寫入正常的暫存器)

一般一種32位的暫存器存著16個pin腳的不同設定模式

比如在一種暫存器中18 19 位是pin9   20 21 位就是pin10

三 位操作

位操作的gpio初始化跟一種的庫函式一樣

不同的只是在主函式的呼叫上。

輸入是pxin(管腳號)   x是哪組pin腳    

輸出是pxout(管腳號)

主要說明的是位址上的對映。

然後給位址賦值就行了。

最近還是懶了一點。

嵌入式第四天

今天主要講了以下幾點內容來回顧c語言 1 c語言的概述 2 資料型別 所有的資料型別的定義 初始化 char 字元型 short 短整型 int 整型 long 長整型 float 單精度浮點型 double 雙精度浮點型 右左法則 int a 整型指標的指標變數 int a 10 整型指標陣列 i...

C 嵌入式學習第四天

一 開關語句 switch n n可以是數值 表示式,運算結果必須是整型 練習1 輸入乙個月份,判斷季節 練習2 輸入乙個月份,忽略潤平年,判斷該月有多少天?二 for迴圈語句 迴圈是一種讓一段 反覆執行,從而達到你想要的結果 for是一種比較靈活而且危險 想比較其他迴圈 的一種迴圈 一般使用乙個變...

蘇嵌嵌入式linux實訓第四天

任務一 編譯器 優化分別優化了那些?第一級是 調整,第二級是新的視角,第 是表驅動狀態機。任務二 總結gcc靜態庫和動態庫的製作。靜態庫 gcc c add.c,變成.o檔案 ar rcs libadd.a add.o cp libadd.a lib gcc main.c ladd 在系統預設的li...