單片機產(chǎn)品設計與調(diào)試-基于STM32F1xx機型和HAL庫函數(shù) 課件 任務7.3 程序設計與調(diào)試_第1頁
單片機產(chǎn)品設計與調(diào)試-基于STM32F1xx機型和HAL庫函數(shù) 課件 任務7.3 程序設計與調(diào)試_第2頁
單片機產(chǎn)品設計與調(diào)試-基于STM32F1xx機型和HAL庫函數(shù) 課件 任務7.3 程序設計與調(diào)試_第3頁
單片機產(chǎn)品設計與調(diào)試-基于STM32F1xx機型和HAL庫函數(shù) 課件 任務7.3 程序設計與調(diào)試_第4頁
單片機產(chǎn)品設計與調(diào)試-基于STM32F1xx機型和HAL庫函數(shù) 課件 任務7.3 程序設計與調(diào)試_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

(stm32機型)石梅香項目7、利用DAC實現(xiàn)LED亮度控制任務7.3程序設計與調(diào)試總目錄1項目1、利用GPIO和位帶操作實現(xiàn)溫度報警

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

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

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

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

7項目7、利用DAC實現(xiàn)LED亮度控制8項目8、利用ADC實現(xiàn)土壤濕度采集

項目總目標項目總目標具體工作任務利用STM32內(nèi)部DAC控制LED亮度。亮度值可由按鍵設定。請進行方案設計、器件選型、電路和程序設計,并完成軟硬件調(diào)試。子目錄7項目7、利用外部中斷實現(xiàn)工件計數(shù)及顯示

7.1任務7.1 認識STM32單片機的DAC7.2任務7.2 方案及電路設計7.3任務7.3 程序設計7.4任務7.4 軟硬件深入(七)任務7.3程序設計與調(diào)試一、任務要求1、能根據(jù)任務需求繪制程序流程圖;2、能夠讀懂程序并根據(jù)需求變化對DAC程序進行適應性修改分組討論要利用DAC實現(xiàn)LED亮度控制任務,程序大致應該完成哪些工作。討論與發(fā)言程序流程設計圖7.3.1單通道、查詢法程序流程程序布局程序框架如圖7.3.2所示,可從之前的工程復制而來,注意:(1)HARDWARE文件夾中需要增加一個DAC文件夾,內(nèi)有dac.c和dac.h文件。(2)修改工程名為:Test_DAC。(3)Project窗口的HALLIB下應增加stm32f1xx_dma.c、stm32f1xx_dac_ex.c、stm32f1xx_dac.c文件。(4)Project窗口的HARDWARE下應有dac.c。(5)Options中的包含路徑中應包含DAC文件夾。(1)第4行定義變量DAC_Handler,其類型為DAC_HandleTypeDef,用于DAC的各種操作。其具體內(nèi)容參見表7.3.1。(2)第5行定義變量DAC_OUT_Value,用于存儲準備送到DAC數(shù)據(jù)保持寄存器DHR的數(shù)據(jù),該數(shù)據(jù)的大小決定了DAC輸出電壓。(3)第10行調(diào)用函數(shù)DAC_Init()對DAC初始化。該函數(shù)具體內(nèi)容見表7.3.1。(4)第13~20行用于測試DAC_OUT_Value送不同數(shù)值時對應的模擬電壓輸出。其中:(5)第13~17行用于向DAC_OUT_Value送不同數(shù)值。(6)第18、20行調(diào)用庫函數(shù)HAL_DAC_SetValue()向兩個DAC通道傳送待轉(zhuǎn)換數(shù)值。主程序設計與調(diào)試DAC程序設計DAC程序設計DAC操作相關庫函數(shù)1、DAC操作變量數(shù)據(jù)類型:

DAC_HandleTypeDef

