版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
“1+X”傳感網(wǎng)應(yīng)用開發(fā)(中級(jí))STM32介紹知識(shí)鏈接01ARM介紹02STM32介紹什么是ARM?01ARM可以說是一個(gè)公司的名稱,一類微處理的通稱,也代表一種技術(shù)。其實(shí)ARM是一個(gè)做芯片標(biāo)準(zhǔn)的公司,它負(fù)責(zé)芯片內(nèi)核的架構(gòu)設(shè)計(jì),不制造芯片,不向終端用戶出售芯片,而把具體的實(shí)現(xiàn),授權(quán)給像TI,ST等半導(dǎo)體公司,由合作伙伴生產(chǎn)出各具特色的芯片。Cortex-A系列-開放式操作系統(tǒng)的高性能處理器:智能手機(jī)智能本和上網(wǎng)本電子書閱讀器數(shù)字電視家用網(wǎng)關(guān)Cortex-M系列-面向具有確定性的微控制器應(yīng)用的成本敏感型解決方案微控制器混合信號(hào)設(shè)備智能傳感器汽車電子和氣囊Cortex-R系列-面向?qū)崟r(shí)應(yīng)用的卓越性能汽車制動(dòng)系統(tǒng)動(dòng)力傳動(dòng)解決方案大容量存儲(chǔ)控制器網(wǎng)絡(luò)和打印01常見的ARM處理器生產(chǎn)商及產(chǎn)品ARM只提供技術(shù),芯片由對(duì)應(yīng)的廠商生產(chǎn)01STM32是意法半導(dǎo)體(STMicroelectronics,簡稱ST)有限公司出品的一系列微控制器(MicroControllerUnit,簡稱MCU)的統(tǒng)稱。STM3232是指數(shù)據(jù)總線是32位的,一次性可以傳輸32位的數(shù)據(jù)。02主流產(chǎn)品:(STM32F0、STM32F1、STM32F3)超低功耗產(chǎn)品:(STM32L0、STM32L1、STM32L4、STM32L4+)高性能產(chǎn)品:(STM32F2、STM32F4、STM32F7、STM32H7)STM32F10X系列02STM32微控制器的命名規(guī)則02STM32F103VET6含義02總的來說STM32具有如下優(yōu)勢:
1)極高的性能:主流的Cortex內(nèi)核。
2)豐富合理的外設(shè),合理的功耗,合理的價(jià)格。
3)強(qiáng)大的軟件支持:豐富的軟件包。
4)全面豐富的技術(shù)文檔。
5)芯片型號(hào)種類多,覆蓋面廣。
6)強(qiáng)大的用戶基礎(chǔ):最先成功試水CM3芯片的公司,積累了大批的用戶群體,為其領(lǐng)先做鋪墊?!?+X”傳感網(wǎng)應(yīng)用開發(fā)STM32開發(fā)環(huán)境的搭建與工程的建立任務(wù)要求
張明新接到項(xiàng)目,要求完成STM32單片機(jī)的開發(fā)工作,張明開始著手準(zhǔn)備基于STM32單片機(jī)開發(fā)的環(huán)境搭建及工程的建立。目錄14123重點(diǎn)與難點(diǎn)STM32開發(fā)環(huán)境的選擇開發(fā)環(huán)境的安裝配置工程的建立及運(yùn)行1重點(diǎn)與難點(diǎn)重點(diǎn):環(huán)境的安裝
工程的建立文件的燒寫難點(diǎn):環(huán)境的配置
重點(diǎn)與難點(diǎn)2STM32開發(fā)環(huán)境的選擇開發(fā)環(huán)境選擇02庫開發(fā)01寄存器開發(fā)標(biāo)準(zhǔn)外設(shè)庫(STD庫)HAL庫LL庫
三種1STM32軟件開發(fā)的各種模式優(yōu)點(diǎn)缺點(diǎn)STM32CubeMX+MDK-ARMIDE的選擇3開發(fā)環(huán)境的安裝配置工程的建立及運(yùn)行安裝過程在視頻中點(diǎn)亮LED燈“1+X”傳感網(wǎng)應(yīng)用開發(fā)
點(diǎn)亮LED燈一二三26
ContentsPage目錄頁LED燈概述點(diǎn)亮LED燈開發(fā)流程演示發(fā)光二極管簡稱為LED什么是LED燈點(diǎn)亮LED燈3(1)點(diǎn)亮一個(gè)LED燈i3.3V任務(wù)要求點(diǎn)亮LED2知識(shí)鏈接01GPIO口介紹02GPIO口配置03
GPIO編程流程分析開發(fā)流程演示GPIO介紹GPIO(GeneralPurposeInputOutput)通用輸入輸出01GPIO最簡單的功能是輸出高低電平,GPIO還可以被設(shè)置為輸入功能,用于讀取按鍵等輸入信號(hào)。GPIO工作模式01GPIO配置推挽輸出可以簡化理解為左側(cè),無論是比較器的結(jié)果如何,上下兩個(gè)三極管一定有一個(gè)導(dǎo)通,所以可以輸出強(qiáng)高低電平,且有一定電流,可以直接驅(qū)動(dòng)數(shù)字器件。而右側(cè)的開漏輸出可以簡化理解為三極管的集電極,只能輸出強(qiáng)低電平,如果輸出高電平需要外接上拉電阻。02GPIO配置
GPIO配置相關(guān)的函數(shù)API主要位于“stm32f1xx_hal_gpio.c”和“stm32f1xx_hal_gpio.h”文件中。02GPIO編程流程分析031、使能GPIO端口時(shí)鐘2、初始化GPIO引腳,即為GPIO初始化結(jié)構(gòu)體成員賦值,并調(diào)用HAL_GPIO_Init函數(shù)完成初始化配置3、根據(jù)項(xiàng)目要求控制引腳輸出高低電平01建立工程存放的文件夾新建STM32CubeMX工程0203選擇MCU型號(hào)配置調(diào)試端口0405配置MCU時(shí)鐘樹06配置LED燈相關(guān)的GPIO功能07保存STM32CubeMX工程08生成初始C代碼工程09在main.c中添加邏輯代碼完成功能04開發(fā)流程演示10編譯下載思考題
如何實(shí)現(xiàn)流水燈每隔2s閃爍一次呢??如何用定時(shí)器實(shí)現(xiàn)LED燈每隔2s閃爍一次呢?“1+X”傳感網(wǎng)應(yīng)用開發(fā)呼吸燈應(yīng)用開發(fā)01回顧02任務(wù)要求03重要知識(shí)目錄CONTENTS04呼吸燈編程流程分析05項(xiàng)目演示回顧01建立工程存放的文件夾新建STM32CubeMX工程0203配置GPIO功能配置調(diào)試端口0405配置MCU時(shí)鐘樹06保存STM32CubeMX工程07生成C代碼初始工程011
任務(wù)要求本任務(wù)要求設(shè)計(jì)一個(gè)可通過按鍵進(jìn)行控制的呼吸燈系統(tǒng),具體要求如下:LED燈的顯示效果為“逐漸變亮”然后“逐漸變暗”;0202任務(wù)分析*LED亮度等級(jí)表*/uint8_tindexWave[]={1,1,2,2,3,4,6,8,10,14,19,25,33,44,59,80,107,143,191,255,255,191,143,107,80,59,44,33,25,19,14,10,8,6,4,3,2,2,1,1};02上升沿、下降沿與高低電平觸發(fā)STM32F1系列支持將所有GPIO設(shè)置為中斷輸入。外部IO可由上升沿、下降沿、高低電平的三種方式觸發(fā)??蛇x擇中斷或事件觸發(fā)。02效果分析03呼吸燈編程流程分析1、使能GPIO端口時(shí)鐘;2、初始化GPIO引腳,即為GPIO初始化結(jié)構(gòu)體成員賦值,并調(diào)用HAL_GPIO_Init函數(shù)完成初始化配置;3、根據(jù)項(xiàng)目要求控制引腳輸出有亮度等級(jí)的高低電平4、利用delay函數(shù)實(shí)現(xiàn)
重要知識(shí)02Delay函數(shù)03開發(fā)流程演示01GPIO口配置03GPIO介紹GPIO(GeneralPurposeInputOutput)通用輸入輸出,是STM32的一種外設(shè),與大部分芯片引腳直接掛鉤,STM32F103VET6芯片總共有5個(gè)GPIO外設(shè),定義為GPIOA、GPIOB、GPIOC、GPIOD和GPIOE,每個(gè)GPIO外設(shè)有16個(gè)引腳,定義為PA0..PA15、PB0..PB15等。GPIO最簡單的功能是輸出高低電平,GPIO還可以被設(shè)置為輸入功能,用于讀取按鍵等輸入信號(hào)。很多高級(jí)外設(shè)也有功能引腳,并且是與GPIO共用的,具體引腳功能可以通過軟件編程設(shè)置對(duì)應(yīng)的寄存器內(nèi)容實(shí)現(xiàn)。GPIO配置
GPIO配置相關(guān)的函數(shù)API主要位于“stm32f1xx_hal_gpio.c”和“stm32f1xx_hal_gpio.h”文件中。GPIO工作模式GPIO編程流程分析1、使能GPIO端口時(shí)鐘;2、初始化GPIO引腳,即為GPIO初始化結(jié)構(gòu)體成員賦值,并調(diào)用HAL_GPIO_Init函數(shù)完成初始化配置;3、根據(jù)項(xiàng)目要求控制引腳輸出高低電平Delay函數(shù)單片機(jī)編程過程中經(jīng)常用到延時(shí)函數(shù),最常用的莫過于微秒級(jí)延時(shí)delay_us()和毫秒級(jí)delay_ms()。1.普通延時(shí)法2.SysTick定時(shí)器延時(shí):a).中斷方式如下,定義延時(shí)時(shí)間time_delay,SysTick_Config()定義中斷時(shí)間段,在中斷中遞減time_delay,從而實(shí)現(xiàn)延時(shí)。b).非中斷方式呼吸燈編程流程分析1、使能GPIO端口時(shí)鐘;2、初始化GPIO引腳,即為GPIO初始化結(jié)構(gòu)體成員賦值,并調(diào)用HAL_GPIO_Init函數(shù)完成初始化配置;3、根據(jù)項(xiàng)目要求控制引腳輸出有亮度等級(jí)的高低電平04項(xiàng)目演示05小結(jié)重點(diǎn)掌握:1、GPIO的配置2、如何使用Delay函數(shù)預(yù)習(xí)及思考題1、什么是定時(shí)器?2、什么是脈沖寬度調(diào)制(PulseWidthModulation,PWM)?3、如何使用意思是兩種方式實(shí)現(xiàn)呼吸燈?“1+X”傳感網(wǎng)應(yīng)用開發(fā)按鍵控制LED燈01引言02按鍵原理03按鍵操作目錄CONTENTS04按鍵消抖05按鍵控制LED燈代碼分析06致謝一、引言1、在我們的日常生活中,使用按鍵控制電器開關(guān)的情況還是非常多的,比如說按鍵控制LED燈的亮滅,按鍵控制繼電器的吸合,按鍵控制電機(jī)的正反轉(zhuǎn)等操作;2、同樣按鍵在STM32開發(fā)也非常的重要,比如說按下KEY1,使LED點(diǎn)亮,再按下KEY1,LED熄滅;3、按鍵的種類有很多,然而今天我們要研究的是貼片按鍵的使用,我們今天的實(shí)例為:通過KEY1的狀態(tài)來控制LED的點(diǎn)亮與熄滅。二、按鍵原理1下圖為按鍵連接原理,(PC13_KEY1為單片機(jī)IO口),其按鍵輸出端采用上拉電阻,目的是當(dāng)按鍵斷開時(shí),使單片機(jī)輸入端口處于高電平狀態(tài),只有當(dāng)按鍵按下時(shí)才處于低電平。21、按鍵的基本原理是設(shè)置單片機(jī)IO口為輸入狀態(tài)(如方向寄存器,”1”為輸出,“0”為輸入);2、默認(rèn)IO狀態(tài)為高電平1,按下時(shí)按鍵與GND短接,所以其為低電平0狀態(tài),那么我們就可以通過讀取按鍵的IO電平狀態(tài)來判斷按鍵是否按下了;3、單片機(jī)一直檢測按鍵端口IO的狀態(tài),當(dāng)端口為低電平時(shí)(即按鍵按下),實(shí)行相應(yīng)的動(dòng)作來控制LED燈。三、按鍵操作1、我們把按鍵操作分為兩個(gè)不同的版本:一個(gè)為有鎖存,另外一個(gè)為無鎖存。2、什么是有鎖存?比如我們按下按鍵以后,LED常亮,但是我們想要再次關(guān)閉LED燈,那么就再次按一下按鍵,我們按下第一次按鍵以后,無論等待多長時(shí)間,直到再次按下按鍵以后才能關(guān)閉LED,這種情況我們稱為是有鎖存,3、那么什么是無鎖存呢?我們按下按鍵,LED點(diǎn)亮,松開按鍵,LED熄滅,這種情況就叫無鎖存。4、鎖存有還是沒有并沒有孰是孰非,在不同的場合使用不同的程序才是最機(jī)智的選擇。1四、按鍵消抖1、按鍵原理就是這么回事,但是正真實(shí)現(xiàn)時(shí),按鍵會(huì)有抖動(dòng),要進(jìn)行按鍵去抖。2、我們引入了延時(shí)消抖的思想,因?yàn)榘存I是機(jī)械開關(guān),所以在按下的時(shí)候會(huì)產(chǎn)生電平的抖動(dòng),這在STM32單片機(jī)中經(jīng)常使用。1按鍵實(shí)行一個(gè)動(dòng)作過程是需要一定時(shí)間的,一般為100mS-1S左右,而一個(gè)單片機(jī)執(zhí)行一個(gè)機(jī)器周期的時(shí)間很短,時(shí)鐘為10MHZ的周期為0.1μs,這樣按鍵每一次動(dòng)作程序就會(huì)多次檢測按鍵,出現(xiàn)誤判(一次按下,多次動(dòng)作)。按鍵觸點(diǎn)在閉合或者斷開的瞬間會(huì)出現(xiàn)抖動(dòng),抖動(dòng)時(shí)間一般小于10ms。2這里我們使用軟件去抖的方法,即:延時(shí)處理。按鍵抖動(dòng)的時(shí)間間隔也就10ms以內(nèi),可以通過軟件進(jìn)行延時(shí)判斷,過濾掉抖動(dòng)的時(shí)間,達(dá)到消除抖動(dòng)的目的。五、按鍵控制LED燈代碼分析首先我們在led.h中對(duì)LED初始定義:1初始化LED燈接下來對(duì)LED做初始化函數(shù)說明:2LED初始化函數(shù)接下來是按鍵宏定義:3按鍵宏定義然后是初始化按鍵:4初始化按鍵如果使用無鎖存,要通過讀取IO端口的電平來判斷按鍵是否按下:5按鍵無鎖存舉例通過原理圖可知,按鍵按下的時(shí)候MCU讀取到的應(yīng)該是低電平,那么在前面加一個(gè)取反的符號(hào),于是按下的時(shí)候讀取到的電平為0,取反以后得到的為1,于是if條件成立。那么接著就會(huì)執(zhí)行函數(shù)括號(hào)里面的內(nèi)容,GPIO置位函數(shù)就會(huì)將其位設(shè)為1,于是LED接收到高電平,LED被點(diǎn)亮。如果函數(shù)條件不成立,那么就不會(huì)執(zhí)行函數(shù)里面的內(nèi)容。這種代碼就是無鎖存的情況。接下來我們再來看看有鎖存的情況:6按鍵有鎖存舉例第一步先檢查按鍵是否按下,如果按下了,那么就延時(shí)20毫秒,再次判斷按鍵是否按下,確保其不是因?yàn)闄C(jī)械抖動(dòng)造成的誤判斷。兩次判斷以后,其結(jié)果基本確定,如果按鍵按下了,就點(diǎn)亮LED燈,然后再加入一個(gè)死循環(huán),等待按鍵被松開。就是通過一個(gè)等待按鍵松開的函數(shù)來跳出循環(huán),達(dá)到按鍵鎖存的目的?!?+X”傳感網(wǎng)應(yīng)用開發(fā)外部中斷原理與分析01中斷原理02外部中斷/事件線路映射03中斷嵌套目錄CONTENTS04USART串口中斷05ADC數(shù)據(jù)轉(zhuǎn)換中斷06定時(shí)器中斷01中斷原理中斷是指一個(gè)突發(fā)事件,中止了CPU當(dāng)前的工作,轉(zhuǎn)而先去處理突發(fā)事件,處理完成后再回到當(dāng)前的工作繼續(xù)執(zhí)行。STM32允許多種多樣的中斷,我們在中級(jí)學(xué)習(xí)中用到的外部中斷主要有外部IO、ADC、USART等。外部中斷都是異步的。02外部中斷/事件線路映射(按鍵呼吸控制燈為例)外部按鍵中斷GPIO引腳中斷標(biāo)志位中斷處理函數(shù)PA0-PG0EXTI0EXTI0_IRQHandlerPA1-PG1EXTI1EXTI1_IRQHandlerPA2-PG2EXTI2EXTI2_IRQHandlerPA3-PG3EXTI3EXTI3_IRQHandlerPA4-PG4EXTI4EXTI4_IRQHandlerPA5-PG5…….PA9-PG9EXTI5……EXTI9EXTI9_5_IRQHandlerPA10-PG10…….PC13…….PA15-PG15EXTI10……EXTI13…….EXTI15EXTI15_10_IRQHandler按鍵KEY1按下,控制燈亮滅外部IO口的輸入中斷Cortex-m3支持256個(gè)中斷,其中包含了16個(gè)內(nèi)核中斷,240個(gè)外部中斷。STM32只有84個(gè)中斷,包括16個(gè)內(nèi)核中斷和68個(gè)可屏蔽中斷,STM32f103上只有60個(gè)可屏蔽中斷。中斷嵌套是指在進(jìn)入一個(gè)中斷處理程序之后,還能在中斷之內(nèi)再次產(chǎn)生中斷。03中斷嵌套搶占優(yōu)先級(jí)響應(yīng)優(yōu)先級(jí)搶占優(yōu)先級(jí)與響應(yīng)優(yōu)先級(jí)搶占優(yōu)先級(jí)響應(yīng)優(yōu)先級(jí)中斷A00哪個(gè)先發(fā)生就先執(zhí)行哪個(gè)不能嵌套,必須前一個(gè)中斷結(jié)束再進(jìn)入下一個(gè)中斷B00中斷A01兩個(gè)中斷同時(shí)發(fā)生時(shí),中斷A先執(zhí)行若中斷B先發(fā)生,中斷A不能打斷,不能嵌套中斷B00中斷A10中斷A可打斷中斷B中斷A可在中斷B內(nèi)嵌套中斷B00組SCB_AIRCRbit[10:8]NVIC_IPRx寄存器bit[7:4]
描述搶占優(yōu)先級(jí)響應(yīng)優(yōu)先級(jí)01110:40位:04位:0-1511101:31位:0-13位:0-721012:22位:0-32位:0-331003:13位:0-71位:0-140114:04位:0-150位:0優(yōu)先級(jí)分組由系統(tǒng)控制基本寄存器組(SCB)中的應(yīng)用程序中斷和復(fù)位控制器(AIRCR)決定五個(gè)組,其中搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)的位是由NVIC_IPR寄存器決定。04USART串口中斷串行通信控制LED燈通用同步異步收發(fā)器USART是MCU的重要外設(shè),在程序設(shè)計(jì)的調(diào)試階段,可將開發(fā)板與PC機(jī)通過串行通信接口相連,把調(diào)試信息打印到串口調(diào)試助手等工具。STM32F1中有3個(gè)USART和2個(gè)UART(無同步通信功能)引腳名稱APB2(最高72MHz)APB1(最高36MHz)USART1USART2USART3UART4UART5TXPA9/PB6PA2/PD5PB10/PD8/PC10PA0/PC10PC12RXPA10/PB7PA3/PD7PB11/PD9/PC11PA1/PC11PD2sCLKPA8PA4/PD7PB12/PD10/PC12-nCTSPA11PA0/PD3PB13/PD11-nRTSPA12PA1/PD4PB14/PD12-04USART串口中斷控制串行通信控制LED燈中斷事件事件標(biāo)志使能控制位發(fā)送期間發(fā)送完成TCTEIE清除以發(fā)送CTSCTSIE發(fā)送數(shù)據(jù)寄存器為空TXETXEIE接收期間接收數(shù)據(jù)寄存器不為空(準(zhǔn)備好讀取接收到的數(shù)據(jù))RXNERXNEIE檢測到上溢錯(cuò)誤ORE檢測到空閑線路IDLEIDLEIE奇偶校驗(yàn)錯(cuò)誤PEPEIE串口輸入不同指令(mode1,mode2,stop)控制流水燈正轉(zhuǎn)、反轉(zhuǎn)、停止05ADC數(shù)據(jù)轉(zhuǎn)換中斷電池電量監(jiān)測模數(shù)轉(zhuǎn)換器ADC可將連續(xù)變化的模擬信號(hào)轉(zhuǎn)換為離散的數(shù)字信號(hào)的器件,可將溫度、壓力、聲音或圖像等轉(zhuǎn)換成更易存儲(chǔ)、處理和發(fā)射的數(shù)字信號(hào)。MCUSTM32F103VET6有3個(gè)ADC,可工作在獨(dú)立、雙重或三重模式下。每個(gè)ADC都有18個(gè)復(fù)用通道,可測量:16個(gè)外部信號(hào)源2個(gè)內(nèi)部信號(hào)源轉(zhuǎn)換精度可配置為12bit、10bit、8bit、6bit分為兩個(gè)通道:規(guī)則通道——正常運(yùn)行的程序注入通道——相當(dāng)于中斷,可以打斷規(guī)則通道的轉(zhuǎn)換支持多種外部事件觸發(fā)方式:定時(shí)器觸發(fā)、外部GPIO中斷等05ADC數(shù)據(jù)轉(zhuǎn)換中斷電池電量監(jiān)測將采集到的電池電壓通過串口發(fā)送到上位機(jī)顯示獨(dú)立工作模式規(guī)則注入:因此不用書寫中斷程序激活輪詢模式ADC等待轉(zhuǎn)換結(jié)束接收ADC數(shù)據(jù)06定時(shí)器中斷按鍵控制呼吸燈按鍵實(shí)現(xiàn)LED燈逐漸變亮逐漸變暗脈沖寬度調(diào)制(PWM)采用調(diào)整脈沖占空比的方式達(dá)到調(diào)整電壓與電流的效果。“1+X”傳感網(wǎng)應(yīng)用開發(fā)按鍵控制LED燈01任務(wù)要求02任務(wù)分析03任務(wù)實(shí)施目錄CONTENTS按鍵控制LED燈任務(wù)要求本任務(wù)要求在M3主控模塊上實(shí)現(xiàn)按鍵控制LED燈亮滅的系統(tǒng),具體要求如下:3使用外部中斷實(shí)現(xiàn)按鍵功能;系統(tǒng)剛上電時(shí),LED燈為關(guān)閉狀態(tài);奇數(shù)次按下按鍵,LED燈處于閃爍狀態(tài),偶數(shù)次按下,LED燈關(guān)閉;任務(wù)分析3中斷概念、外部中斷I/O口輸出工作模式01圖形化編程02完善代碼03下載調(diào)試任務(wù)實(shí)施任務(wù)實(shí)施圖形化編程一、圖形化編程-基本配置二、圖形化編程-GPIO配置任務(wù)實(shí)施圖形化編程二、圖形化編程-GPIO配置任務(wù)實(shí)施圖形化編程二、圖形化編程-NVIC配置任務(wù)實(shí)施圖形化編程任務(wù)實(shí)施完善工程代碼3任務(wù)實(shí)施編譯下載3選取一個(gè)“M3主控模塊”、連接仿真器。編譯程序、下載至模塊中。觀察結(jié)果、調(diào)試。STM32的USART與UAART中斷“1+X”傳感網(wǎng)應(yīng)用開發(fā)01項(xiàng)目場景概述02任務(wù)分析(知識(shí)點(diǎn))03任務(wù)實(shí)施(流程)目錄CONTENTS04任務(wù)總結(jié)項(xiàng)目場景概述
本任務(wù)要求設(shè)計(jì)一個(gè)LED燈控制系統(tǒng),該系統(tǒng)與上位機(jī)之間通過串行通信接口相連。上位機(jī)可發(fā)送命令對(duì)LED進(jìn)行控制,具體要求如下:系統(tǒng)中有8個(gè)LED燈,分別是LED1~LED8。系統(tǒng)上電時(shí),8個(gè)LED燈默認(rèn)為熄滅狀態(tài)。系統(tǒng)運(yùn)行時(shí),8個(gè)LED燈依次點(diǎn)亮后全滅。LED控制指令LED工作狀態(tài)LED_ALL_OFFLED1~LED8全滅LED_ALL_ONLED1~LED8全亮LED_ALL_SPANLED1~LED8同時(shí)交替閃爍LED_HALF_SPANLED1~LED8間隔交替閃爍任務(wù)分析——技術(shù)路線
上位機(jī)以串行通信的方式發(fā)送命令至該系統(tǒng)進(jìn)行LED工作模式的切換。
串行線PC串口發(fā)送指令M3模塊演示效果任務(wù)分析——程序流程2、中斷如可設(shè)置?3、如可判定數(shù)據(jù)是否接受完成?1、了解STM32的USART?任務(wù)分析——知識(shí)點(diǎn)USART(UniversalSynchronousAsynchronousReceiverTransmitter)通用同步異步收發(fā)接口異步通信全雙工任務(wù)分析——知識(shí)點(diǎn)
STM32F103VET6芯片USART/UART的外部引腳分布引腳名稱APB2(最高72MHz)APB1(最高36MHz)USART1USART2USART3UART4UART5TXPA9/PB6PA2/PD5PB10/PD8/PC10PA0/PC10PC12RXPA10/PB7PA3/PD6PB11/PD9/PC11PA1/PC11PD2sCLKPA8PA4/PD7PB12/PD10/PC12--nCTSPA11PA0/PD3PB13/PD11--nRTSPA12PA1/PD4PB14/PD12--任務(wù)分析——知識(shí)點(diǎn)STM32F1的USART支持的中斷事件中斷事件事件標(biāo)志使能控制位發(fā)送期間發(fā)送完成TCTEIE清除已發(fā)送(CTS標(biāo)志)CTSCTSIE發(fā)送數(shù)據(jù)寄存器為空TXETXEIE接收期間接收數(shù)據(jù)寄存器不為空(準(zhǔn)備好讀取接收到的數(shù)據(jù))RXNERXNEIE檢測到上溢錯(cuò)誤ORE檢測到空閑線路IDLEIDLEIE奇偶校驗(yàn)錯(cuò)誤PEPEIE任務(wù)實(shí)施——知識(shí)點(diǎn)
中斷使能設(shè)置任務(wù)實(shí)施——知識(shí)點(diǎn)
中斷處理流程任務(wù)總結(jié)——難點(diǎn)
難點(diǎn):USART的中斷標(biāo)志有哪些,分別起什么作用。(不易理解)
解決方案:參考示例代碼,輔助理解多練習(xí),掌握不同中斷的作用“1+X”傳感網(wǎng)應(yīng)用開發(fā)(中級(jí))STM32串口發(fā)送數(shù)據(jù)01USART概述02STM32F1的USART03HAL庫串口發(fā)送數(shù)據(jù)函數(shù)目錄CONTENTS學(xué)習(xí)目標(biāo)1、熟悉STM32串口發(fā)送數(shù)據(jù)的功能和應(yīng)用。2、會(huì)使用串口函數(shù)庫驅(qū)動(dòng)STM32串口發(fā)送數(shù)據(jù)。一、USART概述USART的中文名稱為:通用同步異步收發(fā)器。
英文全稱是UniversalSynchronousAsynchronousReceiverandTransmitter。USART是MCU的重要外設(shè),在程序設(shè)計(jì)的調(diào)試階段可發(fā)揮重要作用。如:將開發(fā)板與PC機(jī)通過串行通信接口相連后,可將調(diào)試信息“打印”到串口調(diào)試助手等工具中,開發(fā)者可借助這些信息了解程序運(yùn)行情況。一、USART概述UART異步通信方式特點(diǎn):全雙工異步通信。分?jǐn)?shù)波特率發(fā)生器系統(tǒng),提供精確的波特率。
發(fā)送和接受共用的可編程波特率,最高可達(dá)4.5Mbits/s可編程的數(shù)據(jù)字長度(8位或者9位);可配置的停止位(支持1或者2位停止位);可配置的使用DMA多緩沖器通信。單獨(dú)的發(fā)送器和接收器使能位。檢測標(biāo)志:①
接受緩沖器②發(fā)送緩沖器空③傳輸結(jié)束標(biāo)志多個(gè)帶標(biāo)志的中斷源。觸發(fā)中斷。其他:校驗(yàn)控制,四個(gè)錯(cuò)誤檢測標(biāo)志。一、USART概述任何USART雙向通信至少需要兩個(gè)腳:TXD和RXDRXD:數(shù)據(jù)輸入引腳。數(shù)據(jù)接受。TXD:數(shù)據(jù)發(fā)送引腳。數(shù)據(jù)發(fā)送。當(dāng)我們需要發(fā)送數(shù)據(jù)時(shí),MCU內(nèi)核將待發(fā)送的數(shù)據(jù)寫入輸出數(shù)據(jù)發(fā)送緩沖器后,串行口會(huì)自動(dòng)地按照軟件設(shè)定的格式將待發(fā)送的數(shù)據(jù)組成數(shù)據(jù)幀,發(fā)送控制器將適時(shí)地自動(dòng)把數(shù)據(jù)從數(shù)據(jù)寄存器加載到串行輸出移位寄存器,然后通過引腳TXD,把數(shù)據(jù)一位一位地發(fā)送出去。一、USART概述二、STM32F1的USARTSTM32的串口資源相當(dāng)豐富的,功能也相當(dāng)強(qiáng)勁。STM32F1系列微控制器有5個(gè)收發(fā)器外設(shè)(俗稱“串口”)可用于串行通信,包括3個(gè)USART和2個(gè)UART(通用異步收發(fā)器,UniversalAsynchronousReceiverandTransmitter),它們分別是:USART1、USART2、USART3、UART4、UART5。UART與USART相比,裁剪了同步通信的功能,只有異步通信功能。同步通信與異步通信的區(qū)別在于通信中是否需要發(fā)送器輸出同步時(shí)鐘信號(hào)USART_CK,實(shí)際應(yīng)用中一般使用異步通信。二、STM32F1的USART左圖為STM32的USART功能框圖USART又專門控制發(fā)送的發(fā)送器、控制接收的接收器,還有喚醒單元、中斷控制等。發(fā)送器可發(fā)送8位或9位的數(shù)據(jù)字,具體取決于USART_CR[M]的狀態(tài)。發(fā)送使能位USART_CR[TE]置1時(shí),CPU或DMA從內(nèi)存讀取數(shù)據(jù),數(shù)據(jù)放到TDR,然后再發(fā)送給移位寄存器,再一位一位通過TX引腳輸出。二、STM32F1的USARTSTM32的發(fā)送的一個(gè)數(shù)據(jù)幀(也稱為字符幀)發(fā)送需要三個(gè)部分:起始位+數(shù)據(jù)位+停止位。起始位是一個(gè)位周期的低電平,位周期就是每一位占用的時(shí)間;數(shù)據(jù)位就是要發(fā)送的8位或9位數(shù)據(jù);停止位是一定時(shí)間周期的高電平。三、HAL庫串口數(shù)據(jù)發(fā)送函數(shù)STM32的發(fā)送步驟如下:通過向USART_CR1的UE位寫1來使能USART。對(duì)USART_CR1的M位進(jìn)行編程以定義發(fā)送字長。對(duì)USART_CR2的停止位數(shù)量進(jìn)行編程配置。如果要進(jìn)行多緩沖區(qū)通信,將USART_CR3的DMAT位置1,以使能DMA,并且按照多緩沖區(qū)通信中的說明配置DMA的寄存器。使用USART_BRR選擇所需的波特率。將USART_CR1的TE位置1,以便再首次發(fā)送時(shí)發(fā)送一個(gè)空閑幀。三、HAL庫串口數(shù)據(jù)發(fā)送函數(shù)三、HAL庫串口數(shù)據(jù)發(fā)送函數(shù)CubeMX圖形界面簡單配置完成了串口初始化代碼三、HAL庫串口數(shù)據(jù)發(fā)送函數(shù)搭配STMcubeMx工具HAL庫中相關(guān)的串口發(fā)送/接收函數(shù)三、HAL庫串口數(shù)據(jù)發(fā)送函數(shù)三、HAL庫串口數(shù)據(jù)發(fā)送函數(shù)三、HAL庫串口數(shù)據(jù)發(fā)送函數(shù)使用串口1發(fā)送數(shù)據(jù)發(fā)送字符為ch發(fā)送字符字長為1字節(jié)timeout的時(shí)間是最大值0xffff三、HAL庫串口數(shù)據(jù)發(fā)送函數(shù)C語言中printf函數(shù)默認(rèn)輸出設(shè)備是顯示器,若要實(shí)現(xiàn)在串口或LCD上顯示,則需要重新定義函數(shù)。例如,要printf輸出到串口,通過串口助手來測試代碼的正確與否,則需要將輸出的函數(shù)fputc里面的輸出指向串口,這一過程稱為重定向,寫好fputc這個(gè)函數(shù)后就可以在其他.c文件中使用printf()函數(shù)將數(shù)據(jù)打印到串口調(diào)試助手了。“1+X”傳感網(wǎng)應(yīng)用開發(fā)
USART數(shù)據(jù)接收USART:通用同步/異步收發(fā)器——串口全雙工異步通信可編程數(shù)據(jù)字長度8位/9位分?jǐn)?shù)波特率發(fā)生器系統(tǒng),最高達(dá)4.5Mbits/sLIN通信(局域互聯(lián)網(wǎng))STM32F1系列各個(gè)收發(fā)器外設(shè)的工作時(shí)鐘來源于不同的APB總線:USART1掛載在APB2總線上,最大頻率為72MHz;其他4個(gè)收發(fā)器則掛載在APB1總線上,最大頻率為36MHz。檢測標(biāo)志校驗(yàn)控制四個(gè)錯(cuò)誤檢測標(biāo)志10個(gè)帶標(biāo)志的中斷源概念主要特性外設(shè)時(shí)鐘來源標(biāo)志USART概述USART引腳及結(jié)構(gòu)USART結(jié)構(gòu)USART引腳數(shù)據(jù)格式數(shù)據(jù)格式應(yīng)與發(fā)送器配置的相同一個(gè)數(shù)據(jù)幀包括:1個(gè)起始位(低電平)8個(gè)數(shù)據(jù)位1個(gè)校驗(yàn)位1個(gè)停止位(高電平表示結(jié)束)數(shù)據(jù)接收過程開始通信,信號(hào)線為空閑,當(dāng)檢測到由1到0的跳變時(shí),開始對(duì)接收時(shí)鐘計(jì)數(shù);接收端檢測到起始位后,隔16個(gè)接收時(shí)鐘對(duì)輸入信號(hào)檢測一次,把對(duì)應(yīng)的值作為D0位數(shù)據(jù);
再隔16個(gè)接收時(shí)鐘,對(duì)輸入信號(hào)檢測一次,把對(duì)應(yīng)的值作為D1位數(shù)據(jù),直到全部數(shù)據(jù)位都輸入;
接收到規(guī)定的數(shù)據(jù)位個(gè)數(shù)和校驗(yàn)位之后,通信接口電路希望收到停止位(邏輯1),若此時(shí)未收到邏輯1,說明出現(xiàn)了錯(cuò)誤,在狀態(tài)寄存器中置“幀錯(cuò)誤”標(biāo)志;若沒有錯(cuò)誤,對(duì)全部數(shù)據(jù)位進(jìn)行奇偶校驗(yàn),無校驗(yàn)錯(cuò)時(shí),把數(shù)據(jù)位從移位寄存器中取出送至數(shù)據(jù)輸入寄存器,若校驗(yàn)錯(cuò),在狀態(tài)寄存器中置“奇偶錯(cuò)”標(biāo)志;
本幀信息全部接收完,把線路上出現(xiàn)的高電平置為空閑位;USART接收器特征描述
本任務(wù)要求設(shè)計(jì)一個(gè)LED流水燈系統(tǒng),該系統(tǒng)與上位機(jī)之間通過串行通信接口相連。上位機(jī)可發(fā)送命令對(duì)LED流水燈系統(tǒng)進(jìn)行控制,具體要求如下:系統(tǒng)中有8個(gè)LED燈,分別是LED1~LED8。系統(tǒng)上電時(shí),8個(gè)LED燈默認(rèn)為熄滅狀態(tài)。系統(tǒng)運(yùn)行時(shí),8個(gè)LED燈依次點(diǎn)亮。LED流水燈的工作模式有兩種:模式一:8個(gè)LED燈依次點(diǎn)亮,每個(gè)LED燈點(diǎn)亮1秒后熄滅,然后切換為另一個(gè),點(diǎn)亮順序?yàn)長ED0、LED1、……、LED7,并以此循環(huán)往復(fù);模式二:8個(gè)LED燈依次點(diǎn)亮,每個(gè)LED燈點(diǎn)亮1秒后熄滅,然后切換為另一個(gè),點(diǎn)亮順序?yàn)長ED7、LED6、……、LED0,并以此循環(huán)往復(fù)。上位機(jī)以串行通信的方式發(fā)送命令至該系統(tǒng)進(jìn)行LED流水燈工作模式的切換,命令“mode_1#”和“mode_2#”分別對(duì)應(yīng)模式一和模式二的控制,命令“stop#”控制LED流水燈停止運(yùn)行并全滅。案例任務(wù):串行通信控制LED燈應(yīng)用開發(fā)新建工程建立工程存放的文件夾新建STM32CubeMX工程010203選擇MCU型號(hào)04開始工程配置調(diào)試端口01PA13SWDIOPA14SWCLK配置LED的GPIO功能03LED0~LED7PE7~PE0配置MCU時(shí)鐘樹02HCLK72MHzPCLK136MHzPCLK172MHz配置USART外設(shè)工作參數(shù)04模式:異步波特率:115200Bits/s數(shù)據(jù)方向:接收與發(fā)送優(yōu)先級(jí):0配置保存STM32CubeMX工程生成初始代碼工程完善代碼01將USART發(fā)送函數(shù)重定向到print()函數(shù)02定義USART收發(fā)所需的變量03編寫USART接收中斷服務(wù)函數(shù)04編寫LED流水燈顯示程序05編寫main()函數(shù)完善代碼1xxx2xxx3xxx4xxx串口調(diào)試助手輸入模式命令模式1LED8—LED1依次點(diǎn)亮點(diǎn)亮?xí)r間:1s模式1LED1—LED8依次點(diǎn)亮點(diǎn)亮?xí)r間:1sStop模式LED停止運(yùn)行并全滅系統(tǒng)運(yùn)行結(jié)果謝謝!“1+X”傳感網(wǎng)應(yīng)用開發(fā)ADC原理與驅(qū)動(dòng)1什么是ADC什么是ADC?中文名:模/數(shù)轉(zhuǎn)換器。*是指將連續(xù)變化的模擬信號(hào)轉(zhuǎn)換為離散的數(shù)字信號(hào)的器件。*ADC在多個(gè)領(lǐng)域有著廣泛的應(yīng)用,利用各種傳感器,能將現(xiàn)實(shí)世界中的模擬量轉(zhuǎn)換為機(jī)器能夠識(shí)別的數(shù)字量,機(jī)器有了ADC,就像人有了各種感官,能夠感知周圍的世界并做出反應(yīng)。模擬信號(hào)ADC數(shù)字信號(hào)
A/D轉(zhuǎn)換器的主要類型01逐次比較型(STM32)02并行比較型03積分型04電容陣列逐次比較型05壓頻變換型06
調(diào)制型(
西格瑪,
德爾塔)優(yōu)點(diǎn)缺點(diǎn)速度較高、功耗低低精度價(jià)格便宜高精度價(jià)格貴轉(zhuǎn)換速率極高電路規(guī)模極大價(jià)格高高分辨率轉(zhuǎn)換速率極低成本低、精度高制作工藝復(fù)雜分辯率高、功耗低、價(jià)格低需要外部計(jì)數(shù)電路支持高分辨率轉(zhuǎn)換速率低
A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)01轉(zhuǎn)換范圍02分辨率03絕對(duì)精度04轉(zhuǎn)換時(shí)間A/D轉(zhuǎn)換器能夠轉(zhuǎn)換的模擬電壓范圍。(范圍)A/D轉(zhuǎn)換器的分辨率用輸出二進(jìn)制數(shù)的位數(shù)表示,位數(shù)越多,分辨率越高。(精度)絕對(duì)精度是指對(duì)應(yīng)一個(gè)給定數(shù)字量的理論模擬輸入與實(shí)際輸入之差。(誤差)轉(zhuǎn)換速度是指A/D轉(zhuǎn)換器完成一次轉(zhuǎn)換所需的時(shí)間。(時(shí)間)2STM32中的AD轉(zhuǎn)換模塊STM32中的AD模塊STM32擁有1~3個(gè)ADC:
*STM32F101/102系列只有1個(gè)ADC
*STM32F103系列最少都擁有2個(gè)ADC(STM32F103VET6有3個(gè)ADC)*這些ADC可以獨(dú)立使用,也可以使用雙重模
式(提高采樣率)。STM32的ADC是:
*12位逐次比較型的模擬數(shù)字轉(zhuǎn)換器。
*它有18個(gè)通道,可測量16個(gè)外部和2個(gè)內(nèi)部信號(hào)源
(溫度傳感器、內(nèi)部參考電壓)。STM32中AD模塊基本結(jié)構(gòu)原理知識(shí)點(diǎn)(3-轉(zhuǎn)換順序):多路輪詢轉(zhuǎn)換可設(shè)置為注入通道或規(guī)則通道。在規(guī)則通道輪詢的過程中,可以插入注入通道的轉(zhuǎn)換。(可觸發(fā)AD轉(zhuǎn)換標(biāo)志位)(外部電壓輸入引腳)(時(shí)鐘信號(hào))(存放轉(zhuǎn)換數(shù)據(jù))(產(chǎn)生中斷信號(hào))(注入通道規(guī)則通道)ADC的輸入通道通道號(hào)ADC1ADC2ADC3外部通道0PA0PA0PA0外部通道1PA1PA1PA1外部通道2PA2PA2PA2外部通道3PA3PA3PA3外部通道4PA4PA4PF6外部通道5PA5PA5PF7外部通道6PA6PA6PF8外部通道7PA7PA7PF9外部通道8PB0PB0PF10外部通道9PB1PB1PF3外部通道10PC0PC0PC0外部通道11PC1PC1PC1外部通道12PC2PC2PC2外部通道13PC3PC3PC3外部通道14PC4PC4PF4外部通道15PC5PC5PF5通道16(內(nèi)部)內(nèi)部VSS內(nèi)部VSS內(nèi)部VSS通道17(內(nèi)部)內(nèi)部參考電壓VREFINT內(nèi)部VSS內(nèi)部VSS單個(gè)ADC的輸入通道多達(dá)18個(gè),其中包括16個(gè)外部通道和2個(gè)內(nèi)部通道,16個(gè)外部通道分別連接著不同的GPIO口
ADC輸入電壓范圍的確定如上圖的標(biāo)號(hào)①處所示,ADC的輸入電壓VIN的范圍是:VREF-≤VIN≤VREF+,由圖中的VREF-、VREF+、VDDA和VSSA四個(gè)外部引腳的電壓決定。引腳名稱信號(hào)類型功能說明VREF+正模擬參考電壓輸入ADC高(正參考)電壓:1.8V≤VREF+
≤VDDAVDDA模擬電源輸入模擬電源電壓等于VDD全速運(yùn)行時(shí):2.4V≤VDDA
≤VDD(3.6V)
低速運(yùn)行時(shí):1.8V≤VDDA
≤VDD(3.6V)VREF-負(fù)模擬參考電壓輸入ADC低(負(fù)參考)電壓,VREF-=VSSAVSSA模擬電源接地輸入該引腳一般接地,電壓等于VSS當(dāng)沒有外接電路時(shí),最大允許電壓值為3.6V若輸入電壓值大于3.6V,則必須電壓輸入通道設(shè)計(jì)分壓電路根據(jù)基爾霍夫定律,節(jié)點(diǎn)流入的電流等于流出的電流:
由上式可以得出:如果此時(shí)ADC測的的Vout為3v,則實(shí)際的電壓是ADC
的中斷控制ADC轉(zhuǎn)換結(jié)束后,支持產(chǎn)生四種中斷:DMA溢出中斷、規(guī)則轉(zhuǎn)換結(jié)束中斷、注入轉(zhuǎn)換結(jié)束中斷和模擬看門狗事件中斷。01DMA溢出中斷02規(guī)則轉(zhuǎn)換結(jié)束中斷03注入轉(zhuǎn)換結(jié)束中斷04模擬看門狗中斷DMA溢出中斷可以把轉(zhuǎn)換好的數(shù)據(jù)直接轉(zhuǎn)存至內(nèi)存中,而不是先存在轉(zhuǎn)換寄存器在發(fā)往內(nèi)存。(提高效率,尤其適用于多路、多模式轉(zhuǎn)換)
規(guī)則轉(zhuǎn)換中斷可以把轉(zhuǎn)換好的數(shù)據(jù)放在規(guī)則轉(zhuǎn)換寄存器里,之后等待系統(tǒng)空閑時(shí)上報(bào)。
注入轉(zhuǎn)換中斷可以把轉(zhuǎn)換好的數(shù)據(jù)放在注入轉(zhuǎn)換寄存器里,之后等待系統(tǒng)空閑時(shí)上報(bào),優(yōu)先級(jí)比規(guī)則轉(zhuǎn)換高。用戶可以通過程序設(shè)定電壓觸發(fā)上限、下限,當(dāng)電壓值高于上限或者低于下限時(shí),觸發(fā)看門狗中斷。3STM32中ADC的基本參數(shù)(以下參數(shù)在CubeMX中會(huì)進(jìn)行設(shè)置)(1)ADC的工作模式ADC中每個(gè)通道的A/D轉(zhuǎn)換可以按照:
(1)
單通道(一個(gè)IO口輸入)、(2)多通道(多個(gè)IO掃描輸入)、(3)多通道+間斷,三種模式結(jié)合單次轉(zhuǎn)換、連續(xù)轉(zhuǎn)換,共計(jì)6種方式執(zhí)行。(2)ADC轉(zhuǎn)換結(jié)果的存儲(chǔ)方式
ADC的轉(zhuǎn)換結(jié)果可以左對(duì)齊或右對(duì)齊方式存儲(chǔ)在16位數(shù)據(jù)寄存器中:右對(duì)齊左對(duì)齊(3)AD通道的轉(zhuǎn)換時(shí)間
每個(gè)通道總的轉(zhuǎn)換時(shí)間=采樣時(shí)間
+轉(zhuǎn)換時(shí)間(1)采樣時(shí)間:通過設(shè)置CubeMX,軟件自動(dòng)設(shè)置采樣時(shí)間寄存器的值(3)AD通道的轉(zhuǎn)換時(shí)間
每個(gè)通道總的轉(zhuǎn)換時(shí)間=采樣時(shí)間
+轉(zhuǎn)換時(shí)間(2)轉(zhuǎn)換時(shí)間:AD轉(zhuǎn)換時(shí)間(12.5個(gè)周期)STM32的ADC最大的轉(zhuǎn)換速率為1Mhz,也就是轉(zhuǎn)換時(shí)間為1us(在ADCCLK=14M,采樣周期為1.5個(gè)ADC時(shí)鐘下得到),不要讓ADC的時(shí)鐘超過14M,否則將導(dǎo)致結(jié)果準(zhǔn)確度下降。(4)AD時(shí)鐘信號(hào)的獲取ADCCLK(ADC時(shí)鐘信號(hào),決定轉(zhuǎn)換時(shí)間)4
測試案例測試案例要求(1)ADC工作模式設(shè)置為獨(dú)立模式(2)使用PA1引腳作為ADC1的輸入端口(3)數(shù)據(jù)對(duì)齊方式為右對(duì)齊(4)使用使能規(guī)則轉(zhuǎn)換,觸發(fā)方式設(shè)置為軟件觸發(fā)
(調(diào)用轉(zhuǎn)換函數(shù)啟動(dòng)轉(zhuǎn)換,值存放在規(guī)則通道)(5)轉(zhuǎn)換次數(shù)設(shè)置為1,通道號(hào)設(shè)置為1通道(6)禁用多路掃描、禁用連續(xù)轉(zhuǎn)換、禁用非連續(xù)轉(zhuǎn)換(7)采樣時(shí)間設(shè)置為71.5個(gè)周期CubeMX設(shè)置CubeMX軟件設(shè)置核心代碼(1)ADC1初始化代碼(2)ADC1應(yīng)用代碼核心代碼就三句:
(1)開啟轉(zhuǎn)換(2)等待轉(zhuǎn)換(3)取轉(zhuǎn)換值
使用HAL庫函數(shù)實(shí)現(xiàn),需要熟記“1+X”傳感網(wǎng)應(yīng)用開發(fā)STM32
ADC數(shù)據(jù)采集HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1,100); adc_value=HAL_ADC_GetValue(&hadc1); voltage=(float)adc_value/4096*3.3; sprintf(voltString,"采集到的電壓值為:%.2fV",voltage); printf("%s\r\n",voltString); HAL_Delay(1000);“1+X”傳感網(wǎng)應(yīng)用開發(fā)定時(shí)器切換LED燈01項(xiàng)目場景概述02任務(wù)分析03任務(wù)實(shí)施目錄CONTENTS04任務(wù)總結(jié)1項(xiàng)目場景概述本項(xiàng)目要求使用STM32定時(shí)器設(shè)計(jì)一個(gè)切換LED流水燈系統(tǒng),具體要求如下:(1)系統(tǒng)中有8個(gè)LED燈,分別是LED1~LED8。系統(tǒng)上電時(shí),8個(gè)LED燈默認(rèn)為熄滅狀態(tài)。(2)通過STM32定時(shí)器使8個(gè)LED燈依次點(diǎn)亮,實(shí)現(xiàn)LED1點(diǎn)亮1秒后熄滅,然后LED2點(diǎn)亮1秒后熄滅……最后LED8點(diǎn)亮1秒后熄滅,并以此循環(huán)往復(fù)。2任務(wù)分析——流程分析GPIO工作模式開始LED燈配置定時(shí)器配置定時(shí)器中斷LED燈控制哪些GPIO口可配置LED燈功能?STM32定時(shí)器有哪些?區(qū)別?如何將定時(shí)器配置為1秒?如何配置定時(shí)器中斷處理函數(shù)?如何編寫LED燈輪流切換程序?2任務(wù)分析——知識(shí)點(diǎn)GPIO配置(LED配置):STM32F103VET6芯片共有5個(gè)GPIO外設(shè):GPIOA、GPIOB、GPIOC、GPIOD和GPIOE每個(gè)GPIO外設(shè)有16個(gè)引腳定義為PA0..PA15、PB0..PB15PE0~PE7可定義為LED燈功能引腳GPIO工作模式2
STM32F103VE型號(hào)MCU共有8個(gè)定時(shí)器,編號(hào)為TIM1~TIM8,其中包括2個(gè)高級(jí)控制定時(shí)器、4個(gè)通用定時(shí)器和2個(gè)基本定時(shí)器。定時(shí)器類型定時(shí)器編號(hào)計(jì)數(shù)器位數(shù)計(jì)數(shù)器類型捕獲/比較通道數(shù)掛載總線/接口時(shí)鐘定時(shí)器時(shí)鐘高級(jí)控制定時(shí)器TIM1、TIM816位遞增、遞減、遞增/遞減4APB2/72MHz72MHz通用定時(shí)器TIM2、TIM3TIM4、TIM516位遞增、遞減、遞增/遞減4APB1/36MHz72MHz基本定時(shí)器TIM6、TIM716位遞增無APB1/36MHz72MHz任務(wù)分析——知識(shí)點(diǎn)定時(shí)器:2任務(wù)分析——知識(shí)點(diǎn)定時(shí)器:基本定時(shí)器(TIM6)用于獨(dú)立時(shí)間計(jì)時(shí)功能,當(dāng)定時(shí)時(shí)間到時(shí),產(chǎn)生“定時(shí)器中斷”2任務(wù)分析——知識(shí)點(diǎn)定時(shí)器:定時(shí)器中斷間隔配置(難點(diǎn)):T(單位秒)=((重裝載值arr+1)*(預(yù)分頻系數(shù)psc+1))/系統(tǒng)時(shí)鐘頻率LED流水燈每隔1秒鐘切換一次顯示效果,使能TIM6的更新中斷,并將時(shí)間間隔配置為1秒鐘。(1)系統(tǒng)時(shí)鐘頻率為72M
72000000(2)預(yù)分頻系數(shù)psc設(shè)置
7199
(3)重裝載值arr設(shè)置
99991秒=((9999+1)*(7199+1))/720000003任務(wù)實(shí)施——關(guān)鍵步驟GPIO(LED燈)配置1、初始化GPIO引腳,GPIO初始化結(jié)構(gòu)體成員賦值,并調(diào)用HAL_GPIO_Init函數(shù)完成初始化配置;2、根據(jù)項(xiàng)目要求控制引腳輸出高低電平01GPIO配置相關(guān)的函數(shù)API主要位于“stm32f1xx_hal_gpio.c”和“stm32f1xx_hal_gpio.h”文件中3任務(wù)實(shí)施——關(guān)鍵步驟配置定時(shí)器(參數(shù))1、定時(shí)器初始化(MX_TIM6_Init函數(shù))2、配置預(yù)分頻系數(shù)、重裝載值023任務(wù)實(shí)施——關(guān)鍵步驟配置定時(shí)器(中斷)1、啟動(dòng)TIM6中斷HAL_TIM_Base_Start_IT(&htim6)2、添加中斷回調(diào)函數(shù)(HAL_TIM_PeriodElapsedCallback)3、編寫控制LED燈程序033任務(wù)實(shí)施——關(guān)鍵步驟完成主程序1、添加自定義變量和函數(shù)定義2、編寫main()函數(shù)的主循環(huán)程序3、編譯程序并下載M3模塊運(yùn)行044任務(wù)總結(jié)GPIO配置(LED燈配置):PE0~PE7定義為LED燈功能引腳GPIO工作模式定時(shí)器:定時(shí)器分類和功能定時(shí)器中斷配置(難點(diǎn))
T(單位秒)=((重裝載值arr+1)*(預(yù)分頻系數(shù)psc+1))/系統(tǒng)時(shí)鐘頻率
“1+X”傳感網(wǎng)應(yīng)用開發(fā)STM32基礎(chǔ)開發(fā)任務(wù)3:按鍵控制呼吸燈應(yīng)用開發(fā)0任務(wù)要求本任務(wù)要求設(shè)計(jì)一個(gè)可通過按鍵進(jìn)行控制的呼吸燈系統(tǒng),具體要求如下:使用外部中斷實(shí)現(xiàn)按鍵功能;LED燈的顯示效果為“逐漸變亮”然后“逐漸變暗”;系統(tǒng)剛上電時(shí),LED燈為關(guān)閉狀態(tài)。第奇數(shù)次按下按鍵,LED燈顯示呼吸燈效果;第偶數(shù)次按下按鍵,LED燈關(guān)閉,并以此循環(huán)往復(fù)。知識(shí)鏈接如何選擇呼吸燈的定時(shí)器0304開發(fā)流程演示02PWM01設(shè)計(jì)思路在傳統(tǒng)的模擬控制燈亮度調(diào)整中,可以采用一個(gè)可變電阻。調(diào)整電阻值變大或變?。涣鹘?jīng)這個(gè)電阻的電流也隨之增加或減少,從而改變了LED的電流值,使燈泡的亮度相應(yīng)變大或變小。01設(shè)計(jì)思路想一想,在中學(xué)物理課程中,調(diào)整燈泡的亮度,咱們怎么實(shí)現(xiàn)?盡管模擬控制看起來可能直觀而簡單,但它并不總是非常經(jīng)濟(jì)或可行的。(不適用我們STM32開發(fā)) 1.模擬電路容易隨時(shí)間漂移,因而難以調(diào)節(jié)。能夠解決這個(gè)問題的精密模擬電路可能非常龐大、笨重(如老式的家庭立體聲設(shè)備)和昂貴。 2.模擬電路還有可能嚴(yán)重發(fā)熱,其功耗相對(duì)于工作元件兩端電壓與電流的乘積成正比。 3.模擬電路還可能對(duì)噪聲很敏感,任何擾動(dòng)或噪聲都肯定會(huì)改變電流值的大小。?在STM32的開發(fā)中,我們怎么辦?作答正常使用主觀題需2.0以上版本雨課堂主觀題10分LED的發(fā)光強(qiáng)度基本上正比于通過LED器件的電流,這說明脈沖電流的平均電流與直流電流相同的條件下,LED的發(fā)光亮度一樣。數(shù)字電路調(diào)光是基于人眼對(duì)亮度閃爍不夠敏感的特性,使負(fù)載LED時(shí)亮?xí)r暗,如果亮暗的頻率超過100Hz,人眼看到的就是平均亮度,而不是LED的閃爍(逐漸)。
天下武功,無堅(jiān)不破,唯快不破!01設(shè)計(jì)思路調(diào)整亮的時(shí)間比例實(shí)現(xiàn)燈亮度的逐步控制
PWM是PulseWidthModulation的縮寫,中文意思就是脈沖寬度調(diào)制,簡稱脈寬調(diào)制。它是利用微處理器的數(shù)字輸出來對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù),其控制簡單、靈活和動(dòng)態(tài)響應(yīng)好等優(yōu)點(diǎn)而成為電力電子技術(shù)最廣泛應(yīng)用的控制方式,其應(yīng)用領(lǐng)域包括測量,通信,功率控制與變換,電動(dòng)機(jī)控制、伺服控制、調(diào)光、開關(guān)電源,甚至某些音頻放大器,因此學(xué)習(xí)PWM具有十分重要的現(xiàn)實(shí)意義。02PWM這里面的脈沖寬度即在一個(gè)周期內(nèi)輸出有效電平(亮)的時(shí)間,也叫占空比。聯(lián)想同學(xué)們拔涼拔涼的期末考試,上學(xué)期一共有10門課,小明就過了3門(有效電平),所以,上學(xué)期小明的占空比就是:有效/總數(shù)=30%。(傳說中的涼涼)用PWM技術(shù)實(shí)現(xiàn)模擬信號(hào):若調(diào)制信號(hào)的頻率遠(yuǎn)遠(yuǎn)大于信號(hào)接受者的分辨率,則接收者并不能感知數(shù)字信號(hào)的0和1,它獲得的是信號(hào)的平均效果,平均值與占空比成有關(guān)(正比關(guān)系)。
PWM采用調(diào)整脈沖占空比的方式達(dá)到調(diào)整電壓與電流的效果。如:在1ms內(nèi),高電平占0.3ms,低電平占0.7ms。則LED燈通電0.3ms,斷電0.7ms,這樣的脈沖占空比為30%。原理視覺看上去是什么感覺?1ms內(nèi),這個(gè)燈的亮度是30%。PWM工作模式PWM輸出比較模式總共有8種常用的是以下兩種:PWM信號(hào)的生成樣式與計(jì)數(shù)器寄存器(TIMx_CNT)、自動(dòng)重載寄存器(TIMx_ARR)以及捕獲/比較寄存器(TIMx_CCRy)有關(guān)。02PWM1模式的信號(hào)聯(lián)想“第25回偷骨殖何九送喪,供人頭武二設(shè)祭”。CCR就是武大,CNT是武二,ARR是西門。武二比武大個(gè)頭低的時(shí)候是哥哥照顧弟弟(輸出有效),武二慢慢長大了從和武大一邊高開始,弟弟照顧哥哥(輸出無效),后來武二長得更大了和西門一般高就干掉了西門(從新開始計(jì)數(shù))。另要是武大本來就比西門高,金蓮也就不用手抖了,也就無此回合了。(不能產(chǎn)生脈沖)02PWM2模式的信號(hào)PWM信號(hào)的生成樣式與計(jì)數(shù)器寄存器(TIMx_CNT)、自動(dòng)重載寄存器(TIMx_ARR)以及捕獲/比較寄存器(TIMx_CCRy)有關(guān)。PWM占空比調(diào)節(jié)圖PWM輸出頻率是不變的(每學(xué)期就是那么幾門課),改變的是CCR寄存器內(nèi)的值(通過的課程占總課程門數(shù)的比值),此值的改變將導(dǎo)致PWM輸出信號(hào)占空比的改變(回家過年還是在學(xué)校自習(xí))。脈沖調(diào)寬信號(hào)的形成電路有3種:1)可用電壓-脈寬變換器產(chǎn)生,即硬件產(chǎn)生脈寬調(diào)制信號(hào);2)由軟件定時(shí)產(chǎn)生,由定時(shí)器定時(shí),定時(shí)時(shí)間受軟件控制,并從脈寬信號(hào)的口輸出脈寬可調(diào)信號(hào);3)由單片機(jī)控制外接定時(shí)/計(jì)數(shù)器硬件電路產(chǎn)生脈寬調(diào)制信號(hào)。
STM32F103VE型號(hào)MCU共有8個(gè)定時(shí)器,編號(hào)為TIM1~TIM8,其中包括2個(gè)高級(jí)控制定時(shí)器、4個(gè)通用定時(shí)器和2個(gè)基本定時(shí)器。通用和高級(jí)定時(shí)器都有一個(gè)16位的自動(dòng)加載遞加/遞減計(jì)數(shù)器、一個(gè)16位的預(yù)分頻器和4個(gè)獨(dú)立的通道,每個(gè)通道都可用于輸入捕獲、輸出比較、PWM和單脈沖模式輸出。定時(shí)器類型定時(shí)器編號(hào)計(jì)數(shù)器位數(shù)計(jì)數(shù)器類型捕獲/比較通道數(shù)掛載總線/接口時(shí)鐘定時(shí)器時(shí)鐘高級(jí)控制定時(shí)器TIM1、TIM816位遞增、遞減、遞增/遞減4APB2/72MHz72MHz通用定時(shí)器TIM2、TIM3TIM4、TIM516位遞增、遞減、遞增/遞減4APB1/36MHz72MHz基本定時(shí)器TIM6、TIM716位遞增無APB1/36MHz72MHz03STMF103VE中的通用定時(shí)器01通用/高級(jí)定時(shí)器的3種模式用于測量波形的頻率和寬度脈寬調(diào)制器,產(chǎn)生固定頻率但占空比可調(diào)的脈沖波形比較兩組輸入電壓的大小產(chǎn)生可調(diào)頻率且占空比可調(diào)的脈沖波形01捕獲器:測帶寬測頻率捕獲器用來捕獲輸入接口的電平變化(上升沿或下降沿)可測量脈沖的寬度,或者測量脈沖頻率。當(dāng)接口產(chǎn)生上升沿或下降沿時(shí),將當(dāng)前定時(shí)器值保存。01輸出比較器輸出比較器可輸出脈沖,可隨時(shí)調(diào)占空比和頻率。輸出比較器主要用于步進(jìn)電機(jī)、伺服電機(jī)的控制。(PWM只能調(diào)占空比,也是可以通過程序調(diào)頻率,但不方便隨時(shí)調(diào))Up:向上計(jì)數(shù)(累加)Down:向下計(jì)數(shù)(遞減)CenterAligned1:中央對(duì)齊模式1計(jì)數(shù)器交替地向上和向下計(jì)數(shù)。輸出比較中斷標(biāo)志位,只在計(jì)數(shù)器向下計(jì)數(shù)時(shí)置位。CenterAligned2:中央對(duì)齊模式2計(jì)數(shù)器交替地向上和向下計(jì)數(shù)。輸出比較中斷標(biāo)志位,只在計(jì)數(shù)器向上計(jì)數(shù)時(shí)置位。CenterAligned3:中央對(duì)齊模式3計(jì)數(shù)器交替地向上和向下計(jì)數(shù)。輸出比較中斷標(biāo)志位,在計(jì)數(shù)器向下和向上計(jì)數(shù)時(shí)均置位。01定時(shí)器計(jì)數(shù)模式04如何選擇呼吸燈的定時(shí)器02CubeMX中定時(shí)器設(shè)置輸出PWM詳見tim.c預(yù)分頻:劉易斯100M跑太快了,改成110M跨欄劉翔就贏了。自動(dòng)裝載ARR:西門大官人設(shè)置多高呢?為什么不能是72?100?(凡事不可太盡,凡事太盡則緣分必定早盡。做人留一線,日后好相見。)請自行測試。__HAL_TIM_SET_COMPARE(&htim4,TIM_CHANNEL_3,pwm_value)定時(shí)器4通道三占空比值(燈的亮度值)核心代碼-燈亮度無符號(hào)整型if(pwm_value==0){ pwm_mode=count_up;}elseif(pwm_value==50){ pwm_mode=count_down;}if(pwm_mode==count_up){ pwm_value++;} if(pwm_mode==count_down){pwm_value--;} 核心代碼-呼吸效應(yīng)吸氣呼氣變亮變暗變化范圍是?為什么不是50-100?作業(yè):請將程序進(jìn)行調(diào)整,讓PWM工作在PWM2模式,實(shí)現(xiàn)呼吸燈效果。提交辦法:1.請將工程文件壓縮,重命名為:班級(jí)+學(xué)號(hào)+姓名。2.同時(shí)提交代碼文字說明及試驗(yàn)結(jié)果現(xiàn)象截圖。
3.發(fā)送到530005375@評(píng)分辦法:1.代碼完整可行,工程能正常運(yùn)行得90分。2.說明清楚明白,注釋清晰,加10分。3.兩人以上相同,每多一人扣3分。4.其他視完成情況酌情給分。不高于65分。01定時(shí)器IO口初始化,設(shè)置為復(fù)用推挽輸出模式(tim.c)0304定時(shí)器初始化和設(shè)置PWM輸出模式05在主函數(shù)調(diào)用函數(shù)啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器輸出PWM06處理中斷回調(diào)函數(shù)404呼吸燈編程流程分析01處理按鍵中斷(gpio.c)0102“1+X”傳感網(wǎng)應(yīng)用開發(fā)
RS232標(biāo)準(zhǔn)原理與驅(qū)動(dòng)程序01RS-232標(biāo)準(zhǔn)基礎(chǔ)知識(shí)02目錄CONTENTS
RS232基本工作原理03串口通信程序開發(fā)235計(jì)算機(jī)及微控器RS232接口圖片
236一、RS-232標(biāo)準(zhǔn)簡介美國電子工業(yè)聯(lián)合會(huì)(EIA)與BELL等公司于1962年發(fā)布RS-232C標(biāo)準(zhǔn)(協(xié)議)的全稱是EIA-RS-232C標(biāo)準(zhǔn),其中EIA代表美國電子工業(yè)協(xié)會(huì),RS代表推薦標(biāo)準(zhǔn),232是標(biāo)識(shí)號(hào),C代表RS232的最新一次修改(1969),在這之前,有RS232B、RS232A。它規(guī)定連接電纜和機(jī)械、電氣特性、信號(hào)功能及傳送過程。它適合于數(shù)據(jù)傳輸速率在0~19200b/s范圍內(nèi)的通信。RS232協(xié)議電氣特性EIA-RS-232C對(duì)電氣特性、邏輯電平和各種信號(hào)線功能都作了規(guī)定在TXD和RXD數(shù)據(jù)線上:邏輯1表示電壓范圍為-3V至-15V邏輯0表示電壓范圍為+3V至+15V在RTS、CTS、DSR、DTR和DCD等控制線上:
信號(hào)有效表示電壓范圍為+3V至+15V
信號(hào)無效表示電壓范圍為-3V至-15VRS232協(xié)議機(jī)械特性由于RS-232C并未定義連接器的物理特性,因此,出現(xiàn)了DB-25、DB-15和DB-9各種類型的連接器,其引腳的定義也各不相同。常用的是DB-25和DB-9兩種連接器:DB-9信號(hào)腳說明常用信號(hào)介紹1.控制信號(hào)線(DSR、DTR、RTS、CTS、DCD、RI):DSR:Datasetready,數(shù)據(jù)裝置準(zhǔn)備好,表示MODEM處于可以使用的狀態(tài)DTR:DataTerminalready,數(shù)據(jù)終端準(zhǔn)備好,表示數(shù)據(jù)終端可以使用RTS:Requesttosend,請求發(fā)送,用來表示DTE請求DCE發(fā)送數(shù)據(jù),即當(dāng)終端要發(fā)送數(shù)據(jù)時(shí),使該信號(hào)有效(ON狀態(tài)),向MODEM請求發(fā)送。它用來控制MODEM是否要進(jìn)入發(fā)送狀態(tài)。CTS:Cleartosend,允許發(fā)送,用來表示DCE準(zhǔn)備好接收DTE發(fā)來的數(shù)據(jù),是對(duì)請求發(fā)送信號(hào)RTS的響應(yīng)信號(hào)。當(dāng)MODEM已準(zhǔn)備好接收終端傳來的數(shù)據(jù),并向前發(fā)送時(shí),使該信號(hào)有效,通知終端開始沿發(fā)送數(shù)據(jù)線TxD發(fā)送數(shù)據(jù)。DCD:DataCarrierdectection,接收線信號(hào)檢出,用來表示DCE已接通通信鏈路,告知DTE準(zhǔn)備接收數(shù)據(jù)。當(dāng)本地的MODEM收到由通信鏈路另一端(遠(yuǎn)地)的MODEM送來的載波信號(hào)時(shí),使RLSD信號(hào)有效,通知終端準(zhǔn)備接收,并且由MODEM將接收下來的載波信號(hào)解調(diào)成數(shù)字兩數(shù)據(jù)后,沿接收數(shù)據(jù)線RxD送到終端。RI:振鈴指示,當(dāng)MODEM收到交換臺(tái)送來的振鈴呼叫信號(hào)時(shí),使該信號(hào)有效(ON狀態(tài)),通知終端,已被呼叫。2數(shù)據(jù)發(fā)送與接收TxD:Transmitteddata,發(fā)送數(shù)據(jù),通過TxD終端將串行數(shù)據(jù)發(fā)送到MODEM,(DTE→DCE)。RxD:Receiveddata,接收數(shù)據(jù),通過RxD線終端接收從MODEM發(fā)來的串行數(shù)據(jù),(DCE→DTE)。3地線GND串行通信:數(shù)據(jù)按位發(fā)送,數(shù)據(jù)位表示0或1并行通信:數(shù)據(jù)按字節(jié)發(fā)送。1RS-232標(biāo)準(zhǔn)基本術(shù)語單工方式半雙工方式全雙工方式通信方式波特率:單位時(shí)間內(nèi)傳送的二進(jìn)制數(shù)據(jù)的位數(shù),以位/秒(b/s)表示,也稱為數(shù)據(jù)位率;數(shù)據(jù)位:實(shí)際數(shù)據(jù)位的值,一般為5、7、8校驗(yàn)位:在數(shù)據(jù)位后,起到糾錯(cuò)的作用,有None/Even/Odd/Mark/Space幾種;停止位:表示數(shù)據(jù)傳輸完成,長度為1、1.5、2;247二、RS232基本工作原理串口按位發(fā)送和接收字節(jié),使用三根線完成:地線、發(fā)送、接收使用一根數(shù)據(jù)線發(fā)送數(shù)據(jù)的同時(shí),用另一根數(shù)據(jù)線接收數(shù)據(jù),從而實(shí)現(xiàn)遠(yuǎn)距離通信,其他的線用于握手。三、串口通信程序開發(fā)1、串口通信初始化:系統(tǒng)時(shí)鐘、要開放的IO口和各種寄存器的初始化配置IO口初始化,包括引腳,速率,輸入輸出模式等。配置USART的波特率,數(shù)據(jù)位等。啟動(dòng)串口通信2、在主函數(shù)中開啟打開串口接受中斷使能,如果串口有數(shù)據(jù)傳輸,會(huì)自動(dòng)觸發(fā)中斷處理函數(shù)處理中斷,中斷處理函數(shù)會(huì)將接收的完整的一幀數(shù)據(jù)放入緩沖區(qū)等待發(fā)送,重復(fù)操作,就可以完整的接收一幀一幀的數(shù)據(jù)3、串口發(fā)送和接收數(shù)據(jù)。在串口處理程序中調(diào)用串口發(fā)送和接收函數(shù)
voidMX_USART1_UART_Init(void){huart1.Instance=USART1;//串口號(hào)huart1.Init.BaudRate=115200;//波特率huart1.Init.WordLength=UART_WORDLENGTH_8B;//發(fā)送數(shù)據(jù)字長huart1.Init.StopBits=UART_STOPBITS_1;//停止位huart1.Init.Parity=UART_PARITY_NONE;//奇偶校驗(yàn)位huart1.Init.Mode=UART_MODE_TX_RX;//工作模式huart1.Init.HwFlowCtl=UART_HWCONTROL_NONE;//流量控制huart1.Init.OverSampling=UART_OVERSAMPLING_16;//過采樣1、在主函數(shù)中調(diào)用串口初始化函數(shù)(設(shè)置串口參數(shù),并且判斷串口初始化是否成功)
if(HAL_UART_Init(&huart1)!=HAL_OK)判斷串口初始化是否成功{Error_Handler();}}2、在主函數(shù)中開啟串口接受中斷使能,串口有數(shù)據(jù)傳輸,會(huì)自動(dòng)觸發(fā)中斷處理函數(shù)__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);//開啟串口接受中斷使能&huart1:串口號(hào)USART_IT_RXNE為接收中斷標(biāo)志位,0為打開,1為關(guān)閉voidUSER_UART_IRQHandler(){if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_RXNE)!=RESET)//判斷1幀數(shù)據(jù)是否發(fā)送完畢 { __HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);//打開空閑幀中斷 uart1RxBuff[uart1RxCounter]=(uint8_t)(huart1.Instance->DR&(uint8_t)0x00ff);//接收到的數(shù)據(jù)轉(zhuǎn)存到緩沖區(qū) uart1RxCounter++;//指針下移至下一個(gè)要接收的數(shù)據(jù) __HAL_UART_CLEAR_FLAG(&huart1,UART_FLAG_RXNE);//清除接收中斷標(biāo)識(shí)位 }if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE)!=RESET)//監(jiān)控總線是否空閑 { __HAL_UART_DISABLE_IT(&huart1,UART_IT_IDLE);//關(guān)閉空閑幀中斷 uart1RxState=1;//接收完1幀的數(shù)據(jù),修改發(fā)送標(biāo)識(shí)位,可以發(fā)送了 }}中斷處理函數(shù)USER_UART_IRQHandler()
3、串口發(fā)送和接收數(shù)據(jù)。在串口處理程序中調(diào)用串口發(fā)送和接收函數(shù)HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,0xffff);//把ch紙箱的內(nèi)容通過uart1發(fā)送出去,長度是1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 拆建房協(xié)議書范本
- 場地合作協(xié)議合同
- 2025年二次開發(fā)廢棄物資源化項(xiàng)目可行性研究報(bào)告
- 2025年家庭智能健身器材開發(fā)可行性研究報(bào)告
- 2025年城市文化活動(dòng)廣場建設(shè)可行性研究報(bào)告
- 2025年無人機(jī)物流配送系統(tǒng)構(gòu)建可行性研究報(bào)告
- 2025年清潔水源保障系統(tǒng)建設(shè)項(xiàng)目可行性研究報(bào)告
- 2025年城市再生水利用設(shè)施項(xiàng)目可行性研究報(bào)告
- 2025年天氣預(yù)報(bào)精準(zhǔn)化服務(wù)項(xiàng)目可行性研究報(bào)告
- 2025年數(shù)字貨幣支付體系構(gòu)建項(xiàng)目可行性研究報(bào)告
- 2026年元旦校長致辭:騏驥馳騁啟新程智育賦能向未來
- 2025國家統(tǒng)計(jì)局齊齊哈爾調(diào)查隊(duì)招聘公益性崗位5人筆試考試備考試題及答案解析
- 看管牛羊合同范本
- 2025上海崇明區(qū)事務(wù)性輔助人員招聘7人筆試備考題庫帶答案解析
- 2025年東營市總工會(huì)公開招聘工會(huì)社會(huì)工作者(25人)筆試考試備考題庫及答案解析
- 污水處理廠設(shè)備更新項(xiàng)目社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估報(bào)告
- 全國人大機(jī)關(guān)直屬事業(yè)單位2026年度公開招聘工作人員考試模擬卷附答案解析
- 人社局公益性崗位筆試題目及答案
- 2026全國人大機(jī)關(guān)直屬事業(yè)單位招聘50人筆試考試備考題庫及答案解析
- 2026年煙花爆竹經(jīng)營單位主要負(fù)責(zé)人證考試題庫及答案
- 2025秋統(tǒng)編語文八年級(jí)上冊14.3《使至塞上》課件(核心素養(yǎng))
評(píng)論
0/150
提交評(píng)論