999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于單片機的信號測量教學案例設計

2021-07-17 16:13:06李向陽
錦繡·中旬刊 2021年7期

摘要:為了鍛煉學生單片機系統(tǒng)軟硬件設計能力,為工程實際應用打下堅實基礎,根據學生專業(yè)特點,精心設計了基于單片機的信號測量實踐教學案例。本案例實現了信號的周期、頻率測量和通過串口傳輸,經過改進后還可以實現占空比的測量。

關鍵詞:CubeMx,前后臺編程,輸入捕獲,占空比

一、引言

《單片機原理及應用》是計算機科學與技術專業(yè)嵌入式方向的一門研究微機原理、接口技術及程序設計的專業(yè)拓展課程。本課程擔負著認識理解微控制器工作原理、掌握單片機控制系統(tǒng)應用設計,為嵌入式專業(yè)課程打下專業(yè)基礎的任務[1-2]。本課程簡明扼要地講授STM32單片機芯片的硬件結構和工作原理,系統(tǒng)討論了單片機主要系統(tǒng)資源的設計方法,并為單片機系統(tǒng)設計進行了必要準備。主要內容包括STM32單片機的硬件結構、C語言程序設計、單片機內部主要模塊的功能實現、外部接口的應用設計以及初步的單片機應用系統(tǒng)設計等內容。

考慮到課程應用性強的特點,為了鍛煉學生單片機系統(tǒng)軟硬件設計能力,為工程實際應用打下堅實基礎,課程以STM32CubeMX軟件和MDK-ARM軟件來學習單片機編程,其中STM32CubeMX采用圖形化方式完成外設初始化的設計[3],在MDK-ARM編程中,引入了較多先進的編程思想,硬件采用較新的STM32Nucleo開發(fā)板和STM32F411RE控制器。

課程在鍛煉學生軟硬件設計能力的同時,引入了前后臺編程思想、圖形化的初始化設計思想、狀態(tài)機設計思想等,并引入了實際項目開發(fā)中自定義幀格式、復雜信號測量等常用的綜合性技能項目,對于學生實踐能力的鍛煉很有好處。本文以信號測量項目為案例,可以在較短的課時內讓學生掌握單片機定時器、串口的實踐應用。

二、信號測量案例分析

1、任務內容

本次信號測量任務屬于定時器的輸入捕獲功能應用[4-5],并用到之前學習的定時器PWM輸出功能,以及后續(xù)將要介紹的串口通訊。知識點包括引腳選擇、參數計算,數據定義,接口函數調用等,具體實現了信號的周期、頻率測量和通過串口傳輸,經過改進后還可以實現占空比的測量。

外部脈沖信號利用A定時器的某通道產生,利用B定時器的某通道來測量一個外部脈沖信號的周期、頻率和占空比,通過杜邦線與前述測量通道連接。如圖1所示,通過計算t2,t3與t1的時間差,即可實現信號測量,時間差為對應的計數脈沖個數乘以計數脈沖周期數,計數脈沖個數通過輸入捕獲功能進行記錄。

2、設計思路

1)、設置某引腳為定時器A的通道,利用定時器A的PWM輸出功能,輸出一定頻率和占空比的方波;

2)、配置B定時器的某通道為輸入捕獲模式,采用上升沿觸發(fā)。設置合理的預分頻系數和最大計數值;

3)、采用前后臺編程模式。在輸入捕獲中斷的回調函數中,設置測量完成標志,主程序中檢測該標志,一旦置位則計算信號的周期和頻率,并清除標志位。

三、項目設置

1、引腳選擇

引導學生在CubeMx軟件的Pinoutview界面查看STM32F411RETx芯片引腳功能。

1)、串口RX、TX引腳選擇。USART1使用PA10、PA9引腳;USART2使用PA3、PA2引腳;USART1使用PC7、PC6引腳。根據硬件實際情況,選擇USART2作為示例,使用PA3、PA2引腳。

2)、在本任務中既需要定時器作輸入捕獲,也需要作PWM輸出來使用,經觀察,在排除PA3、PA2引腳的條件下,定時器的引腳列于下方。

TIM1_CH1:PA8;TIM1_CH2:PA9;TIM1_CH3:PA10;TIM1_CH4:PA11;

TIM2_CH1:PA0,PA5,PA15;TIM2_CH2:PA1,PB3;TIM2_CH3:PB10;

TIM3_CH1:PA6,PB4,PC6;TIM3_CH2:PA7,PB5,PC7;TIM3_CH3:PB0,PC8;TIM3_CH4:PB1,PC9;

TIM4_CH1:PB6;TIM4_CH2:PB7;TIM4_CH3:PB8;TIM4_CH4:PB9;

TIM5_CH1:PA0;TIM5_CH2:PA1;

TIM10_CH1:PB8;TIM11_CH1:PB9;

經討論,根據被提問學生的意見選擇一組,比如示例中選擇TIM1_CH1的PA8、TIM2_CH1的PA0,分別作為PWM輸出和輸入捕獲功能使用,實物中將兩引腳連接起來。選擇的引腳如圖2所示。

