DMA:動態數據存儲,爲CPU減負,直接進行數據交換
芯片內部結構
BOOT0 BOOT1
0 X :從片上Flash代碼區域啓動,執行固件
1 0 :系統存儲器BootLoader區域,引導進行串口1下載
1 1 :執行SRAM區域代碼
先RST低,DTR高,所以RESET低電平復位,單片機復位
後RST低,DTR低,此時RESET爲高復位結束,B0爲高,進入ISP
通過CH340G的rst和dtr引腳間接控制單片機的RST和BOOT0引腳,實現的程序一鍵式下載
CORE:core_cm3.c core_cm3.h startup_stm32f10x_hd.s
OBJ:過程文件和輸出文件hex
STM32F10x_FWLib:STM32固件庫包inc和src
USER:main.c stm32f10x.h stm32f10x_conf.h
stm32f10x_it.c stm32f10x_it.h system_stm32f10x.c
system_stm32f10x.h
SYSTEM:原子編寫的usart.c usart.h
delay.c delay.h
system.c system.h
HARDWARE:自建外設分類文件夾
注意.h文件的路徑包含(到每級文件夾)
手冊中有FT標識部分的表示可以容忍5V電壓
GPIO口的使用:打開相應時鐘
配置相應的模式
配置相應的速度
浮空輸入模式:自由的輸入端,電平傳輸最終到達相應的
寄存器,讀取寄存器值
模擬輸入模式:自由輸入端,電壓被採樣到相應的外設部
分,不到達輸入寄存器
輸出高低電平時,寫位設置/清除寄存器---->輸出數據寄
存器,控制後續電路的輸出電平極性
GPIOx_CRL:端口配置低8位寄存器,每4位控制一個IO
例:PA0-PA7 PA0(3-2:配置輸入/輸出速度模式)
(1-0:配置輸入輸出模式細化)
GPIOx_IDR:低16位有效,對應相應IO口的輸入電平0/1 在輸出模式下也可以讀取其上電平,以驗證
GPIOx_ODR:低16位有效,對應相應IO口的輸出電平0/1
在輸入模式下兼有上下拉的選擇功能
GPIO_BSRR:端口位設置/清除寄存器
0-15位對應位1,輸出高,低無效
16-31位對應位1,輸出低,低無效
間接控制ODR寄存器設置IO口
每個IO口都可以作爲中斷輸入
使能IO口時鐘 RCC_APB2PeriphColckCmd();
初始化IO口模式,調用GPIO_Init();
操作IO口:GPIO_SetBits(); GPIO_ResetBits();
不同方法操作IO口,最終都是操作相應的底層寄存器ODR/IDR
位帶操作:單個IO口的位重新定義爲新的地址,可以直接操作地址
如:PAout(1)=1;
位操作:GPIOA->CRL&=0XFFFFFF0F;
GPIOA->CRL|=0XFFFFFF4F; //0101
GPIOA->ODR|=1<<5;
TIMx->SR=(unint16_t)~TIM_FLAG;
Define宏定義:
#define sysclk_freq_72MHz 72000000
前爲所定義的宏名,後爲常數 表達式 格式串等
ifdef:條件編譯
#ifndef
#define
....
#end if
Typedef:類型別名
typedef unsigned char uint8_t;
typedef unsigned int uint32_t;
typedef unsigned short int uint16_t;
STM32,一切底層配置,最終都是配置相關寄存器
sfr P0=0X80;//特殊功能寄存器地址
P0=0X00;//特殊功能寄存器賦值
GPIOA->ODR=0X00000000;
寄存器地址位置映射:
重要的是在頂層中將特定位置的順序地址
強制類型轉換:劃分爲一個結構體類型,方便查詢使用
STM32時鐘框圖
任何外設使用之前,必須使能相應的時鐘
時鐘結構體類型定義:與時鐘相關寄存器的集合
時鐘相關庫函數:
STM32的USB slave模式下D+需要接上拉電阻到VCC
USB轉串口時只需要D+和D-引腳
Mini和Micro的座子的第4腳ID引腳默認下懸空,正常工作