二、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).income
him->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...