




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機產品設計與制作
(stm32機型)項目7、利用DAC實現LED亮度控制任務7.1認識STM32單片機的DAC總目錄1項目1、利用GPIO和位帶操作實現溫度報警
2項目2、利用SysTick實現溫度報警與控制
3項目3、利用按鍵查詢實現參數設定及顯示
4項目4、利用外部中斷實現工件計數顯示
5項目5、利用定時器實現直流電動機PWM調速6項目6、利用計數器實現工件計數顯示和打包控制
7項目7、利用DAC實現LED亮度控制8項目8、利用ADC實現土壤濕度采集
項目總目標項目總目標具體工作任務利用STM32內部DAC控制LED亮度。亮度值可由按鍵設定。請進行方案設計、器件選型、電路和程序設計,并完成軟硬件調試。子目錄7項目7、利用外部中斷實現工件計數及顯示
7.1任務7.1 認識STM32單片機的DAC7.2任務7.2 方案及電路設計7.3任務7.3 程序設計7.4任務7.4 軟硬件深入(七)任務目標:了解STM32F103ZET6的DAC基本特性與原理,能看懂DAC結構框圖任務7.1認識STM32單片機的DAC分組討論自由發言,闡述對模擬量數字量的認識,查閱資料了解STM32的DAC。討論與發言舉一些例子說明自動化系統中哪些是模擬量,哪些是數字量。總結什么是模擬量,什么是數字量?二者有何區別?什么是DAC?什么是ADC?衡量ADC和DAC性能的指標有哪些?3、模擬信號的類型ADC和DAC設備允許的模擬信號多數為電壓、電流、電阻等。STM32F1xx的ADC是電壓輸入,允許輸入的范圍是VREF-
≤
VIN
≤
VREF+。STM32F1xx的DAC是電壓輸出,允許輸出的范圍也是VREF-
≤
VOUT
≤
VREF+。由于VREF-與VSSA接在一起,VREF-=0V,因此允許的模擬電壓輸入/輸出范圍就是0~VREF+。認識DAC和ADC4、DAC的位數及其影響ADC和DAC電路常見有8、12、14、16、24位等。STM32F1xx的ADC和DAC都是12位的。那么DAC的位數對其性能有什么影響呢?對于1位的DAC,如果VREF=3.3V,則理想狀態下,向DAC寫“0”時,引腳上輸出0V;向DAC寫“1”時,引腳上輸出3.3V。輸出電壓和數字的關系為:VOUT=D×3.3。向DAC寫入數值每增加或減小1,輸出電壓跳變3.3V。對于2位的DAC,可以向DAC寫“00”、“01”、“10”、“11”四個二進制數值,對應十進制為“0”、“1”、“2”、“3”。如果VREF=3.3V,則可將其設計為如下特性:向DAC寫“0”,即二進制“00”時,輸出電壓=0V;向DAC寫“1”,即二進制“01”時,輸出電壓=1.1V;向DAC寫“2”,即二進制“10”時,輸出電壓=2.2V;向DAC寫“3”,即二進制“11”時,輸出電壓=3.3V;輸出電壓和數字的關系為:VOUT=D×3.3/3。向DAC寫入數值每增加或減小1,輸出電壓跳變1.1V。認識DAC和ADC4、DAC的位數及其影響我們將DAC輸出電壓跳變的最小值稱為電壓分辨率。電壓跳變值越小,DAC的分辨率越高。分辨率越高,DAC的電壓控制越精細。顯然2位DAC比1位DAC的分辨率更高。繼續增大位數n,會怎樣呢?表7.1.1給出了VREF+=3.3V時,n=8、12、16三種情況下的數字量和電壓對應關系。表7.1.1VREF=3.3V時不同位數DAC的數字和電壓對應關系認識DAC和ADC位數數字電壓轉換公式及分辨率二進制十進制n=80000000000×3.3/255=0V轉換公式:VOUT=D×255/3.3分辨率:3.3/255≈13mV0000000111×3.3/255≈12.941mV0000001022×3.3/255≈25.882mV………………11111110254254×3.3/255≈3.287V11111111255255×3.3/255=3.3Vn=1200000000000000×3.3/4095=0V轉換公式:VOUT=D×4095/3.3分辨率:3.3/4095≈0.8mV00000000000111×3.3/4095≈0.806mV00000000001022×3.3/4095≈1.612mV………………11111111111140954095×3.3/4095=3.3Vn=16000000000000000000×3.3/65535=0V轉換公式:VOUT=D×65535/3.3分辨率:3.3/65535≈50μV000000000000000111×3.3/65535≈50.355μV000000000000001022×3.3/4095≈100.710μV………………11111111111111116553565535×3.3/65535=3.3V認識DAC結構
1、DAC結構框圖STM32F103的DAC結構如圖7.1.2所示。STM32F103DAC內部有兩個獨立的12位D/A轉換器,稱為DACx,x=1和2,它們是DAC的核心執行部件,能夠將DORx里存儲的數字量,轉換成0~VREF的模擬電壓,并輸出到DAC_OUTx引腳。DAC相關引腳除了DAC_OUTx(包括DAC_OUT1和DAC_OUT2),圖7.1.2中也標出了其它相關引腳。它們的功能及要求如表7.1.2所示。注意DAC_OUT1固定復用PA4,DAC_OUT2則復用PA5。認識STM32的DAC結構DAC相關引腳除了DAC_OUTx(包括DAC_OUT1和DAC_OUT2),圖7.1.2中也標出了其它相關引腳。它們的功能及要求如表7.1.2所示。注意DAC_OUT1固定復用PA4,DAC_OUT2則復用PA5。認識STM32的DAC結構名稱功能要求VDDA和VSSA供電電源正、負極2.4V≤VDDA≤VDD(最大不超過3.6V)VREF+和VREF-參考電源正、負極2.4V≤VREF+≤VDDAVREF-=VSSADAC_OUT1通道1的模擬電壓輸出復用PA4DAC_OUT2通道2的模擬電壓輸出復用PA5EXTI_9DAC外部觸發引腳復用尾號9的引腳例如PA9、PB9等,可指定4、DAC的數據寄存器DORx包括DOR1和DOR2,是數據輸出寄存器(DataOutputRegister),DORx的值決定了DACx輸出引腳上的電壓。例如DOR1=0,則DAC_OUT1引腳輸出0V;DOR1=4095,則DAC_OUT1引腳輸出電壓為VREF。DHRx是數據保持寄存器(DataHoldRegister)。編程時我們應將數據寫到DHRx里。DAC工作時,會按照一定的控制邏輯,將DHRx的值裝入DORx,之后進行D/A轉換。認識STM32的DAC結構DAC的數據疊加將DHRx的數據向DORx裝載時,有三種控制邏輯:不疊加:編程設置為不疊加時,直接將DHRx的數據向DORx裝載,不疊加任何其它數據。疊加偽噪聲:將DHRx的數據疊加上偽噪聲后,再裝載到DORx。疊加三角波:將DHRx的數據疊加上三角波后,再裝載到DORx。疊加偽噪聲的形式,或者疊加三角波的幅度,都可以編程設定,感興趣的可閱讀《STM32F1xx參考手冊》。本項目主要學習不疊加模式。認識STM32的DAC結構認識STM32的DAC結構DAC控制寄存器DAC控制寄存器能夠根據程序設置,發出諸如ENx、TSELx、TENx、DMAENx、WAVENx、MAMPx等命令,控制DAC1和DAC2的工作。例如編程使能DAC1則EN1=1,只有EN1=1,DAC1才能夠工作。再例如設置DAC2使能和不疊加,則EN2=1和WAVEN2=00,這種情況下DAC控制寄存器會控制DHR2中的數據直接進入DOR2不做任何疊加。認識STM32的DAC結構DAC的觸發DHR向DOR的裝載還需要觸發信號。可以編程設置為如下幾種觸發方式:外部觸發使能禁止(TENx=0)TEN就是TriggerEnable(觸發使能)。如果編程為“觸發使能禁止”,則CPU執行該語句后DAC控制器會發出TENx=0信號。這種情況下,不需要任何額外的觸發信號。向DHRx寄存器寫數據后,數據會自動裝入DORx,然后進行D/A轉換并向對應引腳輸出模擬電壓。2.如果編程設置為“觸發使能允許”,則執行后,DAC還需要一個額外的觸發信號,才能將DHRx中的數據裝入DORx。可以編程指定觸發源TSELx(TriggerSelection)來自以下八種之一:SWTRIGx(SoftWareTrigger),軟件觸發:DAC軟件觸發寄存器的SWTRIGx被軟件置位時,觸發對應通道的數據裝載。TIM2_TRGO、TIM4_TRGO~TIM8_TRGO,定時器TRGO事件觸發:當指定定時器(例如TIM2)發生TRGO事件時觸發數據裝載。EXTI_9,外部中斷9引腳觸發:當EXTI_9引腳上輸入有效信號時觸發數據裝載。本項目重點學習外部觸發禁止和軟件觸發兩種方式。認識STM32的DAC結構單DAC和雙DAC模式在STM32F1xxDAC內部,DHR寄存器實際上有9個,如圖7.1.3所示。DHR1和DHR2各有3個寄存器,它們在單DAC模式下工作。DHRD有3個寄存器,在雙DAC模式下工作。單DAC模式如圖(a)所示,兩個DAC獨立工作。向DHR12Rx、DHR12Lx或者DHR8Rx(x=1或2)六個寄存器中的任何一個寫數據,數據將按一定規則送到DORx寄存器。雙DAC的模式如圖(b)所示,向DHR12RD、DHR12LD或者DHR8RD三個寄存器中的任意一個寫數據,數據可以按照一定的規則同時或者分時送到DOR1和DOR2寄存器。本項目主要學習單DAC模式。圖7.1.3單DAC模式和雙DAC模式認識STM32的DAC結構DAC的數據對齊格式STM32F103的DAC是12位的,每個通道的DOR寄存器只需要12位數據。但是編程時,向圖7.1.3中的DHR寄存器寫入的數據是32位的。數據對齊格式規定了如何將12位數據存儲在32位里。共有12位右對齊、12位左對齊和8位右對齊三種格式。(1)單DAC模式以通道1為例,如果希望DAC_OUT1引腳輸出2V電壓,按照12位D/A轉換公式,應向DOR1寄存器送數據2V×4095/VREF=2V×4095/(3.3V)=2482,對應12位二進制數為100110110010。如果以12位右對齊格式寫數據,應將數據寫到DHR12R1寄存器,如圖7.1.4(a)所示。其規則是:將12位數據靠右(Right)放在D11~D0,D15~D12位補“0”,D31~D16不用。不用的位,是“1”還是“0”都不會對數值有影響,一般可以簡單地認為其值為“0”。12位右對齊這種格式,不會改變數據大小,除非數據大于4095。如果以12位左對齊格式寫數據,應將數據寫到DHR12L1寄存器,如圖(b)所示。其規則是:將12位數據靠左(Left)放在D15~D4,D3~D0位補“0”。相當于將數據左移4位,數據大小變為原來的16倍。如果以8位右對齊格式寫數據,應將數據寫到DHR8R1寄存器,如圖(c)所示。其規則是:將12位數據的最低4位舍棄,只留下8位,然后靠右(Right)存放,高8位補“0”。相當于數據被右移了4位,此時數據大小變為原來的1/16。以上以DOR1為例,DOR2也如此。表7.1.3三種數據格式下的DAC計算公式數據對齊格式轉換公式分辨率12位右對齊DDHR=VOUT×4095/VREFVREF/4095,DDHR每改變1,VOUT跳變一個12位分辨率12位左對齊DDHR=(VOUT×4095/VREF)×16=VOUT×65520/VREFVREF/4095,DDHR每改變16,VOUT跳變一個12位分辨率8位右對齊DDHR=(VOUT×4095/VREF)/16=VOUT×255/VREFVREF/255,DDHR每改變1,VOUT跳變一個8位分辨率認識STM32的DAC結構編程時,如果指定為12位右對齊格式,仍可按照DDHR=VOUT×4095/VREF公式,計算待輸出數字量的大小。注意DDHR應小于等于4095。如果指定為12位左對齊格式,應將數據乘16,才可得到同樣的電壓輸出。即公式變為:DDHR=(VOUT×4095/VREF)×16=VOUT×65520/VREF,注意D應小于等于65520。如果指定為8位右對齊格式,應將數據除16,才可得到同樣的電壓輸出。即公式變為:D=(VOUT×4095/VREF)/16=VOUT×255/VREF,注意D應小于等于255。12位右對齊格式下,輸出電壓的分辨率是VREF/4095。數字D每增加或減小1,輸出電壓跳變VREF/4095伏特,即一個12位分辨率電壓。認識STM32的DAC結構(2)雙DAC模式雙DAC模式下,使用DHRD(D:Double)寄存器,存儲規則如圖7.1.5所示。寫一次數據,可以同時影響DOR1和DOR2兩個寄存器。圖7.1.5雙DAC的數據寄存器和數據對齊格式10、DAC的上電上電是DAC工作的前提。編程設置DAC通道x使能,執行后DAC控制寄存器會發出ENx=1(Enable)信號,這將使DAC通道x上電,編程設置DAC通道x禁止,執行后DAC控制寄存器會發出ENx=0信號,這將使DAC通道x斷電并停止工作。認識STM32的DAC結構
認識STM32的DAC結構項目總目標1、理解DAC(Digital
toAnalogConverter)模/數轉換器的基本概念與術語;2、了解STM32內部DAC的結構與特性。3、掌握基于STM32F103ZET6DAC的電路設計方法。4、掌握STM32基于HAL庫函數的ADC操作編程方法;5、會查找相關資料、閱讀相關文獻。單片機產品設計與制作
(stm32機型)石梅香項目7、利用DAC實現LED亮度控制任務7.2認識STM32單片機的DAC總目錄1項目1、利用GPIO和位帶操作實現溫度報警
2項目2、利用SysTick實現溫度報警與控制
3項目3、利用按鍵查詢實現參數設定及顯示
4項目4、利用外部中斷實現工件計數顯示
5項目5、利用定時器實現直流電動機PWM調速6項目6、利用計數器實現工件計數顯示和打包控制
7項目7、利用DAC實現LED亮度控制8項目8、利用ADC實現土壤濕度采集
項目總目標項目總目標具體工作任務利用STM32內部DAC控制LED亮度。亮度值可由按鍵設定。請進行方案設計、器件選型、電路和程序設計,并完成軟硬件調試。子目錄7項目7、利用外部中斷實現工件計數及顯示
7.1任務7.1 認識STM32單片機的DAC7.2任務7.2 方案及電路設計7.3任務7.3 程序設計7.4任務7.4 軟硬件深入(七)任務7.2方案及電路設計一、任務要求1、能夠查閱相關技術資料,結合電路、電子、傳感器等基礎知識進行系統方案設計和器件選型;2、能夠針對設計任務進行研討和表達。3、能夠讀懂利用STM32DAC的LED亮度控制電路。并能夠根據控制要求的變化對電路進行適應性修改。討論用PWM和DAC控制LED亮度的不同之處。討論與發言方案設計單片機產品設計與制作
(stm32機型)石梅香項目7、利用DAC實現LED亮度控制任務7.3程序設計與調試總目錄1項目1、利用GPIO和位帶操作實現溫度報警
2項目2、利用SysTick實現溫度報警與控制
3項目3、利用按鍵查詢實現參數設定及顯示
4項目4、利用外部中斷實現工件計數顯示
5項目5、利用定時器實現直流電動機PWM調速6項目6、利用計數器實現工件計數顯示和打包控制
7項目7、利用DAC實現LED亮度控制8項目8、利用ADC實現土壤濕度采集
項目總目標項目總目標具體工作任務利用STM32內部DAC控制LED亮度。亮度值可由按鍵設定。請進行方案設計、器件選型、電路和程序設計,并完成軟硬件調試。子目錄7項目7、利用外部中斷實現工件計數及顯示
7.1任務7.1 認識STM32單片機的DAC7.2任務7.2 方案及電路設計7.3任務7.3 程序設計7.4任務7.4 軟硬件深入(七)任務7.3程序設計與調試一、任務要求1、能根據任務需求繪制程序流程圖;2、能夠讀懂程序并根據需求變化對DAC程序進行適應性修改分組討論要利用DAC實現LED亮度控制任務,程序大致應該完成哪些工作。討論與發言程序流程設計圖7.3.1單通道、查詢法程序流程程序布局程序框架如圖7.3.2所示,可從之前的工程復制而來,注意:(1)HARDWARE文件夾中需要增加一個DAC文件夾,內有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的各種操作。其具體內容參見表7.3.1。(2)第5行定義變量DAC_OUT_Value,用于存儲準備送到DAC數據保持寄存器DHR的數據,該數據的大小決定了DAC輸出電壓。(3)第10行調用函數DAC_Init()對DAC初始化。該函數具體內容見表7.3.1。(4)第13~20行用于測試DAC_OUT_Value送不同數值時對應的模擬電壓輸出。其中:(5)第13~17行用于向DAC_OUT_Value送不同數值。(6)第18、20行調用庫函數HAL_DAC_SetValue()向兩個DAC通道傳送待轉換數值。主程序設計與調試DAC程序設計DAC程序設計DAC操作相關庫函數1、DAC操作變量數據類型:
DAC_HandleTypeDef
typedefstruct{DAC_TypeDef*Instance;
//待配置設備名,
DAC或DAC1,注意DAC、DAC2和DAC1都用一個名字
__IO
HAL_DAC_StateTypeDefState;
//狀態
HAL_LockTypeDef
Lock;
//鎖定
DMA_HandleTypeDef*DMA_Handle1;
//通道1DMA操作變量
DMA_HandleTypeDef*DMA_Handle2;
//通道2DMA操作變量
__IO
uint32_t
ErrorCode;
//錯誤代碼……
……;
//其它}DAC_HandleTypeDef
;2、DAC賦值函數:
HAL_DAC_SetValue(&DAC操作變量,通道號,數據對齊格式,數據)原型:HAL_StatusTypeDef
HAL_DAC_SetValue(DAC_HandleTypeDef
*hdac,uint32_t
Channel,
uint32_t
Alignment,
uint32_t
Data)功能:將數據Data送到hdac和Channel指定的DAC通道,數據格式是Alignment入口參數:(1)hdac,指出是哪個DAC操作變量,其數據類型為
DAC_HandleTypeDef,結構體變量(2)Channel,指出是哪個通道,其取值為:DAC_CHANNEL_1或DAC_CHANNEL_2(3)Alignment,指出數據對齊格式,其取值為:DAC_ALIGN_12B_R(12位右對齊)、DAC_ALIGN_12B_L(12位左對齊)、DAC_ALIGN_8B_R(8位右對齊)(4)Data,待傳送數據,數據類型為
uint32_t返回值:類型為HAL_StatusTypeDef,返回結果有4種:HAL_OK=0x00;
HAL_ERROR=0x01;
HAL_BUSY=0x02;
HAL_TIMEOUT=0x033、DAC初始化函數:
HAL_DAC_Init(&DAC操作變量)函數原型:HAL_StatusTypeDef
HAL_DAC_Init
(DAC_HandleTypeDef*hdac)功能:(1)按照變量hdac的設置,初始化DAC,其數據類型為
DAC_HandleTypeDef,結構體變量(2)調用__weakvoidHAL_DAC_MspInit(DAC_HandleTypeDef
*hdac)
庫函數(3)返回操作結果入口參數:hdac,指出如何進行DAC初始化,其數據類型為
DAC_HandleTypeDef,結構體變量返回值:
同函數HAL_DAC_SetValue()DAC程序設計DAC操作相關庫函數4、DAC初始化隱性調用函數:HAL_DAC_MspInit(DAC_HandleTypeDef*hdac)原型:__weak
voidHAL_DAC_MspInit(DAC_HandleTypeDef*hdac)功能:針對DAC操作變量hdac,執行本函數的內容說明:本函數在庫中被定義為__weak(弱)型,函數內容可根據用戶需要自定義返回值:
空5、DAC通道設置變量數據類型:DAC_ChannelConfTypeDef
typedefstruct{ uint32_t
DAC_Trigger;
//觸發方式,有以下取值:DAC_TRIGGER_NONE(不需要外部觸發)、//DAC_TRIGGER_EXT_IT9(外部中斷9觸發)、//DAC_TRIGGER_T2_TRGO(TIM2TRGO事件觸發)、//DAC_TRIGGER_T4_TRGO(TIM4TRGO事件觸發)、//DAC_TRIGGER_T5_TRGO~DAC_TRIGGER_T8_TRGO(TIM5~TIM8TRGO事件觸發)uint32_t
DAC_OutputBuffer;
//DAC輸出緩沖器,有兩種取值:DAC_OUTPUTBUFFER_ENABLE(允許)、
//DAC_OUTPUTBUFFER_DISABLE(禁止)}DAC_ChannelConfTypeDef;6、DAC通道設置函數:HAL_DAC_ConfigChannel(&DAC操作變量,&DAC通道設置變量,通道號)函數原型:HAL_StatusTypeDefHAL_DAC_ConfigChannel(DAC_HandleTypeDef*hdac,DAC_ChannelConfTypeDef*sConfig,uint32_tChannel)功能:按照sConfig的設置,對hdac和Channel指定的DAC通道進行設置入口參數:hdac,指出是哪個DAC操作變量,數據類型為DAC_HandleTypeDef,結構體變量sConfig:指出如何進行通道配置,數據類型為DAC_ChannelConfTypeDef,結構體變量Channel:指出是哪個通道,取值為DAC_CHANNEL_1或DAC_CHANNEL_2返回值:
同函數HAL_DAC_SetValue()7、DAC啟動函數:HAL_DAC_Start(&DAC操作變量,通道號)函數原型:HAL_StatusTypeDefHAL_DAC_Start(DAC_HandleTypeDef*hdac,uint32_tChannel)功能:(1)給指定的DAC通道上電
(2)如果是軟件觸發,則發一個觸發信號,將DHR中的數據裝入DOR入口參數:hdac,指出是哪個DAC操作變量,數據類型為DAC_HandleTypeDef,結構體變量Channel:指出是哪個通道,取值為DAC_CHANNEL_1或DAC_CHANNEL_2返回值:同函數HAL_DAC_SetValue()8、DAC停止函數:HAL_DAC_Stop(&DAC操作變量,通道號)函數原型:HAL_StatusTypeDefHAL_DAC_Stop(DAC_HandleTypeDef*hdac,uint32_tChannel)功能:給指定的DAC通道斷電,使其停止工作入口參數:hdac,指出是哪個DAC操作變量,數據類型為DAC_HandleTypeDef,結構體變量Channel:指出是哪個通道,取值為DAC_CHANNEL_1或DAC_CHANNEL_2
返回值:同函數HAL_DAC_SetValue()DAC程序設計DAC操作相關庫函數7、DAC啟動函數:HAL_DAC_Start(&DAC操作變量,通道號)函數原型:HAL_StatusTypeDefHAL_DAC_Start(DAC_HandleTypeDef*hdac,uint32_tChannel)功能:(1)給指定的DAC通道上電
(2)如果是軟件觸發,則發一個觸發信號,將DHR中的數據裝入DOR入口參數:hdac,指出是哪個DAC操作變量,數據類型為DAC_HandleTypeDef,結構體變量Channel:指出是哪個通道,取值為DAC_CHANNEL_1或DAC_CHANNEL_2返回值:同函數HAL_DAC_SetValue()8、DAC停止函數:HAL_DAC_Stop(&DAC操作變量,通道號)函數原型:HAL_StatusTypeDefHAL_DAC_Stop(DAC_HandleTypeDef*hdac,uint32_tChannel)功能:給指定的DAC通道斷電,使其停止工作入口參數:hdac,指出是哪個DAC操作變量,數據類型為DAC_HandleTypeDef,結構體變量Channel:指出是哪個通道,取值為DAC_CHANNEL_1或DAC_CHANNEL_2
返回值:同函數HAL_DAC_SetValue()軟硬件調試(1)修改程序,向變量DAC_OUT_Value送0。編譯生成后下載到開發板。(2)用萬用表測量PA4和PA5引腳,應該輸出0V左右的電壓。(3)修改程序,向變量DAC_OUT_Value送1000。編譯生成后下載到開發板。(4)用萬用表測量PA4和PA5引腳,應該輸出0.8V左右的電壓。(5)修改程序,向變量DAC_OUT_Value分別送2482、3000、4095,應該在PA4和PA5上得到相應的電壓。(6)按照自己的想法給DAC_OUT_Value賦值,運行后測一下輸出電壓是否和自己計算的一樣。(7)修改程序,測試12位右對齊、12位左對齊和8位右對齊格式下的輸出。說一說它們的區別。(8)進入在線調試模式,設斷點運行,觀察在各個斷點處DHR和DOR寄存器內容的變化,體會DAC的工作過程。(9)想一想如果DAC采用軟件觸發,程序該怎么編寫?試一下。軟硬件調試(1)修改程序,向變量DAC_OUT_Value送0。編譯生成后下載到開發板。(2)用萬用表測量PA4和PA5引腳,應該輸出0V左右的電壓。(3)修改程序,向變量DAC_OUT_Value送1000。編譯生成后下載到開發板。(4)用萬用表測量PA4和PA5引腳,應該輸出0.8V左右的電壓。(5)修改程序,向變量DAC_OUT_Value分別送2482、3000、4095,應該在PA4和PA5上得到相應的電壓。(6)按照自己的想法給DAC_OUT_Value賦值,運行后測一下輸出電壓是否和自己計算的一樣。(7)修改程序,測試12位右對齊、12位左對齊和8位右對齊格式下的輸出。說一說它們的區別。(8)進入在線調試模式,設斷點運行,觀察在各個斷點處DHR和DOR寄存器內容的變化,體會DAC的工作過程。(9)想一想如果DAC采用軟件觸發,程序該怎么編寫?試一下。LED亮度控制程序設計與調試要求:用外部中斷0和外部中斷3接收加鍵和減鍵輸入,改變亮度設定值。圖7.3.4
利用DAC實現LED亮度控制程序流程程序框架要求:用外部中斷0和外部中斷3接收加鍵和減鍵輸入,改變亮度設定值。圖7.3.5
程序框架程序設計主程序程序設計中斷程序程序調試(1)用導線將開發板上的PA4和PC1引腳、PA5和PC2引腳連接在一起,以便能夠觀察LED亮度變化。(2)對程序進行編輯、編譯、生成后,下載到開發板。由于DAC_OUT_Value初始值=0,可見到兩個LED都是點亮的。(3)多次點按K_UP鍵后,可觀察到亮度開始逐漸減小直至滅掉。(4)多次點按K_DOWN鍵后,可觀察到亮度開始逐漸增大直至最大。(5)修改exti.c的第42和46行,使DAC_OUT_Value每次加1或減1,看看是什么效果?(6)修改exti.c的第42和46行,使DAC_OUT_Value每次加5或減5,看看是什么效果?(7)修改exti.c的第51行,使DAC_OUT_Value限幅值為4095;再修改主程序,使數據格式變為12位右對齊,看看是什么效果?項目總目標1、理解DAC(Digital
toAnalogConverter)模/數轉換器的基本概念與術語;2、了解STM32內部DAC的結構與特性。3、掌握基于STM32F103ZET6DAC的電路設計方法。4、掌握STM32基于HAL庫函數的ADC操作編程方法;5、會查找相關資料、閱讀相關文獻。單片機產品設計與制作
(stm32機型)石梅香項目7、利用DAC實現LED亮度控制任務7.4
STM32軟硬件深入(七)總目錄1項目1、利用GPIO和位帶操作實現溫度報警
2項目2、利用SysTick實現溫度報警與控制
3項目3、利用按鍵查詢實現參數設定及顯示
4項目4、利用外部中斷實現工件計數顯示
5項目5、利用定時器實現直流電動機P
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年三八婦女節特色主題活動方案內容
- 2025年秋季幼兒園交通安全工作計劃方案
- 汽車使用與維護 課件 1.3.2 汽車方向盤的操作方法和使用注意事項
- 高三上學期開學第一課(1)主題班會課件
- 7.3定義、命題、定理(第1課時)課件2024-2025學年人教版數學2024
- 2025年甲基紅項目可行性研究報告
- 2025年環保裝飾板材項目可行性研究報告
- 2025年特級新生精致嬰牛血清項目可行性研究報告
- 2025年牙雕印章項目可行性研究報告
- 望都縣2025年數學三下期末學業質量監測試題含解析
- 美國憲法全文(中、英文版)
- 初中歷史課件:中國古代科技發展史
- 安全閥管理臺賬
- 腫瘤科運用PDCA循環提高疼痛評估的規范率品管圈成果匯報
- 經歷是流經裙邊的水
- 胎兒心臟超聲檢查課件詳解
- 2023年06月天津市便民專線服務中心招考聘用合同制員工筆試題庫含答案解析
- 2023年高速公路監理工程師質量目標責任書
- 抖音政務號運營建設方案版
- 醫學檢驗心壁的組織結構
- 《小池》說課稿 小學一年級語文教案PPT模板下載
評論
0/150
提交評論