單片機產(chǎn)品設(shè)計與調(diào)試-基于STM32F1xx機型和HAL庫函數(shù) 課件 任務(wù)1.6-STM32軟硬件深入(一)_第1頁
單片機產(chǎn)品設(shè)計與調(diào)試-基于STM32F1xx機型和HAL庫函數(shù) 課件 任務(wù)1.6-STM32軟硬件深入(一)_第2頁
單片機產(chǎn)品設(shè)計與調(diào)試-基于STM32F1xx機型和HAL庫函數(shù) 課件 任務(wù)1.6-STM32軟硬件深入(一)_第3頁
單片機產(chǎn)品設(shè)計與調(diào)試-基于STM32F1xx機型和HAL庫函數(shù) 課件 任務(wù)1.6-STM32軟硬件深入(一)_第4頁
單片機產(chǎn)品設(shè)計與調(diào)試-基于STM32F1xx機型和HAL庫函數(shù) 課件 任務(wù)1.6-STM32軟硬件深入(一)_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

單片機產(chǎn)品設(shè)計與制作

(stm32機型)袁秀英石梅香項目1、利用GPIO和位帶操作實現(xiàn)溫度報警任務(wù)1.6STM32深入(一)總目錄1項目1、利用GPIO和位帶操作實現(xiàn)溫度報警

2項目2、利用SysTick實現(xiàn)溫度報警與控制

3項目3、利用按鍵查詢實現(xiàn)參數(shù)設(shè)定及顯示

4項目4、利用外部中斷實現(xiàn)工件計數(shù)顯示

5項目5、利用定時器實現(xiàn)直流電動機PWM調(diào)速6項目6、利用計數(shù)器實現(xiàn)工件計數(shù)顯示和打包控制

7項目7、利用ADC實現(xiàn)土壤濕度采集

具體工作任務(wù)設(shè)計基于STM32單片機的溫度報警器,實現(xiàn)如下功能:

溫度超過設(shè)定溫度(30℃)時,報警燈點亮;否則,報警燈熄滅。請進行1、方案設(shè)計2、器件選型3、電路和程序設(shè)計4、完成軟硬件調(diào)試。項目總目標1、了解單片機的發(fā)展及用途,理解其關(guān)鍵概念與術(shù)語;2、了解單片機產(chǎn)品的開發(fā)過程,會使用開發(fā)工具進行軟硬件設(shè)計與調(diào)試;3、理解基于STM32F103ZET6的電源電路原理,能夠獨立進行電源電路的設(shè)計與調(diào)試;4、理解按鍵、溫度開關(guān)等簡單DI電路的原理,能夠獨立進行類似電路的設(shè)計與調(diào)試;5、理解LED等簡單DO電路的原理,能夠獨立進行類似電路的設(shè)計與調(diào)試;6、掌握基于HAL庫函數(shù)的GPIO引腳讀寫和位操作編程方法;7、能夠按照分組管理的模塊化設(shè)計方法進行程序設(shè)計與調(diào)試;8、了解STM32GPIO電路的內(nèi)部結(jié)構(gòu);9、會查找相關(guān)資料、閱讀相關(guān)文獻。子目錄1項目1、利用GPIO和位帶操作實現(xiàn)溫度報警

1.1任務(wù)1.1 認識STM32單片機及其開發(fā)工具1.2任務(wù)1.2 方案設(shè)計

1.3任務(wù)1.3 電路設(shè)計

1.4任務(wù)1.4 程序設(shè)計

1.5任務(wù)1.5 利用位帶操作實現(xiàn)溫度報警

1.6任務(wù)1.6 stm32軟硬件深入(一)

本次課任務(wù)1、GPIO內(nèi)部是什么樣的結(jié)構(gòu),支持它既能讀也能寫?2、程序和電路該如何配合?3、STM32內(nèi)部除了GPIO還有些啥?1、進一步理解GPIO的工作模式及設(shè)置方法;2、能看懂GPIO內(nèi)部結(jié)構(gòu);3、能說出STM32F1xx內(nèi)部組成及主要功能;4、會自主查找閱讀GPIO庫函數(shù)和STM32引腳定義相關(guān)資料。引腳用途ModePullSpeed數(shù)字量輸入(DI)GPIO_MODE_INPUT(輸入)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)

數(shù)字量輸出(DO)GPIO_MODE_OUTPUT_PP(推挽輸出)

