傳感網應用開發(中級) 課件 STM32基礎開發_第1頁
傳感網應用開發(中級) 課件 STM32基礎開發_第2頁
傳感網應用開發(中級) 課件 STM32基礎開發_第3頁
傳感網應用開發(中級) 課件 STM32基礎開發_第4頁
傳感網應用開發(中級) 課件 STM32基礎開發_第5頁
已閱讀5頁,還剩89頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

“1+X”傳感網應用開發STM32基礎開發考核規則0102本次講師等級分金牌講師、銀牌講師、講師三個等級。各等級講師的百分占比為20%、40%、40%03講師的評比規則采用現場評分方式:平時操作占40%綜合評比占20%29號考試成績占40%04平時操作和綜合評比由各組對應的助教負責本次培訓的目的是為1+x傳感網應用開發后續培訓工作的開展挑選技術過硬的講師承擔培訓工作。01STM32基礎知識02開發環境的搭建與工程的建立03LED流水燈應用開發目錄CONTENTS04按鍵控制呼吸燈應用開發05串行通信控制LED燈應用開發06電池電量監測應用開發1STM32基礎知識知識鏈接01ARM介紹02STM32介紹什么是ARM?01ARM公司于1990年在英國成立,是全球領先的半導體知識產權提供商,不制造芯片,不向終端用戶出售芯片,而是通過轉讓設計方案,由合作伙伴生產出各具特色的芯片。2016年7月18日,日本軟銀集團以約合2135億元人民幣的價格宣布收購ARM。Cortex-A系列-開放式操作系統的高性能處理器:智能手機智能本和上網本電子書閱讀器數字電視家用網關Cortex-M系列-面向具有確定性的微控制器應用的成本敏感型解決方案微控制器混合信號設備智能傳感器汽車電子和氣囊Cortex-R系列-面向實時應用的卓越性能汽車制動系統動力傳動解決方案大容量存儲控制器網絡和打印01常見的ARM處理器生產商及產品ARM只提供技術,芯片由對應的廠商生產01STM32是意法半導體(STMicroelectronics,簡稱ST)有限公司出品的一系列微控制器(MicroControllerUnit,簡稱MCU)的統稱。STM3232是指數據總線是32位的,一次性可以傳輸32位的數據。02STM32F10X系列02STM32微控制器的命名規則02STM32F103VET6含義02STM32F103VET6引腳示意圖022開發環境的搭建與工程的建立任務要求

本任務要求搭建基于STM32CubeMX工具和HAL庫的STM32微控制器的開發環境,生成可在MDK-ARM集成開發環境下運行的工程。正確地配置、編譯工程后,將其下載至開發板中運行。知識鏈接01STM32軟件開發模式02STM32CubeMX03HAL庫04MDK-ARM的安裝開發流程演示061STM32軟件開發的各種模式010203寄存器開發標準庫開發HAL/LL庫+

STM32CubeMX01STM32CubeMX是ST意法半導體近幾年來大力推薦的STM32芯片圖形化配置工具,允許用戶使用圖形化向導生成C初始化代碼,可以大大減輕開發工作、時間和費用。STM32CubeMX幾乎覆蓋了STM32全系列芯片GPIOB->BSRR=0x0001;GPIO_SetBits(GPIOB,GPIO_Pin_0);實現PB0輸出高電平編程:HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);02STM32CubeMX可以直觀的選擇STM32微控制器、配置微控制器、自動處理引腳沖突、動態設置確定時鐘樹、動態確定參數設置的外圍和中間件模式和初始化。CubeMX生成的代碼可以在KEIL、IAR、GCC等編程軟件上面使用。簡單理解,就是CubeMX軟件是一個工具軟件,我們只要在上面簡單的點點點就可以生成STM32功能代碼工程,這個代碼工程已經包括了必要的外設初始化程序,這樣節省我們的工作量,我們的工作重點放在項目任務的實現HAL庫:HAL的全稱是:HardwareAbstractionLayer(硬件抽象層),它的存在是為了確保STM32系列最大的移植性。HAL位于操作系統內核與硬件電路之間的接口層,其目的在于將硬件抽象化。與STM32CubeMX配合使用,ST官方便推出了一個新的函數庫,因為和HAL息息相關,在這里,我們便稱為HAL庫。HAL庫是一個由ST官方基于硬件抽象層而設計的軟件函數包,它由程序、數據結構和宏組成,包括了微控制器所有外設的性能特征。該函數庫還包括每一個外設的驅動描述和應用實例,為開發者訪問底層硬件提供了一個中間API,通過使用HAL庫,無需深入掌握底層硬件細節,開發者就可以輕松應用每一個外設。0304MDK-ARM的安裝:STM32CubeMX軟件是用于生成基于HAL庫的工程代碼,而實際上STM32程序編寫和調試我們一般都是使用Keil

