由於產品上用到了stc的微控制器,而需要自行寫乙個燒錄軟體,該軟體可以實現stc系列mcu檔案的燒錄。
本軟體最終取自開源的庫,因此感謝為開源無私奉獻的人們!
一、將開源的stc的庫,編譯生成exe檔案
本示例採用的github上的開源庫:
由於該demo採用的是python庫,用c++不是很容易呼叫,因此將其編譯為exe可執行檔案使用。
具體方法如下:
2、安裝pyinstaller
pip install pyinstaller
輸入$ pyinstaller -v顯示版本資訊表示安裝成功,顯示結果如下:
3.63、進入stcgal資料夾,輸入以下命令:
pyinstaller -f __main__.py frontend.py ihex.py models.py options.py protocols.py utils.py
會在當前資料夾的dist子資料夾下面生成__main__.exe
然後執行 __main__.exe ,會生成如下的幫助命令,表示編譯成功,檔案可用
usage: __main__.exe [-h] [-a] [-r resetcmd] [-p ] [-p port]
[-b baud] [-l handshake] [-o option] [-t trim] [-d] [-v]
[code_image] [eeprom_image]
stcgal 1.6 - an stc mcu isp flash tool
(c) 2014-2018 grigori goronzy and others
positional arguments:
code_image code segment file to flash (bin/hex)
eeprom_image eeprom segment file to flash (bin/hex)
optional arguments:
-h, --help show this help message and exit
-a, --autoreset cycle power automatically by asserting dtr
-r resetcmd, --resetcmd resetcmd
shell command for board power-cycling (instead of dtr assertion)
-p , --protocol
protocol version (default: auto)
-p port, --port port serial port device
-b baud, --baud baud transfer baud rate (default: 19200)
-l handshake, --handshake handshake
handshake baud rate (default: 2400)
-o option, --option option
set option (can be used multiple times, see documentation)
-t trim, --trim trim rc oscillator frequency in khz (stc15+ series only)
-d, --debug enable debug output
-v, --version print version info and exit
二、通過命令列測試編譯是否成功
./__main__.exe -p stc15 -p com5 -l 1200 -o clock_source=internal -t 33000 test.hex
具體命令解釋如下,-p為選擇的型號,-p為選擇的串口號 ,-l為波特率 -o為選擇時鐘源,-t為時鐘頻率 最後test.exe表示燒錄的檔案的路徑。
如有更具體的引數,請參考/blob/master/doc/usage.md檔案,上面對命令的解釋更加詳細。
三、編寫qt軟體
可以呼叫qprocess,當外部檔案命令列呼叫該檔案,具體**如下:
標頭檔案:
#ifndef stc_isp_config_h
#define stc_isp_config_h
typedef struct
_stc_isp_download_par;
//燒錄是否成功
typedef enum
_enum_stc_isp_download;
class stc_isp_config : public qobject
;#endif // stc_isp_config_h
原始檔:
#include "stc_isp_config.h"
#include _stc_isp_download_par isp_downloadpar;
bool isp_finish_flag = true; //預設為完成
stc_isp_config::stc_isp_config(qobject *parent) : qobject(parent)
//燒錄程式
bool stc_isp_config::isp_write_program(_stc_isp_download_par download_par)
//如果未完成 則退出
if(!isp_finish_flag)
//預設處於未完成狀態
isp_finish_flag = false;
//檔案主路徑
qstring command_main = qstring("stcisp.exe");
//arg賦值
qstringlist command_args;
//型號
//串口號
//波特率
//時鐘選擇
//時鐘頻率選擇
//檔名
//執行
m_process->start(command_main,command_args);
return true;
}//讀取資訊
void stc_isp_config::slot_command_info_read()
else if(read_info.contains("serial port error: could not open port ")) //串列埠無效或被占用
else if(read_info.contains("writing flash:")) //燒錄中
else if(read_info.contains("finishing write"))
qdebug() << read_info;
}//出錯資訊
void stc_isp_config::slot_command_error_read()
//完成
void stc_isp_config::slot_command_finished(int exitcode)
Qt 專案編寫流程
僅以本博文記錄qt專案編寫流程,防止每次新專案開始時的各種搜尋。1.新建專案 子目錄專案.pro檔案格式 template subdirs subdirs gui2.pro檔案 中文亂碼解決方法 pro檔案新增以下 qmake cxxflags execution charset utf 8 qma...
STC系列51微控制器延時程式彙總
答應大家得福利來啦,這一期我就給大家分享一下stc系列51微控制器得延時程式彙總。11.0592mhz晶振 延時1ms 1 y1指令集 適用於sct89c系列,stc90c系列 stc89le系列 stc90le系列 void delay1ms while i 2 y3指令集 適用於stc12c系列...
Qt 編寫DLL 並呼叫
一 編寫dll庫 1 新建專案 選擇c library 選擇share library 改類名 如hellowadd 下一步 2 增加add方法如下 ifndef hellowadd h define hellowadd h include qt lib shared hellow global.h...