平常在寫微控制器專案時會加入版本號,編譯時間等。嫌手動修改巨集定義麻煩,嘗試使用指令碼自動完成,剛好 mdk 也可以指定執行指令碼。
指令碼語言選擇python
方法是mdk
在編譯**前執行python
檔案,替換指定檔案內的字串。
#define build_num (uint8_t *)"7"
#define build_time (uint8_t *)"2020-05-18 08:55:08"
注意兩個點:
python
的搜尋學習下吧。
import time
import sys
defupdate_build_info
(version_file_path="")
:ifnot version_file_path:
return
f =none
file_data =
""try
: f =
open
(file
=version_file_path, mode=
'r', encoding=
'utf-8'
)while
true
: line = f.readline()if
"#define"
in line and
"build_time"
in line:
_old_str_list = line.split(
"\""
) _old_str_list[1]
="\"\""
.format
(time.strftime(
"%y-%m-%d %h:%m:%s"
, time.localtime())
) new_str =
""for _ in _old_str_list:
new_str += _
line = line.replace(line, new_str)
if"#define"
in line and
"build_num"
in line:
_old_str_list = line.split(
"\""
) _old_str_list[1]
="\"\""
.format
(int
(_old_str_list[1]
)+1)
new_str =
""for _ in _old_str_list:
new_str += _
line = line.replace(line, new_str)
if line:
file_data += line
else
:break
f.close(
) f =
open
(file
=version_file_path, mode=
'w', encoding=
'utf-8'
)if file_data:
f.write(file_data)
except filenotfounderror:
print
(" not found\n"
.format
(version_file_path)
)finally
:if f and
not f.closed:
print
("close file\n"
) f.close(
)if __name__ ==
"__main__"
:# 傳入檔案路徑
arg = sys.ar**[1]
update_build_info(arg)
python自動執行指令碼
總體思路 將網頁執行指令碼抓包後轉換成python 用迴圈自動執行 1 抓包 f12開啟瀏覽器抓包,點執行按鈕,network copy curl 2 curl轉換成python curl轉換python 將轉換後的 copy到python檔案中,後面加迴圈語句,如下 for month in ra...
MDK程式無法執行
繼續我第乙個mdkv5.15程式。程式的功能是用printf輸出乙個字串,使用stm32f103rc晶元,v3.5.0版本的韌體庫,串列埠1輸出。include stm32f10x.h include usart inittypedef usart initstructure gpio initty...
python自動化執行指令碼
2 終端下執行 crontab e解釋 users tongmeina pycharmprojects jiratopdf everyorg.py 的含義 為你要自動化執行指令碼的絕對路徑,必須是絕對路徑 30 的含義 參照鏈結 第1個 表示分鐘1 59 每分鐘用 或者 1表示 第2個 表示小時1 ...