一 電子電路基礎

電路的源頭
基礎還是要寫一下的

1. 歐姆定律與功率

\(U=I×R\)
這個不需要寫

2. 數字電平與電阻的用

高/低電平:明確 VCC 和 GND 的界限。上拉/下拉電阻: 解決引腳“懸空(Floating)”時的不確定狀態,這是按鍵檢測和通信總線的核心基礎(不搞這個的話,就會處於一種很不穩定的 薛定諤 狀態,容易受外界影響

3. 核心元器件的“開關”本質**

二極管: 單向導電性
三極管/MOS管:--->微型電子開關
電容: “通交流阻直流”和“儲能濾波” 現在沒用到

4. GPIO輸出方式

推輓輸出 (Push-Pull,即GPIO_Mode_Out_PP): 能高能低,驅動能力強,適合接LED、蜂鳴器。
開漏輸出 (Open-Drain): 只能輸出低電平,高電平需靠外部上拉,適合 I2C 等多機通信。 idk

二 邏輯電子基礎

經典位運算符

按位運算符:

  • 按位或 |
    (0x0001 | 0x0003 = 0000 0000 0000 0011)
    説人話就是把所有指定的位變成1,即 置位
  • 按位與 &
    (0x0001 & 0x0003 = 0000 0000 0000 0001)
    配合~取反,可以把所有非 1 1 的位變成0,即所有不同為1的都指定為0

1111 1111 1111 1110

  • 其他一些
#1 把1寫入寄存器特定位
REG |= (1 << 3)

REG就是寄存器

1 << 3 (左移運算):
1 的二進制是 0000 0001
<< 3 代表向左移動 3 位

結果變成:0000 1000。這就創造了一個 “掩碼” (Mask),它的第 3 位(從 0 開始算)是 1,其他全是 0 (流水燈可以在這個時候取反)

|= (或等於):
這步操作相當於:REG = REG | 0000 1000
因為 | 的特性是“只要有 1 就是 1”,所以無論 REG 原來第 3 位是什麼,現在都包變成了 1

説人話就是把0x0001向左撥三位,再把寄存器的這個位變成1,不影響其他位

#2 清零 把0寫入寄存器特定位
GPIOA->ODR/*指針運算符找Output Data Register*/ &= ~(1 << 5);

具體寫一下吧
0000 0000 0000 0001
<<5
0000 0000 0100 0000
~1
1111 1111 1011 1111
&
???? ???? ?1?? ????

0 & 1 = 0 //原本是0
1 & 1 = 1 //原本是1

=???? ???? ?0?? ????

三 GPIO的結構圖的理解(如何看懂原理圖)

留到下次吧