或者IAR軟件,所以安裝CubeMX

軟件之前請大家先安裝STM32開發工具。01KeilMDK-ARM安裝02安裝KeilPackMDK-ARM安裝04Keil公司是一家微控制器(MCU)軟件開發工具的供應商,在2005年被ARM公司收購。通過這次收購,Keil公司開始向32位微控制器市場提供完整的解決方案,Keil推出了μVision界面,用于調試ARM7,ARM9,Cortex-M內核的MDK-ARM開發工具。MDK-ARM軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設備提供了一個完整的開發環境。

Keil

Pack安裝安裝了KeilMDK-ARM,只是提供了Toolchain(工具鏈)和IDE。針對不同的Cortex-M類型,還需要安裝相應的庫,這就是KeilPack包。04101安裝JDK8或以上02安裝STM32CubeMX任務實施03

安裝MCU軟件包04ST-Link驅動程序的安裝使用STM32CubeMX和KeilMDK-ARM開發嵌入式應用的流程1、

選擇MCU的型號,如STM32L151C8T6D,CubeMX顯示所選的MUC的封裝圖。2、根據設備的硬件原理圖和設計說明,自CubeMX中對GPIO管腳、時鐘、中斷、DMA、SPI、USART、I2C等進行配置。3、設置生成工程文件所用的開發工具,在這里我們選擇MDK-ARMV5。4、在生成工程文件時,CubeMX會根據我們的設置自動生成對應開發工具的工程文件。06201建立工程存放的文件夾新建STM32CubeMX工程0203配置GPIO功能配置調試端口0405配置MCU時鐘樹06保存STM32CubeMX工程07生成C代碼初始工程開發流程演示063LED流水燈應用開發任務要求本任務要求設計一個LED流水燈系統,具體要求如下:系統中有8個LED燈,分別是LED1~LED8。系統上電時,8個LED燈默認為熄滅狀態。接下來8個LED燈依次點亮,即:LED1點亮1秒后熄滅,然后LED2點亮1秒后熄滅……最后LED8點亮1秒后熄滅,并以此循環往復。知識鏈接01GPIO口配置02外部中斷原理03定時器原理04開發流程演示GPIO介紹GPIO(GeneralPurposeInputOutput)通用輸入輸出,是STM32的一種外設,與大部分芯片引腳直接掛鉤,STM32F103VET6芯片總共有5個GPIO外設,定義為GPIOA、GPIOB、GPIOC、GPIOD和GPIOE,每個GPIO外設有16個引腳,定義為PA0..PA15、PB0..PB15等。GPIO最簡單的功能是輸出高低電平,GPIO還可以被設置為輸入功能,用于讀取按鍵等輸入信號。很多高級外設也有功能引腳,并且是與GPIO共用的,具體引腳功能可以通過軟件編程設置對應的寄存器內容實現。01GPIO配置01GPIO工作模式01GPIO編程流程分析1、使能GPIO端口時鐘;2、初始化GPIO引腳,即為GPIO初始化結構體成員賦值,并調用HAL_GPIO_Init函數完成初始化配置;3、根據項目要求控制引腳輸出高低電平0102外部中斷原理中斷是指一個突發事件,中止了CPU當前的工作,轉而先去處理突發事件,處理完成后再回到當前的工作繼續執行。STM32允許多種多樣的中斷,如外部IO、ADC、USART、l2C等。02外部中斷/事件控制器(EXIT)(詳見STM32地03參考手冊第9章)外部中斷/事件控制器(EXIT)的功能分兩個部分:一個是產生中斷,另一個是產生事件。EXIT有19個邊沿檢測器,用于產生中斷/事件請求。STM32F1的每個GPIO引腳都可以作為外部中斷的中斷輸入口。STM32F1系列微控制器供GPIO引腳使用的中斷線有16條。多達80個通用I/O口連接到16個外部中斷線。19個中斷/事件請求包括:IO可以做為EXTI0-EXTI15線EXTI線16連接到PVD輸出EXTI線17連接到RTC警告事件EXTI線18連接到USB喚醒事件后三個屬于事件請求。02外部中斷/事件線路映射GPIO引腳中斷標志位中斷處理函數PA0-PG0EXTI0EXTI0_IRQHandlerPA1-PG1EXTI1EXTI1_IRQHandlerPA2-PG2EXTI2EXTI2_IRQHandlerPA3-PG3EXTI3EXTI3_IRQHandlerPA4-PG4EXTI4EXTI4_IRQHandlerPA5-PG5…….PA9-PG9EXTI5……EXTI9EXTI9_5_IRQHandlerPA10-PG10…….PA15-PG15EXTI10……EXTI15EXTI5_10_IRQHandler02上升沿、下降沿與高低電平觸發STM32F1系列支持將所有GPIO設置為中斷輸入。外部IO可由上升沿、下降沿、高低電平的三種方式觸發。可選擇中斷或事件觸發。02中斷與事件02嵌套向量中斷控制器NVIC68個可屏蔽中斷通道(不包含16個Cortex?-M3的中斷線);●16個可編程的優先等級(使用了4位中斷優先級);●低延遲的異常和中斷處理;●電源管理控制;●系統控制寄存器的實現;嵌套向量中斷控制器(NVIC)和處理器核的接口緊密相連,可以實現低延遲的中斷處理和高效地處理晚到的中斷。嵌套向量中斷控制器管理著包括內核異常等中斷。NVIC把外部的中斷信號關聯到單片機內核中,對各種中斷進行分類,按先后順序發送給內核,讓內核處理對應的中斷。更多信息請參看STM32F103數據手冊Cortex-m3支持256個中斷,其中包含了16個內核中斷,240個外部中斷。STM32只有84個中斷,包括16個內核中斷和68個可屏蔽中斷,STM32f103上只有60個可屏蔽中斷。中斷嵌套是指在進入一個中斷處理程序之后,還能在中斷之內再次產生中斷。02NVIC中斷嵌套02搶占優先級與響應優先級在嵌套時,搶占優先級較高的可以在較低的中斷內嵌套中斷。同一搶占優先級不能嵌套,必須前一個中斷處理完成才能進入下一個。不同搶占優先級下,響應優先級沒有意義。同一搶占優先級的中斷同時產生時,響應優先級較高的先處理。同一搶占優先級不能嵌套。搶占優先級:又稱主優先級響應優先級:又稱子優先級STM32F103系列數據手冊9.1.2中斷與異常向量中列表說明了不同中斷的優先級02設置中斷1的搶占優先級為0,響應優先級為0設置中斷2的搶占優先級為2,響應優先級為1設置中斷3的搶占優先級為2,響應優先級為0說明:值越小,優先級越高說明:值越小,優先級越高1.假如主程序先被中斷1中斷,這時中斷2和3產生中斷只能等中斷1結束后再處理。2.在處理中斷2和3時,因中斷3響應優先級高,所以先處理中斷3,結束后處理中斷2。3.假如主程序先被中斷2中斷,這時如果又產生中斷1,則在中斷2內嵌套處理中斷1。如果這時又來了中斷3,則要在中斷1和2結束后處理中斷3。4.如果在中斷2內同時產生中斷1和3,因響應優先級相同,所以要看兩個中斷在列表中的前后順序決定先進入哪一個中斷。02優先級組組占位數級數量00位搶占優先級4位響應優先級共1個搶占優先級共16個響應優先級11位搶占優先級3位響應優先級共2個搶占優先級共8個響應優先級22位搶占優先級2位響應優先級共4個搶占優先級共4個響應優先級33位搶占優先級1位響應優先級共8個搶占優先級共2個響應優先級44位搶占優先級0位響應優先級共16個搶占優先級共1個響應優先級02優先級使用舉例:Stm32f1xx_hal_cortex.c02查找:外部中斷/事件線路映射(Stm32f103xe.h)和中斷處理函數(startup_stm32f103xe.s)02IO口中斷回調函數voidHAL_GPIO_EXTI_IRQHandler(uint16_tGPIO_Pin);

