日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于STM32的微信视频电话机,让家里的老人也能轻松使用微信视频电话

發(fā)布時(shí)間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于STM32的微信视频电话机,让家里的老人也能轻松使用微信视频电话 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

如今智能信息時(shí)代發(fā)展迅猛,年輕一代享受著時(shí)代紅利,而上了年紀(jì)的長輩卻越來越迷茫,對(duì)于智能手機(jī)根本搞不清使用方法,很多老人只能退而求其次,使用老人機(jī)滿足打電話這樣的就基本需求,同時(shí)老人機(jī)存在很多局限:有時(shí)老人家會(huì)因?yàn)樾耐措娫捹M(fèi)刻意控制時(shí)長;大多數(shù)老人機(jī)只能打電話,不能視頻通話。如今網(wǎng)絡(luò)如此發(fā)達(dá),微信作為全球統(tǒng)一的及時(shí)通訊軟件,不但通話免費(fèi),還能打視頻電話,為何不開發(fā)針對(duì)老人的微信版本呢?只知道兒童智能手表可以打微信電話,但還是無法滿足所有痛點(diǎn),開造:

項(xiàng)目說明

思路:基于STM32的USB鼠標(biāo)控制手機(jī)完成自動(dòng)化控制操作,一般的手機(jī)都支持USB OTG功能。但OTG功能存在一個(gè)很大的弊端,就是無法邊充電邊使用,本文設(shè)計(jì)功能切換電路解決了這一問題,可閑時(shí)給手機(jī)充電。制作此項(xiàng)目需要參考我的前兩篇博文。

  • STM32CUBEMX簡單幾步,DIY基于STM32的可編程USB鼠標(biāo),硬件自動(dòng)化助手
    -https://blog.csdn.net/xhl9434826546/article/details/122391238
  • STM32CUBEMX配置實(shí)現(xiàn)STM32F103C8T6矩陣鍵盤掃描
    https://blog.csdn.net/xhl9434826546/article/details/122725117

所需材料

  • 舊安卓智能手機(jī)
  • 5pin的MicroUSB接頭
  • 矩陣鍵盤
  • STM32F103C8T6最小系統(tǒng)板
  • 手機(jī)支架
  • mos管或繼電器

一、先看成果


  • 鍵盤功能配置
123A
選擇聯(lián)系人1選擇聯(lián)系人2選擇聯(lián)系人3解鎖
456B
選擇聯(lián)系人4選擇聯(lián)系人5選擇聯(lián)系人6進(jìn)入微信
789C
選擇聯(lián)系人7選擇聯(lián)系人8選擇聯(lián)系人9開始呼叫
*0#D
解鎖并進(jìn)入微信選擇聯(lián)系人0開始呼叫結(jié)束通話
  • 呼叫流程
#mermaid-svg-uaF1ym8rykXelxAG .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-uaF1ym8rykXelxAG .label text{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .node rect,#mermaid-svg-uaF1ym8rykXelxAG .node circle,#mermaid-svg-uaF1ym8rykXelxAG .node ellipse,#mermaid-svg-uaF1ym8rykXelxAG .node polygon,#mermaid-svg-uaF1ym8rykXelxAG .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-uaF1ym8rykXelxAG .node .label{text-align:center;fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .node.clickable{cursor:pointer}#mermaid-svg-uaF1ym8rykXelxAG .arrowheadPath{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-uaF1ym8rykXelxAG .flowchart-link{stroke:#333;fill:none}#mermaid-svg-uaF1ym8rykXelxAG .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-uaF1ym8rykXelxAG .edgeLabel rect{opacity:0.9}#mermaid-svg-uaF1ym8rykXelxAG .edgeLabel span{color:#333}#mermaid-svg-uaF1ym8rykXelxAG .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-uaF1ym8rykXelxAG .cluster text{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-uaF1ym8rykXelxAG .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-uaF1ym8rykXelxAG text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-uaF1ym8rykXelxAG .actor-line{stroke:grey}#mermaid-svg-uaF1ym8rykXelxAG .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-uaF1ym8rykXelxAG .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-uaF1ym8rykXelxAG #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-uaF1ym8rykXelxAG .sequenceNumber{fill:#fff}#mermaid-svg-uaF1ym8rykXelxAG #sequencenumber{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG #crosshead path{fill:#333;stroke:#333}#mermaid-svg-uaF1ym8rykXelxAG .messageText{fill:#333;stroke:#333}#mermaid-svg-uaF1ym8rykXelxAG .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-uaF1ym8rykXelxAG .labelText,#mermaid-svg-uaF1ym8rykXelxAG .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-uaF1ym8rykXelxAG .loopText,#mermaid-svg-uaF1ym8rykXelxAG .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-uaF1ym8rykXelxAG .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-uaF1ym8rykXelxAG .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-uaF1ym8rykXelxAG .noteText,#mermaid-svg-uaF1ym8rykXelxAG .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-uaF1ym8rykXelxAG .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-uaF1ym8rykXelxAG .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-uaF1ym8rykXelxAG .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-uaF1ym8rykXelxAG .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .section{stroke:none;opacity:0.2}#mermaid-svg-uaF1ym8rykXelxAG .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-uaF1ym8rykXelxAG .section2{fill:#fff400}#mermaid-svg-uaF1ym8rykXelxAG .section1,#mermaid-svg-uaF1ym8rykXelxAG .section3{fill:#fff;opacity:0.2}#mermaid-svg-uaF1ym8rykXelxAG .sectionTitle0{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .sectionTitle1{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .sectionTitle2{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .sectionTitle3{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-uaF1ym8rykXelxAG .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .grid path{stroke-width:0}#mermaid-svg-uaF1ym8rykXelxAG .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-uaF1ym8rykXelxAG .task{stroke-width:2}#mermaid-svg-uaF1ym8rykXelxAG .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .taskText:not([font-size]){font-size:11px}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-uaF1ym8rykXelxAG .task.clickable{cursor:pointer}#mermaid-svg-uaF1ym8rykXelxAG .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-uaF1ym8rykXelxAG .taskText0,#mermaid-svg-uaF1ym8rykXelxAG .taskText1,#mermaid-svg-uaF1ym8rykXelxAG .taskText2,#mermaid-svg-uaF1ym8rykXelxAG .taskText3{fill:#fff}#mermaid-svg-uaF1ym8rykXelxAG .task0,#mermaid-svg-uaF1ym8rykXelxAG .task1,#mermaid-svg-uaF1ym8rykXelxAG .task2,#mermaid-svg-uaF1ym8rykXelxAG .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutside0,#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutside2{fill:#000}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutside1,#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutside3{fill:#000}#mermaid-svg-uaF1ym8rykXelxAG .active0,#mermaid-svg-uaF1ym8rykXelxAG .active1,#mermaid-svg-uaF1ym8rykXelxAG .active2,#mermaid-svg-uaF1ym8rykXelxAG .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-uaF1ym8rykXelxAG .activeText0,#mermaid-svg-uaF1ym8rykXelxAG .activeText1,#mermaid-svg-uaF1ym8rykXelxAG .activeText2,#mermaid-svg-uaF1ym8rykXelxAG .activeText3{fill:#000 !important}#mermaid-svg-uaF1ym8rykXelxAG .done0,#mermaid-svg-uaF1ym8rykXelxAG .done1,#mermaid-svg-uaF1ym8rykXelxAG .done2,#mermaid-svg-uaF1ym8rykXelxAG .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-uaF1ym8rykXelxAG .doneText0,#mermaid-svg-uaF1ym8rykXelxAG .doneText1,#mermaid-svg-uaF1ym8rykXelxAG .doneText2,#mermaid-svg-uaF1ym8rykXelxAG .doneText3{fill:#000 !important}#mermaid-svg-uaF1ym8rykXelxAG .crit0,#mermaid-svg-uaF1ym8rykXelxAG .crit1,#mermaid-svg-uaF1ym8rykXelxAG .crit2,#mermaid-svg-uaF1ym8rykXelxAG .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-uaF1ym8rykXelxAG .activeCrit0,#mermaid-svg-uaF1ym8rykXelxAG .activeCrit1,#mermaid-svg-uaF1ym8rykXelxAG .activeCrit2,#mermaid-svg-uaF1ym8rykXelxAG .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-uaF1ym8rykXelxAG .doneCrit0,#mermaid-svg-uaF1ym8rykXelxAG .doneCrit1,#mermaid-svg-uaF1ym8rykXelxAG .doneCrit2,#mermaid-svg-uaF1ym8rykXelxAG .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-uaF1ym8rykXelxAG .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-uaF1ym8rykXelxAG .milestoneText{font-style:italic}#mermaid-svg-uaF1ym8rykXelxAG .doneCritText0,#mermaid-svg-uaF1ym8rykXelxAG .doneCritText1,#mermaid-svg-uaF1ym8rykXelxAG .doneCritText2,#mermaid-svg-uaF1ym8rykXelxAG .doneCritText3{fill:#000 !important}#mermaid-svg-uaF1ym8rykXelxAG .activeCritText0,#mermaid-svg-uaF1ym8rykXelxAG .activeCritText1,#mermaid-svg-uaF1ym8rykXelxAG .activeCritText2,#mermaid-svg-uaF1ym8rykXelxAG .activeCritText3{fill:#000 !important}#mermaid-svg-uaF1ym8rykXelxAG .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-uaF1ym8rykXelxAG g.classGroup text .title{font-weight:bolder}#mermaid-svg-uaF1ym8rykXelxAG g.clickable{cursor:pointer}#mermaid-svg-uaF1ym8rykXelxAG g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-uaF1ym8rykXelxAG g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-uaF1ym8rykXelxAG .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-uaF1ym8rykXelxAG .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-uaF1ym8rykXelxAG .dashed-line{stroke-dasharray:3}#mermaid-svg-uaF1ym8rykXelxAG #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG .commit-id,#mermaid-svg-uaF1ym8rykXelxAG .commit-msg,#mermaid-svg-uaF1ym8rykXelxAG .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-uaF1ym8rykXelxAG g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-uaF1ym8rykXelxAG g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-uaF1ym8rykXelxAG g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-uaF1ym8rykXelxAG .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-uaF1ym8rykXelxAG .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-uaF1ym8rykXelxAG .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-uaF1ym8rykXelxAG .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-uaF1ym8rykXelxAG .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-uaF1ym8rykXelxAG .edgeLabel text{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .node circle.state-start{fill:black;stroke:black}#mermaid-svg-uaF1ym8rykXelxAG .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-uaF1ym8rykXelxAG #statediagram-barbEnd{fill:#9370db}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-state .divider{stroke:#9370db}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-uaF1ym8rykXelxAG .note-edge{stroke-dasharray:5}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-uaF1ym8rykXelxAG .error-icon{fill:#522}#mermaid-svg-uaF1ym8rykXelxAG .error-text{fill:#522;stroke:#522}#mermaid-svg-uaF1ym8rykXelxAG .edge-thickness-normal{stroke-width:2px}#mermaid-svg-uaF1ym8rykXelxAG .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-uaF1ym8rykXelxAG .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-uaF1ym8rykXelxAG .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-uaF1ym8rykXelxAG .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-uaF1ym8rykXelxAG .marker{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-uaF1ym8rykXelxAG {color: rgba(0, 0, 0, 0.75);font: ;}解鎖進(jìn)入微信選擇聯(lián)系人開始呼叫結(jié)束通話

