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


FT的可容忍5v,不帶FT只能3.3v

內(nèi)部寄存器為32位,端口只有低16位對應(yīng)的有


保護(hù)二極管的作用:VDD接3.3V當(dāng)輸入電壓大于3.3v時上方二極管導(dǎo)通 ,VSS接0v 輸入電壓小于0v時下方二極管導(dǎo)通,對內(nèi)電路起保護(hù)作用
上拉電阻/下拉電阻, 上拉輸入/下拉輸入 當(dāng)引腳懸空時保證引腳高/低電平,引腳浮空狀態(tài)極其容易受到外界干擾,
施密特觸發(fā)器;高于上限輸出高電平,低于下限輸出低電平

模擬輸入接ADC,復(fù)用功能接數(shù)字信號
推挽模式;P與N均有效 輸出寄存器為0,lo輸出低電平,輸出寄存器為1時,lo輸出高電平,在此模式下,32對lo口有絕對的控制權(quán)
開漏;Pmos無效,數(shù)據(jù)寄存器為1時下管斷開,高阻模式 數(shù)據(jù)寄存器為0時下管導(dǎo)通,輸出接到VSS 輸出低電平 此模式只有低電平有驅(qū)動能力


使用模擬輸入將引腳配置成ADC

一個端口可以有多個輸入,只能有一個輸出
輸入模式下輸出斷開,輸出模式下輸入接通

讀取輸出函數(shù)的值實(shí)現(xiàn)電平的反轉(zhuǎn),也就是按鍵按下點(diǎn)亮,按鍵再次按下熄滅


NVIC為CPU的助手 根據(jù)優(yōu)先級別向cpu輸入


事件響應(yīng)不會觸發(fā)中斷,而是觸發(fā)別的外設(shè)

AFIO相當(dāng)于數(shù)據(jù)選擇器,前面3個GPIO外設(shè)的16個引腳里選擇一個連接到EXTI通道
9-5 15-10在一個通道


AFIO函數(shù)在GPIO

主函數(shù)查看和清除標(biāo)志位
中斷函數(shù)查看和清除標(biāo)志位

結(jié)構(gòu)體引出成員
CTRL alt 空格

ANVIC的通道配置根據(jù)所需的容量大小選擇

利用中斷函數(shù)的注意事項:
在中斷函數(shù)里不要執(zhí)行耗時間過長的代碼,導(dǎo)致主程序阻塞
不要在中斷函數(shù)和主函數(shù)操作同一個硬件和調(diào)用同一個函數(shù)

32主頻一般是72kHZ
如果記72000個數(shù),頻率為1KHZ ,1ms的時間
自動重裝為技術(shù)目標(biāo)值
中斷頻率等于 72M/65536/65536
時間取倒數(shù)最大定時時間

預(yù)分頻器的值=實(shí)際分頻-1

ui為中斷通往NVIC
u為更新事件
主模式觸發(fā)DAC :若利用中斷來調(diào)用函數(shù)啟動DAC,由于中斷的頻繁會影響主程序的運(yùn)行和其他中斷的響應(yīng)
主模式更新時間會映射到觸發(fā)輸出TRGO ,trgo直接接在DAC的轉(zhuǎn)換引腳上 實(shí)現(xiàn)硬件自動化





中斷標(biāo)志位需要手動清0


手動更新中斷事件使預(yù)分頻器的值有效,由于更新時間和更新中斷同時發(fā)生,更新中斷會至中斷標(biāo)志位, 造成初始化完成就立刻進(jìn)入中斷

手動把更新中斷標(biāo)志位清除防止上電就進(jìn)入中斷

中斷標(biāo)志執(zhí)行完成要至清除中斷







pwM頻率=計數(shù)器更新頻率


以CCR為變量,改變占空比的時間
舵機(jī)要求20ms 50HZ 高電平的時間0.5ms——2.5ms crr500_2500
RCC到角度的映射

