国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

STM32單片機(jī)定時(shí)數(shù)據(jù)采集系統(tǒng)參數(shù)設(shè)置與編程

2022-04-25 07:20:10魏永生
電子元器件與信息技術(shù) 2022年3期
關(guān)鍵詞:分頻器計(jì)數(shù)器寄存器

魏永生

(吉林通用航空職業(yè)技術(shù)學(xué)院,吉林 吉林 132000)

0 引言

制作一個(gè)模擬量定時(shí)采集轉(zhuǎn)換數(shù)據(jù)采集卡,其采集電壓在5V以內(nèi),要求定時(shí)控制采集,根據(jù)控制硬件要求,單片機(jī)芯片選用STM32F103C8T6芯片,該芯片具有ARM32-bit Cortex-M3內(nèi)核,2個(gè)12bit的ADC,型號(hào)中的C代表引腳數(shù)目是48腳,8代表閃存存儲(chǔ)容量為64K,T代表封裝,6代表工業(yè)級(jí),工作溫度最低為-40℃,可在北方冬季野外使用。STM32系列的單片機(jī)適用于C語(yǔ)言進(jìn)行編程燒錄[1],所以本次程序設(shè)計(jì)采用C語(yǔ)言編程,編譯環(huán)境為keil5編程軟件,下載器為ST-LINK。

1 相關(guān)IO口設(shè)置

STM32的ADC輸入通道和AVR類似,采用PA口引腳作為ADC輸入端,此次數(shù)據(jù)采集的接口ADC通道0在PA0上,要設(shè)置PA0為模擬輸入模式,這里先完成STM32 I/O口的初始化與編程,以設(shè)置PA0為模擬輸入模為例,程序?yàn)?

GPIO_InitTypeDef GPIO_InitStructure;

//定義一個(gè)結(jié)構(gòu)體變量

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//賦值0X0,模擬輸入模式

第一條語(yǔ)句定義了一個(gè)變量名為G P I O _InitStructure的變量,是一個(gè)私有數(shù)據(jù)聲明,變量定義了之后,可將某一GPIO口的對(duì)應(yīng)位初始化,之所以這么定義,是因?yàn)镾TM32的初始化函數(shù)多采用結(jié)構(gòu)體形式,C語(yǔ)言中,typedef是用于定義新的類型名,在編譯時(shí)可以用新定義的類型名來(lái)代替已有的類型名,在STM32的頭文件中已有的GPIO初始化程序段:

Typedef struct{GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDefGPIO_Mode;}

GPIO_InitTypeDef;

上面的初始化IO口函數(shù)中,用typedef定義了一個(gè)GPIO_InitTypeDef類型名的結(jié)構(gòu)體,所以在編程時(shí)可以在主函數(shù)開(kāi)頭用這個(gè)結(jié)構(gòu)體再定義一個(gè)變量。初始化定義后還要通過(guò)

GPIO_Init(GPIOA , &GPIO_InitStructure)程序?qū)⒔Y(jié)構(gòu)體變量地址以實(shí)參的形式送給形參

GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct),其中* GPIO_InitStruct是指向結(jié)構(gòu)GPIO_InitTypeDef的指針。同樣,ADC的定時(shí)觸發(fā)還要設(shè)置TIM2的CH2通道為復(fù)用推挽輸出,此時(shí)對(duì)應(yīng)的IO位的輸出數(shù)據(jù)不是由GPIO的輸出數(shù)據(jù)寄存器ODR提供,而是由對(duì)應(yīng)的功能模塊來(lái)提供數(shù)據(jù)進(jìn)行推挽輸出。

STM32的單片機(jī)引腳允許輸入電壓為3.3V,對(duì)于要采集的最大值為5V的電壓模擬量要通過(guò)兩個(gè)電阻串聯(lián)分壓,這里采用一個(gè)100K精密可調(diào)電位器來(lái)完成電壓變換。

2 定時(shí)器與ADC的時(shí)鐘計(jì)算

