????本文主要介紹使用ISD51對(duì)CH55x單片機(jī)的仿真方法,并給出簡(jiǎn)單操作例程。
?
優(yōu)點(diǎn)
?????????無需硬件電路需求;
?????????可以存在于最終產(chǎn)品中,ISD51免費(fèi)使用;
?????????串口可繼續(xù)用于通信,或printf()打印調(diào)試。
缺點(diǎn)
?????????使用軟件斷點(diǎn)程序運(yùn)行速度相對(duì)較慢;
?????????若其他和ISD51系統(tǒng)中斷優(yōu)先級(jí)一樣或更高,系統(tǒng)就不能再設(shè)置斷點(diǎn)或單步執(zhí)行,默認(rèn)狀態(tài)ISD51中斷函數(shù)優(yōu)先級(jí)為0;
?????????僅能ISD51中斷和全局中斷全部打開時(shí)ISD51才能生效,如此,也可以使ISD51在程序運(yùn)行時(shí)停止工作。
支持功能
????基本硬件調(diào)試功能都能支持,如:變量監(jiān)視,設(shè)置斷點(diǎn)等。
使用方法
? ? ? ? ?1.將ISD51.A51和ISD51.H加入項(xiàng)目工程;
? ? ? ? ?2.初始化串口,配置合適的波特率,最后必須使能全局中斷;
? ? ? ? ?3.選擇合適的ISD51初始化函數(shù);
?????????????????? ISDinit():初始化并運(yùn)行用戶程序,如果KEIL與單片機(jī)通信成功,程序就會(huì)立即終止運(yùn)行
?????????????????? ISDwait():初始化ISD51并一直等待KEIL連接上
?????????????????? ISDcheck():周期性檢查ISD51連接
? ? ? ? ?4.編譯用戶程序燒錄到單片機(jī)內(nèi);
? ? ? ? ?5.在KEIL -> option for target -> DEBUG?設(shè)置選擇ISD51 In-system Debugger,在setup里設(shè)置與ISD51串口初始化相對(duì)應(yīng)的串口波特率。
????6.點(diǎn)擊DEBUG按鈕進(jìn)入硬件調(diào)試模式。
???????? ISD51接口函數(shù)可在KEIL幫助文檔中查到。
? ? ? ? ?
? ? ? ? ??
? ? ? ? ?? ?
圖1 ISD51配置設(shè)置
波特率與COM口根據(jù)需要自己設(shè)置,因?yàn)?/span>IDS51為動(dòng)態(tài)配置連接,所以ISD51 Identification 信息可以忽略。
?
錯(cuò)誤排查:
?????? 1: KEIL 串口的設(shè)置于MCU串口設(shè)置不匹配,如串口號(hào),波特率等信息。
?????? 2:?jiǎn)纹瑱C(jī)只能使用串口0進(jìn)行在線仿真,不可以使用其他串口。
仿真時(shí)可以先測(cè)試串口是否正常,先用串口調(diào)試工具下發(fā)0XA5,單片機(jī)正常跑DEBUG程序的時(shí)候會(huì)相應(yīng)0xF7,0xFF,0x00,0x00,0x09,0x19,0xAC,如果收到如上所示代碼,說明ISD設(shè)置正常。
????3.必須先燒錄帶有ISD51的hex文件給單片機(jī),之后才能進(jìn)行硬件仿真