arduino的编译器里怎样写一个空指令 arduino的编译器里怎样写一个空指令
arduino\u7684\u7f16\u8bd1\u5668\u91cc\u600e\u6837\u5199\u4e00\u4e2a\u7a7a\u6307\u4ee41.cl.exe\u6587\u4ef6\u662fVisual C\C++\u7684\u7f16\u8bd1\u5668\uff0c\u5b83\u5c06\u7a0b\u5e8f\u6e90\u4ee3\u7801\u6587\u4ef6\u7f16\u8bd1\u4e3aobj\u6587\u4ef6\u3002
2.rc.exe\u6587\u4ef6\u662f\u8d44\u6e90\u7f16\u8bd1\u5668\u3002\u5de5\u7a0b\u9879\u76ee\u4e2d\u7684\uff0erc\u6587\u4ef6\u4e2d\u5305\u542b\u4e86\u5bf9\u7a0b\u5e8f\u4e2d\u6240\u4f7f\u7528\u8d44\u6e90\uff08\u83dc\u5355\u3001\u56fe\u6807\u7b49\uff09\u7684\u63cf\u8ff0\u3002rc.exe\u5c06\uff0erc\u683c\u5f0f\u7684\u6587\u4ef6\u7f16\u8bd1\u4e3a.res\u6587\u4ef6\uff0c\u4f9b\u94fe\u63a5\u5668\u94fe\u63a5\u5230\u53ef\u6267\u884c\u6587\u4ef6\u4e2d\u3002
3.link.exe\u662fWindows\u5e73\u53f0\u7684\u94fe\u63a5\u5668\uff0c\u5b83\u5c06cl.exe\u7f16\u8bd1\u751f\u6210\u7684obj\u6587\u4ef6\uff0c\u8d44\u6e90\u7f16\u8bd1\u5668\u751f\u6210\u7684.res\u6587\u4ef6\uff0c\u4ee5\u53calib\u76ee\u5f55\u4e0b\u7684lib\u6587\u4ef6\u7b49\u94fe\u63a5\u6210\u53ef\u6267\u884c\u7684exe\u6587\u4ef6\u3001dll\u6587\u4ef6\u7b49\u3002
\u5728\u7a0b\u5e8f\u7f16\u8bd1\u5b8c\u6210\u540e\uff0c\u751f\u6210\u7684\u6587\u4ef6\u662f\u4ee5obj\u4e3a\u6269\u5c55\u540d\u7684\u5bf9\u8c61\u6587\u4ef6\uff0clink.exe\u662f\u5c06\u5bf9\u8c61\u6587\u4ef6\u548c\u5e93\u94fe\u63a5\u8d77\u6765\u4ee5\u521b\u5efa\u53ef\u6267\u884c\u7a0b\u5e8f\u6587\u4ef6\u6216\u52a8\u6001\u94fe\u63a5\u5e93\u6587\u4ef6\u7684\u5de5\u5177\u3002
link.exe\u7684\u8f93\u5165\u6587\u4ef6\u5305\u62ecobj\u6587\u4ef6\u3001lib\u6587\u4ef6\u3001exp\u6587\u4ef6\u3001def\u6587\u4ef6\u3001res\u6587\u4ef6\u3001txt\u6587\u4ef6\u3001ilk\u6587\u4ef6\u3002\u8f93\u51fa\u6587\u4ef6\u662fexe\u6587\u4ef6\u3001dll\u6587\u4ef6\u3001sys\u6587\u4ef6\u7b49\u53ef\u6267\u884c\u7a0b\u5e8f\u6587\u4ef6\u3002
\u5176\u4ed6\u5de5\u5177
1\uff0eBSCMAKE\uff0eEXE
\u751f\u6210\u4e00\u4e2a\u4fe1\u606f\u6587\u4ef6(\uff0ebsc)\uff0c\u7528\u4e8e\u6d4f\u89c8\u7a0b\u5e8f\u4e2d\u7684\u7b26\u53f7\uff08\u7c7b\u3001\u51fd\u6570\u3001\u6570\u636e\u3001\u5b8f\u548c\u7c7b\u578b\uff09\u4fe1\u606f\u3002\u53ef\u4ee5\u5728\u96c6\u6210\u5f00\u53d1\u73af\u5883\u7684\u6d4f\u89c8\u7a97\u53e3\u4e2d\u67e5\u770b\u8fd9\u4e9b\u4fe1\u606f\uff08.bsc\u6587\u4ef6\u4e5f\u53ef\u4ee5\u5728IDE\u4e2d\u751f\u6210\uff09\u3002
2\uff0e LIB\uff0eEXE
\u7528\u4e8e\u751f\u6210COFF\u683c\u5f0f\u7684lib\u5e93\u6587\u4ef6\uff0c\u53ef\u7528\u4e8e\u521b\u5efa\u5bfc\u51fa\u6587\u4ef6\u548c\u5f15\u7528\u5bfc\u51fa\u5b9a\u4e49\u7684\u5bfc\u5165\u5e93\uff0c\u5728\u4e3a\u5176\u4ed6\u5f00\u53d1\u4eba\u5458\u63d0\u4f9b\u5f00\u53d1\u63a5\u53e3\u65f6\u975e\u5e38\u6709\u7528\u3002
3\uff0e EDITBIN.EXE
\u53ef\u7528\u4e8e\u7f16\u8f91COFF\u683c\u5f0f\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u3002
4\uff0eDUMPBIN.EXE
\u53ef\u663e\u793aCOFF\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684\u6709\u5173\u4fe1\u606f\uff0c\u6bd4\u5982\u7b26\u53f7\u8868\u7b49\u3002
\u6bd4\u5982\uff0c\u4f7f\u7528dumpbin.exe\u5206\u6790\u7b2c1\u7ae0\u7684start.exe\u3002\u9009\u62e9\u201c\u5de5\u5177\u201d\u2192\u201cVisual Studio\u547d\u4ee4\u63d0\u793a\u201d\u5207\u6362\u5230start.exe\u6240\u5728\u7684\u76ee\u5f55\uff0c\u8fd0\u884c\uff1a
\u5728bin_info.txt\u4e2d\u5305\u542b\u4e86\u53ef\u6267\u884c\u6587\u4ef6\u4e2d\u975e\u5e38\u4e30\u5bcc\u7684\u4fe1\u606f\uff0c\u5305\u62ec\u6587\u4ef6\u5934\u4fe1\u606f\u3001\u8282\u4fe1\u606f\u7b49\u3002
5\uff0e NMAKE.EXE
\u7a0b\u5e8f\u7ef4\u62a4\u5b9e\u7528\u5de5\u5177\uff0c\u8bfb\u53d6\u548c\u6267\u884c\u751f\u6210\u6587\u4ef6\u3002\u5c06\u57283.3\u8282\u4e2d\u8be6\u7ec6
\u4ecb\u7ecdnmake\u7684\u4f7f\u7528\u3002
6\uff0e ERRLOOK\uff0eEXE
\u9519\u8bef\u67e5\u627e\u5de5\u5177\uff0c\u4e0eGetLastError API\u51fd\u6570\u914d\u5408\u4f7f\u7528\uff0c\u5728\u7a0b\u5e8f\u8c03\u8bd5\u65f6\u8d77\u5230\u4e86\u5f88\u591a\u7684\u4f5c\u7528\uff0c\u7528\u4e8e\u5206\u6790Windows API\u7684\u8c03\u7528\u9519\u8bef\u3002\u5982\u56fe3-1\u6240\u793a\uff0c\u5728Visual Studio IDE\u4e2d\uff0c\u53ef\u4ee5\u901a\u8fc7\u83dc\u5355\u201c\u5de5\u5177\u201d\u2192\u201c\u9519\u8bef\u67e5\u627e\u201d\u6765\u4f7f\u7528\u3002
\u76f4\u63a5\u7ed9\u4f60\u4ee3\u7801\uff1a
\u5b9a\u4e49
#define NOP do { __asm__ __volatile__ ("nop"); } while (0)
\u4f7f\u7528
NOP;
定义
#define NOP do { __asm__ __volatile__ ("nop"); } while (0)
使用
NOP;
绛旓細arduino uno鍙兘淇濈暀涓や綅灏忔暟鍙兘鍘熷洜鏄娇鐢ㄦ椂鐨勭▼搴﹂棶棰樸俛rduino鐢鐨勭紪璇戝櫒鏄痑vrgcc锛実cc涓殑float鍏跺疄灏辨槸double锛屽崰鐢8涓瓧鑺傦紝鍙互鐢╯izeof杩愮畻绗︽煡鐪嬨傚彧鏈変袱浣嶅皬鏁帮紝杩欏簲璇ユ槸浣犵▼搴忕殑闂銆Arduino UNO 鍥 Arduino鏄粈涔 Arduino鏄竴娆句究鎹风伒娲汇佹柟渚夸笂鎵嬬殑寮婧愮數瀛愬師鍨嬪钩鍙般 鍖呭惈纭欢(鍚勭鍨嬪彿鐨凙rduino...
绛旓細杩欑闄愬埗涓昏鏄负浜嗛伩鍏嶅唴瀛樻孩鍑哄拰绯荤粺宕╂簝鐨勬儏鍐靛彂鐢熴傚綋浠g爜鏂囦欢杩囧ぇ鏃讹紝浼氬崰鐢ㄨ緝澶氱殑鍐呭瓨璧勬簮锛屽彲鑳藉鑷磋繍琛屾椂鍑虹幇寮傚父鎴栨棤娉曟甯缂栬瘧銆傜劧鑰岋紝铏界劧Arduino IDE瀵逛簬鍗曚釜鏂囦欢鐨勫ぇ灏忔湁闄愬埗锛屼絾杩欏苟涓嶆剰鍛崇潃浣犱笉鑳界紪鍐欐洿澶氳鐨勪唬鐮併備綘鍙互閫氳繃灏嗕唬鐮佸垎鍓蹭负澶氫釜鏂囦欢鎴栦娇鐢ㄥ嚱鏁板簱鐨勬柟寮忔潵鎵╁睍浠g爜鐨勮鏁般傞氳繃灏...
绛旓細arduino2.0.3鍦ㄨ缃腑鎵惧埌楂樼骇閫夐」 鐒跺悗鍦ㄥ瀛愰夐」涓壘鍒拌嚜瀹氫箟灏卞彲浠ユ牴鎹嚜宸辩殑闇姹傛潵淇敼缂栬瘧鍣銆
绛旓細arduino鍜51閮芥槸鍩轰簬C璇█锛屼箣鎵浠ョ畝鍗曟瘮51鏄洜涓arduino鐨勭紪璇戝櫒鍖呭惈浜嗗緢澶氬簱锛岀洿鎺ヤ娇鐢ㄥ嚱鏁板氨鍙互浜嗐傝屼笖鏈塧rduino涓哄暐瑕佸啓51锛宎rduino鐨勫紑鍙戝懆鏈熸瘮51鐨勭煭澶氫簡銆傛湜閲囩撼路路路杩欏氨鏄痑rduino鐨勫ご鏂囦欢锛屾枃浠剁被鍨嬭鍐欎负C/C++锛屾墍浠ュ叾瀹炴槸涓涓瑷锛屼絾arduino鐨勭紪璇戝櫒骞朵笉鑳界粰51鐑х▼搴 ...
绛旓細Arduino鏄竴娆惧紑婧愮殑纭欢骞冲彴锛屽畠鎻愪緵浜嗕竴绯诲垪鐨勫紑鍙戞澘鍜屼紶鎰熷櫒妯″潡锛屽彲浠ョ敤浜庡埗浣滃悇绉嶇數瀛愰」鐩傝孉rduino IDE鏄Arduino鐨闆嗘垚寮鍙戠幆澧冿紝鐢ㄤ簬缂栧啓銆佷笂浼犲拰璋冭瘯Arduino鐨勪唬鐮併侫rduino IDE鏄竴涓法骞冲彴鐨勮蒋浠跺伐鍏凤紝鎻愪緵浜嗙畝鍗曟槗鐢ㄧ殑浠g爜缂栬緫鍣ㄣ缂栬瘧鍣鍜屼笂浼犲伐鍏凤紝鏂逛究鐢ㄦ埛缂栧啓鍜屼笂浼犱唬鐮佸埌Arduino寮鍙戞澘銆傚畠鏀寔C...
绛旓細1棣栧厛瑕佺‘瀹欳璇█鐨勫紑鍙戝钩鍙帮紝姣斿windows銆乴inux杩樻槸宓屽叆寮忥紝涓嶅悓鐨勫钩鍙颁娇鐢鐨勭紪璇戝櫒涓庡紑鍙戠幆澧冩槸涓嶄竴鏍风殑銆2纭畾寮鍙戝钩鍙板悗閫夋嫨鐩稿簲鐨勫紑鍙戝伐鍏凤紝姣斿windows浣跨敤VC6.0鍙婁互涓婄増鏈紝linux浣跨敤slickedit銆佸祵鍏ュ紡浣跨敤keil绛夌瓑鍦ㄨ繖涓句釜渚嬪瓙3鍦ㄧ浉搴旂殑寮鍙戝伐鍏烽噷鍙互鍒涘缓鐩稿簲鐨刢璇█椤圭洰锛屾瘮濡倃indows鐨勫钩鍙板彲浠ュ垱寤...
绛旓細涓哄紑鍙戞澘Arduino/Genuino Uno缂栬瘧鏃跺嚭閿欙紝鏄紪璇戠殑杩囩▼鍑虹幇閿欒閫犳垚鐨勶紝瑙e喅鏂规硶濡備笅锛1銆侀鍏堝湪鐢佃剳涓墦寮ArduinoIDE , 閫夋嫨绋嬪簭 File鈥攅xamples鈥擜rduinoISP銆2銆佺劧鍚庡皢绋嬪簭ArduinoISP涓婁紶鍒癆rduinoNno鏉垮瓙閲屻傛敞鎰忥細缂栬瘧鍣programmer 閫夋嫨AVRISP mKII銆3銆佸皢缂栬瘧鍣 Programmer 淇敼涓 Arduino as ISP鍚庛4...
绛旓細Arduino IDE閿欒鎻愮ず 鑰屼笖鍦ˋrduino IDE鍏夋爣涓細鑷姩鎸囧悜鍙戠敓閿欒鐨勯偅涓琛岀▼搴忎唬鐮併傝繕鏈変竴涓氨鏄湪鎾板啓绋嬪簭娉ㄨВ鏃讹紝涔熻灏忓績閿欒锛欰rduino IDE閿欒鎻愮ず 鏈鍚庡缓璁ぇ瀹跺湪缂栧啓绋嬪簭鏃讹紝鍙互鍐欎簡涓灏忔绋嬪簭涔嬪悗灏辨鏌ユ槸鍚﹁兘閫氳繃Arduino IDE缂栬瘧锛岄伩鍏嶅綋绋嬪簭杩囧ぇ鏃讹紝鑻ュ嚭鐜板お澶氱紪璇戦敊璇紝浼氬彉寰楀緢闅鹃櫎閿欙紒
绛旓細鎴戣繖鍙互缂栬瘧閫氳繃锛屼竴鍒囨甯
绛旓細鑰屼笖Arduino鏄崐鎴愬搧锛屼綘鍙鎶婄浉搴旂殑妯″潡缁勫悎鍦ㄤ竴璧凤紝鍐嶅啓涓鍐欑敋鑷崇洿鎺ュ鍒跺埆浜虹▼搴忓氨鑳借浜嗐傛嬁鍋氱數鑴戞潵姣斿柣鐨勮瘽锛屼綘鎷垮崟鐗囨満鍋氶」鐩氨鍍忕敤鐢靛瓙鍏冧欢鍏堝仛鍑烘潵鏄剧ず鍣ㄣ佷富鏉裤佸唴瀛樻潯銆佹樉鍗°佺‖鐩樼瓑锛屽啀鎶婂畠浠粍瑁呮垚涓鍙扮數鑴戙傜敤Arduino鍋氶」鐩氨鍍忕洿鎺ユ妸鍒汉鍋氬ソ鐨勪富鏉跨‖鐩樻樉鍗$粍瑁呮垚鐢佃剳銆Arduino鐨濂藉灏辨槸...