二、硬件設(shè)計(jì)

1 接線示意圖

1.1 矩陣鍵盤

矩陣鍵盤內(nèi)部接線示意圖如下:

1.2 MicroUSB OTG接口功能切換電路

MicroUSB有5個(gè)引腳,其中兩個(gè)用來供電(VCC、GND),兩個(gè)用來傳輸數(shù)據(jù)(D+、D-),還有一個(gè)ID引腳是用來選擇OTG功能的。當(dāng)ID接地時(shí),手機(jī)會(huì)啟用OTG功能,當(dāng)ID懸空時(shí)為普通數(shù)據(jù)線功能。經(jīng)過反復(fù)實(shí)驗(yàn),發(fā)現(xiàn)手機(jī)在MicroUSB剛插入時(shí)才檢測是否開啟OTG功能,為了**模擬插入和拔出的操作,用MOS管來斷電,用單片機(jī)控制ID引腳的電平,實(shí)現(xiàn)功能切換,達(dá)到空閑時(shí)充電的目的。**手頭只要一顆IRF540N的N型MOS管,只能用如下電路控制。


根據(jù)數(shù)據(jù)手冊(cè),此MOS管過于大材小用,VDSS = 100V RDS(on) = 44m? ID = 33A。
同時(shí)VGSth在2-4V之間,而單片機(jī)IO在輸出電壓為3.3V,雖然在這個(gè)范圍內(nèi),但為了使MOS能夠完全導(dǎo)通,利用開漏輸出功能配合上拉電阻可將IO口輸出電壓提高到5V。

2 焊接

為了省去焊接的麻煩,畫了一個(gè)PCB板,第一板存在一些小問題(沒有畫入MOS管,加入了音頻功放功能作為拓展可以忽略),以上述接線圖為準(zhǔn)。

三、軟件設(shè)計(jì)

根據(jù)此文章配置好USB鼠標(biāo)程序框架

  • STM32CUBEMX簡單幾步,DIY基于STM32的可編程USB鼠標(biāo),硬件自動(dòng)化助手
    -https://blog.csdn.net/xhl9434826546/article/details/122391238

結(jié)合此文章添加矩陣鍵盤功能

  • STM32CUBEMX配置實(shí)現(xiàn)STM32F103C8T6矩陣鍵盤掃描
    https://blog.csdn.net/xhl9434826546/article/details/122725117

1 引腳配置

根據(jù)以上配置好USB鼠標(biāo)后配置鍵盤引腳和USB OTG功能切換控制引腳。
將鍵盤的8個(gè)引腳全部配置為上拉模式,其中4個(gè)為輸出口、4個(gè)為輸入口

將USB OTG控制的兩個(gè)引腳配置為開漏輸出,可修改名稱方便閱讀

2.1 修改usb_device.c文件

在編寫鼠標(biāo)控制程序時(shí)發(fā)現(xiàn)鼠標(biāo)只能相對(duì)移動(dòng),無法移動(dòng)絕對(duì)位置,而點(diǎn)擊屏幕最重要的時(shí)移動(dòng)到屏幕指定位置。為了解決這一問題,本文采用的方案為:

#mermaid-svg-VcJs76U9MF3lhkR0 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .label text{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .node rect,#mermaid-svg-VcJs76U9MF3lhkR0 .node circle,#mermaid-svg-VcJs76U9MF3lhkR0 .node ellipse,#mermaid-svg-VcJs76U9MF3lhkR0 .node polygon,#mermaid-svg-VcJs76U9MF3lhkR0 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-VcJs76U9MF3lhkR0 .node .label{text-align:center;fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .node.clickable{cursor:pointer}#mermaid-svg-VcJs76U9MF3lhkR0 .arrowheadPath{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-VcJs76U9MF3lhkR0 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-VcJs76U9MF3lhkR0 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-VcJs76U9MF3lhkR0 .edgeLabel rect{opacity:0.9}#mermaid-svg-VcJs76U9MF3lhkR0 .edgeLabel span{color:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-VcJs76U9MF3lhkR0 .cluster text{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-VcJs76U9MF3lhkR0 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-VcJs76U9MF3lhkR0 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-VcJs76U9MF3lhkR0 .actor-line{stroke:grey}#mermaid-svg-VcJs76U9MF3lhkR0 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-VcJs76U9MF3lhkR0 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .sequenceNumber{fill:#fff}#mermaid-svg-VcJs76U9MF3lhkR0 #sequencenumber{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .messageText{fill:#333;stroke:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-VcJs76U9MF3lhkR0 .labelText,#mermaid-svg-VcJs76U9MF3lhkR0 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-VcJs76U9MF3lhkR0 .loopText,#mermaid-svg-VcJs76U9MF3lhkR0 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-VcJs76U9MF3lhkR0 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-VcJs76U9MF3lhkR0 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-VcJs76U9MF3lhkR0 .noteText,#mermaid-svg-VcJs76U9MF3lhkR0 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-VcJs76U9MF3lhkR0 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-VcJs76U9MF3lhkR0 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-VcJs76U9MF3lhkR0 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-VcJs76U9MF3lhkR0 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .section{stroke:none;opacity:0.2}#mermaid-svg-VcJs76U9MF3lhkR0 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-VcJs76U9MF3lhkR0 .section2{fill:#fff400}#mermaid-svg-VcJs76U9MF3lhkR0 .section1,#mermaid-svg-VcJs76U9MF3lhkR0 .section3{fill:#fff;opacity:0.2}#mermaid-svg-VcJs76U9MF3lhkR0 .sectionTitle0{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .sectionTitle1{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .sectionTitle2{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .sectionTitle3{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-VcJs76U9MF3lhkR0 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .grid path{stroke-width:0}#mermaid-svg-VcJs76U9MF3lhkR0 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-VcJs76U9MF3lhkR0 .task{stroke-width:2}#mermaid-svg-VcJs76U9MF3lhkR0 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .taskText:not([font-size]){font-size:11px}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-VcJs76U9MF3lhkR0 .task.clickable{cursor:pointer}#mermaid-svg-VcJs76U9MF3lhkR0 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-VcJs76U9MF3lhkR0 .taskText0,#mermaid-svg-VcJs76U9MF3lhkR0 .taskText1,#mermaid-svg-VcJs76U9MF3lhkR0 .taskText2,#mermaid-svg-VcJs76U9MF3lhkR0 .taskText3{fill:#fff}#mermaid-svg-VcJs76U9MF3lhkR0 .task0,#mermaid-svg-VcJs76U9MF3lhkR0 .task1,#mermaid-svg-VcJs76U9MF3lhkR0 .task2,#mermaid-svg-VcJs76U9MF3lhkR0 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutside0,#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutside2{fill:#000}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutside1,#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutside3{fill:#000}#mermaid-svg-VcJs76U9MF3lhkR0 .active0,#mermaid-svg-VcJs76U9MF3lhkR0 .active1,#mermaid-svg-VcJs76U9MF3lhkR0 .active2,#mermaid-svg-VcJs76U9MF3lhkR0 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-VcJs76U9MF3lhkR0 .activeText0,#mermaid-svg-VcJs76U9MF3lhkR0 .activeText1,#mermaid-svg-VcJs76U9MF3lhkR0 .activeText2,#mermaid-svg-VcJs76U9MF3lhkR0 .activeText3{fill:#000 !important}#mermaid-svg-VcJs76U9MF3lhkR0 .done0,#mermaid-svg-VcJs76U9MF3lhkR0 .done1,#mermaid-svg-VcJs76U9MF3lhkR0 .done2,#mermaid-svg-VcJs76U9MF3lhkR0 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-VcJs76U9MF3lhkR0 .doneText0,#mermaid-svg-VcJs76U9MF3lhkR0 .doneText1,#mermaid-svg-VcJs76U9MF3lhkR0 .doneText2,#mermaid-svg-VcJs76U9MF3lhkR0 .doneText3{fill:#000 !important}#mermaid-svg-VcJs76U9MF3lhkR0 .crit0,#mermaid-svg-VcJs76U9MF3lhkR0 .crit1,#mermaid-svg-VcJs76U9MF3lhkR0 .crit2,#mermaid-svg-VcJs76U9MF3lhkR0 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-VcJs76U9MF3lhkR0 .activeCrit0,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCrit1,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCrit2,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-VcJs76U9MF3lhkR0 .doneCrit0,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCrit1,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCrit2,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-VcJs76U9MF3lhkR0 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-VcJs76U9MF3lhkR0 .milestoneText{font-style:italic}#mermaid-svg-VcJs76U9MF3lhkR0 .doneCritText0,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCritText1,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCritText2,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCritText3{fill:#000 !important}#mermaid-svg-VcJs76U9MF3lhkR0 .activeCritText0,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCritText1,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCritText2,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCritText3{fill:#000 !important}#mermaid-svg-VcJs76U9MF3lhkR0 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-VcJs76U9MF3lhkR0 g.classGroup text .title{font-weight:bolder}#mermaid-svg-VcJs76U9MF3lhkR0 g.clickable{cursor:pointer}#mermaid-svg-VcJs76U9MF3lhkR0 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-VcJs76U9MF3lhkR0 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-VcJs76U9MF3lhkR0 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-VcJs76U9MF3lhkR0 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-VcJs76U9MF3lhkR0 .dashed-line{stroke-dasharray:3}#mermaid-svg-VcJs76U9MF3lhkR0 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 .commit-id,#mermaid-svg-VcJs76U9MF3lhkR0 .commit-msg,#mermaid-svg-VcJs76U9MF3lhkR0 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-VcJs76U9MF3lhkR0 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-VcJs76U9MF3lhkR0 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-VcJs76U9MF3lhkR0 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-VcJs76U9MF3lhkR0 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-VcJs76U9MF3lhkR0 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-VcJs76U9MF3lhkR0 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-VcJs76U9MF3lhkR0 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-VcJs76U9MF3lhkR0 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-VcJs76U9MF3lhkR0 .edgeLabel text{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-VcJs76U9MF3lhkR0 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-VcJs76U9MF3lhkR0 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-VcJs76U9MF3lhkR0 .note-edge{stroke-dasharray:5}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-VcJs76U9MF3lhkR0 .error-icon{fill:#522}#mermaid-svg-VcJs76U9MF3lhkR0 .error-text{fill:#522;stroke:#522}#mermaid-svg-VcJs76U9MF3lhkR0 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-VcJs76U9MF3lhkR0 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-VcJs76U9MF3lhkR0 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-VcJs76U9MF3lhkR0 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-VcJs76U9MF3lhkR0 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-VcJs76U9MF3lhkR0 .marker{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-VcJs76U9MF3lhkR0 {color: rgba(0, 0, 0, 0.75);font: ;}一直移動(dòng)到最左上角設(shè)為原點(diǎn)相對(duì)移動(dòng)計(jì)算絕對(duì)位置

添加靜態(tài)變量

/* USER CODE BEGIN 0 */ static int16_t Px=0,Py=0;//絕對(duì)位置 static uint8_t L=0,R=0,M=0;//鼠標(biāo)上三個(gè)按鍵狀態(tài) /* USER CODE END 0 */

添加鼠標(biāo)基本控制函數(shù)

/* USER CODE BEGIN 1 */ //發(fā)送鼠標(biāo)所有控制信息 void Set_Mouse(int8_t x,int8_t y,int8_t z,uint8_t l,uint8_t r,uint8_t m) {uint8_t buf[4] = {0,0,0,0};L=l;R=r;M=m;buf[0] = L+R*2+M*4;buf[1]=x;buf[2]=y;buf[3]=z;USBD_HID_SendReport(&hUsbDeviceFS,buf,4);HAL_Delay(100); } //滾輪滾動(dòng) void Scroll(int8_t z) {Set_Mouse(0,0,z,L,R,M); } //鼠標(biāo)相對(duì)移動(dòng) void Move(int8_t x,int8_t y) {Px += x;Py += y;if(Px<0)Px=0;if(Py<0)Py=0;if(Px>=PX_MAX-1)Px=PX_MAX-1;if(Py>=PY_MAX-1)Py=PY_MAX-1;Set_Mouse(x,y,0,L,R,M); } //鼠標(biāo)移動(dòng)到最左上角 void Move_Reset(void) {uint8_t i=16;while(i--)Move(-120,-120);Px = Py = 0; } //鼠標(biāo)絕對(duì)移動(dòng) void Move_To(int16_t x,int16_t y) {x -= Px;y -= Py;if(x > 0){while(x >= 100)x -= 100,Move(100,0);}else {while (x <= -100)x += 100,Move(-100,0);}Move(x,0);if(y > 0){while(y >= 100)y -= 100,Move(0,100);}else {while(y <= -100)y += 100,Move(0,-100);}Move(0,y); } //單擊左鍵 void Click_L(void) {Set_Mouse(0,0,0,1,0,0);Set_Mouse(0,0,0,0,0,0); } //單擊右鍵 void Click_R(void) {Set_Mouse(0,0,0,0,1,0);Set_Mouse(0,0,0,0,0,0); } //單擊中鍵 void Click_M(void) {Set_Mouse(0,0,0,0,0,1);Set_Mouse(0,0,0,0,0,0); } //移動(dòng)到指定位置單擊左鍵 void Move_To_Click(int16_t x,int16_t y) {Move_To(x,y);Click_L(); }

添加自動(dòng)化程序,需要將手機(jī)開發(fā)者選項(xiàng)打開,顯示指針位置,方便確定每個(gè)步驟點(diǎn)擊屏幕的具體位置。本文使用的安卓手機(jī)屏幕分辨率為1080x1920.
手機(jī)解鎖程序:滑動(dòng)解鎖