GPIO_SPEED_FREQ_LOW(低速,最大2MHz)GPIO_SPEED_FREQ_MEDIUM(中速,最大10MHZ)GPIO_SPEED_FREQ_HIGH(高速,最大50MHz)GPIO_MODE_OUTPUT_OD(開漏輸出)復(fù)用輸入(AlternateIn)GPIO_MODE_AF_INPUT(復(fù)用輸入)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)

復(fù)用輸出(AlternateOut)GPIO_MODE_AF_PP(復(fù)用推挽輸出)

GPIO_SPEED_FREQ_LOW(低速,最大2MHz)GPIO_SPEED_FREQ_MEDIUM(中速,最大10MHZ)GPIO_SPEED_FREQ_HIGH(高速,最大50MHz)GPIO_MODE_AF_OD(復(fù)用開漏輸出)模擬量(Analog)GPIO_MODE_ANALOG(模擬量)GPIO_NOPULL(浮空)

中斷請求(Interrupt)GPIO_MODE_IT_RISING(上升沿中斷請求)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)

GPIO_MODE_IT_FALLING(下降沿中斷請求)GPIO_MODE_IT_RISING_FALLING(上升和下降沿中斷請求)事件請求(Event)GPIO_MODE_EVT_RISING(上升沿事件請求)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)

GPIO_MODE_EVT_FALLING(下降沿事件請求)GPIO_MODE_EVT_RISING_FALLING(上升沿和下降沿事件請求)引腳用途ModePullSpeed數(shù)字量輸入(DI)GPIO_MODE_INPUT(輸入)GPIO_NOPULL(不拉,浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)

如何確定GPIO的工作模式1、GPIO做DI引腳1、GPIO做DI引腳如何確定GPIO的工作模式練一練:確定以下電路GPIO引腳的工作模式,并編寫初始化程序。

如何確定GPIO的工作模式引腳用途ModePullSpeed數(shù)字量輸出(DO)GPIO_MODE_OUTPUT_PP(推挽輸出)

GPIO_SPEED_FREQ_LOW(低速,最大2MHz)GPIO_SPEED_FREQ_MEDIUM(中速,最大10MHZ)GPIO_SPEED_FREQ_HIGH(高速,最大50MHz)GPIO_MODE_OUTPUT_OD(開漏輸出)2、GPIO做DO引腳如何確定GPIO的工作模式2、GPIO做DO引腳當STM32單片機與LED、蜂鳴器等設(shè)備進行連接時,可以將其工作模式設(shè)置為推挽輸出或開漏輸出中的一種,它們都屬于DO輸出。STM32GPIO引腳推挽輸出的驅(qū)動能力為±25mA。如果負載電流在這個范圍,就可以直接用GPIO引腳驅(qū)動負載,并將其設(shè)為推挽輸出模式。(a)LED點亮?xí)r,電流流入單片機(灌電流、挽)

