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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

DAC_HandleTypeDef

typedefstruct{DAC_TypeDef*Instance;

//待配置設(shè)備名,

DAC或DAC1,注意DAC、DAC2和DAC1都用一個(gè)名字

__IO

HAL_DAC_StateTypeDefState;

//狀態(tài)

HAL_LockTypeDef

Lock;

//鎖定

DMA_HandleTypeDef*DMA_Handle1;

//通道1DMA操作變量

DMA_HandleTypeDef*DMA_Handle2;

//通道2DMA操作變量

__IO

uint32_t

ErrorCode;

//錯(cuò)誤代碼……

……;

//其它}DAC_HandleTypeDef

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

HAL_DAC_SetValue(&DAC操作變量,通道號(hào),數(shù)據(jù)對(duì)齊格式,數(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,指出是哪個(gè)DAC操作變量,其數(shù)據(jù)類型為

DAC_HandleTypeDef,結(jié)構(gòu)體變量(2)Channel,指出是哪個(gè)通道,其取值為:DAC_CHANNEL_1或DAC_CHANNEL_2(3)Alignment,指出數(shù)據(jù)對(duì)齊格式,其取值為:DAC_ALIGN_12B_R(12位右對(duì)齊)、DAC_ALIGN_12B_L(12位左對(duì)齊)、DAC_ALIGN_8B_R(8位右對(duì)齊)(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的設(shè)置,初始化DAC,其數(shù)據(jù)類型為

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

*hdac)

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

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

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

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

空5、DAC通道設(shè)置變量數(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è)置函數(shù):HAL_DAC_ConfigChannel(&DAC操作變量,&DAC通道設(shè)置變量,通道號(hào))函數(shù)原型:HAL_StatusTypeDefHAL_DAC_ConfigChannel(DAC_HandleTypeDef*hdac,DAC_ChannelConfTypeDef*sConfig,uint32_tChannel)功能:按照sConfig的設(shè)置,對(duì)hdac和Channel指定的DAC通道進(jìn)行設(shè)置入口參數(shù):hdac,指出是哪個(gè)DAC操作變量,數(shù)據(jù)類型為DAC_HandleTypeDef,結(jié)構(gòu)體變量sConfig:指出如何進(jìn)行通道配置,數(shù)據(jù)類型為DAC_ChannelConfTypeDef,結(jié)構(gòu)體變量Channel:指出是哪個(gè)通道,取值為DAC_CHANNEL_1或DAC_CHANNEL_2返回值:

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

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

返回值:同函數(shù)HAL_DAC_SetValue()DAC程序設(shè)計(jì)DAC操作相關(guān)庫(kù)函數(shù)7、DAC啟動(dòng)函數(shù):HAL_DAC_Start(&DAC操作變量,通道號(hào))函數(shù)原型:HAL_StatusTypeDefHAL_DAC_Start(DAC_HandleTypeDef*hdac,uint32_tChannel)功能:(1)給指定的DAC通道上電

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論