//實際調用的是下邊的中斷回調函數

voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin);

//引腳觸發之后的回調函數,按鍵中斷函數02定時器中斷回調函數(stm32fxxx_hal_tim.c)

02串口中斷回調函數:(stm32fxxx_hal_uart.c)

STM32F103VE型號MCU共有8個定時器,編號為TIM1~TIM8,其中包括2個高級控制定時器、4個通用定時器和2個基本定時器。定時器類型定時器編號計數器位數計數器類型捕獲/比較通道數掛載總線/接口時鐘定時器時鐘高級控制定時器TIM1、TIM816位遞增、遞減、遞增/遞減4APB2/72MHz72MHz通用定時器TIM2、TIM3TIM4、TIM516位遞增、遞減、遞增/遞減4APB1/36MHz72MHz基本定時器TIM6、TIM716位遞增無APB1/36MHz72MHz03STMF103VE中的基本定時器03基本定時器的定時功能定時器可以用于獨立時間計時功能,定時時間到時,可等待CPU檢查標志位(查尋方式),或產生“定時器中斷”。一般都是讓定時器產生中斷。3知識鏈接①計數器寄存器(TIMx_CNT)②預分頻器寄存器(TIMx_PSC)③自動重載寄存器(TIMx_ARR)03定時器功能框圖3知識鏈接根據本任務的要求,LED流水燈每隔1秒鐘切換一次顯示效果。因此可以使能TIM6的更新中斷,并將時間間隔配置為1秒鐘。T(單位秒)=((重裝載值arr+1)*(預分頻系數psc+1))/系統時鐘頻率如果系統時鐘頻率為72M72000000,要求定時1秒,則重裝載值arr為9999,預分頻系數psc為719903定時器時間計算公式3知識鏈接typedef

