歐建開 楊吟野 岑偉富 姚冰 呂林



摘要:本文選用目前市場上使用最多的通用ARM嵌入式芯片STM32F103C6為核心部件,利用Proteus虛擬仿真軟件和KeilMDK集成開發環境搭建了基于該芯片的嵌入式虛擬實驗平臺,并通過串口通信實驗介紹了在該實驗平臺下進行的硬件電路設計和軟件編寫等過程。
[關鍵詞]STM32 嵌入式 虛擬實驗
1 引言
隨著嵌入式技術不斷發展及廣泛應用,市場對人才的需求日趨顯著,而在新工科背景下,高校承擔著多層次技術、復合型人才及拔尖創新人才培養的重要使命,因此嵌入式技術的多學科融合教學是當前高校在電子信息技術專業的重要課程之一。與其他課程相比,嵌入式技術課程的特殊性在于其是一門軟硬件結合且注重實踐訓練的課程,其是以數字電路技術、模擬電路技術、可編程控制器等課程作為基礎的多課程融合實訓項目,對于學生而言,不僅需要過硬的硬件電路設計和制作能力,對控制器編程語言和編程方法的掌握程度同樣顯得十分重要。根據目前多數高校情況分析,在嵌入式技術課程的教學上取得的成果并未達到較理想的效果。其主要由于以下幾個方面:
實驗室基礎建設不足:雖然多數高校都已建設了滿足一定教學能力和教學功能的嵌入式實驗室,但是由于資金和教學資源的投入欠缺,導致所建嵌入式實驗室的實驗設備和相關測試儀器數量短缺,實驗教學項目種類不足,師資力量欠缺等問題。導致了學生在實踐教學階段出現“流水式”教學,特別對于那些電子專業生源較為豐富的地方院校來說,這種基礎硬件不足所帶來的問題更為顯著,從而使得教學質量無法得到有效提高。
與市場技術需求脫節:由于高校實驗室服役周期長,教學設備更新過慢,而目前市場上嵌入式芯片更新較快,一般在8個月左右,新嵌入式芯片的推出必然會帶來新的開發工具和實驗設備,這就使得多數高校對人才的培養與市場需求脫節。例如,目前市場上使用的嵌入式產品使用的芯片主要以ARM為主,其應用最廣的為ARMv7架構的Cortex-M系列芯片。然而,目前很多高校的嵌入式課程教授的內容還是以較為老舊的ARMv5架構的ARM7系列芯片為主,實驗設備大多也停留在了ARM7時代。高校的教學與市場需求完全脫節,學生進入企業后還得重新培訓學習,這無疑增加了企業的負擔。嵌入式教學需要與時俱進,以市場為導向,不斷在教學中引入新技術、新方案,培養市場需要且能用的人才。
基于上述問題,考慮到傳統實驗教學周期長、教學導向性欠缺及教學技術輸出與社會脫節問題,因此,本文討論了一種基于Proteus的STM32嵌入式虛擬實驗平臺設計方案。
2 虛擬實驗平臺建設探討
虛擬仿真技術是計算機科學不斷發展所衍射一種分析手段,其主要以計算機為硬件設施,構建一個與實際實驗環境相近似的虛擬實驗環境。其優點在于實驗過程除使用計算機外,不需其它實驗設備,因此,實驗設置時不受設備更新快、師資不足、實驗耗材費用等問題影響。同時虛擬仿真不受時間和空間限制,學生不需在實驗室也能完成實驗仿真訓練,且能根據實驗對象需求進行擴展。本文將以貴州民族大學嵌入式教學為例。
2.1 仿真對象選取及探討
我校實驗教學選用了STM32F103系列嵌入式芯片,由意法半導體公司推出,內核為ARMCortex-M3,因其具有高性能、低成本、低功耗等優點廣泛運用于各高校實驗教學中。至該系列芯片推出后,不僅成為了目前市場上最為暢銷的ARMCortex-M系列嵌入式芯片,同時也成為了嵌入式初學者的入門首選。本論文實例中選擇了STM32F103系列中STM32F103C6芯片,其可用Proteus仿真軟件進行仿真設計。此外,該芯片最高工作頻率高達72MHz,擁有32KROM、10KRAM、通用IO口37個、USB接口、12位ADC、I2C接口、SPI接口、UART接口等內部外設。
2.2 軟件選取及介紹
仿真工具選用英國Lab Center Electronics公司推出的Proteus電路仿真軟件。目前僅該軟件支持STM32系列芯片的虛擬仿真,該軟件不僅具有示波器、信號發生器、電壓表、電流變等多種嵌入式實驗所需的虛擬儀表,還具有各種常用虛擬電子元件,因此可使用這些虛擬儀表和虛擬電子元件能搭建出各種嵌入式實驗所需的電路。
集成開發環境選擇ARM旗下Keil公司的MDK開發工具,該軟件界面友善、操作簡單且編譯效率高,還支持ARM公司最新的Cortex-M3/M1/M0內核微處理器,自帶軟件調試、Flash燒寫和啟動代碼配置等功能,在國內深受廣大嵌入式開發人員青睞。
2.3 應用實例設計及分析
2.3.1 實驗設置及分析
實驗設計流程圖如圖1所示,本實驗以實驗難度較為適中的串口通信實驗為例,介紹在該嵌入式虛擬實驗平臺上進行實驗的過程。實驗輸入為實現STM32F103C6串口1的數據收發功能,當串口1接受到數據后,對數據進行加1處理后通過串口1發送回去。
實驗要求:
(1)參數要求波特率9600、8位數據位、1位停止位;
(2)根據實驗內容在Proteus電路仿真軟件上自行設計電路;
(3)使用KeilMDK軟件編寫程序并進行編譯后導入Proteus;
(4)運行Proteus進行仿真并觀察記錄實驗結果。
2.3.2 硬件電路設計
根據實驗要求分析得出該實驗僅用到STM32F103C6串口,本實驗電路只需在Proteus軟件上搭建STM32F103C6最小系統(包括復位電路和震蕩電路),通過使用Proteus自帶的串口調試工具Virtual Terminal連接STM32F103C6的串口,實驗電路如圖2所示。
2.3.3 程序編寫及實驗分析
根據實驗輸入及要求,程序涉及到對串口和GPIO端口初始化以及串口中斷處理,具體程序流程圖如圖3所示。
使用KeilMDK軟件創建工程,根據程序流程圖編寫對應代碼,并編譯生成HEX文件。以下為主要代碼:
intmain(void)
GPIO_InitTypeDefGPIO_
InitStructure;
USART_InitTypeDefUSART_
InitStructure;
RCC_APB2PeriphClockCmd(RCC_
APB2Periph_GPIOA|RCC__APB2Periph_USART1,ENABLE);/*打開GPIOA和USART1時鐘*/
GPIO_InitStructure.GPIO_
Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode=
GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=
GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct
ure);
GPIO_InitStructure.GPIO_
Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO
Mode=GPIO_Mode_INFLOATING;
GPIO_InitStructure.GPIOSpeed=
GPIO_Speed50MHz;
GPIO_Init(GPIOA,&GPIO_
InitStructure);
USART_InitStructure.USART
BaudRate=9600;//串口參數設置
USART_InitStructure.USART_
WordLength=USART_WordLength_8b;
USART_InitStructure.USART
StopBits=USART_StopBits_1;
USART_InitStructure.USART
Parity=USARTParity_No;
USART_InitStructure.USART_
Mode=USART_Mode_Rx|USART_Mode_Tx;USART_Init(USART1,&USART_InitStructure);//串口初始化
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//使能串口1接收中斷
USART_Cmd(USART1,ENABLE);
使能串口1
while(1)
voidUSART1_IRQHandler(void)//串口1中斷程序
if(SET==USART_
GetF1agStatus(USART1,USART_FLAG_RXNE))
USART
ClearITPendingBit(USART1,USART_IT_RXNE);
USART
SendData(USART1,USARTReceiveData(USART1)+1);//串口1發送數據
}
將HEX文件導入Proteus上的STM32F103C6芯片,啟動Proteus仿真軟件,使用已與STM32F103C6連接好的VirtualTerminal串口調試工具,向STM32F103C6發送0x30、0x31、0x32的數據后STM32F103C6會通過串口返回0x31、0x32、0x33數據,返回的數據證明實驗結果符合實驗要求,仿真結果如圖4所示。
3 結論
本文選用Proteus和KeilMDK作為軟件平臺,STM32F103C6芯片作為仿真對象搭建嵌入式虛擬仿真平臺進行實驗,該平臺的應用有助于解決嵌入式實驗室基礎建設不足、與市場技術需求脫節等問題。同時該嵌入式虛擬實驗平臺的建設還能對電子類實驗虛擬化提供一定借鑒意義。
參考文獻
[1]陳明。嵌入式應用類課程實踐教學改革研究[J].才智,2018(08):5.
[2]林王兵,王剛,劉磊,應用型本科高校嵌入式實驗室建設探索[J].電子世界,2012(15):82-83.
[3]胡德鵬。嵌入式系統技術發展趨勢探析[J].數字技術與應用,2018,36(10):233-234.
[4]董梅,意法半導體STM32MCU十年間全球出貨量超過30億顆,下一步的愿景是什么?[J].世界電子元器件,2017(11):26-29.
[5]高克芳.Proteus在嵌入式系統實踐教學的應用[J]上饒師范學院學報,2015,35(03):10-12.
[6]Kei1支持STM32互聯系列[J].電子技術應用,2009,35(09):164.