#mermaid-svg-tfu8CgtGtQrLRhfw .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .label text{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .node rect,#mermaid-svg-tfu8CgtGtQrLRhfw .node circle,#mermaid-svg-tfu8CgtGtQrLRhfw .node ellipse,#mermaid-svg-tfu8CgtGtQrLRhfw .node polygon,#mermaid-svg-tfu8CgtGtQrLRhfw .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-tfu8CgtGtQrLRhfw .node .label{text-align:center;fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .node.clickable{cursor:pointer}#mermaid-svg-tfu8CgtGtQrLRhfw .arrowheadPath{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-tfu8CgtGtQrLRhfw .flowchart-link{stroke:#333;fill:none}#mermaid-svg-tfu8CgtGtQrLRhfw .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-tfu8CgtGtQrLRhfw .edgeLabel rect{opacity:0.9}#mermaid-svg-tfu8CgtGtQrLRhfw .edgeLabel span{color:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-tfu8CgtGtQrLRhfw .cluster text{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-tfu8CgtGtQrLRhfw .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-tfu8CgtGtQrLRhfw text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-tfu8CgtGtQrLRhfw .actor-line{stroke:grey}#mermaid-svg-tfu8CgtGtQrLRhfw .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-tfu8CgtGtQrLRhfw #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .sequenceNumber{fill:#fff}#mermaid-svg-tfu8CgtGtQrLRhfw #sequencenumber{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw #crosshead path{fill:#333;stroke:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .messageText{fill:#333;stroke:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-tfu8CgtGtQrLRhfw .labelText,#mermaid-svg-tfu8CgtGtQrLRhfw .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-tfu8CgtGtQrLRhfw .loopText,#mermaid-svg-tfu8CgtGtQrLRhfw .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-tfu8CgtGtQrLRhfw .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-tfu8CgtGtQrLRhfw .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-tfu8CgtGtQrLRhfw .noteText,#mermaid-svg-tfu8CgtGtQrLRhfw .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-tfu8CgtGtQrLRhfw .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-tfu8CgtGtQrLRhfw .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-tfu8CgtGtQrLRhfw .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-tfu8CgtGtQrLRhfw .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .section{stroke:none;opacity:0.2}#mermaid-svg-tfu8CgtGtQrLRhfw .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-tfu8CgtGtQrLRhfw .section2{fill:#fff400}#mermaid-svg-tfu8CgtGtQrLRhfw .section1,#mermaid-svg-tfu8CgtGtQrLRhfw .section3{fill:#fff;opacity:0.2}#mermaid-svg-tfu8CgtGtQrLRhfw .sectionTitle0{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .sectionTitle1{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .sectionTitle2{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .sectionTitle3{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-tfu8CgtGtQrLRhfw .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .grid path{stroke-width:0}#mermaid-svg-tfu8CgtGtQrLRhfw .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-tfu8CgtGtQrLRhfw .task{stroke-width:2}#mermaid-svg-tfu8CgtGtQrLRhfw .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .taskText:not([font-size]){font-size:11px}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-tfu8CgtGtQrLRhfw .task.clickable{cursor:pointer}#mermaid-svg-tfu8CgtGtQrLRhfw .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-tfu8CgtGtQrLRhfw .taskText0,#mermaid-svg-tfu8CgtGtQrLRhfw .taskText1,#mermaid-svg-tfu8CgtGtQrLRhfw .taskText2,#mermaid-svg-tfu8CgtGtQrLRhfw .taskText3{fill:#fff}#mermaid-svg-tfu8CgtGtQrLRhfw .task0,#mermaid-svg-tfu8CgtGtQrLRhfw .task1,#mermaid-svg-tfu8CgtGtQrLRhfw .task2,#mermaid-svg-tfu8CgtGtQrLRhfw .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutside0,#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutside2{fill:#000}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutside1,#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutside3{fill:#000}#mermaid-svg-tfu8CgtGtQrLRhfw .active0,#mermaid-svg-tfu8CgtGtQrLRhfw .active1,#mermaid-svg-tfu8CgtGtQrLRhfw .active2,#mermaid-svg-tfu8CgtGtQrLRhfw .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-tfu8CgtGtQrLRhfw .activeText0,#mermaid-svg-tfu8CgtGtQrLRhfw .activeText1,#mermaid-svg-tfu8CgtGtQrLRhfw .activeText2,#mermaid-svg-tfu8CgtGtQrLRhfw .activeText3{fill:#000 !important}#mermaid-svg-tfu8CgtGtQrLRhfw .done0,#mermaid-svg-tfu8CgtGtQrLRhfw .done1,#mermaid-svg-tfu8CgtGtQrLRhfw .done2,#mermaid-svg-tfu8CgtGtQrLRhfw .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-tfu8CgtGtQrLRhfw .doneText0,#mermaid-svg-tfu8CgtGtQrLRhfw .doneText1,#mermaid-svg-tfu8CgtGtQrLRhfw .doneText2,#mermaid-svg-tfu8CgtGtQrLRhfw .doneText3{fill:#000 !important}#mermaid-svg-tfu8CgtGtQrLRhfw .crit0,#mermaid-svg-tfu8CgtGtQrLRhfw .crit1,#mermaid-svg-tfu8CgtGtQrLRhfw .crit2,#mermaid-svg-tfu8CgtGtQrLRhfw .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-tfu8CgtGtQrLRhfw .activeCrit0,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCrit1,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCrit2,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-tfu8CgtGtQrLRhfw .doneCrit0,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCrit1,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCrit2,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-tfu8CgtGtQrLRhfw .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-tfu8CgtGtQrLRhfw .milestoneText{font-style:italic}#mermaid-svg-tfu8CgtGtQrLRhfw .doneCritText0,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCritText1,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCritText2,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCritText3{fill:#000 !important}#mermaid-svg-tfu8CgtGtQrLRhfw .activeCritText0,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCritText1,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCritText2,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCritText3{fill:#000 !important}#mermaid-svg-tfu8CgtGtQrLRhfw .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-tfu8CgtGtQrLRhfw g.classGroup text .title{font-weight:bolder}#mermaid-svg-tfu8CgtGtQrLRhfw g.clickable{cursor:pointer}#mermaid-svg-tfu8CgtGtQrLRhfw g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-tfu8CgtGtQrLRhfw g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-tfu8CgtGtQrLRhfw .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-tfu8CgtGtQrLRhfw .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-tfu8CgtGtQrLRhfw .dashed-line{stroke-dasharray:3}#mermaid-svg-tfu8CgtGtQrLRhfw #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw .commit-id,#mermaid-svg-tfu8CgtGtQrLRhfw .commit-msg,#mermaid-svg-tfu8CgtGtQrLRhfw .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-tfu8CgtGtQrLRhfw g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-tfu8CgtGtQrLRhfw g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-tfu8CgtGtQrLRhfw g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-tfu8CgtGtQrLRhfw .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-tfu8CgtGtQrLRhfw .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-tfu8CgtGtQrLRhfw .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-tfu8CgtGtQrLRhfw .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-tfu8CgtGtQrLRhfw .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-tfu8CgtGtQrLRhfw .edgeLabel text{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .node circle.state-start{fill:black;stroke:black}#mermaid-svg-tfu8CgtGtQrLRhfw .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-tfu8CgtGtQrLRhfw #statediagram-barbEnd{fill:#9370db}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-state .divider{stroke:#9370db}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-tfu8CgtGtQrLRhfw .note-edge{stroke-dasharray:5}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-tfu8CgtGtQrLRhfw .error-icon{fill:#522}#mermaid-svg-tfu8CgtGtQrLRhfw .error-text{fill:#522;stroke:#522}#mermaid-svg-tfu8CgtGtQrLRhfw .edge-thickness-normal{stroke-width:2px}#mermaid-svg-tfu8CgtGtQrLRhfw .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-tfu8CgtGtQrLRhfw .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-tfu8CgtGtQrLRhfw .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-tfu8CgtGtQrLRhfw .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-tfu8CgtGtQrLRhfw .marker{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-tfu8CgtGtQrLRhfw {color: rgba(0, 0, 0, 0.75);font: ;}移動(dòng)到中下位置按下左鍵向上移動(dòng)松開左鍵 void Unlock(void) {Move_To_Click(550,1890);//點(diǎn)擊主頁 為了防止已經(jīng)解鎖后亂點(diǎn)HAL_Delay(1000);//等待1sMove_To(600,1400);//移動(dòng)到中下位置Set_Mouse(0,0,0,1,0,0);//按下左鍵Move_To(600,1000);//向上移動(dòng)Set_Mouse(0,0,0,0,0,0);//松開左鍵 }

打開微信
先將微信圖標(biāo)放在桌面第2頁特定位置,方便點(diǎn)擊

