STM32入門教程-2023持續(xù)更新中

持續(xù)更新中…………
一些小知識(為方便查找)
一、VCC、VDD、VEE、VSS
- 一般來說VCC=模擬電源,VDD=數(shù)字電源,VSS=數(shù)字地,VEE=負電源。
- 有些IC既有VDD引腳又有VCC引腳,說明這種器件自身帶有電壓轉(zhuǎn)換功能。
- 對于數(shù)字電路來說,VCC是電路的供電電壓,VDD是芯片的工作電壓(通常Vcc>Vdd),VSS是接地點。
- 在場效應(yīng)管(或COMS器件)中,VDD為漏極,VSS為源極,VDD和VSS指的是元件引腳,而不表示供電電壓。
二、8種輸入輸出模式
1.?GPIO_MODE_AIN?模擬輸入
2.?GPIO_MODE_IN_FLOATING?浮空輸入
3.?GPIO_MODE_IPD?下拉輸入
4.?GPIO_MODE_IPU?上拉輸入
5. GPIO-MODE_OUT_OD 開漏輸出
6.?GPIO_MODE_OUT_PP?推挽輸出
7.?GPIO_MODE_AF_OD?復(fù)用開漏輸出
8. GOIO_MODE_AF_PP 復(fù)用推挽輸出
https://zhuanlan.zhihu.com/p/113367004




橋接:是指在兩個網(wǎng)絡(luò)之間搭一個橋,將兩個網(wǎng)絡(luò)連接到一塊的意思。
- ?[2-1] 軟件安裝 P3 - 05:48?
- ?[2-1] 軟件安裝 P3 - 07:22?
- ?[2-1] 軟件安裝 P3 - 13:42?
stm32庫
STM32的開發(fā)方式主要有:
- 基于寄存器的方式
- 基手標準庫(也就是庫函數(shù)的方式)
- 本課程
- 基手HAL庫的方式

************************


- //************
- 點擊魔法棒,target->ARMCompiler選擇V5.06
- 解決辦法2:魔法棒-->target-->ARM Compiler-->Use default compiler version 5
- 這里up少講了個東西,點擊setting之后的第一個debug頁面里面的port要改成sw,不然下載不成功
- 自動補全代碼設(shè)置:點擊Edit>Configuration>Text Completion>勾選Symbols after最后重新打開Keil就可以了
3-x GPIO


------------------------------------------------------------
- 第一步:使用RCC開啟GPIO的時鐘
- 第三步,使用GPI_Init函數(shù)初始化GPlO
- 第三步,使用輸出或者輸入的函數(shù)控制GPIO口
函數(shù):
- RCC

- RCC_APB2PeriphClockCmd();
- GPIO輸出

魔術(shù)棒->C/C++->勾選C99mode,就可以在中間定義了
------------------------------------------------------------





宏定義#define、typedef、結(jié)構(gòu)體struct、枚舉enum
------------------------------------------------------------
- GPIO輸入
GPIO_ReadInputDataBit();
------------------------------------------------------------



開漏輸出
GPIO_Mode_Out_OD 普通開漏輸出,驅(qū)動能力不足,無法顯示,更改為GPIO_Mode_Out_PP(推挽輸出),正常顯示
因為標準I2C是有上拉電阻的,沒有信號總線高電平,所以要配置成開漏
-----------------------------------------------------------
keil的調(diào)試模式
-----------------EXTI外部中斷-----------------



- 相同的Pin不能同時觸發(fā)中斷


或、與、非

數(shù)據(jù)選擇器
-----------------------------------------------------------


配置外部中斷
一、對射紅外傳感器
- 第一步,配置RCC,把我們這里涉及的外設(shè)的時鐘都打開
- RCC_APB2PeriphClockCmd( //目前只有AFIO需要開啟AFIO
- 第三步,配置GPIO,選擇我們的端口為輸入模式
- 第三步,配置AFIO,選擇我們用的這一路GPIO,連接到后面的EXTI
- AFIO外設(shè) AFIO中斷引腳選擇器10:10
- 第四步,配置EXTI,選擇邊沿觸發(fā)方式,比如上升沿、下降沿或者雙邊沿
- EXTI EXTI邊沿檢測及控制 14:12
- 第五步,配置NVIC,給我們這個中斷選擇一個合適的優(yōu)先級
- NVIC 分組管理 “叫號系統(tǒng)”
- AFIO //在GPIO文件中

- ?EXTI
- NVIC //在misc.h中
NVIC PriorityGroupConfig(); //這個函數(shù)是用來中斷分組的,參數(shù)是中斷分組的方式
1.先判斷搶占優(yōu)先級,高搶占優(yōu)先級可以打斷低搶占優(yōu)先級的中斷
2.如果搶占優(yōu)先級相同,再判斷響應(yīng)優(yōu)先級,高響應(yīng)優(yōu)先級不能打斷低響應(yīng)優(yōu)先級
3.搶占優(yōu)先級相同的中斷,當中斷同時發(fā)生時,響應(yīng)級高的先執(zhí)行
4.搶占和響應(yīng)優(yōu)先級都一樣則哪個中斷先發(fā)生,則執(zhí)行哪個
- 寫中斷函數(shù)
二、旋轉(zhuǎn)編碼器
就是說一個中斷在扭的時候有一個方向有延遲,雖然延遲很?。?0度相位差),但是非常不爽
------------------------------------------------------------
TIM定時器