struct

{

uint32_t

Prescaler;

//預分頻系數

uint32_t

CounterMode;

//計數模式

uint32_t

Period;

//自動重載值

uint32_t

ClockDivision;

//定時器內部時鐘分頻系數

uint32_t

RepetitionCounter;

//重復計數值

uint32_t

AutoReloadPreload;

//是否啟用預加載功能

}

TIM_Base_InitTypeDef;

03定時器初始化03CubeMX中TIM6的定時配置01建立工程存放的文件夾新建STM32CubeMX工程0203選擇MCU型號配置調試端口0405配置MCU時鐘樹06配置LED燈相關的GPIO功能07配置定時器TIM6的參數與中斷功能08保存STM32CubeMX工程09生成初始C代碼工程04開發流程演示10在main.c中添加邏輯代碼完成功能3

編譯程序并下載運行后的現象是系統上電時,8個LED燈默認為熄滅狀態,接下來8個LED燈依次點亮。04main.c中添加邏輯代碼實現功能:

啟動TIM6中斷

編寫TIM6中斷服務程序

添加自定義變量和函數定義

編寫main()函數的主循環程序4按鍵控制呼吸燈應用開發4任務要求本任務要求設計一個可通過按鍵進行控制的呼吸燈系統,具體要求如下:使用外部中斷實現按鍵功能;LED燈的顯示效果為“逐漸變亮”然后“逐漸變暗”;系統剛上電時,LED燈為關閉狀態。第奇數次按下按鍵,LED燈顯示呼吸燈效果;第偶數次按下按鍵,LED燈關閉,并以此循環往復。按鍵與呼吸燈的電路原理圖:按鍵的GPIO引腳為PC13,呼吸燈LED與GPIO引腳PB8相連。知識鏈接02PWM03開發流程演示01如何選擇呼吸燈的定時器02CubeMX中定時器設置輸出PWM詳見tim.c01如何選擇呼吸燈的定時器

STM32F103VE型號MCU共有8個定時器,編號為TIM1~TIM8,其中包括2個高級控制定時器、4個通用定時器和2個基本定時器。通用和高級定時器都有一個16位的自動加載遞加/遞減計數器、一個16位的預分頻器和4個獨立的通道,每個通道都可用于輸入捕獲、輸出比較、PWM和單脈沖模式輸出。定時器類型定時器編號計數器位數計數器類型捕獲/比較通道數掛載總線/接口時鐘定時器時鐘高級控制定時器TIM1、TIM816位遞增、遞減、遞增/遞減4APB2/72MHz72MHz通用定時器TIM2、TIM3TIM4、TIM516位遞增、遞減、遞增/遞減4APB1/36MHz72MHz基本定時器TIM6、TIM716位遞增無APB1/36MHz72MHz01STMF103VE中的通用定時器01通用/高級定時器的3種模式用于測量波形的頻率和寬度脈寬調制器,產生固定頻率但占空比可調的脈沖波形比較兩組輸入電壓的大小產生可調頻率且占空比可調的脈沖波形01捕獲器:測帶寬和測頻率捕獲器用來捕獲輸入接口的電平變化(上升沿或下降沿)可測量脈沖的寬度,或者測量脈沖頻率。當接口產生上升沿或下降沿時,將當前定時器值保存。01輸出比較器輸出比較器可輸出脈沖,可隨時調占空比和頻率。輸出比較器主要用于步進電機、伺服電機的控制。(PWM只能調占空比,也是可以通過程序調頻率,但不方便隨時調)Up:向上計數(累加)Down:向下計數(遞減)CenterAligned1:中央對齊模式1計數器交替地向上和向下計數。輸出比較中斷標志位,只在計數器向下計數時置位。CenterAligned2:中央對齊模式2計數器交替地向上和向下計數。輸出比較中斷標志位,只在計數器向上計數時置位。CenterAligned3:中央對齊模式3計數器交替地向上和向下計數。輸出比較中斷標志位,在計數器向下和向上計數時均置位。01定時器計數模式

