![參考基于STM32的簡易數(shù)字電壓表的設(shè)計(jì)與實(shí)現(xiàn)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/641d953f-455e-41ec-9cd6-d6b9dc9fddbf/641d953f-455e-41ec-9cd6-d6b9dc9fddbf1.gif)
![參考基于STM32的簡易數(shù)字電壓表的設(shè)計(jì)與實(shí)現(xiàn)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/641d953f-455e-41ec-9cd6-d6b9dc9fddbf/641d953f-455e-41ec-9cd6-d6b9dc9fddbf2.gif)
![參考基于STM32的簡易數(shù)字電壓表的設(shè)計(jì)與實(shí)現(xiàn)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/641d953f-455e-41ec-9cd6-d6b9dc9fddbf/641d953f-455e-41ec-9cd6-d6b9dc9fddbf3.gif)
![參考基于STM32的簡易數(shù)字電壓表的設(shè)計(jì)與實(shí)現(xiàn)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/641d953f-455e-41ec-9cd6-d6b9dc9fddbf/641d953f-455e-41ec-9cd6-d6b9dc9fddbf4.gif)
![參考基于STM32的簡易數(shù)字電壓表的設(shè)計(jì)與實(shí)現(xiàn)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/641d953f-455e-41ec-9cd6-d6b9dc9fddbf/641d953f-455e-41ec-9cd6-d6b9dc9fddbf5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 課程設(shè)計(jì)報(bào)告學(xué) 院(系):機(jī)械電子工程學(xué)院專 業(yè):測控技術(shù)與儀器學(xué) 生 姓 名:學(xué) 號(hào):課程設(shè)計(jì)題目: 簡易數(shù)字電壓表起 迄 日 期:課程設(shè)計(jì)地點(diǎn):指 導(dǎo) 教 師: 目 錄第1章 簡易數(shù)字電壓表設(shè)計(jì)方案論證11.1 簡易數(shù)字電壓表的應(yīng)用意義11.2 本次課程設(shè)計(jì)的目的11.3 簡易數(shù)字電壓表設(shè)計(jì)的要求及技術(shù)指標(biāo)11.4 設(shè)計(jì)方案論證21.5 總體設(shè)計(jì)方案框圖及分析2第2章 簡易數(shù)字電壓表各單元電路設(shè)計(jì)22.1 a/d轉(zhuǎn)換及數(shù)據(jù)處理22.2 串口通信72.3 lcd顯示電路設(shè)計(jì)7第3章 電路原理圖和pcb板的設(shè)計(jì)8第4章 系統(tǒng)軟件程序設(shè)計(jì)9第5章 設(shè)計(jì)總結(jié)16參考文獻(xiàn)17 摘要本文以arm系列
2、的stm32芯片為核心設(shè)計(jì)了一個(gè)簡易數(shù)字電壓表。簡易數(shù)字電壓表采用模數(shù)轉(zhuǎn)換思想來實(shí)現(xiàn),通過硬件電路和軟件程序相結(jié)合,可輸出自定義測量電壓,通過調(diào)節(jié)模數(shù)轉(zhuǎn)換電位器使在一定范圍內(nèi)可任意改變。輸出的電壓格式和精度的改變通過軟件控制,輸出電壓的大小的改變通過硬件實(shí)現(xiàn)。介紹了的生成原理、硬件電路和軟件部分的設(shè)計(jì)原理。該簡易數(shù)字電壓表具有體積小、價(jià)格低、性能穩(wěn)定、功能齊全的優(yōu)點(diǎn)。關(guān)鍵詞:簡易數(shù)字電壓表;stm32f103;ad轉(zhuǎn)換; 第一章 簡易數(shù)字電壓表設(shè)計(jì)方案論證1.1 簡易數(shù)字電壓表的應(yīng)用意義數(shù)字電壓表簡稱dmv,它是采用數(shù)字化測量技術(shù)設(shè)計(jì)的電壓表。數(shù)字電壓表的優(yōu)良特性深受人們的青睞。具體有以下的應(yīng)
3、用特點(diǎn):a) 顯示清晰直觀,讀數(shù)準(zhǔn)確。b) 準(zhǔn)確度高。c) 分辨率高。d) 測量范圍寬。e) 擴(kuò)展能力強(qiáng)。f) 測量速度快。g) 輸入阻抗高。h) 集成度高、微功耗。h) 抗干擾能力強(qiáng) 1.2 本次課程設(shè)計(jì)的目的1) 了解stm32f103內(nèi)部a/d轉(zhuǎn)換性能及編程方法。2) 學(xué)會(huì)使用a/d轉(zhuǎn)換器進(jìn)行電壓信號(hào)采集。3) 了解ucosii系統(tǒng)工作原理。 1.3 簡易數(shù)字電壓表設(shè)計(jì)的要求及技術(shù)指標(biāo)設(shè)計(jì)要求:利用stm32f103內(nèi)部a/d及2.8寸tft液晶屏,設(shè)計(jì)完成一個(gè)數(shù)字電壓表。要求:數(shù)字電壓表可測量0-5v輸入電壓,電壓值通過液晶屏顯示。工作原理及設(shè)計(jì)思路:簡易數(shù)字電壓表的設(shè)計(jì)由a/d轉(zhuǎn)換.
4、數(shù)據(jù)處理及顯示控制等組成。利用stm32f103內(nèi)部a/d轉(zhuǎn)換器將模擬電壓轉(zhuǎn)換成數(shù)字量,經(jīng)stm32f103計(jì)算將數(shù)字量轉(zhuǎn)換成對應(yīng)的電壓值,并通過液晶屏輸出。 1.4.設(shè)計(jì)方案論證數(shù)字電壓表的基本組成部分是a/d變換器+電子計(jì)數(shù)器。通常,被測直流電壓經(jīng)a/d轉(zhuǎn)換器變?yōu)榕c之成正比的閘門時(shí)間,在此閘門時(shí)間內(nèi)計(jì)數(shù),用數(shù)字顯示被測電壓值??梢奱/d變換器是dvm的核心部件。本課設(shè)上采用的是單片a/d轉(zhuǎn)換器(含模擬電路與數(shù)字電路)集成在一片芯片上,配以lcd或led數(shù)字器件后能顯示a/d轉(zhuǎn)換結(jié)果的集成電路。它們均屬于大規(guī)模的集成電路,能以最簡的方式構(gòu)成dvm。在此采用icl7106a/d轉(zhuǎn)換器。但由于s
5、tm32f103內(nèi)部集成了a/d轉(zhuǎn)換器,所以不需要外圍的a/d轉(zhuǎn)換器,這就體現(xiàn)了stm32得集成特性。 1.5總體設(shè)計(jì)方案框圖及分析 lcd顯示stm32f103控制邏輯rc濾波器rc振蕩器 分頻器第二章 簡易數(shù)字電壓表各單元電路設(shè)計(jì)簡易數(shù)字電壓表的設(shè)計(jì)由a/d轉(zhuǎn)換.數(shù)據(jù)處理及顯示控制等組成。由于stm32f103集成了a/d轉(zhuǎn)換.數(shù)據(jù)處理部分,所以可以集中在一起研究,所以分成了兩部分。2.1 a/d轉(zhuǎn)換及數(shù)據(jù)處理1)基本型號(hào)介紹首先我們先研究stm32系列芯片的基本知識(shí)。由圖1可知stm32f103zet6有144個(gè)引腳,所以我們來了解他的基本型號(hào)與代碼之間的關(guān)系。 圖1stm32系列產(chǎn)品命
6、名規(guī)則 示例: stm32 f 103 c 8 t 6 a xxx 產(chǎn)品系列stm32 = 基于arm®s22的32位微控制器產(chǎn)品類型 f = 通用類型產(chǎn)品子系列101 = 基本型102 = usb基本型,usb 2.0全速設(shè)備103 = 增強(qiáng)型105或107 = 互聯(lián)型引腳數(shù)目t = 36腳 c = 48腳 r = 64 腳 v = 100腳 z = 144腳 閃存存儲(chǔ)器容量 4 = 16k字節(jié)的閃存存儲(chǔ)器 6 = 32k字節(jié)的閃存存儲(chǔ)器 8 = 64k字節(jié)的閃存存儲(chǔ)器 b = 128k字節(jié)的閃存存儲(chǔ)器 c = 256k字節(jié)的閃存存儲(chǔ)器 d = 384k字節(jié)的閃存存儲(chǔ)器 e = 5
7、12k字節(jié)的閃存存儲(chǔ)器封裝 h = bgat = lqfpu = vfqfpny = wlcsp 溫度范圍 6 = 工業(yè)級(jí)溫度范圍,-40°c85° c7 = 工業(yè)級(jí)溫度范圍, -40°c105°c內(nèi)部代碼a 或者空 (詳見產(chǎn)品數(shù)據(jù)手冊)選項(xiàng)xxx = 已編程的器件代號(hào)(3個(gè)數(shù)字)tr = 卷帶式包裝2) stm32系列的最小系統(tǒng)設(shè)計(jì)和獨(dú)立的a/d轉(zhuǎn)換器供電和參考電壓 最小系統(tǒng)主要包括調(diào)試接口.震蕩電路.引導(dǎo)設(shè)置.復(fù)位電路和供電系統(tǒng)。電路由穩(wěn)定的電源vdd供電。值得注意的是,如果使用adc,vdd的范圍必須在2.4-3.6v;如果沒有使用adc,vdd的
8、范圍為2-3.6v。啟動(dòng)模式選項(xiàng):由開關(guān)sw(boot0)和sw(boot1)配置。如圖2所示 圖2復(fù)位電路:復(fù)位信號(hào)是低有效,復(fù)位源包括復(fù)位按鈕jp3和連在連接器上的調(diào)試工具。如圖3 圖3時(shí)鐘源:兩個(gè)時(shí)鐘源被用于這個(gè)微控制器。lsex1用于嵌入式rtc的32.768khz晶振;hse x2用于stm32f103微控制器的8mhz晶振。如圖4所示 圖4去耦電容:去耦電容就是起到一個(gè)電池的作用,滿足驅(qū)動(dòng)電路電流的變化,避免相互間的耦合干擾。 由11個(gè)100nf的陶瓷電容和一個(gè)鉭電容組成。如圖5所示 圖5獨(dú)立的a/d轉(zhuǎn)換器供電和參考電壓:為了提高轉(zhuǎn)換的精確度,adc使用一個(gè)獨(dú)立的電源供電,過濾和屏
9、蔽來自印刷電路板上的毛刺干擾。 adc的電源引腳為vdda 獨(dú)立的電源地vssa 如果有vref-引腳(根據(jù)封裝而定),它必須連接到vssa。 100腳和144腳封裝: 為了確保輸入為低壓時(shí)獲得更好精度,用戶可以連接一個(gè)獨(dú)立的外部參考電壓adc到vref+和vref-腳上。在vref+的電壓范圍為2.4vvdda。 如圖6所示 圖63) stm32系列的內(nèi)adc轉(zhuǎn)換邏輯12位adc是一種逐次逼近型模擬數(shù)字轉(zhuǎn)換器。它有多達(dá)18個(gè)通道,可測量16個(gè)外部和2個(gè)內(nèi)部信號(hào)源。各通道的a/d轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。adc的結(jié)果可以左對齊或右對齊方式存儲(chǔ)在16位數(shù)據(jù)寄存器中。 模擬看門狗特性
10、允許應(yīng)用程序檢測輸入電壓是否超出用戶定義的高/低閥值。 adc的輸入時(shí)鐘不得超過14mhz,它是由pclk2經(jīng)分頻產(chǎn)生。adc主要特征 12位分辨率 轉(zhuǎn)換結(jié)束、注入轉(zhuǎn)換結(jié)束和發(fā)生模擬看門狗事件時(shí)產(chǎn)生中斷 單次和連續(xù)轉(zhuǎn)換模式 從通道0到通道n的自動(dòng)掃描模式 自校準(zhǔn) 帶內(nèi)嵌數(shù)據(jù)一致性的數(shù)據(jù)對齊 采樣間隔可以按通道分別編程 規(guī)則轉(zhuǎn)換和注入轉(zhuǎn)換均有外部觸發(fā)選項(xiàng) 間斷模式 雙重模式(帶2個(gè)或以上adc的器件) adc轉(zhuǎn)換時(shí)間: stm32f103xx增強(qiáng)型產(chǎn)品:時(shí)鐘為56mhz時(shí)為1s(時(shí)鐘為72mhz為1.17s) stm32f101xx基本型產(chǎn)品:時(shí)鐘為28mhz時(shí)為1s(時(shí)鐘為36mhz為1.55
11、s) stm32f102xxusb型產(chǎn)品:時(shí)鐘為48mhz時(shí)為1.2s stm32f105xx和stm32f107xx產(chǎn)品:時(shí)鐘為56mhz時(shí)為1s(時(shí)鐘為72mhz為1.17s) adc供電要求:2.4v到3.6v adc輸入范圍:vref- vin vref+ 規(guī)則通道轉(zhuǎn)換期間有dma請求產(chǎn)生。我們需要打開一個(gè)adc輸入端口,使外部的模擬量被采集,這樣才能通過內(nèi)部的adc轉(zhuǎn)換器和驅(qū)動(dòng)電路來實(shí)現(xiàn)轉(zhuǎn)換成數(shù)字量。采集模擬量的電路如圖7所示 圖7 控制邏輯有三個(gè)作用:第一,識(shí)別積分器的工作狀態(tài),適時(shí)發(fā)出控制信號(hào),使a/d 轉(zhuǎn)換正常進(jìn)行;第二,判定輸入電壓極性并控制lcd的負(fù)極性顯示。2.2 串口通
12、信由于微控制器的控制是通過編程語言來控制的,所以需要外設(shè)的串口來實(shí)現(xiàn)編程語言的讀寫。 通用異步收發(fā)器(uart)是一種串行接口,一般微處理器中都包含這種外設(shè)接口。異步串行接口提供了一種簡單的途徑,使兩個(gè)器件無需共享同一個(gè)時(shí)鐘信號(hào)就能進(jìn)行通信。如果再加入一個(gè)合適的電平轉(zhuǎn)換器max232,串口就能能用在rs232和rs485等網(wǎng)絡(luò)中實(shí)現(xiàn)通信,或者與計(jì)算機(jī)的com端口連接。串口只需兩根信號(hào)線(rx和tx)即可實(shí)現(xiàn),而且只要兩端器件都采用同樣的位格式和波特率,那么它們無需其它任何對方的信息就可以成功傳輸數(shù)據(jù)。電路圖如圖8所示 圖82.3 lcd顯示電路設(shè)計(jì)由于stm32是一種高集成芯片,所以在顯示液晶
13、屏電路上就少了很多附帶的驅(qū)動(dòng)電路,我們選用采用自帶驅(qū)動(dòng)模塊的液晶屏,這樣就少了外圍驅(qū)動(dòng)電路。lcd的顯示電路如圖9所示 圖9 第三章 電路原理圖與pcb板設(shè)計(jì)我們用電路板繪圖軟件protel,繪制電路原理圖并生成pcb板,在繪制完原理圖生成pcb板的布線與原件的排列方面有很多值得注意的問題,如地線與電源線必須加粗,盡量避免出現(xiàn)繞線的現(xiàn)象,因?yàn)檫@樣就增加了信號(hào)傳輸?shù)臅r(shí)間,盡量減少線的使用,相同器件盡量布在一起,這樣方便以后電路板的焊接等等規(guī)則。根據(jù)要求和以上的分析得到的原理圖與pcb板圖如圖10所示 第四章 系統(tǒng)軟件程序設(shè)計(jì)我們采用的是kilc-4編寫與燒入軟件,在kilc-4中建立項(xiàng)目并建立c
14、語言文件,在文件中編寫c語言程序,編寫完畢后在軟件中的選項(xiàng)flash中的configure flash tools中設(shè)置參數(shù),設(shè)置成適合cortex-m3嵌入式處理器stm32合適的參數(shù)。最后編譯檢查程序的正確與否,如果可以創(chuàng)建目標(biāo)文件則可以燒入微控制器中,否則檢查是否有錯(cuò)誤或是警告,排除錯(cuò)誤或是警告,最終實(shí)現(xiàn)創(chuàng)建目標(biāo),最后燒入火牛開發(fā)板,檢驗(yàn)程序是否符合設(shè)計(jì)要求,看液晶顯示屏上的檢測電壓是否隨著模擬輸入電位器的旋轉(zhuǎn)改變而改變。簡易數(shù)字電壓表的控制程序?yàn)椋猴@示程序.c :#include <stm32f10x_lib.h>#include "sys.h"#inc
15、lude "usart.h"#include "delay.h"#include "led.h" #include "lcd.h" #include "adc.h"int main(void) u16 adcx;float temp;float temperate; stm32_clock_init(9);/系統(tǒng)時(shí)鐘設(shè)置delay_init(72);/延時(shí)初始化/uart_init(72,9600); /串口1初始化 led_init();lcd_init(); adc_init();point
16、_color=red;/設(shè)置字體為紅色 lcd_showstring(60,50,"fire bull stm32"); lcd_showstring(60,70,"1 "); lcd_showstring(60,110,"2011/12/26");/顯示時(shí)間point_color=blue;/設(shè)置字體為藍(lán)色lcd_showstring(60,130,"temp_val:"); lcd_showstring(60,150,"temp_vol:0.000v");while(1)adcx=get_t
17、emp();lcd_shownum(132,130,adcx,4,16);/顯示adc的值temp=(float)adcx*(3.3/4096);temperate=temp;/保存溫度傳感器的電壓值adcx=temp;lcd_shownum(132,150,adcx,1,16); /顯示電壓值整數(shù)部分temp-=(u8)temp; /減掉整數(shù)部分 lcd_shownum(148,150,temp*1000,3,16);/顯示電壓小數(shù)部分 初始化程序.c:#include "sys.h"#include "usart.h"/mini stm32開發(fā)板/串
18、口1初始化 /正點(diǎn)原子alientek/2010/5/27/v1.3/支持適應(yīng)不同頻率下的串口波特率設(shè)置./加入了對printf的支持/增加了串口接收命令功能./加入以下代碼,支持printf函數(shù),而不需要選擇use microlib #if 1#pragma import(_use_no_semihosting) /標(biāo)準(zhǔn)庫需要的支持函數(shù) struct _file int handle; /* whatever you require here. if the only file you are using is */ /* standard output using printf() for
19、 debugging, no file handling */ /* is required. */ ; /* file is typedef d in stdio.h. */ file _stdout; /定義_sys_exit()以避免使用半主機(jī)模式 _sys_exit(int x) x = x; /重定義fputc函數(shù) int fputc(int ch, file *f) usart1->dr = (u8) ch; while(usart1->sr&0x40)=0);/循環(huán)發(fā)送,直到發(fā)送完畢 return ch;#endif /end/#ifdef en_usart1
20、_rx /如果使能了接收/串口1中斷服務(wù)程序/注意,讀取usartx->sr能避免莫名其妙的錯(cuò)誤 u8 usart_rx_buf64; /接收緩沖,最大64個(gè)字節(jié)./接收狀態(tài)/bit7,接收完成標(biāo)志/bit6,接收到0x0d/bit50,接收到的有效字節(jié)數(shù)目u8 usart_rx_sta=0; /接收狀態(tài)標(biāo)記 void usart1_irqhandler(void)u8 res; if(usart1->sr&(1<<5)/接收到數(shù)據(jù) res=usart1->dr; if(usart_rx_sta&0x80)=0)/接收未完成if(usart_rx_
21、sta&0x40)/接收到了0x0dif(res!=0x0a)usart_rx_sta=0;/接收錯(cuò)誤,重新開始else usart_rx_sta|=0x80;/接收完成了 else /還沒收到0x0dif(res=0x0d)usart_rx_sta|=0x40;elseusart_rx_bufusart_rx_sta&0x3f=res;usart_rx_sta+;if(usart_rx_sta>63)usart_rx_sta=0;/接收數(shù)據(jù)錯(cuò)誤,重新開始接收 #endif /初始化io 串口1/pclk2:pclk2時(shí)鐘頻率(mhz)/bound:波特率/check o
22、k/091209void uart_init(u32 pclk2,u32 bound) float temp;u16 mantissa;u16 fraction; temp=(float)(pclk2*1000000)/(bound*16);/得到usartdivmantissa=temp; /得到整數(shù)部分fraction=(temp-mantissa)*16; /得到小數(shù)部分 mantissa<<=4;mantissa+=fraction; rcc->apb2enr|=1<<2; /使能porta口時(shí)鐘 rcc->apb2enr|=1<<14;
23、 /使能串口時(shí)鐘 gpioa->crh=0x444444b4;/io狀態(tài)設(shè)置 rcc->apb2rstr|=1<<14; /復(fù)位串口1rcc->apb2rstr&=(1<<14);/停止復(fù)位 /波特率設(shè)置 usart1->brr=mantissa; / 波特率設(shè)置 usart1->cr1|=0x200c; /1位停止,無校驗(yàn)位.#ifdef en_usart1_rx /如果使能了接收/使能接收中斷usart1->cr1|=1<<8; /pe中斷使能usart1->cr1|=1<<5; /接收緩沖區(qū)
24、非空中斷使能 my_nvic_init(3,3,usart1_irqchannel,2);/組2,最低優(yōu)先級(jí) #endifadc驅(qū)動(dòng).c: #include <stm32f10x_lib.h>#include "adc.h"#include "delay.h"/adc 驅(qū)動(dòng)代碼 /初始化adc/這里我們僅以規(guī)則通道為例/我們默認(rèn)將開啟通道03 void adc_init(void) /先初始化io口 rcc->apb2enr|=1<<2; /使能porta口時(shí)鐘 gpioa->crl&=0xffff0000;/
25、pa0 1 2 3 anolog輸入/通道10/11設(shè)置 rcc->apb2enr|=1<<9; /adc1時(shí)鐘使能 rcc->apb2rstr|=1<<9; /adc1復(fù)位rcc->apb2rstr&=(1<<9);/復(fù)位結(jié)束 rcc->cfgr&=(3<<14); /分頻因子清零/sysclk/div2=12m adc時(shí)鐘設(shè)置為12m,adc最大時(shí)鐘不能超過14m!/否則將導(dǎo)致adc準(zhǔn)確度下降! rcc->cfgr|=2<<14; adc1->cr1&=0xf0ffff;
26、 /工作模式清零adc1->cr1|=0<<16; /獨(dú)立工作模式 adc1->cr1&=(1<<8); /非掃描模式adc1->cr2&=(1<<1); /單次轉(zhuǎn)換模式adc1->cr2&=(7<<17); adc1->cr2|=7<<17; /軟件控制轉(zhuǎn)換 adc1->cr2|=1<<20; /使用用外部觸發(fā)(swstart)!必須使用一個(gè)事件來觸發(fā)adc1->cr2&=(1<<11); /右對齊adc1->cr2|=1<
27、<23; /使能溫度傳感器adc1->sqr1&=(0xf<<20);adc1->sqr1&=0<<20; /1個(gè)轉(zhuǎn)換在規(guī)則序列中 也就是只轉(zhuǎn)換規(guī)則序列1 /設(shè)置通道03的采樣時(shí)間adc1->smpr2&=0xfffff000;/通道0,1,2,3采樣時(shí)間清空 adc1->smpr2|=7<<9; /通道3 239.5周期,提高采樣時(shí)間可以提高精確度 adc1->smpr2|=7<<6; /通道2 239.5周期,提高采樣時(shí)間可以提高精確度 adc1->smpr2|=7<&l
28、t;3; /通道1 239.5周期,提高采樣時(shí)間可以提高精確度 adc1->smpr2|=7<<0; /通道0 239.5周期,提高采樣時(shí)間可以提高精確度 adc1->smpr1&=(7<<18); /清除通道16原來的設(shè)置 adc1->smpr1|=7<<18; /通道16 239.5周期,提高采樣時(shí)間可以提高精確度 adc1->cr2|=1<<0; /開啟ad轉(zhuǎn)換器 adc1->cr2|=1<<3; /使能復(fù)位校準(zhǔn) while(adc1->cr2&1<<3); /等待
29、校準(zhǔn)結(jié)束 /該位由軟件設(shè)置并由硬件清除。在校準(zhǔn)寄存器被初始化后該位將被清除。 adc1->cr2|=1<<2; /開啟ad校準(zhǔn) while(adc1->cr2&1<<2); /等待校準(zhǔn)結(jié)束/該位由軟件設(shè)置以開始校準(zhǔn),并在校準(zhǔn)結(jié)束時(shí)由硬件清除 /獲得adc值/ch:通道值 03u16 get_adc(u8 ch) /設(shè)置轉(zhuǎn)換序列 adc1->sqr3&=0xffffffe0;/規(guī)則序列1 通道chadc1->sqr3|=ch; adc1->cr2|=1<<22; /啟動(dòng)規(guī)則轉(zhuǎn)換通道 while(!(adc1->
30、;sr&1<<1);/等待轉(zhuǎn)換結(jié)束 return adc1->dr;/返回adc值/得到adc采樣內(nèi)部溫度傳感器的值/取10次,然后平均u16 get_temp(void)u16 temp_val=0;u8 t;for(t=0;t<10;t+)temp_val+=get_adc(temp_ch);delay_ms(5);return temp_val/10;延時(shí)程序.c:#include <stm32f10x_lib.h>#include "delay.h"/使用systick的普通計(jì)數(shù)模式對延遲進(jìn)行管理/包括delay_us,d
31、elay_ms/2010/5/27/v1.2/修正了中斷中調(diào)用出現(xiàn)死循環(huán)的錯(cuò)誤/防止延時(shí)不準(zhǔn)確,采用do while結(jié)構(gòu)! static u8 fac_us=0;/us延時(shí)倍乘數(shù)static u16 fac_ms=0;/ms延時(shí)倍乘數(shù)/初始化延遲函數(shù)/systick的時(shí)鐘固定為hclk時(shí)鐘的1/8/sysclk:系統(tǒng)時(shí)鐘void delay_init(u8 sysclk)systick->ctrl&=0xfffffffb;/bit2清空,選擇外部時(shí)鐘 hclk/8fac_us=sysclk/8; fac_ms=(u16)fac_us*1000; /延時(shí)nms/注意nms的范圍/systick->load為24位寄存器,所以,最大延時(shí)為:/nms<=0xffffff*8*1000/sysclk/sysclk單位為hz,nms單位為ms/對72m條件下,nms<=1864 void delay_ms(u16 nms) u32 temp; systick->load=(u32)nms*fac_ms;/時(shí)間加載(systick->load為24bit)systick->val =0x00; /清空計(jì)數(shù)器systick->ctr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45198-2024老舊汽車估值評價(jià)規(guī)范
- STAT3-IN-39-生命科學(xué)試劑-MCE-5782
- ANO1-IN-4-生命科學(xué)試劑-MCE-2608
- 3-Methoxybenzeneboronic-acid-d3-3-Methoxyphenylboronic-acid-d-sub-3-sub-生命科學(xué)試劑-MCE-9929
- 二零二五年度電子產(chǎn)品銷售退換貨及售后服務(wù)協(xié)議
- 2025年度游戲工作室游戲市場調(diào)研分析師用工合同
- 二零二五年度生態(tài)旅游區(qū)集體土地入股聯(lián)營協(xié)議
- 2025年度電子商務(wù)消費(fèi)者權(quán)益保護(hù)合同協(xié)議
- 二零二五年度美容店轉(zhuǎn)讓合同含美容院品牌形象使用權(quán)及廣告推廣
- 二零二五年度綠色環(huán)保餐飲商鋪?zhàn)赓U協(xié)議
- 具有履行合同所必須的設(shè)備和專業(yè)技術(shù)能力的承諾函-設(shè)備和專業(yè)技術(shù)能力承諾
- 混床計(jì)算書(新)
- 1325木工雕刻機(jī)操作系統(tǒng)說明書
- 初中衡水體英語(28篇)
- 斯瓦希里語輕松入門(完整版)實(shí)用資料
- 復(fù)古國潮風(fēng)中國風(fēng)春暖花開PPT
- GB/T 2317.2-2000電力金具電暈和無線電干擾試驗(yàn)
- 機(jī)動(dòng)車輛保險(xiǎn)理賠實(shí)務(wù)2023版
- 病原微生物實(shí)驗(yàn)室標(biāo)準(zhǔn)操作規(guī)程sop文件
- 最完善的高速公路機(jī)電監(jiān)理細(xì)則
- 建筑工程技術(shù)資料管理.ppt
評論
0/150
提交評論