(b)LED點亮?xí)r,電流流出單片機(拉電流、推)如何確定GPIO的工作模式可以將負載接在GPIO引腳和地之間也可將負載接在GPIO引腳和電源正極之間但要注意確保負載能正常工作1.直插發(fā)光二極管壓降紅色發(fā)光二極管的壓降為2.0--2.2V黃色發(fā)光二極管的壓降為1.8—2.0V綠色發(fā)光二極管的壓降為3.0—3.2V正常發(fā)光時的額定電流約為20mA。2.貼片LED壓降紅色的壓降為1.82-1.88V,電流5-8mA綠色的壓降為1.75-1.82V,電流3-5mA橙色的壓降為1.7-1.8V,電流3-5mA蘭色的壓降為3.1-3.3V,電流8-10mA白色的壓降為3-3.2V,電流10-15mA.STM32F103ZET6PA03.3V200限流電阻PA0輸出低電平LED點亮PA0輸出高電平LED熄滅灌電流(亮燈時電流灌入芯片)PA0輸出高電平LED點亮PA0輸出低電平LED熄滅STM32F103ZET6PA0200限流電阻拉電流(亮燈時電流流出芯片)限流電阻計算:R=(VDD-LED管壓降)/LED工作電流如何確定GPIO的工作模式2、GPIO做DO引腳當負載工作電流大于25mA時,推挽輸出提供的電流不能滿足負載的工作需要。此時仍可以將STM32設(shè)置為推挽輸出,然后在負載和單片機之間加入驅(qū)動電路。如圖,STM32的PB5直接接三極管的基極,再通過三極管驅(qū)動電路驅(qū)動蜂鳴器。由于三極管基極需要的電流很小,STM32完全可以提供;三極管射極電流較大,可以驅(qū)動蜂鳴器工作。當然,驅(qū)動電路也可以采用其它電路形式和驅(qū)動器件。2、GPIO做DO引腳如何確定GPIO的工作模式2、GPIO做DO引腳如何確定GPIO的工作模式推挽輸出情況下,輸出電流的大小受到內(nèi)部等效電阻的限制設(shè)為推挽輸出(OUTPUT_PP):PA0輸出“1”時,通過內(nèi)部等效電阻為負載供電設(shè)為開漏輸出(OUTPUT_OD):PA0與內(nèi)部等效電阻之間不通PA0輸出“1”時,內(nèi)部懸空必須外接上拉電阻通過外部上拉電阻為負載供電沒有外部上拉電阻,負載也懸空,得不到高電平改變外部上拉電阻大小,可在一定范圍內(nèi)提高負載電流如果負載是5V供電可再程序中將GPIO引腳設(shè)置為漏極開路輸出(OUTPUT_OD)并在電路中外接上拉電阻這是STM32漏極開路輸出的主要應(yīng)用——用GPIO引腳驅(qū)動DC5V負載2、GPIO做DO引腳練一練:(1)用PA8接收壓力傳感器輸入,用PB12連接LED,PB12接LED負極,要求PA15浮空輸入模式,PB12推挽輸出,畫電路,編寫完整程序。(2)用PA3接收行程開關(guān)輸入,用PE2連接LED,PE2接LED正極,畫電路,要求PA3上拉輸入,PE2開漏輸出,畫電路,編寫完整程序。如何確定GPIO的工作模式引腳用途ModePullSpeed復(fù)用輸入(AlternateIn)GPIO_MODE_AF_INPUT(復(fù)用輸入)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)3、GPIO做復(fù)用輸入引腳如何確定GPIO的工作模式為了減少引腳數(shù)量,單片機的引腳大多具有多個功能。這被稱為引腳復(fù)用技術(shù)。例如PC14引腳,它既可以作為PC14引腳,接收傳感器輸入,或者控制LED等設(shè)備的工作;也可以作為OSC32_IN引腳為芯片的RTC電路提供時鐘輸入。而PC15引腳則既可以作PC15,也可以做OSC32_OUT,作為RTC的時鐘輸出引腳。當GPIO引腳使用復(fù)用功能時,就是復(fù)用功能被開啟。當復(fù)用功能也分為輸入和輸出兩種情況。復(fù)用功能的具體使用方法本項目暫不介紹。引腳用途ModePullSpeed復(fù)用輸出(AlternateOut)GPIO_MODE_AF_PP(復(fù)用推挽輸出)

GPIO_SPEED_FREQ_LOW(低速,最大2MHz)GPIO_SPEED_FREQ_MEDIUM(中速,最大10MHZ)GPIO_SPEED_FREQ_HIGH(高速,最大50MHz)GPIO_MODE_AF_OD(復(fù)用開漏輸出)4、GPIO做復(fù)用輸出引腳如何確定GPIO的工作模式當STM32單片機與熱電偶、熱電阻等模擬量輸出的傳感器進行連接時,需要將引腳設(shè)為模擬輸入。當STM32單片機需要向負載輸出模擬電壓或電流信號時,需要將引腳設(shè)置為模擬輸出模擬量輸入輸出的具體方法本項目暫不介紹。5、GPIO做模擬量信號引腳如何確定GPIO的工作模式引腳用途ModePullSpeed模擬量(Analog)GPIO_MODE_ANALOG(模擬量)GPIO_NOPULL(浮空)引腳用途ModePullSpeed中斷請求(Interrupt)

GPIO_MODE_IT_RISING(上升沿中斷請求)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)GPIO_MODE_IT_FALLING(下降沿中斷請求)GPIO_MODE_IT_RISING_FALLING(上升和下降沿中斷請求)事件請求(Event)

