亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        STM32案例式教學(xué)的匯編指令無縫融合方法

        2022-09-16 08:52:28許耀華方紅雨
        關(guān)鍵詞:示波器延時(shí)時(shí)鐘

        徐 磊,劉 瑜,許耀華,方紅雨①

        (安徽大學(xué) 集成電路學(xué)院,安徽 合肥 230601)

        0 引言

        集成電路是現(xiàn)代信息技術(shù)的核心,屬于高端設(shè)計(jì)與制造領(lǐng)域.在高校,集成電路是一個(gè)多學(xué)科交叉、高技術(shù)密集的專業(yè),其基礎(chǔ)與應(yīng)用研究遍及從電子工程到計(jì)算機(jī)科學(xué)的整個(gè)信息技術(shù)領(lǐng)域,單片機(jī)課程的知識(shí)模塊已成為集成電路專業(yè)教育與交叉融合研究的重要基礎(chǔ)[1-2].單片機(jī)的類型很多,其中STM32單片機(jī)憑借其產(chǎn)品線的多樣化、極高的性價(jià)比、簡單易用的庫開發(fā)方式,在大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目和科技文化賽中已經(jīng)成為熱門首選[3-5].

        匯編指令系統(tǒng)是編程過程中極其重要的內(nèi)容,學(xué)生如果對(duì)匯編指令的理解不夠透徹、準(zhǔn)確,將嚴(yán)重影響對(duì)單片機(jī)工作原理的了解和后期的使用[6-7].指令集作為軟硬件之間的接口規(guī)范,是信息技術(shù)生態(tài)的起始原點(diǎn).匯編指令與芯片設(shè)計(jì)密切相關(guān),已經(jīng)作為集成電路學(xué)院各專業(yè)必不可少的教學(xué)環(huán)節(jié)[8-10].但Proteus仿真案例的設(shè)計(jì)需基于C語言標(biāo)準(zhǔn)庫,在教學(xué)課時(shí)有限的情況下,2種語言的同時(shí)講授為教學(xué)開展帶來極大挑戰(zhàn).另外,傳統(tǒng)單片機(jī)教學(xué)往往以課堂理論教學(xué)為主,實(shí)驗(yàn)教學(xué)為輔,一般先理論后實(shí)踐.如果理論教學(xué)和實(shí)驗(yàn)教學(xué)脫節(jié),無法保證“新工科”建設(shè)對(duì)學(xué)生創(chuàng)新能力的培養(yǎng)要求,不能提升學(xué)生解決復(fù)雜工程問題的能力,也不能充分發(fā)揮學(xué)生自身的學(xué)習(xí)積極性[11].案例式教學(xué)通過課件與虛擬仿真案例的融合,注重真表現(xiàn)力、交互性、共享性3個(gè)特性,化靜為動(dòng)、化抽象為形象,最大限度地調(diào)動(dòng)學(xué)生積極性,激發(fā)學(xué)生學(xué)習(xí)興趣,為課程教學(xué)效果的提升提供可靠保障[12].Proteus平臺(tái)能夠?qū)⒂布到y(tǒng)軟件化,能夠模擬硬件系統(tǒng)的實(shí)現(xiàn)過程,并能夠?qū)崟r(shí)驗(yàn)證程序的正確性[13].另外,基于Proteus和STM32CubeMx的STM32聯(lián)合開發(fā)方式的線上項(xiàng)目式教學(xué)方法可關(guān)聯(lián)當(dāng)前的產(chǎn)學(xué)研項(xiàng)目,并用以創(chuàng)建和講解運(yùn)用單片機(jī)技術(shù)解決復(fù)雜工程問題的新型案例[14].結(jié)合Proteus平臺(tái)和案例式教學(xué)的優(yōu)勢(shì),能夠?yàn)閰R編指令的無縫融合提供可行性,但在目前STM32教學(xué)中缺乏有效的教學(xué)案例.

        綜上所述,本文提出一種STM32案例式教學(xué)的匯編指令無縫融合方法.以軟件延時(shí)的精準(zhǔn)設(shè)計(jì)為例,基于Proteus虛擬仿真平臺(tái),詳細(xì)說明所提方法的案例式教學(xué)設(shè)計(jì).通過該案例式教學(xué),使學(xué)生在完成單片機(jī)軟硬件開發(fā)任務(wù)時(shí),不僅知其然,而且知其所以然,理解計(jì)算與算法背后的芯片與指令基礎(chǔ),為大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目和科技文化競(jìng)賽中,創(chuàng)新性作品的制作奠定一個(gè)良好的基礎(chǔ).

        1 軟件延時(shí)案例和問題描述

        在單片機(jī)應(yīng)用開發(fā)中,經(jīng)常會(huì)碰到較短的時(shí)間延時(shí)情況.當(dāng)使用定時(shí)器/計(jì)數(shù)器不方便實(shí)現(xiàn)時(shí),利用軟件延時(shí)子程序完成一些延時(shí)的需求是非常有必要的.軟件延時(shí)的精確性往往也直接關(guān)乎應(yīng)用效果的實(shí)現(xiàn).

        1.1 案例簡介

        案例名稱:系統(tǒng)工作指示燈[15].LED燈慢閃(間隔時(shí)間300 ms)表示系統(tǒng)正常運(yùn)行.

        該案例電路可在Proteus虛擬仿真平臺(tái)上進(jìn)行設(shè)計(jì),其包含STM32單片機(jī),具體型號(hào)為STM32F103R6;包含示波器,用以觀察延遲量的大??;包含限流電阻和一端接地的LED燈,用以表示系統(tǒng)正常運(yùn)行.

        1.2 源程序

        #include“stm32f10x.h”

        void delay_ms(unsigned ms);//函數(shù)聲明

        int main(void)

        /*LED(PA2引腳)初始化*/

        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;

        GPIO_InitStructure.GPIO_Speed=

        GPIO_Speed_50MHz;

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

        GPIO_Ini(tGPIOA,&GPIO_InitStructure);

        GPIO_ResetBits(GPIOA,GPIO_Pin_2);

        /*正常運(yùn)行,LED燈慢閃(間隔時(shí)間300 ms)*/

        while(1)

        GPIO_SetBits(GPIOA,GPIO_Pin_2);//燈亮

        delay_ms(300);

        GPIO_ResetBits(GPIOA,GPIO_Pin_2);//燈滅

        delay_ms(300);

        }}

        /**

        *@簡介:軟件延時(shí)函數(shù),單位ms

        *@參數(shù):延時(shí)毫秒級(jí)

        *@返回值:無

        **/

        void delay_ms(unsigned ms)

        int32_t i;

        while(ms--)

        i=7500;//外部晶振8Mhz時(shí)的經(jīng)驗(yàn)值

        while(i--);

        }}

        其中,1 ms軟件延時(shí)函數(shù)void delay_ms(unsigned ms)需進(jìn)行精確設(shè)計(jì),其子程序中的局部變量i是重點(diǎn)調(diào)整對(duì)象.在源程序中,只給出“外部晶振8 Mhz時(shí)的經(jīng)驗(yàn)值i=7 500”的注釋說明,但并未給出對(duì)系統(tǒng)時(shí)鐘進(jìn)行配置的相關(guān)程序.此問題在大部分STM32開發(fā)板案例教程中也同樣存在,這給學(xué)生的學(xué)習(xí)帶來很大的困惑和障礙.

        1 .3問題描述

        示波器的掃描速度為200 ms/div,如圖1可以看出,低電平信號(hào)在水平方向所占的格數(shù)約為8.5 div,則實(shí)際低電平的延時(shí)量為200*8.5=1700 ms=1.7 s.這與預(yù)想設(shè)計(jì)的300 ms延時(shí)相差很大,問題的本質(zhì)在于1 ms軟件延時(shí)函數(shù)不夠精確.

        圖1 i=7 500時(shí),示波器顯示的延時(shí)量

        2 問題分析

        當(dāng)STM32單片機(jī)上電啟動(dòng)的時(shí)候會(huì)首先啟動(dòng)文件“startup_stm32f10x_ld.s”,執(zhí)行這里的匯編指令,從而建立起C語言的運(yùn)行環(huán)境.因此需通過對(duì)啟動(dòng)文件的分析,進(jìn)行匯編指令的教學(xué)開展和系統(tǒng)時(shí)鐘的默認(rèn)配置情況的明確.

        2.1 啟動(dòng)文件

        啟動(dòng)文件“startup_stm32f10x_ld.s”的功能主要為:①初始化堆棧指針SP;②初始化程序計(jì)數(shù)器指針PC;③設(shè)置堆、棧的大小;④初始化中斷向量表;⑤配置外部SRAM作為數(shù)據(jù)存儲(chǔ)器;⑥調(diào)用SystemIni(t)函數(shù)配置系統(tǒng)時(shí)鐘.⑦設(shè)置C庫的分支入口“__main”,用來調(diào)用main函數(shù).其中,STM32單片機(jī)復(fù)位后執(zhí)行的匯編指令段如下所示.

        Line1:;Reset handler routine

        Line2:Reset_Handler PROC

        Line3:EXPORT Reset_Handler[WEAK]

        Line4:IMPORT__main

        Line5:IMPORT SystemInit//說明SystemInit這個(gè)標(biāo)號(hào)在鏈接的時(shí)候需要到其他文件去尋找

        Line6:LDR R0,=SystemInit//把SystemInit的地址加載到寄存器R0

        Line7:BLX R0//程序跳轉(zhuǎn)到R0中的地址執(zhí)行程序,即執(zhí)行SystemInit函數(shù)的內(nèi)容

        Line8:LDR R0,=__main

        Line9:BX R0

        Line10:ENDP

        上述匯編指令是Cortex-M3內(nèi)核支持的指令,可以在MDK->Help->Uvision Help中搜索到,也可參考《ARM Cortex-M3權(quán)威指南》中指令集章節(jié)進(jìn)行指令格式、尋址方式和指令功能的規(guī)范性講解,從而實(shí)現(xiàn)匯編指令和STM32案例式教學(xué)的無縫融合.結(jié)合啟動(dòng)文件的功能描述,并完成這段指令的分析后,可以明確:STM32單片機(jī)上電后,會(huì)執(zhí)行SystemIni(t)函數(shù),最后執(zhí)行C語言源程序中的main函數(shù).System-Ini(t)是一個(gè)標(biāo)準(zhǔn)的庫函數(shù),在system_stm32f10x.c這個(gè)庫文件中被定義,其主要作用是配置系統(tǒng)時(shí)鐘.因此要明確系統(tǒng)時(shí)鐘的默認(rèn)配置情況,還需對(duì)SystemIni(t)進(jìn)行深入剖析.

        2.2 SystemInit()函數(shù)

        system_stm32f10x.c中SystemIni(t)的部分代碼如下

        Line1:void SystemInit(void)

        Line2:{

        Line3:/*Reset the RCC clock configuration to the default reset state(for debug purpose)*/

        Line4:/*Set HSION bit*/

        Line5:RCC->CR|=(uint32_t)0x00000001;//開啟8MHz內(nèi)部高速時(shí)鐘(HSI,High-Speed Internal)

        //關(guān)閉外部高速時(shí)鐘(HSE,High-Speed Enternal)

        Line6:/*Reset SW,HPRE,PPRE1,PPRE2,ADCPRE and MCO bits*/

        Line7:#ifndef STM32F10X_CL

        Line8:RCC->CFGR &=(uint32_t)0xF8FF0000;//選擇HSI作為SYSCLK;

        //AHB、AP1、AP2的預(yù)分頻系數(shù)均為1

        Line9:#else

        Line10:RCC->CFGR &=(uint32_t)0xF0FF0000;

        Line11:#endif/*STM32F10X_CL*/

        寄存器的具體配置效果可查看STMF103xx參考手冊(cè).經(jīng)過上述代碼的剖析,可以明確案例中的系統(tǒng)時(shí)鐘的默認(rèn)配置為8 MHz內(nèi)部高速時(shí)鐘,并且AHB、AP1、AP2的預(yù)分頻系數(shù)均為1.結(jié)合STMCubeMX圖形界面化的優(yōu)勢(shì),將STM32單片機(jī)系統(tǒng)時(shí)鐘的默認(rèn)配置效果進(jìn)行顯示,如圖2所示.

        由圖2可以看出,STM32單片機(jī)系統(tǒng)時(shí)鐘的默認(rèn)配置與啟動(dòng)文件的分析結(jié)論是一致的.在案例中使用的是PA2引腳,其隸屬于APB2外設(shè),所以其工作時(shí)鐘與APB2外設(shè)時(shí)鐘保持一致,具體為8 MHz.

        圖2 基于STMCubeMX的系統(tǒng)時(shí)鐘默認(rèn)配置效果

        3 實(shí)驗(yàn)效果

        為保障1 ms軟件延時(shí)函數(shù)的精確性,將源程序中2處delay_ms(300)改為delay_ms(1).根據(jù)示波器顯示的延時(shí)量,不斷調(diào)整i的數(shù)值,最終確定1 ms軟件精確延時(shí)的經(jīng)驗(yàn)值為1 320,其對(duì)應(yīng)的示波器顯示的延時(shí)量如圖3所示.

        圖3 i=1 320時(shí),示波器顯示的延時(shí)量

        示波器的掃描速度為1 ms/div,如圖3可以看出,高、低電平信號(hào)在水平方向所占的格數(shù)為1 div,則實(shí)際的高電平延時(shí)量為1 ms/div*1 div=1 ms.將示波器的掃描速度設(shè)置為更小數(shù)值時(shí),可以得到同樣的結(jié)果.因此,驗(yàn)證1 ms軟件延時(shí)函數(shù)的精確性和上述分析過程的正確性.

        4 結(jié)語

        結(jié)合案例式教學(xué)的優(yōu)勢(shì),本文提出一種STM32案例式教學(xué)的匯編指令無縫融合方法.首先,以軟件延時(shí)的精確設(shè)計(jì)為例,設(shè)計(jì)Proteus虛擬仿真電路.其次,以問題為導(dǎo)向,通過啟動(dòng)文件和系統(tǒng)啟動(dòng)函數(shù)的聯(lián)合分析,明確系統(tǒng)時(shí)鐘的默認(rèn)配置情況,并進(jìn)行匯編指令的無縫融合.最后,進(jìn)行延時(shí)變量的不斷修正,得到保障1 ms軟件精確延時(shí)的延時(shí)變量經(jīng)驗(yàn)值.通過該方法,能夠引導(dǎo)學(xué)生不僅掌握STM32單片機(jī)的工作原理,促進(jìn)課堂教學(xué)內(nèi)容、教學(xué)過程的全面優(yōu)化,而且能夠有效提升學(xué)生的實(shí)踐及創(chuàng)新能力.

        猜你喜歡
        示波器延時(shí)時(shí)鐘
        別樣的“時(shí)鐘”
        基于級(jí)聯(lián)步進(jìn)延時(shí)的順序等效采樣方法及實(shí)現(xiàn)
        古代的時(shí)鐘
        一款教學(xué)示波器的Y通道設(shè)計(jì)與實(shí)現(xiàn)
        電子制作(2017年13期)2017-12-15 09:00:08
        可攜帶式虛擬雙蹤示波器
        電子制作(2017年20期)2017-04-26 06:57:46
        有趣的時(shí)鐘
        時(shí)鐘會(huì)開“花”
        Two-dimensional Eulerian-Lagrangian Modeling of Shocks on an Electronic Package Embedded in a Projectile with Ultra-high Acceleration
        桑塔納車發(fā)動(dòng)機(jī)延時(shí)熄火
        光控觸摸延時(shí)開關(guān)設(shè)計(jì)
        河南科技(2014年23期)2014-02-27 14:19:00
        亚洲av色香蕉一区二区蜜桃| 国产午夜福利在线播放| 推油少妇久久99久久99久久| 久久久久久久久中文字幕| 国产一区二区三区小向美奈子| 亚洲国产成人精品无码区在线播放| 狠狠色噜噜狠狠狠888米奇视频| 亚洲动漫成人一区二区| 操老熟妇老女人一区二区| 麻豆精品国产av在线网址| 久久人妻内射无码一区三区| jlzzjlzz全部女高潮| 全程国语对白资源在线观看| 九九九免费观看视频| 天天爽夜夜爽夜夜爽| 亚洲ⅤA中文字幕无码| 亚洲天堂av高清在线| 三年片在线观看免费观看大全中国| 久久国产精久久精产国| 久久99精品这里精品动漫6| 免费精品人妻一区二区三区| 99久久人妻无码精品系列| 中国一级毛片在线观看| 久久综合激激的五月天| 黄污在线观看一区二区三区三州 | 精品人妻69一区二区三区蜜桃| 狠狠色噜噜狠狠狠777米奇小说| 国产一级农村无码| 国模一区二区三区白浆| 色偷偷激情日本亚洲一区二区| 成人欧美一区二区三区的电影| 久久中文字幕日韩精品| 熟女少妇精品一区二区三区| 潮喷失禁大喷水aⅴ无码| 久久亚洲av永久无码精品| 日韩av免费在线不卡一区 | 日本无码欧美一区精品久久 | 国产精品亚洲一区二区杨幂| 少妇性l交大片免费1一少| 亚洲av日韩av永久无码下载| 精品无码国产污污污免费|