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