C語言的小問題

2021-10-09 17:59:20 字數 2210 閱讀 1445

二、c的基礎語法(來自書本)

三、常用自定義函式

複習「與或非」運算

&=|=運算 **

gpioa->crl &

=0xffffff0f

;// 4~7位清零

gpioa->crl |

=0x00000040

;// 4~7位設為1.設定相應位置的值

左移

右移 **

/* 將 1 左移 pinpos 位 */

gpiox->bsrr =((

(unit32_t)

0x01

)<;// 將pinpos位設定為1

系統復位(所有暫存器)

上電復位(除備份區外,所有的暫存器)

備份域復位

實際上,使能的英語就是enable,開啟的意思。

相對地,stm32 預設的時鐘狀態是 disable,關閉的,不工作。

stm32 有一種時鐘門控技術,disable狀態下不工作,可以省電,所以,我們需要使用某個gpio口的時候,一定要先呼叫使能函式,讓它上電工作。

埠重對映還需要 afio 口時鐘

時鐘

高速(hs)

低速(ls)

內部(i)

hsilsi

外部(e)

hselse

pll :鎖相環倍頻輸出,2~16倍。

外部中斷(硬體)

內部中斷(軟體 / 異常)

registers 暫存器組

關鍵字說明

extern

已經在其他檔案中定義過

typedef

型別別名

使用函式,通過指標(位址),來訪問結構變數。

double

sum(

const

struct funds * money)

intmain

(void

)

假設him == &bareny,則以下變數相等。

bareny.income(*him).incomehim->income定義int dates[20];

dates + 2 == &dates[2]兩個指標相等

*(dates + 2) == dates[2]兩個值相等

/* 用函式處理陣列 */

intsum

(int

* ar,

int n)

/* 等價 */

intsum

(int ar,

int n)

/* 指標演算法 */

intsum

(int

* start,

int* end)

}

const double * const pc = rates;

頭的 const,表示不可修改資料。

中的 const,表示不可指向別處。

兩個 const,不可修改資料,不可指向別處。

知識複習

c語言中的陣列無論 int 還是 char,名字代表的是首元素的位址,名字加方括號,才是首元素。

康康**

語句 / 名字

含義char c[20];宣告語句

c首元素位址

c[0]首元素

c[i]index 為 i 的元素(等價於下面)

*(c + i)index 為 i 的元素(通過指標訪問)

**如下

int

str_to_int

(char

* str,

int size)

return res;

}

c語言的小問題

在c語言程式設計中要注意乙個小問題,如果你編寫scanf d n printf d n 這個你輸入幾就輸出幾,毫無疑問。但是現在問題來了?如果scanf d n scanf c m 如果你輸入了3和乙個回車鍵,這個時候m的值就是回車鍵。回車鍵回作為乙個字元輸入到m中的。所以當你輸入了數字,後面又要輸...

C語言小問題

define max a,b 於是我開始修改 檢視各種 反饋的結果。int a 10,b 100 int x 好吧,我把圓括號給刪除了,於是編譯器給我報錯了。error expected expression before int int a,b 好吧,不能沒有圓括號,雖然現在還不知道是為啥。然後我...

C語言 小問題。

輸入如下 harhar enter 程式段如下 while ch getchar n 程式段的輸出是什麼。我得到的輸出是ibsibs。我的思路是 putchar ch h不變,使用後加1 putchar ch 提前加1,h變成i 迴圈上面的效果,得到的輸出是ibsibs。正確的思路 先輸出乙個字元h...