GPIO:通用I/O引腳? ? ? ? STM32F429IGT6 共有176個引腳轧铁,其中I/O引腳144個幢踏;每組16個引腳分為9組:A0 ~ A15? ?——? I0 ~ I15已慢;
GPIO有兩種輸出方式:
? ? ? ? ? ? ? ? ? ?推挽輸出:兩個MOS管同時工作且狀態(tài)相反,可以進行選擇高電平以及低電平可以加快 導通 / 截止 的速度亿乳;
? ? ? ? ? ? ? ? ? ?開漏輸出:只有N-MOS工作鲫售,無高電平輸出共螺,可以使用一個上拉電阻提供高電平;
? ? ? ? ? ? ? ? ? ? 還存在一種高阻態(tài)? 介于高低電平之間情竹,內(nèi)部上下電阻消高阻態(tài)
? ? ? ? ? ? ? ? ? ?電阻動作可進行上拉藐不、下拉以及浮空不動作
? ? GPIO的輸入方式:有模擬信號輸入 與 數(shù)字信號輸入? ?且模擬信號不可以直接轉(zhuǎn)化為數(shù)字信號。
? ? ? ? 預處理 (將所有.h文件復制到.c)-->>編譯(.c — > .s生成.s文件)-->>匯編(.s — > .o)— >鏈接(提取多個.o文件中被使用的內(nèi)容生成可執(zhí)行文件.exe)
其中在Windows中生成.elf
其中在Linux中生成.bin/.hex
可執(zhí)行文件分為三段 :
? ? ? ? ? ? ? ? ? .bss(可優(yōu)化段)沒被使用的數(shù)據(jù)
? ? ? ? ? ? ? ? ? .data(數(shù)據(jù)段)全局變量 地址 靜態(tài)變量 常量
? ? ? ? ? ? ? ? ?底層:.code(代碼段);可映射指令集
? ? ? ? SRAM(存放臨時數(shù)據(jù)):
? ? ? ? ? ? ? ? ? ?創(chuàng)建 棧 空間佳吞,地址指向首地址;
? ? ? ? ? ? ? ? ? ?創(chuàng)建 堆 空間棉安,地址指向末地址底扳;
硬件控制通過寄存器的方式實現(xiàn):地址映射(找到寄存器類似于尋找地址)
在進行程序編寫時首先要確定硬件版的路徑;確定需要用到的器件所使用的引腳贡耽。
硬件初始化
(確定使用的)時鐘源打開
通過RCC打開 GPIOH (LED使用的路徑‘H’)的時鐘源
RCC首地址 ??????0x40023800(查找說明書確定地址2.2)
外設初始化
GPIOH首地址 ???0x40021C00
PH10 ----輸出
(在進行編寫時首要宏定義各大地址的起始坐標如圖:(地址在手冊上查詢))
偏移量代表移動衷模。
? ?輸出:GPIOH_MODER?---- 0x100000設置為輸出 ??偏移 0x00(輸出指針的起始地址)
? ?推免:GPIOH_OTYPER -----0x00000000推挽 ???????偏移 0x04
? ?上拉:GPIOH_PUPDR??-----0x100000設置為上拉? ?偏移0x0C
? ?速度:GPIOH_OSPEEDR-- ?0x00000000速度低速 ?偏移0x08
再由硬件控制高低電平:
?GPIOH_ODR? ? ? ? ? ? ? 偏移 0x14