2、TIM1配置:

1)ClockSource:InternalClock,選擇時鐘源為內部時鐘;

2)Channel1:PWMGenerationCH1,選擇通道1為PWM輸出;

3)如果輸出一個頻率為50KHz,占空比60%的方波,該如何設計參數?

根據公式Period=(ARR+1)(PSC+1)/TIM1_CLK,其中周期Period=1/50K=20us,TIM1_CLK=100MHz,引導學生計算ARR和PSC的取值,從學生計算的結果中選擇一組,比如ARR=19(CounterSettings的CounterPeriod參數),PSC=99(CounterSettings的Prescaler參數);

根據占空比60%,易于算出CCR(PWMGenerationChannel 1 的Pulse參數)應為12。

3、TIM2配置:

1)ClockSource:InternalClock,選擇時鐘源為內部時鐘;

2)Channel1:InputCapturedirectmode,選擇通道1為輸入捕獲模式,捕獲通道為直接輸入方式;

3)引導學生分析ARR和PSC的值該如何選取:輸入的方波信號在邊沿處將進行捕獲,此時記錄下計數值(最大為ARR),顯然ARR越大,可以測量的信號脈寬越大,故此處應將ARR設的足夠大,建議ARR(CounterSettings的CounterPeriod參數)取最大值0XFFFFFFFF;計數的周期越小,對信號周期的測量越準確,故沒必要預分頻,建議PSC(CounterSettings的Prescaler參數)取0;

4)在邊沿處進行捕獲時,采用中斷方式處理較為方便,故將NVICSettings的TIM4 globalinterrupt使能。

4、系統(tǒng)內核設置

1)在RCC模式和配置中,將HSE來源設為旁路時鐘源(BYPASS Clock Source);

2)在SYS模式和配置中,將debug設置為串口調試(SerialWire);

5、時鐘配置

1)Inputfrequency(輸入時鐘頻率):8MHz;

2)PLLSourceMux(鎖相環(huán)時鐘源):HSE;

3)SystemClockMux(系統(tǒng)時鐘源):PLLCLK;

4)HCLK:100MHz。

四、程序設計

1、變量定義

2、用戶初始化設置

用戶初始化流程如圖3(a)所示,是在由CubeMx軟件自動生成的外設初始化代碼之后,由用戶編寫的初始化代碼,實現了啟動TIM2_CH1的輸入捕獲和啟動TIM1_CH1的PWM輸出功能。

3、前臺程序

前臺程序如圖3(b)所示,其中第一、第二次捕獲分別對應圖1的t1和t3時刻,完成2次捕獲后,將置位測量完成標志MeasureFlag = 1,供后臺程序使用。

4、后臺程序

當前臺(即TIM2的輸入捕獲中斷函數)測量完成,即捕獲到圖1中的t1和t3時刻計數值,后臺將在死循環(huán)中計算捕獲差值,并計算信號周期、頻率通過串口輸出,當然還要清除測量完成標志,以利于新的捕獲,其流程如圖4(a)所示。

討論:程序中通過計算TIM2兩次捕獲值之差,乘以1個脈沖的周期(1/100000000s),計算得到測量信號周期。很明顯只適用于測量信號周期不太大的情況,因為一旦測量信號周期太大,TIM2的第二個捕獲值可能溢出。引導學生討論測量信號周期的最大值,易于計算得到,應為(0xFFFFFFFF+)/100000000=42.95s,足夠滿足普通應用需求。

如果想擴大對被測信號周期的測量,可以考慮第二次捕獲加上計數溢出值即可。對應的程序流程如圖4(b)所示。當然修改后的程序,對測量信號周期仍然有范圍限制,易于想到,其值約為42.95×2=84s。

5、實驗結果

編譯并燒寫可執(zhí)行文件后,可在實物上觀察對信號周期和頻率的測量結果。連接串口,接收到的結果如下框所示,非常準確。

五、案例的改進

在上述案例中,通過捕獲t1,t3時刻的計數值后計算差值,即可完成對信號周期和頻率的測量。如果想實現占空比的測量,思路也較為簡單,下面從前后臺程序分別進行介紹。

1、前臺程序

如圖5所示,第一次捕獲對應t1時刻(見圖1),將保存捕獲值CapVal1,修改捕獲標識CapIndex=1,以及設置為下降沿中斷。接下來在下降沿時,將再次成功捕獲對應t2時刻,根據捕獲標志即可判斷出屬于第二次捕獲,此時保存捕獲值CapVal2,修改捕獲標識CapIndex=2,以及設置為上升沿中斷。接下來在上升沿時,將再次成功捕獲對應t3時刻,根據捕獲標志即可判斷出屬于第三次捕獲,此時保存捕獲值CapVal3,重置捕獲標識CapIndex=0,并置位測量完成標識MeasureFlag=1,供后臺程序查詢使用。

2、后臺程序

