新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Keil MDK轉(zhuǎn)換詳解“>STM32 IAR工程->Keil MDK轉(zhuǎn)換詳解

Keil MDK轉(zhuǎn)換詳解“>STM32 IAR工程->Keil MDK轉(zhuǎn)換詳解

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò) 收藏
我在STM32的學(xué)習(xí)中發(fā)現(xiàn),大部分的STM32示例程序都是基于IAR開(kāi)發(fā)環(huán)境的,但我認(rèn)為使用Keil MDK開(kāi)發(fā)環(huán)境更加方便,可以利用RVMDK強(qiáng)大的外設(shè)仿真功能加速STM32的開(kāi)發(fā)。我在以前的Blog文章里介紹過(guò)如何在RVMDK中建立STM32 工程,以及如何使用RVMDK的軟件仿真功能,下面我將詳細(xì)說(shuō)明怎樣將已有的IAR工程移植到RVMDK。

不管是IAR還是RVMDK,編程時(shí)使用的都是STM32的固件函數(shù)庫(kù),唯一不同的是啟動(dòng)文件。RVMDK在建立STM32工程時(shí)會(huì)自動(dòng)創(chuàng)建啟動(dòng)文件 STM32F10x.s,而IAR使用的啟動(dòng)文件是cortexm3_macro.s。此外,兩者對(duì)中斷向量表的管理也不一樣。
在移植STM32工程時(shí)首先要檢查IAR工程中是否使用了中斷。方法是要看工程中stm32f10x_it.c文件內(nèi)的各中斷函數(shù)是否為空函數(shù),中斷函數(shù)為空說(shuō)明沒(méi)有使用中斷;否則若中斷函數(shù)有修改并且在main函數(shù)中對(duì)NVIC進(jìn)行了設(shè)置,則說(shuō)明使用了中斷。
下面分沒(méi)有使用中斷和使用了中斷這兩種情況分別介紹移植方法。
無(wú)中斷:
沒(méi)使用中斷時(shí)的移植較為簡(jiǎn)單,此時(shí)還可以使用RVMDK自動(dòng)創(chuàng)建的啟動(dòng)文件STM32F10x.s,只要把IAR工程project文件夾中的 stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h和main.c等文件復(fù)制到建立好的RVMDK工程文件夾下,然后為RVMDK工程添加使用到的庫(kù)函數(shù)文件即可。
有中斷:
如果IAR工程中使用了NVIC時(shí),在RVMDK下就不能再使用自動(dòng)生成的STM32F10x.s啟動(dòng)文件了,但可以用IAR工程中的啟動(dòng)文件 cortexm3_macro.s和stm32f10x_vector.s來(lái)替換。下面以萬(wàn)利EK-STM32F開(kāi)發(fā)板提供的ADCDemo為例,介紹如何將IAR工程移植到RVMDK。由于在ADCDemo中使用到了TIM2_IRQHandler,需要在RVMDK中作以下修改:
第一步、在RVMDK中建立工程,命名為ADC_MDK;然后將啟動(dòng)文件cortexm3_macro.s和stm32f10x_vector.s復(fù)制到建立好的ADC_MDK工程文件夾下,并在ADC_MDK工程中將RVMDK自動(dòng)建立的啟動(dòng)文件STM32F10x.s刪除,用以上兩個(gè)文件替換。
第二步、將ADCDemo IAR工程project文件夾中的lcd.c、lcd.h、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h和main.c文件復(fù)制到ADC_MDK工程文件夾內(nèi)。

第三步、為ADC_MDK工程添加使用到的庫(kù)函數(shù)文件,然后進(jìn)行編譯。
最后的工程目錄:

只需以上三步,不用改動(dòng)任何代碼就能搞定IAR工程的移植!只要掌握了將IAR工程移植到Keil MDK中的方法,就可以利用現(xiàn)有的大量IAR STM32示例來(lái)加快在RVMDK中的開(kāi)發(fā)。

本文引用地址:http://butianyuan.cn/article/201611/318950.htm


評(píng)論


技術(shù)專區(qū)

關(guān)閉