From 4bdca93a8d238f6e245b4c154a153c7a5bae7fb7 Mon Sep 17 00:00:00 2001 From: liYangYang <941843540@qq.com> Date: Mon, 5 Dec 2022 09:28:15 +0800 Subject: [PATCH] =?UTF-8?q?[RTduino][STM32]=E4=B8=BAstm32l431-BearPi?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=9D=BF=E5=AF=B9=E6=8E=A5RTduino=E8=BD=AF?= =?UTF-8?q?=E4=BB=B6=E5=8C=85=20(#6688)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HAL_Drivers/config/l4/pwm_config.h | 27 ++ .../stm32l431-BearPi/applications/SConscript | 7 +- .../applications/arduino_main.cpp | 24 ++ .../applications/arduino_pinout/README.md | 43 ++ .../applications/arduino_pinout/SConscript | 9 + .../arduino_pinout/bearpi-l431-pinout.png | Bin 0 -> 152487 bytes .../arduino_pinout/pins_arduino.c | 41 ++ .../arduino_pinout/pins_arduino.h | 45 +++ .../board/CubeMX_Config/.mxproject | 18 +- .../board/CubeMX_Config/CubeMX_Config.ioc | 151 +++++-- .../board/CubeMX_Config/Inc/main.h | 4 +- .../CubeMX_Config/Inc/stm32l4xx_hal_conf.h | 236 ++++++----- .../board/CubeMX_Config/Inc/stm32l4xx_it.h | 4 +- .../CubeMX_Config/Src/stm32l4xx_hal_msp.c | 369 +++++++++++++++++- .../board/CubeMX_Config/Src/stm32l4xx_it.c | 3 +- bsp/stm32/stm32l431-BearPi/board/Kconfig | 120 +++++- 16 files changed, 940 insertions(+), 161 deletions(-) create mode 100644 bsp/stm32/stm32l431-BearPi/applications/arduino_main.cpp create mode 100644 bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/README.md create mode 100644 bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/SConscript create mode 100644 bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/bearpi-l431-pinout.png create mode 100644 bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.c create mode 100644 bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.h diff --git a/bsp/stm32/libraries/HAL_Drivers/config/l4/pwm_config.h b/bsp/stm32/libraries/HAL_Drivers/config/l4/pwm_config.h index 900c0fc04..812e7a082 100644 --- a/bsp/stm32/libraries/HAL_Drivers/config/l4/pwm_config.h +++ b/bsp/stm32/libraries/HAL_Drivers/config/l4/pwm_config.h @@ -62,6 +62,33 @@ extern "C" { } #endif /* BSP_USING_PWM5 */ +#ifdef BSP_USING_PWM15 +#define PWM15_CONFIG \ + { \ + .tim_handle.Instance = TIM15, \ + .name = "pwm15", \ + .channel = RT_NULL \ + } +#endif /* BSP_USING_PWM15 */ + +#ifdef BSP_USING_PWM16 +#define PWM16_CONFIG \ + { \ + .tim_handle.Instance = TIM16, \ + .name = "pwm16", \ + .channel = RT_NULL \ + } +#endif /* BSP_USING_PWM16 */ + +#ifdef BSP_USING_PWM17 +#define PWM17_CONFIG \ + { \ + .tim_handle.Instance = TIM17, \ + .name = "pwm17", \ + .channel = RT_NULL \ + } +#endif /* BSP_USING_PWM17 */ + #ifdef __cplusplus } #endif diff --git a/bsp/stm32/stm32l431-BearPi/applications/SConscript b/bsp/stm32/stm32l431-BearPi/applications/SConscript index 9bb9abae8..d2e48b15b 100644 --- a/bsp/stm32/stm32l431-BearPi/applications/SConscript +++ b/bsp/stm32/stm32l431-BearPi/applications/SConscript @@ -1,9 +1,12 @@ from building import * import os -cwd = GetCurrentDir() -src = Glob('*.c') +cwd = GetCurrentDir() CPPPATH = [cwd] +src = ['main.c'] + +if GetDepend(['PKG_USING_RTDUINO']) and not GetDepend(['RTDUINO_NO_SETUP_LOOP']): + src += ['arduino_main.cpp'] group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) diff --git a/bsp/stm32/stm32l431-BearPi/applications/arduino_main.cpp b/bsp/stm32/stm32l431-BearPi/applications/arduino_main.cpp new file mode 100644 index 000000000..ed2c7cf02 --- /dev/null +++ b/bsp/stm32/stm32l431-BearPi/applications/arduino_main.cpp @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-12-01 liYony first version + */ + +#include + +void setup(void) +{ + /* put your setup code here, to run once: */ + Serial.begin(); +} + +void loop(void) +{ + /* put your main code here, to run repeatedly: */ + Serial.println("Hello Arduino!"); + delay(800); +} diff --git a/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/README.md b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/README.md new file mode 100644 index 000000000..e84044176 --- /dev/null +++ b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/README.md @@ -0,0 +1,43 @@ +# STM32L431-BearPi开发板的Arduino生态兼容说明 + +## 1 RTduino - RT-Thread的Arduino生态兼容层 + +STM32L431-BearPi开发板已经完整适配了[RTduino软件包](https://github.com/RTduino/RTduino),即RT-Thread的Arduino生态兼容层。用户可以按照Arduino的编程习惯来操作该BSP,并且可以使用大量Arduino社区丰富的库,是对RT-Thread生态的极大增强。更多信息,请参见[RTduino软件包说明文档](https://github.com/RTduino/RTduino)。 + +### 1.1 如何开启针对本BSP的Arduino生态兼容层 + +Env 工具下敲入 menuconfig 命令,或者 RT-Thread Studio IDE 下选择 RT-Thread Settings: + +```Kconfig +Hardware Drivers Config ---> + Onboard Peripheral Drivers ---> + [*] Compatible with Arduino Ecosystem (RTduino) +``` + +## 2 Arduino引脚排布 + +![bearpi-l431-pinout](bearpi-l431-pinout.png) + +该BSP遵照E53接口的引脚排列方式,详见 [pins_arduino.c](pins_arduino.c) 和 [pins_arduino.h](pins_arduino.h)。 + +| Arduino引脚编号 | STM32引脚编号 | 5V容忍 | 备注 | +| --------------------- | --------- | ---- | --------------------------------------------- | +| 0 (D0) | PA1 | 是 | SPI-SCK,默认被RT-Thread的SPI设备框架spi1接管 | +| 1 (D1) | PA4 | 否 | SPI-SS,默认被RT-Thread的SPI设备框架spi1接管 | +| 2 (D2) | PA0 | 是 | | +| 3 (D3) | PB9 | 是 | | +| 4 (D4) | PB8 | 是 | PWM16-CH1,默认被RT-Thread的PWM设备框架pwm16接管 | +| 5 (D5) | PB6 | 是 | I2C-SCL,被RT-Thread的I2C设备框架i2c1总线接管 | +| 6 (D6) | PB7 | 是 | I2C-SDA,被RT-Thread的I2C设备框架i2c1总线接管 | +| 7 (D7) | PA6 | 是 | SPI-MISO,默认被RT-Thread的SPI设备框架spi1接管 | +| 8 (D8) | PA12 | 是 | SPI-MOSI,默认被RT-Thread的SPI设备框架spi1接管 | +| 9 (D9) | PC9 | 是 | | +| 10 (D10) | PC4 | 是 | Serial3-Tx,默认被RT-Thread的UART设备框架uart3接管 | +| 11 (D11) | PC5 | 是 | Serial3-Rx,默认被RT-Thread的UART设备框架uart3接管 | +| 12 (D12) | PA8 | 是 | PWM1-CH1,默认被RT-Thread的PWM设备框架pwm1接管 | +| A0 | PC2 | 是 | ADC1-CH3,默认被RT-Thread的ADC设备框架adc1接管 | +| DAC0 | PA5 | 否 | DAC1-CH2,默认被RT-Thread的DAC设备框架dac1接管 | + +> 注意: +> +> 1. 可能是由于开发板厂商的疏忽,E53标准中,规定17号脚(RTduino的9号脚D9)应该具备输出PWM波的功能,但是通过相关资料了解到,该引脚PC9并不具备PWM的功能,所以目前这个引脚只能做普通GPIO处理。 diff --git a/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/SConscript b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/SConscript new file mode 100644 index 000000000..253992902 --- /dev/null +++ b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/SConscript @@ -0,0 +1,9 @@ +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') + Glob('*.cpp') +inc = [cwd] + +group = DefineGroup('RTduino', src, depend = ['PKG_USING_RTDUINO'], CPPPATH = inc) + +Return('group') diff --git a/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/bearpi-l431-pinout.png b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/bearpi-l431-pinout.png new file mode 100644 index 0000000000000000000000000000000000000000..4cae5d2b2f6c2869f257d6ef6656eaaa6d86e7f2 GIT binary patch literal 152487 zcmdqJWmH>T*EUL9C{mz6ahKr1-HQ|4-QC@_MTDqOa4+8A?ykkHK=G5__wzpQ zIOoUt`Th9z7#Yb*_Fil5HRimgT|1G=iqdE(geY)uaA+VI2~{{aglRaqS5Zi>Vc%Hy zDM`cLkey|8+~DBQ`~JROr7)rs!NHNkfh0uLy|a#2J^c0Ovw5D~d`?+II89T5&=EHA zW8NA2Z;O}QHfk~lizRyA_sd(VZJ_C5g|?GMP)4E6Pqsb`jyeR~Z6qrx!o3#fz@V5d z{GA0wpqyvd+1~YcAvdej^b7s_6}QfaANW)-8UAyyzWNDu{GS0F+z*F$V7&hhKSjQV zzWeX!hs5U{g#V6=^FLnxy`_H-RuyueSN}7B`%0J4{@($dJhqJC|Bh%-04)DI`hf6% z+j2sSXw7UjUo(zr{(F}jZ^^A4A(_rpt2EGeqVk^qyQOfU}R{!tC&sXZS}?B`Qvi&b!!FRZ-O3>{uRyqWA; z{4>dqosfU-PrZ+|u)m^ySsftR-qFI5h`};qIK~x=fpp-Jr3x)oAGsUUU?^@J;13GC z0o3FFbM2>#e@w)fffA`um2Gx56&P{<R3I>W{!ta z?qsR!eB`X?l1JSA_yT+vY&9$exUdnfaQ`vPPi5%;n3@{ipz8GZ5geT2I**)2?k@75 z`EYppL}< z?{gLMzMbkC6;871HF~}chITyY?^@7AknsNt1)ucZ{A2jVoM3>PYkf4{E-JdDQWn0j zdudmVvJ>}J(kk=6^Hm}Ldm?4b;4>9c-_`Gq+hpSyZiiERf>x^%WM3YK|kz&7Wf2u_3sAD zU{H67U?Kr9#o#}WSO(rf^t0pI%xb62cQD1obg`&)Fw8|0nEfdRWMqbsC{&UM(JcR! zusQwTecufgD=UyjT3jTjnA zH;hkF?`*;?`2jZ?rll%9K)KP}T%1@G?s8cS^B7FRa`ce8x|x^rkLilTky{Jf|4J#3 z`+A*pzfjc{qWA9?ejZ`Oi)qi+l{+MCKKH1xGVvR~>b=-<^B~``rhwClaBT>k3a2qti{~DNi4CNKBq)trn&8_jYLNG5C#$u#_=2Pe%2A0F;wrMC0K-hKbhVB>qN&!3{` z<>5&pI)nikYN2onX4;vWE7amL@CR9SB+c5CxI!;xeYVR;X;oFA1{ z4Gj)2-62d&mCR|3xY4&aH^RR+L`E{WlE}ZP^RLb=-P{z9`uO^G_BxiQNkYm~W^MKxU+Z|dscv%{J)A9PU>q{?zS!N{OU0JY`@2mP@Bx2) z?20qIC^jD6s@rXN)v04zxzm5P0)TaM_munCCz6_yVj9Eaw0OU+^aRPPt*!3rs;IB8 z4l=$pRrRPlzE7N-g z*A!yXXKt5%)--DUA?}41p;$|6ksO98ur7wAbx0lmgLHp7N(jp6!b&-nnSh?%2V%Q zGB>M0>gre??by?M@R#j1%SQ?0X$48&i%-7|*?fFWlSH2`9~T!_Jl%757Z3Lb<1stC zHgOW_hyXV)k(p97Je+;3DX-!T_*07hGCzLw{McjO^cpS{Lkzy#cIN%dNj2X)JXIja zV&z|abyNxo2>}B%G&K2-ZyIkrc+ zL80hl#I{V*NiFgg3=FK*28LrmbSsDl6?9=L1}9GdLwILDiUhY#n>~?H-iJrGUaPS$ z&>eH0zxdOvU>tKqM2H|-QCT)NHZ~+!s(fx44Fd0213d$w&b(qO$xwS!e7ZK6w#-YP z-px`L1$&c$*ib4PzF9(_jQ(uq-n49K`BI?gJdX|zYXG{(o^^)*a10}hBj!9Ub+|=W z+Q#jA#6iN|`(JrU3-XxY^20!)8Eu!PVLlMjdQtr%;C@)2EUWa_iecE;-BL``HEv{R zc<8=I9x9;{BSDF@8T{xUs_f-8en&0P){1g@r7lY?&jk~o46AIoysGk_BV9AqDnUpg zg8TW|NTeyh-E_69Q^4OwJNON4(DnI>K;p?14Zr{AyppD_1sUK3j?AAe@AlkpwLh(a++bAtcbDhsc?&Yc6rrq^ zGZnQzONVDELPMKbm-r8b_ES{B%tmQ#ylE<|zX%lp<|^pdVQ=HmWavRQDz@26p)4l3 zCi}7eGbCv4h~Uo>#TozwS6xL56&uJ*OjJKR`pw%ntFP#(O=IwL=5`Mn6qzc&S%{+i zhM%6S&ztx*!B}-6CljVd#YFXtE+UF)o2i?pg~Ud28+W@e_(3hdX_DyhT~UEeR8cZb z4i9~8C?8Y#_#tTU$K#2PYRkbaM(aNyVs0s1n6iGViKn+I8!pbx7E|zKk>Nq z+qqGND3C0#na6QiO)3YWGO3z0lB_k&<05(8IwP2PYh9*@FuvH7R zGE}nCV^9BxR0}*BVXWbUyy=|m?p)L63}(}`s~>BB9X-mnX+!`=mI?qB7&eu+acmHQ zN~Reaq?|ZyJnr*e&2R16Mcf;_3Fr{xPg(rM%Un0Ph)TmT?0VsCU%I~Q@jfzN1|w9q zXw2R{JrpKkbE|-m_?t3yaK3f+T0)YMb%Ryxa?HKjAbmJ9L)k{kkPBXO?fnBHI+?Jn zO5vjE>ER*ReDR1R&&GD_SVys>uCTDVs_HZkk?bQ<|MtaR>Rf*`?!k3y<^(I8BTinY z@;8BmxHvbp1kH&7(*j|m+`IDR)O+-6WS3Vk&C>kkqm~Y`(4YtfckjqteW_lJKr#n% zTaH7EwGRo2K3Qa;l(g@+t9WtZDAp2c+NgiG|Nhgsk8PSFQuP~S0tz)p8ZEXs1g2UV zHpGNd(4S!9W8}AfuT5pekl18(bDbv4?X2TcRZVMnzP5-_$OKQj-urjdE_fGN#&G(m zZ6?FC4N_Kp^zN~(m-z|W-6V4H9H@TYbn17#nESZnh1m4+>vUJV`o!85lqV0U>eRwQUuXzc;nFoCub?)P;-gw}5RdI4a^X+30S=)<9-1AB1 zdXV?iyW0a=Rz}#QlBYhtHg`Pe9bK=m0Hfbg;~p;$-f6B~U5pF11J5oC%8o^z9=o27 zy_`sR=kc&p8mD}YNT2r40(>;kM|RlJ>8TM~-#kS;V0{i{mM-zI#T3Igqo)qL?~UX` zcBo3VSU6X1cJnLg8df5IO=VtIQwn4VO-R6aB$1pgni!+yp!9qnb9Nc|se0%B`%H~wjIB9Of6zUTW;w60pelV#GsSAnoBv8ZMDv?<_ zf)y)YY&<8YRKS#uQ`^pd|2>XcXqmhgMEGTd?8xs{z`H;+EmKbaP8RDE5i@Qy8Y*gB zOpFxOgG+jZdW1)O zal>QK=|ePl5IbsSO17H1A=D+xnQmdtwd(mda*=F<`EEA1G&dnn=~#t~%&mtP>DsO1 z51#K+)|7e5T6S)3+lvHlcsWXjJ>4I*r0w+7#3#;rkvLGxH|}!A8nrolAS+94mAxTP z5jV#P0GBnA;aJOP;Bc8aE%PeBZ~yQ!z)XgjNP@u?PbV6&-}$noZ+xm1P$zi%ATz zH*qO;CpwBTY@!(5pQ^9*1B{fk7*YTjq8NSWAJ@NFHA5^dH5E_8HfhA@h*3@#9(_F> zMN>I$X#gyVGUoHALIR$hc5In`1_4MEpyd2oYX^lxByR}qYY5C#WL!5qyp6k-1A)@Y)s|=B6~Neekg}5oPlZ$(5(Pxx;MKNP3`!I& zY`Ref;HEhp-xMeN)UiUCsUzH3zxC<59UC7EXmLIs4|0@A z92?BN8!cfR?DQSz+%gJ!UO18qoNRDAa@p)``0$lhKAo}l=$CA$kX~o~pSYm=JH3*2 z|H%p;t{eA_y4zF=H7 z#0=RGP;fdI2K^bS>FPZ@yF~O0i2={;A7F^FDOK2Md70Cx))&*+6&E_^{P8NLD;u<4*j1S5K$Ez~(oLuS1KZX%t=GP?fsO}_a%Z)j~t zK5&?6|M2^9k%Bu6v^@7?%vHC-BW>7Z-swD2Xh{8 zR^JPLpR;aif4)4}jxdjrV=T7V-K| zV?#`IOI>z)esbH8*`qqwOBryoMa#u;*^AGf$b-RZbXv8~@7zxJb*kJcf*1kruG-z$ zwBGI?VWSBaEd>oW55+v~rxZG^$h}u8MnNyRxj`mpYXQ~m_f1xT*T)=PzBh~O!dhDE z#+-!oQIKT^vbHnBq{%-$(Ja}#K9?=)PvdXM+Jc_jTZS^H2oOK%g|)2M1KIDF{9!R( zF_zli_rk|D*TD)P1@pZ?z<%0sVAHVQ*wNANyS7IPEg1{7G6#lGoANsWG?YHdC|N^7SHQe zw?(-L7epgrb# zrP3DHkLUTA$HQ!$(&*w~Kc4i@bx1#%vzcLI)$^Rv%e8=rzyE<`nuEQh2SMyk%`!)A znq1QQzQss`7d490%X8ZE1lZHw+jlzJD7}alQ?_O8{(d$7+3|>{>mscoQ}`&0-DYa0 z+lFuL=QMF8XE{5SDeC|VmB<;?XSAA!>a_`Sd}G|$pJP_>xH~1M$N|RDj>@_2JcZOZ1gYhWg@+m%o+E3`sx!Fj!u-P;9u? zHdSScAyYQ3L`zp4MW}1v&yVnBO1ZVOPt`(WaTXwc$&k895DdT&+jDih3)t<>`Jpi% zNa0k#!%yro;{J7Lgj3pT+>QCqz@yrDHWt?F%5TzoQt^-bCUQkSYe`p?8k)MIRH4Lm zb$k9cj>DNu5OS(eB(QOE%v7HmuxKJ4js9?TJ_)60Pl#`vZye;JW~tVy4Q+k=V-4|o z!3~?#hIlf?@V(|yP*fbV622<)JL}L(wFohEVl}KCKS5)gIXgVH9%TX2XKMD=*c+N$ z;B{ShoCTfKsU|TidNS%0M!h@RfI7UlhZlJ8;{W1j^x)5*GPF`pMtU4{RLx=>a~AMN?FyGg z%Z?KO+TFohdD#p_`mD_|rosk96)_t8c&m+*SoF!D4YY#T9 z>!*>M+M74xukrJfyml|A(sSaRM0H^OYHfM^cH21U%;@>t&dRa-uu4iwI5WWH8Ff0!8~-~ifC4; ziPVb*`-T_WIPHZlZQsF_VHD<-VhIR$Kx|!wg+!0|B{yb#O9eA>|uJ_{K z;TAYXvTjh}X^jLXCt&x>al4C8?Rp4W9|aaqFlysamExypRI;#^R@f@`o;++myH#`I zR@1XZu9t7Ub- zF}i^acZ#kG*Y zz?LIGK|^3fv5p(-BLFCXIYq&Me&zb$z1a5J1z1)eibz%9ARLO(uL=)R27*-0%FU8v zhQ4pr&+~|yQ6_xx*%njnW2d1L%Trshwdad=g(XPIsfsV-2gXh{-Ug9HQ$4oY!2l%i z24|L8_$u2pTO+gSu>imZTnGxC*of>tH4y6e!sXlN zchgqmv=~xI7L7EpNefQoaqUE1%5)1zNPk`VhJ(Q7*5Ls942yBRZvkFM1E)80HXN4w zcqy(~uPG$J$!pdO^wp~6TvkfN2i6WlKzgJDaX-&gjXAnMnOa?``*)X+DFTk-@%D|b z%S-kU6MJX)K^LEv7Rj(M1O$ZLT?_8=lwb#fPs7SUNmYO-CO|yaAjKKGWH*MoSe^t9 zXm*>vnZSrm8l_C^K*#xYc%=O^txPaEQl*+*d2Ja9;o8sg6I+KyDU;^ntvBg8G^Vn^ zMdf@JR&&P&EckAlmWsv2mS{H|UG&Y7U1U%Ke7`D8lN4Z@R0ylJAX0Xsix9R6iek%Q zVt>XsTwE3MHvOS&?LOjOV~dOVg&bM2yhieF5Ob-K_-+f8UwaB}HHx{|{hC((-%HZrk&{HmC@I!#I@ge@p` z8LzhnTk^KeSCLeR*X~*Tq2crYZ~;s!6~|pyE*psO!zKF`UYPqX1gq8i%~VwUS*mF# z8Y-eq2%;?C-ovisWA%GBtz7%Te*E|BRBDWmhd5T=v}uxZquUwQgS z)7kECrg|=GScWaBf{hS5Mz%4SDpv%K@H|VPE~_cjubj*Z!V$&Ll-BfAeBKN=c7|0`fG=Oa8PVHh&g# z>0z5?SrjIWnM!o`2RN43QotO~!{0Kb*l0D^oq+%1Ro2ac=i1K?08!P#rQ)Guqnena zdI@&*XYgZrl_;)-QJd3-byw{|avk|T*ou!t3(^Ttw`U?q%1Hh^Co!er7#}g}s?tq}K*l0>Lx-3Uy6sv>D zLxEoXwVCZ;m<13S@)esSNbxP0$%!*_cm$vX!+5B&YrRFil~Z-m6#M?L8^dWeezeTm za$6*bO%Ma!9T65D5nVEZ%4hfz=PiP$L2Gq`<}x#V zeI%PA{0B6axd;BoqretL3$0bG65%^JH`APj&8{5YrLv7;rcUZ5RAK%Y7ip{VQQY}b z1aLb+-MiI~Xt5|d%((q`sBQ{HWAeCqfhN#B9>c)R+i|*-?-@F7ID#T}&s#2dsTTBv z$b;K#m21u&4fYC_c7ZCO-t-USBDZoysu~=Aq~li{`%FWEN7v|ntG!Z5{pPi7X=tY$ z>6OEC_RZ&s=9HbVxUDkwn(So-FM5c9!t<4yJ|{7$^R;mdtQgX;_oSvCQwx;ChSe;* z-isk^%T?2v>qJS3MS8E8x@lKz+q;Xd|N3YYuj!;*&IRz9q_5X4;L2di`_@%(O)N%- z8PAg=q@$@*$@5iMKSB)zX61L=+WAQ59zBbgY(a@dAw()^qQZtoV*Bh^kEX)+%d@Sy z8!L4R{1qEh3QTt=5D-F(s9-@8iZQ@DL4uJlc3X9N!*l{u)aYj)l{JW&HO@_KOxV|ib6Oo7 zJ0QFMWh2y>atB2f*iZCFzU0r9HA1C_ZBgM&ko(4?9$F5*x}HV`5UpP|q21q{b1)If zgo4TcmzzE@-_>x$>B9ju`Knvw<*wY~Lw1b((~d<2hc2~#e=juDc!8Zw=7#XxoSvT6WBXU??IfX@a zw}W*k+4);$IA+y-bU2D0C&&CxD`h{G`{sqe56@B_GOR+&cwDr(CI9dP>feH$`RisD4v+MoNw5eB@eQO?`dWWe0!xHIC5&)& z7*ZHw*AnCb{#1r4*wP(2fm-9V!Y>w=w)+%XTcpQ$Q!h6qB3`a5Ot>Jbio_j4m8>zy zn%)jP{0dzDx=OfX!}{TDUwdt5NR>G`g&gl*BrFL}jjBxwiYmqp+K>?YMmP@|EYp=7uSu zU4J1(CMtr8QmS3kZBap4tY8+ynwL24r&_cBXdxvAB`CO1238;a=FV9;5o_?Kw1S~X zrwmdygC09oc)YgCcf!2mW~y{-3FT@P*E_)aK=hRP@U*4 zkK$P7bXfGHoqr4^yhzh_iv&`sC;kzj08Rb)@vZxtN|_uzd%!iGJT>Y2$OYMsP2IMx zT4F8X%Dp@#;l}018)yNdm!l5{_PNmS0~TJlt8rSwr;b$t?vB8%^XG5tc;~TI+Foa1 zjU(;Tdnv{mVl7Rbs|i{%4jp@1^s^u@d&&6y9UL%#02N+B^c%sREZdNz#SMI3Q{Cth zsi2Fuk&Z^CYUSs11bLT9XSx)52Jf8hwJz76?%o%%-Z!TU>|56(M(zI4?*bf3*Vpcj zeh*IkA#A^{B*pSHj?VPjO_?~>F!G$~=!V&=)eQ`Z!c25>v}7UJ(URh#FR(h-9^=9yX)x%M)C}r9Oi9#p2KUsziyJUOC zYSrr5drsA2GnVZ46Os!Bj$$GZ`kiI<1qnItdKA|vV%*SEY#Yk~%LFGFI<2w%b8mbfJu9FJ&k=50J`6sr(>7lFCp{Bj;9>Ik9p7 zLh$j)Lwnh z2DuubIC+*Lz^O_3Pk0`$?8(H}p;06=3g(|!=(iDL?`vsf#B5X<6l8-bAG15ZF=Agy za6sRQeKEB$D=XW2jxr}->}a#v$eq#u0w9GZ>65#X_r3_$g z-_5)o)|QPF6O5It7@rr|x7=qMZQBf!`R#KLtCwq|4b!FPC52oE*=#8I&-PBUKXkgw zf1ID&jyI)$Kz)#@YudfG)Qhcj7pE`TEDl77J^xtfwf-q~M)2MlL5mj+oYwULOxJSn zE~SDV>;S>Dv+Snuz87^fbN<_F69aAMKPF9j^dT~{$`RY*!RBt zA1=HlM`LP*xpQy)gLdEzqXU7a3D7l^e$dU3- zf^IXF3Gcwb&pdcTZX6(4k`0MRf?B-?-0fp>A{5?hdc< zuPSVFgqeV$GUM-lT20lX`}*gfq1d01UQ@)FgF1Iy!Zb0D(LC)BlruEoL6m@kTNWjF zpow_mB;R^^8=X}aN(vB^5DNII-P)sr`AOf6uueI1h`Ev zpfHF{+i1T&Nrkym(eGB>wxPAP;zX){wIg6S4I%5eSh~f{be!w@Q3*rciIgw-HsSa| zym&C02|gyLcyIMB3Jm^-CoQA2C_;~?NlIS!fA2np5OWYW>bBix@es&bkW$ctc`n)` zn-uG8AzV+=hORu#ZfQFK%H!BEH9#tf1k`jcfni-6zRPH;k{khz+Y|rVf7|RD)Ct8ZNGk=G^Y$i%T4q- zPm0$$)?s5%1TLUvR-6B2=ZHS-xC2fovur^}tPsum6MujWVuw3FPQ0W}YJm*obfoRPxGGo}V}UVi{#=OcPm$U3EJ? z13-17&%Z>3Hi<5d*KTeu#2;YAFj)4Zn1@e#9N(Wm@BQI<%V@p}TDIP5NWgvx=cRAB&}m+;pI6{>`AfU)Q$VX7X)Y4nSAL}62}?Vx^uN2!1>Usm{B;kFMJ!Ob+7R*sQqp>lc?>R9;Hu9DI;d4T7tr6 z&a3%vq3(EluX(5TFHOV}(}J>V=hs<+$+3OInkK2DAuTInS7%T7NPr@0DQFg%t$Vi} zMlVNJ94ti<;mz)6kMqfg^*~QbO04GkGygnV+?`}Dg*KB%<5Rf1MTJ2rN%@5;I2p6A zvcG(+59Y=u%(|+J7)M7&Ryms41CF`my4;eur>v@t8R~zOk(JXPsNc#T4JAh^(&4+x z{o830F9|<1s>r=wkark^9~ZkZX&Luj=DEd3!Nsm@RkLXP@$s$mhi3hN62;tuqoZkS z&N|D{(j4yCV%i&Rs$npUDwHk*)a@jskeIITx6EzxUTizFj~O(D0L|RZJb57iSXkC? zHrdZO7gzc7@T=G0ot%TLZoX`i~5#%1%xU>~<+ z;|@Vi^K|8M&$z3+w4S{#-8{xS++a1ku_DXkRtOL!#*5GUGIKR9l&z)B?$=GC(NH(Q zWG95FTBa^;MkOX;1FBWLeV!B{jpyOwYFo|mrmRveOJy-C-f>Ddb%v8?22+4OyU(|P zqH18}3*WepsPpU1yXS z_df)Nx7!`Yda@E}oSH?F&uN)~*_kLs;p3=`?opS1!^pv3um4n(3it*pt4`Y~n5x3u zi(Y-BjLE09U-OD_H>Cb|`|D3Z<0RKZ-xt@P*2$Pu44x#dA zTtB_7Y2~DU7FVN9FnqhE{I+Xq%;LzEq;IM}h?U8ZqPy5ZBj({X;La<Ex{Mp&@JynyR4pYQJ$odIU;w8s2?z}1?MP0dqj-lS%W(h)!tXK(S&PFA_BszEF!uk$9+Nnh@em^av z>V86ivSut4Althov{)-8t}H$kLygQNqpt_bA7Vq7^~Ua`JEpBhGwYlq#k!4}ak`!k zqx*L?U{r;X#B6Z|=blWP#=&i&`I&l$hq%Yb_G94S-3~Qj?Ckt}E}x!OLT)@Jzh5JB zx_p&Eoo>P1dCI3(%}h|N0emU~1Mg>+XxE=O$18IxFe(U%LIh$DOf`BrzI;sVW-a>W z(c-H(Oc67!BARNhIEV>P5$(#Kp{b*u%5a2Oom?oRR#s;1p>nibS?SbdlfCrLDML2j zzmv@jk1)Nve;W!Uk7n=rN*)OVw>Q!c(#!q@Oa+TqbsS;9{?H9OqH9jy?02rNxV)I3 zqt1W>c&Pa2oG|2eKL}Ud_oqb`j}`vt`*M5s_4!J^3k691_|y@S$0-G$=C}Xe(Eq{+ zH+#J|iuUECilzM!`dH8(@zxyB_;_zt_ndk_0j+!4O!H=tr!nu zW=Tt!Qe{tol^;}Pqv8h&PU$Eyz=_GJQo8N?hIT`S8?gM}th~|Ew=?AB2}=z>5=4P1BO45mb7fEX3ENj!_OIBc!C#ZX zd4yJ21B4x2i_ zzB0U13QYjYMS2Tv+=BA)qou^U;i}akr~;1JPH}2TWiu_UYWrh3S;Bs=B-JLJo7*~O zP2J=(g`;=1Lnqq%hY1zQL~8sVB6}YcaP?9-V4g=Om1@)2NefX@rR7dC&zPJv{@sE5 zkF)7tzllq}wpl}=y$?<87nf~%>zq0ja`P2hWn8Fki=2UQ@{N%183LMXEf=$Ruuh2a z_)uACj^Z?`n6-P~hiEBODUM#}GIRC~A{URH8u*>lGFt-epYN!f|m&>CR1x}h-MwZsqn+v{70 z)%&qbqV-O{UW0tP>>z(@?_Z;_PSc!Ev(^3}aG{a#)lo@KU@?qJ`yJw%FYxrr`5k7G zsXr%k9|9<0i>kI%APS?0T`^1z#;2_EYO@M(@q`uI9(~;=4=Dpa=M;jxI+nG~>(zCw zb5arLCr;vh%!=7LN;Y8;)s@6(iltl2-S_gjU2C~BW)d3`4-#h`hS4y_cl2>INR(<6 zpQl}8z=`mDn@UJ7qA}6X3udLz&;(QfN2C&E0yb7~Kx>Dyhsi@~+-I{l8TM!;yBK1L z-7+tefjSAc!YT#zr5IwIL6gE!=5$~R8*1@@jcof*I|=2rYbkdeqU`Nsh7IoBhw%aT zk>iz&Dn{P|!!;@Z#)JuI}Gj0<$1up^f~UqPbLN zL(gVLWsI06EiX`|C+DL&ftPhNC550}BDdcFv5Ps8fV-FWEz!9k@5{QP1VTfG6|%#H zIX-89R(4_s@3P7H(*kYXFC|psm|h*yNkyQDX*8CZ63VhEw4x^8PkI0HF&8dDZwSnVk)*uW+yjo7 zsK-=~&et}q`i&8hMS7k5;>7+1!@se#;}i=R?ZI(*CKbITEOg@1@|`Hw4ME&5=R!Lx zSkxMAvC>c%J?*NsI*SFLS5Jo+cRSyuY{kIlLO8a3jOLE87ZlJbY!r{wXVY@sW$1Oe zs20n@BytLA69?=b(`B=uOW!JjiJup;jtpW|19 zj1&~O2E1=`I>sLl=daOXg@ihAb}c?M83vQX3MBxLz*=BOL+zM(?KP|gNy2yjXa0q{ ztF*qO$YoxDC?wDbNXS=j6`|<#lZC-zp;noS5ItAO=l5!*69~+^ak%z-$q1KOC*4S2 zR%M%*3^`cYu0cE1v;9d*&a7k6mgv`!kc;)%e(s~Es0*LMBoc*T+5HY)PQBIsv9Hy3 z(954TA4zK6N@3hs>+5jp^0^dE`J=OwwU%A9mr`l)E|1~;^!)=VL#F07DRCb@2XKCN z?Q$qLhlu2&Lf^|Na8kqe;g$2%BzA}UwQuxjt=n)W%i}YFUn++HPwvOk^;r)7t-HbT zAZpq!7?0Luf3B$~&)81wsat4yR@VW>8@dCq5u@h_xtQ;#HnF?mI0QcJhRJE};iOD) zJ{{0@);?s%`ZYRL33!a8r;){m`tdI_aX*+DJ$1nfPDu~ln6LmwvAR;BBy7M<0Z%wb zu|!XA`SwKQyddaF)UsBZH1PbuDzL$9ux)X1(K5*fy!7rzGRKtQRBP?*`hn75D2zS@ zV?xO#m@{Odwu(_`(b+lT_Hu{|iPHuKv|kj3+r+Ea*``jzo^Oc$9riX6tNJD;>hd)L8)r9Kg31S3 z`!VR!OHK7K9vMvtbnGO%Ro`GP>-Z{-7EF$oOJM8QrXU}6P&)Cbn*@a35c-|a+Hs*P zzyi#~+!$?!5$yq3@Tfgd{v4n&w{ra65vLgovQZwfZ6rCp;X7 zJMgzk=FKK1nLh0`O@d#Jq3(06cs_GAgOP}#R(^ws_eFn@j%i>Q?JM--r<)#4# z6XgT|eKZ6E533u#dVe%!Z*#hL^SK5_R34p!5NcXz(7U7jHe45(&l9GnhWT{{*u#^c zfX-9h`+itUf2~8P9Ry_{pr9zEv;jh4p)a$Nw3|D7GU^R{?-K$5HZDS;)uzUgqOgY6y zaV4Z(qBHAxy>JNdsUO8VMn-aZHT>0-UURgJ#MYoHZrT+>NBbBFBL*!H72>NJ8M9&& zV)IK)34eR#f&H|4dL^eyqbhi zBFBy5U%!rt2?&^&86dh$NO@ypRYro>?rLtsq_=S2Qu!;m}G#0#yriNLA6~dFSmQsmRpE!BX<_L5Qs%7V~&lrMoQ13J& zAh>WwLYi;Q&{aBPIj(Bwp+!i_wJ^Ut>8n`I(cVQFDqC(_={b0Jn{2TtG_$_G`~ew} z8kA2bTc&;xy9czY(scSF*%R`HSxXC1jE<3(MSvC-bkl6rzS4^K^CnM`IhRcl5}+MU zFQ1c70pNX-ljzCo?lfHgA`K(-fW3>r#RNL3Bx70jR)#;$+&sMgNOb@}mV8$b*UK5g zlRGp(wyXtrE9Nch=;O_{IQc9{zs->5uRYc3hlbI%?t_eJ&Pbb+E#jLuQMtpJW z!`jRW5`dOp~rlp3$(aDZ+&u-BrwBGkbL%F2NR78P^rLmOE z>e|A*@1GifBU!M91ovt9vKdtxSz<#nOsBgUpMqARJ@JpSzA-`zsOrMnnj~OJ5VOdg z6^H1HUzqQJ)h8-s-n)On$*vi&h6^FN= zEj&9dOE}&{kv(l>WM4p1()5Dq&EgFj88P7!d>7-rPRk!AZv*cJ;yy&gf3sbViO9X1 zY3jVIC6K3xT?AmD^k|!L<|I`f+GEp5@+XI@d{xG>8aVqwH_|-onk4vPbc;Pp9n;Ep zBc2<<^}@{#1NLw!Y9fKTY#Zc{;`^!}p8-X|HlSoWCa%P^H1)({8=7g(>B6he4PB;y2wicW}8cR8 zk4P2OGe?Zq_TbTe2rJ45RKCQYZ>2UL&F$SBta7rZlpB4l8sssz#G!LdOPKA=-n#}d z(;5i|{|`-P6&1(UZQ%}q1PBQp92#h#ae}+MySux)OK|t#!5xA_a0qU}-Q9yb+&cdl zmj_;GnyzA3)mn3Xb8f^H251BoHMI)mzzs}8`sA@QeBj1BA4->b%@LAlLLNtq)E^R1 zAa(<*-C=11XTxpaxC3@f1`TVXi8rlO!pw@hGRpU>tDr3iFgQjsja0P*Q>O1XyVD?o z^qDp9Pb`JE=ZePCMobbfnxTk}!3mtn|3q>PhgGCKR94eMfhBu+^!xIt4)+trk6LI_ z+2s+Z1O`)@GgUkoDw(S+`1fA$@4+>0)~n#a7OX+z(ioPwY0?`sW2_(%0iVLW1*XHk zp}Hk9^(_m_5wi=$JBBes)(j@V9~SbQq=y`0AR3fgS5BSSq5aUzAAtNmDW%bpJ|0`a zKtcIcNQLUhaOw@al8S)+A9X9`Rvgy8O-F8`C8mJ$Uvilhs+591CCdeERY4$mwAtii zXA{ltL2y!f`d?KBT&D7|J)AuWiVxj!qtH~G-IPZs9*xUW!I%j$br7hOoSyDO z+61dTqPKYS13Avg>s0niYSllmxW>~??3(YT82aZP$gN+%$jAN-gpYAf{`&BVn?I}* zoZkzDh8VuoT&)(_qG253~95sQk3y}R)R`y?P9Xrc<-;`B||5SQ&z}d1`&(*Dou*aZ_C=}2B7)!LO zm`6eCy{bXN4zX}f9jtdlg(z@0n|;g}$9kt0WeKa_!wwq zqL+^#gK&wsA)_AJd7~~}pTs^-2PKP%-o_v`eepO93QWr$CGfrQlZO_f_K%*}{I1#j z8*@q)m)CIyK@!A~XsNwe#UG{P%oYIo%AXVdN4iH5X`Vn7l^G7*~`K5EF`+p@s0Z8qQ=HpqOc zgbu|2i$(pl>ohLzfK$PpQ2V|4=Sn)o^%IR1*rF*FEY`etAbzw$V{me`*rKswLP6k} z;s*KDIv+~7a9KHE=BKv3)vkhtpE|1MRWAij3XvduU`Yjy-^S~cEGtX<%`I17UmrB$ zLy$mmuYe-l{xr-yNb`=kfu$;}N6on%)#KZ@%!Adrea%|!UHk0L>LS;713hqTCbmtm z09A@Bf6Kq9TxFxY(Hk@v8ITwt^Y(kJ)d#QCa7Xn0cW?D)A4F+NK!vr^;*y#E^mSB? z>JywNaB}Q3jOrG7uMXt^>+yUnfgL=oC^gk^-Qvpi;q=ZtF@kIWGBGBy+6rMqG~&wC zKMvpfIC@OuNHw}j_XE;;S>#nt*)gSno>Y~eU8nD(dipuHr{2`OY42)$<1;D@|YP-o}xU{aWKR>Fyod@gj-JRNPv8PCqrP68qVJOSs zX#ie>(aic2)-ugT=kom19p77GN7nL#_3dLcnWtZiKY8wS7rZFd=d-0gWS`qszoo^T zj=uql*9&&p(9~`e-s4c4L^u(h+TNS|pKZWVYP}=Fg;-2BfrGy`FRBXzS`a z%)2#4WtL}%$CGw?Ti@oo%|O6#+ceFc4bwCPm~jR9=W4tr(ct|$k2F9>we?QRVoHuI2xfd)V;B!e{q z6iWsp5%hpZEF)b=W<}WwM}er)WQRFjHmM4%QbAF}_TiX_K$K^GO~4O`Bz%myRDFGR zhypv_SWE-lb_c8=n6Vv+OddWUs-gd)9JR23kHg#g$HYH~(6Edn>yRaP`mrX*Qv?`i z%1O<^`Dd=zG_GPPvrL96)KPgOWD^_w-npssM+)vUu?fNr(CwHG~X+A*^K>nM}+PTVBE>W66o5HLa2uR4$(T^T6 zA5j1c$m|(Vzb2Z(#fXu1bicaONGc|c9nNJdba=X#`2At~GYAGp)mkoXrLNABZb(wo)Xy8)0?~ zX<<@%-wl7L+SPMrVuxJevvJRy6WvPWg`s|5Rw^@`VesZeN#1YK*B3@3i(KWHg#LRD zv(tAsmrwZP-6)CCYm6AInQz3b83=v{sxkk=_BS<5gr1o!wOF~FO&8inlQ9x~{{e=y zcdGP=4;n*#X{D4uHgEe8RFHu1_D`OjohpLlzo&<3?UIXUK15>mls4X898CmiKqp&K zw6gu%P#c^A2AM)a!IhFjWF9tRu%6%cm^ABExSaQjWeqs^$2v?CR(!U&HI&>j5#y93 z33l7?^1L?zQiCw(wvhTJo&eF5Iv#exj(!JH%rC9Et@&dQL#AMprmB?}JSj!9He*i3 ziZaqyn*fV~6rZsh6)9jZtRHNy$IOe7DvUseq7$60sD#33n+>0dLKH=comZdp#rvx| z@f=a~=YEQ#JQ8+6C_-9xkqhH@eh}zTpK1wftltqUJvLWT4$qhYhC&RjyRk+Y96aKn z6CC5f#NZfiCGnV8^9s!{meb;A7PWw;3Ap~&Y=lMY4Y!w5*AIS1+9hw9D*9tib0{a; zj>_66z#x2Vp_4{u_h%Iw3{Ns!uumt~%r(_=rlVc-Yi^?7czz7NC)L|;Vm+Jllxr|} z*{$Q^_}uT!&5PCdyu+l|?$mpecl!P=i}zx=nCM~Nt-Y2*@AU_ktm z8MQmvX#IU*nb>$ypU;T!Id`Ps621c`|JPW}uH8>8frJ8Wn)&vcWj_)SDN1GPW|n$0 zm-d5s@^BGS;|HHm?-pTM+k}y5$0R`owB!uT5X+#cqETVS?zxSPSAhV`QKr#bIQYs! z5d~?az9-ikGt#tSzmhimT{5hRXx7*md?Epcg}S9}%`;I3SP(E@w`68%wgb;#HqL1o zf50g$yhq~mc6Qf4=VwhP!$~k6)aH&H32(b330GuIKh<5|<-_4;P&bV;VE%f9IM1uX z<&p#>cx|iBb89r54}5Irl7{5ZVPJKu6X$yc9LsWMt#!V26^&`_IC?O!e*kU35r2(b zwwV)|=h()ba1eUG_P(|8GxBXBbLHHT0<49VWl0(@7h!a!HT%@`WXNW7x4CK=HWG!g zWAN;m{nunLJQ~t{2JV+8Hnw;S7O!qY(Ml8MM2gdK<0&7Wtg+|;_LQtv_lG<#Rhfm* z8vEv!&61|p{E`A`IyDB|N=SsxDeb_Q6NJ#fdhJ|8W^K9*+2XPzQ-Cv)B||=0TAG}K z?f#{ipKrc2f3DN`*b#WCxN#&-me`(kN=p$-vGpyZSBKB9X2`Oa0Sqr_&uoA4mshW| z$#zaVe=$#<(F_se!n}U--#d(6Y1OCij>Hj$<}~ile>*zX=vuT58abfp{Rn|zXvVaT zvSN`TbN=h*`_?9rULz_|(ul2v62ADb8QTJzU=cvJo!Fh=koSPoLGklKj zZ&g62T^Lcbl*KN91`$9>sw??(N|{WZ1Ol<9UOjz~!{=dUUI^WG*HFpQ&Ye1p2KoE@ zxexR=Fb4PR*&oV$#mw(`SG6)^?C9>!o+d3~R5LlL5Y)}DVEl?FRXp9jp>AchoZaqq zuHCYg-FlXw!)H~%ACMtT^#gZ-3FQd8*Z9X&*(e@N9(ZqyLp!83rSFdYFtsI4#l8SR}J;4Vjw$ zhSADe>UaFY0@5*%N4FahPtsesFNHc1j1XpCs==tjC)Zn`?+aFW*S#J6z+B_Q)s{Ps zQd%@aM{ei;6QhiF@`&mhA|(2hw~E(VH%U`iB&;iakFFhIw1OmR=p7UL`A?CLA?{FI zi}U#U0nrK{_F1@i!jARP?w&BW1q_HP%evLH^7jR%x1gcBPdpM@iVnP0RmLG&r3VuON zy*(dq{gx-|OlS)y4~BqcbT9=;>MfWlsF zs;fS$yi6Zg^Sx~xbXEdxT_O6#%||Aayy&VLYK4G0d3DSXP0|eGC)aBO#)`fC1{S$F zWjeagsZ0DZBVXO2jT1IMS3m?IsRlU>-# zVq%q0Q>>}l!tea>F8y^07Q`@z%TvxB^zlP0tMf6{b&BVwsxH#i&22yPg}X!_pVr6k zD<*LJ7Tma3&Q9b>ypKJT{d{buq}v^Q@GuR1SPyS6gnAG+fg%FOV{%`Dwo`kEz*Vr*YvYL zePU|kT0dNCqr{6`Jvqdlg{jqbs^M1w8`>y5f{>-iO?qw{aiNSKu zGgUQuAfJn^di}baYea4RZqe_df0W~stF1$1hX7)qS;+&h~b> zl%p3GB7{z)G9!DHq*BkqmZCEIHB|*Llzv63@OascNh$IodN>&1d!knjwHnxS3B5go z1%>7PonCyMe!KTnka#frFWD%T`wZ`3x#KWsGxzoQkruN#x`t!5P^BTaX3{A1c8YNk z@CJz|z<^L78Y*19d-jAJzq~FYT1Qm}I3g#Pr(0ZJ($U3`FY(zX!#3Sb#+);z+nuhK zHoIRrKBbQ7{=x{`NXGKJse5}?-Hs1RfW|~Wwk~TCV`l^QqOog@ZiTlsf()HLva7GO z)TJdyht>qR|7vNx&V=OzMvQl7T{J6wpF-|}UN;NN&nk18pc&)OXIOlXeaM}wvvZku zPz5WO2Bv-U&;2j0jf7nFa^z~w5mF!!3M{Sq@7nfVSP2CwwN)#pW|SS#6Y@qk=Zf`T zlgr08mX>RcM*DGg(Dm$*nyf4xKaYoGy_dZvIp6DWJMYtSL=oa9+kj=1W&Dics>`#3 zNaQ~RpR$09LX}TJ=T*Puw|L?;#rFGc`pg#hMlYe%^RS8ajXSpcAR7UnmM^JBAkaFh z-Z?9M?w{2WZ5RsX=bGHBpmC{~a=JO}V`&7xTE9C`6*w~z9~%4)#DG{gTFXf1a_(xk z_+mo!(W&T3dc*kVO=Zd^X$Mo5Gaz_OFi=-S%(-c93tdckNv)2oddn_c1p%=WzfE@T z8R7~S6iPVY1iw$#uGk<@8k8)4P}m zrft&`-q~L1UTW4CYWfuNu3+90;HWMp7v3e6os_NFv>)?!o-KS5yR!91fyF69%AU=h zObocaTdIqv*)|ntfdl`$k|dbPbS`+HAqQBJfv;fT^O!~>MH zpN$wQ^C@Y8xWEMAvQmwloY{sBY9eMxxMBgtiN>kMzXmuEV0MhNL`(%ZV+4-uxv4_8 z)Husw#%abS-0PfwPLyY8`7q#}@8b|OR8^~>=&u%z_A|;-_$FF=)?ELH6w)@VDt0qR8Y28GtUu?_0b=^bLW-J z5LC(w&>wVLnEyA>|Dc!l(Fn-z3M3Xv7SO36PZIX6o^Z1dlc_DTFii$(+=Bb@Eo~Y+ zbHsldgk%bIV=i_likiveB448VQSj5QPBNt#K6l3rMy5I^w{;(sBQf#m%(u9bmMSK% z`tcRgVJuVI`#5mozr9Qoi5b-}W&JZ@wrN_fzWdu7^uArk=8Kzyh6{lx$~eh{S?BZE zx$kMDHJ#MRj%DQ+5rs7E(#gZDGs6Z^>WHbwJKgnm7atFotZrj~1B8!Yu%wMa-^de4 z!p&Mcr4&+_S)RR^=X>7E>3CeBY{DAUP~Nh~q*RvHZ9cTL`VtFQRy5}P)dM~uoz-dF zXu{ic`ssY976-v!M{CZ)`O)IW$)Y8*;4qf^X2=}!9Sohgn%63%vTr3(gPLo~D%5M2 zax#6z?)$Y>E1A(NGkwi*!JhCRmFC*iZ}Zg?e)yZ0sWlBtM`1LKUaqB z!i>9Cd%H^ds#147?&a*ct)C6*77krPIfL5wie zY=0N%zh*vngapW|I5+AHznrdq_ddC4oXF-cB7%OJ)IL5)0U2QPop+A_LV4zUpn%Z_ zkyxqm&>4$*Z0j7aV9KFkL@QSIB@kBI5{t7py_YG|YfY%A!maXQ?+m*VHbzJt+vP9cxHl z(IH_PBxy(0j_HN3_(kQi%h}%twCnHzmlj_Fb0b2jlw~pf{h?uFc8z~N&{@?bDk?#v z(If?J6R1xm6{X(6OMaYQ%Ua6~61s)ko<+b=-EFHLU%!pE5&9U4*73ba{e8FmFR~v} zJCf&=4HI=aF70gig)%Mwj<0a_mZm#IbuRviVSF9=jGvkLAg8DPcr{^Tt5;XFyIwq> z3u0ZrIUJyK{R8wwenlt8tLvMR%KD7@7@`QUfyCeWDe~T-!jweLjEl%>$GivSt(iA- z0mop^QB_}l3B)8zB-wKS^6Xqvl-C9m9r+Sgd*&?NrC|ZZsF^!_AQ;pQTShy}k=iUC zg5d}g*v;@k2>v@7yr>a&^da@l5~I$OmrZx$H=EKgfEW>i0uwOlFd?8FLtQDUDW(^H z8K?-ap_HOq`6+Vy!rjIRJnWg#U?xW4%7b9lTlc|tq{D6z4FcTHPts$|gK zWf&@;VY(Af;ceD&!}fv#QDA11EwZFCzr$du8peU#fs>roN2g#vXHwB-&IQwg2$a+9Xq+(`3B6`VgChl&@Us zV9otb6~g=#Ayio4I~ZF4MKr&%EQ4d_T&6GqB7uB!2S^t1fyD4V_A8sWqd(gDhe|kD z)#P;%wF#gRxzLE8P*+!XN~B)P2Gv|e;{BI;!ES}@ZDm{=`LI|6UQ{|Z%$`{;?VE9 z%zrThi8I0P{NWRNfKw_Sk&>LGb_)FZ-(|d5(aYgafj_@y7_Dt_Y043vn{zC>?`%YI zT!nsk1dP)4<_}cG%R!s>4NqU`0|ayBp%`R@6C9@y0d|5fS+eDdm=QRb&12o>NP)!I zL8$mc%NX$dD5Qqzrdzf6Ab**f?!CzcdF>6@1~F=;zr_s-*i#tg5+Mck%pm?< zq_&D;Lg36G?ho+P5ri0MiYZxMX2McC=m{o3B!xtt@&Or@DH#hSfF1r0{wE|N4ocqp z4ac_Rn{(Sb;Tb~lz?5XGqUq0B5nT8H2HYT2>_BjopaWb0HT)fc$e}!LKdMfes;wdl z6%6R7Bco$JcMkd9)Vv^=0g)6tDgi2K01dW~YKT&rZKuROLXv^fL&JZ6ZH-XHxUoJW zT$rw=ocsxU#J4#BooOFs=}7jy;-?(toX0%{TJUwL66}era%0i$&v*okbh@g+w!BL& z72oJ)Eo_TmT^6Njg)X?O#*<6BjQP>O#TLg4Q!Wv)j4|voEyXm#3K9^X-*%+1X+65# z4TNsxfdijg;}ia>McJK%WkMYTZDLsb@>^zpp-38}+4r~hW?WMMiwk9tcLKObA>eoL znM}0U!6qMY;y@Y315INCX1>4iV1?9(FVG}=I0sBK%wpY1EA1M|#rmBb_RlxaqE9b2)oQ$^g^#;D*aT&6uX$eWgw3Rz^+& ztFzb0Au=*tcC<&Q`IQh)=kClZApQa=5I!Oo`-8wXvMSPmd(82n^|7_haDfsEtVP4) z;-?hJJXit$f&+IN&+CosjS@W+ckB==(;2Obm@7rsuTcAz%*QOD{U;k>a?^1F13I{K z-G=2by5$D(i(L&pFL7*p?`MA$P{0oHh}q>BH?P4=RqesDKV#4$U@eYpR`$KS!Xk(; zKtZapj@f?*2WEi7WtMxi8mQq>Ho8w|VRi?D9bgQsjQ?i=bYLZ9GFV~@Y->;BLyHc# zw()$*blP3N>U|C=X&x#ziosfhl z42ClXjmjG}-#-ilbUidmcM$aJV+T(>FfZU1FxUG81WjB5y&h{k*M5l;KLd6kF)u|} zW(l35)rd2Cn&*VTscL!TOf&v`isjW@97LRi0%|k-%w~_t&+uJ83?ifGS#ukSez#9TQo|7aIazS7tZTPZ}hysRY50?(ptrpiC0!H$gLk;N0?cQ}AH986 zr(M1$fXv$PB=VBNfy}+Z75cG6JbHp&B%@z8F_pW~dju0U1JL@NGsQsSD3|R(bIu=} z#hruUY4#sP4RlIx1@BtRMfFOjlaGBueO5DCZLVxwh;m#z@C#|@6>-aMPQONp0>z~6 z_9UQNw^%$&D!??1)-rdl)t};NeM7vdpz2O;ws=e$4=cSex6Cf#{#VyKW`|lonfGhS z_7uU<7}yiF7PjSP(Yo5awKCKW`T2q$UBV-jHSyq~5m-42oZgS;BiArBW5 zK0`{Hx$@tpkN4k!)LGS-jBfXk*Irg9e8tgrwvyebRiq_6W>rQ3?WJ5ap&&a(H6n#p z!{Ki5FMns#^75(%lh0f*r&I#_7M}PYqc3Xliha-|EF~NU{Q0A5<0~Z?;L(xCzObGl zQC#mCB<-7$ShQxY+h%w(K4#TqbDvQ+SZ8(hnDcyV@_3}Qa0xTvlsIdacF8|gkYNF5 zs|SlJu5{_AjW%F|7=Zpv0pp!Q-`<1)>LPEMOqmq7Gp;bI*zDUjK~AZ@pG52*>w~PHG*P zjAJe+vXfsz2TUIjuMY8&AQILQ(Lho{qywFU?oQVy85ICKhu|GX>SGku=Co#Lwbhn* z`KV1>Q7q5b_d=~Rj9h44bS|LtpEW5muKF~%I$Miv#+H**&9Zo&M1%eEVBft5JJ7h5 zx9!RL?Cz#Glcm@GqO{#$%D<>5JLQtDpr5Vo5iCrvUmr;b zO3d)+usN{j?0&rag72|uUSdSEf-{w3Nw3k5L^e6~B>Cj((aPq0{(L68Zm@nWH}*GK zPWLTJrlxlw9gO=h^+Tlexvl+NTjl zqr;RY&8?t|bPB5oH4k!_YI$7R*3Jq)H@%6XY=VhXY)%H|Z6Y&ssfLG&Z%SWnN*nj` zRWjC)+AmtzM1&Bu!%Xh&yDpv&O7!T6l17B!NA({4ONHM+!!;%~2VyFtCc6}j%lJ~N zE33=1lWX2vX6tWr1a3V4Hn!!cRTAeVvGH!$@Yjf9Lyq@p88xazBfo^Fq;K2fOXx@QyJAOnBC z)8y1EO0!*mF^jeMX-PI@zs27CdawgvoB5U(@X6&T1piXNCWg$&f0K8lMsJ!AaQhqs84W*mr&FBFFVCuk)7ZL{R+F{ zrqe9eLY+emojgbFfU9(fWcQr@2;SJ*sqP4k6jdA~jT(Mr(9QzjU^LgP!>@%U&uFvY zS<*p)x#`80&lJx*8NbU3%WEf^kZK;5E8rLcsOYa#4iLxRhEhkOH>JVtw zb?|;KK(wBeD+|{+iOr0A(mHfrtRqIq949+U8rBqV)G>1*RqY+f0tF$?bPgUd(au$; z*7r`m3HvFTS4*Pbj1PIp_!E}i<~F&uwi&g_Gbvj;rA?FGgY;nm9kq^EjedHBllS06 zbH0y!aVd6I!!-Td;tWd~15Oq7Jo&$cGa(}hwBXGi#@{dTAQTbecySbAJc0Ty`90H# zgWZ3qi)bYeT~?YdXT{6_4}Y4~cMr29;~~z`A6JGM%5hd2+J>I2<>=YxSFJ&$J48 z9K@Fn&cqgBt?&;E!4+RUR zDHT>+?(ILt=&1((DGh=uSXa?xkebwDs4fUU{Pq8HurMQqLL8m|2_vCLZ2J+pyCD1} zb7@$FQdzA?sTHTcQdKi~z}K(BPff3cNw~Ds8y6!0^ByVnE%N+VwUZ6jwy}L*0|xrb zXJ1Jf%1TK|p+lUr6(i8 zg9zRsLEx~7%lBR%08J}cCR{IDAr4pO#`^4n04K(ilp$pF{#trKaG-!BsYAP%b`p4c z0JM*GV0%lr%f!cieVbBIQ(@5t1 zm9WxRSTSSKmLla(knjlv>j+@D_IHs|8A@xCV>htt-h&nEp6{T?UH#vVC$Oc~WtSg^ znQ}+FvVHyX^-d?_%A|f=Fu-6{Li1dhqlkT$+fUCMgcty=3&9UP0CURdaDhK+#J(Ay zUROigF?FA_QXM-0sMpHG%0**h>)WUIbhm2hf8}6Cyn81U9WNjM1K-ZCdTf1TqR*)y zovO7OgINAQO$x|soA$&N+K<>3KkwO&j1JApmvJ>srQ$vUGs6b7+x&l%5MW1;0HIKQv8{w>Vab1*~|ED z$OLg0C__#ytu)bJBNYpEecnjf1$r2`y}HpvD+Rut{O!nUZLA2@S1(meRaKTtkIm-~ zpx$_HD!ekp6c#YI|j}6ZNC(3?&=>;Ti43Uep2|tga z;Z{tnf8?!8i;{=VR190oO-7$Yrm4?7%+K;nu8q+k0}hMQ{il>BT28G^w(5;Xx^=U@ zm}fN%ue{tWT(qkE7tU6922Tm zsugq`URD55)H~#^rcQwN`5+K~oYuq?olfQ5(ClimS=qq^8}9WiDjk$Jvp4k|uhJe! zGMfOy`CWOL`y~xCt=Q+i!GhnVxsrBz`gR`qECkZ~T3~DvoPp({IVt@Kd*X^ zdUKI)rN4j3WkDqPVNj6LiqceH-TOB62zW1-Nh$PfrqqsR&n_||S0L5i1$mF*=~kYV zSg`ruq}mJ54u1m$`TCWf7oqP%e7Jl0#iC%`aBkV#3XM(pUf0Bz>vKZ$`(B49?TntH zBw=8GmhL!@-yXA9ZiLT$-T9q7OZQWN0Zn1oxM)Vk9!4S|;nnyG?=&XrxOhE__DXr} z1keB+{uq91@gAyFUvu6jKPjA7AwM=b#g(BkXc25Vh?&i<9p-yJdT2OryX~3qWpLY^ z+M2pp_g1iY5X*j4wh*~#NQZ=MW?z;K@V=%I`5uq>`EL4U+QzzRPf~0%5;b^;RNzGCi(IX%FXI|(v@vdx0hWio}#SG zchy4w9>LoC?R2f`R^#exmQusxIc!M$aQb1+OR8NI+%vGI4^Azs(|9BEO!kq0Aej=s z`-6bh1}0M>2528XJW8q-jIPs+B`gR7bnD2uUz?^(6}}B@N)>3ZpkK>b{-Qiq}$OlGL%kjDRqL0!vw0@;IoJBl*V=7&M68odb8E zWJm-qpsj=P2hKeXCf%9aZnNe&wK76JejF}C9F__w4=6AXEC6=#X|9_}1v03|OvZ;I zraUj3*Yu}wq{+((K;Q_Nkj;+V*P;;8Qe(j?cIrOTC@`|$b=q2XOjgD`M>964MoI%B_hx>pjO zcK%=!2O!-+Paj3jrgHtTqYWS_$PS!!I%s6PBROeB`u{fKmhu%^XA$f0L14r@hyz0Y1`^_NKVAwJ*Z{5dT#a5G#|s@7!kLCQNA#vmGifpBaC z#*)>vJQwkh2x!2bN{CaJF?%Tq=2tk*G&(0-gdM|0;L$P7$MPN+pM~s*wiw0Nc^R=~ z7(d|4iQj*Y04G8ulDa6f;6)9R6HA}eSIwu*??P;KN?F(Ger*BZ4}j=umBFD1LlKNB zht!P@)>m^P_b*wlKHPqmecN#ciX9=x#FdtX#rE6`nP2FaV@V`W=*bV6DI$D@^xt}%HG%_qNH1yDY;@mRBRnN2c+Kq1?#p;qHPg~0SYQY=3Yx;N6I zgAPFm%L8XGIRqJ~=g;z7-%qascn$Jt-IC6OYxe$fy4=BaKTxT{2SPPfcPPuVS*Mq$ zabiW3N_TR3mWjNdEin4P*mDO+fD&@L-oTP2n^ong^Ro+6P?4E7(Fs38I$LF42_snE zUfHfz8X_7GDXlD>G_RQ*%Oq8b>fFtT&dtrRbI+`MUf!R;NnO44%e{NoT7EF@MdW)b zM}M+#A255C&SHn^Dbuq>{*@fIg{RPs=XwE;{>66t$qvZ29bUpge-va*JUlbMadjEh z`>klloR8h;ee^9YBT{|#sXIf$|N%6aP{;-&nG7Ai53 zBMHpT_Tp+)b>p?t=FmLw1K#_|HSwR5=jzU`55({X!_F*3mAua*y|i|XC7D#q_{(Vs zuyl2TkU-M!2|sU`3tJe)xHaWkQ(Ipso`Jbfx}H_lo8U{@o(fgm$=Xb1`QPL6>w*xf z-}%r5+>_-)Km|)$QE{AJ)xD=#e{|LQm0UNbv#Z|xU9r6S$~EW5$@10we&@}~r;nl{ zixqY+7haKeWYea@R>J62!cw+mYI&4{!kbM_ZORM6RbE1BhV0#ii_P@e0GvwTSVNP# zw`1zTTUXJAa47G&rOq1Pi`m>L9ZF4ChA70Jz<>Lr@ckx^^*ouTsA6ZWAJZ)fM0%& zOl|S+T!@e%hUl?5d?2i@wO=(YFGkJ}#U)FP53Ev~>$^ffBlRMYf09rH zc-6_ldriP3mn`mFp9!t3NJC*1?CvV@Q#WJa)E4m!qI@fEuFos86@_rSy06m-p!h=& zVCdh05xL_)vT;{m*A>{TY&)C0&SPYNj3Tota)|`kfRAV>)#f$(u`pmi8UaPA^S0tL zThryC5CFu0dr$f>&<6eofOmWS`Bb7jmA-UHy;RAMXQ70N)ELWbRj1|_!zOkmxjZt3+u#FR~ zSyKQk^t)0O(M30KgHw^kl>Et`@ZS>Iyfh5yLQDWt(jfNxSeVJdiY2j7GC6ZL zk^owvHuo_fDuWDDH#`zZ9Ek$0qj@-25zA`FROB_bbk4Ypi97`T#p?q^02Z`EU?wa8 zi^fk`f1Ry(jIRYC89+_r4fRc#BY7u*LIw^uR*8n$vki^Wz57S485bp8GdN51mIr48-j$O zr`d;0{6pvblndGOwa9K%{*=4jgb+wf;xqZG#!SONNlxu0EAgu=XZbto7b zA9m3eH)dQ5)aF-a8c}&aM)rWHK=41H$4r#f6ZS)eBTfqgR)38+d&Zdb4;7$}xg9l= zqAGJRTv^s2PYn$W08~k@)+MGxW%9%?q5YySy_`X%Wwu4yxz@Jaj^^v*=FFL61=FQ7 zfBADDk|Kq>p4$)>`cD|m(vri}St5WbrExDLKir)rS^7`jX22_Off+IF(+n1y>~fs# zT=a6&$3a~7d`lJk7PLje-JcHvc!1Ex)RBH8RIo&;GGm5BWT1ZS!kM~H&ZPBflhGC6 zfu1fk)-?kXLjWm%T0#PCdlEilM3;Yy`;$b%f;O-TngqWj`PQPfCWc5xZ^KcC7zUN; z@*_*M*cam|ix`vq&3~IdTp4(=blM$M=jK6q=BuL|U(_!2_0H#9&L2WQdc?G53cUHU z$Kc`NEw`B*pRIb4OdbfgLL)Zqjpwu5tJ`1upRDFP9+!@zDP&FUDj>=~yFT;l2U|l( z5lK?_951xjDh5UCCST3ZS*zcK`E8Rzxq5YuTepN9==y3TT=mcWjpBnG7#Ti9wqaX; z4&f47G!Kz-D%FpeuwPQF{C!Y+gpF$%g&Rx0z<9)UGSXk$B20%q{=K!gSIoPrkPbc= zR`pD(ZzF!HRv>UzDM z`Lgy&2EszXmn5l%S8t=DOx|bLc!7iAujsEOYzfgOEzGHi5D|fyWDAvBsR9Euk9e7# z@AwmD9>5h*!A~VIKq3Zs{d33vPOcM^qVGFLspGrd#eH30532glpc}?=8ZEe)@N<|IX0mY%! zZ-Srdhplfr2QP*g{P&4}rTkNVB>qDTf)apiOKZm}_LO%9P?e=$yHNmSEGJTJ=lf*J z#$L6x>JkRv05W7IN8GBHlU7ovuRQF*9&J|EIsOeWC@%4w=;Q899sofnLLKQesSOmB zenEVIR|y!}U6@;6otS-f#IwOYUHhAiGh&>#7<0!ZkH#{WRvRyUoqu{>S)7&D??R**KPUkbcVBwJo9?}S-KZ9 zEXJGnOWpR?8PPk8-Sg!BjK|BE(Q~nu%b z{_j~H07sj2(|G*C^9PwMaDyki27#WesltaoS<+VLZY|Knt&C;6%Gj}G>px-Z>f?DA zN@h-iXz{V7-RnlB8i5F5L|!Y`lK1;H3f>Eky4mazlS&{!D@*G|=)Gz&7iuKoT2r~{ zV}*y5>R@v4pES6t?1YG;Rw7U9F+BRtf00Bg%5q9p_3{6(0}bU~x3QF?IN!F`CLJ$< zk413tc?q8`w3VIyHau{H2#9R5M1k||TE5z%_hU2~4;&+E>;2^I)H?|X)>Uo$#O>Y6 zTu$RXCT>+8+W?E~Ewb^j>$VEm8DBcOfex=B+j`KX&T8G`bKs^&WU3rZ%_m@wQruXA zmBvjwptIy_^8;Yd)XLv-eI;h}>QgiJ#sFv5c5@loVm-I#OtjW%1>AVBL)_|_0raay z5U3sigo{1pJ^xaz?Pu6tWbVgravo$3S?Fouc?<4af4I)87JoTRmvO1lX*Sz$0eghk z+rEVCrKI@1Oz~~QPEJl<5UoE<gwpq zUY|)iJj}yP&4?LOHY@WfYuuEJ=IX4Q=I)g~K2TIgr1Ql+&#n7iA3fb7AMj zcB6H&kg7+4DP6TR$~sI?Lp?%ls6HG_tvy@&TUc8@$}}cfUi+NuxNe}g?s^`x-#GES zQep3Qe}5hu%Goa(6OC;pt&R|~A>Pb|e;OH)$2^D138;NA)Jc5uq84`Y9Jx#q(M7J@ zO+vO6WlswfIK@xtIYh2}t@JN6{B-keJ*h9A;`cWqt=yiaU*@wYuNd^*e7q*>_pf@A zA;vvHJ{{Q9@51aWUhh)%Ui&qwgzvm>qxp4{C6V`ef(gs~cseJL`f?HwO5FP(pJ_}HWUH?U054%zft5+ z(N0gqGdVK+9GK-I7%Z}>d8WFQ#7%7;!4jnvtq4Vc?i;4|lwo)%=oA!vPEFY{CpgvJ zGtC4bq(`ckw5>0J#El%R@G$7(T)W6gCaLTaA>UELq%P`pfl{kaLj#b2irJnMqPq1_d&*x8qn?Tv6-k$s+=6baDgquxYGTbgeYeX{ZN~Hn}#Z_ zq~*(hjv1}SN8YAld;!#;A((wZ1ckbXqq44S(>UX#=p= zv+a5ZX%-O9Xo8LubGq1CT~<3~Si_IXzBTdjS zok!r@TBq6^ zXoAbRPIL?;*DX65N;GnJ4!pTDb2*tdaHV_f^PHDMFjYkisZfY1oX$qR?O+3@I64_A zDoRbE5eoZnIs8!g0YM64()T*=lK3S!1P0-?MX?z_ho6?~9C1vHqPkE1u!8LFSD&I{ zD5xhrAnz~lEuc-vW17O1<}sd+{-IpaHYeYO1cH+ihTHk(e;D!03+I@ClQAN49rI~U zZ<%c(L@|C&mHjn45L1McfYbPA9?&#f?pRhogexdJd>v&CBY@JPkln$%8fS%~A+Rf7 zs$+>Ego^ZSH!bCLe@fm@d{-W5_A-0Sd@NMYUN|0Uf>uc6@PDpAM>^OB6s-+N@eA{! zIIvddrBUGpUvg{pQWb`;E25E)m}rA3?$l-EeZ5=#1JM)9+i4Ty%&8Wz z+Y!VF!draiX>_Lh?j42f(NmC_beJ}IXuQU1XU*<;H~=rApeY5MJ9n_Gl{v`3oq@!W zB;Ujyx3dE?_j~h3=|$9&0lB%hg%TOeX=<+sduBH}^7}=U$ari~Lu&>?OAIWxu( zLF}5ICw+V`i{{L)XKbAvMW=25$J18;Mb*Av>@G$ zbc0B@bc1w*bi;Sv-+$(Fb{tt|;CRkH&vW0`eMQq--3?iPf zvd!zI3Sor&qny(ASu@NsR<%NroSd&wuHIHd%*Bc76MiEQM6A`Zq1^D&!q2^|^*i@( zp?@Y5fx2})K=0HNdkgZoLtT{iM^9mRWL?}zPF8)rfBsxlRP+SsEKi)cFh9s=@LpG* zJuP?Kt~_Vj`@(~MT|TYcM`hg)ck$l+qKFYYRHL|;S@YkN9DrM2+1r)96{J9l{1)Xj znF}o}pznag_GIEF_~aR{Hk}_u=Je6-r=P=9lxLU%m&%vL9fc5|q_}%yaL{0M?c}UO z@%O=~_-=4Oz?=f7^M=Oe%bml>zvcnqVX$k08QyR5`S%b*7pT&uob6GkLAQv$MBB5R z6jxeHE9SUo3zdxj_=oh1m@nt{GCt4e$`K({B@rx_xd_~LlwUvqFEN9JRdP#*&n0{R zwED2Eewk3rxQI8ALQ}+gzZVOG%0Dp>rOs8`ibP=iy_{W2ag}77)3)i=fj!xMsESg7 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�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

rs_64 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

m8TABXDIY&$YMy0*IqX5(XECd{`I0!b{xg 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 NWkHHk +#include +#include "pins_arduino.h" + +/* + * {Arduino Pin, RT-Thread Pin [, Device Name, Channel]} + * [] means optional + * Digital pins must NOT give the device name and channel. + * Analog pins MUST give the device name and channel(ADC, PWM or DAC). + * Arduino Pin must keep in sequence. + */ +const pin_map_t pin_map_table[]= +{ + {D0, GET_PIN(A,1), "spi1"}, /* SPI-SCK */ + {D1, GET_PIN(A,4)}, /* SPI-SS */ + {D2, GET_PIN(A,0)}, + {D3, GET_PIN(B,9)}, + {D4, GET_PIN(B,8), "pwm16", 1}, /* PWM */ + {D5, GET_PIN(B,6), "i2c1"}, /* I2C-SCL (Wire) */ + {D6, GET_PIN(B,7), "i2c1"}, /* I2C-SDA (Wire) */ + {D7, GET_PIN(A,6), "spi1"}, /* SPI-MISO */ + {D8, GET_PIN(A,12), "spi1"}, /* SPI-MOSI */ + {D9, GET_PIN(C,9)}, + {D10, GET_PIN(C,4), "uart3"}, /* Serial2-Tx */ + {D11, GET_PIN(C,5), "uart3"}, /* Serial2-Rx */ + {D12, GET_PIN(A,8), "pwm1", 1}, /* PWM */ + {A0, GET_PIN(C,2), "adc1", 3}, /* ADC */ + {A1, RT_NULL, "adc1", 18}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ + {A2, RT_NULL, "adc1", 17}, /* ADC, On-Chip: internal temperature sensor, ADC_CHANNEL_TEMPSENSOR */ + {DAC0, GET_PIN(A,5), "dac1", 2}, /* DAC */ +}; diff --git a/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.h new file mode 100644 index 000000000..bf7a39288 --- /dev/null +++ b/bsp/stm32/stm32l431-BearPi/applications/arduino_pinout/pins_arduino.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-12-01 liYony first version + */ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +/* pins alias. Must keep in sequence */ +#define D0 (0) +#define D1 (1) +#define D2 (2) +#define D3 (3) +#define D4 (4) +#define D5 (5) +#define D6 (6) +#define D7 (7) +#define D8 (8) +#define D9 (9) +#define D10 (10) +#define D11 (11) +#define D12 (12) +#define A0 (13) +#define A1 (14) +#define A2 (15) +#define DAC0 (16) + +#define F_CPU 80000000L /* CPU:80MHz */ + +/* i2c1 : PB7-SDA PB6-SCL */ +#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1" + +/* spi1 : PA1-SCK PA6-MISO PA12-MOSI */ +#define SS D1 /* Chip select pin of default spi */ +#define RTDUINO_DEFAULT_SPI_BUS_NAME "spi1" + +/* Serial : PC4-TX PC5-RX */ +#define RTDUINO_SERIAL2_DEVICE_NAME "uart3" + +#endif /* Pins_Arduino_h */ diff --git a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/.mxproject b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/.mxproject index 77c9bb99d..70ae77589 100644 --- a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/.mxproject +++ b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/.mxproject @@ -1,14 +1,14 @@ -[PreviousGenFiles] -HeaderPath=D:/Rtt_doc/rt-thread/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc -HeaderFiles=stm32l4xx_it.h;stm32l4xx_hal_conf.h;main.h; -SourcePath=D:/Rtt_doc/rt-thread/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Src -SourceFiles=stm32l4xx_it.c;stm32l4xx_hal_msp.c;main.c; - [PreviousLibFiles] -LibFiles=Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_spi.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_spi_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_def.h;Drivers/STM32L4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ramfunc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_cortex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_exti.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart_ex.h;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_exti.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_spi.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_spi_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_def.h;Drivers/STM32L4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ramfunc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_cortex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_exti.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart_ex.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l431xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h; +LibFiles=Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_adc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_adc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_adc_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_def.h;Drivers/STM32L4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_bus.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_rcc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_crs.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_system.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_utils.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ramfunc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_gpio.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dma.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dmamux.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_pwr.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_cortex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_cortex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_exti.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_exti.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dac.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dac.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dac_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_spi.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_spi_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_tim.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_usart.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_lpuart.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart_ex.h;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_adc.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_adc_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_exti.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dac.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dac_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_adc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_adc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_adc_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_def.h;Drivers/STM32L4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_i2c_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_bus.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_rcc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_crs.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_system.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_utils.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_flash_ramfunc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_gpio_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_gpio.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dma_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dma.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dmamux.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_pwr_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_pwr.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_cortex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_cortex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_exti.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_exti.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dac.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dac.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_dac_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_spi.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_spi_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_tim_ex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_tim.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_usart.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_lpuart.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_uart_ex.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l431xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;Drivers/CMSIS/Include/core_armv81mml.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/cmsis_armclang_ltm.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/core_cm35p.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_armclang.h; [PreviousUsedKeilFiles] -SourceFiles=..\Src\main.c;..\Src\stm32l4xx_it.c;..\Src\stm32l4xx_hal_msp.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_exti.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;..\\Src/system_stm32l4xx.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_exti.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;..\Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;..\\Src/system_stm32l4xx.c;..\Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;; -HeaderPath=..\Drivers\STM32L4xx_HAL_Driver\Inc;..\Drivers\STM32L4xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32L4xx\Include;..\Drivers\CMSIS\Include;..\Inc; +SourceFiles=../Src/main.c;../Src/stm32l4xx_it.c;../Src/stm32l4xx_hal_msp.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_adc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_adc_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_exti.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dac.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dac_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;../Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;..//Src/system_stm32l4xx.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_adc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_adc_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_exti.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dac.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dac_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_spi_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c;../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c;../Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;..//Src/system_stm32l4xx.c;;; +HeaderPath=../Drivers/STM32L4xx_HAL_Driver/Inc;../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32L4xx/Include;../Drivers/CMSIS/Include;../Inc; CDefines=USE_HAL_DRIVER;STM32L431xx;USE_HAL_DRIVER;USE_HAL_DRIVER; +[PreviousGenFiles] +HeaderPath=../Inc +HeaderFiles=stm32l4xx_it.h;stm32l4xx_hal_conf.h;main.h; +SourcePath=../Src +SourceFiles=stm32l4xx_it.c;stm32l4xx_hal_msp.c;main.c; + diff --git a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/CubeMX_Config.ioc b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/CubeMX_Config.ioc index 7600b27cb..0f493de68 100644 --- a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/CubeMX_Config.ioc +++ b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/CubeMX_Config.ioc @@ -1,62 +1,109 @@ #MicroXplorer Configuration settings - do not modify +ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_3 +ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,NbrOfConversionFlag,master +ADC1.NbrOfConversionFlag=1 +ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC1.Rank-0\#ChannelRegularConversion=1 +ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5 +ADC1.master=1 +DAC1.DAC_Channel-DAC_OUT2=DAC_CHANNEL_2 +DAC1.IPParameters=DAC_Channel-DAC_OUT2 File.Version=6 GPIO.groupedBy= KeepUserPlacement=false +Mcu.CPN=STM32L431RCT6 Mcu.Family=STM32L4 -Mcu.IP0=NVIC -Mcu.IP1=RCC -Mcu.IP2=SPI2 -Mcu.IP3=SYS -Mcu.IP4=USART1 -Mcu.IPNb=5 +Mcu.IP0=ADC1 +Mcu.IP1=DAC1 +Mcu.IP10=USART3 +Mcu.IP2=NVIC +Mcu.IP3=RCC +Mcu.IP4=SPI1 +Mcu.IP5=SPI2 +Mcu.IP6=SYS +Mcu.IP7=TIM1 +Mcu.IP8=TIM16 +Mcu.IP9=USART1 +Mcu.IPNb=11 Mcu.Name=STM32L431R(B-C)Tx Mcu.Package=LQFP64 Mcu.Pin0=PC14-OSC32_IN (PC14) Mcu.Pin1=PC15-OSC32_OUT (PC15) +Mcu.Pin10=PC5 +Mcu.Pin11=PB13 +Mcu.Pin12=PA8 +Mcu.Pin13=PA9 +Mcu.Pin14=PA10 +Mcu.Pin15=PA12 +Mcu.Pin16=PB8 +Mcu.Pin17=VP_ADC1_TempSens_Input +Mcu.Pin18=VP_ADC1_Vref_Input +Mcu.Pin19=VP_ADC1_Vbat_Input Mcu.Pin2=PH0-OSC_IN (PH0) +Mcu.Pin20=VP_SYS_VS_Systick +Mcu.Pin21=VP_TIM1_VS_ClockSourceINT +Mcu.Pin22=VP_TIM16_VS_ClockSourceINT Mcu.Pin3=PH1-OSC_OUT (PH1) -Mcu.Pin4=PC3 -Mcu.Pin5=PB13 -Mcu.Pin6=PA9 -Mcu.Pin7=PA10 -Mcu.Pin8=VP_SYS_VS_Systick -Mcu.PinsNb=9 +Mcu.Pin4=PC2 +Mcu.Pin5=PC3 +Mcu.Pin6=PA1 +Mcu.Pin7=PA5 +Mcu.Pin8=PA6 +Mcu.Pin9=PC4 +Mcu.PinsNb=23 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32L431RCTx -MxCube.Version=5.6.0 -MxDb.Version=DB.5.0.60 -NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false +MxCube.Version=6.6.1 +MxDb.Version=DB.6.0.60 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.ForceEnableDMAVector=true -NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 -NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true -NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false -PA9.GPIOParameters=GPIO_PuPd -PA9.GPIO_PuPd=GPIO_PULLUP -PA9.Mode=Asynchronous -PA9.Signal=USART1_TX +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:false +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PA1.Mode=Full_Duplex_Master +PA1.Signal=SPI1_SCK PA10.GPIOParameters=GPIO_PuPd PA10.GPIO_PuPd=GPIO_PULLUP PA10.Mode=Asynchronous PA10.Signal=USART1_RX +PA12.Locked=true +PA12.Mode=Full_Duplex_Master +PA12.Signal=SPI1_MOSI +PA5.Signal=COMP_DAC12_group +PA6.Mode=Full_Duplex_Master +PA6.Signal=SPI1_MISO +PA8.Locked=true +PA8.Signal=S_TIM1_CH1 +PA9.GPIOParameters=GPIO_PuPd +PA9.GPIO_PuPd=GPIO_PULLUP +PA9.Mode=Asynchronous +PA9.Signal=USART1_TX PB13.Locked=true PB13.Mode=Simplex_Bidirectional_Master PB13.Signal=SPI2_SCK +PB8.Locked=true +PB8.Signal=S_TIM16_CH1 PC14-OSC32_IN\ (PC14).Locked=true PC14-OSC32_IN\ (PC14).Mode=LSE-External-Oscillator PC14-OSC32_IN\ (PC14).Signal=RCC_OSC32_IN PC15-OSC32_OUT\ (PC15).Locked=true PC15-OSC32_OUT\ (PC15).Mode=LSE-External-Oscillator PC15-OSC32_OUT\ (PC15).Signal=RCC_OSC32_OUT +PC2.Signal=ADCx_IN3 PC3.Locked=true PC3.Mode=Simplex_Bidirectional_Master PC3.Signal=SPI2_MOSI +PC4.Mode=Asynchronous +PC4.Signal=USART3_TX +PC5.Mode=Asynchronous +PC5.Signal=USART3_RX PH0-OSC_IN\ (PH0).Locked=true PH0-OSC_IN\ (PH0).Mode=HSE-External-Oscillator PH0-OSC_IN\ (PH0).Signal=RCC_OSC_IN @@ -73,7 +120,7 @@ ProjectManager.CustomerFirmwarePackage= ProjectManager.DefaultFWLocation=true ProjectManager.DeletePrevious=true ProjectManager.DeviceId=STM32L431RCTx -ProjectManager.FirmwarePackage=STM32Cube FW_L4 V1.15.1 +ProjectManager.FirmwarePackage=STM32Cube FW_L4 V1.17.2 ProjectManager.FreePins=false ProjectManager.HalAssertFull=false ProjectManager.HeapSize=0x200 @@ -86,11 +133,13 @@ ProjectManager.PreviousToolchain= ProjectManager.ProjectBuild=false ProjectManager.ProjectFileName=CubeMX_Config.ioc ProjectManager.ProjectName=CubeMX_Config +ProjectManager.RegisterCallBack= ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=MDK-ARM V5 ProjectManager.ToolChainLocation= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_SPI2_Init-SPI2-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_SPI1_Init-SPI1-false-HAL-true,6-MX_ADC1_Init-ADC1-false-HAL-true,7-MX_DAC1_Init-DAC1-false-HAL-true,8-MX_TIM1_Init-TIM1-false-HAL-true,9-MX_TIM16_Init-TIM16-false-HAL-true,10-MX_USART3_UART_Init-USART3-false-HAL-true +RCC.ADCFreq_Value=32000000 RCC.AHBFreq_Value=80000000 RCC.APB1Freq_Value=80000000 RCC.APB1TimFreq_Value=80000000 @@ -106,7 +155,7 @@ RCC.HSI_VALUE=16000000 RCC.I2C1Freq_Value=80000000 RCC.I2C2Freq_Value=80000000 RCC.I2C3Freq_Value=80000000 -RCC.IPParameters=AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,MSI_VALUE,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,SAI1Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value +RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,MSI_VALUE,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1N,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SDMMCFreq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value RCC.LPTIM1Freq_Value=80000000 RCC.LPTIM2Freq_Value=80000000 RCC.LPUART1Freq_Value=80000000 @@ -118,11 +167,14 @@ RCC.PLLN=40 RCC.PLLPoutputFreq_Value=22857142.85714286 RCC.PLLQoutputFreq_Value=80000000 RCC.PLLRCLKFreq_Value=80000000 -RCC.PLLSAI1PoutputFreq_Value=4571428.571428572 -RCC.PLLSAI1QoutputFreq_Value=16000000 -RCC.PLLSAI1RoutputFreq_Value=16000000 +RCC.PLLSAI1N=16 +RCC.PLLSAI1PoutputFreq_Value=9142857.142857144 +RCC.PLLSAI1QoutputFreq_Value=32000000 +RCC.PLLSAI1RoutputFreq_Value=32000000 RCC.PWRFreq_Value=80000000 -RCC.SAI1Freq_Value=4571428.571428572 +RCC.RNGFreq_Value=32000000 +RCC.SAI1Freq_Value=9142857.142857144 +RCC.SDMMCFreq_Value=32000000 RCC.SWPMI1Freq_Value=80000000 RCC.SYSCLKFreq_VALUE=80000000 RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK @@ -131,14 +183,43 @@ RCC.USART2Freq_Value=80000000 RCC.USART3Freq_Value=80000000 RCC.VCOInputFreq_Value=4000000 RCC.VCOOutputFreq_Value=160000000 -RCC.VCOSAI1OutputFreq_Value=32000000 +RCC.VCOSAI1OutputFreq_Value=64000000 +SH.ADCx_IN3.0=ADC1_IN3,IN3-Single-Ended +SH.ADCx_IN3.ConfNb=1 +SH.COMP_DAC12_group.0=DAC1_OUT2,DAC_OUT2 +SH.COMP_DAC12_group.ConfNb=1 +SH.S_TIM16_CH1.0=TIM16_CH1,PWM Generation1 CH1 +SH.S_TIM16_CH1.ConfNb=1 +SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1 +SH.S_TIM1_CH1.ConfNb=1 +SPI1.CalculateBaudRate=40.0 MBits/s +SPI1.Direction=SPI_DIRECTION_2LINES +SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate +SPI1.Mode=SPI_MODE_MASTER +SPI1.VirtualType=VM_MASTER SPI2.CalculateBaudRate=40.0 MBits/s SPI2.Direction=SPI_DIRECTION_1LINE SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate SPI2.Mode=SPI_MODE_MASTER SPI2.VirtualType=VM_MASTER +TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 +TIM1.IPParameters=Channel-PWM Generation1 CH1 +TIM16.Channel=TIM_CHANNEL_1 +TIM16.IPParameters=Channel USART1.IPParameters=VirtualMode-Asynchronous USART1.VirtualMode-Asynchronous=VM_ASYNC +USART3.IPParameters=VirtualMode-Asynchronous +USART3.VirtualMode-Asynchronous=VM_ASYNC +VP_ADC1_TempSens_Input.Mode=IN-TempSens +VP_ADC1_TempSens_Input.Signal=ADC1_TempSens_Input +VP_ADC1_Vbat_Input.Mode=IN-Vbat +VP_ADC1_Vbat_Input.Signal=ADC1_Vbat_Input +VP_ADC1_Vref_Input.Mode=IN-Vrefint +VP_ADC1_Vref_Input.Signal=ADC1_Vref_Input VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_TIM16_VS_ClockSourceINT.Mode=Enable_Timer +VP_TIM16_VS_ClockSourceINT.Signal=TIM16_VS_ClockSourceINT +VP_TIM1_VS_ClockSourceINT.Mode=Internal +VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT board=custom diff --git a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/main.h b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/main.h index 307e47b9f..1019a3495 100644 --- a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/main.h +++ b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/main.h @@ -50,6 +50,8 @@ extern "C" { /* USER CODE END EM */ +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /* Exported functions prototypes ---------------------------------------------*/ void Error_Handler(void); @@ -67,5 +69,3 @@ void Error_Handler(void); #endif #endif /* __MAIN_H */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/stm32l4xx_hal_conf.h b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/stm32l4xx_hal_conf.h index b425dbbe5..91ea938aa 100644 --- a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/stm32l4xx_hal_conf.h +++ b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/stm32l4xx_hal_conf.h @@ -1,40 +1,28 @@ +/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file stm32l4xx_hal_conf.h - * @brief HAL configuration file. + * @author MCD Application Team + * @brief HAL configuration template file. + * This file should be copied to the application folder and renamed + * to stm32l4xx_hal_conf.h. ****************************************************************************** * @attention * - *

© COPYRIGHT(c) 2021 STMicroelectronics

+ * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** - */ + */ +/* USER CODE END Header */ /* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __STM32L4xx_HAL_CONF_H -#define __STM32L4xx_HAL_CONF_H +#ifndef STM32L4xx_HAL_CONF_H +#define STM32L4xx_HAL_CONF_H #ifdef __cplusplus extern "C" { @@ -45,17 +33,16 @@ /* ########################## Module Selection ############################## */ /** - * @brief This is the list of modules to be used in the HAL driver + * @brief This is the list of modules to be used in the HAL driver */ - -#define HAL_MODULE_ENABLED -/*#define HAL_ADC_MODULE_ENABLED */ +#define HAL_MODULE_ENABLED +#define HAL_ADC_MODULE_ENABLED /*#define HAL_CRYP_MODULE_ENABLED */ /*#define HAL_CAN_MODULE_ENABLED */ /*#define HAL_COMP_MODULE_ENABLED */ /*#define HAL_CRC_MODULE_ENABLED */ /*#define HAL_CRYP_MODULE_ENABLED */ -/*#define HAL_DAC_MODULE_ENABLED */ +#define HAL_DAC_MODULE_ENABLED /*#define HAL_DCMI_MODULE_ENABLED */ /*#define HAL_DMA2D_MODULE_ENABLED */ /*#define HAL_DFSDM_MODULE_ENABLED */ @@ -89,7 +76,7 @@ #define HAL_SPI_MODULE_ENABLED /*#define HAL_SRAM_MODULE_ENABLED */ /*#define HAL_SWPMI_MODULE_ENABLED */ -/*#define HAL_TIM_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED /*#define HAL_TSC_MODULE_ENABLED */ #define HAL_UART_MODULE_ENABLED /*#define HAL_USART_MODULE_ENABLED */ @@ -97,7 +84,7 @@ /*#define HAL_EXTI_MODULE_ENABLED */ /*#define HAL_PSSI_MODULE_ENABLED */ #define HAL_GPIO_MODULE_ENABLED -#define HAL_EXTI_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED #define HAL_I2C_MODULE_ENABLED #define HAL_DMA_MODULE_ENABLED #define HAL_RCC_MODULE_ENABLED @@ -109,9 +96,9 @@ /** * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. * This value is used by the RCC HAL module to compute the system frequency - * (when HSE is used as system clock source, directly or through the PLL). + * (when HSE is used as system clock source, directly or through the PLL). */ -#if !defined (HSE_VALUE) +#if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */ #endif /* HSE_VALUE */ @@ -129,7 +116,7 @@ /** * @brief Internal High Speed oscillator (HSI) value. * This value is used by the RCC HAL module to compute the system frequency - * (when HSI is used as system clock source, directly or through the PLL). + * (when HSI is used as system clock source, directly or through the PLL). */ #if !defined (HSI_VALUE) #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ @@ -142,7 +129,7 @@ * When the CRS is not used, the HSI48 RC oscillator runs on it default frequency * which is subject to manufacturing process variations. */ -#if !defined (HSI48_VALUE) +#if !defined (HSI48_VALUE) #define HSI48_VALUE ((uint32_t)48000000U) /*!< Value of the Internal High Speed oscillator for USB FS/SDMMC/RNG in Hz. The real value my vary depending on manufacturing process variations.*/ #endif /* HSI48_VALUE */ @@ -150,8 +137,8 @@ /** * @brief Internal Low Speed oscillator (LSI) value. */ -#if !defined (LSI_VALUE) - #define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/ +#if !defined (LSI_VALUE) + #define LSI_VALUE 32000U /*!< LSI Typical Value in Hz*/ #endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz The real value may vary depending on the variations in voltage and temperature.*/ @@ -161,29 +148,29 @@ * This value is used by the UART, RTC HAL module to compute the system frequency */ #if !defined (LSE_VALUE) - #define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External oscillator in Hz*/ + #define LSE_VALUE 32768U /*!< Value of the External oscillator in Hz*/ #endif /* LSE_VALUE */ #if !defined (LSE_STARTUP_TIMEOUT) - #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */ + #define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */ #endif /* HSE_STARTUP_TIMEOUT */ /** * @brief External clock source for SAI1 peripheral - * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source + * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source * frequency. */ #if !defined (EXTERNAL_SAI1_CLOCK_VALUE) - #define EXTERNAL_SAI1_CLOCK_VALUE ((uint32_t)2097000U) /*!< Value of the SAI1 External clock source in Hz*/ + #define EXTERNAL_SAI1_CLOCK_VALUE 2097000U /*!< Value of the SAI1 External clock source in Hz*/ #endif /* EXTERNAL_SAI1_CLOCK_VALUE */ /** * @brief External clock source for SAI2 peripheral - * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source + * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source * frequency. */ #if !defined (EXTERNAL_SAI2_CLOCK_VALUE) - #define EXTERNAL_SAI2_CLOCK_VALUE ((uint32_t)48000U) /*!< Value of the SAI2 External clock source in Hz*/ + #define EXTERNAL_SAI2_CLOCK_VALUE 48000U /*!< Value of the SAI2 External clock source in Hz*/ #endif /* EXTERNAL_SAI2_CLOCK_VALUE */ /* Tip: To avoid modifying this file each time you need to use different HSE, @@ -192,22 +179,67 @@ /* ########################### System Configuration ######################### */ /** * @brief This is the HAL system configuration section - */ - -#define VDD_VALUE ((uint32_t)3300U) /*!< Value of VDD in mv */ -#define TICK_INT_PRIORITY ((uint32_t)0U) /*!< tick interrupt priority */ -#define USE_RTOS 0U + */ + +#define VDD_VALUE 3300U /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY 0U /*!< tick interrupt priority */ +#define USE_RTOS 0U #define PREFETCH_ENABLE 0U #define INSTRUCTION_CACHE_ENABLE 1U #define DATA_CACHE_ENABLE 1U /* ########################## Assert Selection ############################## */ /** - * @brief Uncomment the line below to expanse the "assert_param" macro in the + * @brief Uncomment the line below to expanse the "assert_param" macro in the * HAL drivers code */ /* #define USE_FULL_ASSERT 1U */ +/* ################## Register callback feature configuration ############### */ +/** + * @brief Set below the peripheral configuration to "1U" to add the support + * of HAL callback registration/deregistration feature for the HAL + * driver(s). This allows user application to provide specific callback + * functions thanks to HAL_PPP_RegisterCallback() rather than overwriting + * the default weak callback functions (see each stm32l4xx_hal_ppp.h file + * for possible callback identifiers defined in HAL_PPP_CallbackIDTypeDef + * for each PPP peripheral). + */ +#define USE_HAL_ADC_REGISTER_CALLBACKS 0U +#define USE_HAL_CAN_REGISTER_CALLBACKS 0U +#define USE_HAL_COMP_REGISTER_CALLBACKS 0U +#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U +#define USE_HAL_DAC_REGISTER_CALLBACKS 0U +#define USE_HAL_DCMI_REGISTER_CALLBACKS 0U +#define USE_HAL_DFSDM_REGISTER_CALLBACKS 0U +#define USE_HAL_DMA2D_REGISTER_CALLBACKS 0U +#define USE_HAL_DSI_REGISTER_CALLBACKS 0U +#define USE_HAL_GFXMMU_REGISTER_CALLBACKS 0U +#define USE_HAL_HASH_REGISTER_CALLBACKS 0U +#define USE_HAL_HCD_REGISTER_CALLBACKS 0U +#define USE_HAL_I2C_REGISTER_CALLBACKS 0U +#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U +#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U +#define USE_HAL_LTDC_REGISTER_CALLBACKS 0U +#define USE_HAL_MMC_REGISTER_CALLBACKS 0U +#define USE_HAL_OPAMP_REGISTER_CALLBACKS 0U +#define USE_HAL_OSPI_REGISTER_CALLBACKS 0U +#define USE_HAL_PCD_REGISTER_CALLBACKS 0U +#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U +#define USE_HAL_RNG_REGISTER_CALLBACKS 0U +#define USE_HAL_RTC_REGISTER_CALLBACKS 0U +#define USE_HAL_SAI_REGISTER_CALLBACKS 0U +#define USE_HAL_SD_REGISTER_CALLBACKS 0U +#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U +#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U +#define USE_HAL_SPI_REGISTER_CALLBACKS 0U +#define USE_HAL_SWPMI_REGISTER_CALLBACKS 0U +#define USE_HAL_TIM_REGISTER_CALLBACKS 0U +#define USE_HAL_TSC_REGISTER_CALLBACKS 0U +#define USE_HAL_UART_REGISTER_CALLBACKS 0U +#define USE_HAL_USART_REGISTER_CALLBACKS 0U +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U + /* ################## SPI peripheral configuration ########################## */ /* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver @@ -224,20 +256,14 @@ #ifdef HAL_RCC_MODULE_ENABLED #include "stm32l4xx_hal_rcc.h" - #include "stm32l4xx_hal_rcc_ex.h" #endif /* HAL_RCC_MODULE_ENABLED */ -#ifdef HAL_EXTI_MODULE_ENABLED - #include "stm32l4xx_hal_exti.h" -#endif /* HAL_EXTI_MODULE_ENABLED */ - #ifdef HAL_GPIO_MODULE_ENABLED #include "stm32l4xx_hal_gpio.h" #endif /* HAL_GPIO_MODULE_ENABLED */ #ifdef HAL_DMA_MODULE_ENABLED #include "stm32l4xx_hal_dma.h" - #include "stm32l4xx_hal_dma_ex.h" #endif /* HAL_DMA_MODULE_ENABLED */ #ifdef HAL_DFSDM_MODULE_ENABLED @@ -256,6 +282,10 @@ #include "stm32l4xx_hal_can.h" #endif /* HAL_CAN_MODULE_ENABLED */ +#ifdef HAL_CAN_LEGACY_MODULE_ENABLED + #include "Legacy/stm32l4xx_hal_can_legacy.h" +#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */ + #ifdef HAL_COMP_MODULE_ENABLED #include "stm32l4xx_hal_comp.h" #endif /* HAL_COMP_MODULE_ENABLED */ @@ -284,6 +314,14 @@ #include "stm32l4xx_hal_dsi.h" #endif /* HAL_DSI_MODULE_ENABLED */ +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32l4xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_GFXMMU_MODULE_ENABLED + #include "stm32l4xx_hal_gfxmmu.h" +#endif /* HAL_GFXMMU_MODULE_ENABLED */ + #ifdef HAL_FIREWALL_MODULE_ENABLED #include "stm32l4xx_hal_firewall.h" #endif /* HAL_FIREWALL_MODULE_ENABLED */ @@ -296,26 +334,18 @@ #include "stm32l4xx_hal_hash.h" #endif /* HAL_HASH_MODULE_ENABLED */ -#ifdef HAL_SRAM_MODULE_ENABLED - #include "stm32l4xx_hal_sram.h" -#endif /* HAL_SRAM_MODULE_ENABLED */ - -#ifdef HAL_MMC_MODULE_ENABLED - #include "stm32l4xx_hal_mmc.h" -#endif /* HAL_MMC_MODULE_ENABLED */ - -#ifdef HAL_NOR_MODULE_ENABLED - #include "stm32l4xx_hal_nor.h" -#endif /* HAL_NOR_MODULE_ENABLED */ - -#ifdef HAL_NAND_MODULE_ENABLED - #include "stm32l4xx_hal_nand.h" -#endif /* HAL_NAND_MODULE_ENABLED */ +#ifdef HAL_HCD_MODULE_ENABLED + #include "stm32l4xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ #ifdef HAL_I2C_MODULE_ENABLED #include "stm32l4xx_hal_i2c.h" #endif /* HAL_I2C_MODULE_ENABLED */ +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32l4xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + #ifdef HAL_IWDG_MODULE_ENABLED #include "stm32l4xx_hal_iwdg.h" #endif /* HAL_IWDG_MODULE_ENABLED */ @@ -332,6 +362,18 @@ #include "stm32l4xx_hal_ltdc.h" #endif /* HAL_LTDC_MODULE_ENABLED */ +#ifdef HAL_MMC_MODULE_ENABLED + #include "stm32l4xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED + #include "stm32l4xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32l4xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + #ifdef HAL_OPAMP_MODULE_ENABLED #include "stm32l4xx_hal_opamp.h" #endif /* HAL_OPAMP_MODULE_ENABLED */ @@ -340,9 +382,17 @@ #include "stm32l4xx_hal_ospi.h" #endif /* HAL_OSPI_MODULE_ENABLED */ +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32l4xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + #ifdef HAL_PKA_MODULE_ENABLED #include "stm32l4xx_hal_pka.h" -#endif /* HAL_PWR_MODULE_ENABLED */ +#endif /* HAL_PKA_MODULE_ENABLED */ + +#ifdef HAL_PSSI_MODULE_ENABLED + #include "stm32l4xx_hal_pssi.h" +#endif /* HAL_PSSI_MODULE_ENABLED */ #ifdef HAL_PWR_MODULE_ENABLED #include "stm32l4xx_hal_pwr.h" @@ -368,6 +418,10 @@ #include "stm32l4xx_hal_sd.h" #endif /* HAL_SD_MODULE_ENABLED */ +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32l4xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + #ifdef HAL_SMBUS_MODULE_ENABLED #include "stm32l4xx_hal_smbus.h" #endif /* HAL_SMBUS_MODULE_ENABLED */ @@ -376,6 +430,10 @@ #include "stm32l4xx_hal_spi.h" #endif /* HAL_SPI_MODULE_ENABLED */ +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32l4xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + #ifdef HAL_SWPMI_MODULE_ENABLED #include "stm32l4xx_hal_swpmi.h" #endif /* HAL_SWPMI_MODULE_ENABLED */ @@ -396,39 +454,15 @@ #include "stm32l4xx_hal_usart.h" #endif /* HAL_USART_MODULE_ENABLED */ -#ifdef HAL_IRDA_MODULE_ENABLED - #include "stm32l4xx_hal_irda.h" -#endif /* HAL_IRDA_MODULE_ENABLED */ - -#ifdef HAL_SMARTCARD_MODULE_ENABLED - #include "stm32l4xx_hal_smartcard.h" -#endif /* HAL_SMARTCARD_MODULE_ENABLED */ - #ifdef HAL_WWDG_MODULE_ENABLED #include "stm32l4xx_hal_wwdg.h" #endif /* HAL_WWDG_MODULE_ENABLED */ -#ifdef HAL_PCD_MODULE_ENABLED - #include "stm32l4xx_hal_pcd.h" -#endif /* HAL_PCD_MODULE_ENABLED */ - -#ifdef HAL_HCD_MODULE_ENABLED - #include "stm32l4xx_hal_hcd.h" -#endif /* HAL_HCD_MODULE_ENABLED */ - -#ifdef HAL_GFXMMU_MODULE_ENABLED - #include "stm32l4xx_hal_gfxmmu.h" -#endif /* HAL_GFXMMU_MODULE_ENABLED */ - -#ifdef HAL_PSSI_MODULE_ENABLED - #include "stm32l4xx_hal_pssi.h" -#endif /* HAL_PSSI_MODULE_ENABLED */ - /* Exported macro ------------------------------------------------------------*/ #ifdef USE_FULL_ASSERT /** * @brief The assert_param macro is used for function's parameters check. - * @param expr: If expr is false, it calls assert_failed function + * @param expr If expr is false, it calls assert_failed function * which reports the name of the source file and the source * line number of the call that failed. * If expr is true, it returns no value. @@ -436,7 +470,7 @@ */ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) /* Exported functions ------------------------------------------------------- */ - void assert_failed(char *file, uint32_t line); + void assert_failed(uint8_t *file, uint32_t line); #else #define assert_param(expr) ((void)0U) #endif /* USE_FULL_ASSERT */ @@ -445,6 +479,4 @@ } #endif -#endif /* __STM32L4xx_HAL_CONF_H */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ +#endif /* STM32L4xx_HAL_CONF_H */ diff --git a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/stm32l4xx_it.h b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/stm32l4xx_it.h index 1bedbf684..fb496db46 100644 --- a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/stm32l4xx_it.h +++ b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Inc/stm32l4xx_it.h @@ -24,7 +24,7 @@ #ifdef __cplusplus extern "C" { -#endif +#endif /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ @@ -65,5 +65,3 @@ void SysTick_Handler(void); #endif #endif /* __STM32L4xx_IT_H */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Src/stm32l4xx_hal_msp.c b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Src/stm32l4xx_hal_msp.c index 848c9c50e..ff844cf59 100644 --- a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Src/stm32l4xx_hal_msp.c +++ b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Src/stm32l4xx_hal_msp.c @@ -58,7 +58,9 @@ /* USER CODE BEGIN 0 */ /* USER CODE END 0 */ -/** + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** * Initializes the Global MSP. */ void HAL_MspInit(void) @@ -77,6 +79,146 @@ void HAL_MspInit(void) /* USER CODE END MspInit 1 */ } +/** +* @brief ADC MSP Initialization +* This function configures the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ +void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + if(hadc->Instance==ADC1) + { + /* USER CODE BEGIN ADC1_MspInit 0 */ + + /* USER CODE END ADC1_MspInit 0 */ + + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; + PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_PLLSAI1; + PeriphClkInit.PLLSAI1.PLLSAI1Source = RCC_PLLSOURCE_MSI; + PeriphClkInit.PLLSAI1.PLLSAI1M = 1; + PeriphClkInit.PLLSAI1.PLLSAI1N = 16; + PeriphClkInit.PLLSAI1.PLLSAI1P = RCC_PLLP_DIV7; + PeriphClkInit.PLLSAI1.PLLSAI1Q = RCC_PLLQ_DIV2; + PeriphClkInit.PLLSAI1.PLLSAI1R = RCC_PLLR_DIV2; + PeriphClkInit.PLLSAI1.PLLSAI1ClockOut = RCC_PLLSAI1_ADC1CLK; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + /* Peripheral clock enable */ + __HAL_RCC_ADC_CLK_ENABLE(); + + __HAL_RCC_GPIOC_CLK_ENABLE(); + /**ADC1 GPIO Configuration + PC2 ------> ADC1_IN3 + */ + GPIO_InitStruct.Pin = GPIO_PIN_2; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG_ADC_CONTROL; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /* USER CODE BEGIN ADC1_MspInit 1 */ + + /* USER CODE END ADC1_MspInit 1 */ + } + +} + +/** +* @brief ADC MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ +void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) +{ + if(hadc->Instance==ADC1) + { + /* USER CODE BEGIN ADC1_MspDeInit 0 */ + + /* USER CODE END ADC1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_ADC_CLK_DISABLE(); + + /**ADC1 GPIO Configuration + PC2 ------> ADC1_IN3 + */ + HAL_GPIO_DeInit(GPIOC, GPIO_PIN_2); + + /* USER CODE BEGIN ADC1_MspDeInit 1 */ + + /* USER CODE END ADC1_MspDeInit 1 */ + } + +} + +/** +* @brief DAC MSP Initialization +* This function configures the hardware resources used in this example +* @param hdac: DAC handle pointer +* @retval None +*/ +void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(hdac->Instance==DAC1) + { + /* USER CODE BEGIN DAC1_MspInit 0 */ + + /* USER CODE END DAC1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_DAC1_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**DAC1 GPIO Configuration + PA5 ------> DAC1_OUT2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_5; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN DAC1_MspInit 1 */ + + /* USER CODE END DAC1_MspInit 1 */ + } + +} + +/** +* @brief DAC MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hdac: DAC handle pointer +* @retval None +*/ +void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac) +{ + if(hdac->Instance==DAC1) + { + /* USER CODE BEGIN DAC1_MspDeInit 0 */ + + /* USER CODE END DAC1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_DAC1_CLK_DISABLE(); + + /**DAC1 GPIO Configuration + PA5 ------> DAC1_OUT2 + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5); + + /* USER CODE BEGIN DAC1_MspDeInit 1 */ + + /* USER CODE END DAC1_MspDeInit 1 */ + } + +} + /** * @brief SPI MSP Initialization * This function configures the hardware resources used in this example @@ -86,7 +228,32 @@ void HAL_MspInit(void) void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) { GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(hspi->Instance==SPI2) + if(hspi->Instance==SPI1) + { + /* USER CODE BEGIN SPI1_MspInit 0 */ + + /* USER CODE END SPI1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_SPI1_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**SPI1 GPIO Configuration + PA1 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA12 ------> SPI1_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_6|GPIO_PIN_12; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN SPI1_MspInit 1 */ + + /* USER CODE END SPI1_MspInit 1 */ + } + else if(hspi->Instance==SPI2) { /* USER CODE BEGIN SPI2_MspInit 0 */ @@ -129,7 +296,26 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) */ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) { - if(hspi->Instance==SPI2) + if(hspi->Instance==SPI1) + { + /* USER CODE BEGIN SPI1_MspDeInit 0 */ + + /* USER CODE END SPI1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_SPI1_CLK_DISABLE(); + + /**SPI1 GPIO Configuration + PA1 ------> SPI1_SCK + PA6 ------> SPI1_MISO + PA12 ------> SPI1_MOSI + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1|GPIO_PIN_6|GPIO_PIN_12); + + /* USER CODE BEGIN SPI1_MspDeInit 1 */ + + /* USER CODE END SPI1_MspDeInit 1 */ + } + else if(hspi->Instance==SPI2) { /* USER CODE BEGIN SPI2_MspDeInit 0 */ @@ -152,6 +338,118 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) } +/** +* @brief TIM_Base MSP Initialization +* This function configures the hardware resources used in this example +* @param htim_base: TIM_Base handle pointer +* @retval None +*/ +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + if(htim_base->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspInit 0 */ + + /* USER CODE END TIM1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM1_CLK_ENABLE(); + /* USER CODE BEGIN TIM1_MspInit 1 */ + + /* USER CODE END TIM1_MspInit 1 */ + } + else if(htim_base->Instance==TIM16) + { + /* USER CODE BEGIN TIM16_MspInit 0 */ + + /* USER CODE END TIM16_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM16_CLK_ENABLE(); + /* USER CODE BEGIN TIM16_MspInit 1 */ + + /* USER CODE END TIM16_MspInit 1 */ + } + +} + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(htim->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspPostInit 0 */ + + /* USER CODE END TIM1_MspPostInit 0 */ + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**TIM1 GPIO Configuration + PA8 ------> TIM1_CH1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_8; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF1_TIM1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM1_MspPostInit 1 */ + + /* USER CODE END TIM1_MspPostInit 1 */ + } + else if(htim->Instance==TIM16) + { + /* USER CODE BEGIN TIM16_MspPostInit 0 */ + + /* USER CODE END TIM16_MspPostInit 0 */ + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**TIM16 GPIO Configuration + PB8 ------> TIM16_CH1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_8; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF14_TIM16; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM16_MspPostInit 1 */ + + /* USER CODE END TIM16_MspPostInit 1 */ + } + +} +/** +* @brief TIM_Base MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param htim_base: TIM_Base handle pointer +* @retval None +*/ +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) +{ + if(htim_base->Instance==TIM1) + { + /* USER CODE BEGIN TIM1_MspDeInit 0 */ + + /* USER CODE END TIM1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM1_CLK_DISABLE(); + /* USER CODE BEGIN TIM1_MspDeInit 1 */ + + /* USER CODE END TIM1_MspDeInit 1 */ + } + else if(htim_base->Instance==TIM16) + { + /* USER CODE BEGIN TIM16_MspDeInit 0 */ + + /* USER CODE END TIM16_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM16_CLK_DISABLE(); + /* USER CODE BEGIN TIM16_MspDeInit 1 */ + + /* USER CODE END TIM16_MspDeInit 1 */ + } + +} + /** * @brief UART MSP Initialization * This function configures the hardware resources used in this example @@ -161,11 +459,22 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; if(huart->Instance==USART1) { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ + + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1; + PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + /* Peripheral clock enable */ __HAL_RCC_USART1_CLK_ENABLE(); @@ -185,6 +494,40 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart) /* USER CODE END USART1_MspInit 1 */ } + else if(huart->Instance==USART3) + { + /* USER CODE BEGIN USART3_MspInit 0 */ + + /* USER CODE END USART3_MspInit 0 */ + + /** Initializes the peripherals clock + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART3; + PeriphClkInit.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + /* Peripheral clock enable */ + __HAL_RCC_USART3_CLK_ENABLE(); + + __HAL_RCC_GPIOC_CLK_ENABLE(); + /**USART3 GPIO Configuration + PC4 ------> USART3_TX + PC5 ------> USART3_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF7_USART3; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /* USER CODE BEGIN USART3_MspInit 1 */ + + /* USER CODE END USART3_MspInit 1 */ + } } @@ -214,11 +557,27 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) /* USER CODE END USART1_MspDeInit 1 */ } + else if(huart->Instance==USART3) + { + /* USER CODE BEGIN USART3_MspDeInit 0 */ + + /* USER CODE END USART3_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART3_CLK_DISABLE(); + + /**USART3 GPIO Configuration + PC4 ------> USART3_TX + PC5 ------> USART3_RX + */ + HAL_GPIO_DeInit(GPIOC, GPIO_PIN_4|GPIO_PIN_5); + + /* USER CODE BEGIN USART3_MspDeInit 1 */ + + /* USER CODE END USART3_MspDeInit 1 */ + } } /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Src/stm32l4xx_it.c b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Src/stm32l4xx_it.c index 8f827e482..d5e8cb4bf 100644 --- a/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Src/stm32l4xx_it.c +++ b/bsp/stm32/stm32l431-BearPi/board/CubeMX_Config/Src/stm32l4xx_it.c @@ -62,7 +62,7 @@ /* USER CODE END EV */ /******************************************************************************/ -/* Cortex-M4 Processor Interruption and Exception Handlers */ +/* Cortex-M4 Processor Interruption and Exception Handlers */ /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. @@ -200,4 +200,3 @@ void SysTick_Handler(void) /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32l431-BearPi/board/Kconfig b/bsp/stm32/stm32l431-BearPi/board/Kconfig index 1c8e42c3f..cde44c49b 100644 --- a/bsp/stm32/stm32l431-BearPi/board/Kconfig +++ b/bsp/stm32/stm32l431-BearPi/board/Kconfig @@ -27,6 +27,85 @@ menu "On-chip Peripheral Drivers" bool "Enable UART1 RX DMA" depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA default n + + config BSP_UART1_TX_USING_DMA + bool "Enable UART1 TX DMA" + depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART3 + bool "Enable UART3" + default n + + config BSP_UART3_RX_USING_DMA + bool "Enable UART3 RX DMA" + depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA + default n + + config BSP_UART3_TX_USING_DMA + bool "Enable UART3 TX DMA" + depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA + default n + endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + endif + + menuconfig BSP_USING_DAC + bool "Enable DAC" + default n + select RT_USING_DAC + if BSP_USING_DAC + config BSP_USING_DAC1 + bool "Enable DAC1" + default n + endif + + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 0 143 + default 22 + config BSP_I2C1_SDA_PIN + int "I2C1 sda pin number" + range 0 143 + default 23 + endif + + menuconfig BSP_USING_PWM + bool "Enable PWM" + default n + select RT_USING_PWM + if BSP_USING_PWM + menuconfig BSP_USING_PWM1 + bool "Enable timer1 output PWM" + default n + if BSP_USING_PWM1 + config BSP_USING_PWM1_CH1 + bool "Enable PWM1 channel1" + default n + endif + menuconfig BSP_USING_PWM16 + bool "Enable timer16 output PWM" + default n + if BSP_USING_PWM16 + config BSP_USING_PWM16_CH1 + bool "Enable PWM16 channel1" + default n + endif endif menuconfig BSP_USING_SPI @@ -34,6 +113,21 @@ menu "On-chip Peripheral Drivers" default n select RT_USING_SPI if BSP_USING_SPI + config BSP_USING_SPI1 + bool "Enable SPI1 BUS" + default n + + config BSP_SPI1_TX_USING_DMA + bool "Enable SPI1 TX DMA" + depends on BSP_USING_SPI1 + default n + + config BSP_SPI1_RX_USING_DMA + bool "Enable SPI1 RX DMA" + depends on BSP_USING_SPI1 + select BSP_SPI1_TX_USING_DMA + default n + config BSP_USING_SPI2 bool "Enable SPI2 BUS" default n @@ -42,7 +136,7 @@ menu "On-chip Peripheral Drivers" bool "Enable SPI2 TX DMA" depends on BSP_USING_SPI2 default n - + config BSP_SPI2_RX_USING_DMA bool "Enable SPI2 RX DMA" depends on BSP_USING_SPI2 @@ -60,6 +154,30 @@ menu "Onboard Peripheral Drivers" select BSP_USING_SPI select BSP_USING_SPI2 default n + + config BSP_USING_ARDUINO + bool "Compatible with Arduino Ecosystem (RTduino)" + select PKG_USING_RTDUINO + select BSP_USING_STLINK_TO_USART + select BSP_USING_UART3 + select BSP_USING_GPIO + select BSP_USING_ADC + select BSP_USING_ADC1 + select BSP_USING_DAC + select BSP_USING_DAC1 + select BSP_USING_PWM + select BSP_USING_PWM1 + select BSP_USING_PWM16 + select BSP_USING_PWM16_CH1 + select BSP_USING_PWM1_CH1 + select BSP_USING_I2C + select BSP_USING_I2C1 + select BSP_USING_SPI + select BSP_USING_SPI1 + imply RTDUINO_USING_SERVO + imply RTDUINO_USING_WIRE + imply RTDUINO_USING_SPI + default n endmenu endmenu -- GitLab