新聞中心

EEPW首頁 > 嵌入式系統(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-24 來源:網(wǎng)絡(luò) 收藏
簡介:我在STM32的學(xué)習(xí)中發(fā)現(xiàn),大部分的STM32示例程序都是基于IAR開發(fā)環(huán)境的,但我認(rèn)為使用Keil MDK開發(fā)環(huán)境更加方便,可以利用RVMDK強(qiáng)大的外設(shè)仿真功能加速STM32的開發(fā)。我在以前的Blog文章里介紹過如何在RVMDK中建立 ...
關(guān)鍵字:STM32
我在STM32的學(xué)習(xí)中發(fā)現(xiàn),大部分的STM32示例程序都是基于IAR開發(fā)環(huán)境的,但我認(rèn)為使用Keil MDK開發(fā)環(huán)境更加方便,可以利用RVMDK強(qiáng)大的外設(shè)仿真功能加速STM32的開發(fā)。我在以前的Blog文章里介紹過如何在RVMDK中建立STM32工程,以及如何使用RVMDK的軟件仿真功能,下面我將詳細(xì)說明怎樣將已有的IAR工程移植到RVMDK。

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

不管是IAR還是RVMDK,編程時(shí)使用的都是STM32的固件函數(shù)庫,唯一不同的是啟動文件。RVMDK在建立STM32工程時(shí)會自動創(chuàng)建啟動文件STM32F10x.s,而IAR使用的啟動文件是cortexm3_macro.s。此外,兩者對中斷向量表的管理也不一樣。

在移植STM32工程時(shí)首先要檢查IAR工程中是否使用了中斷。方法是要看工程中stm32f10x_it.c文件內(nèi)的各中斷函數(shù)是否為空函數(shù),中斷函數(shù)為空說明沒有使用中斷;否則若中斷函數(shù)有修改并且在main函數(shù)中對NVIC進(jìn)行了設(shè)置,則說明使用了中斷。

下面分沒有使用中斷和使用了中斷這兩種情況分別介紹移植方法。

無中斷:

沒使用中斷時(shí)的移植較為簡單,此時(shí)還可以使用RVMDK自動創(chuàng)建的啟動文件STM32F10x.s,只要把IAR工程project文件夾中的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h和main.c等文件復(fù)制到建立好的RVMDK工程文件夾下,然后為RVMDK工程添加使用到的庫函數(shù)文件即可。

有中斷:

如果IAR工程中使用了NVIC時(shí),在RVMDK下就不能再使用自動生成的STM32F10x.s啟動文件了,但可以用IAR工程中的啟動文件cortexm3_macro.s和stm32f10x_vector.s來替換。下面以萬利EK-STM32F開發(fā)板提供的ADCDemo為例,介紹如何將IAR工程移植到RVMDK。由于在ADCDemo中使用到了TIM2_IRQHandler,需要在RVMDK中作以下修改:

第一步、在RVMDK中建立工程,命名為ADC_MDK;然后將啟動文件cortexm3_macro.s和stm32f10x_vector.s復(fù)制到建立好的ADC_MDK工程文件夾下,并在ADC_MDK工程中將RVMDK自動建立的啟動文件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工程添加使用到的庫函數(shù)文件,然后進(jìn)行編譯。

最后的工程目錄:

cortexm3_macro.s和stm32f10x_vector.s啟動文件:

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




關(guān)鍵詞: STM32IAR工程MD

評論


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

關(guān)閉