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

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

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

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

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

一、引言

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

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

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

二、信號測量案例分析

1、任務內容

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

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

2、設計思路

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

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

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、系統內核設置

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

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

5、時鐘配置

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

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

3)SystemClockMux(系統時鐘源):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時刻計數值,后臺將在死循環中計算捕獲差值,并計算信號周期、頻率通過串口輸出,當然還要清除測量完成標志,以利于新的捕獲,其流程如圖4(a)所示。

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

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

5、實驗結果

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

五、案例的改進

在上述案例中,通過捕獲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節的分析類似。

3、實驗結果

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

六、總結

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

參考文獻

[1]許江河, 高緒紅. 基于單片機的多路信號采集測量系統設計與實現[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-),男,浙江寧波人,博士,副教授,主要研究方向為嵌入式系統開發

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

主站蜘蛛池模板: 精品久久久久成人码免费动漫| 大陆国产精品视频| 久久福利片| 久久网综合| 国产毛片久久国产| 亚洲无码高清一区| 激情六月丁香婷婷四房播| 精品无码国产自产野外拍在线| 国产精品亚洲综合久久小说| 国产人妖视频一区在线观看| igao国产精品| 国产成人一区免费观看| 成人综合在线观看| 久久久久夜色精品波多野结衣| 免费在线成人网| 国产精品福利尤物youwu| 亚洲永久视频| 又猛又黄又爽无遮挡的视频网站| 日韩精品毛片| 国产网站免费观看| 国产在线观看一区精品| 狠狠色噜噜狠狠狠狠色综合久| 美美女高清毛片视频免费观看| 亚洲女同欧美在线| 国产日韩欧美视频| 九九九国产| 亚洲第一黄色网| 中文字幕2区| 久久情精品国产品免费| 国产精品自在线拍国产电影| 99久久国产精品无码| 国产精品视频白浆免费视频| 欧美综合中文字幕久久| 97人妻精品专区久久久久| 色天天综合久久久久综合片| 国产chinese男男gay视频网| 日本少妇又色又爽又高潮| 国产综合欧美| 国产美女在线观看| 亚洲成a人在线观看| 青青久视频| 国产午夜在线观看视频| 99精品一区二区免费视频| 无遮挡国产高潮视频免费观看| 久久这里只有精品66| 久久伊人操| 日韩av无码精品专区| 国产最新无码专区在线| 手机成人午夜在线视频| 国产一级二级在线观看| 日本欧美中文字幕精品亚洲| 亚洲人成网18禁| 91成人试看福利体验区| 国产在线专区| 爆操波多野结衣| av一区二区三区在线观看| 国产99在线观看| 亚洲欧美综合在线观看| 亚洲精品无码在线播放网站| 免费观看成人久久网免费观看| 国产中文一区a级毛片视频| 在线观看视频99| 日本尹人综合香蕉在线观看 | 日韩精品一区二区深田咏美| 99re在线免费视频| 成人永久免费A∨一级在线播放| 亚洲成AV人手机在线观看网站| 中文字幕日韩欧美| 香蕉伊思人视频| 黄色福利在线| 国产全黄a一级毛片| 国产欧美日韩在线在线不卡视频| 亚洲午夜综合网| 亚洲成a人片| 亚洲欧美人成人让影院| 毛片免费视频| 国产亚洲精品91| 国产综合无码一区二区色蜜蜜| 久久永久免费人妻精品| 日本精品视频| 亚洲一区二区在线无码| 亚洲人成影院午夜网站|