#mermaid-svg-4Xevs19vOzQfZ2ve .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .label text{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .node rect,#mermaid-svg-4Xevs19vOzQfZ2ve .node circle,#mermaid-svg-4Xevs19vOzQfZ2ve .node ellipse,#mermaid-svg-4Xevs19vOzQfZ2ve .node polygon,#mermaid-svg-4Xevs19vOzQfZ2ve .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-4Xevs19vOzQfZ2ve .node .label{text-align:center;fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .node.clickable{cursor:pointer}#mermaid-svg-4Xevs19vOzQfZ2ve .arrowheadPath{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-4Xevs19vOzQfZ2ve .flowchart-link{stroke:#333;fill:none}#mermaid-svg-4Xevs19vOzQfZ2ve .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-4Xevs19vOzQfZ2ve .edgeLabel rect{opacity:0.9}#mermaid-svg-4Xevs19vOzQfZ2ve .edgeLabel span{color:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-4Xevs19vOzQfZ2ve .cluster text{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-4Xevs19vOzQfZ2ve .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-4Xevs19vOzQfZ2ve text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-4Xevs19vOzQfZ2ve .actor-line{stroke:grey}#mermaid-svg-4Xevs19vOzQfZ2ve .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-4Xevs19vOzQfZ2ve #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .sequenceNumber{fill:#fff}#mermaid-svg-4Xevs19vOzQfZ2ve #sequencenumber{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve #crosshead path{fill:#333;stroke:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .messageText{fill:#333;stroke:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-4Xevs19vOzQfZ2ve .labelText,#mermaid-svg-4Xevs19vOzQfZ2ve .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-4Xevs19vOzQfZ2ve .loopText,#mermaid-svg-4Xevs19vOzQfZ2ve .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-4Xevs19vOzQfZ2ve .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-4Xevs19vOzQfZ2ve .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-4Xevs19vOzQfZ2ve .noteText,#mermaid-svg-4Xevs19vOzQfZ2ve .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-4Xevs19vOzQfZ2ve .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-4Xevs19vOzQfZ2ve .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-4Xevs19vOzQfZ2ve .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-4Xevs19vOzQfZ2ve .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .section{stroke:none;opacity:0.2}#mermaid-svg-4Xevs19vOzQfZ2ve .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-4Xevs19vOzQfZ2ve .section2{fill:#fff400}#mermaid-svg-4Xevs19vOzQfZ2ve .section1,#mermaid-svg-4Xevs19vOzQfZ2ve .section3{fill:#fff;opacity:0.2}#mermaid-svg-4Xevs19vOzQfZ2ve .sectionTitle0{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .sectionTitle1{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .sectionTitle2{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .sectionTitle3{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-4Xevs19vOzQfZ2ve .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .grid path{stroke-width:0}#mermaid-svg-4Xevs19vOzQfZ2ve .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-4Xevs19vOzQfZ2ve .task{stroke-width:2}#mermaid-svg-4Xevs19vOzQfZ2ve .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .taskText:not([font-size]){font-size:11px}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-4Xevs19vOzQfZ2ve .task.clickable{cursor:pointer}#mermaid-svg-4Xevs19vOzQfZ2ve .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-4Xevs19vOzQfZ2ve .taskText0,#mermaid-svg-4Xevs19vOzQfZ2ve .taskText1,#mermaid-svg-4Xevs19vOzQfZ2ve .taskText2,#mermaid-svg-4Xevs19vOzQfZ2ve .taskText3{fill:#fff}#mermaid-svg-4Xevs19vOzQfZ2ve .task0,#mermaid-svg-4Xevs19vOzQfZ2ve .task1,#mermaid-svg-4Xevs19vOzQfZ2ve .task2,#mermaid-svg-4Xevs19vOzQfZ2ve .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutside0,#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutside2{fill:#000}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutside1,#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutside3{fill:#000}#mermaid-svg-4Xevs19vOzQfZ2ve .active0,#mermaid-svg-4Xevs19vOzQfZ2ve .active1,#mermaid-svg-4Xevs19vOzQfZ2ve .active2,#mermaid-svg-4Xevs19vOzQfZ2ve .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-4Xevs19vOzQfZ2ve .activeText0,#mermaid-svg-4Xevs19vOzQfZ2ve .activeText1,#mermaid-svg-4Xevs19vOzQfZ2ve .activeText2,#mermaid-svg-4Xevs19vOzQfZ2ve .activeText3{fill:#000 !important}#mermaid-svg-4Xevs19vOzQfZ2ve .done0,#mermaid-svg-4Xevs19vOzQfZ2ve .done1,#mermaid-svg-4Xevs19vOzQfZ2ve .done2,#mermaid-svg-4Xevs19vOzQfZ2ve .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-4Xevs19vOzQfZ2ve .doneText0,#mermaid-svg-4Xevs19vOzQfZ2ve .doneText1,#mermaid-svg-4Xevs19vOzQfZ2ve .doneText2,#mermaid-svg-4Xevs19vOzQfZ2ve .doneText3{fill:#000 !important}#mermaid-svg-4Xevs19vOzQfZ2ve .crit0,#mermaid-svg-4Xevs19vOzQfZ2ve .crit1,#mermaid-svg-4Xevs19vOzQfZ2ve .crit2,#mermaid-svg-4Xevs19vOzQfZ2ve .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-4Xevs19vOzQfZ2ve .activeCrit0,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCrit1,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCrit2,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-4Xevs19vOzQfZ2ve .doneCrit0,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCrit1,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCrit2,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-4Xevs19vOzQfZ2ve .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-4Xevs19vOzQfZ2ve .milestoneText{font-style:italic}#mermaid-svg-4Xevs19vOzQfZ2ve .doneCritText0,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCritText1,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCritText2,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCritText3{fill:#000 !important}#mermaid-svg-4Xevs19vOzQfZ2ve .activeCritText0,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCritText1,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCritText2,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCritText3{fill:#000 !important}#mermaid-svg-4Xevs19vOzQfZ2ve .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-4Xevs19vOzQfZ2ve g.classGroup text .title{font-weight:bolder}#mermaid-svg-4Xevs19vOzQfZ2ve g.clickable{cursor:pointer}#mermaid-svg-4Xevs19vOzQfZ2ve g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-4Xevs19vOzQfZ2ve g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-4Xevs19vOzQfZ2ve .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-4Xevs19vOzQfZ2ve .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-4Xevs19vOzQfZ2ve .dashed-line{stroke-dasharray:3}#mermaid-svg-4Xevs19vOzQfZ2ve #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve .commit-id,#mermaid-svg-4Xevs19vOzQfZ2ve .commit-msg,#mermaid-svg-4Xevs19vOzQfZ2ve .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-4Xevs19vOzQfZ2ve g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-4Xevs19vOzQfZ2ve g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-4Xevs19vOzQfZ2ve g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-4Xevs19vOzQfZ2ve .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-4Xevs19vOzQfZ2ve .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-4Xevs19vOzQfZ2ve .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-4Xevs19vOzQfZ2ve .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-4Xevs19vOzQfZ2ve .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-4Xevs19vOzQfZ2ve .edgeLabel text{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .node circle.state-start{fill:black;stroke:black}#mermaid-svg-4Xevs19vOzQfZ2ve .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-4Xevs19vOzQfZ2ve #statediagram-barbEnd{fill:#9370db}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-state .divider{stroke:#9370db}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-4Xevs19vOzQfZ2ve .note-edge{stroke-dasharray:5}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-4Xevs19vOzQfZ2ve .error-icon{fill:#522}#mermaid-svg-4Xevs19vOzQfZ2ve .error-text{fill:#522;stroke:#522}#mermaid-svg-4Xevs19vOzQfZ2ve .edge-thickness-normal{stroke-width:2px}#mermaid-svg-4Xevs19vOzQfZ2ve .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-4Xevs19vOzQfZ2ve .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-4Xevs19vOzQfZ2ve .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-4Xevs19vOzQfZ2ve .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-4Xevs19vOzQfZ2ve .marker{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-4Xevs19vOzQfZ2ve {color: rgba(0, 0, 0, 0.75);font: ;}移動(dòng)到中下位置滾輪翻頁點(diǎn)擊微信圖標(biāo) void Open_Wechat(void) {Move_To_Click(550,1890);//主頁HAL_Delay(1000);//等待1sMove_To(550,1000);//移動(dòng)到中下某位置Scroll(-100);//翻頁Move_To_Click(150,150);//點(diǎn)擊微信圖標(biāo)HAL_Delay(1000);//等待1sMove_To_Click(400,1740);//點(diǎn)擊微信通訊錄 }

選擇聯(lián)系人
先將微信中聯(lián)系人的備注添加前綴,這樣就能進(jìn)行排序。本文將常用的10個(gè)聯(lián)系人備注分別加上 A0、A1、A2、A3、A4、A5、A6、A7、A8、A9。這樣就可以精確定位聯(lián)系人了。