結(jié)構(gòu)體成員配置不完整會發(fā)生錯誤,要配置完整 ,或者給結(jié)構(gòu)體賦初始值,然后配置 需要的結(jié)構(gòu)體成員

AFIO引腳的定義和重映射


五個引腳具有調(diào)試功能,使用復(fù)用引腳需要先

PA15 PB3 PB4三個引腳當(dāng)作GPIO來使用加上第一句和第三句 先打開AFIO,在用 AFIO將JTAG解除
重映射定時器或其他外設(shè)引腳 第一二句,先打開AFIO時鐘,再用AFIO重映射的復(fù)用引腳
重映射是調(diào)試端口三句

點(diǎn)擊放大鏡進(jìn)入調(diào)試模式

左上角依次是
復(fù)位 全速運(yùn)行 停止全速運(yùn)行 單步運(yùn)行 跳到當(dāng)前行單步運(yùn)行 跳出當(dāng)前行數(shù)單步運(yùn)行 體哦啊到光標(biāo)指定行單步運(yùn)行 運(yùn)行到指定行
灰色區(qū)域設(shè)置斷點(diǎn)


N>fm測周法
N<fm測周法

交叉連接的作用
通過數(shù)據(jù)選擇器方便切換輸入引腳
一個引腳的輸入映射到兩個捕獲單元,倆個通道對一個信號捕獲可以測量頻率和占空比
工作流程
分頻過后的信號就可以觸發(fā)捕獲電路進(jìn)行工作了,每來一個值,CNT的值就會向CCR轉(zhuǎn)運(yùn)一次,轉(zhuǎn)運(yùn)的同時會觸發(fā)捕獲事件,這個事件會讓狀態(tài)寄存器置標(biāo)志位,同時產(chǎn)生中斷


濾波器工作 原理 :以采用頻率對輸入進(jìn)行采樣,當(dāng)連續(xù)N個值都為高電平時,輸出才為高電平,相反為低電平

前者控制其他外設(shè),后者被別的信號控制 實(shí)現(xiàn)硬件自動化

CNT的值轉(zhuǎn)入CCR里為輸入捕獲自動執(zhí)行
CNT=0清0計數(shù)器為從模式自動執(zhí)行
讀取信號頻率時 讀取CCR1得到N,fc標(biāo)準(zhǔn)頻率/N
CNT最大記65535
從模式清0只有通道1,2,通道3,4只能開啟捕獲中斷,手動清0

ccr1為一整個周期的計數(shù)值,CCR2為高電平期間的計數(shù)值 CCR2/CCR1為占空比

此函數(shù)可以配置PWMI配置與通道一相反 只支持通道1,2





毛刺位置輸出高低電平抵消毛刺現(xiàn)象

TI1的時序是未反向的
當(dāng)編碼器加減方向相反時,將其反向,或者AB引腳交換

編碼器的輸入連接定時器通道1和定時器通道2

將16位無符號數(shù)轉(zhuǎn)化位16位有符號數(shù)得到負(fù)數(shù)

通過給結(jié)構(gòu)體賦初始值,防止初始值未配置完整而造成錯誤


逐次逼近采用2分法找到電壓
每次的二分剛好是位權(quán) 這個過程相當(dāng)于從高位到地位找到電壓的編碼

若使用16通道 聯(lián)合DMA來實(shí)現(xiàn)
規(guī)則通道寄存器只能放一個通道的數(shù)據(jù)
注入組可以放四個通道

觸發(fā)ADC轉(zhuǎn)換有硬件軟件兩種
軟件觸發(fā):調(diào)用代碼
硬件觸發(fā):定時申請中斷,在中斷里手動開始一次轉(zhuǎn)化

預(yù)分頻器只能選擇6 和8

EOC規(guī)則組的轉(zhuǎn)換完成信號
JEOC注入組完成的信號



轉(zhuǎn)換完成給EOC標(biāo)志位置于1 只有在序列1才能轉(zhuǎn)換

不用關(guān)注什么時候結(jié)束,開始,直接可在寄存器里取值