脈沖寬度調制(PulseWidthModulation,PWM)簡稱脈寬調制,也叫占空比。它是一種利用微處理器的數字輸出對模擬電路進行控制的技術,其被廣泛應用于測量、通信、功率控制與變換等領域。02PWM知識鏈接PWM采用調整脈沖占空比的方式達到調整電壓與電流的效果。如:在1ms內,高電平占0.3ms,低電平占0.7ms。則LED燈通電0.3ms,斷電0.7ms,這樣的脈沖占空比為30%。STM32微控制器的定時器可輸出兩種模式的PWM信號:PWM1和PWM2402PWMPWM信號的生成樣式與計數器寄存器(TIMx_CNT)、自動重載寄存器(TIMx_ARR)以及捕獲/比較寄存器(TIMx_CCRy)有關。02PWM1模式的信號02PWM2模式的信號PWM信號的生成樣式與計數器寄存器(TIMx_CNT)、自動重載寄存器(TIMx_ARR)以及捕獲/比較寄存器(TIMx_CCRy)有關。02CubeMX中定時器設置輸出PWM詳見tim.c01定時器IO口初始化,設置為復用推挽輸出模式(tim.c)0203定時器初始化和設置PWM輸出模式04在主函數調用函數啟動定時器啟動定時器輸出PWM05處理中斷回調函數403呼吸燈編程流程分析01處理按鍵中斷(gpio.c)5串行通信控制LED燈應用開發5任務要求

本任務要求設計一個LED流水燈系統,該系統與上位機之間通過串行通信接口相連。上位機可發送命令對LED流水燈系統進行控制,具體要求如下:系統中有8個LED燈,分別是LED1~LED8。系統上電時,8個LED燈默認為熄滅狀態。系統運行時,8個LED燈依次點亮。LED流水燈的工作模式有兩種:模式一:8個LED燈依次點亮,每個LED燈點亮1秒后熄滅,然后切換為另一個,點亮順序為LED0、LED1、……、LED7,并以此循環往復;模式二:8個LED燈依次點亮,每個LED燈點亮1秒后熄滅,然后切換為另一個,點亮順序為LED7、LED6、……、LED0,并以此循環往復。上位機以串行通信的方式發送命令至該系統進行LED流水燈工作模式的切換,命令“mode_1#”和“mode_2#”分別對應模式一和模式二的控制,命令“stop#”控制LED流水燈停止運行并全滅。知識鏈接02開發流程演示01STM32中的USART知識鏈接5STM32芯片擁有多個USART外設用于串口通訊。USART是通用同步/異步收發器(帶同步時鐘線USART_CK)UART是通用異步收發器(沒有同步時鐘線)最常用的是異步模式,同步模式很少用,所以二者區別不大。01STM32中的USART知識鏈接STM32F1的各個收發器外設的工作時鐘來源于不同的APB總線:USART1掛載在APB2總線上,最大頻率為72MHz;其他4個收發器則掛載在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數據寄存器(USART_DR)只有低9位有效,并且第9位數據是否有效取決于USART控制寄存1(USART_CR1)的M位設置,當M位為0時表示8位數據字長,當M位為1表示9位數據字長,我們一般使用8位數據字長。USART_DR包含了已發送的數據或者接收到的數據。USART_DR實際是包含了兩個寄存器,一個專門用于發送的可寫TDR,另一個專門用于接收的可讀RDR。501數據寄存器知識鏈接USART有專門的控制發送的發送器、控制接收的接收器,還有喚醒單元、中斷控制等。使用USART之前需要向USART_CR1寄存器中的UE位置1使能USART。501控制器知識鏈接波特率,即每秒傳輸的二進制位數,用b/s(bps)表示,通過對時鐘的控制可以改變波特率。在配置波特率時,我們在比率寄存器USART_BRR寫入參數,修改了串口時鐘的分頻值USARTDIV。501波特率知識鏈接STM32F1的USART支持多種中斷事件,與發送有關的中斷有:發送完成、清除以發送(CTS標志)和發送數據寄存器為空;與接收有關的中斷有:接收數據寄存器不為空、檢測到空閑線路、檢測到上溢錯誤、奇偶校驗錯誤、檢測到LIN斷路、多緩沖通信中的噪聲標志、上溢錯誤和幀錯誤。中斷事件事件標志使能控制位發送期間發送完成TCTEIE清除以發送(CTS標志)CTSCTSIE發送數據寄存器為空TXETXEIE接收期間接收數據寄存器不為空(準備好讀取接收到的數據)RXNERXNEIE檢測到上溢錯誤ORE檢測到空閑線路IDLEIDLEIE奇偶校驗錯誤PEPEIE檢測到LIN斷路LBDLBDIE多緩沖通信中的噪聲標志、上溢錯誤和幀錯誤NF/ORE/FEEIE501串口中斷HAL_UART_Transmit();串口輪詢模式發送,使用超時管理機制