后臺程序流程圖見圖6所示,分別根據CapVal2與CapVal1的差值、CapVal3與CapVal1的差值是否大于零,判斷TIM2是否在圖1中的t2與t1中間、t3與t1中間存在計數溢出情況,如存在將分別加上2^32,從而擴大了對信號周期的測量范圍,具體分析與四、4節(jié)的分析類似。

3、實驗結果

編譯并燒寫可執(zhí)行文件后,可在實物上觀察對信號周期、頻率和占空比的測量結果。連接串口,接收到的結果如下所示,非常準確。

六、總結

從本案例可以看出,課程體現了較強的應用性,學生通過STM32CubeMX軟件的圖形化操作完成外設初始化的設計,將在MDK-ARM軟件中自動生成初始化代碼;在MDK-ARM編程應用時,采用了前后臺的編程思想,使得程序結構較為清晰;案例實踐中,引入了定時器計數溢出、通過修改邊沿捕獲方式計算信號占空比等討論,對定時器的設計應用學習更為深入。通過對本案例的設計、討論與實現,培養(yǎng)了硬件設計和軟件設計技能,開發(fā)了學生的創(chuàng)新思維,提高學生的自學、分析和解決問題的能力。

參考文獻

[1]許江河, 高緒紅. 基于單片機的多路信號采集測量系統(tǒng)設計與實現[J]. 電子科學技術, 2015, 2(005):547-551.

[2]金國華, 滕君華. 基于單片機的出租車計價器實驗教學案例設計[J]. 信息技術與信息化, 2019, 000(003):93-95.

[3]羅清龍, 馮敏, 李清濤. 基于STM32CubeMX嵌入式實驗教學改革實踐[J]. 計算機教育, 2018, 000(001):155-158.

[4]李建波, 張永亮, 梁振華. STM32CubeMX定時器中斷回調函數的研究[J]. 電腦知識與技術, 2020, v.16(08):254-255+279.

[5]李建波, 潘必超, 邱陽林. 基于STM32CubeMX外部中斷回調函數的研究[J]. 電子世界, 2020, No.586(04):13-14.

作者簡介:李向陽(1984-),男,浙江寧波人,博士,副教授,主要研究方向為嵌入式系統(tǒng)開發(fā)

[項目]教育部2019年第二批產學合作協同育人項目:《單片機原理及應用》重構式教學示范課程(項目編號:201902312002);寧波市公益項目(項目編號:2019C10051)

主站蜘蛛池模板: 99re视频在线| 久久99热这里只有精品免费看| 国产成人综合在线观看| 国产9191精品免费观看| 欧美笫一页| 国产成人精品18| 真实国产乱子伦视频| 91精品国产自产91精品资源| 波多野结衣在线一区二区| 国产亚洲精品自在线| 少妇精品久久久一区二区三区| 久久男人资源站| 亚洲成人动漫在线| 国产免费a级片| 国产毛片一区| 欧美色视频网站| 国产亚洲欧美在线人成aaaa | 精品视频第一页| 亚洲一区二区三区在线视频| 色哟哟国产成人精品| 欧美一级片在线| 久久99这里精品8国产| 久久久久久久久亚洲精品| 亚洲婷婷在线视频| 国产网站黄| 97国产精品视频人人做人人爱| 成年女人a毛片免费视频| 日本a级免费| www.av男人.com| 亚洲娇小与黑人巨大交| 国内老司机精品视频在线播出| 尤物视频一区| 欧美亚洲激情| 国产精品亚洲欧美日韩久久| 91网址在线播放| 精品国产一区二区三区在线观看| 伊在人亞洲香蕉精品區| 亚洲成人黄色在线| 国产成人AV男人的天堂| 国产精品久线在线观看| 久久中文无码精品| 幺女国产一级毛片| 国产91小视频| 美女视频黄又黄又免费高清| 欧美精品1区| 国产在线观看人成激情视频| 久久动漫精品| 99一级毛片| 亚洲欧美国产高清va在线播放| 久久综合色天堂av| 国产精品yjizz视频网一二区| 欧美性精品| 国产一线在线| 国产毛片网站| 97在线免费| 国产欧美日韩精品第二区| 免费AV在线播放观看18禁强制| 99无码熟妇丰满人妻啪啪 | 老司机精品99在线播放| 亚洲国产成人自拍| 久无码久无码av无码| 欧美亚洲另类在线观看| 欧美.成人.综合在线| 亚洲一级色| 亚洲狠狠婷婷综合久久久久| 99伊人精品| 亚洲一区毛片| 亚洲日本一本dvd高清| 婷婷色在线视频| 欧美日韩另类国产| 国产大片喷水在线在线视频| 黄色网站不卡无码| 欧美精品亚洲精品日韩专区va| 视频在线观看一区二区| 久久女人网| 真实国产乱子伦视频| 国产精品刺激对白在线| 国产精品主播| 伊人久久婷婷| 色哟哟国产精品一区二区| 久久99国产综合精品女同| 欧美成人综合在线|