#mermaid-svg-Zweev9V959Z9dLtm .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-Zweev9V959Z9dLtm .label text{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .node rect,#mermaid-svg-Zweev9V959Z9dLtm .node circle,#mermaid-svg-Zweev9V959Z9dLtm .node ellipse,#mermaid-svg-Zweev9V959Z9dLtm .node polygon,#mermaid-svg-Zweev9V959Z9dLtm .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Zweev9V959Z9dLtm .node .label{text-align:center;fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .node.clickable{cursor:pointer}#mermaid-svg-Zweev9V959Z9dLtm .arrowheadPath{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-Zweev9V959Z9dLtm .flowchart-link{stroke:#333;fill:none}#mermaid-svg-Zweev9V959Z9dLtm .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-Zweev9V959Z9dLtm .edgeLabel rect{opacity:0.9}#mermaid-svg-Zweev9V959Z9dLtm .edgeLabel span{color:#333}#mermaid-svg-Zweev9V959Z9dLtm .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-Zweev9V959Z9dLtm .cluster text{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-Zweev9V959Z9dLtm .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Zweev9V959Z9dLtm text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-Zweev9V959Z9dLtm .actor-line{stroke:grey}#mermaid-svg-Zweev9V959Z9dLtm .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-Zweev9V959Z9dLtm .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-Zweev9V959Z9dLtm #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-Zweev9V959Z9dLtm .sequenceNumber{fill:#fff}#mermaid-svg-Zweev9V959Z9dLtm #sequencenumber{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm #crosshead path{fill:#333;stroke:#333}#mermaid-svg-Zweev9V959Z9dLtm .messageText{fill:#333;stroke:#333}#mermaid-svg-Zweev9V959Z9dLtm .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Zweev9V959Z9dLtm .labelText,#mermaid-svg-Zweev9V959Z9dLtm .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-Zweev9V959Z9dLtm .loopText,#mermaid-svg-Zweev9V959Z9dLtm .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-Zweev9V959Z9dLtm .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-Zweev9V959Z9dLtm .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Zweev9V959Z9dLtm .noteText,#mermaid-svg-Zweev9V959Z9dLtm .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-Zweev9V959Z9dLtm .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-Zweev9V959Z9dLtm .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-Zweev9V959Z9dLtm .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-Zweev9V959Z9dLtm .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .section{stroke:none;opacity:0.2}#mermaid-svg-Zweev9V959Z9dLtm .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-Zweev9V959Z9dLtm .section2{fill:#fff400}#mermaid-svg-Zweev9V959Z9dLtm .section1,#mermaid-svg-Zweev9V959Z9dLtm .section3{fill:#fff;opacity:0.2}#mermaid-svg-Zweev9V959Z9dLtm .sectionTitle0{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .sectionTitle1{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .sectionTitle2{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .sectionTitle3{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-Zweev9V959Z9dLtm .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .grid path{stroke-width:0}#mermaid-svg-Zweev9V959Z9dLtm .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-Zweev9V959Z9dLtm .task{stroke-width:2}#mermaid-svg-Zweev9V959Z9dLtm .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .taskText:not([font-size]){font-size:11px}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-Zweev9V959Z9dLtm .task.clickable{cursor:pointer}#mermaid-svg-Zweev9V959Z9dLtm .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Zweev9V959Z9dLtm .taskText0,#mermaid-svg-Zweev9V959Z9dLtm .taskText1,#mermaid-svg-Zweev9V959Z9dLtm .taskText2,#mermaid-svg-Zweev9V959Z9dLtm .taskText3{fill:#fff}#mermaid-svg-Zweev9V959Z9dLtm .task0,#mermaid-svg-Zweev9V959Z9dLtm .task1,#mermaid-svg-Zweev9V959Z9dLtm .task2,#mermaid-svg-Zweev9V959Z9dLtm .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutside0,#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutside2{fill:#000}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutside1,#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutside3{fill:#000}#mermaid-svg-Zweev9V959Z9dLtm .active0,#mermaid-svg-Zweev9V959Z9dLtm .active1,#mermaid-svg-Zweev9V959Z9dLtm .active2,#mermaid-svg-Zweev9V959Z9dLtm .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-Zweev9V959Z9dLtm .activeText0,#mermaid-svg-Zweev9V959Z9dLtm .activeText1,#mermaid-svg-Zweev9V959Z9dLtm .activeText2,#mermaid-svg-Zweev9V959Z9dLtm .activeText3{fill:#000 !important}#mermaid-svg-Zweev9V959Z9dLtm .done0,#mermaid-svg-Zweev9V959Z9dLtm .done1,#mermaid-svg-Zweev9V959Z9dLtm .done2,#mermaid-svg-Zweev9V959Z9dLtm .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-Zweev9V959Z9dLtm .doneText0,#mermaid-svg-Zweev9V959Z9dLtm .doneText1,#mermaid-svg-Zweev9V959Z9dLtm .doneText2,#mermaid-svg-Zweev9V959Z9dLtm .doneText3{fill:#000 !important}#mermaid-svg-Zweev9V959Z9dLtm .crit0,#mermaid-svg-Zweev9V959Z9dLtm .crit1,#mermaid-svg-Zweev9V959Z9dLtm .crit2,#mermaid-svg-Zweev9V959Z9dLtm .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-Zweev9V959Z9dLtm .activeCrit0,#mermaid-svg-Zweev9V959Z9dLtm .activeCrit1,#mermaid-svg-Zweev9V959Z9dLtm .activeCrit2,#mermaid-svg-Zweev9V959Z9dLtm .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-Zweev9V959Z9dLtm .doneCrit0,#mermaid-svg-Zweev9V959Z9dLtm .doneCrit1,#mermaid-svg-Zweev9V959Z9dLtm .doneCrit2,#mermaid-svg-Zweev9V959Z9dLtm .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-Zweev9V959Z9dLtm .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-Zweev9V959Z9dLtm .milestoneText{font-style:italic}#mermaid-svg-Zweev9V959Z9dLtm .doneCritText0,#mermaid-svg-Zweev9V959Z9dLtm .doneCritText1,#mermaid-svg-Zweev9V959Z9dLtm .doneCritText2,#mermaid-svg-Zweev9V959Z9dLtm .doneCritText3{fill:#000 !important}#mermaid-svg-Zweev9V959Z9dLtm .activeCritText0,#mermaid-svg-Zweev9V959Z9dLtm .activeCritText1,#mermaid-svg-Zweev9V959Z9dLtm .activeCritText2,#mermaid-svg-Zweev9V959Z9dLtm .activeCritText3{fill:#000 !important}#mermaid-svg-Zweev9V959Z9dLtm .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-Zweev9V959Z9dLtm g.classGroup text .title{font-weight:bolder}#mermaid-svg-Zweev9V959Z9dLtm g.clickable{cursor:pointer}#mermaid-svg-Zweev9V959Z9dLtm g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Zweev9V959Z9dLtm g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-Zweev9V959Z9dLtm .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-Zweev9V959Z9dLtm .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Zweev9V959Z9dLtm .dashed-line{stroke-dasharray:3}#mermaid-svg-Zweev9V959Z9dLtm #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm .commit-id,#mermaid-svg-Zweev9V959Z9dLtm .commit-msg,#mermaid-svg-Zweev9V959Z9dLtm .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-Zweev9V959Z9dLtm g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-Zweev9V959Z9dLtm g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Zweev9V959Z9dLtm g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Zweev9V959Z9dLtm .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-Zweev9V959Z9dLtm .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-Zweev9V959Z9dLtm .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Zweev9V959Z9dLtm .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-Zweev9V959Z9dLtm .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-Zweev9V959Z9dLtm .edgeLabel text{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .node circle.state-start{fill:black;stroke:black}#mermaid-svg-Zweev9V959Z9dLtm .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-Zweev9V959Z9dLtm #statediagram-barbEnd{fill:#9370db}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-state .divider{stroke:#9370db}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-Zweev9V959Z9dLtm .note-edge{stroke-dasharray:5}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-Zweev9V959Z9dLtm .error-icon{fill:#522}#mermaid-svg-Zweev9V959Z9dLtm .error-text{fill:#522;stroke:#522}#mermaid-svg-Zweev9V959Z9dLtm .edge-thickness-normal{stroke-width:2px}#mermaid-svg-Zweev9V959Z9dLtm .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-Zweev9V959Z9dLtm .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-Zweev9V959Z9dLtm .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-Zweev9V959Z9dLtm .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-Zweev9V959Z9dLtm .marker{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-Zweev9V959Z9dLtm {color: rgba(0, 0, 0, 0.75);font: ;}回到微信主頁點(diǎn)擊通訊錄點(diǎn)擊字母A點(diǎn)擊A分組下的聯(lián)系人 void Choose_Name(int8_t num) {//點(diǎn)擊5次返回圖標(biāo),確保當(dāng)前頁面為微信主頁,為了防止程序在微信中點(diǎn)錯(cuò)Move_To_Click(40,100);Move_To_Click(40,100);Move_To_Click(40,100);Move_To_Click(40,100);Move_To_Click(40,100);Move_To_Click(400,1740);//點(diǎn)擊通訊錄HAL_Delay(1000);//等待1sMove_To_Click(1050,410);//點(diǎn)擊AHAL_Delay(1000);//等待1sMove_To_Click(200,num*133+350);//點(diǎn)擊聯(lián)系人名字 A0是350 A9是1550 均分1200/9=133 }