AIN模式是ADC專用模式,斷開GPIO口的輸入輸出對模擬電壓造成干擾
芯片的所有寄存器被分配到一個線性空間,讀寫寄存器控制硬件電路,至少需要寫入兩個字節(jié),指定寄存器的地址,地址下存儲器存的內(nèi)容,寫入內(nèi)容是控制電路,讀出內(nèi)容是獲取電路狀態(tài)
1.半雙工傳輸
2.應(yīng)答機(jī)制
3.一根線可接多個模塊 各個模塊之間不能相互干擾
4.同步協(xié)議,加條時鐘線知道對方讀寫 當(dāng)單片機(jī)進(jìn)入中斷時,傳輸停止,接收方也停止不會對傳輸造成影響


主機(jī)一直控制SCL總線,空閑狀態(tài)下主機(jī)可主動對SDA發(fā)出控制
只有在從機(jī)發(fā)送數(shù)據(jù)和接收應(yīng)答時候,才會把SDA的控制權(quán)給從機(jī)
添加上拉電阻作用
完全杜絕電源短路現(xiàn)象,保證電路的安全
避免引腳模式的頻繁切換,開漏加弱上拉同時具備輸入和輸出的功能,輸出,拉桿子或者放手,操作桿子的變化,輸入,放手,觀察桿子高低就行了


主機(jī)放數(shù)據(jù),高電平從機(jī)讀數(shù)據(jù)

釋放SDA相當(dāng)于輸入模式
低電平從機(jī)放數(shù)據(jù),高電平主機(jī)讀取數(shù)據(jù)

調(diào)用發(fā)送字節(jié)之后緊跟發(fā)送應(yīng)答,判斷從機(jī)有咩有收到剛才給他的數(shù)據(jù)
接收一個字節(jié)后,發(fā)送應(yīng)答位目的告訴從機(jī),是不是還要繼續(xù)發(fā)


上電默認(rèn)指針指向地址0,每寫入和讀出字節(jié),指針會自動自增一次






9位的最后一位是奇偶校驗(yàn)位
波特率的單位是碼元/s 雙方的通信速率bond
比特率 每秒傳輸?shù)谋忍財?shù) BIT/s bps
在二進(jìn)制的調(diào)制下,一個碼元就是一個BIT,此時兩者相同



發(fā)送和接好同時利用兩個寄存器緩存,提高效率
在程序上表現(xiàn)為1個寄存器DR,實(shí)際分為兩個寄存器TDR只寫 RDR只讀
當(dāng)發(fā)送數(shù)據(jù)寄存器寫入數(shù)據(jù)時,檢查當(dāng)前移位寄存器是不是有數(shù)據(jù)進(jìn)行移動位,如果沒有,數(shù)據(jù)寄存器里的數(shù)據(jù)移動到發(fā)送移位寄存器,準(zhǔn)備發(fā)送,當(dāng)數(shù)據(jù)寄存器的值轉(zhuǎn)移到移位寄存器是會置標(biāo)志位,TXE發(fā)送寄存器空 置于1就可以寫入下一個數(shù)據(jù),然后由發(fā)送器控制數(shù)據(jù)移位把數(shù)據(jù)放到TX(——》向右移動),發(fā)送寄存器傳輸數(shù)據(jù)會先等待發(fā)生移位寄存器發(fā)送完成,把下一數(shù)據(jù)放入TDR
接收數(shù)據(jù)寄存器非空RXNE,為1時就可以把數(shù)據(jù)讀走
硬件數(shù)據(jù)流控
nRTS請求發(fā)送,輸出腳 判斷當(dāng)前能不能接收
nCTS清除發(fā)送,輸入腳 接收信號 n代表低電平有效





/16因?yàn)閮?nèi)部還有16倍的采用時鐘





打印中文
1法keil和串口助手都選擇UTF8 KEi加上

2 GB開頭的編碼格式



數(shù)據(jù)包 :把同一批的數(shù)據(jù)進(jìn)行打包和分割,方便接收方進(jìn)行識別