HAL_UART_Receive();串口輪詢模式接收,使用超時管理機制

HAL_UART_Transmit_IT();串口中斷模式發送

HAL_UART_Receive_IT();串口中斷模式接收

HAL_UART_Transmit_DMA();串口DMA模式發送

HAL_UART_Transmit_DMA();串口DMA模式接收01串口發送/接收函數HAL_UART_TxHalfCpltCallback();一半數據發送完成時調用

HAL_UART_TxCpltCallback();數據完全發送完成后調用

HAL_UART_RxHalfCpltCallback();一般數據接收完成時調用

HAL_UART_RxCpltCallback();數據完全接受完成后調用

HAL_UART_ErrorCallback();傳輸出現錯誤時調用01串口中斷回調函數:(stm32fxxx_hal_uart.c)

01CubeMX中的串口配置我們在學習C語言時,經常使用C語言標準函數庫輸入輸出函數,比如printf、scanf、getchar、sprintf等,這些函數在我們調試程序時,或者需要顯示某些模塊數據,而沒有顯示屏時,便直接使用串口,也能滿足需求。為了讓開發板支持這些函數,我們需要把USART發送和接收函數添加到這些函數的內部函數內。可以在串口調試助手輸入指令,命令開發板執行任務。intfputc()作用是重定向C庫函數printf到DEBUG_USARTx;intfgetc()作用是重定向C庫函數到getchar、scanf到DEBUG_USARTx。01USART的調試功能任務實施01建立工程存放的文件夾新建STM32CubeMX工程0203選擇MCU型號配置調試端口0405配置MCU時鐘樹06配置LED燈的GPIO功能07配置USART外設的工作參數08保存STM32CubeMX工程1.建立STM32CubeMX工程并生成初始C代碼09生成初始C代碼工程502開發流程演示01將USART發送函數重定向到print()函數02定義USART收發所需的變量任務實施2.完善代碼03編寫USART接收中斷服務函數04編寫LED流水燈顯示程序05編寫main()函數56電池電量監測應用開發6任務要求本任務要求設計一個可對電池電壓進行監測的應用程序。供電電池的電壓為12.6V,通過“PIN”端接入。電池電壓經過分壓后,通過“VM_ADC”與微控制器的PA1引腳相連,作為ADC采集輸入。要求每隔1秒鐘對電池電壓進行采集,采集到的電壓值通過串行通信的方式發送至上位機顯示。電壓顯示樣例:3.25V,數值精確到小數點后兩位數。ADCSTM32F103VET6微控制器有3個ADC,可工作在獨立、雙重或三重模式下,以適應多種不同的應用需求。每個ADC都具有18個復用通道,可測量16個外部信號源、2個內部信號源,轉換精度可配置為12bit、10bit、8bit或6bit,轉換結果存儲在一個可左對齊或右對齊的16位數據寄存器中。

-轉換范圍:0至3.6V-雙采樣和保持功能-溫度傳感器知識鏈接2.ADC的功能分析(1)ADC的輸入電壓范圍引腳名稱信號

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論