要繼續(xù)編程,還要清楚單片機(jī)時(shí)鐘源,而STM32的5個(gè)時(shí)鐘從來(lái)源可分為內(nèi)部RC振蕩器和石英晶體振蕩器兩類。石英晶體能夠產(chǎn)生一種穩(wěn)定的正弦波,但頻率比較低,為了獲得較高頻率,STM32單片機(jī)采用了PLL鎖相環(huán)倍頻輸出,PLL一般選高速外部時(shí)鐘HSE作為時(shí)鐘源,連接關(guān)系如圖1所示,當(dāng)HSE為8M晶振時(shí),通過(guò)設(shè)置PLL的倍頻因子為9,得到72MHz官方推薦的穩(wěn)定運(yùn)行PLLCLK時(shí)鐘,當(dāng)系統(tǒng)時(shí)鐘SYSCLK通過(guò)時(shí)鐘監(jiān)視系統(tǒng)選擇PLLCLK時(shí)鐘時(shí),SYSCLK就為穩(wěn)定的72MHz。接下來(lái)AHB總線(advanced high performance bus)的分頻器將系統(tǒng)時(shí)鐘SYSCLK分頻后得到AHB總線時(shí)鐘,一般設(shè)置分頻系數(shù)為1,AHB總線時(shí)鐘也是72MHz。AHB總線時(shí)鐘送給5大模塊使用,本次項(xiàng)目涉及的是外圍總線APB(advanced peripheral bus)時(shí)鐘,其按外設(shè)使用速度又分為APB1和APB2兩個(gè)外設(shè)總線時(shí)鐘。

圖1 STM32 單片機(jī)外設(shè)時(shí)鐘源示意圖

如圖1所示,高速設(shè)備使用的時(shí)鐘PCLK2來(lái)自APB2分頻器,主要供給UART1、SPI1、Timer1、ADC1、ADC2、PA~PE普通IO口等,分頻因子一般設(shè)置為1分頻,即PCLK2等于系統(tǒng)時(shí)鐘72M。低速外設(shè)使用的時(shí)鐘為PCLK1,是由APB1預(yù)分頻2分頻得到的低速總線時(shí)鐘,所以最高為36M,供給通用定時(shí)器、CAN、USB、I2C1、I2C2、UART2、3等,模擬接口PA0的時(shí)鐘來(lái)自于APB2,時(shí)鐘是通過(guò)開(kāi)關(guān)電路供給的,開(kāi)啟接口A時(shí)鐘程序程如下:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//開(kāi)啟GPIOA的時(shí)鐘

定時(shí)采集要用到定時(shí)器,STM32F103C8T6是中容量的芯片,有1個(gè)高級(jí)16位定時(shí)器TIME1和3個(gè)16位通用定時(shí)器 TIME2~TIME4。通用定時(shí)器主要由16位計(jì)數(shù)器和與其相關(guān)的自動(dòng)裝載寄存器、16位預(yù)分頻器和4個(gè)獨(dú)立通道構(gòu)成。計(jì)數(shù)器可以向上計(jì)數(shù)、向下計(jì)數(shù)或者向上向下雙向計(jì)數(shù)。如圖1所示,通用定時(shí)器的內(nèi)部時(shí)鐘CK_INT(Clock Internal)不是直接來(lái)自APB1,而是來(lái)自于APB1的后一級(jí)的一個(gè)倍頻器,如TIM 2MUL,當(dāng)APB1的預(yù)分頻系數(shù)為1時(shí),這個(gè)倍頻器不起作用,定時(shí)器的時(shí)鐘頻率等于APB1的頻率;當(dāng)APB1的預(yù)分頻系數(shù)為其他數(shù)值(即預(yù)分頻系數(shù)為2、4、8或16)時(shí),這個(gè)倍頻器起作用,定時(shí)器的時(shí)鐘頻率等于APB1的頻率兩倍[2]。例如AHB總線時(shí)鐘為72M時(shí),APB1 總線時(shí)鐘為36M,那么TIME2的內(nèi)部時(shí)鐘CK_INT就是APB1的2倍頻,即72M。此時(shí),通用定時(shí)器的內(nèi)部時(shí)鐘頻率等于系統(tǒng)時(shí)鐘頻率。

本項(xiàng)目采用TIME2定時(shí)器,由于 TIM2 是掛載在 APB1之下,APB1總線時(shí)鐘經(jīng)TIM2MUL倍頻后還要通過(guò)RCC開(kāi)關(guān)控制送到TIM2,成為TIM2內(nèi)部時(shí)鐘CK_INT,所以我們通過(guò)APB1 總線下的使能函數(shù)來(lái)使能TIM2時(shí)鐘,程序如下:

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); //時(shí)鐘使能