GPIO_MODE_EVT_RISING(上升沿事件請求)GPIO_MODE_EVT_FALLING(下降沿事件請求)GPIO_MODE_EVT_RISING_FALLING(上升和下降沿事件請求)6、GPIO做中斷/事件請求引腳如何確定GPIO的工作模式GPIO引腳也可以用于接收中斷或事件請求。具體使用方法本項目暫不介紹。GPIO的內(nèi)部結(jié)構(gòu)每一根GPIO引腳在內(nèi)部都對應(yīng)一套電路,包括保護電路、輸入電路和輸出電路等當引腳例如PA0做DI輸入時

CPU會自動禁止輸出電路工作允許輸入電路工作當引腳例如PA0做DO輸出時

CPU會自動禁止輸入電路工作允許輸出電路工作GPIO管腿做開關(guān)量/數(shù)字量輸入(DI)引腳上輸入的信號經(jīng)保護電路、內(nèi)部上拉/下拉電路、“肖特基觸發(fā)器”比較后輸出0或者1被送入“輸入數(shù)據(jù)寄存器”儲存起來等待程序讀出1、GPIO做DI引腳,應(yīng)被設(shè)置為GPIO_MODE_INPUT設(shè)置為GPIO_NOPULL——內(nèi)部上拉和下拉開關(guān)都斷開外部引腳能得到穩(wěn)定高、低電平時使用設(shè)置為GPIO_PULLUP——內(nèi)部上拉開關(guān)閉合確保引腳懸空時內(nèi)部能得到穩(wěn)定高電平設(shè)置為GPIO_PULLDOWN——內(nèi)部下拉開關(guān)閉合確保引腳懸空時內(nèi)部能得到穩(wěn)定低電平HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)例如PA0設(shè)置為GPIO_MODE_INPUT——就是使能肖特基觸發(fā)器和輸入數(shù)字寄存器0/1GPIO管腿做數(shù)字量輸出(DO)輸出數(shù)據(jù)寄存器”的內(nèi)容經(jīng)輸出驅(qū)動送到I/O引腳2、GPIO做DO引腳,且設(shè)置為推挽輸出GPIO_MODE_OUTPUT_PP時HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET

)例如PA0“1”“0”“0”1多路開關(guān)輸出得到高電平導(dǎo)通截止GPIO管腿做數(shù)字量輸出(DO)“輸出數(shù)據(jù)寄存器”的內(nèi)容經(jīng)輸出驅(qū)動送到I/O引腳2、GPIO做DO引腳,且設(shè)置為推挽輸出GPIO_MODE_OUTPUT_PP時HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET

)例如PA0“0”“1”“1”0多路開關(guān)輸出得到低電平截止導(dǎo)通GPIO管腿做數(shù)字量輸出(DO)“輸出數(shù)據(jù)寄存器”的內(nèi)容經(jīng)輸出驅(qū)動送到I/O引腳2、GPIO做DO引腳,且設(shè)置為漏開輸出GPIO_MODE_OUTPUT_OD時HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET

)例如PA0“1”“0”“0”1多路開關(guān)輸出引腳懸空被斷開截止要想使連接在引腳上的負載得到穩(wěn)定的高電平,就必須外接上拉電阻。GPIO管腿做數(shù)字量輸出(DO)“輸出數(shù)據(jù)寄存器”的內(nèi)容經(jīng)輸出驅(qū)動送到I/O引腳2、GPIO做DO引腳,且設(shè)置為漏開輸出GPIO_MODE_OUTPUT_OD時HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET

)例如PA0“0”“1”“1”0多路開關(guān)被斷開導(dǎo)通輸出得到低電平漏極開路輸出不會影響低電平輸出GPIO管腿做模擬輸入/輸出(AI/AO)此時I/O引腳上輸入的信號也不經(jīng)過TTL肖特基觸發(fā)器,而是直接送入片上的模擬量輸入電路,等待模擬量輸入電路處理。3、GPIO做AI(模擬量輸入)引腳,應(yīng)被設(shè)置為GPIO_MODE_ANALOG模擬量輸入信號不需要肖特基觸發(fā)器也不需要上下拉電阻(NOPULL)GPIO管腿做模擬輸入/輸出(AI/AO)此時模擬量輸出設(shè)備的輸出信號被送到引腳上。4、GPIO做AO(模擬量輸出)引腳,也應(yīng)被設(shè)置為GPIO_MODE_ANALOG模擬量輸出信號有自己的輸出驅(qū)動電路,不需要推挽輸出或漏極開路輸出電路GPIO管腿做復(fù)用輸入/輸出(AF)引腳上輸入的信號經(jīng)“肖特基觸發(fā)器”比較后輸出0或者1,被送入復(fù)用功能對應(yīng)的電路5、GPIO做復(fù)用輸入引腳,應(yīng)設(shè)置為GPIO_MODE_AF_INPUT復(fù)用輸入電路需要數(shù)字量輸入,因此需要肖特基觸發(fā)器,也有上下拉的設(shè)置需求GPIO管腿做復(fù)用輸入/輸出(AF)來自復(fù)用設(shè)備的信號,經(jīng)多路開關(guān)被輸出到輸出驅(qū)動電路,最后送到I/O引腳6、GPIO做復(fù)用輸入引腳,應(yīng)設(shè)置為GPIO_MODE_AF__PP時例如PA0多路開關(guān)復(fù)用輸出電路是數(shù)字量輸出,與GPIO共用輸出驅(qū)動電路GPIO管腿做復(fù)用輸入/輸出(AF)來自復(fù)用設(shè)備的信號,經(jīng)多路開關(guān)被輸出到輸出驅(qū)動電路,最后送到I/O引腳6、GPIO做復(fù)用輸入引腳,應(yīng)設(shè)置為GPIO_MODE_AF__OD時例如PA0多路開關(guān)被斷開復(fù)用輸出電路是數(shù)字量輸出,與GPIO共用輸出驅(qū)動電路STM32內(nèi)部組成部件(1)Cortex內(nèi)核,即CPU部分,它是單片機的核心和大腦。APB2APB1STM32內(nèi)部組成部件(2)Flash:FlashROM(FlashReadOnlyMemory),閃速程序存儲器。主要用于存儲用戶編好的程序。STM32F103ZET6有512KBFLASHROM(3)SRAM:靜態(tài)數(shù)據(jù)存儲器(StaticRandomMemory),主要用于存儲程序運行中需要的各種變量。STM32F103ZET6有64KBSRAM(4)FSMC:外部擴展存儲器接口,用于擴展單片機片外存儲器,以獲得更大的存儲容量。APB2APB1STM32內(nèi)部組成部件(5)SDIO:SD卡接口,用于與SD卡設(shè)備通信。(6)復(fù)位和時鐘控制電路(RCC):為單片機內(nèi)的各個部件提供時鐘。APB2APB1STM32內(nèi)部組成部件(7)GPIO:包括GPIOA、GPIOB、……GPIOG。是通用輸入輸出端口(GeneralInputOuputPort),可以接收按鍵、傳感器等設(shè)備的輸入,也能控制LED等設(shè)備的輸出。對單片機應(yīng)用開發(fā)工程師而言,GPIO是最經(jīng)常被使用、直接打交道的設(shè)備。GPIO是雙向端口,既可用于數(shù)據(jù)輸入,也可用于數(shù)據(jù)輸出。(8)TIM1~TIM8:定時器,當需要進行精確定時時,可以使用定時器。APB2APB1STM32內(nèi)部組成部件(9)ADC1~ADC3:模擬量輸入接口。能夠?qū)⑤斎肽M量轉(zhuǎn)換成數(shù)字量送CPU(Cortex)。當單片機需要處理模擬量輸入,例如熱電偶的mV信號時,就需要用到ADC(AnalogDigitalConverter)。(10)DAC:模擬量輸出接口??梢詫PU輸出的數(shù)字量轉(zhuǎn)換成模擬量輸出到外部設(shè)備,以提供一個0~VREF的可控電壓APB2APB1STM32內(nèi)部組成部件(11)USB接口:用于與USB設(shè)備的通信。(12)UART、SPI、I2C、CAN接口:用于與UART、SPI、I2C、CAN等設(shè)備進行通信。(13)DMA:直接存儲器訪問(DirectMemoryAccess),用于存儲器與設(shè)備之間直接進行數(shù)據(jù)交換而不是通過CPU進行交換。APB2APB1STM32內(nèi)部組成部件(14)總線:總線是設(shè)備之間信號聯(lián)系的通道。包括Icode總線、Dcode總線System總線、DMA總線、總線矩陣、AHB總線、APB1總線、APB2總線等。Cortex-M3內(nèi)核與Flash、SRAM、GPIO等設(shè)備之間必須通

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論