const__pageData=JSON.parse('{"title":"Choosing an Arm MCU","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_selecting_arm_mcu.md","filePath":"platformdev_selecting_arm_mcu.md"}');
const_hoisted_1=/* @__PURE__ */createStaticVNode('<h1id="choose-arm-mcu"tabindex="-1">ChoosinganArmMCU<aclass="header-anchor"href="#choose-arm-mcu"aria-label="Permalink to "Choosing an Arm MCU {#choose-arm-mcu}""></a></h1><p>ThispageoutlinestheselectioncriteriatoensurecompatibilitywithArm/ChibiOS.</p><p>QMKusestheHardwareAbstractionLayerofChibiOSinordertorunonArmdevices.ChibiOSingeneralisbestsupportedonSTM32devices,bothintheperspectiveofbaseMCUsupport,aswellason-MCUperipheralsupport.AsanextensiontothecoreChibiOSMCUsupport,QMKalsoutilisesChibiOS-Contrib(whichincludestheKinetisMCUsupportlayer,asanexample),butitdoesnotprovideasgreatalevelofperipheralsupportorgeneraltestingforsupporteddevices.</p><p>AddingsupportfornewMCUfamiliesmustgothroughChibiOSorChibiOS-Contrib--QMKdoesnothavethebandwidth,resources,northeinclinationtomaintainlong-termMCUsupportforyourboardofchoice.</p><p>Tobeclear:thisalsoincludescommercialboards--unlessagreeduponbyallparties,QMKwillnottakeovermaintenanceofabespokeMCUsupportpackage.EvenifMCUsupportisupstreamedintoChibiOS/ChibiOS-Contrib,QMKreservestherighttodeprecateand/orremovekeyboardsutilisingsupportpackagesthataren'tkeptuptodatewithupstreamChibiOSitself.</p><h2id="selecting-already-supported-mcu"tabindex="-1">Selectinganalready-supportedMCU<aclass="header-anchor"href="#selecting-already-supported-mcu"aria-label="Permalinkto"Selectinganalready-supportedMCU{#selecting-already-supported-mcu}""></a></h2><h3id="stm32-families"tabindex="-1">STM32families<aclass="header-anchor"href="#stm32-families"aria-label="Permalinkto"STM32families""></a></h3><p>Asoutlinedearlier,STM32isthepreferredoptiontoensuregreatestcompatibilitywiththesubsystemsalreadyimplementedinQMK.Notallsubsystemsarecompatibleyet,butforthemostwidely-usedsupportisalreadypresent.</p><p>ThesimplestsolutiontodetermineifanSTM32MCUiscompatibleistonavigatetothelistofsupportedSTM32portsinQMK's<ahref="https://github.com/qmk/ChibiOS/tree/master/os/hal/ports/STM32"target="_blank"rel="noreferrer">ChibiOSfork</a>.Insidethisdirectory,eachofthesupportedSTM32familieswillbelisted,andinsideeachfamilyafilecalled<code>stm32_registry.h</code>willbepresent.Scanningthroughthesefileswillshow<code>#define</code>ssuchasthefollowing,whichcanbeusedtodetermineifChibiOSsupportsaparticularMCU:</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;">#if</span><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">defined</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><spanstyle="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">STM32F303xC</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">||</span><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">defined</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><spanstyle="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">__DOXYGEN__</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div><p>TheexampleshowsthatSTM32F303xCdevicesaresupportedbyChibiOS.</p><p>ThenextstepistoensurethatUSBissupportedonthosedevicesbyChibiOS--youcanconfirmthisbycheckinginsidethesamesectionguardedbythe<code>#define</code>above,specificallyforthefollowingtobe<code>TRUE</code>:</p><divclass="language-cvp-adaptive-theme"><buttontitle="CopyCode"class="copy"></button><spanclass="lang">c</span><preclass="shikishiki-themesgithub-lightgithub-darkvp-code"><code><spancl