定時(shí)器內(nèi)部時(shí)鐘CK_INT在定時(shí)器內(nèi)部還要經(jīng)過(guò)PSC預(yù)分頻器,PSC 預(yù)分頻器輸出的是最終的時(shí)基時(shí)鐘CK_CNT,用來(lái)驅(qū)動(dòng)計(jì)數(shù)器計(jì)數(shù)。PSC是一個(gè)16 位的預(yù)分頻器,可以對(duì)定時(shí)器時(shí)鐘 CK_INT 進(jìn)行 1~65536 之間的任何一個(gè)數(shù)進(jìn)行分頻。預(yù)分頻器工作原理其實(shí)是個(gè)計(jì)數(shù)器,其輸入的定時(shí)器時(shí)鐘脈沖每觸發(fā)一次,預(yù)分頻器計(jì)數(shù)器值加1,直到達(dá)到預(yù)分頻器的設(shè)定值,本系統(tǒng)中,通用定時(shí)器選擇TIM2,由TIM2預(yù)分頻器對(duì)內(nèi)部的時(shí)鐘CK_INT進(jìn)行向上加計(jì)數(shù),內(nèi)部的時(shí)鐘CK_INT的頻率在上面已經(jīng)分析過(guò)了,等于系統(tǒng)時(shí)鐘頻率72MHz,要得到10kHz的脈沖需要72MHz/7200,一個(gè)脈沖周期T是0.1mS,那么是不是就設(shè)置定時(shí)器的預(yù)分頻器PSC=7200呢?當(dāng)然不是,因?yàn)橛?jì)數(shù)從0-7200需要7200個(gè)脈沖,7200-0還要再計(jì)一個(gè)脈沖計(jì)數(shù)器才歸零,這樣加起來(lái)就是7201個(gè)脈沖,所以分頻值=PSC+1。分頻后時(shí)基脈沖頻率是

CK_CNT=TIM2CLK/(PSC+1)=72M/7199=10kHz,其倒數(shù)即為周期,值為0.1mS,編寫TIM2初始程序可以調(diào)用子程序TIM2_Int_Init(9999,7199)賦值,也可以直接使用賦值語(yǔ)句:

TIM_TimeBaseStructure.TIM_Prescaler =7199;

//送給計(jì)數(shù)器的時(shí)鐘頻率10kHz

TIM_TimeBaseStructure.TIM_Period = 9999; //ARR初值,一周期是10000個(gè)脈沖

第二條程序中的9999是計(jì)數(shù)值,累計(jì)起來(lái)就是一個(gè)計(jì)數(shù)周期的時(shí)間。這里通用定時(shí)TIM2采用向上計(jì)數(shù)模式,最大計(jì)數(shù)值為 65535。在向上計(jì)數(shù)模式時(shí),自動(dòng)重載寄存器TIM2_ARR值來(lái)設(shè)置計(jì)數(shù)器上限值,自動(dòng)重載寄存器有兩個(gè),一個(gè)是用來(lái)存放ARR值,我們把它叫作TIM2_ARR,另一個(gè)是用來(lái)和計(jì)數(shù)器CNT比較,我們把它叫作實(shí)際自動(dòng)重裝載寄存器,若計(jì)數(shù)器CNT值達(dá)到實(shí)際自動(dòng)重裝載寄存器的值時(shí)產(chǎn)生更新事件,自動(dòng)把自動(dòng)重載寄存器TIM2_ARR值裝到實(shí)際的自動(dòng)重裝載寄存器,即使TIM2_ARR的值不變也要重裝,計(jì)數(shù)器也溢出清零從頭開(kāi)始計(jì)數(shù)。定時(shí)器的定時(shí)時(shí)間等于計(jì)數(shù)器的一個(gè)脈沖周期乘以脈沖數(shù),脈沖數(shù)也就是ARR的值。計(jì)數(shù)器在CK_CNT的驅(qū)動(dòng)下,計(jì)一個(gè)數(shù)的時(shí)間則是CK_CNT的倒數(shù),

T=1/(CK_CNT/(PSC+1))=(PSC+1)/CK_CNT,本次編程中一個(gè)脈沖周期T=7200/72M=0.1mS,要產(chǎn)生一次中斷的時(shí)間是1s時(shí),ARR初值=10000-1=9999,因?yàn)榈?999還需要一個(gè)脈沖回零,一共是10000個(gè)脈沖,由此我們得到了定時(shí)時(shí)間的計(jì)算公式:

Tout=((ARR+1)*(PSC+1 ))/CK_CNT[3],其中CK_CNT是定時(shí)器時(shí)鐘頻率。