typedefstruct{DAC_TypeDef*Instance;

//待配置設備名,

DAC或DAC1,注意DAC、DAC2和DAC1都用一個名字

__IO

HAL_DAC_StateTypeDefState;

//狀態(tài)

HAL_LockTypeDef

Lock;

//鎖定

DMA_HandleTypeDef*DMA_Handle1;

//通道1DMA操作變量

DMA_HandleTypeDef*DMA_Handle2;

//通道2DMA操作變量

__IO

uint32_t

ErrorCode;

//錯誤代碼……

……;

//其它}DAC_HandleTypeDef

;2、DAC賦值函數(shù):

HAL_DAC_SetValue(&DAC操作變量,通道號,數(shù)據(jù)對齊格式,數(shù)據(jù))原型:HAL_StatusTypeDef

HAL_DAC_SetValue(DAC_HandleTypeDef

*hdac,uint32_t

Channel,

uint32_t

Alignment,

uint32_t

Data)功能:將數(shù)據(jù)Data送到hdac和Channel指定的DAC通道,數(shù)據(jù)格式是Alignment入口參數(shù):(1)hdac,指出是哪個DAC操作變量,其數(shù)據(jù)類型為

DAC_HandleTypeDef,結(jié)構體變量(2)Channel,指出是哪個通道,其取值為:DAC_CHANNEL_1或DAC_CHANNEL_2(3)Alignment,指出數(shù)據(jù)對齊格式,其取值為:DAC_ALIGN_12B_R(12位右對齊)、DAC_ALIGN_12B_L(12位左對齊)、DAC_ALIGN_8B_R(8位右對齊)(4)Data,待傳送數(shù)據(jù),數(shù)據(jù)類型為

uint32_t返回值:類型為HAL_StatusTypeDef,返回結(jié)果有4種:HAL_OK=0x00;

HAL_ERROR=0x01;

HAL_BUSY=0x02;

HAL_TIMEOUT=0x033、DAC初始化函數(shù):

HAL_DAC_Init(&DAC操作變量)函數(shù)原型:HAL_StatusTypeDef

HAL_DAC_Init

(DAC_HandleTypeDef*hdac)功能:(1)按照變量hdac的設置,初始化DAC,其數(shù)據(jù)類型為

DAC_HandleTypeDef,結(jié)構體變量(2)調(diào)用__weakvoidHAL_DAC_MspInit(DAC_HandleTypeDef

*hdac)

庫函數(shù)(3)返回操作結(jié)果入口參數(shù):hdac,指出如何進行DAC初始化,其數(shù)據(jù)類型為

DAC_HandleTypeDef,結(jié)構體變量返回值:

同函數(shù)HAL_DAC_SetValue()DAC程序設計DAC操作相關庫函數(shù)4、DAC初始化隱性調(diào)用函數(shù):HAL_DAC_MspInit(DAC_HandleTypeDef*hdac)原型:__weak

voidHAL_DAC_MspInit(DAC_HandleTypeDef*hdac)功能:針對DAC操作變量hdac,執(zhí)行本函數(shù)的內(nèi)容說明:本函數(shù)在庫中被定義為__weak(弱)型,函數(shù)內(nèi)容可根據(jù)用戶需要自定義返回值:

空5、DAC通道設置變量數(shù)據(jù)類型:DAC_ChannelConfTypeDef

typedefstruct{ uint32_t

DAC_Trigger;

//觸發(fā)方式,有以下取值:DAC_TRIGGER_NONE(不需要外部觸發(fā))、//DAC_TRIGGER_EXT_IT9(外部中斷9觸發(fā))、//DAC_TRIGGER_T2_TRGO(TIM2TRGO事件觸發(fā))、//DAC_TRIGGER_T4_TRGO(TIM4TRGO事件觸發(fā))、//DAC_TRIGGER_T5_TRGO~DAC_TRIGGER_T8_TRGO(TIM5~TIM8TRGO事件觸發(fā))uint32_t

DAC_OutputBuffer;

//DAC輸出緩沖器,有兩種取值:DAC_OUTPUTBUFFER_ENABLE(允許)、

//DAC_OUTPUTBUFFER_DISABLE(禁止)}DAC_ChannelConfTypeDef;6、DAC通道設置函數(shù):HAL_DAC_ConfigChannel(&DAC操作變量,&DAC通道設置變量,通道號)函數(shù)原型:HAL_StatusTypeDefHAL_DAC_ConfigChannel(DAC_HandleTypeDef*hdac,DAC_ChannelConfTypeDef*sConfig,uint32_tChannel)功能:按照sConfig的設置,對hdac和Channel指定的DAC通道進行設置入口參數(shù):hdac,指出是哪個DAC操作變量,數(shù)據(jù)類型為DAC_HandleTypeDef,結(jié)構體變量sConfig:指出如何進行通道配置,數(shù)據(jù)類型為DAC_ChannelConfTypeDef,結(jié)構體變量Channel:指出是哪個通道,取值為DAC_CHANNEL_1或DAC_CHANNEL_2返回值:

同函數(shù)HAL_DAC_SetValue()7、DAC啟動函數(shù):HAL_DAC_Start(&DAC操作變量,通道號)函數(shù)原型:HAL_StatusTypeDefHAL_DAC_Start(DAC_HandleTypeDef*hdac,uint32_tChannel)功能:(1)給指定的DAC通道上電

(2)如果是軟件觸發(fā),則發(fā)一個觸發(fā)信號,將DHR中的數(shù)據(jù)裝入DOR入口參數(shù):hdac,指出是哪個DAC操作變量,數(shù)據(jù)類型為DAC_HandleTypeDef,結(jié)構體變量Channel:指出是哪個通道,取值為DAC_CHANNEL_1或DAC_CHANNEL_2返回值:同函數(shù)HAL_DAC_SetValue()8、DAC停止函數(shù):HAL_DAC_Stop(&DAC操作變量,通道號)函數(shù)原型:HAL_StatusTypeDefHAL_DAC_Stop(DAC_HandleTypeDef*hdac,uint32_tChannel)功能:給指定的DAC通道斷電,使其停止工作入口參數(shù):hdac,指出是哪個DAC操作變量,數(shù)據(jù)類型為DAC_HandleTypeDef,結(jié)構體變量Channel:指出是哪個通道,取值為DAC_CHANNEL_1或DAC_CHANNEL_2

返回值:同函數(shù)HAL_DAC_SetValue()DAC程序設計DAC操作相關庫函數(shù)7、DAC啟動函數(shù):HAL_DAC_Start(&DAC操作變量,通道號)函數(shù)原型:HAL_StatusTypeDefHAL_DAC_Start(DAC_HandleTypeDef*hdac,uint32_tChannel)功能:(1)給指定的DAC通道上電

(2)如果是軟件觸發(fā),則發(fā)一個觸發(fā)信號,將DHR中的數(shù)據(jù)裝入DOR入口參數(shù):hdac,指出是哪個DAC操作變量,數(shù)據(jù)類型為DAC_HandleTypeDef,結(jié)構體變量Channel:指出是哪個通道,取值為DAC_CHANNEL_1或DAC_CHANNEL_2返回值:同函數(shù)HAL_DAC_SetValue()8、DAC停止函數(shù):HAL_DAC_Stop(&DAC操作變量,通道號)函數(shù)原型:HAL_StatusTypeDefHAL_DAC_Stop(DAC_HandleTypeDef*hdac,uint32_tChannel)功能:給指定的DAC通道斷電,使其停止工作入口參數(shù):hdac,指出是哪個DAC操作變量,數(shù)據(jù)類型為DAC_HandleTypeDef,結(jié)構體變量Channel:指出是哪個通道,取值為DAC_CHANNEL_1或DAC_CHANNEL_2

返回值:同函數(shù)HAL_DAC_SetValue()軟硬件調(diào)試(1)修改程序,向變量DAC_OUT_Value送0。編譯生成后下載到開發(fā)板。(2)用萬用表測量PA4和PA5引腳,應該輸出0V左右的電壓。(3)修改程序,向變量DAC_OUT_Value送1000。編譯生成后下載到開發(fā)板。(4)用萬用表測量PA4和PA5引腳,應該輸出0.8V左右的電壓。(5)修改程序,向變量DAC_OUT_Value分別送2482、3000、4095,應該在PA4和PA5上得到相應的電壓。(6)按照自己的想法給DAC_OUT_Value賦值,運行后測一下輸出電壓是否和自己計算的一樣。(7)修改程序,測試12位右對齊、12位左對齊和8位右對齊格式下的輸出。說一說它們的區(qū)別。(8)進入在線調(diào)試模式,設斷點運行,觀察在各個斷點處DHR和DOR寄存器內(nèi)容的變化,體會DAC的工作過程。(9)想一想如果DAC采用軟件觸發(fā),程序該怎么編寫?試一下。軟硬件調(diào)試(1)修改程序,向變量DAC_OUT_Value送0。編譯生成后下載到開發(fā)板。(2)用萬用表測量PA4和PA5引腳,應該輸出0V左右的電壓。(3)修改程序,向變量DAC_OUT_Value送1000。編譯生成后下載到開發(fā)板。(4)用萬用表測量PA4和PA5引腳,應該輸出0.8V左右的電壓。(5)修改程序,向變量DAC_OUT_Value分別送2482、3000、4095,應該在PA4和PA5上得到相應的電壓。(6)按照自己的想法給DAC_OUT_Value賦值,運行后測一下輸出電壓是否和自己計算的一樣。(7)修改程序,測試12位右對齊、12位左對齊和8位右對齊格式下的輸出。說一說它們的區(qū)別。(8)進入在線調(diào)試模式,設斷點運行,觀察在各個斷點處DHR和DOR寄存器內(nèi)容的變化,體會DAC的工作過程。(9)想一想如果DAC采用軟件觸發(fā),程序該怎么編寫?試一下。LED亮度控制程序設計與調(diào)試要求:用外部中斷0和外部中斷3接收加鍵和減鍵輸入,改變

溫馨提示

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

評論

0/150

提交評論