




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
“1+X”傳感網(wǎng)應(yīng)用開發(fā)STM32基礎(chǔ)開發(fā)考核規(guī)則0102本次講師等級分金牌講師、銀牌講師、講師三個(gè)等級。各等級講師的百分占比為20%、40%、40%03講師的評比規(guī)則采用現(xiàn)場評分方式:平時(shí)操作占40%綜合評比占20%29號考試成績占40%04平時(shí)操作和綜合評比由各組對應(yīng)的助教負(fù)責(zé)本次培訓(xùn)的目的是為1+x傳感網(wǎng)應(yīng)用開發(fā)后續(xù)培訓(xùn)工作的開展挑選技術(shù)過硬的講師承擔(dān)培訓(xùn)工作。01STM32基礎(chǔ)知識02開發(fā)環(huán)境的搭建與工程的建立03LED流水燈應(yīng)用開發(fā)目錄CONTENTS04按鍵控制呼吸燈應(yīng)用開發(fā)05串行通信控制LED燈應(yīng)用開發(fā)06電池電量監(jiān)測應(yīng)用開發(fā)1STM32基礎(chǔ)知識知識鏈接01ARM介紹02STM32介紹什么是ARM?01ARM公司于1990年在英國成立,是全球領(lǐng)先的半導(dǎo)體知識產(chǎn)權(quán)提供商,不制造芯片,不向終端用戶出售芯片,而是通過轉(zhuǎn)讓設(shè)計(jì)方案,由合作伙伴生產(chǎn)出各具特色的芯片。2016年7月18日,日本軟銀集團(tuán)以約合2135億元人民幣的價(jià)格宣布收購ARM。Cortex-A系列-開放式操作系統(tǒng)的高性能處理器:智能手機(jī)智能本和上網(wǎng)本電子書閱讀器數(shù)字電視家用網(wǎng)關(guān)Cortex-M系列-面向具有確定性的微控制器應(yīng)用的成本敏感型解決方案微控制器混合信號設(shè)備智能傳感器汽車電子和氣囊Cortex-R系列-面向?qū)崟r(shí)應(yīng)用的卓越性能汽車制動(dòng)系統(tǒng)動(dòng)力傳動(dòng)解決方案大容量存儲控制器網(wǎng)絡(luò)和打印01常見的ARM處理器生產(chǎn)商及產(chǎn)品ARM只提供技術(shù),芯片由對應(yīng)的廠商生產(chǎn)01STM32是意法半導(dǎo)體(STMicroelectronics,簡稱ST)有限公司出品的一系列微控制器(MicroControllerUnit,簡稱MCU)的統(tǒng)稱。STM3232是指數(shù)據(jù)總線是32位的,一次性可以傳輸32位的數(shù)據(jù)。02STM32F10X系列02STM32微控制器的命名規(guī)則02STM32F103VET6含義02STM32F103VET6引腳示意圖022開發(fā)環(huán)境的搭建與工程的建立任務(wù)要求
本任務(wù)要求搭建基于STM32CubeMX工具和HAL庫的STM32微控制器的開發(fā)環(huán)境,生成可在MDK-ARM集成開發(fā)環(huán)境下運(yùn)行的工程。正確地配置、編譯工程后,將其下載至開發(fā)板中運(yùn)行。知識鏈接01STM32軟件開發(fā)模式02STM32CubeMX03HAL庫04MDK-ARM的安裝開發(fā)流程演示061STM32軟件開發(fā)的各種模式010203寄存器開發(fā)標(biāo)準(zhǔn)庫開發(fā)HAL/LL庫+
STM32CubeMX01STM32CubeMX是ST意法半導(dǎo)體近幾年來大力推薦的STM32芯片圖形化配置工具,允許用戶使用圖形化向?qū)蒀初始化代碼,可以大大減輕開發(fā)工作、時(shí)間和費(fèi)用。STM32CubeMX幾乎覆蓋了STM32全系列芯片GPIOB->BSRR=0x0001;GPIO_SetBits(GPIOB,GPIO_Pin_0);實(shí)現(xiàn)PB0輸出高電平編程:HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);02STM32CubeMX可以直觀的選擇STM32微控制器、配置微控制器、自動(dòng)處理引腳沖突、動(dòng)態(tài)設(shè)置確定時(shí)鐘樹、動(dòng)態(tài)確定參數(shù)設(shè)置的外圍和中間件模式和初始化。CubeMX生成的代碼可以在KEIL、IAR、GCC等編程軟件上面使用。簡單理解,就是CubeMX軟件是一個(gè)工具軟件,我們只要在上面簡單的點(diǎn)點(diǎn)點(diǎn)就可以生成STM32功能代碼工程,這個(gè)代碼工程已經(jīng)包括了必要的外設(shè)初始化程序,這樣節(jié)省我們的工作量,我們的工作重點(diǎn)放在項(xiàng)目任務(wù)的實(shí)現(xiàn)HAL庫:HAL的全稱是:HardwareAbstractionLayer(硬件抽象層),它的存在是為了確保STM32系列最大的移植性。HAL位于操作系統(tǒng)內(nèi)核與硬件電路之間的接口層,其目的在于將硬件抽象化。與STM32CubeMX配合使用,ST官方便推出了一個(gè)新的函數(shù)庫,因?yàn)楹虷AL息息相關(guān),在這里,我們便稱為HAL庫。HAL庫是一個(gè)由ST官方基于硬件抽象層而設(shè)計(jì)的軟件函數(shù)包,它由程序、數(shù)據(jù)結(jié)構(gòu)和宏組成,包括了微控制器所有外設(shè)的性能特征。該函數(shù)庫還包括每一個(gè)外設(shè)的驅(qū)動(dòng)描述和應(yīng)用實(shí)例,為開發(fā)者訪問底層硬件提供了一個(gè)中間API,通過使用HAL庫,無需深入掌握底層硬件細(xì)節(jié),開發(fā)者就可以輕松應(yīng)用每一個(gè)外設(shè)。0304MDK-ARM的安裝:STM32CubeMX軟件是用于生成基于HAL庫的工程代碼,而實(shí)際上STM32程序編寫和調(diào)試我們一般都是使用Keil
或者IAR軟件,所以安裝CubeMX
軟件之前請大家先安裝STM32開發(fā)工具。01KeilMDK-ARM安裝02安裝KeilPackMDK-ARM安裝04Keil公司是一家微控制器(MCU)軟件開發(fā)工具的供應(yīng)商,在2005年被ARM公司收購。通過這次收購,Keil公司開始向32位微控制器市場提供完整的解決方案,Keil推出了μVision界面,用于調(diào)試ARM7,ARM9,Cortex-M內(nèi)核的MDK-ARM開發(fā)工具。MDK-ARM軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設(shè)備提供了一個(gè)完整的開發(fā)環(huán)境。
Keil
Pack安裝安裝了KeilMDK-ARM,只是提供了Toolchain(工具鏈)和IDE。針對不同的Cortex-M類型,還需要安裝相應(yīng)的庫,這就是KeilPack包。04101安裝JDK8或以上02安裝STM32CubeMX任務(wù)實(shí)施03
安裝MCU軟件包04ST-Link驅(qū)動(dòng)程序的安裝使用STM32CubeMX和KeilMDK-ARM開發(fā)嵌入式應(yīng)用的流程1、
選擇MCU的型號,如STM32L151C8T6D,CubeMX顯示所選的MUC的封裝圖。2、根據(jù)設(shè)備的硬件原理圖和設(shè)計(jì)說明,自CubeMX中對GPIO管腳、時(shí)鐘、中斷、DMA、SPI、USART、I2C等進(jìn)行配置。3、設(shè)置生成工程文件所用的開發(fā)工具,在這里我們選擇MDK-ARMV5。4、在生成工程文件時(shí),CubeMX會根據(jù)我們的設(shè)置自動(dòng)生成對應(yīng)開發(fā)工具的工程文件。06201建立工程存放的文件夾新建STM32CubeMX工程0203配置GPIO功能配置調(diào)試端口0405配置MCU時(shí)鐘樹06保存STM32CubeMX工程07生成C代碼初始工程開發(fā)流程演示063LED流水燈應(yīng)用開發(fā)任務(wù)要求本任務(wù)要求設(shè)計(jì)一個(gè)LED流水燈系統(tǒng),具體要求如下:系統(tǒng)中有8個(gè)LED燈,分別是LED1~LED8。系統(tǒng)上電時(shí),8個(gè)LED燈默認(rèn)為熄滅狀態(tài)。接下來8個(gè)LED燈依次點(diǎn)亮,即:LED1點(diǎn)亮1秒后熄滅,然后LED2點(diǎn)亮1秒后熄滅……最后LED8點(diǎn)亮1秒后熄滅,并以此循環(huán)往復(fù)。知識鏈接01GPIO口配置02外部中斷原理03定時(shí)器原理04開發(fā)流程演示GPIO介紹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è)置為輸入功能,用于讀取按鍵等輸入信號。很多高級外設(shè)也有功能引腳,并且是與GPIO共用的,具體引腳功能可以通過軟件編程設(shè)置對應(yīng)的寄存器內(nèi)容實(shí)現(xiàn)。01GPIO配置01GPIO工作模式01GPIO編程流程分析1、使能GPIO端口時(shí)鐘;2、初始化GPIO引腳,即為GPIO初始化結(jié)構(gòu)體成員賦值,并調(diào)用HAL_GPIO_Init函數(shù)完成初始化配置;3、根據(jù)項(xiàng)目要求控制引腳輸出高低電平0102外部中斷原理中斷是指一個(gè)突發(fā)事件,中止了CPU當(dāng)前的工作,轉(zhuǎn)而先去處理突發(fā)事件,處理完成后再回到當(dāng)前的工作繼續(xù)執(zhí)行。STM32允許多種多樣的中斷,如外部IO、ADC、USART、l2C等。02外部中斷/事件控制器(EXIT)(詳見STM32地03參考手冊第9章)外部中斷/事件控制器(EXIT)的功能分兩個(gè)部分:一個(gè)是產(chǎn)生中斷,另一個(gè)是產(chǎn)生事件。EXIT有19個(gè)邊沿檢測器,用于產(chǎn)生中斷/事件請求。STM32F1的每個(gè)GPIO引腳都可以作為外部中斷的中斷輸入口。STM32F1系列微控制器供GPIO引腳使用的中斷線有16條。多達(dá)80個(gè)通用I/O口連接到16個(gè)外部中斷線。19個(gè)中斷/事件請求包括:IO可以做為EXTI0-EXTI15線EXTI線16連接到PVD輸出EXTI線17連接到RTC警告事件EXTI線18連接到USB喚醒事件后三個(gè)屬于事件請求。02外部中斷/事件線路映射GPIO引腳中斷標(biāo)志位中斷處理函數(shù)PA0-PG0EXTI0EXTI0_IRQHandlerPA1-PG1EXTI1EXTI1_IRQHandlerPA2-PG2EXTI2EXTI2_IRQHandlerPA3-PG3EXTI3EXTI3_IRQHandlerPA4-PG4EXTI4EXTI4_IRQHandlerPA5-PG5…….PA9-PG9EXTI5……EXTI9EXTI9_5_IRQHandlerPA10-PG10…….PA15-PG15EXTI10……EXTI15EXTI5_10_IRQHandler02上升沿、下降沿與高低電平觸發(fā)STM32F1系列支持將所有GPIO設(shè)置為中斷輸入。外部IO可由上升沿、下降沿、高低電平的三種方式觸發(fā)??蛇x擇中斷或事件觸發(fā)。02中斷與事件02嵌套向量中斷控制器NVIC68個(gè)可屏蔽中斷通道(不包含16個(gè)Cortex?-M3的中斷線);●16個(gè)可編程的優(yōu)先等級(使用了4位中斷優(yōu)先級);●低延遲的異常和中斷處理;●電源管理控制;●系統(tǒng)控制寄存器的實(shí)現(xiàn);嵌套向量中斷控制器(NVIC)和處理器核的接口緊密相連,可以實(shí)現(xiàn)低延遲的中斷處理和高效地處理晚到的中斷。嵌套向量中斷控制器管理著包括內(nèi)核異常等中斷。NVIC把外部的中斷信號關(guān)聯(lián)到單片機(jī)內(nèi)核中,對各種中斷進(jìn)行分類,按先后順序發(fā)送給內(nèi)核,讓內(nèi)核處理對應(yīng)的中斷。更多信息請參看STM32F103數(shù)據(jù)手冊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)生中斷。02NVIC中斷嵌套02搶占優(yōu)先級與響應(yīng)優(yōu)先級在嵌套時(shí),搶占優(yōu)先級較高的可以在較低的中斷內(nèi)嵌套中斷。同一搶占優(yōu)先級不能嵌套,必須前一個(gè)中斷處理完成才能進(jìn)入下一個(gè)。不同搶占優(yōu)先級下,響應(yīng)優(yōu)先級沒有意義。同一搶占優(yōu)先級的中斷同時(shí)產(chǎn)生時(shí),響應(yīng)優(yōu)先級較高的先處理。同一搶占優(yōu)先級不能嵌套。搶占優(yōu)先級:又稱主優(yōu)先級響應(yīng)優(yōu)先級:又稱子優(yōu)先級STM32F103系列數(shù)據(jù)手冊9.1.2中斷與異常向量中列表說明了不同中斷的優(yōu)先級02設(shè)置中斷1的搶占優(yōu)先級為0,響應(yīng)優(yōu)先級為0設(shè)置中斷2的搶占優(yōu)先級為2,響應(yīng)優(yōu)先級為1設(shè)置中斷3的搶占優(yōu)先級為2,響應(yīng)優(yōu)先級為0說明:值越小,優(yōu)先級越高說明:值越小,優(yōu)先級越高1.假如主程序先被中斷1中斷,這時(shí)中斷2和3產(chǎn)生中斷只能等中斷1結(jié)束后再處理。2.在處理中斷2和3時(shí),因中斷3響應(yīng)優(yōu)先級高,所以先處理中斷3,結(jié)束后處理中斷2。3.假如主程序先被中斷2中斷,這時(shí)如果又產(chǎn)生中斷1,則在中斷2內(nèi)嵌套處理中斷1。如果這時(shí)又來了中斷3,則要在中斷1和2結(jié)束后處理中斷3。4.如果在中斷2內(nèi)同時(shí)產(chǎn)生中斷1和3,因響應(yīng)優(yōu)先級相同,所以要看兩個(gè)中斷在列表中的前后順序決定先進(jìn)入哪一個(gè)中斷。02優(yōu)先級組組占位數(shù)級數(shù)量00位搶占優(yōu)先級4位響應(yīng)優(yōu)先級共1個(gè)搶占優(yōu)先級共16個(gè)響應(yīng)優(yōu)先級11位搶占優(yōu)先級3位響應(yīng)優(yōu)先級共2個(gè)搶占優(yōu)先級共8個(gè)響應(yīng)優(yōu)先級22位搶占優(yōu)先級2位響應(yīng)優(yōu)先級共4個(gè)搶占優(yōu)先級共4個(gè)響應(yīng)優(yōu)先級33位搶占優(yōu)先級1位響應(yīng)優(yōu)先級共8個(gè)搶占優(yōu)先級共2個(gè)響應(yīng)優(yōu)先級44位搶占優(yōu)先級0位響應(yīng)優(yōu)先級共16個(gè)搶占優(yōu)先級共1個(gè)響應(yīng)優(yōu)先級02優(yōu)先級使用舉例:Stm32f1xx_hal_cortex.c02查找:外部中斷/事件線路映射(Stm32f103xe.h)和中斷處理函數(shù)(startup_stm32f103xe.s)02IO口中斷回調(diào)函數(shù)voidHAL_GPIO_EXTI_IRQHandler(uint16_tGPIO_Pin);
//實(shí)際調(diào)用的是下邊的中斷回調(diào)函數(shù)
voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin);
//引腳觸發(fā)之后的回調(diào)函數(shù),按鍵中斷函數(shù)02定時(shí)器中斷回調(diào)函數(shù)(stm32fxxx_hal_tim.c)
02串口中斷回調(diào)函數(shù):(stm32fxxx_hal_uart.c)
STM32F103VE型號MCU共有8個(gè)定時(shí)器,編號為TIM1~TIM8,其中包括2個(gè)高級控制定時(shí)器、4個(gè)通用定時(shí)器和2個(gè)基本定時(shí)器。定時(shí)器類型定時(shí)器編號計(jì)數(shù)器位數(shù)計(jì)數(shù)器類型捕獲/比較通道數(shù)掛載總線/接口時(shí)鐘定時(shí)器時(shí)鐘高級控制定時(shí)器TIM1、TIM816位遞增、遞減、遞增/遞減4APB2/72MHz72MHz通用定時(shí)器TIM2、TIM3TIM4、TIM516位遞增、遞減、遞增/遞減4APB1/36MHz72MHz基本定時(shí)器TIM6、TIM716位遞增無APB1/36MHz72MHz03STMF103VE中的基本定時(shí)器03基本定時(shí)器的定時(shí)功能定時(shí)器可以用于獨(dú)立時(shí)間計(jì)時(shí)功能,定時(shí)時(shí)間到時(shí),可等待CPU檢查標(biāo)志位(查尋方式),或產(chǎn)生“定時(shí)器中斷”。一般都是讓定時(shí)器產(chǎn)生中斷。3知識鏈接①計(jì)數(shù)器寄存器(TIMx_CNT)②預(yù)分頻器寄存器(TIMx_PSC)③自動(dòng)重載寄存器(TIMx_ARR)03定時(shí)器功能框圖3知識鏈接根據(jù)本任務(wù)的要求,LED流水燈每隔1秒鐘切換一次顯示效果。因此可以使能TIM6的更新中斷,并將時(shí)間間隔配置為1秒鐘。T(單位秒)=((重裝載值arr+1)*(預(yù)分頻系數(shù)psc+1))/系統(tǒng)時(shí)鐘頻率如果系統(tǒng)時(shí)鐘頻率為72M72000000,要求定時(shí)1秒,則重裝載值arr為9999,預(yù)分頻系數(shù)psc為719903定時(shí)器時(shí)間計(jì)算公式3知識鏈接typedef
struct
{
uint32_t
Prescaler;
//預(yù)分頻系數(shù)
uint32_t
CounterMode;
//計(jì)數(shù)模式
uint32_t
Period;
//自動(dòng)重載值
uint32_t
ClockDivision;
//定時(shí)器內(nèi)部時(shí)鐘分頻系數(shù)
uint32_t
RepetitionCounter;
//重復(fù)計(jì)數(shù)值
uint32_t
AutoReloadPreload;
//是否啟用預(yù)加載功能
}
TIM_Base_InitTypeDef;
03定時(shí)器初始化03CubeMX中TIM6的定時(shí)配置01建立工程存放的文件夾新建STM32CubeMX工程0203選擇MCU型號配置調(diào)試端口0405配置MCU時(shí)鐘樹06配置LED燈相關(guān)的GPIO功能07配置定時(shí)器TIM6的參數(shù)與中斷功能08保存STM32CubeMX工程09生成初始C代碼工程04開發(fā)流程演示10在main.c中添加邏輯代碼完成功能3
編譯程序并下載運(yùn)行后的現(xiàn)象是系統(tǒng)上電時(shí),8個(gè)LED燈默認(rèn)為熄滅狀態(tài),接下來8個(gè)LED燈依次點(diǎn)亮。04main.c中添加邏輯代碼實(shí)現(xiàn)功能:
啟動(dòng)TIM6中斷
編寫TIM6中斷服務(wù)程序
添加自定義變量和函數(shù)定義
編寫main()函數(shù)的主循環(huán)程序4按鍵控制呼吸燈應(yīng)用開發(fā)4任務(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ù)。按鍵與呼吸燈的電路原理圖:按鍵的GPIO引腳為PC13,呼吸燈LED與GPIO引腳PB8相連。知識鏈接02PWM03開發(fā)流程演示01如何選擇呼吸燈的定時(shí)器02CubeMX中定時(shí)器設(shè)置輸出PWM詳見tim.c01如何選擇呼吸燈的定時(shí)器
STM32F103VE型號MCU共有8個(gè)定時(shí)器,編號為TIM1~TIM8,其中包括2個(gè)高級控制定時(shí)器、4個(gè)通用定時(shí)器和2個(gè)基本定時(shí)器。通用和高級定時(shí)器都有一個(gè)16位的自動(dòng)加載遞加/遞減計(jì)數(shù)器、一個(gè)16位的預(yù)分頻器和4個(gè)獨(dú)立的通道,每個(gè)通道都可用于輸入捕獲、輸出比較、PWM和單脈沖模式輸出。定時(shí)器類型定時(shí)器編號計(jì)數(shù)器位數(shù)計(jì)數(shù)器類型捕獲/比較通道數(shù)掛載總線/接口時(shí)鐘定時(shí)器時(shí)鐘高級控制定時(shí)器TIM1、TIM816位遞增、遞減、遞增/遞減4APB2/72MHz72MHz通用定時(shí)器TIM2、TIM3TIM4、TIM516位遞增、遞減、遞增/遞減4APB1/36MHz72MHz基本定時(shí)器TIM6、TIM716位遞增無APB1/36MHz72MHz01STMF103VE中的通用定時(shí)器01通用/高級定時(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:中央對齊模式1計(jì)數(shù)器交替地向上和向下計(jì)數(shù)。輸出比較中斷標(biāo)志位,只在計(jì)數(shù)器向下計(jì)數(shù)時(shí)置位。CenterAligned2:中央對齊模式2計(jì)數(shù)器交替地向上和向下計(jì)數(shù)。輸出比較中斷標(biāo)志位,只在計(jì)數(shù)器向上計(jì)數(shù)時(shí)置位。CenterAligned3:中央對齊模式3計(jì)數(shù)器交替地向上和向下計(jì)數(shù)。輸出比較中斷標(biāo)志位,在計(jì)數(shù)器向下和向上計(jì)數(shù)時(shí)均置位。01定時(shí)器計(jì)數(shù)模式
脈沖寬度調(diào)制(PulseWidthModulation,PWM)簡稱脈寬調(diào)制,也叫占空比。它是一種利用微處理器的數(shù)字輸出對模擬電路進(jìn)行控制的技術(shù),其被廣泛應(yīng)用于測量、通信、功率控制與變換等領(lǐng)域。02PWM知識鏈接PWM采用調(diào)整脈沖占空比的方式達(dá)到調(diào)整電壓與電流的效果。如:在1ms內(nèi),高電平占0.3ms,低電平占0.7ms。則LED燈通電0.3ms,斷電0.7ms,這樣的脈沖占空比為30%。STM32微控制器的定時(shí)器可輸出兩種模式的PWM信號:PWM1和PWM2402PWMPWM信號的生成樣式與計(jì)數(shù)器寄存器(TIMx_CNT)、自動(dòng)重載寄存器(TIMx_ARR)以及捕獲/比較寄存器(TIMx_CCRy)有關(guān)。02PWM1模式的信號02PWM2模式的信號PWM信號的生成樣式與計(jì)數(shù)器寄存器(TIMx_CNT)、自動(dòng)重載寄存器(TIMx_ARR)以及捕獲/比較寄存器(TIMx_CCRy)有關(guān)。02CubeMX中定時(shí)器設(shè)置輸出PWM詳見tim.c01定時(shí)器IO口初始化,設(shè)置為復(fù)用推挽輸出模式(tim.c)0203定時(shí)器初始化和設(shè)置PWM輸出模式04在主函數(shù)調(diào)用函數(shù)啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器輸出PWM05處理中斷回調(diào)函數(shù)403呼吸燈編程流程分析01處理按鍵中斷(gpio.c)5串行通信控制LED燈應(yīng)用開發(fā)5任務(wù)要求
本任務(wù)要求設(shè)計(jì)一個(gè)LED流水燈系統(tǒng),該系統(tǒng)與上位機(jī)之間通過串行通信接口相連。上位機(jī)可發(fā)送命令對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#”分別對應(yīng)模式一和模式二的控制,命令“stop#”控制LED流水燈停止運(yùn)行并全滅。知識鏈接02開發(fā)流程演示01STM32中的USART知識鏈接5STM32芯片擁有多個(gè)USART外設(shè)用于串口通訊。USART是通用同步/異步收發(fā)器(帶同步時(shí)鐘線USART_CK)UART是通用異步收發(fā)器(沒有同步時(shí)鐘線)最常用的是異步模式,同步模式很少用,所以二者區(qū)別不大。01STM32中的USART知識鏈接STM32F1的各個(gè)收發(fā)器外設(shè)的工作時(shí)鐘來源于不同的APB總線:USART1掛載在APB2總線上,最大頻率為72MHz;其他4個(gè)收發(fā)器則掛載在APB1總線上,最大頻率為36MHz。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--501串口引腳分布知識鏈接USART數(shù)據(jù)寄存器(USART_DR)只有低9位有效,并且第9位數(shù)據(jù)是否有效取決于USART控制寄存1(USART_CR1)的M位設(shè)置,當(dāng)M位為0時(shí)表示8位數(shù)據(jù)字長,當(dāng)M位為1表示9位數(shù)據(jù)字長,我們一般使用8位數(shù)據(jù)字長。USART_DR包含了已發(fā)送的數(shù)據(jù)或者接收到的數(shù)據(jù)。USART_DR實(shí)際是包含了兩個(gè)寄存器,一個(gè)專門用于發(fā)送的可寫TDR,另一個(gè)專門用于接收的可讀RDR。501數(shù)據(jù)寄存器知識鏈接USART有專門的控制發(fā)送的發(fā)送器、控制接收的接收器,還有喚醒單元、中斷控制等。使用USART之前需要向USART_CR1寄存器中的UE位置1使能USART。501控制器知識鏈接波特率,即每秒傳輸?shù)亩M(jìn)制位數(shù),用b/s(bps)表示,通過對時(shí)鐘的控制可以改變波特率。在配置波特率時(shí),我們在比率寄存器USART_BRR寫入?yún)?shù),修改了串口時(shí)鐘的分頻值USARTDIV。501波特率知識鏈接STM32F1的USART支持多種中斷事件,與發(fā)送有關(guān)的中斷有:發(fā)送完成、清除以發(fā)送(CTS標(biāo)志)和發(fā)送數(shù)據(jù)寄存器為空;與接收有關(guān)的中斷有:接收數(shù)據(jù)寄存器不為空、檢測到空閑線路、檢測到上溢錯(cuò)誤、奇偶校驗(yàn)錯(cuò)誤、檢測到LIN斷路、多緩沖通信中的噪聲標(biāo)志、上溢錯(cuò)誤和幀錯(cuò)誤。中斷事件事件標(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檢測到LIN斷路LBDLBDIE多緩沖通信中的噪聲標(biāo)志、上溢錯(cuò)誤和幀錯(cuò)誤NF/ORE/FEEIE501串口中斷HAL_UART_Transmit();串口輪詢模式發(fā)送,使用超時(shí)管理機(jī)制
HAL_UART_Receive();串口輪詢模式接收,使用超時(shí)管理機(jī)制
HAL_UART_Transmit_IT();串口中斷模式發(fā)送
HAL_UART_Receive_IT();串口中斷模式接收
HAL_UART_Transmit_DMA();串口DMA模式發(fā)送
HAL_UART_Transmit_DMA();串口DMA模式接收01串口發(fā)送/接收函數(shù)HAL_UART_TxHalfCpltCallback();一半數(shù)據(jù)發(fā)送完成時(shí)調(diào)用
HAL_UART_TxCpltCallback();數(shù)據(jù)完全發(fā)送完成后調(diào)用
HAL_UART_RxHalfCpltCallback();一般數(shù)據(jù)接收完成時(shí)調(diào)用
HAL_UART_RxCpltCallback();數(shù)據(jù)完全接受完成后調(diào)用
HAL_UART_ErrorCallback();傳輸出現(xiàn)錯(cuò)誤時(shí)調(diào)用01串口中斷回調(diào)函數(shù):(stm32fxxx_hal_uart.c)
01CubeMX中的串口配置我們在學(xué)習(xí)C語言時(shí),經(jīng)常使用C語言標(biāo)準(zhǔn)函數(shù)庫輸入輸出函數(shù),比如printf、scanf、getchar、sprintf等,這些函數(shù)在我們調(diào)試程序時(shí),或者需要顯示某些模塊數(shù)據(jù),而沒有顯示屏?xí)r,便直接使用串口,也能滿足需求。為了讓開發(fā)板支持這些函數(shù),我們需要把USART發(fā)送和接收函數(shù)添加到這些函數(shù)的內(nèi)部函數(shù)內(nèi)??梢栽诖谡{(diào)試助手輸入指令,命令開發(fā)板執(zhí)行任務(wù)。intfputc()作用是重定向C庫函數(shù)printf到DEBUG_USARTx;intfgetc()作用是重定向C庫函數(shù)到getchar、scanf到DEBUG_USARTx。01USART的調(diào)試功能任務(wù)實(shí)施01建立工程存放的文件夾新建STM32CubeMX工程0203選擇MCU型號配置調(diào)試端口0405配置MCU時(shí)鐘樹06配置LED燈的GPIO功能07配置USART外設(shè)的工作參數(shù)08保存STM32CubeMX工程1.建立STM32CubeMX工程并生成初始C代碼09生成初始C代碼工程502開發(fā)流程演示01將USART發(fā)送函數(shù)重定向到print()函數(shù)02定義USART收發(fā)所需的變量任務(wù)實(shí)施2.完善代碼03編寫USART接收中斷服務(wù)函數(shù)04編寫LED流水燈顯示程序05編寫main()函數(shù)56電池電量監(jiān)測應(yīng)用開發(fā)6任務(wù)要求本任務(wù)要求設(shè)計(jì)一個(gè)可對電池電壓進(jìn)行監(jiān)測的應(yīng)用程序。供電電池的電壓為12.6V,通過“PIN”端接入。電池電壓經(jīng)過分壓后,通過“VM_ADC”與微控制器的PA1引腳相連,作為ADC采集輸入。要求每隔1秒鐘對電池電壓進(jìn)行采集,采集到的電壓值通過串行通信的方式發(fā)送至上位機(jī)顯示。電壓顯示樣例:3.25V,數(shù)值精確到小數(shù)點(diǎn)后兩位數(shù)。ADCSTM32F103VET6微控制器有3個(gè)ADC,可工作在獨(dú)立、雙重或三重模式下,以適應(yīng)多種不同的應(yīng)用需求。每個(gè)ADC都具有18個(gè)復(fù)用通道,可測量16個(gè)外部信號源、2個(gè)內(nèi)部信號源,轉(zhuǎn)換精度可配置為12bit、10bit、8bit或6bit,轉(zhuǎn)換結(jié)果存儲在一個(gè)可左對齊或右對齊的16位數(shù)據(jù)寄存器中。
-轉(zhuǎn)換范圍:0至3.6V-雙采樣和保持功能-溫度傳感器知識鏈接2.ADC的功能分析(1)ADC的輸入電壓范圍引腳名稱信號
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 制定倉庫員工激勵(lì)機(jī)制的策略計(jì)劃
- 應(yīng)用程序的監(jiān)控與評估測試試題及答案
- 2024年湖南省農(nóng)業(yè)農(nóng)村廳下屬事業(yè)單位真題
- 馬鞍山市重點(diǎn)中學(xué)2025屆八年級數(shù)學(xué)第二學(xué)期期末統(tǒng)考模擬試題含解析
- 2024年臨沂市技師學(xué)院招聘筆試真題
- 2024年廣西農(nóng)牧工程學(xué)校招聘教師筆試真題
- 2024年贛州市中醫(yī)院招聘工作人員筆試真題
- 計(jì)算機(jī)視覺在醫(yī)療中的應(yīng)用試題及答案
- 2025屆湖北省武漢市六中學(xué)數(shù)學(xué)七下期末質(zhì)量跟蹤監(jiān)視試題含解析
- 軟件水平考試中的創(chuàng)新思維考察與試題及答案
- 家長助教日成品
- 2024助貸委托服務(wù)協(xié)議合同模板
- DZ∕T 0033-2020 固體礦產(chǎn)地質(zhì)勘查報(bào)告編寫規(guī)范(正式版)
- 部編版二年級道德與法治下冊第14課《學(xué)習(xí)有方法》精美課件
- 2024年紀(jì)檢監(jiān)察綜合業(yè)務(wù)知識題庫及參考答案【完整版】
- 浙江省寧波市鎮(zhèn)海區(qū)人教PEP版2022年小學(xué)畢業(yè)考試英語試卷【含答案】
- 21 《楊氏之子》課件
- 中班語言《傘》課件
- 阿替普酶在心腦血管疾病中的應(yīng)用
- MOOC 數(shù)字電子技術(shù)基礎(chǔ)-華中科技大學(xué) 中國大學(xué)慕課答案
- 營區(qū)物業(yè)服務(wù)營區(qū)物業(yè)服務(wù)保密措施
評論
0/150
提交評論