STM32103C8包含2個(gè)12位的ADC轉(zhuǎn)換器,把VREF+和VDDA接3V3,一般把VSSA和VREF-接地,ADC轉(zhuǎn)換所需的輸入時(shí)鐘ADC_CLK來(lái)自APB2總線的72M時(shí)鐘,那么APB2總線的72M時(shí)鐘要經(jīng)過(guò)ADC_PSC分頻,分頻因子可以是2/4/6/8分頻,由于受最小轉(zhuǎn)換時(shí)間限制,ADC時(shí)鐘頻率最大不能超過(guò)14M,分頻因子要大于6才行,72M/6得到12M的ADC時(shí)鐘ADC_CLK,程序如下:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPROA,ENABLE);//使能ADC1和通道時(shí)鐘。

RCC_ADCCLKConfig(RCC_PCLK2_Div6);//設(shè)置ADC分頻因子為6,

ADC 使用若干個(gè) ADC_CLK 周期對(duì)輸入的電壓進(jìn)行采樣,每個(gè)通道可以分別用不同的時(shí)間采樣。其中采樣周期最小是 1.5 個(gè),即如果我們要達(dá)到最快的采樣,那么應(yīng)該設(shè)置采樣周期為 1.5 個(gè)周期,這里說(shuō)的周期就是 1/ADC_CLK。

因單片機(jī)ADC的轉(zhuǎn)換時(shí)間要1μs以上,所以最大轉(zhuǎn)換速率是1MHz,不同的程序中,轉(zhuǎn)換時(shí)間是不同的,只要大于1μs就可以,轉(zhuǎn)換時(shí)間不同主要是設(shè)置的采樣周期不同,也就是說(shuō)ADC的轉(zhuǎn)換時(shí)間和采樣時(shí)間有關(guān),轉(zhuǎn)換時(shí)間Tconv=采樣時(shí)間+12.5個(gè)周期[3]。當(dāng)ADCLK=14MHz(最高)時(shí),采樣時(shí)間設(shè)置為1.5周期(最快),那么總的轉(zhuǎn)換時(shí)間(最短)Tconv=1.5周期+12.5周期=14周期=1μs。其中12.5個(gè)周期是采集12位AD時(shí)間是固定的。若PCLK2=72M,經(jīng)過(guò)ADC預(yù)分頻器能分頻到最大的時(shí)鐘是12M,采樣周期設(shè)置為最慢239.5個(gè)周期,ADC周期是239.5+12.5個(gè)周期,算出最短的轉(zhuǎn)換時(shí)間為21μs,也就是ADC得到一次轉(zhuǎn)換結(jié)果需要耗時(shí)21μs。

3 ADC定時(shí)觸發(fā)

STM32的 ADC常規(guī)通道有6個(gè)外部觸發(fā)信號(hào),外部是相對(duì)ADC而言,這6個(gè)觸發(fā)信號(hào)有5個(gè)來(lái)自芯片內(nèi)部,包括TIM1的CC1-CC3和TM2的CC2事件等。這里選用TIM2的CC2來(lái)觸發(fā)ADC,TIM2首先要配置為PWM比較輸出模式才能生效,TIM2的CH2通道便成了ADC規(guī)則通道的觸發(fā)源,特別要強(qiáng)調(diào)的是需要每次比較匹配時(shí),在TIM2_CH2上產(chǎn)生一次上升沿,當(dāng)TIM2_CNT≦TIM2_CCR2時(shí),通道CH2為低電平,TIM2_CNT≥TIM2_CCR2時(shí),通道CH2為高電平。

TIM_OCInitStructure.TIM_Pulse = 5000;//設(shè)置TIM2_CCR2的值

上一程序也是定時(shí)器PWM的初始化程序,第一條語(yǔ)句是設(shè)置PWM比較寄存器的值為5000,在第5000個(gè)脈沖時(shí)定時(shí)器CH2通道進(jìn)行電平變換,產(chǎn)生脈沖,由于PWM模式1和模式2的區(qū)別是輸出電平極性相反,PWM1在向上計(jì)數(shù)時(shí),TIM2_CNTTIM2_CCR2時(shí)通道2為無(wú)效電平,否則為有效電平,這里采用了PWM1模式,PWM1的有效電平是由下面語(yǔ)句決定,

TIM_OCInitStructure.TIM_OCPolarity= TIM_OCPolarity_Low;//有效電平為低電平

CC2P輸入/捕獲2輸出極性( output polarity),OC2通道配置為輸出:0對(duì)應(yīng)OC2高電平有效,1對(duì)應(yīng)OC2低電平有效,TIM_OCPolarity_Low是低電平有效,所以CC2P值為1,要是PWM2模式則相反。

