const_hoisted_1=/* @__PURE__ */createStaticVNode('<h1id="gpio-control"tabindex="-1">GPIOControl<aclass="header-anchor"href="#gpio-control"aria-label="Permalink to "GPIO Control {#gpio-control}""></a></h1><p>QMKhasaGPIOcontrolabstractionlayerwhichismicrocontrolleragnostic.Thisisdonetoalloweasyaccesstopincontrolacrossdifferentplatforms.</p><h2id="macros"tabindex="-1">Macros<aclass="header-anchor"href="#macros"aria-label="Permalinkto"Macros{#macros}""></a></h2><p>ThefollowingmacrosprovidebasiccontrolofGPIOsandarefoundin<code>platforms/<platform>/gpio.h</code>.</p><table><thead><tr><th>Macro</th><th>Description</th></tr></thead><tbody><tr><td><code>gpio_set_pin_input(pin)</code></td><td>Setpinasinputwithhighimpedance(High-Z)</td></tr><tr><td><code>gpio_set_pin_input_high(pin)</code></td><td>Setpinasinputwithbuiltinpull-upresistor</td></tr><tr><td><code>gpio_set_pin_input_low(pin)</code></td><td>Setpinasinputwithbuiltinpull-downresistor(unavailableonAVR)</td></tr><tr><td><code>gpio_set_pin_output(pin)</code></td><td>Setpinasoutput(aliasof<code>gpio_set_pin_output_push_pull</code>)</td></tr><tr><td><code>gpio_set_pin_output_push_pull(pin)</code></td><td>Setpinasoutput,push/pullmode</td></tr><tr><td><code>gpio_set_pin_output_open_drain(pin)</code></td><td>Setpinasoutput,open-drainmode(unavailableonAVRandATSAM)</td></tr><tr><td><code>gpio_write_pin_high(pin)</code></td><td>Setpinlevelashigh,assumingitisanoutput</td></tr><tr><td><code>gpio_write_pin_low(pin)</code></td><td>Setpinlevelaslow,assumingitisanoutput</td></tr><tr><td><code>gpio_write_pin(pin,level)</code></td><td>Setpinlevel,assumingitisanoutput</td></tr><tr><td><code>gpio_read_pin(pin)</code></td><td>Returnsthelevelofthepin</td></tr><tr><td><code>gpio_toggle_pin(pin)</code></td><td>Invertpinlevel,assumingitisanoutput</td></tr></tbody></table><h2id="advanced-settings"tabindex="-1">AdvancedSettings<aclass="header-anchor"href="#advanced-settings"aria-label="Permalinkto"AdvancedSettings{#advanced-settings}""></a></h2><p>EachmicrocontrollercanhavemultipleadvancedsettingsregardingitsGPIO.Thisabstractionlayerdoesnotlimittheuseofarchitecture-specificfunctions.Advancedusersshouldconsultthedatasheetoftheirdesireddevice.ForAVR,thestandard<code>avr/io.h</code>libraryisused;forSTM32,theChibiOS<ahref="https://chibios.sourceforge.net/docs3/hal/group___p_a_l.html"target="_blank"rel="noreferrer">PALlibrary</a>isused.</p><h2id="atomic-operation"tabindex="-1">AtomicOperation<aclass="header-anchor"href="#atomic-operation"aria-label="Permalinkto"AtomicOperation{#atomic-operation}""></a></h2><p>Theabovefunctionsarenotalwaysguaranteedtoworkatomically.Therefore,ifyouwanttopreventinterruptionsinthemiddleofoperationswhenusingmultiplecombinationsoftheabovefunctions,usethefollowing<code>ATOMIC_BLOCK_FORCEON</code>macro.</p><p>eg.</p><divclass="language-cvp-adaptive-theme"><buttontitle="CopyCode"class="copy"></button><spanclass="lang">c</span><preclass="shikishiki-themesgithub-lightgithub-darkvp-code"><code><spanclass="line"><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">void</span><spanstyle="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">some_function</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">void</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//someprocess</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ATOMIC_BLOCK_FORCEON{</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//AtomicProcessing</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#24292E;--shiki-dar