開始呼叫
這一步較簡單。

#mermaid-svg-rG3OHrUrFxPvYlny .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-rG3OHrUrFxPvYlny .label text{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .node rect,#mermaid-svg-rG3OHrUrFxPvYlny .node circle,#mermaid-svg-rG3OHrUrFxPvYlny .node ellipse,#mermaid-svg-rG3OHrUrFxPvYlny .node polygon,#mermaid-svg-rG3OHrUrFxPvYlny .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-rG3OHrUrFxPvYlny .node .label{text-align:center;fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .node.clickable{cursor:pointer}#mermaid-svg-rG3OHrUrFxPvYlny .arrowheadPath{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-rG3OHrUrFxPvYlny .flowchart-link{stroke:#333;fill:none}#mermaid-svg-rG3OHrUrFxPvYlny .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-rG3OHrUrFxPvYlny .edgeLabel rect{opacity:0.9}#mermaid-svg-rG3OHrUrFxPvYlny .edgeLabel span{color:#333}#mermaid-svg-rG3OHrUrFxPvYlny .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-rG3OHrUrFxPvYlny .cluster text{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-rG3OHrUrFxPvYlny .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-rG3OHrUrFxPvYlny text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-rG3OHrUrFxPvYlny .actor-line{stroke:grey}#mermaid-svg-rG3OHrUrFxPvYlny .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-rG3OHrUrFxPvYlny .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-rG3OHrUrFxPvYlny #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-rG3OHrUrFxPvYlny .sequenceNumber{fill:#fff}#mermaid-svg-rG3OHrUrFxPvYlny #sequencenumber{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny #crosshead path{fill:#333;stroke:#333}#mermaid-svg-rG3OHrUrFxPvYlny .messageText{fill:#333;stroke:#333}#mermaid-svg-rG3OHrUrFxPvYlny .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-rG3OHrUrFxPvYlny .labelText,#mermaid-svg-rG3OHrUrFxPvYlny .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-rG3OHrUrFxPvYlny .loopText,#mermaid-svg-rG3OHrUrFxPvYlny .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-rG3OHrUrFxPvYlny .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-rG3OHrUrFxPvYlny .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-rG3OHrUrFxPvYlny .noteText,#mermaid-svg-rG3OHrUrFxPvYlny .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-rG3OHrUrFxPvYlny .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-rG3OHrUrFxPvYlny .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-rG3OHrUrFxPvYlny .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-rG3OHrUrFxPvYlny .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .section{stroke:none;opacity:0.2}#mermaid-svg-rG3OHrUrFxPvYlny .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-rG3OHrUrFxPvYlny .section2{fill:#fff400}#mermaid-svg-rG3OHrUrFxPvYlny .section1,#mermaid-svg-rG3OHrUrFxPvYlny .section3{fill:#fff;opacity:0.2}#mermaid-svg-rG3OHrUrFxPvYlny .sectionTitle0{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .sectionTitle1{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .sectionTitle2{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .sectionTitle3{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-rG3OHrUrFxPvYlny .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .grid path{stroke-width:0}#mermaid-svg-rG3OHrUrFxPvYlny .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-rG3OHrUrFxPvYlny .task{stroke-width:2}#mermaid-svg-rG3OHrUrFxPvYlny .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .taskText:not([font-size]){font-size:11px}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-rG3OHrUrFxPvYlny .task.clickable{cursor:pointer}#mermaid-svg-rG3OHrUrFxPvYlny .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-rG3OHrUrFxPvYlny .taskText0,#mermaid-svg-rG3OHrUrFxPvYlny .taskText1,#mermaid-svg-rG3OHrUrFxPvYlny .taskText2,#mermaid-svg-rG3OHrUrFxPvYlny .taskText3{fill:#fff}#mermaid-svg-rG3OHrUrFxPvYlny .task0,#mermaid-svg-rG3OHrUrFxPvYlny .task1,#mermaid-svg-rG3OHrUrFxPvYlny .task2,#mermaid-svg-rG3OHrUrFxPvYlny .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutside0,#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutside2{fill:#000}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutside1,#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutside3{fill:#000}#mermaid-svg-rG3OHrUrFxPvYlny .active0,#mermaid-svg-rG3OHrUrFxPvYlny .active1,#mermaid-svg-rG3OHrUrFxPvYlny .active2,#mermaid-svg-rG3OHrUrFxPvYlny .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-rG3OHrUrFxPvYlny .activeText0,#mermaid-svg-rG3OHrUrFxPvYlny .activeText1,#mermaid-svg-rG3OHrUrFxPvYlny .activeText2,#mermaid-svg-rG3OHrUrFxPvYlny .activeText3{fill:#000 !important}#mermaid-svg-rG3OHrUrFxPvYlny .done0,#mermaid-svg-rG3OHrUrFxPvYlny .done1,#mermaid-svg-rG3OHrUrFxPvYlny .done2,#mermaid-svg-rG3OHrUrFxPvYlny .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-rG3OHrUrFxPvYlny .doneText0,#mermaid-svg-rG3OHrUrFxPvYlny .doneText1,#mermaid-svg-rG3OHrUrFxPvYlny .doneText2,#mermaid-svg-rG3OHrUrFxPvYlny .doneText3{fill:#000 !important}#mermaid-svg-rG3OHrUrFxPvYlny .crit0,#mermaid-svg-rG3OHrUrFxPvYlny .crit1,#mermaid-svg-rG3OHrUrFxPvYlny .crit2,#mermaid-svg-rG3OHrUrFxPvYlny .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-rG3OHrUrFxPvYlny .activeCrit0,#mermaid-svg-rG3OHrUrFxPvYlny .activeCrit1,#mermaid-svg-rG3OHrUrFxPvYlny .activeCrit2,#mermaid-svg-rG3OHrUrFxPvYlny .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-rG3OHrUrFxPvYlny .doneCrit0,#mermaid-svg-rG3OHrUrFxPvYlny .doneCrit1,#mermaid-svg-rG3OHrUrFxPvYlny .doneCrit2,#mermaid-svg-rG3OHrUrFxPvYlny .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-rG3OHrUrFxPvYlny .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-rG3OHrUrFxPvYlny .milestoneText{font-style:italic}#mermaid-svg-rG3OHrUrFxPvYlny .doneCritText0,#mermaid-svg-rG3OHrUrFxPvYlny .doneCritText1,#mermaid-svg-rG3OHrUrFxPvYlny .doneCritText2,#mermaid-svg-rG3OHrUrFxPvYlny .doneCritText3{fill:#000 !important}#mermaid-svg-rG3OHrUrFxPvYlny .activeCritText0,#mermaid-svg-rG3OHrUrFxPvYlny .activeCritText1,#mermaid-svg-rG3OHrUrFxPvYlny .activeCritText2,#mermaid-svg-rG3OHrUrFxPvYlny .activeCritText3{fill:#000 !important}#mermaid-svg-rG3OHrUrFxPvYlny .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-rG3OHrUrFxPvYlny g.classGroup text .title{font-weight:bolder}#mermaid-svg-rG3OHrUrFxPvYlny g.clickable{cursor:pointer}#mermaid-svg-rG3OHrUrFxPvYlny g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-rG3OHrUrFxPvYlny g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-rG3OHrUrFxPvYlny .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-rG3OHrUrFxPvYlny .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-rG3OHrUrFxPvYlny .dashed-line{stroke-dasharray:3}#mermaid-svg-rG3OHrUrFxPvYlny #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny .commit-id,#mermaid-svg-rG3OHrUrFxPvYlny .commit-msg,#mermaid-svg-rG3OHrUrFxPvYlny .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-rG3OHrUrFxPvYlny g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-rG3OHrUrFxPvYlny g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-rG3OHrUrFxPvYlny g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-rG3OHrUrFxPvYlny .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-rG3OHrUrFxPvYlny .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-rG3OHrUrFxPvYlny .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-rG3OHrUrFxPvYlny .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-rG3OHrUrFxPvYlny .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-rG3OHrUrFxPvYlny .edgeLabel text{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .node circle.state-start{fill:black;stroke:black}#mermaid-svg-rG3OHrUrFxPvYlny .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-rG3OHrUrFxPvYlny #statediagram-barbEnd{fill:#9370db}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-state .divider{stroke:#9370db}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-rG3OHrUrFxPvYlny .note-edge{stroke-dasharray:5}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-rG3OHrUrFxPvYlny .error-icon{fill:#522}#mermaid-svg-rG3OHrUrFxPvYlny .error-text{fill:#522;stroke:#522}#mermaid-svg-rG3OHrUrFxPvYlny .edge-thickness-normal{stroke-width:2px}#mermaid-svg-rG3OHrUrFxPvYlny .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-rG3OHrUrFxPvYlny .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-rG3OHrUrFxPvYlny .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-rG3OHrUrFxPvYlny .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-rG3OHrUrFxPvYlny .marker{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-rG3OHrUrFxPvYlny {color: rgba(0, 0, 0, 0.75);font: ;}點(diǎn)擊音視頻通話點(diǎn)擊視頻通話 void Start_Call() {Move_To_Click(550,1400);//點(diǎn)擊音視頻通話HAL_Delay(2000);//等待1sMove_To_Click(550,1460);//點(diǎn)擊視頻通話 }