STM32的ADC轉(zhuǎn)換有規(guī)則通道和注入通道兩種通道,注入通道可以搶占式地打斷規(guī)則通道的采樣,和中斷類似,執(zhí)行注入通道采樣后,再執(zhí)行之前的規(guī)則通道采樣。在使用ADC的時(shí)候需要配置幾個(gè)參數(shù),一是工作模式ADC_Mode,這里設(shè)置為獨(dú)立模式,在這個(gè)模式下,雙ADC不能同步,每個(gè)ADC接口獨(dú)立工作。掃描模式ADC_ScanConvMode,這里只是用了一個(gè)通道,DISABLE就可以了,如果使用了多個(gè)通道的話,則必須將其設(shè)置為ENABLE。ADC連續(xù)轉(zhuǎn)換模式,ADC_ContinuousConvMode,這里因?yàn)槭嵌〞r(shí)采集,所以設(shè)置為DISABLE,即單次轉(zhuǎn)換,只轉(zhuǎn)換一次數(shù)據(jù)就停止,由定時(shí)器再次觸發(fā)轉(zhuǎn)換。ADC_ExternalTrigConv 是外部觸發(fā)模式設(shè)置,ADC_ExternalTrigConv_T2_CC2設(shè)置選擇外部觸發(fā)模式中的定時(shí)器2通道輸出觸發(fā)。ADC_DataAlign_Right設(shè)置為右對(duì)齊方式,這樣處理從低位開(kāi)始傳輸?shù)臄?shù)據(jù)會(huì)比較方便,由于數(shù)據(jù)采集只有一個(gè)通道,所以ADC_NbrOfChannel 值為1。下面是ADC數(shù)據(jù)轉(zhuǎn)換的初始化程序:

上一初始化程序中的ADC_Cmd(ADC1,ENABLE)語(yǔ)句執(zhí)行后使ADC_CR2寄存器的ADON位為1,ADON是開(kāi)/關(guān)A/D轉(zhuǎn)換器,當(dāng)該位為1時(shí),寫入1將啟動(dòng)轉(zhuǎn)換。

外部觸發(fā)允許后,產(chǎn)生對(duì)應(yīng)的外部觸發(fā)脈沖,就會(huì)開(kāi)始ADC1的規(guī)則通道轉(zhuǎn)換啟動(dòng)功能。while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC))是等待轉(zhuǎn)換結(jié)束,ADC狀態(tài)寄存器ADC_SR的第1位EOC是轉(zhuǎn)換結(jié)束位,轉(zhuǎn)換結(jié)束后EOC=1,我們可查詢?cè)撐粊?lái)判斷轉(zhuǎn)換結(jié)束,該位不用軟件清零,當(dāng)從ADC_DR讀取數(shù)據(jù)后,該位自動(dòng)清0。

讀出ADC_DR數(shù)據(jù)的程序可以用賦值語(yǔ)句data1=ADC_GetConversionValue(ADC1);

由于是12位ADC,所以讀取的值最大是4095,還要進(jìn)行運(yùn)算處理。

4 項(xiàng)目調(diào)試

ADC的輸入電壓范圍設(shè)定在0~3.3V,因?yàn)锳DC是12位的,數(shù)據(jù)采用右對(duì)齊方式時(shí),12位滿量程對(duì)應(yīng)的數(shù)字值0xFFF即4095,此時(shí)對(duì)應(yīng)的輸入電平并非AD的參考電壓值VREF,而是參考電壓值減去一個(gè)LSB,1LSB=VREF+/4096。數(shù)值0對(duì)應(yīng)的就是0V。如果轉(zhuǎn)換后的數(shù)值X對(duì)應(yīng)的模擬電壓為Y,那么會(huì)有4096/3.3=X/Y,Y=(3.3*X)/4096。

