




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第9章
STM32的主要功能
本章簡介9.1通用I/O和復(fù)用功能I/O
9.2中斷和事件9.3通用定時器9.4串口通信接口9.5模數(shù)轉(zhuǎn)換9.6DMA9.1.1GPIO介紹9.1.2GPIO寄存器描述9.1.3復(fù)用功能I/O和調(diào)試配置介紹9.1.4AFIO寄存器描述9.1.5GPIO應(yīng)用程序設(shè)計——流水燈實驗9.1通用I/O和復(fù)用功能I/O9.1.1GPIO介紹STM32F103微控制器的GPIO資源比較豐富,共有7組通用GPIO端口:GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG。每一組GPIO端口有16個引腳。故一共有112個多功能雙向5V兼容的快速I/O端口,而且所有的I/O端口可以映射到16個外部中斷。GPIO的8種工作模式:(1)浮空輸入:用于不確定的高低電平輸入,例如按鍵識別或者USART接收端Rx口的輸入。(2)上拉輸入:用于上拉至高電平輸入。(3)下拉輸入:用于下拉至低電平輸入。(4)模擬輸入:用于外部模擬輸入,或者低功耗下省電。(5)開漏輸出:可以輸出低電平和高電平。它可用于較大功率驅(qū)動的輸出,如LED、蜂鳴器的輸出引腳。(6)推挽輸出:只能輸出低電平。若想強制輸出高電平,則需要在硬件上外接上拉電阻和上拉電源。(7)復(fù)用功能開漏輸出:具有開漏輸出的功能,還有使用片內(nèi)外設(shè)功能。(8)復(fù)用功能推挽輸出:具有推挽輸出的功能,還有使用片內(nèi)外設(shè)功能。9.1.1GPIO介紹GPIO特點:每個I/O端口位可以自由編程,但I/O端口寄存器必須要按32位字的方式被訪問(不允許以半字或字節(jié)的形式訪問)。所有端口都有外部中斷能力,為了使用外部中斷線,端口必須配置成輸入模式。9.1.1GPIO介紹9.1.2GPIO寄存器描述STM32的每個GPIO端口共有7組寄存器:(1)兩個32位配置寄存器:GPIOx_CRL和GPIOx_CRH;(2)兩個32位數(shù)據(jù)寄存器:GPIOx_IDR和GPIOx_ODR;(3)1個32位置位/復(fù)位寄存器:GPIOx_BSRR;(4)1個16位位置位寄存器:GPIOx_BRR;(5)1個32位鎖定寄存器:GPIOx_LCKR。常用I/O端口寄存器有4個:CRL、CRH、IDR和ODR。1、配置寄存器(CRL、CRH)CRL和CRH是配置寄存器,控制著每個I/O口的工作模式及輸出速度。STM32中一組GPIOx里面共有16個I/O端口。若要配置一個I/O端口,需配置這個端口的工作模式(CNFy[1:0])和輸出速度(MODEy[1:0])。在STM32中一組GPIOx的配置是由兩個32位寄存器組成,分別為端口配置低位寄存器(GPIOx_CRL)和端口配置高位寄存器(GPIOx_CRH)。9.1.2GPIO寄存器描述1、配置寄存器(CRL、CRH)(1)端口配置低位寄存器(GPIOx_CRL,x=A,…,G)偏移地址:0x00復(fù)位值:0x44444444位格式:9.1.2GPIO寄存器描述9.1.2GPIO寄存器描述CRL各位配置:(2)端口配置高位寄存器(GPIOx_CRH,x=A,…,G)偏移地址:0x04復(fù)位值:0x44444444位格式:9.1.2GPIO寄存器描述9.1.2GPIO寄存器描述CRH各位配置:2、數(shù)據(jù)寄存器(IDR、ODR)(1)端口數(shù)據(jù)輸入寄存器(GPIOx_IDR,x=A,…,G)偏移地址:0x08復(fù)位值:0x0000XXXX位格式:
9.1.2GPIO寄存器描述寄存器各位說明:9.1.2GPIO寄存器描述(1)端口數(shù)據(jù)輸入寄存器(GPIOx_IDR,x=A,…,G)(2)端口數(shù)據(jù)輸出寄存器(GPIOx_ODR,x=A,…,G)偏移地址:0Ch復(fù)位值:0x00000000位格式:
9.1.2GPIO寄存器描述寄存器各位說明:9.1.2GPIO寄存器描述(2)端口數(shù)據(jù)輸出寄存器(GPIOx_ODR,x=A,…,G)9.1.3復(fù)用功能I/O和調(diào)試配置介紹1、引腳復(fù)用GPIO的8種工作模式,有兩種工作模式涉及I/O復(fù)用功能:復(fù)用功能開漏輸出和復(fù)用功能推挽輸出。STM32微控制器有很多的片內(nèi)外設(shè),這些外設(shè)的外部引腳都是與GPIO復(fù)用的。STM32一個GPIO如果可以復(fù)用為片內(nèi)外設(shè)的功能引腳,那么當這個GPIO作為片內(nèi)外設(shè)使用的時候,稱為引腳復(fù)用。2、重映射重映射有部分重映射和完全重映射兩類。(1)部分重映射:功能外設(shè)的部分引腳重新映射,還有一部分引腳是原來的默認引腳。(2)完全重映射:功能外設(shè)的所有引腳都重新映射。9.1.3復(fù)用功能I/O和調(diào)試配置介紹片內(nèi)外設(shè)串行通信接口3(USART3)為例:9.1.3復(fù)用功能I/O和調(diào)試配置介紹地址偏移:0x00復(fù)位值:0x00000000位格式:1、事件控制寄存器(AFIO_EVCR)9.1.4AFIO寄存器描述寄存器各位說明:9.1.4AFIO寄存器描述1、事件控制寄存器(AFIO_EVCR)地址偏移:0x0C復(fù)位值:0x0000位格式:2、外部中斷配置寄存器(AFIO_EXTICRx,x=1,…,5)9.1.4AFIO寄存器描述寄存器各位說明:9.1.4AFIO寄存器描述2、外部中斷配置寄存器(AFIO_EXTICRx,x=1,…,5)1、功能要求控制STM32連接的兩個LED燈交替閃爍以實現(xiàn)一個類似跑馬燈的效果,該實驗的關(guān)鍵在于如何控制STM32的I/O口輸出。2、硬件設(shè)計控制STM32連接的兩個LED燈交替閃爍以實現(xiàn)一個類似跑馬燈的效果,該實驗的關(guān)鍵在于如何控制STM32的I/O口輸出。9.1.5GPIO應(yīng)用程序設(shè)計—流水燈實驗2、硬件設(shè)計9.1.5GPIO應(yīng)用程序設(shè)計—流水燈實驗PE5和PB5引腳應(yīng)配置為推挽輸出模式;當引腳輸出低電平(0V)時,LED燈亮;輸出高電平(3.3V)時,LED燈熄滅。3、軟件設(shè)計(1)主流程本實例由一個初始化函數(shù)加一個無限循環(huán)函數(shù)構(gòu)成。(2)初始化I/O口包含了一個函數(shù)voidled_init,功能是用于配置PB5和PE5為推挽輸出。在配置STM32外設(shè)的時候,要先使能該外設(shè)的時鐘。APB2ENR是APB2總線上的外設(shè)時鐘使能寄存器,要使能的PORTB和PORTE的時鐘使能位分別在bit3和bit6,只要將這兩位置1就可以使能PORTB和PORTE的時鐘了。將PB5和PE5的模式置為推挽輸出,且默認輸出1。9.1.5GPIO應(yīng)用程序設(shè)計—流水燈實驗9.1.5GPIO應(yīng)用程序設(shè)計—流水燈實驗(3)延時子程序4、代碼實現(xiàn)——主函數(shù)main.c的程序代碼#include"gpio.h"http://包含GPIO寄存器地址映射頭文件#include"clock.h"http://包含系統(tǒng)時鐘初始化頭文件,這部分內(nèi)容之后講解/*----函數(shù)聲明----*/voidled_init(void);//led初始化函數(shù)聲明voiddelay(void);//延時函數(shù)聲明/*----主函數(shù)----*/intmain(void){Stm32_Clock_Init(9);//系統(tǒng)時鐘初始化,9分頻實現(xiàn)72MHz,這部分內(nèi)容之后講解led_init();while(1){rGPIOB_ODR=~0x20;//bit5置0,其他位全部置1,PB5輸出低電平,DS0亮rGPIOE_ODR=0xFFFFFFFF;//所有位置1,PE5輸出高電平,DS1熄滅delay();//延時rGPIOB_ODR=0xFFFFFFFF;//PB5輸出高電平,DS0熄滅rGPIOE_ODR=~0x20;//PE5輸出低電平,DS1亮delay();//延時}}9.1.5GPIO應(yīng)用程序設(shè)計—流水燈實驗/*---led初始化函數(shù)---*/voidled_init(void){rRCC_APB2ENR|=1<<3;//打開GPIOB時鐘rRCC_APB2ENR|=1<<6;//打開GPIOB時鐘rGPIOB_CRL=0x00500000;//設(shè)置PB5為普通推挽輸出模式rGPIOB_ODR=0xFFFFFFFF;//默認PB5輸出高電平rGPIOE_CRL=0x00500000;//設(shè)置PB5為普通推挽輸出模式rGPIOE_ODR=0xFFFFFFFF;//默認PB5輸出高電平}/*---延時函數(shù)---*/voiddelay(void){unsignedinti,j;for(i=0;i<1000;i++)for(j=0;j<2000;j++);}9.1.5GPIO應(yīng)用程序設(shè)計—流水燈實驗4、代碼實現(xiàn)——主函數(shù)main.c的程序代碼#ifndef__GPIO_H__#define__GPIO_H__/*---GPIO相關(guān)寄存器地址映射---*/#defineGPIOB_BASE0x40010C00//GPIOB基地址#defineGPIOE_BASE0x40011800//GPIOE基地址#defineGPIOB_CRL(GPIOB_BASE+0x00)#defineGPIOB_ODR(GPIOB_BASE+0x0C)#defineGPIOE_CRL(GPIOE_BASE+0x00)#defineGPIOE_ODR(GPIOE_BASE+0x0C)#defineRCC_APB2ENR0x40021018#definerGPIOE_CRL(*((unsignedint*)GPIOE_CRL))#definerGPIOE_ODR(*((unsignedint*)GPIOE_ODR))#definerGPIOB_CRL(*((unsignedint*)GPIOB_CRL))#definerGPIOB_ODR(*((unsignedint*)GPIOB_ODR))#definerRCC_APB2ENR(*((unsignedint*)RCC_APB2ENR))#endif9.1.5GPIO應(yīng)用程序設(shè)計—流水燈實驗4、代碼實現(xiàn)——頭文件gpio.h的程序代碼如下5、下載驗證代碼編譯完成之后,把代碼下載到硬件平臺上。正常運行時,兩只LED燈交替閃爍,實現(xiàn)了類似跑馬燈的效果。9.1.5GPIO應(yīng)用程序設(shè)計—流水燈實驗9.2中斷和事件
中斷系統(tǒng)通常包括:硬件(中斷控制器)和軟件(中斷服務(wù)函數(shù))。利用中斷系統(tǒng),微控制器能夠控制基于前后臺的嵌入式軟件架構(gòu)應(yīng)用程序,可以實現(xiàn)對外部緊急事件的響應(yīng)和顯著地提高CPU的使用率。掌握中斷機制及學(xué)會設(shè)置中斷向量表和編寫中斷服務(wù)程序是初學(xué)者的基本技能。9.2中斷和事件
9.2.1STM32中斷系統(tǒng)的組成9.2.2EXTI及其寄存器描述STM32中斷系統(tǒng)為嵌套向量中斷控制器(NVIC)9.2.1STM32中斷系統(tǒng)的組成(1)68個可屏蔽中斷通道(不包含16個Cortex-M3的中斷線);(2)16個可編程的優(yōu)先等級(使用了4位中斷優(yōu)先級);(3)低延遲的異常和中斷處理;(4)電源管理控制;(5)嵌套向量中斷控制器(NVIC)和處理器核的接口緊密相連,可以實現(xiàn)低延遲的中斷處理和高效地處理晚到的中斷。1、異常中斷向量表當一個中斷申請被CPU接受后,對應(yīng)的中斷服務(wù)程序就會執(zhí)行。為了決定中斷服務(wù)程序的入口地址,STM32的Cortex-M3內(nèi)核使用了“異常中斷向量表查表機制”。異常中斷向量表其實是一個WORD(32位整數(shù))數(shù)組,每個下標對應(yīng)一種中斷或者異常,該下標元素的值則是該中斷服務(wù)程序的入口地址。異常中斷向量表的存儲位置可設(shè)置,通過NVIC中的一個重定位寄存器來指出向量表的地址。9.2.1STM32中斷系統(tǒng)的組成部分異常中斷向量表:9.2.1STM32中斷系統(tǒng)的組成9.2.1STM32中斷系統(tǒng)的組成部分異常中斷向量表(續(xù)):9.2.1STM32中斷系統(tǒng)的組成2、NVIC的優(yōu)先級和優(yōu)先級組在NVIC中,中斷優(yōu)先級分為搶占優(yōu)先級和響應(yīng)優(yōu)先級。NVIC只可以配置16種中斷向量的優(yōu)先級,搶占優(yōu)先級和響應(yīng)優(yōu)先級的數(shù)量由一個4位的數(shù)來決定,共有5種組合方式。注意兩點:第一,如果兩個中斷的搶占優(yōu)先級和響應(yīng)優(yōu)先級都是一樣的,則看哪個中斷先發(fā)生就先執(zhí)行;第二,高優(yōu)先級的搶占優(yōu)先級是可以打斷正在進行的低搶占優(yōu)先級中斷的。搶占優(yōu)先級相同的中斷,高優(yōu)先級的響應(yīng)優(yōu)先級不可以打斷低響應(yīng)優(yōu)先級的中斷。9.2.1STM32中斷系統(tǒng)的組成優(yōu)先級組表:9.2.2EXTI及其寄存器描述1、EXTI介紹EXTI稱為外部中斷/事件控制器,是STM32微控制器的一個片上外設(shè),能夠在I/O端口產(chǎn)生中斷或者事件的請求。GPIO與EXTI的連接方式是PAx~PGx端口的中斷事件都連接到EXTIx。例如:PA0~PG0連接到EXTI0、PA1~PG1連接到EXTI1,依此類推PA15~PG15連接到EXTI15。要注意的是:同一時刻EXTIx只能響應(yīng)一個端口的事件觸發(fā),不能夠同一時間響應(yīng)所有的GPIO端口的事件,但可以分時復(fù)用。它可以配置為上升沿觸發(fā)、下降沿觸發(fā)或雙邊沿觸發(fā)。EXTI與GPIO連接:9.2.2EXTI及其寄存器描述2、EXTI及其寄存器描述共6組寄存器9.2.2EXTI及其寄存器描述(1)中斷屏蔽寄存器(EXTI_IMR)偏移地址:0x00復(fù)位值:0x00000000位格式:9.2.2EXTI及其寄存器描述(2)事件屏蔽寄存器(EXTI_EMR)偏移地址:0x04復(fù)位值:0x00000000位格式:9.2.2EXTI及其寄存器描述(3)上升沿觸發(fā)選擇寄存器(EXTI_RTSR)偏移地址:0x08復(fù)位值:0x00000000位格式:9.2.2EXTI及其寄存器描述(4)下降沿觸發(fā)選擇寄存器(EXTI_FTSR)偏移地址:0x0C復(fù)位值:0x00000000位格式:9.2.2EXTI及其寄存器描述(5)軟件中斷事件寄存器(EXTI_SWIER)偏移地址:0x10復(fù)位值:0x00000000位格式:9.2.2EXTI及其寄存器描述(6)請求掛起寄存器(EXTI_PR)偏移地址:0x14復(fù)位值:0xXXXXXXXX位格式:9.2.2EXTI及其寄存器描述9.3通用定時器
定時器實際是一個計數(shù)器,能夠?qū)ξ⒖刂破飨到y(tǒng)內(nèi)部脈沖或外部輸入進行計數(shù)。通用定時器不僅能夠?qū)崿F(xiàn)計數(shù)和延時的基本功能,還能夠?qū)崿F(xiàn)輸入捕獲、輸出比較和PWM輸出等高級功能,連接多種外部設(shè)備9.3通用定時器
9.3.1定時器基本介紹9.3.2通用定時器的基本功能9.3.3通用定時器的寄存器描述STM32微控制器內(nèi)部集成了多個可編程定時器,分為:基本定時器、通用定時器和高級定時器9.3.1定時器基本介紹基本定時器通用定時器高級定時器STM32微控制器的通用定時器是TIMx(如TIM2、TIM3、TIM4和TIM5),具有基本定時器的所有功能。它的主要特性:(1)具有16位遞增/遞減的自動重裝載功能計數(shù)器,內(nèi)部時鐘CK_CNT的來源TIM_CLK來自APB1預(yù)分頻器的輸出。(2)具有16位可編程(可實時修改)預(yù)分頻器,計數(shù)器時鐘頻率的分頻系數(shù)為1~65536之間的任意數(shù)值。(3)具有4個獨立通道,每個通道可用于輸入捕獲、輸出比較、PWM生成(邊緣或中間對齊模式)、單脈沖模式輸出。(4)使用外部信號控制定時器和定時器互連的同步電路。9.3.1定時器基本介紹(5)以下4個事件發(fā)生時產(chǎn)生中斷或DMA。更新:計數(shù)器向上溢出/向下溢出,計數(shù)器初始化(通過軟件或者內(nèi)部/外部觸發(fā))。觸發(fā)事件(計數(shù)器啟動、停止、初始化或者由內(nèi)部/外部觸發(fā)計數(shù))。輸入捕獲。輸出比較。(6)支持針對定位的增量(正交)編碼器和霍爾傳感器電路。9.3.1定時器基本介紹通用定時器是一個由可編程的預(yù)分頻器驅(qū)動的具有自動重裝載功能的16位計數(shù)器。通用定時器可分為兩個部分:計數(shù)器TIM_CNT和捕獲/比較寄存器TIMx_CCR。計數(shù)器TIM_CNT。計數(shù)器部分由觸發(fā)控制器、1個16位預(yù)分頻器、1個帶自動重裝載功能寄存器的16位計數(shù)器構(gòu)成。捕獲/比較寄存器TIMx_CCR。包括捕獲輸入部分(數(shù)字濾波、多路復(fù)用功能和預(yù)分頻器)和比較輸出部分(比較器和輸出控制)。9.3.1定時器基本介紹(1)捕獲輸入:在輸入時,捕獲/比較寄存器TIM_CCR被用于當(存儲)輸入脈沖在電平發(fā)生翻轉(zhuǎn)時加載脈沖計數(shù)器TIM_CNT的當前計數(shù)值,從而實現(xiàn)脈沖的頻率測量。(2)比較輸出:在輸出時,捕獲/比較寄存器TIM_CCR用來存儲一個脈沖數(shù)值,把這個數(shù)值與脈沖計數(shù)器TIM_CNT的當前計數(shù)值進行比較,根據(jù)比較結(jié)果進行不同的電平輸出。9.3.1定時器基本介紹1.計數(shù)模式9.3.2通用定時器的基本功能計數(shù)模式是最基本的工作模式。STM32通用定時器中的16位計數(shù)器TIM_CNT有3種計數(shù)模式:(1)向上計數(shù)模式:計數(shù)器從0計數(shù)到自動加載值(TIMx_ARR),然后重新從0開始計數(shù),并產(chǎn)生一個計數(shù)器溢出事件。(2)向下計數(shù)模式:計數(shù)器從自動裝入的值(TIMx_ARR)開始向下計數(shù)到0,然后從自動裝入的值重新開始,并產(chǎn)生一個計數(shù)器向下溢出事件。9.3.2通用定時器的基本功能(3)中心對齊模式(向上/向下計數(shù)):計數(shù)器從0開始計數(shù)到自動裝入值(TIMx_ARR),產(chǎn)生一個計數(shù)器溢出事件,然后向下計數(shù)到1,并產(chǎn)生一個計數(shù)器溢出事件,再從0開始重新計數(shù)。2.輸出比較模式通常用來控制一個輸出波形或者指示一段給定的時間已經(jīng)到時。當捕獲/比較寄存器TIM_CCRx的值與脈沖計數(shù)器TIM_CNT的計數(shù)器相等時:(1)相應(yīng)的輸出引腳可根據(jù)設(shè)置的編程模式選擇以下賦值:置位、復(fù)位、翻轉(zhuǎn)或者不變。(2)中斷狀態(tài)寄存器中的相應(yīng)標志位置位。(3)如果相應(yīng)的中斷屏蔽位置位,則產(chǎn)生中斷。(4)如果DMA請求使能置位,則產(chǎn)生DMA請求。9.3.2通用定時器的基本功能2.輸出比較模式需要注意的是:使用輸出比較模式時,TIM_CCRx寄存器能夠在任何時候可通過軟件進行更新以控制輸出波形的前提條件是不使用預(yù)裝載寄存器(TIMx_CCMRx寄存器的OCxPE位為0),否則TIMx_CCRx影子寄存器只能在發(fā)生下一次更新事件時被更新。9.3.2通用定時器的基本功能3.PWM輸出模式STM32的定時器除了TIM6和TIM7(基本定時器)之外,其他的定時器都可以產(chǎn)生PWM輸出。STM32高級定時器TIM1、TIM8可以同時產(chǎn)生7路PWM輸出(其中,通道1~3:每個通道可輸出兩路互補PWM;通道4:只能輸出一路PWM)。通用定時器可以同時產(chǎn)生4路PWM輸出。STM32最多可以同時產(chǎn)生30路PWM輸出。9.3.2通用定時器的基本功能TIM3的4個通道相對應(yīng)的各個引腳以及重映射情況下的各個引腳的位置。9.3.2通用定時器的基本功能3.PWM輸出模式PWM計數(shù)模式示意:9.3.2通用定時器的基本功能3.PWM輸出模式在PWM輸出模式下,除了CNT(計數(shù)器當前值)ARR(自動重裝載值)之外,還多了一個值CCRx(捕獲/比較寄存器值)當CNT<CCRx時,TIMx_CHx通道輸出低電平;當CNT≥CCRx時,TIMx_CHx通道輸出高電平。脈沖寬度調(diào)制模式(PWM模式),以產(chǎn)生一個由TIMx_ARR寄存器確定頻率,由TIMx_CCRx寄存器確定占空比的信號。9.3.2通用定時器的基本功能3.PWM輸出模式每一個捕獲/比較通道都是圍繞著一個捕獲/比較寄存器(包含影子寄存器),包括捕獲的輸入部分(數(shù)字濾波、多路復(fù)用和預(yù)分頻器)和輸出部分(比較器和輸出控制)。捕獲/比較模塊由一個預(yù)裝載寄存器和一個影子寄存器組成。讀寫過程僅操作預(yù)裝載寄存器。在捕獲模式下,捕獲發(fā)生在影子寄存器上,然后復(fù)制到預(yù)裝載寄存器中。在比較模式下,預(yù)裝載寄存器的內(nèi)容被復(fù)制到影子寄存器中,然后影子寄存器的內(nèi)容和計數(shù)器進行比較。9.3.2通用定時器的基本功能3.PWM輸出模式(1)CCR1寄存器捕獲/比較寄存器:設(shè)置比較值。(2)CCMR1寄存器OC1M[2:0]位:對于PWM方式下,用于設(shè)置PWM模式1或者PWM模式2。(3)CCER寄存器CC1P位:輸入/捕獲1輸出極性。0:高電平有效,1:低電平有效。CC1E位:輸入/捕獲1輸出使能。0:關(guān)閉,1:打開。PWM輸出的模式區(qū)別,通過設(shè)置寄存器TIMx_CCMR1的OC1M[2:0]位來確定PWM的輸出模式。9.3.2通用定時器的基本功能3.PWM輸出模式PWM模式1:向上計數(shù),TIMx_CNT<TIMx_CCR1時通道1為有效電平,否則為無效電平;向下計數(shù),TIMx_CNT>TIMx_CCR1時通道1為無效電平(OC1REF=0),否則為有效電平(OC1REF=1)。PWM模式2:向上計數(shù),TIMx_CNT<TIMx_CCR1時通道1為無效電平,否則為有效電平;向下計數(shù),TIMx_CNT>TIMx_CCR1時通道1為有效電平,否則為無效電平。9.3.2通用定時器的基本功能3.PWM輸出模式9.3.2通用定時器的基本功能兩種PWM輸出模式區(qū)別:PWM模式只是區(qū)別什么時候是有效電平,但并沒有確定是高電平有效還是低電平有效。這需要結(jié)合CCER寄存器的CCxP位的值來確定。若為PWM模式1,且CCER寄存器的CCxP位為0,則當TIMx_CNT<TIMx_CCR1時,輸出高電平;若為PWM模式1,且CCER寄存器的CCxP位為2,則當TIMx_CNT<TIMx_CCR1時,輸出低電平。PWM的3種計數(shù)模式如下:
(1)向上計數(shù)模式以PWM模式1為例:當TIMx_CNT<TIMx_CCRx時,PWM信號參考OCxREF為高,否則為低。如果TIMx_CCRx中的比較值大于自動重裝載值(TIMx_ARR),則OCxREF保持為“1”;如果比較值為0,則OCxREF保持為“0”9.3.2通用定時器的基本功能PWM的3種計數(shù)模式如下:
9.3.2通用定時器的基本功能(2)向下計數(shù)模式在PWM模式1下,當TIMx_CNT>TIMx_CCRx時,參考信號OCxREF為低,否則為高。如果TIMx_CCRx中的比較值大于TIMx_ARR中的自動重裝載值,則OCxREF保持為“1”。該模式下不能產(chǎn)生0%的PWM波形。(3)中心對齊模式當TIMx_CR1寄存器中的CMS位不為“00”時,為中心對齊模式(所有其他的配置對OCxREF/OCx
信號都有相同的作用)。根據(jù)不同的CMS位設(shè)置,比較標志可以在計數(shù)器向上計數(shù)時被置“1”、在計數(shù)器向下計數(shù)時被置“1”或在計數(shù)器向上和向下計數(shù)時被置“1”。TIMx_CR1寄存器中的計數(shù)方向位(DIR)由硬件更新,不要用軟件修改它。9.3.2通用定時器的基本功能(3)中心對齊模式在TIMx_CCMRx寄存器中的OCxM位寫入“110”(PWM模式1)或“111”(PWM模式2),能夠獨立地設(shè)置每個OCx輸出通道產(chǎn)生一路PWM。必須設(shè)置TIMx_CCMRx寄存器的OCxPE位以使能相應(yīng)的預(yù)裝載寄存器,最后還要設(shè)置TIMx_CR1寄存器的ARPE位(在向上計數(shù)或中心對齊模式中),使能自動重裝載的預(yù)裝載寄存器。9.3.2通用定時器的基本功能(3)中心對齊模式TIMx_CRx寄存器的ARPE位決定著是否使能自動重裝載的預(yù)裝載寄存器。根據(jù)TIMx_CR1寄存器的APRE位的設(shè)置,APRE=0時,預(yù)裝載寄存器的內(nèi)容就可以隨時傳送到影子寄存器,此時兩者是互通的;APRE=1時,在每一次更新事件時,才將預(yù)裝在寄存器的內(nèi)容傳送至影子寄存器。簡單地說,ARPE=1,ARR立即生效;APRE=0,ARR下個比較周期生效。9.3.2通用定時器的基本功能4.輸入捕獲模式在輸入捕獲模式下,IC1、IC2和IC3、IC4可以分別通過軟件設(shè)置將其映射到TI1、TI2和TI3、TI4。當每次檢測到ICx信號上相應(yīng)的邊沿后,脈沖計數(shù)器TIM_CNT的當前值被鎖存到捕獲/比較寄存器TIM_CCRx中。當捕獲事件發(fā)生后,則產(chǎn)生中斷或者DMA操作。9.3.2通用定時器的基本功能通用定時器共有17個寄存器:9.3.3通用定時器的寄存器描述兩個控制寄存器(TIMx_CRx);1個從模式控制寄存器(TIMx_SMCR);1個DMA/中斷使能寄存器(TIMx_DIER)1個狀態(tài)寄存器(TIMx_SR);1個事件產(chǎn)生寄存器(TIMx_EGR);兩個捕獲/比較模式寄存器(TIMx_CCMRx);1個捕獲/比較使能寄存器(TIMx_CCER);1個計數(shù)器(TIMx_CNT);1個預(yù)分頻器(TIMx_PSC);1個自動重裝載寄存器(TIMx_ARR)4個捕獲/比較寄存器(TIMx_CCRx);1個DMA控制寄存器(TIMx_DCR)。1.控制寄存器(TIMx_CRx)作用:對計數(shù)器的計數(shù)方式、使能位等進行設(shè)置。這里ARPE位為自動重裝載預(yù)裝載允許位。ARPE=0時,TIMx_ARR寄存器沒有緩沖;ARPE=1時,TIMx_ARR寄存器被裝入緩沖器。偏移地址:0x00復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述偏移地址:0x00復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述1.控制寄存器(TIMx_CRx)TIMx_CRx寄存器各位說明:9.3.3通用定時器的寄存器描述9.3.3通用定時器的寄存器描述TIMx_CRx寄存器各位說明:2.從模式控制寄存器(TIMx_SMCR)偏移地址:0x08復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述TIMx_SMCR寄存器各位說明:9.3.3通用定時器的寄存器描述9.3.3通用定時器的寄存器描述TIMx_SMCR寄存器各位說明:9.3.3通用定時器的寄存器描述TIMx_SMCR寄存器各位說明:TIMx內(nèi)部觸發(fā)連接如:如果某個產(chǎn)品中沒有相應(yīng)的定時器,則對應(yīng)的觸發(fā)信號ITRx也不存在。9.3.3通用定時器的寄存器描述3.DMA/中斷使能寄存器(TIMx_DIER)作用:對DMA/中斷使能進行配置偏移地址:0x0C復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述TIMx_DIER寄存器各位說明:9.3.3通用定時器的寄存器描述TIMx_DIER寄存器各位說明:9.3.3通用定時器的寄存器描述4.狀態(tài)寄存器(TIMx_SR)偏移地址:0x10復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述TIMx_SR寄存器各位說明:9.3.3通用定時器的寄存器描述9.3.3通用定時器的寄存器描述TIMx_SR寄存器各位說明:9.3.3通用定時器的寄存器描述TIMx_SR寄存器各位說明:5.事件產(chǎn)生寄存器(TIMx_EGR)偏移地址:0x14復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述TIMx_EGR寄存器各位說明:9.3.3通用定時器的寄存器描述6.捕獲/比較模式寄存器(TIMx_CCMRx,x=1,…,2)偏移地址:0x18復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述輸出模式,TIMx_CCMRx寄存器各位說明:9.3.3通用定時器的寄存器描述9.3.3通用定時器的寄存器描述輸出模式,TIMx_CCMRx寄存器各位說明:9.3.3通用定時器的寄存器描述輸出模式,TIMx_CCMRx寄存器各位說明:9.3.3通用定時器的寄存器描述輸出模式,TIMx_CCMRx寄存器各位說明:輸入捕獲模式,寄存器各位說明:9.3.3通用定時器的寄存器描述9.3.3通用定時器的寄存器描述輸入捕獲模式,寄存器各位說明:7、捕獲/比較使能寄存器(TIMx_CCER)偏移地址:0x20復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述TIMx_CCER寄存器各位說明:9.3.3通用定時器的寄存器描述9.3.3通用定時器的寄存器描述TIMx_CCER寄存器各位說明:標準OCx通道的輸出控制位:9.3.3通用定時器的寄存器描述8.計數(shù)器偏移地址:0x24復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述寄存器各位說明:9.自動重裝載寄存器(TIMx_ARR)偏移地址:0x2C復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述寄存器各位說明:10.預(yù)分頻器(TIMx_PSC)偏移地址:0x28復(fù)位值:0x0000位格式9.3.3通用定時器的寄存器描述寄存器各位說明:9.3.3通用定時器的寄存器描述11.捕獲/比較寄存器(TIMx_CCRx)作用:在PWM輸出模式下,確定比較的值。偏移地址:0x34復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述TIMx_CCRx寄存器各位說明:9.3.3通用定時器的寄存器描述12.DMA控制寄存器(TIMx_DCR)偏移地址:0x48復(fù)位值:0x0000位格式:9.3.3通用定時器的寄存器描述TIMx_DCR寄存器各位說明:9.3.3通用定時器的寄存器描述9.4串行通信接口
通信接口有很多種,例如UART、SPI、I2C、USB等,其中UART(通用異步收發(fā)器)是較常見、使用頻繁的通信接口。將從數(shù)據(jù)通信的基本原理出發(fā),講述STM32微控制器的UAR模塊——USART(通用同步/異步收發(fā)器)的基本原理及使用。9.4串行通信接口
9.4.1串行通信接口介紹9.4.2USART的基本功能9.4.3USART寄存器描述9.4.1串行通信接口介紹要確保能正確收發(fā)數(shù)據(jù),通信雙方必須事先在物理上建立連接,在邏輯上商定好通信協(xié)議。下面從物理層和協(xié)議層兩個角度介紹UART數(shù)據(jù)通信的基本原理。9.4.1串行通信接口介紹1、UART物理層UART是一種異步串行全雙工通信接口。由于是異步通信,UART沒有時鐘線;由于是全雙工制式,UART需要至少兩根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸;由于是串行通信,收發(fā)數(shù)據(jù)只能一位一位地在各自的數(shù)據(jù)線上傳輸。最簡單的UART接口可由3根線組成:發(fā)送數(shù)據(jù)線(Tx)、接收數(shù)據(jù)線(Rx)和地線(GND)UART采用TTL/CMOS的邏輯電平標準表示數(shù)據(jù),高電平表示邏輯1,低電平表示邏輯0。UART接口連接方法:9.4.1串行通信接口介紹1、UART物理層2、UART協(xié)議層通信協(xié)議一般包括3個方面:時序、數(shù)據(jù)格式和傳輸速率。UART是異步通信,沒有時鐘線,也就沒有時序。9.4.1串行通信接口介紹9.4.1串行通信接口介紹UART通信是以幀為單位在物理鏈路上進行傳輸?shù)?。一個數(shù)據(jù)幀由1位起始位、5~8位數(shù)據(jù)位、0/1位校驗位和1/1.5/2位停止位4個部分構(gòu)成。UART數(shù)據(jù)格式示意圖:UART通信雙方必須事先約定相同的傳輸速率收發(fā)數(shù)據(jù)。UART數(shù)據(jù)傳輸速率可以用波特率來表示。波特率,每秒傳送碼元的個數(shù),單位是baud。常用的UART傳輸速率有9600、19200、115200(單位為baud)等。根據(jù)約定的傳輸速率和所要傳輸?shù)臄?shù)據(jù)大小,可以得出通過UART發(fā)送全部數(shù)據(jù)所需的時間。9.4.1串行通信接口介紹9.4.2USART的基本功能STM32微控制器的USRT模塊被稱為USART。它在具有UART基本功能的同時,還具有同步單向通信功能。STM32F103擁有5個USART+兩個UART。(1)USART1位于高速APB2總線上,其他的USART和UART位于APB1總線上。(2)全功能可編程串行接口特性:包括數(shù)據(jù)位(8或9位)、校驗位(奇、偶或無)、停止位(1或2位);支持硬件流控制(CTS或RTS)。(3)自帶可編程波特率發(fā)生器(整數(shù)部分12位,小數(shù)部分4位),最高傳輸速率可達4.5Mbit/s。(4)兩個獨立帶中斷的標志位:發(fā)送標志位TXE和接收標志位RXNE。(5)支持DMA傳輸,發(fā)送DMA請求和接收DMA請求。(6)支持單線半雙工通信。USART主要具有以下特性:9.4.2USART的基本功能USART的GPIO復(fù)位功能配置:9.4.2USART的基本功能1、內(nèi)部結(jié)構(gòu)USART結(jié)構(gòu)自下而上可分為波特率控制、收發(fā)控制和數(shù)據(jù)存儲轉(zhuǎn)移3大部分。9.4.2USART的基本功能(1)在波特率控制部分,將USART外設(shè)時鐘源經(jīng)過USART的分頻系數(shù)——USARTDIV分頻后,分別輸出作為發(fā)送器的時鐘、接收器的時鐘、控制發(fā)送的時序,還有控制接收的時序。通過改變外設(shè)時鐘源的分頻系數(shù)USARTDIV,就可以實現(xiàn)對USART波特率的控制。(2)收發(fā)控制部分主要由USART控制寄存器(CR1、CR2、CR3)和USART狀態(tài)寄存器(SR)組成。通過對以上控制寄存器寫入各種參數(shù),可以控制USART數(shù)據(jù)的收發(fā)。同時,通過讀取狀態(tài)寄存器,還可以查詢USART當前的狀態(tài)。(3)數(shù)據(jù)存儲轉(zhuǎn)移部分主要由兩個移位寄存器——發(fā)送移位寄存器和接收移位寄存器組成。這兩個寄存器負責收發(fā)數(shù)據(jù)并做并串轉(zhuǎn)換。9.4.2USART的基本功能USART收發(fā)過程:9.4.2USART的基本功能2、USART中斷STM32的USART主要涉及的中斷事件如下表所示。各種中斷事件都被連接在同一個中斷向量。9.4.2USART的基本功能3、使用DMA進行USART通信USART可利用DMA進行連續(xù)通信。每個USART有一個DMA發(fā)送請求和一個DMA接收請求,分別映射到不同的DMA通道上。當傳輸或接收完成DMA控制器指定的數(shù)據(jù)量時,DMA控制器都會在DMA通道的中斷向量上產(chǎn)生一個中斷。9.4.2USART的基本功能9.4.3USART寄存器描述與USART有關(guān)的寄存器一共有7個,分別是:1個狀態(tài)寄存器(USART_SR),1個數(shù)據(jù)寄存器(USART_DR),1個波特比率寄存器(USART_BRR),3個控制寄存器(USART_CRx)1個保護時間和預(yù)分頻寄存器(USART_GTPR)。1、狀態(tài)寄存器(USART_SR)地址偏移:0x00復(fù)位值:0x00C0位格式:9.4.3USART寄存器描述USART_SR寄存器各位說明:9.4.3USART寄存器描述9.4.3USART寄存器描述USART_SR寄存器各位說明:9.4.3USART寄存器描述USART_SR寄存器各位說明:9.4.3USART寄存器描述USART_SR寄存器各位說明:2、數(shù)據(jù)寄存器(USART_DR)地址偏移:0x04復(fù)位值:不確定
位格式:9.4.3USART寄存器描述USART_DR寄存器各位說明:9.4.3USART寄存器描述3、波特比率寄存器(USART_BRR)地址偏移:0x08復(fù)位值:0x0000位格式:9.4.3USART寄存器描述USART_BRR寄存器各位說明:9.4.3USART寄存器描述4、控制寄存器(USART_CRx)地址偏移:0x0C復(fù)位值:0x0000位格式:9.4.3USART寄存器描述USART_CRx寄存器各位說明:9.4.3USART寄存器描述9.4.3USART寄存器描述USART_CRx寄存器各位說明:9.4.3USART寄存器描述USART_CRx寄存器各位說明:9.4.3USART寄存器描述USART_CRx寄存器各位說明:5、保護時間和預(yù)分頻寄存器(USART_GTPR)地址偏移:0x18復(fù)位值:0x0000位格式:9.4.3USART寄存器描述USART_GTPR寄存器各位說明:9.4.3USART寄存器描述9.5模數(shù)轉(zhuǎn)換
模數(shù)轉(zhuǎn)換器(ADC)是一種將連續(xù)變化的模擬信號轉(zhuǎn)換為離散變化的數(shù)字信號的電子器件。嵌入式系統(tǒng)都是數(shù)字系統(tǒng),通過ADC,增加了嵌入式系統(tǒng)模擬輸入的功能,搭建了以數(shù)字處理為中心的嵌入式系統(tǒng)與現(xiàn)實模擬世界溝通的“橋梁”。9.5模數(shù)轉(zhuǎn)換
9.5.1模數(shù)轉(zhuǎn)換介紹9.5.2模數(shù)轉(zhuǎn)換操作9.5.3模數(shù)轉(zhuǎn)換寄存器描述9.5.1模數(shù)轉(zhuǎn)換介紹自然界中絕大部分的信號都是模擬信號,例如溫度、濕度、光照強度、加速度、壓力等。通過傳感器,能夠?qū)⑦@些物理信號都轉(zhuǎn)換為電子設(shè)備才能識別的模擬電信號。但是由于嵌入式系統(tǒng)都是數(shù)字系統(tǒng),不能處理模擬電信號,因此需要用ADC將其轉(zhuǎn)換為數(shù)字信號。1、ADC的主要性能參數(shù)ADC的主要性能參數(shù)有量程、分辨率、精度和轉(zhuǎn)換時間等。(1)量程。量程是指ADC所能轉(zhuǎn)換的模擬輸入電壓的范圍。量程分為單極性和雙極性兩種類型,STM32微控制器的ADC模塊使用0~3.3V的單極性量程。9.5.1模數(shù)轉(zhuǎn)換介紹(2)分辨率。分辨率是指ADC所能分辨的最小模擬輸入量,即ADC輸出一個最小數(shù)字信號時所對應(yīng)的最小模擬輸入信號。其中,r為分辨率;U為量程;n為量化位數(shù)。9.5.1模數(shù)轉(zhuǎn)換介紹1、ADC的主要性能參數(shù)(3)精度。精度是指ADC的實際數(shù)字輸出(以二進制的形式輸出)與理論上的數(shù)字輸出之差,反映了轉(zhuǎn)換結(jié)果的誤差大小程度。9.5.1模數(shù)轉(zhuǎn)換介紹1、ADC的主要性能參數(shù)(4)轉(zhuǎn)換時間。轉(zhuǎn)換時間是完成一次A/D轉(zhuǎn)換所需要的時間。ADC的轉(zhuǎn)換時間等于ADC采樣時間與ADC量化編碼時間之和。2、STM32微控制器的ADC主要特性(1)每個ADC最多有18路模擬輸入通道,可測量16個外部信號和2個內(nèi)部信號。(2)ADC供電要求為2.4~3.6V。9.5.1模數(shù)轉(zhuǎn)換介紹STM32內(nèi)部集成1~3個12位逐次逼近型ADC,其ADC還提供一個精度較低的溫度傳感器。(3)ADC可測模擬輸入信號VIN的范圍為VREF-≤VIN≤VREF+。其中VREF-和VREF+分別是ADC使用的正極和負極參考電壓,如果需要測量負電壓或測量的電壓超出范圍時,要先經(jīng)過運算電路進行平移或利用電阻分壓再輸入ADC。9.5.1模數(shù)轉(zhuǎn)換介紹2、STM32微控制器的ADC主要特性(4)ADC的模數(shù)轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式進行,每次轉(zhuǎn)換結(jié)束后,轉(zhuǎn)換結(jié)果以左對齊或者右對齊方式存儲在16位數(shù)據(jù)寄存器中,同時可以產(chǎn)生中斷請求,并且ADC1和ADC3可產(chǎn)生DMA請求。9.5.1模數(shù)轉(zhuǎn)換介紹2、STM32微控制器的ADC主要特性(5)ADC可將18路通道分為規(guī)則通道組和注入通道組,其中規(guī)則通道組最多包含16路通道,注入通道組最多包含4路通道。并且,僅有規(guī)則通道組可以產(chǎn)生DMA請求。(6)當系統(tǒng)時鐘為56MHz、ADC時鐘為14MHz、ADC采樣時間為1.5個ADC周期時鐘時,ADC獲得的最短轉(zhuǎn)換時間為1μs。9.5.1模數(shù)轉(zhuǎn)換介紹2、STM32微控制器的ADC主要特性3、STM32微控制器的ADC內(nèi)部結(jié)構(gòu)9.5.1模數(shù)轉(zhuǎn)換介紹3、STM32微控制器的ADC內(nèi)部結(jié)構(gòu)9.5.1模數(shù)轉(zhuǎn)換介紹VDDA和VSSA分別連接到VDD和VSS。VDD是3.3V,VSS接地,模擬輸入信號不要超過VDD(3.3V)。來自ADC預(yù)分頻器的ADCCLK是ADC模塊的時鐘來源。由時鐘控制器提供的ADCCLK時鐘和PCLK2(APB2時鐘)同步。RCC控制器為ADC時鐘提供一個專用的可編程預(yù)分頻器。4、ADC時鐘配置偏移地址:0x04復(fù)位值:0x00000000訪問:0~2個等待周期后,ADC可以進行字、半字和字節(jié)訪問。只有當訪問發(fā)生在時鐘切換時,才會插入1個或2個等待周期。9.5.1模數(shù)轉(zhuǎn)換介紹5、ADC通道選擇規(guī)則通道組:最多可以安排16個通道。規(guī)則通道組和它的轉(zhuǎn)換順序在ADC_SQRx寄存器中選擇,規(guī)則通道組轉(zhuǎn)換的總數(shù)應(yīng)寫入ADC_SQR1寄存器的L[3:0]中。注入通道組:最多可以安排4個通道。注入通道組和它的轉(zhuǎn)換順序在ADC_JSQR寄存器中選擇,注入通道組里轉(zhuǎn)換的總數(shù)應(yīng)寫入ADC_JSQR寄存器的L[1:0]中。9.5.1模數(shù)轉(zhuǎn)換介紹需要注意的是,如果ADC_SQRx或ADC_JSQR寄存器在轉(zhuǎn)換期間被更改,當前的轉(zhuǎn)換被清除,一個新的啟動脈沖將發(fā)送到ADC以轉(zhuǎn)換新選擇的組。9.5.1模數(shù)轉(zhuǎn)換介紹5、ADC通道選擇9.5.2模數(shù)轉(zhuǎn)換操作1、ADC轉(zhuǎn)換方式STM32的ADC各通道可以組成規(guī)則通道組或注入通道組,但是轉(zhuǎn)換模式可以有單次模式、連續(xù)模式、掃描模式和間斷模式。(1)單次模式在單次轉(zhuǎn)換模式下,ADC只執(zhí)行一次轉(zhuǎn)換。既可通過設(shè)置ADC_CR2寄存器的ADON位(只適用于規(guī)則通道)啟動,也可通過外部觸發(fā)啟動(適用于規(guī)則通道或注入通道),這時CONT位為0。規(guī)則通道的轉(zhuǎn)換數(shù)據(jù)存儲在16位ADC_DR寄存器中,轉(zhuǎn)換結(jié)束EOC標志位將置位,如設(shè)置了EOCIE,則產(chǎn)生中斷。注入通道的轉(zhuǎn)換數(shù)據(jù)存儲在16位ADC_DRJ1寄存器中,轉(zhuǎn)換結(jié)束JEOC標志位將置位,如設(shè)置了JEOCIE位,則產(chǎn)生中斷。9.5.2模數(shù)轉(zhuǎn)換操作1、ADC轉(zhuǎn)換方式(2)連續(xù)模式前面ADC轉(zhuǎn)換一結(jié)束,就立刻啟動另一次轉(zhuǎn)換??赏ㄟ^外部觸發(fā)啟動或通過設(shè)置ADC_CR2寄存器上的ADON位啟動,此時CONT位是1。規(guī)則通道的轉(zhuǎn)換數(shù)據(jù)被存儲在16位ADC_DR寄存器中,EOC標志位被置位,如設(shè)置了EOCIE,則產(chǎn)生中斷。注入通道的轉(zhuǎn)換數(shù)據(jù)被存儲在16位的ADC_DRJ1寄存器中,JEOC標志位被置位,如設(shè)置了JEOCIE位,則產(chǎn)生中斷。9.5.2模數(shù)轉(zhuǎn)換操作1、ADC轉(zhuǎn)換方式(3)掃描模式掃描模式用來掃描一組模擬通道??赏ㄟ^設(shè)置ADC_CR1寄存器的SCAN位來選擇。若SCAN置位,ADC掃描所有被ADC_SQRx寄存器(規(guī)則通道)或ADC_JSQR(注入通道)選中的所有通道。在每個組的每個通道上執(zhí)行單次轉(zhuǎn)換,在每個轉(zhuǎn)換結(jié)束時,同一組的下一個通道被自動轉(zhuǎn)換。若CONT置位,轉(zhuǎn)換不會在選擇組的最后一個通道上停止,而是再次從選擇組的第一個通道繼續(xù)轉(zhuǎn)換。9.5.2模數(shù)轉(zhuǎn)換操作1、ADC轉(zhuǎn)換方式2、模擬看門狗事件如果被ADC轉(zhuǎn)換的模擬電壓低于低閾值或高于高閾值,AWD模擬看門狗狀態(tài)位被設(shè)置。閾值位于ADC_HTR和ADC_LTR寄存器的最低12個有效位中。通過設(shè)置ADC_CR1寄存器的AWDIE位以允許產(chǎn)生相應(yīng)中斷。比較在對齊之前完成。即在數(shù)據(jù)保存到數(shù)據(jù)寄存器之前,就已經(jīng)完成了比較。通過配置ADC_CR1寄存器,模擬看門狗事件可以作用于1個或多個通道。9.5.2模數(shù)轉(zhuǎn)換操作9.5.2模數(shù)轉(zhuǎn)換操作模擬看門狗通道選擇:3、外部觸發(fā)轉(zhuǎn)換規(guī)則轉(zhuǎn)換、注入轉(zhuǎn)換可以由外部事件觸發(fā)(例如定時器捕捉、EXTI線)。若設(shè)置了EXTTRIG控制位,則外部事件就可觸發(fā)轉(zhuǎn)換。EXTSEL[2:0]和JEXTSEL[2:0]控制位允許應(yīng)用程序選擇8個可能的事件中的某一個,即可觸發(fā)規(guī)則組和注入組的采樣。!注意:當外部觸發(fā)信號被選為ADC規(guī)則或注入轉(zhuǎn)換時,只有它的上升沿可以啟動轉(zhuǎn)換。9.5.2模數(shù)轉(zhuǎn)換操作4、自動校準校準ADC有一個內(nèi)置自校準模式。通過設(shè)置ADC_CR2寄存器的CAL位啟動校準。校準結(jié)束,CAL位被硬件復(fù)位,可以開始正常轉(zhuǎn)換。9.5.2模數(shù)轉(zhuǎn)換操作5、數(shù)據(jù)對齊TM32的ADC是12位逐次逼近型的模數(shù)轉(zhuǎn)換器,而數(shù)據(jù)保存在16位寄存器中,因此ADC_CR2寄存器中的ALIGN位選擇轉(zhuǎn)換后數(shù)據(jù)存儲的對齊方式,分別為左對齊和右對齊兩種方式。注入組通道轉(zhuǎn)換的數(shù)據(jù)值已經(jīng)減去了在ADC_JOFRx寄存器中定義的偏移量,因此結(jié)果可以是一個負值。SEXT位是擴展的符號值。對于規(guī)則組通道,不需減去偏移值,因此只有12位有效。9.5.2模數(shù)轉(zhuǎn)換操作數(shù)據(jù)右對齊示意:9.5.2模數(shù)轉(zhuǎn)換操作數(shù)據(jù)左對齊示意:6、通道采樣時間ADC使用若干個ADC_CLK周期對輸入電壓采樣,采樣周期數(shù)可以通過ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]位更改。每個通道可以分別用不同的時間采樣。9.5.2模數(shù)轉(zhuǎn)換操作總轉(zhuǎn)換時間計算公式如下:9.5.2模數(shù)轉(zhuǎn)換操作6、通道采樣時間例如,當ADC時鐘頻率為14MHz,采樣周期為1.5個周期時,TCONV=1.5+12.5=14個周期=1μs。故而,ADC的最小采樣時間為1μs(在ADC時鐘頻率為14MHz、采樣周期為1.5個周期下得到)。TCONV=采樣周期+12.5個周期7、ADC工作過程9.5.2模數(shù)轉(zhuǎn)換操作(1)輸入信號經(jīng)過ADC的輸入信號通道ADCx_IN0~ADCx_IN15被送到ADC部件。(2)ADC需要受到觸發(fā)信號后才開始進行A/D轉(zhuǎn)換,觸發(fā)信號可使用軟件觸發(fā),也可用EXTI外部觸發(fā)或定時器觸發(fā)。(3)ADC部件接收到觸發(fā)信號后,在ADC時鐘ADCCLK的驅(qū)動下,對輸入通道的信號進行采樣、量化和編碼。(4)ADC完成轉(zhuǎn)換后將轉(zhuǎn)換后的12位數(shù)值以左對齊或右對齊的方式保存到一個16位的規(guī)則通道數(shù)據(jù)寄存器或者是注入通道數(shù)據(jù)寄存器中,并產(chǎn)生ADC轉(zhuǎn)換結(jié)束/注入轉(zhuǎn)換結(jié)束事件,可觸發(fā)中斷和DMA請求。這時用戶可編寫代碼或者以DMA
方式把這個數(shù)值存儲到自定義的變量中。9.5.3模數(shù)轉(zhuǎn)換寄存器描述與ADC相關(guān)的寄存器一共有10類20個:1個ADC狀態(tài)寄存器(ADC_SR);兩個ADC控制寄存器(ADC_CRx);兩個ADC采樣時間寄存器(ADC_SMPRx);4個ADC注入通道數(shù)據(jù)偏移寄存器(ADC_JOFRx,x=1,…,4);1個ADC看門狗高閾值寄存器(ADC_HTR);1個ADC看門狗低閾值寄存器(ADC_LRT);3個ADC規(guī)則序列寄存器(ADC_SQR);1個ADC注入序列寄存器(ADC_JSQR);4個ADC注入數(shù)據(jù)寄存器(ADC_JDRx,x=1,…,4);1個ADC規(guī)則數(shù)據(jù)寄存器(ADC_DR)。1、ADC狀態(tài)寄存器(ADC-SR)作用:存放ADC轉(zhuǎn)換過程中的各種狀態(tài)位。地址偏移:0x00復(fù)位值:0x00000000位格式:9.5.3模數(shù)轉(zhuǎn)換寄存器描述9.5.3模數(shù)轉(zhuǎn)換寄存器描述ADC-SR寄存器各位說明:ADC-SR寄存器各位說明:9.5.3模數(shù)轉(zhuǎn)換寄存器描述2、ADC控制寄存器(ADC_CRx)作用:設(shè)置掃描轉(zhuǎn)換模式、中斷允許(轉(zhuǎn)換結(jié)束、注入轉(zhuǎn)換結(jié)束、模擬看門狗)、雙模式選擇(一般選用獨立模式)等。注意:在掃描模式下,轉(zhuǎn)換由ADC_SQRx或ADC_JSQRx寄存器選中的通道。如果設(shè)置了EOCIE或者JEOCIE,在最后一個通道轉(zhuǎn)換完后才會產(chǎn)生EOC或者JEOC中斷。9.5.3模數(shù)轉(zhuǎn)換寄存器描述2、ADC控制寄存器(ADC_CRx)地址偏移:0x04復(fù)位值:0x00000000位格式:9.5.3模數(shù)轉(zhuǎn)換寄存器描述9.5.3模數(shù)轉(zhuǎn)換寄存器描述寄存器各位說明如表9-44所示。9.5.3模數(shù)轉(zhuǎn)換寄存器描述ADC_CRx寄存器各位說明:9.5.3模數(shù)轉(zhuǎn)換寄存器描述9.5.3模數(shù)轉(zhuǎn)換寄存器描述ADC_CRx寄存器各位說明:9.5.3模數(shù)轉(zhuǎn)換寄存器描述ADC_CRx寄存器各位說明:9.5.3模數(shù)轉(zhuǎn)換寄存器描述ADC_CRx寄存器各位說明:3、ADC采樣時間寄存器(ADC_SMPRx)作用:設(shè)置ADC各通道的采樣時間。地址偏移:0x0C復(fù)位值:0x00000000位格式:9.5.3模數(shù)轉(zhuǎn)換寄存器描述ADC_SMPRx寄存器各位說明:9.5.3模數(shù)轉(zhuǎn)換寄存器描述4、ADC注入通道數(shù)據(jù)偏移寄存器(ADC_JOFRx)作用:設(shè)置ADC注入通道數(shù)據(jù)偏移。地址偏移:0x14-0X20復(fù)位值:0x00000000位格式:9.5.3模數(shù)轉(zhuǎn)換寄存器描述ADC_JOFRx寄存器各位說明:9.5.3模數(shù)轉(zhuǎn)換寄存器描述9.6DMA
DMA(直接存儲器訪問)是計算機系統(tǒng)中用于快速、大量數(shù)據(jù)交換的重要技術(shù)。它能減輕CPU的負擔、提高數(shù)據(jù)傳輸?shù)男?、減少應(yīng)用開發(fā)程序的代碼量。9.6DMA
9.6.1DMA的特性及操作流程9.6.2DMA的寄存器描述STM32微控制器有兩個DMA,每個DMA有若干個觸發(fā)通道,每個通道可以管理來自多個外設(shè)對存儲器的訪問請求。而且每個外設(shè)的DMA請求,可以獨立地被開啟和關(guān)閉。9.6.1DMA的特性及操作流程DMA原理圖9.6.1DMA的特性及操作流程1、DMA的主要特性(1)擁有12個獨立可配置的通道(請求):DMA1有7個通道,DMA2有5個通道。(2)每個通道連接專用的硬件DMA請求,每個通道都同樣支持軟件觸發(fā),這些功能由軟件來配置。(3)在同一個DMA模塊上,多個請求間的優(yōu)先權(quán)可以通過軟件編程設(shè)置(共有4級:很高、高、中和低),優(yōu)先權(quán)設(shè)置相等時由硬件決定(請求0優(yōu)先于請求1,依此類推)。9.6.1DMA的特性及操作流程1、DMA的主要特性(4)獨立設(shè)置數(shù)據(jù)源到目標數(shù)據(jù)區(qū)的傳輸寬度(字節(jié)、半字、字),模擬打包和拆包的過程。源地址和目標地址必須按數(shù)據(jù)傳輸寬度對齊。(5)支持循環(huán)的緩沖器管理。(6)每個通道都有3個事件標志(DMA半傳輸、DMA傳輸完成和DMA傳輸出錯),這3個事件標志通過邏輯或操作組合成為一個單獨的中斷請求。9.6.1DMA的特性及操作流程1、DMA的主要特性(7)支持存儲器與存儲器間的傳輸。(8)支持外設(shè)與存儲器間、存儲器與外設(shè)間的雙向數(shù)據(jù)傳輸。(9)閃存、SRAM、外設(shè)的SRAM、APB1、APB2和AHB外設(shè)均可作為訪問的源和目標。(10)可編程的數(shù)據(jù)傳輸數(shù)量:最大為6553
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度橋梁工程監(jiān)理服務(wù)合同
- 二零二五年度汽車行業(yè)簡易勞動合同范本
- 二零二五年度農(nóng)村房屋及附屬設(shè)施整體轉(zhuǎn)讓合同
- 二零二五年度電力施工進度管理及協(xié)調(diào)協(xié)議
- 二零二五年度賓館布草洗滌、熨燙及配送一體化服務(wù)合同
- 2025年杭州道路貨物運輸駕駛員考試
- 發(fā)言稿不考慮格式
- 2024標準電子合同
- 2025年黑龍江資格證模擬考試
- 房屋承包裝修合同
- 《CRISPR-Cas9及基因技術(shù)》課件
- 《急性冠狀動脈綜合征》課件
- 【博觀研究院】2025年跨境進口保健品市場分析報告
- 游戲直播平臺推廣合作協(xié)議
- 《高科技服裝與面料》課件
- 《馬克思生平故事》課件
- 2024-2025學(xué)年四川省成都市高一上學(xué)期期末教學(xué)質(zhì)量監(jiān)測英語試題(解析版)
- HRBP工作總結(jié)與計劃
- 八大危險作業(yè)安全培訓(xùn)考試試題及答案
- 2025中國船舶集團限公司招聘高頻重點模擬試卷提升(共500題附帶答案詳解)
- 土壤侵蝕與碳匯-深度研究
評論
0/150
提交評論