㈠ MDK5破解工具,MDK怎麼破解
《Keil MDK-ARM 5.34破解版》網路網盤資源免費下載:
鏈接: https://pan..com/s/1quyfvpzzqylApVi0J1QSNg
Keil MDK-ARM 5.34是一款基於Cortex -M、Cortex-R4、ARM7和ARM9處理器設備的完整軟體開發環境。MDK-ARM專為微控制器(單片機)應用而設計,易於學習和使用,但功能強大,足以滿足要求最苛刻的嵌入式應用。每個MDK版本都包括IDE、C / C ++編譯器、調試器、軟體包管理和CMSIS。MDK-Core為超過3,750個基於Cortex-M的設備提供領先的支持,包括新的Arm Cortex-M23 / M33內核。
㈡ MDK-arm的ARM編譯工具
ARM編譯工具鏈(之前被稱為ARM RealView編譯工具)包含:
ARM C/C++ 編譯器(armcc)
Microlib
ARM Macro匯編器(armasm)
ARM鏈接器(armLink)
ARM工具(Librarian and FromELF)
基於以上專門針對ARM架構的微控制器編譯器,工程師可以使用C或者C++編寫應用程序。通過以上編譯器的編譯,可以獲得ARM匯編語言的高效率和高速度。
ARM編譯器將C/C++元文件編譯成可重定位(Relocatable)的目標模塊,並且在其中嵌入供uVision調試器或在線調試器調試的符號信息。同時,ARM編譯器能幫助生成listing file,它可以包含symbol table(符號表)和交叉引用信息。
ARM RVCT編譯器被廣泛視為行業最佳的基於ARM架構的編譯器。它定位於最佳代碼密度的編譯器,可以幫助生成代碼量最小的編譯器,幫助節省代碼量對內存的要求從而降低硬體成本。同時,編譯器支持ISO標準的C/C++語言,可以將32-bit ARM, the 16-bit Thumb, 及混合的32/16-bit Thumb2 指令集生成經過高度優化的代碼。
ARM公司一直致力於持續改善ARM編譯器在代碼密度和代碼性能兩方面的性能,同時增添了很多新的特點,如Microlib等。
㈢ eclipse 怎麼編譯keil工程
1. 把KeilBuilder.exe復制到MDK的編譯器目錄下, 一般為: C:\Keil\ARM\BIN40下, 這要看你的MDK安裝在哪了.
2. 新建一個C Project 工程, 並選擇Cross GCC交叉編譯工具為本工程編譯工具.
.通過菜單File -> new -> C Project 新建一個空的C工程. 在彈出的對話框中如下圖, 注意要選擇"Cross GCC"工具鏈:
3. 為新建的工程導入Keil工程或僅導入源文件.
4. 設置Eclipse工程交叉編譯環境.
.在左邊的"Porject Explorer"窗口內滑鼠右鍵單擊工程名, 選擇最後的菜單項"Properties"項.
.在C/C++ Build -> Settings界面中, 設置"Configuration"為"[ All configurations ]"; 設置"Cross Setttings"的"Path"即交叉工具鏈路徑為KeilBuilder所有的目錄, 如C:\Keil\ARM\BIN40. 如下圖:
.在"Cross GCC Compiler"的"Command"下填入"KeilBuilder -no", 表示什麼也不做; 另外的"Cross GCC Linker"及"Cross GCC Assembler"的"Command"中也設置為同值. 此設置為防Eclipse對不存在的GCC工具的報警, 如下圖:
.在C/C++ Build 界面中, Builder Settings 中去掉"Use default build command"上的勾, 並在"Build command"中填入"KeilBuilder.exe -d xxxx -e". 基中xxx為工程根目錄路徑, "-d"表示設置KeilBuilder的工程路徑, "-e"表示在編譯時自動對Eclipse工程進行設置, 目前僅設置"C/C++ Build" -> "Settings" -> "Cross GCC Compiler" -> 「Symbols」和」Includes」以及」Cross GCC Assmebler」 -> 「General」項. 如下圖:
.在C/C++ Build 界面中的"Behaviour"選項卡中, 在"Build(Incremental build)"中填入"-s"表示安靜編譯; 在"Clean"中填入"-c"表示清理工程. 如下圖:
.在C/C++ Build 中的 "Discovery Options" 中去掉 "Enable generate scanner info command"選項. 如下圖:
.不用設置預編譯宏或者Includes選項, 因為KeilBuilder會自動幫忙加進去. 所以, 有時候你看到代碼還有一大堆的錯誤時, 編譯一次後, 刷新工程(右鍵工程名 -> "Refresh")就木有錯誤鳥.
5. 到此, 可以編譯你的工程了. 通過菜單項"Project" -> "Build All"編譯工程, 或"Project" -> "Clean..."清理工程. 編譯不通過或得到不正確Hex文件的繼續往下看. 如下圖:
6. 在Eclipse中添加一個外部工具, 這樣可以通過Eclipse菜單項運行KeilBuilder, 方便.
.在Eclipse菜單中選擇Run -> External Tools -> External Tools Configurations...
.在彈出的對話框中雙擊"Program" 增加一個外部工具.
.在Name中填入"KeilBuilder".
.在"Main"選項卡中, Location通過"Browse File System..." 選擇KeilBuilder程序, 如: C:\Keil\ARM\BIN40\KeilBuilder.exe; 在Working Directory中填入KeilBuilder所在的目錄, 如C:\Keil\ARM\BIN40.
.在"Build"選項卡中, 去掉"Build before launch"上的勾.
.最後單擊"Apply" -> "Run"完成添加, 並運行KeilBuilder工具.
此後你就可以通過菜單Run -> External Tools -> KeilBuilder 來快速運行KeilBuilder工具了. 如下2圖:
7. 經過前面4步的設置, 你的工程編譯很可能會編譯不通過, 或者編譯出來的Hex文件下載不正確. 那是因為一些編譯器/鏈接器選項你還沒有配置.
這時, 你可以通過菜單Run -> External Tools -> KeilBuilder來運行KeilBuilder工具, 通過界面來設置這些參數. 或者也可以直接用記事本打開工程目錄中的"cts.ini"(如果工程目錄中不存在此文件, 請轉到KeilBuilder所在的目錄下的"cts.ini", 如果KeilBuilder所在目錄下也沒有, 那麼請雙擊運行下KeilBuilder程序, "cts.ini"就會自動生成)對參數進行修改.
注意, 在KeilBuilder界面上設置參數時, 必須選擇好自己的工程目錄, 如果沒有選擇工程目錄, 設置的結果會保存到KeilBuilder所在的目錄下的"cts.ini"文件中. KeilBuilder在首次運行時, 會在其所在目錄下生成cts.ini文件並設置參數為默認值. KeilBuilder在每次編譯一個工程時, 如果該工程目錄下發現"cts.ini", 就使用工程目錄下的"cts.ini"; 如果沒有發現"cts.ini"文件, 則把KeilBuilder所在目錄下的"cts.ini"文件復制一份到工程目錄下, 然後再編譯.
關於"cts.ini"文件中的這些參數, 它對應於Keil MDK環境中的ASM編譯器/C編譯器/Linker選項. 因為時間問題, 在KeilBuilder中並未實現(以後有空再搞吧)類似於Keil uVision中的選項式配置. 如果熟悉這些參數最好, 不熟的話可以先在Keil uVision中配置好, 再對應添加到"cts.ini"中.
在"cts.ini"文件中的"ASM=" 後面的內容對應於Keil uVision工程選項中的"Asm"選項.
在"cts.ini"文件中的"CC=" 後面的內容對應於Keil uVision工程選項中的"C/C++"選項.
在"cts.ini"文件中的"LNK=" 後面的內容對應於Keil uVision工程選項中的"Linker"選項.
8. 設置"cts.ini"文件中的編譯選項確實不是一般人能搞定. 我也不懂(誰懂的做個說明分享下吧, 可以的話還能集成為UI, 更方便). 因為人懶, 不想去深究這些編譯(鏈接)器選項, 於是想到了個折中的辦法: 通過Keil uVision來設置好這些參數並編譯工程, 然後把它實時的編譯選項顯示出來以供參考! 這樣當編譯選項無法搞定時, 就把整個工程交給keil uVision來編譯一次, 然後參考實時獲取的參數再對Eclipse工程的"cts.ini"文件做相應的修改就OK了.
在keil uVision中捕獲它的編譯選項, 需要做如下的設置. 在工程屬性"Options for Target xxxx"的"User"選項卡中 設置keil編譯後運行」KeilBuilder.exe -p」. 表示捕獲keil uVision編譯選項, 如下圖:
㈣ STM32開發軟體MDK的編譯問題
options for target----c/c++------optimization----one for ELF per function選並纖中就毀輪好了
或者安裝keil mdk V4.6以上版絕余仿本
㈤ keil5編譯按鈕在哪
keil5編譯按鈕在:Debug--找到圖中所示按鈕即為單步運行。
分別由C51及C51編譯器編譯生成目標文件(.obj)。目標文件可由LIB51 創建生成庫文件,也可以與庫文件一起經L51 連接定位生成絕對目標文件(.abs)。abs文件由OH51 轉換成標準的hex 文件,以供調試器dScope。
Keil C51單片機軟體開發系統的整體結構:
C51工具包的整體結構,μVision與Ishell分別是C51 for Windows 和for Dos 的集成開發環境(IDE),可以完成編輯、編譯、連接、調試、模擬等整個開發流程。開發人員可用IDE本身或其它編輯器編輯C或匯編源文件。
然後分別由C51及C51編譯器編譯生成目標文件(.obj)。目標文件可由LIB51 創建生成庫文件,也可以與庫文件一起經L51 連接定位生成絕對目標文件(.abs)。
abs文件由OH51 轉換成標準的hex 文件,以供調試器dScope51 或tScope51 使用進行源代碼級調試,也可由模擬器使用直接對目標板進行調試,也可以直接寫入程序存貯器如EPROM中。
㈥ MDK編譯器怎麼樣
KEIL MDK是基於的Cortex-Arm微控制器的最全面的軟體開發解決方案。
它包括IDE,C / C ++編譯器,調試器,軟體包管理和CMSIS。MDK5版軟體包添加新的運行時環境(RTE)來管理設備的支持和軟體組件。
超過3000款Arm?的Cortex?-M微控制器的解決方案;
支持32位Arm Cortex-A和Cortex-A/ Cortex-M的基礎設備;
Software Packs包括現成可使用的CMSIS和中間件組件;
億道電子是國內最全面的開發工具提供商, 致力於將全球最先進的軟體產品引薦給國內研發型企業使用
㈦ MDK編譯提示main.c(7): warning: #550-D: variable "XX" was set but never used怎麼破
定義了變數key,使用key的代碼為:key = SPI2_ReadWriteByte(0x00);執行函數並將函數返回值賦值給key,沒有使用這個返回。
比如
int b=a;
從a中讀取數據負值給b.其實,我是感覺聲明和負值的地方離那麼遠很奇怪。
反正循環裡面又不用,為什麼不到負值的時候才聲明。
(7)mdk編譯器指南擴展閱讀:
使用變數並不需要了解變數在計算機內存中的地址,只要通過變數名引用變數就可以查看或更改變數的值。在VB Script中只有一個基本數據類型,即Variant,因此所有變數的數據類型都是Variant。
例如,可以創建一個名為Click Count的變數來存儲用戶單擊Web頁面上某個對象的次數。
㈧ Realview MDK中編譯器是如何中斷處理的
分析描述 Realview MDK中編譯器處理ARM中斷的全過程 問題解答 問題分析: 在ARM程序的開發過程中,對中斷的處理是很普遍的、也是相當重要的。Realview MDK使用的RVCT編譯器提供了__irq關鍵字,用此關鍵字修飾的函數被作為中斷出來函數編譯,即在編譯的過程中,編譯器會自動添加中斷處理過程中現場保護和恢復的代碼,減小程序的開發難度,加快軟體的開發過程。 在理解__irq關鍵字的作用之前,先看一下ARM核對異常的處理過程。當產生異常時, ARM核拷貝CPSR寄存器的內容SPSR_<mode>寄存器中,同時設置適當的CPSR 位、改變處理器狀態進入ARM 態和處理器模式,從而進入相應的異常模式 。在設置中斷禁止位禁止相應中斷(如果需要)後,ARM核保存返回地址到LR_<mode>,同時設置PC為相應的異常向量。當異常返回時, 異常處理需要從SPSR_<mode>寄存器中恢復CPSR的值,同時從LR_<mode>恢復PC,具體的異常返。 回指令如下: 從SWI和Undef異常返回時使用: movs pc, LR; 從FIQ、IRQ和預取終止返回時使用: SUBS PC, LR,#4; 從數據異常返回時使用: SUBS PC, LR,#8 在使用上述指令異常返回時,如果LR之前被壓棧的話使用LDM 「∧」, 例如: LDMFD SP!, {PC}∧問題解答:理解了ARM異常處理的過程以後,Realview MDK中__irq關鍵字的作用就容易理 解了。下面的函數為一個中斷處理函數,其前面加了__irq關鍵字。 __irq void pwm0_irq_handler(void) { //Deassert PWM0 interrupt signal unsigned int i=AT91F_PWMC_GetInterruptStatus(AT91C_BASE_PWMC); // Clear the LED's. On the Board we must apply a "1" to turn off LEDs AT91F_PIO_SetOutput(AT91C_BASE_PIOA, led_mask[0]); AT91F_PWMC_StopChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID1); AT91F_AIC_ClearIt(AT91C_BASE_AIC,AT91C_ID_PWMC); AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC); } 當編譯器器編譯這個函數時,除了保存ATPCS規則規定的寄存器以外,還保存了CPSR及PC的值。在函數的返回時,還自動添加了SUBS PC, LR, #4和從SPSR寄存器恢復CPSR寄存器值的指令。用這種方式處理以後,中斷處理函數可以和普通函數一樣的使用。 注意:中斷處理都是在ARM模式下進行的,當源程序欲編譯成Thumb指令時,這時,用__irq關鍵字修飾的函數仍然會被編譯成ARM指令。
㈨ 怎麼解決MDK編譯的問題
warning: #550-D: variable "d" was set but never used
描述變姿世嘩量'd'定義但從未使用或者是雖然這個變數你使用了但編譯器認為變數d所在的語句沒有意義編返賣譯器把它優化了解決仔細衡量所定義的變數d是否有用
若是認定變數d所在語句有意義那麼嘗試用volatile關鍵字修飾變數d,若是真的沒有用那麼刪除掉以釋放可能的內存
.warning: #1-D: last line of file ends without a newline
描述:
文件最後一行不是新的一行
編譯器要求程序文件的最後一行必須是空行想了半天沒想通為什麼要這樣解決可以不理會若是覺得出現警告不跡行爽那麼在出現警告的文件的最後一行敲個回車空出一行
warning: #111-D: statement is unreachable
描述:
聲明不可能到達多出現在這種場合
int main(void)
{
...
while(1) //
無限循環
,
這在不使用操作系統的程序中最常見
㈩ 用keil軟體如何將匯編與C語言結合起來一起編寫微控制器的程式
在混合程式設計中,最常用也是最實用的方法是在C語言中加入部分組合語言的程式碼,分為兩種方法。
方法1)在Keil C51的函式中直接插入匯編語句
方法2)按照Keil C51介面規則,編寫匯編模組
方法1是利用編譯控制命令#pragma a *** (用來標識所插入的匯編語句的起始位置) 和 #pragma enda *** (用來標識所插入的匯編語句的結束位置) ,這兩條命令必須成對出現,並可以多次出現。在Keil C51中不對插入的匯編程式碼做任何的處理。
方法2編寫匯編模組,需對KEIL編譯器的編譯過程做些了解。Keil編譯器的編譯過程是首先將專案中的一個個原始檔編譯為目的碼(obj檔案),然在再通過聯結器產生為兄亮最終可執行的hex檔案。
目的碼將其中的程式碼、資料、常量放在不同的「段」中,儲存程式的段稱為「程式碼段」,儲存資料的段稱為「資料段」,最終目的碼經過Keil的聯結器按照「段」的要求轉換為程式和資料地址固定的可執行檔案。
在Keil軟體中,「段」按定位屬性分為:「可重定位段」和「絕對段」。
「可重定位段」:程式和資料在其分別所對應的儲存單元(FLASH和RAM)中的儲存地址是浮動的、可重定義的、相對可變的。
「絕對段」:其地址在連線前就已確定不變,聯結器據此為它分配地址。
經Keil編譯器生成的「段」具有如下屬性:
1)段的儲存屬性(program code data pdata xdata bdata bit等);
2)段的起始地址;3)段的長度;
4)段的定位要求:絕對段地址固定,可重定位段定位的要求如要求程式碼段在2K范圍內,資料段定位在可位定址區等;
5)段名:包括程式和資料(變數和常量)的段的儲存屬性及段所屬的程式模組(檔案)。程式碼段: ?PR? funame?Filename
資料段如:?DT? funame?Filename; ?BI? funame?Filename
標准段名字首列表
段字首 儲存型別 含義
?PR? Program 程式儲存區的程式碼
?CO? code 程式儲存區的常量
?BI? Bit 內部資料儲存區的可位定址的位變數
?BA? Bdata 內部資料儲存區的可位定址的位元組變數
?DT? Data 內部資料儲存區的變數
?ID? Idata 內部資料儲存區可間接定址的變數
?PD? Pdata 外部資料儲存區的頁變數
?XD? Xdata 外部資料儲存區的變數
只有自己重新編寫
51微控制器系列一般都用KEIL程式設計 匯編 C語言都可以
我來回答,首先生成(.害克思)檔案,然後各家微控制器載入方法都不一樣,初學者以stc微控制器載入最簡單,慢慢學,在以後就明白了為什麼它載入簡單,可買盡量支援微控制器型號多得燒寫器,美名曰程式設計器,stc基本不用,為什麼不用,可能是stc耍了個小聰明,在裡面加了點小程式,就可以串列埠下載拉,製作stc下載線很簡單,網上一搜就知道歷派,經濟緊張用stc,方便又快捷
使用微控制器專用的編譯器,比如AVR微控制器要用ICC for AVR、AVR Studio 等。然後在選項中選擇微控制器型號,比如ATmega16、ATmega128。最後要查詢微控制器所對應的庫,也就是標頭檔案。包含對應的標頭檔案,標頭檔案中有定義好的微控制器的變數名和函式,寫程式要用到,比如引腳可能定義為PORTA,這些要記住,不可以寫其他的變數羨爛寬名。具體寫程式,和普通的C程式沒有什麼區別。
基本與普通C語言差不多,只不過微控制器標頭檔案肯定是與各自微控制器相關了,不是一般C所多用的STDIO.H,像51,一般是
#include<reg51.h>
你是想模擬嗎????只要生成hex檔案,在proteus拖入的晶片點右鍵選擇edit(一般第二個選項) 然後將hex得路徑匯入,就可以模擬。。。生成hex檔案的方法是在keil選項卡中的output中設定,hexcreate打勾。。。。。
Keil系列教程:
:blog.csdn./column/details/13472.
^_^,這個可以用兩個紅外對管來實現,進去的時候1,2依次得到低電平,暫存器加1;有人出來的時候2,1依次得到低電平,暫存器減1
當暫存器等於0的時候,燈滅,不等於0的時候燈亮
^_^
程式很簡單
就是怕學生會故意搗鬼,要是有一個人背著另一個走出去,燈就不會滅了
^_^
濾波,關鍵問題是演演算法,有了演演算法剩下的就是coding了
說白了,匯編與C,程式結構是一樣的,也就是C一句話匯編要幾句語句而已