如果說(shuō)編程是理論基礎(chǔ),程序調(diào)試是理實(shí)結(jié)合的關(guān)鍵環(huán)節(jié),好的調(diào)試方案可以起到事半功倍的效果,該項(xiàng)目采用三步走,先調(diào)試TIM2通道2的PWM輸出,調(diào)試時(shí)注意CCR2給定值要在定時(shí)器ARR范圍內(nèi),為了便于觀測(cè)占空比,PWM頻率可臨時(shí)調(diào)高一些,該項(xiàng)目設(shè)置CCR2為ARR的1/2,占空比為50%,便于用示波器測(cè)量比較,之后再恢復(fù)1Hz,用萬(wàn)用表或示波器測(cè)量,顯示電路調(diào)試時(shí)可先用一個(gè)整數(shù)測(cè)試。最后的是ADC采集數(shù)據(jù)調(diào)試,可測(cè)量3.3V,顯示采集到的4095說(shuō)明ADC電路正常工作,再調(diào)試計(jì)算電壓值程序,ADC調(diào)試的前提是要保證硬件芯片外圍的ADC電壓正確,再逐條從ADC初始化和讀取程序上查找問(wèn)題,在ADC查詢等待時(shí)可把顯示子程序放入等待語(yǔ)句中執(zhí)行,防止數(shù)碼管黑屏。

5 總結(jié)

通過(guò)數(shù)據(jù)采集系統(tǒng)的編程和調(diào)試,深切體會(huì)到STM32單片機(jī)系統(tǒng)時(shí)鐘源分配在定時(shí)數(shù)據(jù)采集項(xiàng)目設(shè)計(jì)和編程上的重要性,它關(guān)系到各部分的參數(shù)設(shè)置和使用。項(xiàng)目采用外部定時(shí)器觸發(fā)ADC采集到的數(shù)據(jù)時(shí)間間隔準(zhǔn)確,定時(shí)和數(shù)據(jù)采集都由單片機(jī)硬件完成,軟件只需初始化相關(guān)硬件即可,運(yùn)行中不過(guò)多占用軟件資源、沒(méi)有中斷,高效可靠。該項(xiàng)目探索了STM32F103C8單片機(jī)外部定時(shí)器觸發(fā)ADC轉(zhuǎn)換的條件和實(shí)現(xiàn)方法,總結(jié)起來(lái)就是先要將定時(shí)器配置為比較輸出PWM模式,OC通道復(fù)用推挽輸出,TIM2_CH2一定是上升沿才能實(shí)現(xiàn)預(yù)定要求觸發(fā)。TIM2_CH2輸出的電壓信號(hào)內(nèi)部接至ADC電路,不需要連線,但TIM2_CH2的PA1引腳可作為調(diào)試的測(cè)試點(diǎn),調(diào)試PWM功能。ADC初始化很重要,要設(shè)置ADC_ExternalTrigConvCmd(ADC1,E N A B L E)外部觸發(fā)啟動(dòng)功能,此時(shí)就不需要A D C_SoftwareStartConvCmd(ADC1, DISABLE)軟件啟動(dòng)語(yǔ)句了,在查詢等待時(shí)可把顯示子程序放入等待語(yǔ)句中執(zhí)行,防止數(shù)碼管黑屏,這個(gè)項(xiàng)目通過(guò)ADC外部觸發(fā)功能實(shí)現(xiàn)了高精度的模擬量定時(shí)采集和轉(zhuǎn)換,是一次STM32單片機(jī)定時(shí)、PMW和ADC功能的實(shí)踐探索和綜合應(yīng)用。

猜你喜歡
分頻器計(jì)數(shù)器寄存器
一種基于0.18μm SiGe工藝的8GHz前置分頻器
高頻、低相噪、雙模分頻器設(shè)計(jì)
煤氣與熱力(2022年2期)2022-03-09 06:29:30
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
分簇結(jié)構(gòu)向量寄存器分配策略研究*
計(jì)數(shù)器競(jìng)爭(zhēng)冒險(xiǎn)及其處理的仿真分析
DRM/DAB/AM/FM頻率綜合器中吞吐脈沖分頻器的設(shè)計(jì)
任意N進(jìn)制計(jì)數(shù)器的設(shè)計(jì)方法
河南科技(2014年10期)2014-02-27 14:09:30
基于單片機(jī)的仰臥起坐計(jì)數(shù)器
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
九台市| 靖西县| 宽甸| 鹰潭市| 嵊州市| 朔州市| 曲靖市| 乐至县| 汤阴县| 收藏| 习水县| 建瓯市| 珠海市| 射洪县| 拉萨市| 阿拉善右旗| 威远县| 丹江口市| 屏东县| 仪征市| 界首市| 睢宁县| 乌拉特后旗| 泌阳县| 浮梁县| 将乐县| 抚宁县| 贵南县| 儋州市| 张家港市| 长汀县| 武功县| 新绛县| 柳江县| 威信县| 山西省| 区。| 胶南市| 南丹县| 武冈市| 闸北区|