QT 編寫 STC系列MCU燒錄軟體

2021-10-03 15:32:23 字數 3720 閱讀 5483

由於產品上用到了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...