{"id":529,"date":"2022-12-21T15:04:36","date_gmt":"2022-12-21T07:04:36","guid":{"rendered":"http:\/\/www.huangrongzhen.ink\/?p=529"},"modified":"2023-03-04T19:43:57","modified_gmt":"2023-03-04T11:43:57","slug":"%e5%8d%95%e7%89%87%e6%9c%ba-gui-%e8%ae%be%e8%ae%a1%ef%bc%88%e4%b8%89%ef%bc%89-%e6%8c%89%e9%94%ae%e6%8e%a7%e4%bb%b6","status":"publish","type":"post","link":"https:\/\/www.huangrongzhen.ink\/?p=529","title":{"rendered":"\u5355\u7247\u673a GUI \u8bbe\u8ba1\uff08\u4e09\uff09- \u6309\u952e\u63a7\u4ef6"},"content":{"rendered":"<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">\u57fa\u4e8e GD32F303ZET6 \u82f9\u679c\u6d3e\u5f00\u53d1\u677f <\/p><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%8C%89%E9%94%AE%E7%B1%BB%E5%9E%8B\"><\/span>\u6309\u952e\u7c7b\u578b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6309\u952e\u7c7b\u578b\u5927\u81f4\u53ef\u4ee5\u5206\u4e3a\u4e24\u7c7b\uff0c\u7535\u5e73\u578b\u548c\u8fb9\u6cbf\u578b\u3002\u7535\u5e73\u578b\u7c7b\u4f3c\u4e8e\u952e\u76d8\u8f93\u5165\uff0c\u6309\u952e\u6309\u4e0b\u65f6\u6301\u7eed\u8f93\u51fa\u4e8b\u4ef6\uff0c\u8fb9\u6cbf\u578b\u5219\u53ea\u4f1a\u5728\u6309\u952e\u6309\u4e0b\u6216\u62ac\u8d77\u4e00\u77ac\u95f4\u8f93\u51fa\u4e8b\u4ef6\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%94%B5%E5%B9%B3%E5%9E%8B%E6%8C%89%E9%94%AE%E5%AE%9E%E7%8E%B0\"><\/span>\u7535\u5e73\u578b\u6309\u952e\u5b9e\u73b0<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u60f3\u8981\u5b9e\u73b0\u7535\u5e73\u578b\u6309\u952e\u5341\u5206\u7b80\u5355\uff0c\u53ea\u9700\u8981\u68c0\u6d4b\u8be5\u533a\u57df\u6709\u65e0\u89e6\u70b9\u6309\u4e0b\u5373\u53ef\uff0c\u5982\u4e0b\u6240\u793a\u3002\u8fd9\u6bb5\u7a0b\u5e8f\u5728 (300, 190)\uff0c\u5373\u5c4f\u5e55\u4e2d\u592e\u521b\u5efa\u4e86\u4e00\u4e2a\u957f 200\uff0c\u5bbd 100 \u7684\u89e6\u6478\u6309\u952e\u3002\u68c0\u6d4b\u5230\u6309\u952e\u88ab\u6309\u4e0b\u65f6\uff0c\u5c06\u6309\u952e\u6240\u5728\u533a\u57df\u586b\u5145\u4e3a\u84dd\u8272\uff0c\u5e76\u6253\u5370 &#8220;Button press&#8221;\uff0c\u7528\u4e8e\u6a21\u62df\u4e8b\u4ef6\u8f93\u51fa\u3002\u5982\u679c\u6309\u952e\u672a\u88ab\u6309\u4e0b\uff0c\u5219\u5c06\u6309\u952e\u6240\u5728\u533a\u57df\u586b\u5145\u4e3a\u7eff\u8272\u3002<\/p>\n\n\n\n<p>\u8fd9\u91cc\u4f7f\u7528\u4e86\u7b80\u5355\u7684\u84dd\u8272\u548c\u7eff\u8272\u533a\u5206\u6309\u952e\u6309\u4e0b\u548c\u6309\u952e\u62ac\u8d77\u4e24\u79cd\u72b6\u6001\uff0c\u540e\u8fb9\u6211\u4eec\u8fd8\u5c06\u4ecb\u7ecd\u5982\u4f55\u5728\u5c4f\u5e55\u4e0a\u663e\u793a\u56fe\u7247\uff0c\u4ee5\u53ca\u4f7f\u7528\u56fe\u7247\u88c5\u9970\u6309\u952e\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">int main(void)\n{\n  \/\/\u6309\u952e\u533a\u57df\n  const u16 x0 = 300;              \/\/\u539f\u70b9\u6a2a\u5750\u6807\n  const u16 y0 = 190;              \/\/\u539f\u70b9\u7eb5\u5750\u6807\n  const u16 width = 200;           \/\/\u6309\u952e\u5bbd\u5ea6\n  const u16 height = 100;          \/\/\u6309\u952e\u9ad8\u5ea6\n  const u16 x1 = x0 + width - 1;   \/\/\u7ec8\u70b9\u6a2a\u5750\u6807\n  const u16 y1 = y0 + height - 1;  \/\/\u7ec8\u70b9\u7eb5\u5750\u6807\n  const u16 pressColor = BLUE;     \/\/\u6309\u4e0b\u65f6\u663e\u793a\u7684\u989c\u8272\n  const u16 releaseColor = GREEN;  \/\/\u62ac\u8d77\u65f6\u663e\u793a\u7684\u989c\u8272\n  u16 x, y;                        \/\/\u4e34\u65f6\u53d8\u91cf\n  \n  \/\/\u521d\u59cb\u5316\n  InitHardware();   \/\/\u521d\u59cb\u5316\u786c\u4ef6\u76f8\u5173\n  InitSoftware();   \/\/\u521d\u59cb\u5316\u8f6f\u4ef6\u76f8\u5173\n\n  \/\/\u8bbe\u7f6e LCD \u521d\u59cb\u72b6\u6001\n  LCDDisplayDir(1); \/\/\u6a2a\u5c4f\n  LCDClear(WHITE);  \/\/\u767d\u5c4f\n  \n\n  while(1)\n  {\n    \/\/LED \u95ea\u70c1\n    LEDFlicker(5);\n    \n    \/\/\u89e6\u5c4f\u626b\u63cf\n    if(ScanTouch(&amp;x, &amp;y))\n    {\n      \/\/\u89e6\u70b9\u843d\u5728\u4e86\u76ee\u6807\u533a\u57df\n      if((x &gt;= x0) &amp;&amp; (x &lt;= x1) &amp;&amp; (y &gt;= y0) &amp;&amp; (y &lt;= y1))\n      {\n        LCDFill(x0, y0, x1, y1, pressColor);\n        printf(\"Button press\\r\\n\");\n      }\n      else\n      {\n        LCDFill(x0, y0, x1, y1, releaseColor);\n      }\n    }\n    \n    \/\/\u672a\u68c0\u6d4b\u5230\u6309\u4e0b\n    else\n    {\n      LCDFill(x0, y0, x1, y1, releaseColor);\n    }\n    \n    \/\/\u5ef6\u65f6 100 ms\n    DelayNms(100);\n  }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%BE%B9%E6%B2%BF%E5%9E%8B%E6%8C%89%E9%94%AE%E5%AE%9E%E7%8E%B0\"><\/span>\u8fb9\u6cbf\u578b\u6309\u952e\u5b9e\u73b0<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5c06\u7535\u5e73\u578b\u6309\u952e\u505a\u4e00\u4e2a\u7b80\u5355\u7684\u5c01\u88c5\uff0c\u5373\u53ef\u5b9e\u73b0\u8fb9\u6cbf\u578b\u6309\u952e\uff0c\u5982\u4e0b\u6240\u793a\u3002\u53ea\u9700\u8981\u65b0\u589e\u4e00\u4e2a\u53d8\u91cf\u4fdd\u5b58\u4e0a\u4e00\u6b21\u7684\u72b6\u6001\uff0c\u6839\u636e\u4e0a\u4e00\u6b21\u7684\u72b6\u6001\u548c\u5f53\u524d\u72b6\u6001\u5373\u53ef\u5224\u65ad\u51fa\u662f\u5426\u6355\u6349\u5230\u4e86\u6309\u952e\u6309\u4e0b\u6216\u62ac\u8d77\u4e8b\u4ef6\u3002\u8fb9\u6cbf\u578b\u6309\u952e\u53ef\u4ee5\u8f93\u51fa\u6309\u952e\u6309\u4e0b\u4e8b\u4ef6\uff0c\u4e5f\u53ef\u4ee5\u8f93\u51fa\u6309\u952e\u62ac\u8d77\u4e8b\u4ef6\uff0c\u4e3a\u7b80\u5355\u8d77\u89c1\uff0c\u672c\u7cfb\u5217\u9ed8\u8ba4\u53ea\u8f93\u51fa\u6309\u952e\u6309\u4e0b\u4e8b\u4ef6\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">int main(void)\n{\n  \/\/\u6309\u952e\u533a\u57df\n  const u16 x0 = 300;              \/\/\u539f\u70b9\u6a2a\u5750\u6807\n  const u16 y0 = 190;              \/\/\u539f\u70b9\u7eb5\u5750\u6807\n  const u16 width = 200;           \/\/\u6309\u952e\u5bbd\u5ea6\n  const u16 height = 100;          \/\/\u6309\u952e\u9ad8\u5ea6\n  const u16 x1 = x0 + width - 1;   \/\/\u7ec8\u70b9\u6a2a\u5750\u6807\n  const u16 y1 = y0 + height - 1;  \/\/\u7ec8\u70b9\u7eb5\u5750\u6807\n  const u16 pressColor = BLUE;     \/\/\u6309\u4e0b\u65f6\u663e\u793a\u7684\u989c\u8272\n  const u16 releaseColor = GREEN;  \/\/\u62ac\u8d77\u65f6\u663e\u793a\u7684\u989c\u8272\n  u8  lastState, currentState;     \/\/\u6309\u952e\u4e0a\u4e00\u4e2a\u72b6\u6001\u548c\u5f53\u524d\u72b6\u6001\uff0c0-\u62ac\u8d77\uff0c1-\u6309\u4e0b\n  u16 x, y;                        \/\/\u4e34\u65f6\u53d8\u91cf\n  \n  \/\/\u521d\u59cb\u5316\n  InitHardware();   \/\/\u521d\u59cb\u5316\u786c\u4ef6\u76f8\u5173\n  InitSoftware();   \/\/\u521d\u59cb\u5316\u8f6f\u4ef6\u76f8\u5173\n\n  \/\/\u8bbe\u7f6e LCD \u521d\u59cb\u72b6\u6001\n  LCDDisplayDir(1); \/\/\u6a2a\u5c4f\n  LCDClear(WHITE);  \/\/\u767d\u5c4f\n  \n  \/\/\u6309\u952e\u521d\u59cb\u5316\uff0c\u9ed8\u8ba4\u5904\u4e8e\u62ac\u8d77\u72b6\u6001\n  lastState = 0;\n  currentState = 0;\n  LCDFill(x0, y0, x1, y1, releaseColor);\n\n  while(1)\n  {\n    \/\/LED \u95ea\u70c1\n    LEDFlicker(50);\n    \n    \/\/\u89e6\u5c4f\u626b\u63cf\n    if(ScanTouch(&amp;x, &amp;y))\n    {\n      \/\/\u89e6\u70b9\u843d\u5728\u4e86\u76ee\u6807\u533a\u57df\n      if((x &gt;= x0) &amp;&amp; (x &lt;= x1) &amp;&amp; (y &gt;= y0) &amp;&amp; (y &lt;= y1))\n      {\n        currentState = 1;\n      }\n      else\n      {\n        currentState = 0;\n      }\n    }\n    \n    \/\/\u672a\u68c0\u6d4b\u5230\u6309\u4e0b\n    else\n    {\n      currentState = 0;\n    }\n    \n    \/\/\u4e0a\u4e00\u4e2a\u72b6\u6001\u662f\u62ac\u8d77\u800c\u5f53\u524d\u72b6\u6001\u4e3a\u6309\u4e0b\uff0c\u8868\u793a\u6355\u6349\u5230\u4e86\u4e00\u4e2a\u6309\u4e0b\u4e8b\u4ef6\n    if((0 == lastState) &amp;&amp; (1 == currentState))\n    {\n      LCDFill(x0, y0, x1, y1, pressColor);\n      printf(\"Button press\\r\\n\");\n    }\n    \n    \/\/\u4e0a\u4e00\u4e2a\u72b6\u6001\u662f\u6309\u4e0b\u800c\u5f53\u524d\u72b6\u6001\u4e3a\u62ac\u8d77\uff0c\u8868\u793a\u6355\u6349\u5230\u4e86\u4e00\u4e2a\u62ac\u8d77\u4e8b\u4ef6\n    else if((1 == lastState) &amp;&amp; (0 == currentState))\n    {\n      LCDFill(x0, y0, x1, y1, releaseColor);\n    }\n    \n    \/\/\u4fdd\u5b58\u5f53\u524d\u72b6\u6001\n    lastState = currentState;\n    \n    \/\/\u5ef6\u65f6 10 ms\n    DelayNms(10);\n  }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%B0%81%E8%A3%85%E4%BB%A3%E7%A0%81\"><\/span>\u5c01\u88c5\u4ee3\u7801<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5c06\u8fb9\u6cbf\u578b\u6309\u952e\u4ee3\u7801\u505a\u4e2a\u7b80\u5355\u7684\u5c01\u88c5\uff0c\u5373\u53ef\u5b9e\u73b0\u4e00\u4e2a\u7b80\u5355\u7684\u6309\u952e\u63a7\u4ef6\u9a71\u52a8\uff0c\u8be5\u9a71\u52a8\u7684\u5934\u6587\u4ef6\u5982\u4e0b\u6240\u793a\u3002\u9a71\u52a8\u5934\u6587\u4ef6\u53ea\u5305\u542b\u4e24\u4e2a API \u51fd\u6570\uff0cButtonCreate \u51fd\u6570\u7528\u4e8e\u521b\u5efa\u6309\u952e\uff0cButtonScan \u51fd\u6570\u5219\u7528\u4e8e\u6309\u952e\u626b\u63cf\uff0c\u68c0\u6d4b\u5230\u6309\u952e\u6309\u4e0b\u5219\u8fd4\u56de 1\uff0c\u5426\u5219\u8fd4\u56de 0\u3002\u9a71\u52a8\u652f\u6301\u5728\u6309\u952e\u4e2d\u592e\u663e\u793a\u6309\u952e\u540d\u5b57\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">\/\/\u6309\u952e\u63a7\u4ef6\ntypedef struct\n{\n  u16   x, y, width, height;  \/\/\u539f\u70b9\u3001\u5bbd\u5ea6\u3001\u9ad8\u5ea6\n  char* text;                 \/\/\u6309\u952e\u540d\u5b57\n  u8    textSize;             \/\/\u5b57\u4f53\u5927\u5c0f\uff0c\u53ef\u4ee5\u662f 12\u300116\u300124\n  u16   textColor;            \/\/\u5b57\u4f53\u989c\u8272\n  u8    lastState;            \/\/\u6309\u952e\u4e0a\u4e00\u4e2a\u72b6\u6001\uff0c0-\u6309\u4e0b\uff0c1-\u62ac\u8d77\n  u16   pressColor;           \/\/\u6309\u952e\u6309\u4e0b\u65f6\u7684\u989c\u8272\n  u16   releaseColor;         \/\/\u6309\u952e\u62ac\u8d77\u65f6\u663e\u793a\u7684\u989c\u8272\n}StructButton;\n\nvoid ButtonCreate(StructButton* widget); \/\/\u521b\u5efa\u6309\u952e\nu8   ButtonScan(StructButton* widget);   \/\/\u6309\u952e\u626b\u63cf<\/code><\/pre>\n\n\n\n<p>\u8be5\u9a71\u52a8\u7684\u6e90\u6587\u4ef6\u5982\u4e0b\u6240\u793a\u3002ShowText \u51fd\u6570\u662f\u4e00\u4e2a\u5185\u90e8\u51fd\u6570\uff0c\u7528\u4e8e\u5728\u6309\u952e\u4e2d\u592e\u663e\u793a\u6309\u952e\u540d\u3002ButtonCreate \u51fd\u6570\u7528\u4e8e\u521b\u5efa\u6309\u952e\uff0c\u4e3b\u8981\u662f\u8bbe\u7f6e\u4e86\u6309\u952e\u7684\u521d\u59cb\u72b6\u6001\u3002ButtonScan \u5219\u662f\u6309\u952e\u626b\u63cf\uff0c\u4f7f\u7528\u7684\u626b\u63cf\u65b9\u5f0f\u4e0e &#8220;\u8fb9\u6cbf\u578b\u6309\u952e\u5b9e\u73b0&#8221; \u4f7f\u7528\u7684\u65b9\u6cd5\u4e00\u81f4\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">#include \"Button.h\"\n#include \"LCD.h\"\n#include \"Touch.h\"\n\n\/\/\u663e\u793a\u6309\u952e\u540d\u5b57\nstatic void ShowText(StructButton* widget)\n{\n  u16 tx, ty, len, twidth, i;\n\n  \/\/\u540d\u5b57\u4e3a\u7a7a\n  if(NULL == widget-&gt;text)\n  {\n    return;\n  }\n  \n  \/\/\u7edf\u8ba1\u5b57\u7b26\u4e32\u957f\u5ea6\n  len = 0;\n  while(0 != widget-&gt;text[len])\n  {\n    len++;\n  }\n  \n  \/\/\u8ba1\u7b97\u5b57\u7b26\u4e32\u5360\u50cf\u7d20\u70b9\u957f\u5ea6\n  twidth = (widget-&gt;textSize \/ 2) * len;\n  \n  \/\/\u8ba1\u7b97\u5b57\u7b26\u4e32\u6a2a\u5750\u6807\u8d77\u70b9\n  tx = widget-&gt;x + ((widget-&gt;width - twidth) \/ 2);\n  \n  \/\/\u8ba1\u7b97\u5b57\u7b26\u4e32\u7eb5\u5750\u6807\u8d77\u70b9\n  ty = widget-&gt;y + ((widget-&gt;height - widget-&gt;textSize) \/ 2);\n  \n  \/\/\u663e\u793a\u5b57\u7b26\u4e32\n  i = 0;\n  while(0 != widget-&gt;text[i])\n  {\n    g_iLCDPointColor = widget-&gt;textColor;\n    LCDShowChar(tx + (widget-&gt;textSize \/ 2) * i, ty, widget-&gt;text[i], widget-&gt;textSize, 1);\n    i++;\n  }\n}\n\n\/\/\u521b\u5efa\u6309\u952e\nvoid ButtonCreate(StructButton* widget)\n{\n  u16 x0, y0, x1, y1;\n  \n  \/\/\u8ba1\u7b97\u6309\u952e\u8d77\u70b9\u548c\u7ec8\u70b9\n  x0 = widget-&gt;x;\n  y0 = widget-&gt;y;\n  x1 = x0 + widget-&gt;width - 1;\n  y1 = y0 + widget-&gt;height - 1;\n\n  \/\/\u8bbe\u7f6e\u6309\u952e\u521d\u59cb\u72b6\u6001\n  widget-&gt;lastState = 0;\n  LCDFill(x0, y0, x1, y1, widget-&gt;releaseColor);\n  \n  \/\/\u5237\u65b0\u540d\u5b57\u663e\u793a\n  ShowText(widget);\n}\n\n\/\/\u6309\u952e\u626b\u63cf\uff0c\u8fd4\u56de\uff1a1-\u68c0\u6d4b\u5230\u6309\u952e\u6309\u4e0b\uff0c0-\u672a\u68c0\u6d4b\u5230\u6309\u952e\u6309\u4e0b\nu8 ButtonScan(StructButton* widget)\n{\n  u16 x, y, x0, y0, x1, y1;\n  u8 currentState;\n  u8 ret;\n  \n  \/\/\u9ed8\u8ba4\u8fd4\u56de 0\n  ret = 0;\n  \n  \/\/\u8ba1\u7b97\u6309\u952e\u8d77\u70b9\u548c\u7ec8\u70b9\n  x0 = widget-&gt;x;\n  y0 = widget-&gt;y;\n  x1 = x0 + widget-&gt;width - 1;\n  y1 = y0 + widget-&gt;height - 1;\n  \n  \/\/\u89e6\u5c4f\u626b\u63cf\n  currentState = 0;\n  if(ScanTouch(&amp;x, &amp;y))\n  {\n    \/\/\u89e6\u70b9\u843d\u5728\u4e86\u76ee\u6807\u533a\u57df\n    if((x &gt;= x0) &amp;&amp; (x &lt;= x1) &amp;&amp; (y &gt;= y0) &amp;&amp; (y &lt;= y1))\n    {\n      currentState = 1;\n    }\n    else\n    {\n      currentState = 0;\n    }\n  }\n  \n  \/\/\u4e0a\u4e00\u4e2a\u72b6\u6001\u662f\u62ac\u8d77\u800c\u5f53\u524d\u72b6\u6001\u4e3a\u6309\u4e0b\uff0c\u8868\u793a\u6355\u6349\u5230\u4e86\u4e00\u4e2a\u6309\u4e0b\u4e8b\u4ef6\n  if((0 == widget-&gt;lastState) &amp;&amp; (1 == currentState))\n  {\n    LCDFill(x0, y0, x1, y1, widget-&gt;pressColor);\n    ret = 1;\n  }\n    \n  \/\/\u4e0a\u4e00\u4e2a\u72b6\u6001\u662f\u6309\u4e0b\u800c\u5f53\u524d\u72b6\u6001\u4e3a\u62ac\u8d77\uff0c\u8868\u793a\u6355\u6349\u5230\u4e86\u4e00\u4e2a\u62ac\u8d77\u4e8b\u4ef6\n  else if((1 == widget-&gt;lastState) &amp;&amp; (0 == currentState))\n  {\n    LCDFill(x0, y0, x1, y1, widget-&gt;releaseColor);\n    ret = 0;\n  }\n  \n  \/\/\u4fdd\u5b58\u5f53\u524d\u72b6\u6001\n  widget-&gt;lastState = currentState;\n  \n  \/\/\u5237\u65b0\u540d\u5b57\u663e\u793a\n  ShowText(widget);\n  \n  \/\/\u8fd4\u56de\u6d4b\u91cf\u7ed3\u679c\n  return ret;\n}<\/code><\/pre>\n\n\n\n<p>\u540e\u7eed\u7ae0\u8282\u4e2d\u5c06\u4f1a\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528\u56fe\u7247\u5305\u88c5\u7f8e\u5316\u6309\u952e\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%AE%9E%E9%AA%8C%E7%BB%93%E6%9E%9C\"><\/span>\u5b9e\u9a8c\u7ed3\u679c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u5b9e\u9a8c\u7ed3\u679c\u5982\u4e0b\u6240\u793a\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"http:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/03\/\u5355\u7247\u673a-GUI-\u8bbe\u8ba1\uff08\u4e09\uff09-\u6309\u952e\u63a7\u4ef6-\u5b9e\u9a8c\u7ed3\u679c-20230304-1024x768.jpg\" alt=\"\" class=\"wp-image-1109\" srcset=\"https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/03\/\u5355\u7247\u673a-GUI-\u8bbe\u8ba1\uff08\u4e09\uff09-\u6309\u952e\u63a7\u4ef6-\u5b9e\u9a8c\u7ed3\u679c-20230304-1024x768.jpg 1024w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/03\/\u5355\u7247\u673a-GUI-\u8bbe\u8ba1\uff08\u4e09\uff09-\u6309\u952e\u63a7\u4ef6-\u5b9e\u9a8c\u7ed3\u679c-20230304-300x225.jpg 300w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/03\/\u5355\u7247\u673a-GUI-\u8bbe\u8ba1\uff08\u4e09\uff09-\u6309\u952e\u63a7\u4ef6-\u5b9e\u9a8c\u7ed3\u679c-20230304-768x576.jpg 768w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/03\/\u5355\u7247\u673a-GUI-\u8bbe\u8ba1\uff08\u4e09\uff09-\u6309\u952e\u63a7\u4ef6-\u5b9e\u9a8c\u7ed3\u679c-20230304-1536x1152.jpg 1536w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/03\/\u5355\u7247\u673a-GUI-\u8bbe\u8ba1\uff08\u4e09\uff09-\u6309\u952e\u63a7\u4ef6-\u5b9e\u9a8c\u7ed3\u679c-20230304-2048x1536.jpg 2048w, https:\/\/www.huangrongzhen.ink\/wp-content\/uploads\/2023\/03\/\u5355\u7247\u673a-GUI-\u8bbe\u8ba1\uff08\u4e09\uff09-\u6309\u952e\u63a7\u4ef6-\u5b9e\u9a8c\u7ed3\u679c-20230304-400x300.jpg 400w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%BA%90%E7%A0%81\"><\/span>\u6e90\u7801<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u672c\u7ae0\u8282\u4e2d\u7684\u6e90\u7801\u8bf7\u53c2\u8003\u300a<em><a href=\"http:\/\/www.huangrongzhen.ink\/?p=451\">\u5355\u7247\u673a GUI \u8bbe\u8ba1\uff08\u96f6\uff09- \u5927\u7eb2<\/a><\/em>\u300b<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u57fa\u4e8e GD32F303ZET6 \u82f9\u679c\u6d3e\u5f00\u53d1\u677f<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"_links":{"self":[{"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/posts\/529"}],"collection":[{"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=529"}],"version-history":[{"count":16,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/posts\/529\/revisions"}],"predecessor-version":[{"id":1123,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=\/wp\/v2\/posts\/529\/revisions\/1123"}],"wp:attachment":[{"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.huangrongzhen.ink\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}