




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
ARM微控制器與嵌入式系統(tǒng)
串口通信內(nèi)容串口通信協(xié)議:物理層和協(xié)議層物理層RS232標準串口通信USB轉(zhuǎn)串口通信串口到串口通信協(xié)議層串口通信協(xié)議串口通訊(SerialCommunication)是一種設(shè)備間非常常用的串行通訊方式,因為它簡單便捷,大部分電子設(shè)備都支持該通訊方式,電子工程師在調(diào)試設(shè)備時也經(jīng)常使用該通訊方式輸出調(diào)試信息。對于通訊協(xié)議,我們也以分層的方式來理解,最基本的是把它分為物理層和協(xié)議層。串口通信協(xié)議物理層:規(guī)定通訊系統(tǒng)中具有機械、電子功能部分的特性,確保原始數(shù)據(jù)在物理媒體的傳輸。其實就是硬件部分。協(xié)議層:協(xié)議層主要規(guī)定通訊邏輯,統(tǒng)一收發(fā)雙方的數(shù)據(jù)打包、解包標準。其實就是軟件部分。串口通信協(xié)議物理層標準RS232標準USB轉(zhuǎn)串口串口到串口RS232標準串口RS-232標準主要規(guī)定了:信號的用途通信接口信號的電平標準RS232標準串口RS232標準串口通信結(jié)構(gòu)圖RS232標準串口主要用于工業(yè)設(shè)備直接通信由于RS-232電平標準的信號不能直接被控制器直接識別,所以這些信號會經(jīng)過一個“電平轉(zhuǎn)換芯片”轉(zhuǎn)換成控制器能識別的“TTL校準”的電平信號,才能實現(xiàn)通信。RS232標準串口根據(jù)通信使用的電平標準不同,串口通信可分為TTL標準及RS-232標準。通信標準電平標準(發(fā)送端)5VTTL邏輯1:2.4V-5V邏輯0:0-0.5VRS-232邏輯1:-15V~-3V邏輯0:+3V~+15VRS232標準串口RS232標準串口通信結(jié)構(gòu)圖電平轉(zhuǎn)換芯片一般有MAX3232,SP3232RS232標準串口RS232標準串口DB9標準的公頭及母頭接法RS232標準串口兩個通訊設(shè)備之間的收發(fā)信號(RXD與TXD)應交叉相連,所以DB9母頭的收發(fā)信號接法一般與公頭的相反。兩個設(shè)備之間連接使用“直通型”的串口線即可。在目前的其它工業(yè)控制使用的串口通信中,一般只使用RXD、TXD以及GND三條信號線,直接傳輸數(shù)據(jù)信號。USB轉(zhuǎn)串口通信USB轉(zhuǎn)串口主要用于設(shè)備跟電腦通信電平轉(zhuǎn)換芯片一般有CH340、PL2303、CP2102、FT232使用的時候電腦端需要安裝電平轉(zhuǎn)換芯片的驅(qū)動串口到串口通信原生的串口通信主要是控制器跟串口的設(shè)備或者傳感器通信,不需要經(jīng)過電平轉(zhuǎn)換芯片來轉(zhuǎn)換電平,直接就用TTL電平通信GPS模塊、GSM模塊、串口轉(zhuǎn)WIFI模塊、HC04藍牙模塊串口通信協(xié)議層串口通信的數(shù)據(jù)包由發(fā)送設(shè)備通過自身的TXD接口傳輸?shù)浇邮赵O(shè)備的RXD接口。在串口通信的協(xié)議層中,規(guī)定了數(shù)據(jù)包的內(nèi)容。它由啟始位、主體數(shù)據(jù)、校驗位以及停止位組成。通信雙方的數(shù)據(jù)包格式要約定一致才能正常收發(fā)數(shù)據(jù)。串口通信協(xié)議層波特率起始位和停止位有效數(shù)據(jù)校驗位串口通信協(xié)議層波特率串口異步通訊中由于沒有時鐘信號(如前面講解的DB9接口中是沒有時鐘信號的),所以兩個通訊設(shè)備之間需要約定好波特率,即每個碼元的長度,以便對信號進行解碼。常見的波特率為4800、9600、115200等。串口通信協(xié)議層起始位和停止位起始位:由1個邏輯0的數(shù)據(jù)位表示結(jié)束位:由0.5、1、1.5或2個邏輯1的數(shù)據(jù)位表示(只要雙方約定好即可)有效數(shù)據(jù)在起始位后緊接著的就是要傳輸?shù)闹饕獌?nèi)容有效數(shù)據(jù)的長度常被約定為5、6、7或8位長串口通信協(xié)議層校驗位:可選,增強數(shù)據(jù)的抗干擾性。校驗方法分為:奇校驗(odd)偶校驗(even)
0校驗(space)1校驗(mark)無校驗(noparity)串口通信協(xié)議層奇校驗(odd)有效數(shù)據(jù)和校驗位中“1”的個數(shù)為奇數(shù)比如一個8位長的有效數(shù)據(jù)為:01101001,此時總共有4個“1”,為達到奇校驗效果,校驗位為“1”,最后傳輸?shù)臄?shù)據(jù)將是8位的有效數(shù)據(jù)加上1位的校驗位總共9位偶校驗(even)
有效數(shù)據(jù)和校驗位中“1”的個數(shù)為偶數(shù)比如一個8位長的有效數(shù)據(jù)為:01101001,此時總共有4個“1”,為達到偶校驗效果,校驗位為“0”,最后傳輸?shù)臄?shù)據(jù)將是8位的有效數(shù)據(jù)加上1位的校驗位總共9位串口通信協(xié)議層0校驗不管有效數(shù)據(jù)中的內(nèi)容是什么,校驗位總為“0”1校驗校驗位總為“1”無校驗數(shù)據(jù)包中不包含校驗位小結(jié)串口通信協(xié)議:物理層和協(xié)議層物理層RS232標準串口通信USB轉(zhuǎn)串口通信串口到串口通信協(xié)議層ARM微控制器與嵌入式系統(tǒng)
STM32-USART主講人:景妮琴北京電子科技職業(yè)學院內(nèi)容串行接口STM32-USART功能框圖功能引腳數(shù)據(jù)寄存器控制器小數(shù)波特率生成串行接口串行接口:簡稱串口,也稱串行通信接口或串行通訊接口(通常指COM接口),是指采用串行通訊方式的擴展接口。USART與UARTUSART:通用同步異步收發(fā)器UART:通用異步收發(fā)器STM32芯片具有多個USART和UART外設(shè)用于串口通訊STM32-USARTSTM32F407ZGT6有四個USART和兩個UART,其中USART1和USART6的時鐘來源于APB2總線時鐘,其最大頻率為84MHz,其他四個的時鐘來源于APB1總線時鐘,其最大頻率為42MHz。STM32-USARTUSART滿足外部設(shè)備對工業(yè)標準NRZ異步串行數(shù)據(jù)格式的要求使用了小數(shù)波特率發(fā)生器,可以提供多種波特率,使得它的應用更加廣泛。USART支持同步單向通信和半雙工單線通信;還支持局域互連網(wǎng)絡LIN、智能卡(SmartCard)協(xié)議與lrDA(紅外線數(shù)據(jù)協(xié)會)SIRENDEC規(guī)范。STM32-USART功能框圖113412STM32-USART功能框圖-功能引腳TX:發(fā)送數(shù)據(jù)輸出引腳。RX:接收數(shù)據(jù)輸入引腳。SW_RX:數(shù)據(jù)接收引腳,只用于單線和智能卡模式。nRTS:請求以發(fā)送(RequestToSend),n表示低電平有效。如果使能RTS流控制,當USART接收器準備好接收新數(shù)據(jù)時就會將nRTS變成低電平;當接收寄存器已滿時,nRTS將被設(shè)置為高電平。該引腳只適用于硬件流控制。nCTS:清除以發(fā)送(ClearToSend),n表示低電平有效。如果使能CTS流控制,發(fā)送器在發(fā)送下一幀數(shù)據(jù)之前會檢測nCTS引腳,如果為低電平,表示可以發(fā)送數(shù)據(jù),如果為高電平則在發(fā)送完當前數(shù)據(jù)幀之后停止發(fā)送。該引腳只適用于硬件流控制。SCLK:發(fā)送器時鐘輸出引腳。這個引腳僅適用于同步模式。STM32-USART功能框圖-功能引腳STM32F407ZGT6有四個USART和兩個UART,其中USART1和USART6的時鐘來源于APB2總線時鐘,其最大頻率為84MHz,其他四個的時鐘來源于APB1總線時鐘,其最大頻率為42MHz。UART只是異步傳輸功能,所以沒有SCLK、nCTS和nRTS功能引腳從上表可發(fā)現(xiàn)USART的功能引腳有多個,只要在程序編程時軟件綁定引腳即可。STM32-USART功能框圖-數(shù)據(jù)寄存器USART的數(shù)據(jù)寄存器USART_DR包含了發(fā)送數(shù)據(jù)寄存器或者接收數(shù)據(jù)寄存器。一個專門用于發(fā)送的可寫TDR,一個專門用于接收的可讀RDR。當進行發(fā)送操作時,往USART_DR寫入數(shù)據(jù)會自動存儲在TDR內(nèi)。如我們要發(fā)送TEMP這個數(shù)據(jù),就可以進行操作:USART_DR=TEMP;TEMPSTM32-USART功能框圖-數(shù)據(jù)寄存器當進行讀取操作時,向USART_DR讀取數(shù)據(jù)會自動提取RDR數(shù)據(jù)。如我們要讀取數(shù)據(jù),就會使用TEMP這個變量從USART_DR取得數(shù)據(jù),TEMP=USART_DR;TEMPSTM32-USART功能框圖-控制器USART有專門控制發(fā)送的發(fā)送器、控制接收的接收器,還有喚醒單元、中斷控制等等。STM32-USART功能框圖-波特率生成波特率單位時間內(nèi)傳輸?shù)拇a元個數(shù)。比特率指單位時間內(nèi)傳輸?shù)谋忍財?shù),單位bit/s(bps)。USART串口傳輸時的比特數(shù)與碼元相同,因此波特率=比特率。波特率越大,傳輸速率越快。STM32-USART功能框圖-波特率生成USART的發(fā)送器和接收器使用相同的波特率。USARTDIV是一個存放在波特率寄存器(USART_BRR)的一個無符號定點數(shù)。其中DIV_Mantissa[11:0]位定義USARTDIV的整數(shù)部分,DIV_Fraction[3:0]位定義,USARTDIV的小數(shù)部分,DIV_Fraction[3]位只有在OVER8位為0時有效,否則必須清零。以115200為例。這里的OVER8我們?nèi)?,表示16倍過采樣USART:USART1,時鐘為84M波特率:115200OVER8:0,16倍過采樣,BRR小數(shù)位有效STM32-USART功能框圖-波特率生成小結(jié)STM32的USARTSTM32-USART功能框圖功能引腳數(shù)據(jù)寄存器控制器小數(shù)波特率生成ARM微控制器與嵌入式系統(tǒng)
USART編程要點主講人:景妮琴北京電子科技職業(yè)學院內(nèi)容串口硬件連接串口編程要點USART結(jié)構(gòu)體初始化USART庫函數(shù)USART發(fā)送接收數(shù)據(jù)串口硬件連接以單片機與PC通信為例:USART通過3個引腳與其他設(shè)備連接在STM32的USART1中:RX:數(shù)據(jù)串行輸入。PA10TX:發(fā)送數(shù)據(jù)輸出。PA9GND串口硬件連接TXPA10RXPA9串口硬件連接串口編程要點1.使能RX和TX引腳GPIO時鐘和USART時鐘;2.初始化GPIO,并將GPIO復用到USART上;3.配置USART參數(shù);4.配置中斷控制器并使能USART接收中斷;5.使能USART;6.在USART接收中斷服務函數(shù)實現(xiàn)數(shù)據(jù)接收和發(fā)送。串口編程要點1.使能RX和TX引腳GPIO時鐘和USART時鐘使能GPIO時鐘:PA9和PA10的GPIO口時鐘RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);串口編程要點1.使能RX和TX引腳GPIO時鐘和USART時鐘使能USART時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);串口編程要點2.初始化GPIO,并將GPIO復用到USART上;初始化GPIOGPIO_InitStructure.GPIO_OType=GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_9;GPIO_Init(GPIOA,&GPIO_InitStructure);串口編程要點2.初始化GPIO,并將GPIO復用到USART上;將GPIO復用到USART上voidGPIO_PinAFConfig(GPIO_TypeDef*GPIOx,uint16_tGPIO_PinSource,uint8_tGPIO_AF)GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);串口編程要點-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體typedefstruct{uint32_tUSART_BaudRate;//波特率BRRuint16_tUSART_WordLength;//字長CR1_Muint16_tUSART_StopBits;//停止位CR2_STOPuint16_tUSART_Parity;//校驗控制CR1_PCE、CR1_PSuint16_tUSART_Mode;//模式選擇CR1_TE、CR1_REuint16_tUSART_HardwareFlowControl;//硬件流選擇CR3_CTSE、CR3_RTSE}USART_InitTypeDef;串口編程要點-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_BaudRate;波特率一般設(shè)置為2400、9600、19200、115200。標準庫函數(shù)會根據(jù)設(shè)定值計算得到USARTDIV值,并設(shè)置USART_BRR寄存器值USART_InitStructure.USART_BaudRate=115200;串口編程要點-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_WordLength數(shù)據(jù)幀字長,可選8位或9位。如果沒有使能奇偶校驗控制,一般使用8數(shù)據(jù)位;如果使能了奇偶校驗則一般設(shè)置為9數(shù)據(jù)位。USART_InitStructure.USART_WordLength=USART_WordLength_8b;串口編程要點-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_StopBits停止位設(shè)置,可選0.5個、1個、1.5個和2個停止位,一般我們選擇1個停止位。USART_InitStructure.USART_StopBits=USART_StopBits_1;串口編程要點-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_Parity奇偶校驗控制選擇。可選擇無校驗,偶校驗,奇校驗USART_InitStructure.USART_Parity=USART_Parity_No;串口編程要點-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_ModeUSART模式選擇,有USART_Mode_Rx
和USART_Mode_TxUSART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//同時使能收發(fā)串口編程要點-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_HardwareFlowControl硬件流控制選擇,只有在硬件流控制模式才有效可選有⑴使能RTS、⑵使能CTS、⑶同時使能RTS和CTS、⑷不使能硬件流。USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;串口編程要點-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體
/*完成USART初始化配置*/USART_Init(DEBUG_USART,&USART_InitStructure);串口編程要點-USART結(jié)構(gòu)體初始化4.配置中斷控制器并使能USART接收中斷;NVIC_Configuration();
/*嵌套向量中斷控制器NVIC配置*/USART_ITConfig(DEBUG_USART,USART_IT_RXNE,ENABLE);/*使能串口接收中斷*
串口編程要點-USART結(jié)構(gòu)體初始化5.使能USART;USART_Cmd(DEBUG_USART,ENABLE);6.在USART接收中斷服務函數(shù)實現(xiàn)數(shù)據(jù)接收和發(fā)送。常用的USART庫函數(shù)函數(shù)USART_Init初始化異步串口,包括選定使用的串口,設(shè)定串口的數(shù)據(jù)傳輸速率、數(shù)據(jù)位、檢驗方式、停止位、流量控制方式USART_Init(USART_TypeDef*USARTx,USART_InitTypeDef*USART_InitStruct);USART_Init(USART1,&USART_InitStructure);常用的USART庫函數(shù)函數(shù)USART_Cmd使能或失能USART外設(shè)voidUSART_Cmd(USART_TypeDef*USARTx,FunctionalStateNewState);USART_Cmd(USART1,ENABLE);//使能USART_Cmd(USART1,DISABLE);//失能常用的USART庫函數(shù)函數(shù)USART_ITConfig使能或失能指定的USART中斷voidUSART_ITConfig(USART_TypeDef*USARTx,uint16_tUSART_IT,FunctionalStateNewState);常用的USART_IT的值有:USART_IT_TXE(發(fā)送數(shù)據(jù)寄存器為空),USART_IT_RXNE(接收數(shù)據(jù)寄存器非空,即有數(shù)據(jù)可讀)USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//使能接收中斷常用的USART庫函數(shù)函數(shù)USART_SendData數(shù)據(jù)發(fā)送函數(shù),通過外設(shè)USARTx發(fā)送單個數(shù)據(jù)voidUSART_SendData(USART_TypeDef*USARTx,uint16_tData);USART_SendData(USART1,0x26);//通過USART1發(fā)送字符0x26這里要說明的是發(fā)送的Data是字符常用的USART庫函數(shù)函數(shù)USART_ReceiveData數(shù)據(jù)接收函數(shù),返回外設(shè)USARTx接收的數(shù)據(jù)uint16_tUSART_ReceiveData(USART_TypeDef*USARTx);RxData=USART_ReceiveData(USART1);//從USART1接收的字符存入RxData中常用的USART庫函數(shù)函數(shù)USART_GetFlagStatus檢查指定的USART標志位設(shè)置與否FlagStatusUSART_GetFlagStatus(USART_TypeDef*USARTx,uint32_tUSART_FLAG);USART_FLAG為需要檢查的USART標志位,可以取一個或多個值的組合作為該參數(shù)的值USART_FLAG的值有:USART_FLAG_RXNE(接收數(shù)據(jù)完成),USART_FLAG_TXE(發(fā)送數(shù)據(jù)寄存器為空),USART_FLAG_TC(發(fā)送數(shù)據(jù)完成)Status=USART_GetFlagStatus(USART1,USART_FLAG_TXE);//檢查USART1的發(fā)送標志位常用的USART庫函數(shù)函數(shù)USART_ClearFlag清除USART的待處理標志位voidUSART_ClearFlag(USART_TypeDef*USARTx,uint32_tUSART_FLAG);USART_ClearFlag(USART1,USART_FLAG_ORG);//清除USART1的溢出錯誤標志位常用的USART庫函數(shù)函數(shù)USART_GetITStatus檢查指定的USART中斷發(fā)生與否ITStatusUSART_GetITStatus(USART_TypeDef*USARTx,uint32_tUSART_IT);USART_IT為需要檢查的USART中斷標志位常用的USART_IT的值有:USART_IT_TXE(發(fā)送數(shù)據(jù)寄存器為空),USART_IT_RXNE(接收數(shù)據(jù)寄存器非空,即有數(shù)據(jù)可讀)Status=USART_GetITStatus(USART1,USART_IT_TXE);//檢查USART1的發(fā)送中斷標志位常用的USART庫函數(shù)函數(shù)USART_ClearITPendingBit清除USART的中斷標志位voidUSART_ClearITPendingBit(USART_TypeDef*USARTx,uint32_tUSART_IT);USART_ClearITPendingBit(USART1,USART_IT_TXE);//清除USART1的發(fā)送數(shù)據(jù)中斷標志位常用的庫函數(shù)函數(shù)GPIO_PinAFConfig配置GPIO的某個引腳為具體的第二功能voidGPIO_PinAFConfig(GPIO_TypeDef*GPIOx,uint16_tGPIO_PinSource,uint8_tGPIO_AF);GPIO_AF的值有:GPIO_AF_USART1,GPIO_AF6_SPI1等GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);//配置PA9為它的第二功能串口發(fā)送接收數(shù)據(jù)小結(jié)串口硬件連接串口編程要點USART結(jié)構(gòu)體初始化USART庫函數(shù)USART發(fā)送接收數(shù)據(jù)ARM微控制器與嵌入式系統(tǒng)
USART編程實驗主講人:景妮琴北京電子科技職業(yè)學院內(nèi)容串口硬件連接串口軟件編程串口接發(fā)數(shù)據(jù)調(diào)試串口硬件連接TXPA10RXPA9串口軟件編程1.使能RX和TX引腳GPIO時鐘和USART時鐘;2.初始化GPIO,并將GPIO復用到USART上;3.配置USART參數(shù);4.配置中斷控制器并使能USART接收中斷;5.使能USART;6.在USART接收中斷服務函數(shù)實現(xiàn)數(shù)據(jù)接收和發(fā)送。串口收發(fā)數(shù)據(jù)小結(jié)串口硬件連接串口軟件編程串口接發(fā)數(shù)據(jù)調(diào)試ARM微控制器與嵌入式系統(tǒng)
Systick-系統(tǒng)定時器主講人:景妮琴北京電子科技職業(yè)學院內(nèi)容Systick系統(tǒng)定時器系統(tǒng)定時器工作原理Systick寄存器Systick庫函數(shù)Systick編程要點SysTick系統(tǒng)定時器SysTick定時器,是一個簡單的定時器,對于CM3,CM4內(nèi)核芯片,都有Systick定時器。Systick定時器常用來做延時,或者實時系統(tǒng)的心跳時鐘。這樣可以節(jié)省MCU資源,不用浪費一個定時器。一般在STM32+UCOSII系統(tǒng)中,都采用Systick定時器來做為UCOSII的心跳時鐘。SysTick系統(tǒng)定時器Systick定時器就是系統(tǒng)滴答定時器,一個24
位的倒計數(shù)定時器,計到0
時,將從RELOAD
寄存器中自動重裝載定時初值。只要不把它在SysTick
控制狀態(tài)寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作SysTick定時器被捆綁在NVIC中,用于產(chǎn)生SYSTICK異常(異常號:15)。Systick中斷的優(yōu)先級也可以設(shè)置。typedefstruct{__IOuint32_tCTRL;/*SYST_CSR控制與狀態(tài)寄存器*/__IOuint32_tLOAD;/*SYS_RVR重裝載寄存器*/__IOuint32_tVAL;/*SYST_CVR當前數(shù)值寄存器(計數(shù)器)*/__Iuint32_tCALIB;/*SYST_CALIB校準寄存器*/}SysTick_Type;
Systick寄存器Bit0 0=滴答定時器失能 1=滴答定時器使能Bit1 0=不開啟中斷 1=開啟中斷Bit2 0=AHB時鐘8分頻 1=AHB時鐘Bit16 0=計數(shù)未完成 1=計數(shù)完成Systick狀態(tài)與控制寄存器Systick狀態(tài)與控制寄存器
重裝載寄存器共32位,僅0-23位有效Systick重裝載寄存器
當前數(shù)值寄存器,也可當成計數(shù)寄存器共32位,僅0-23位有效Systick當前數(shù)值寄存器重裝載寄存器遞減計數(shù)器STK_CLKSTK_LOADSTK_VALSTK_CTRLUSysTick的工作原理SysTick庫函數(shù)在內(nèi)核core_cm4.h中SysTick庫函數(shù)的宏定義SysTick庫函數(shù)在內(nèi)核core_cm4.h中SysTick編程要點初始化系統(tǒng)定時器(時鐘選擇)設(shè)置重裝載寄存器的值清除當前數(shù)值寄存器的值配置控制與狀態(tài)寄存器SysTick編程要點初始化系統(tǒng)定時器(時鐘選擇)SysTick編程要點SysTick編程任務讓SysTick產(chǎn)生1s的定時,讓LED亮滅。小結(jié)Systick系統(tǒng)定時器系統(tǒng)定時器工作原理Systick寄存器Systick庫函數(shù)Systick編程要點ARM微控制器與嵌入式系統(tǒng)
Systick-編程實驗主講人:景妮琴北京電子科技職業(yè)學院內(nèi)容Systick編程任務Systick編程要點完成編程任務SysTick編程任務讓SysTick產(chǎn)生1s的定時,讓LED亮滅。點亮LED燈編程要點1-初始化LED相關(guān)的GPIO2-配置SysTick(STK_CTRL寄存器)3-main函數(shù)小結(jié)Systick編程任務Systick編程要點完成編程任務ARM微控制器與嵌入式系統(tǒng)
SPI協(xié)議主講人:景妮琴北京電子科技職業(yè)學院內(nèi)容SPI概述SPI協(xié)議SPI通訊SPI概述SPI:SerialPeripheralInterface-串行外設(shè)接口SPI是一種高速的,全雙工,同步的通信總線四線同步串行通訊接口以主從方式工作,通常有一個主設(shè)備和一個或多個從設(shè)備SCLKSPIMOSI主機MISO
SSSCLKMOSISPIMISO從機SSSPI協(xié)議MOSI–MasterOutputSlaveInput,主出從入,主設(shè)備發(fā)送到從設(shè)備的信號;MISO–MasterInputSlaveOutput,主入從出,從設(shè)備發(fā)送到主設(shè)備的信號;SCLK–SerialClock,時鐘信號,由主設(shè)備產(chǎn)生的工作時鐘,每個SCK周期完成一個bit的傳輸;CS(NSS、SS)–ChipSelect,從設(shè)備選擇端,由主設(shè)備控制;當從設(shè)備收到該端口為低電平時,設(shè)備有效,對于主設(shè)備,平時為高電平,當傳輸時給出低電平選通從設(shè)備。SPI協(xié)議做一個動畫SPI:SerialPeripheralInterface串行同步全雙工主從模式點對點或者總線靈活的時鐘數(shù)據(jù)幀的長度可以是4-16位SPI通訊SPI通訊SPI模式CPOLCPHA空閑時SCK時鐘采樣時刻000低電平奇數(shù)邊沿101低電平偶數(shù)邊沿210高電平奇數(shù)邊沿311高電平偶數(shù)邊沿SPI通訊-CPOL/CPHA及通訊模式CPOL及CPHA的不同狀態(tài),SPI分成了四種模式,主機與從機需要工作在相同的模式下才可以正常通訊SPI基本通訊過程SPI通訊-主模式控制整個傳輸過程通過SS信號選擇對應的通信從節(jié)點決定SCK的波特率、相位、極性產(chǎn)生SCK的時鐘信號驅(qū)動MOSI信號采樣MISO信號SPI通訊-從模式響應主節(jié)點的信號當SS被選通時才激活根據(jù)預先約定的相位/極性來檢測SCK信號驅(qū)動MISO信號采樣MOSI信號小結(jié)SPI概述SPI協(xié)議SPI通訊ARM微控制器與嵌入式系統(tǒng)
STM32-SPI主講人:景妮琴北京電子科技職業(yè)學院內(nèi)容STM32的SPISPI框圖SPI通訊SPI初始化結(jié)構(gòu)體SPI庫函數(shù)STM32的SPISPI接口提供兩個主要功能,支持SPI協(xié)議或I2S音頻協(xié)議。串行外設(shè)接口(SPI)可與外部器件進行半雙工/全雙工的同步串行通信。主模式或從模式操作,8個主模式波特率預分頻器(最大值為fPCLK/2),從模式頻率(最大值為fPCLK/2),可為外部從器件提供通信時鐘
(SCK)該接口還能夠在多主模式配置下工作8位或16位傳輸幀格式選擇可編程的時鐘極性和相位可編程的數(shù)據(jù)順序,最先移位MSB或LSB可觸發(fā)中斷的專用發(fā)送和接收標志通訊引腳時鐘控制邏輯數(shù)據(jù)控制邏輯整體控制邏輯STM32的SPI框圖STM32芯片有多個SPI外設(shè),它們的SPI通訊信號引出到不同的GPIO引腳上,使用時必須配置到這些指定的引腳,以《STM32F4xx規(guī)格書》為準。引腳SPI編號SPI1SPI2SPI3SPI4SPI5SPI6MOSIPA7/PB5PB15/PC3/PI3PB5/PC12/PD6PE6/PE14PF9/PF11PG14MISOPA6/PB4PB14/PC2/PI2PB4/PC11PE5/PE13PF8/PH7PG12SCKPA5/PB3PB10/PB13/PD3PB3/PC10PE2/PE12PF7/PH6PG13NSSPA4/PA15PB9/PB12/PI0PA4/PA15PE4/PE11PF6/PH5PG8
其中SPI1、SPI4、SPI5、SPI6是APB2上的設(shè)備,最高通信速率達42Mbtis/s,SPI2、SPI3是APB1上的設(shè)備,最高通信速率為21Mbits/s。其它功能上沒有差異。SPI的SPI通訊引腳SCK線的時鐘信號,由波特率發(fā)生器根據(jù)“控制寄存器CR1”中的BR[0:2]位控制,該位是對fpclk時鐘的分頻因子,對fpclk的分頻結(jié)果就是SCK引腳的輸出時鐘頻率BR[0:2]分頻結(jié)果(SCK頻率)BR[0:2]分頻結(jié)果(SCK頻率)000fpclk/2100fpclk/32001fpclk/4101fpclk/64010fpclk/8110fpclk/128011fpclk/16111fpclk/256其中的fpclk頻率是指SPI所在的APB總線頻率,APB1為fpclk1,APB2為fpckl2。SPI的時鐘控制邏輯SPI的MOSI及MISO都連接到數(shù)據(jù)移位寄存器上,數(shù)據(jù)移位寄存器的數(shù)據(jù)來源來源于接收緩沖區(qū)及發(fā)送緩沖區(qū)。通過寫SPI的“數(shù)據(jù)寄存器DR”把數(shù)據(jù)填充到發(fā)送緩沖區(qū)中。通過讀“數(shù)據(jù)寄存器DR”,可以獲取接收緩沖區(qū)中的內(nèi)容。其中數(shù)據(jù)幀長度可以通過“控制寄存器CR1”的“DFF位”配置成8位及16位模式;配置“LSBFIRST位”可選擇MSB先行還是LSB先行。SPI的數(shù)據(jù)控制邏輯整體控制邏輯負責協(xié)調(diào)整個SPI外設(shè),控制邏輯的工作模式根據(jù)“控制寄存器(CR1/CR2)”的參數(shù)而改變,基本的控制參數(shù)包括前面提到的SPI模式、波特率、LSB先行、主從模式、單雙向模式等等。在外設(shè)工作時,控制邏輯會根據(jù)外設(shè)的工作狀態(tài)修改“狀態(tài)寄存器(SR)”,只要讀取狀態(tài)寄存器相關(guān)的寄存器位,就可以了解SPI的工作狀態(tài)了。除此之外,控制邏輯還根據(jù)要求,負責控制產(chǎn)生SPI中斷信號、DMA請求及控制NSS信號線。實際應用中,一般不使用STM32SPI外設(shè)的標準NSS信號線,而是更簡單地使用普通的GPIO,軟件控制它的電平輸出,從而產(chǎn)生通訊起始和停止信號。SPI的整體控制邏輯通訊過程跟其它外設(shè)一樣,STM32標準庫提供了SPI初始化結(jié)構(gòu)體及初始化函數(shù)來配置SPI外設(shè)。初始化結(jié)構(gòu)體及函數(shù)定義在庫文件“stm32f4xx_spi.h”及“stm32f4xx_spi.c”中,編程時我們可以結(jié)合這兩個文件內(nèi)的注釋使用或參考庫幫助文檔。SPI初始化結(jié)構(gòu)體SPI_Direction:設(shè)置SPI為單向或雙向的數(shù)據(jù)模式可設(shè)置為:雙線全雙工(SPI_Direction_2Lines_FullDuplex),雙線只接收(SPI_Direction_2Lines_RxOnly),單線只接收(SPI_Direction_1Line_Rx)、單線只發(fā)送模式(SPI_Direction_1Line_Tx)。SPI初始化結(jié)構(gòu)體SPI_Mode:設(shè)置SPI工作模式主機模式(SPI_Mode_Master)從機模式(SPI_Mode_Slave)這兩個模式的最大區(qū)別為SPI的SCK信號線的時序,SCK的時序是由通訊中的主機產(chǎn)生的。若被配置為從機模式,STM32的SPI外設(shè)將接受外來的SCK信號。SPI初始化結(jié)構(gòu)體SPI_DataSize:選擇SPI通訊的數(shù)據(jù)幀大小4位(SPI_DataSize_4b)8位(SPI_DataSize_8b)16位(SPI_DataSize_16b)SPI初始化結(jié)構(gòu)體SPI_CPOL:配置SPI的時鐘極性CPOL高電平(SPI_CPOL_High)低電平(SPI_CPOL_Low)SPI_CPHA:配置時鐘相位CPHASPI_CPHA_1Edge(在SCK的奇數(shù)邊沿采集數(shù)據(jù))
SPI_CPHA_2Edge
(在SCK的偶數(shù)邊沿采集數(shù)據(jù))
SPI初始化結(jié)構(gòu)體SPI_NSS:配置NSS引腳的使用模式硬件模式(SPI_NSS_Hard
),這時SPI片選信號由SPI硬件自動產(chǎn)生軟件模式(SPI_NSS_Soft
),外部引腳控制。實際中軟件模式應用比較多。SPI初始化結(jié)構(gòu)體SPI_BaudRatePrescaler:設(shè)置波特率分頻因子,分頻后的時鐘即為SPI的SCK信號線的時鐘頻率??稍O(shè)置為fpclk的2、4、6、8、16、32、64、128、256分頻。SPI_InitStruct.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_32;SPI初始化結(jié)構(gòu)體SPI_FirstBit:設(shè)置數(shù)據(jù)傳輸從MSB開始還是LSB開始MSB先行:
SPI_FirstBit_MSBLSB先行:SPI_FirstBit_LSBSPI_InitStruct.SPI_FirstBit=SPI_FirstBit_MSB;SPI初始化結(jié)構(gòu)體SPI_CRCPolynomial:這是SPI的CRC校驗中的多項式,若我們使用CRC校驗時,就使用這個成員的參數(shù)(多項式),來計算CRC的值。配置完這些結(jié)構(gòu)體成員后,要調(diào)用SPI_Init函數(shù)把這些參數(shù)寫入到寄存器中,實現(xiàn)SPI的初始化,然后調(diào)用SPI_Cmd來使能SPI外設(shè)SPI初始化結(jié)構(gòu)體SPI的庫函數(shù)SPI_InitVoidSPI_Init(SPI_TypeDef*SPIx,SPI_InitTypeDef*SPI_InitStruct)功能:根據(jù)SPI_InitStruct中的參數(shù)初始化外設(shè)SPIx的寄存器。SPI_Init(SPI1,&SPI_InitStruct);SPI的庫函數(shù)SPI_CmdvoidSPI_Cmd(SPI_TypeDef*SPIx,FunctionalStateNewState);功能:使能或失能指定的SPI外設(shè)SPI_Cmd(SPI1,ENABLE);SPI的庫函數(shù)SPI_I2S_ITConfigvoidSPI_I2S_ITConfig(SPI_TypeDef*SPIx,uint8_tSPI_I2S_IT,FunctionalStateNewState);功能:使能或失能指定的SPI/I2S中斷SPI_I2S_IT可取的值:SPI_I2S_IT_TXE(發(fā)送緩存空中斷屏蔽),SPI_I2S_IT_RXNE(接收緩存非空中斷屏蔽),SPI_I2S_IT_ERR(錯誤中斷屏蔽)SPI的庫函數(shù)SPI_I2S_SendDatavoidSPI_I2S_SendData(SPI_TypeDef*SPIx,uint16_tData);功能:通過外設(shè)SPIx發(fā)送數(shù)據(jù)SPI_I2S_SendData(SPI1,0x55);SPI的庫函數(shù)SPI_I2S_ReceiveDatauint16_tSPI_I2S_ReceiveData(SPI_TypeDef*SPIx);功能:返回通過外設(shè)SPIx最新接收的數(shù)據(jù)temp=SPI_I2S_ReceiveData(SPI1);SPI的庫函數(shù)SPI_I2S_GetFlagStatusFlagStatusSPI_I2S_GetFlagStatus(SPI_TypeDef*SPIx,uint16_tSPI_I2S_FLAG);功能:檢查指定的SPI/I2S標志位設(shè)置與否SPI_I2S_FLAG可取的值:
SPI_I2S_FLAG_TXE:發(fā)送緩存空標志位SPI_I2S_FLAG_RXNE:接收緩存非空標志位while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);SPI的庫函數(shù)SPI_I2S_ClearFlagvoidSPI_I2S_ClearFlag(SPI_TypeDef*SPIx,uint16_tSPI_I2S_FLAG);功能:清除指定的SPI/I2S標志位SPI_I2S_FLAG可取的值:
SPI_I2S_FLAG_TXE:發(fā)送緩存空標志位SPI_I2S_FLAG_RXNE:接收緩存非空標志位SPI的庫函數(shù)SPI_I2S_GetITStatusITStatusSPI_I2S_GetITStatus(SPI_TypeDef*SPIx,uint8_tSPI_I2S_IT);功能:用于檢查指定的SPI/I2S中斷發(fā)生與否SPI_I2S_IT可取的值:
SPI_I2S_IT_TXE:發(fā)送緩存空標志位SPI_I2S_IT_RXNE:接收緩存非空標志位小結(jié)STM32的SPISPI框圖SPI通訊SPI初始化結(jié)構(gòu)體SPI庫函數(shù)ARM微控制器與嵌入式系統(tǒng)
PWM原理主講人:景妮琴北京電子科技職業(yè)學院內(nèi)容什么是PWM?PWM應用定時器生成PWM原理STM32定時器結(jié)構(gòu)什么是PWM?PWM:“PulseWidthModulation”脈沖寬度調(diào)制脈沖寬度是指高電平持續(xù)的時間占空比是高電平時間與周期時間的比值。PWM應用數(shù)模轉(zhuǎn)換電機控制音調(diào)產(chǎn)生燈的亮度控制使用PWM進行數(shù)模轉(zhuǎn)換使用PWM驅(qū)動揚聲器使用PWM調(diào)節(jié)燈的亮度使用PWM控制電機定時器生成PWM原理PWM原理計數(shù)寄存器CNT重裝寄存器ARR比較寄存器CCRCNTARRCCR定時器生成PWM原理在邊沿對齊模式下,計數(shù)器CNT只工作在一種模式,遞增或者遞減模式。這里我們以CNT
工作在遞增模式為例,在圖中,ARR=8,CCR=4,CNT從0開始計數(shù),當CNT<CCR的值時,輸出
為有效的高電平,CNT>=CCR時,輸出為無效的低電平。當CNT>ARR時,CNT又從0開始計數(shù)并生成計數(shù)器上溢事件,以此循環(huán)往復。PWM的對齊方式重新畫一個圖PWM的對齊方式重新畫一個圖PWM的對齊方式重新畫一個圖STM32高級定時器結(jié)構(gòu)基本定時器(TIM6,TIM7):只有最基本的定時功能。基本定時器TIM6和TIM7各包含一個16位自動裝載計數(shù)器,由各自的可編程預分頻器驅(qū)動通用定時器(TIM2~TIM5,TIM9~TIM14)
:除了基本的定時器的功能外,還具有測量輸入信號的脈沖長度(輸入捕獲)或者產(chǎn)生輸出波形(輸出比較和PWM)高級定時器(TIM1,TIM8):高級定時器不但具有基本,通用定時器的所有的功能,還具有控制交直流電動機所有的功能,比如它可以輸出互補帶死區(qū)的信號等等STM32高級定時器結(jié)構(gòu)定時器種類位數(shù)計數(shù)器模式產(chǎn)生DMA請求捕獲/比較通道互補輸出特殊應用場景高級定時器(TIM1,TIM8)16向上,向下,向上/下可以4有帶可編程死區(qū)的互補輸出通用定時器(TIM2,TIM5)32向上,向下,向上/下可以4無通用。定時計數(shù),PWM輸出,輸入捕獲,輸出比較通用定時器(TIM3,TIM4)16向上,向下,向上/下可以4無通用。定時計數(shù),PWM輸出,輸入捕獲,輸出比較通用定時器(TIM9~TIM14)16向上沒有2無通用。定時計數(shù),PWM輸出,輸入捕獲,輸出比較基本定時器(TIM6,TIM7)16向上,向下,向上/下可以0無主要應用于驅(qū)動DACSTM32高級定時器結(jié)構(gòu)STM32高級定時器結(jié)構(gòu)默認調(diào)用SystemInit函數(shù)情況下:SYSCLK=168MAHB時鐘=168MAPB1時鐘=42M所以APB1的分頻系數(shù)=AHB/APB1時鐘=4所以,通用定時器時鐘CK_INT=2*42M=84M內(nèi)部時鐘選擇定時器生成PWM的頻率與占空比若選用TIM3,掛載在APB1時鐘總線上,因此TIMxCLK=84MHz所以:Prescaler=84(分頻)TIMxcounterclock=84MHz/84=1MHz若ARR=1000=>Frequency=TIMxcounterclock/ARR=>Frequency=1MHz/1000=1KHzCCR1=500=>TIMxChannel1dutycycle=(CCR1/ARR)*100%=50%生成的PWM的頻率為1KHz,占空比為50%定時器生成PWM的頻率與占空比若選用TIM3,掛載在APB1時鐘總線上,因此TIMxCLK=84MHz。如果想生成一個500HZ頻率,占空比為25%的PWM。所以:Prescaler=(<2^32即可)(分頻)TIMxcounterclock=84MHz/prescaler=(84)若ARR=(2000)
=>Frequency=TIMxcounterclock/ARRCCR1=(500)=>TIMxChannel1dutycycle=(CCR1/ARR)*100%=25%小結(jié)什么是PWM?PWM應用定時器生成PWMSTM32定時器結(jié)構(gòu)ARM微控制器與嵌入式系統(tǒng)
STM32的PWM配置主講人:景妮琴北京電子科技職業(yè)學院內(nèi)容STM32的PWM定時器生成PWM的編程要點輸出通道配置PWM結(jié)構(gòu)體PWM庫函數(shù)定時器生成PWM原理PWM原理計數(shù)寄存器CNT重裝寄存器ARR比較寄存器CCRCNTARRCCR定時器生成PWM的編程要點1、開啟GPIO時鐘、定時器時鐘2、PWM輸出端口配置3、復用引腳功能映射4、定時器配置5、輸出通道配置6、PWM使能7、設(shè)置比較器值輸出PWMPWM的輸出通道針對高級定時器和通用定時器,查STM32的數(shù)據(jù)手冊,選擇使用不同定時器的不同通道進行配置。我們使用TIM3。定時器生成PWM的編程要點1、打開輸出通道的GPIO時鐘以及定時器(PWM)的時鐘(1)打開GPIO的時鐘使用TIM3的4個通道分別為:PA6,PA7,PB0,PB1打開GPIOA和GPIOB的時鐘RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
定時器生成PWM的編程要點1、打開輸出通道的GPIO時鐘以及定時器(PWM)的時鐘(2)打開TIM3的時鐘APB1時鐘總線
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);定時器生成PWM的編程要點2、PWM輸出端口配置使用TIM3的4個通道分別為:PA6,PA7,PB0,PB1先對PA6,PA7配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; //選擇端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//復用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //輸出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOA,&GPIO_InitStructure);
定時器生成PWM的編程要點2、PWM輸出端口配置使用TIM3的4個通道分別為:PA6,PA7,PB0,PB1再對PB0,PB1配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1; //選擇端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//復用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //輸出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空模式GPIO_Init(GPIOB,&GPIO_InitStructure);
定時器生成PWM的編程要點3、復用引腳功能映射GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_TIM3);GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_TIM3);GPIO_PinAFConfig(GPIOB,GPIO_PinSource0,GPIO_AF_TIM3);GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM3);定時器生成PWM的編程要點4、定時器配置typedefstruct{uint16_tTIM_Prescaler; //預分頻系數(shù)uint16_tTIM_CounterMode; //計數(shù)模式uint32_tTIM_Period; //定時器初值uint16_tTIM_ClockDivision; //分頻因子uint8_tTIM_RepetitionCounter; //重復計數(shù)}TIM_TimeBaseInitTypeDef;定時器生成PWM的編程要點4、定時器配置分析:設(shè)置TIMx定時器的相關(guān)寄存器,主要是設(shè)置ARR和PSC。例:產(chǎn)生頻率為500Hz,占空比為50%的PWM波形,可以設(shè)置如下:通用控制定時器時鐘源TIM3CLK=42MHz*2=84MHz,設(shè)定定時器頻率為=TIM3CLK/(TIM_Prescaler+1)=1MHz,得到:TIM_Prescaler=84-1而PWM的頻率為1MHz/(TIM_Period+1)=500Hz.則TIM_Period=2000即定時器從0計數(shù)到1999,為一個定時周期定時器生成PWM原理TIM_CounterMode_Up 向上計數(shù)
定時器生成PWM原理TIM_CounterMode_Down 向下計數(shù)
TIMx_ARRTIMx_CNT中斷定時器生成PWM的編程要點4、定時器配置TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Prescaler=84-1;//預分頻系數(shù)TIM_TimeBaseStructure.TIM_Period=2000-1;//定時器初值TIM_TimeBaseStructureTIM_CounterMode=TIM_CounterMode_Up;//計數(shù)模式TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//分頻因子TIM_RepetitionCounter=0; //重復計數(shù)TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);定時器生成PWM的編程要點5、輸出通道配置TIM_OCInitTypeDefTIM_OCInitStructure;typedefstruct{uint16_tTIM_OCMode; //輸出通道模式uint16_tTIM_OutputState; //輸出通道使能或失能uint16_tTIM_OutputNState; //輸出互補通道使能或失能uint32_tTIM_Pulse; //比較器預裝初值uint16_tTIM_OCPolarity; //輸出通道極性uint16_tTIM_OCNPolarity; //輸出互補通道極性uint16_tTIM_OCIdleState; //輸出通道空閑時電平uint16_tTIM_OCNIdleState; //輸出互補通道空閑時電平}TIM_OCInitTypeDef;定時器生成PWM的編程要點5、輸出通道配置(1)TIM_OCMode的取值范圍 //輸出通道模式TIM_OCMode_Timing //定時器輸出比較時間模式TIM_OCMode_Active //定時器輸出比較主動模式TIM_OCMode_Inactive //定時器輸出比較非主動模式TIM_OCMode_Toggle //定時器輸出比較觸發(fā)模式TIM_OCMode_PWM1 //定時器脈寬調(diào)制模式1TIM_OCMode_PWM2 //定時器脈寬調(diào)制模式2TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;定時器生成PWM的編程要點5、輸出通道配置(1)TIM_OCMode的取值范圍 //輸出通道模式PWM模式1在遞增計數(shù)模式下,只要TIMx_CNT<TIMx_CCR1,通道1便為有效狀態(tài),否則為無效狀態(tài)。在遞減計數(shù)模式下,只要TIMx_CNT>TIMx_CCR1,通道1便為無效狀態(tài)(OC1REF=0),否則為有效狀態(tài)(OC1REF=1)。
PWM模式2在遞增計數(shù)模式下,只要TIMx_CNT<TIMx_CCR1,通道1便為無效狀態(tài),否則為有效狀態(tài)。在遞減計數(shù)模式下,只要TIMx_CNT>TIMx_CCR1,通道1便為有效狀態(tài),否則為無效狀態(tài)。TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;定時器生成PWM的編程要點5、輸出通道配置(2)TIM_OutputState的取值范圍 //輸出通道使能或失能TIM_OutputState_Enable //輸出通道使能TIM_OutputState_Disable //輸出通道失能TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;(3)TIM_OutputNState取值范圍//輸出互補通道使能或失能TIM_OutputNState_Enable //輸出互補通道使能TIM_OutputNState_Disable //輸出互補通道失能
TIM3沒有互補通道,這個可以不設(shè)置定時器生成PWM的編程要點5、輸出通道配置(4)TIM_Pulse取值范圍//比較器預裝初值比較器初值取值0-65535,TIM2和TIM5比較器取值0-2^32設(shè)置占空比,占空比=(CCRx/ARR)*100%,設(shè)置50%的占空比為,前面已經(jīng)設(shè)置ARR=2000,因此這個地方的CCR應該設(shè)置為100
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Module7 Unit2 Pandas love bamboo(教學設(shè)計)-2024-2025學年外研版(三起)英語六年級上冊
- 桂林航天工業(yè)學院《機械設(shè)計基礎(chǔ)2》2023-2024學年第二學期期末試卷
- 武夷學院《辦公軟件操作實訓》2023-2024學年第二學期期末試卷
- 上海財經(jīng)大學《情報檢索3》2023-2024學年第二學期期末試卷
- 大理護理職業(yè)學院《新媒體發(fā)展前沿》2023-2024學年第二學期期末試卷
- 黑龍江科技大學《計量經(jīng)濟學B》2023-2024學年第二學期期末試卷
- 常熟理工學院《臨床流行病學》2023-2024學年第二學期期末試卷
- 荊州學院《西方法律思想史》2023-2024學年第二學期期末試卷
- 武漢東湖學院《嵌入式系統(tǒng)技術(shù)及應用》2023-2024學年第二學期期末試卷
- 牡丹江大學《P路由與交換技術(shù)》2023-2024學年第二學期期末試卷
- 美麗的春天課件
- 2025年山東青島自貿(mào)發(fā)展有限公司招聘筆試參考題庫含答案解析
- 會計法律法規(guī)答題答案
- 2024年山東外貿(mào)職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 2025江蘇常州溧陽市部分機關(guān)事業(yè)單位招聘編外人員78人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年學校心理健康教育工作計劃(三篇)
- 中國國際大學生創(chuàng)新大賽與“挑戰(zhàn)杯”大學生創(chuàng)業(yè)計劃競賽(第十一章)大學生創(chuàng)新創(chuàng)業(yè)教程
- 新概念英語第一冊語法練習
- 《建筑基坑工程監(jiān)測技術(shù)標準》(50497-2019)
- 數(shù)字經(jīng)濟學導論-全套課件
- 部編版五年級語文下冊全冊教材分析
評論
0/150
提交評論