結(jié)束通話

void Stop_Call(void) {Move_To_Click(550,1600);//掛電話 通話時(shí)會(huì)自動(dòng)隱藏掛機(jī)按鈕,這里點(diǎn)擊后能顯示按鈕HAL_Delay(1000);//等待1sMove_To_Click(550,1600);//掛電話 通話時(shí)點(diǎn)擊中間能掛電話Move_To_Click(350,1600);//掛電話 呼叫時(shí)點(diǎn)擊左邊能掛電話 } /* USER CODE END 1 */

2.2 修改usb_device.h文件

對(duì)屏幕分辨率添加宏定義

/* USER CODE BEGIN INCLUDE */ #define PX_MAX 1080 #define PY_MAX 1920 /* USER CODE END INCLUDE */

對(duì)以上函數(shù)添加聲明

/* USER CODE BEGIN FD */ void Set_Mouse(int8_t x,int8_t y,int8_t z,uint8_t L,uint8_t R,uint8_t M); void Scroll(int8_t z); void Move(int8_t x,int8_t y); void Move_Reset(void); void Move_To(int16_t x,int16_t y); void Click_L(void); void Click_R(void); void Click_M(void); void Move_To_Click(int16_t x,int16_t y);void Unlock(void); void Open_Wechat(void); void Start_Call(void); void Choose_Name(int8_t num); void Stop_Call(void);/* USER CODE END FD */

3 修改main.c文件

添加矩陣鍵盤掃描函數(shù)

/* USER CODE BEGIN 4 */ uint8_t Key_Scan(void) {GPIO_InitTypeDef GPIO_InitStruct = {0};//前4個(gè)端口輸出低電平HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6, GPIO_PIN_RESET);//前4個(gè)端口推挽輸出GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);//后4個(gè)端口上拉輸入GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15)==GPIO_PIN_RESET)//讀取第1行{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET);//后4個(gè)端口推挽輸出GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);//前4個(gè)端口上拉輸入GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_3)==GPIO_PIN_RESET)return 'A';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_4)==GPIO_PIN_RESET)return '3';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5)==GPIO_PIN_RESET)return '2';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_6)==GPIO_PIN_RESET)return '1';}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_14)==GPIO_PIN_RESET)//讀取第2行{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET);//后4個(gè)端口推挽輸出GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);//前4個(gè)端口上拉輸入GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_3)==GPIO_PIN_RESET)return 'B';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_4)==GPIO_PIN_RESET)return '6';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5)==GPIO_PIN_RESET)return '5';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_6)==GPIO_PIN_RESET)return '4';}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_13)==GPIO_PIN_RESET)//讀取第3行{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET);//后4個(gè)端口推挽輸出GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);//前4個(gè)端口上拉輸入GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_3)==GPIO_PIN_RESET)return 'C';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_4)==GPIO_PIN_RESET)return '9';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5)==GPIO_PIN_RESET)return '8';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_6)==GPIO_PIN_RESET)return '7';}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12)==GPIO_PIN_RESET)//讀取第4行{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET);//后4個(gè)端口推挽輸出GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);//前4個(gè)端口上拉輸入GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_3)==GPIO_PIN_RESET)return 'D';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_4)==GPIO_PIN_RESET)return '#';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5)==GPIO_PIN_RESET)return '0';if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_6)==GPIO_PIN_RESET)return '*';}return 0; }

添加USB OTG功能切換函數(shù)

static void USB_OTG_ON(void)//開啟OTG功能 {USB_OTG_FLAG = 1;HAL_GPIO_WritePin(USB_ID_GPIO_Port, USB_ID_Pin, GPIO_PIN_SET);HAL_Delay(100);HAL_GPIO_WritePin(GPIOA,USB_VCC_Pin, GPIO_PIN_RESET);HAL_Delay(1000);HAL_GPIO_WritePin(USB_ID_GPIO_Port, USB_ID_Pin, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA,USB_VCC_Pin, GPIO_PIN_SET);HAL_Delay(1000);Move_Reset(); }static void USB_OTG_OFF(void)//關(guān)閉OTG功能 {USB_OTG_FLAG = 0;HAL_GPIO_WritePin(USB_ID_GPIO_Port, USB_ID_Pin, GPIO_PIN_SET);HAL_Delay(100);HAL_GPIO_WritePin(GPIOA,USB_VCC_Pin, GPIO_PIN_RESET);HAL_Delay(1000);HAL_GPIO_WritePin(USB_ID_GPIO_Port, USB_ID_Pin, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA,USB_VCC_Pin, GPIO_PIN_SET); }/* USER CODE END 4 */

聲明USB OTG狀態(tài)標(biāo)志位變量

/* USER CODE BEGIN PV */ static uint8_t USB_OTG_FLAG=0; /* USER CODE END PV */

聲明以上三個(gè)函數(shù)

/* USER CODE BEGIN PFP */ static void USB_OTG_ON(void); static void USB_OTG_OFF(void); uint8_t Key_Scan(void); /* USER CODE END PFP */

編寫主函數(shù)程序

/*** @brief The application entry point.* @retval int*/ int main(void) {/* USER CODE BEGIN 1 */uint8_t key;uint16_t timeout_10ms;/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USB_DEVICE_Init();/* USER CODE BEGIN 2 */USB_OTG_OFF();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while(1){ /* USER CODE END WHILE */key = Key_Scan();if(key){if(USB_OTG_FLAG==0)USB_OTG_ON(),timeout_10ms=6000;//60s未操作關(guān)閉OTG,進(jìn)行手機(jī)充電switch(key){case 'A':Unlock(); break;case 'B':Open_Wechat(); break;case 'C':Start_Call(); break;case 'D':Stop_Call(); break;case '0':Choose_Name(0);break;case '1':Choose_Name(1);break;case '2':Choose_Name(2);break;case '3':Choose_Name(3);break;case '4':Choose_Name(4);break;case '5':Choose_Name(5);break;case '6':Choose_Name(6);break;case '7':Choose_Name(7);break;case '8':Choose_Name(8);break;case '9':Choose_Name(9);break;case '*':Unlock();HAL_Delay(1000);Open_Wechat();break;case '#':Start_Call();break;}}if(USB_OTG_FLAG){if(timeout_10ms--)HAL_Delay(10);else USB_OTG_OFF();} /* USER CODE BEGIN 3 */}/* USER CODE END 3 */ }

四、結(jié)語

可編程鼠標(biāo)的應(yīng)用范圍遠(yuǎn)不止此,還有許多實(shí)用場景,比如電視盒子一鍵收看節(jié)目、代替手機(jī)腳本完成自動(dòng)化操作,將手機(jī)作為小電視一鍵收看等等,整個(gè)制作流程并不復(fù)雜,卻開了先河。如有錯(cuò)誤望批評(píng)指正,因春運(yùn)期間快遞停運(yùn)沒有接插件,只能焊接,外觀不佳。更多場景和功能等待各位開發(fā)者們探索。

總結(jié)

以上是生活随笔為你收集整理的基于STM32的微信视频电话机,让家里的老人也能轻松使用微信视频电话的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。