- 定時器本質(zhì)上就是一個計數(shù)器


主模式觸發(fā)DAC功能(數(shù)模轉(zhuǎn)換)
--主從觸發(fā)模式
這里可以看作把引過來定時器作為時鐘,引過來的定時器中斷一次本地的定時器的計數(shù)就加一。

PSC:prescaler、CNT:counter、ARR:autoreloadregister

計數(shù)器時序
公式:
計數(shù)器計數(shù)頻率: CK_CNT=CK_PSC/(PSC+1)
計數(shù)器溢出頻率:CK_CNT_OV=CK_CNT/(ARR+1)
=CK_PSC/(PSC+1)/(ARR+1)
預(yù)分頻器和無預(yù)分頻器區(qū)別……
RCC時鐘樹
------------------------------------------------------------
程序:

函數(shù)講解
ITR應(yīng)該就是InputTrigger的意思,選擇來自其他的定時器的時鐘作為輸入觸發(fā)
類比按鍵抖動延遲那個案例,頻率低就是延時時間更長,消除抖動效果越好
定時器外部時鐘
----------------輸出比較--OC------------------
PWM


那個凍結(jié)模式,應(yīng)該是當某一時刻CNT=CCR以后,之后REF就一直保持為原狀態(tài),即使CNT不等于CCR


- PWM頻率: Freq=CK_PSC/(PSC+1)/(ARR+1)
- PWM占空比:Duty=CCR/(ARR+1)
- PWM分辨率:Reso=1/(ARR+1)
舵機


Q:不共地會有什么缺點呀?
A:不共地就沒法形成回路,無法驅(qū)動

代碼部分:

- 第一步,RCC開啟時鐘,把要用的TIM外設(shè)和GPIO外設(shè)的時鐘打開
- 第二步,配置時基單元,包括前面的時鐘源選擇和的時基單元,都配置好
- 第三步,配置輸出比較單元,里面包括CCR的值、輸出比較模式、極性選擇、輸出使能這些參數(shù)
- 第四步,配置GPIO,把PWM對應(yīng)的GPIO口,初始化為復(fù)用推挽輸出的配置
- 第五步,運行控制了,啟動計數(shù)器,這樣就能輸出PWM了
引腳重映射

直流電機
------------------輸入捕獲--IC------------------


主從觸發(fā)模式

函數(shù)---主從觸發(fā)模式
- 主從模式在上一節(jié)27分鐘那里有講,主模式是配置現(xiàn)在的外設(shè)去控制別的外設(shè)的,從模式是控制自己這時所配置的TIM3的
- 主模式是輸出給別人 ic是輸入捕獲 選主模式干嘛
-------------ADC-----------------------

逐次逼近型ADC



轉(zhuǎn)換模式:


- 配置ADCCLK(rcc.h里)
- ADC
*****************
跳……
------------------------------------------------------------
DMA

軟件觸發(fā)--(flash)
flash的數(shù)據(jù)是燒錄時指定的,可以直接搬運,外設(shè)的數(shù)據(jù)要等待處理完再搬運
- 計算機系統(tǒng)的5大組成部分是: 運算器、控制器、存儲器、輸入設(shè)備和輸出設(shè)備
- 其中運算器和控制器,一般會合在起,叫做CPU,所以算機的核心關(guān)鍵部分就是CPU和存儲器

- ROM就是只讀存儲器,是一種非易失性、掉電不丟失的存儲器
- RAM就是隨機存儲器,是一種易失性、掉電丟失的存儲器
//待續(xù)……
//想學(xué)習但又不想學(xué)習呀 (′▽`)
//唉,我只有在不學(xué)習的時候才想學(xué)習 (′▽`)
------------------------------------------------------------