From d0f0ee56d0eb31e403b7ae07c159f65709d88abd Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Wed, 23 Nov 2022 17:29:55 +0300 Subject: [PATCH] PCB silkscreen +/- marks positions fixed. Manual on/off still works if the range sensor is not initialized --- firmware/Core/Src/main.c | 77 +- firmware/Debug/Core/Src/main.o | Bin 811832 -> 812152 bytes firmware/Debug/Core/Src/main.su | 33 +- firmware/Debug/DiLight.elf | Bin 1029492 -> 1029700 bytes firmware/Debug/DiLight.list | 20074 ++++++++-------- firmware/Debug/DiLight.map | 812 +- firmware/Drivers/vl53l0x/VL53L0X.c | 4 +- .../DiLight_2.0-2022-11-14_220909.zip | Bin 0 -> 98468 bytes .../DiLight_2.0-2022-11-23_153957.zip | Bin 0 -> 98432 bytes kicad/rev.2.0/DiLight_2.0.kicad_pcb | 20 +- kicad/rev.2.0/DiLight_2.0.kicad_prl | 2 +- 11 files changed, 10523 insertions(+), 10499 deletions(-) create mode 100644 kicad/rev.2.0/DiLight_2.0-backups/DiLight_2.0-2022-11-14_220909.zip create mode 100644 kicad/rev.2.0/DiLight_2.0-backups/DiLight_2.0-2022-11-23_153957.zip diff --git a/firmware/Core/Src/main.c b/firmware/Core/Src/main.c index eb916d0..72863c2 100644 --- a/firmware/Core/Src/main.c +++ b/firmware/Core/Src/main.c @@ -100,10 +100,11 @@ static void MX_CRC_Init(void); static void MX_TIM16_Init(void); /* USER CODE BEGIN PFP */ -volatile void loadConfig(void); // Load configuration from the FLASH memory -volatile void saveConfig(void); // Save configuration to the FLASH memory -void setLightLevel(uint8_t level); // Set the lights level (brightness) 0 - 99 -void configure(void); +volatile void loadConfig(void); // Load configuration from the FLASH memory +volatile void saveConfig(void); // Save configuration to the FLASH memory +volatile void setLightLevel(uint8_t level); // Set the lights level (brightness) 0 - 99 +void fastBlink(uint8_t count); // Fast blink LEDs `count` times +void configure(void); // Range configuration procedure (set on and off ranges) /* USER CODE END PFP */ @@ -178,23 +179,29 @@ volatile void saveConfig(void) { HAL_Delay(50); } -void configure(void) { +// Fast blink LEDs `count` times +void fastBlink(uint8_t count) { uint8_t i; - startConfig = 0; - - //Fast blink 3 times - needConfig = 1; setLightLevel(0); - for (i = 0; i < 3; i++) { + for (i = 0; i < count; i++) { setLightLevel(99); HAL_Delay(80); setLightLevel(0); HAL_Delay(80); } +} + +// Range configuration procedure (set on and off ranges) +void configure(void) { + startConfig = 0; + + //Fast blink 3 times + needConfig = 1; + fastBlink(3); //Configure ON distance - needConfig = 1; + needConfig = 1; // in case the button was touched during fast blinks while (needConfig) { HAL_Delay(250); if (curDist > 1400) setLightLevel(0); @@ -208,16 +215,10 @@ void configure(void) { //Fast blink 2 times needConfig = 1; - setLightLevel(0); - for (i = 0; i < 2; i++) { - setLightLevel(99); - HAL_Delay(80); - setLightLevel(0); - HAL_Delay(80); - } + fastBlink(2); //Configure OFF distance - needConfig = 1; + needConfig = 1; // in case the button was touched during fast blinks while (needConfig) { HAL_Delay(250); if (curDist > 1400) setLightLevel(0); @@ -229,13 +230,7 @@ void configure(void) { //Fast blink 5 times needConfig = 1; - setLightLevel(0); - for (i = 0; i < 5; i++) { - setLightLevel(99); - HAL_Delay(80); - setLightLevel(0); - HAL_Delay(80); - } + fastBlink(5); needConfig = 0; } @@ -283,20 +278,27 @@ int main(void) loadConfig(); - initVL53L0X(1); - // lower the return signal rate limit (default is 0.25 MCPS) - // setSignalRateLimit(0.1); - // increase laser pulse periods (defaults are 14 and 10 PCLKs) - // setVcselPulsePeriod(VcselPeriodPreRange, 18); - // setVcselPulsePeriod(VcselPeriodFinalRange, 14); - TOF_Ready = 1; - setMeasurementTimingBudget( 500 * 1000UL ); // integrate over 500 ms per measurement + // Set IO timeout for range sensor + setTimeout(250); - // Start measurements every second - startContinuous(1000); + TOF_Ready = initVL53L0X(1); + if (TOF_Ready) { + // lower the return signal rate limit (default is 0.25 MCPS) + // setSignalRateLimit(0.1); + // increase laser pulse periods (defaults are 14 and 10 PCLKs) + // setVcselPulsePeriod(VcselPeriodPreRange, 18); + // setVcselPulsePeriod(VcselPeriodFinalRange, 14); + setMeasurementTimingBudget( 500 * 1000UL ); // integrate over 500 ms per measurement + // Start measurements every second + startContinuous(1000); + } HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); + // Fast-blink 10 times to indicate range sensor error + if (!TOF_Ready) { + fastBlink(10); + } /* USER CODE END 2 */ @@ -308,6 +310,7 @@ int main(void) if (startConfig) { configure(); } + HAL_Delay(100); /* USER CODE END WHILE */ @@ -611,7 +614,7 @@ static void MX_GPIO_Init(void) /* USER CODE BEGIN 4 */ -void setLightLevel(uint8_t level) { +volatile void setLightLevel(uint8_t level) { if (level > 99) level = 99; curLightLevel = level; diff --git a/firmware/Debug/Core/Src/main.o b/firmware/Debug/Core/Src/main.o index 79858ad72bef808bb48c78279a8df1e281dfa3d9..e0af86cd64c9ab41a4ac896d2802e2d22c695bb6 100644 GIT binary patch delta 207586 zcmZsD2UHYE7jE}VcTZ31=}C$KMa6&#bIv)gam{&Mb6Uf$VRcYc1VzLV0kf!>5J9qv zf&oP_g8>y4Q4|A4KtO%p9sK|IzjGev*wr`Rs;+SBR*mr~jf*Zf-sEBlYOZ7O$2X%V zQ-`U~)?*_(tyZd8fG&7ci%M1ov$oX{%y9)%;#_eamWQ zj%OLI?A=gpnN!8Z%beII73Udh6g!nTn-*7EysgX2J4ro~dL;JXB0Lg3VwmI2`;wmK zeOWw}4lPX_?-idGJ0SPI71tfN$M6QWu6>YDsb2NIl@>Ggp5Ceke6_yYJgPXj6%O7? z|Bqw^dn9jWEhN=Y_e)9(DQ(|O52}O8!Oc4)IfobImq%h!4||%>YD}4V)6&X`s zRM(+Kyeao}Vn{`CjqOa?o4zkot?W&7@F;F+9Fk=ady}{)J1}2!lX^sTQf&~*jjzNo zoTK46*3d=C=+d95m|OO2eRbQy2P$U1az;6US)goFnPHYGpWow{70TO26=UNJdI6Gu z^vsDiO_v10|M z99Ote$&}~Jn^lYx=fSW{1#X#}JmbvptiTNv8R2@oic!u` zx}mZ{n}6WDTlpXKzI3yK;p#cLp`-Dvs81CbUctBURoEE8vyF=3T36^wB!z123XnKn z86_}+0jjwH6~+>UQ@syh8D8Y0{9$Hm1&-mSSNMl0qN;8-)t#R{XCd)DQ9;zXrGnut zCLczsmukTC^-tRFa_AEP|%04$84Z(*+{ySOd7$ur6`4kRaC^nvVI2Ovt*K5~pQ z$pPpXp@V&fT%8?m_m$mUUyTA=hT^IMCOG9iwMoe^lK(icKQNOi_;SSlRJK&!9S&Sp z8BV$ZcI6WXz%fEUyKJoCY`G^eN;6w#Ue1Vsx0W(Ultb+Ujc$gvrRY0OWjH5!x_zCo zE?e0iWo%N;_x)%Wy98^nS3_pbT=A zg=k1OEQ9JWrfT*-O*L9Ss01bR%8;Dw`zN5k${_ECUD1eIgZ%a&;LrRE{OD z*OWmcor-We%t z5P(HB$VpD(2SNQmHMD3RVbmslx>B2ruY*~R>tKIT!Ns=ilZw%{)6(+8NO{K@M%&E+u+q9+9HT93Sx#~q zhBbSDqnSnNRDi%}hdBV9WGGND+K~=GmX4gt5s7j4p+0oeAMOEv9;w%;0k5;T>3*W^vI(LV5MoQWT zpsfFJQhzj+uB_LJQn@iAqia#-9wUs6133}Mwt`-^ne>&gFriekB zJNP-N&P4#N9Dpe4Ckc%HKONH7MtuM2kuTB#{HI5Ln9DNy?hYX*X=b#7(f4uy=#iIt zsu+D=WlvcB^V!9>(0|;)$qQ8ap5ku6&P2pXA>n;jhjr=`(bbS3>sxsT!3C(@s;O7CUEL4T$Sn$3n! zG$xZ_^hs3*g5)Yi$Y_IeRVYxYBl%*u=`U1?0Z>+e<> z1)zC(JXba#{FFEEtp0D4KDmtg3T1L!B2=G(Q-U2VQvFnm{zhp5g;YN&nz!_urw zmXR7cz8534LdTGrIsi^8tpG|{M-rtf+mwv-pXsl(1}ML#Kk4u@Xes;P==6`?s~D+| z(if_Am8AjdVKS)aGa)?4_RC10DPS4;%Sh!co{@$-08v`I8hS@L0G$-k8NfIPAWMrD zLc_0-CEaL&czLRW;=~9E4`E@3@*^yYWKAbaDe41ccF=3+zU<&*q>PUhA$7$8agyO0 zd`NQuqSQFaKBY=6x7QuO{zmUu{iMH#2#oa30dP`yC@A?30732>drXz8E~kTebgnZ4 z8O$qn&?yz%K-5dgZC{4qm@y5vf2rbPso9q%AFeH}#cR8AjDj)Eu-B0d?yj z<|D?`&pxKAi>sLDuIxyOh_uAelK zRnIeFk)wHBn#|TFfRSk;m;PjH(O2f=s)4A_6t-3-L@LXfBT=ELZ0*0n=_1oCFEyLa z)}sD~$OZGfG=r_x6s+y#raIV~$=2Em)(-OZ1`wRZ);bEPn_SoK?lP85xBI$Ou-(0_ zWDLGK8V!u}GC{={HaY->biFA6KL@}`@zZ(6u*m@k(x2l*#^A4`*%$5F1gnT)v+^cX z>qNGidW0F83U>(%TU}fBQO-6{F>DPj+2EwTW3bY?Isj}ennjhvm#C?%4IxYFVkIN9 zwZvf3kmHJ`uC1kaMjC?njjiKQCrTIXBda;H3HE=gRh_m!8>+jRBVfF2sjj^42r%9M z7vo2m9{+=>GQXz+hWe=5TNtM5xWC{~UoE*^^E|?=-Wxo}dw=~~cwIHa{-auD z+tu;l9H9IO>MvtCh*R0Y8fuAOm|d$NHROLWo;P5AsD^6)i^sGEjr05eVsc-i6Ak-c zDgPtj8UDYR&#psZY=j1};eQk*BD7>j{tuH&AA4f;%4~UiX7x&SehmHMlKNs5r&5@rg{r|)f$x)ZU45nt5Kb8ZXaKxviaROpivj@6XW3Si~Tq`?`O5_j~rN^{z#|M8^84%vcTI^-9M2 zRv{eyuO3&QFzoqzDlOEGE~ZQ^R_2yv&;z?iO^a=cgw1^?N2R`yl;cs1H*EadVvVzM zRD0Jk3as`$$^@%*M;unZnwsLU22PNn7pE0qb3$i@nMQ|rM%#+jkmPT~aGsirl$JGR z%|7+f&(1+57B~js6T|NK2Yj_g{>qI|euPcI&b+qoY4qAd#K|yw2)ko980#GTjJ|V7 z(ULla!ha!CJG>GQOUn3~!7RJu9`X5fbD$eiTPggfxb+jzRhKFp16bidhpBDTbLimn zehE4Z{QR%rJVk>t!M~ZB!&ZTBx&reWrYi?u?FukZxyXU8NuNjI{|{65!A?}IqXI35 z`NHAI0r0sU#)83iR#>7CmMi?n)I)<{XM+0AB5E{-GTTj|q{Um|KZ2>(@E6(Vztryk zp$=v0_xMFElk4#x3YLWi8!ec4s+O4_3O05}11+Xh_9yG`s0>v%HX4KR0-@0Ur4BZ8 zMfl-#1Fe0Ptw<}G!hf1uco1rr##YL8z+>DzvAJijvE^vVQ}}mc8VtgoirrGC+oQ}} z;0JiHs0`K1fvWA54z3=o<0GDSpcas|{;yfa#`a>%Y0)T3|9G2Q#7Hz=Z?+t5pOpTG zY)r%b&*1zQo;nx(ZNWcwhx^uMh^#L-^dX1>rcrJlOvE`bBOI9Pu+Z4a8=pVUF?JOG zbDK;(}w@$s9nJY!;slwuUx-| zk=lU%sCDRXi~VN(nf9pqmj5qhTj!U>NMKY_@#R!r$Tc`uq+!e`mnh51d6jsVk}KHM zRj;g6JM)_KUf|Yoym0&^5+-65zT6!9(FRS}0rsp0<=Hm&f(F$UO*-2vHXN^sX%1Fr zC*Io2?%6PmJz#I-Zmm4sshP>GK5U3h=hZRn#ZNw`c*(bU?vpeiI_iBo^$Lt~Q zjTKEd+cVs&YHtrkYEbFany+HF|8%cDuGuXpse}9t{y5(KT`C%@efu(p8+YIp4=@sx zLdP=tFAGgN@rqW>QA4RSU)vQsZBA+E@{1;Sgw$~8dVU( zI3!s4uF>|yM$WdLFOZXL(*AFx6q^-cM&p~G+=}-W|JqaxKd|FNq&6wNi#+HO4$n?) zkX~fI)Z+0RHW7(MM)o0$7Kt&Qc~KYHNakZQ@hdStc;;#}QJ)PV*_1S>WVW57_kw?5 zgegt3kw8omJ?A*ycP}6TdvAI^eM0!j)9C$bGg7zz7Kts5B78Y)J9*~G@8k*>PduY1 z5!Hv%qs*Dc^c?ry;nry4{~ceMXO?4i;+grY=-s+hu%XCkM*hzCB-Vm|i1k1mk*`)G z))ouMU!6$!RTqfUV;;HEBbE3!yeCX0?9g~7`VL{X1{3vXf0F8og_~yz^T|2k3hCTD zf%MD>C5+^c`GRM5A`ikdvz-YQgZwzM3@=D*>_NwS8&Vg1mdyOKha9Sm)reE zJ#p$r5KnSN($F}Qs7Kz@`|8C+9f9Blm3c+az>DPQU=O1DpMfhjX3sx_8ugvXU0vuY z8t7T{g768u>G=tJF`ns}MPlDd$Z#=|iO7B(C46W!VSebTW{U!dr&0zP9Ha4@dp;w~=vDM?Yjca3#0TW{qzzPKX%;MrI_iq_9nY*eNu2$@lPvd4i$U^M1DqV{t%dt1k+sdSh0oLfm|{3GcZ6H8vHR#bLn3N{WAMzMPqo?P z=pP3hgRl}d8ay*Ef_Op?P~+Eje7GT3Nb`oeq-{tFQMI$^Sqx8NgK|%fB`40jrm!oH$03s(ix@7)&QsnG#t00r`$qt9w zJJWktKYDJ(VFJ%&IVK|SCWPsOqO*oJIT{k%LwCfnBE(gBV!?S zI>Zd>L6|19h`J=2RNuy~jA!mXB}LI~Na?P@^lnxY=N=_t`Z>(IogmI34)Y_slD0!Q z8^DOO{YeG4o5Yr_CZ@6V$>fSP^sX+Y=RL>l)*zjDlADt-cg0aZ$CPy_klt0u6=R4d zlWdpE^zMUQB36WAqV}&$@9cBZRxpe(6&yTuhuerC;|!2zF8xXVmODo(uIJM8II`_L z^SqGoZ=O<(KkXy_jBLW#w~)F=h%tG_bqnDqU8eUgH^{&jhePEy6VF4ej69RxoV5A2 zBI=9?;tcvjr2Zf3m^gP}eZ?YCNKB5^;c`Usbz9;^A-$>8BiuC*>5oeXLBwMtG%-^m>?@msR`9HE7k)QV?V;@RL*gTD% z*Lsjr9F5=^k9Zudl19Sin$Y`^0(#%Njh=iBQWtTT%nJ=kn<{}c_#YvBfn(t9oJ*M0 zT;gePo}}d8@NQ#r9gUfSR4C8197;?RdlPvRM;O~zdVf+(N+WQ@1~G4P%Tk*-+dC8u za(oo0XsW9?k)EAS6aV3J#NP?qTAs;wEJ!Xsq;1`7a%<@@a>bVISp6P*5U_GH5n`f9 zAb1OzuTqoD)Whj3*77zaycy{&e3To+Ioh!<+~`KK<@StGwTm#|rCsQ`yeiI{m>DC<@L$2?`l@2m zQ}-+8KQyC)p5Ji3ATSYQr~&I@6A7h$B;2YK;VZAEI<4}ddXymFhc3B~s3%>B+6!4a zftfm)o(ujZV+ssBfmu0(TxoHH+`5=W?uKEa6PS(Ti6{6Fol!Ho1X2`|OMW%`Nj_e2 zEF?!UPYF!>JJbd_S@b>{bGyKt^CmNo>(O%vW^#d9R7A!aBl;DXVVGzIrj3E#Cu84- z9^hEe8+g$BPDgKW`#_b{rE`w>M}ut+g_z}sy+G|;v6e7=oivIG8`=v|)7G_TfW3Xa z>u|F}@hmvl(RmZzJGpHIPv;^Uc3p1ZFoy5y(Fpk7;#WxZncf)heLtZk`F?9D0_@-3 z49?$XQ5PK$wh%l6=h-M88+4i$kip_q5QYp2fWXkhd%^mKb-VN1@B>eCYMqX#Yr&zQYQaQ#osV_>Gw9s||$U*iys_hPr>ID_BB)}M}I3pY~{>7vM__yU7bhEL+_L9-L+0Gz4^>E$@O|6g5oEXYat= zbTE?e{OBiXc#au35tha}H3Q?gKG@^&<3APs;&xp~OJ?I>TFaXJ5dw~;DY3vbGuDEx z=JUGPuv;LtTmddZ@Pf}FG=Xa4RXoK+9BlIH9vC?ej%xlz5UleCqfqctGGog-WA2n1=u;0!-h;5HY?`oAX4q` zQ+RjZHXZo(W3ct(hs>oQdG^C3P&csW+Mwd0Y>5WYY1U~ypzCb^1Pp{PHun0nUrnG{ zsDu_d2NRD_uU{ytS-%o?;6j6R#5h93Wuq{t-02>M(8xU=_{QVM0pBEP9ct8c`3^YS ztPp*kZ$7&-{Al4$p<2u8C*V!1TS<7fzPBC?+9r`!zOLS*A=PKG8`_^ATnEF4AG>-W zn5K20rua+k1oGk#WIFhj?8sdBwT_K!0bV=1koH)CEdLYSA*`k{iev247C^?bL%PB1 zc-G;30_*VpBKi=U8_e)#N-&RdF<{=F;CVW<4|#&k89m;Y+0k z{m_)vR2^ZxX3SMIVeN*Q@T9jdtt_h&Vz@1R<=6VIs=HZV}`Ht2;Fx$H|ZB>TsVxY!@ z4WRIBC3|B!6s=;pCV+xik>ZSCcK!q)x3QPkK`MluT><{@V{cyu%YHV224pz9Y5`b| zvnA7EB!ZoO4s!7}cIG({6WEkx08g^|fvCa-_U2>AUu1K8gEfVn5()F^Y*s6`?crV4cPk`1b z8g_!ttqR*+y1)~tcuDJNkis+t#85>~q!9Rnia+xJ9a2O;M-i(Cq$N5|v2g%Q#4Czv zSCFC@Ky|vL`1dyyHx&C9L(4tIn<1b*Ry^zgEm?};U0^p`@yY|Vmx?=opm?L0wFs3c zP%N}gr(|WWE9!DixyKDzAo|2E?qBe%krs=m>+3EMtXb<02t?}=jD#@X)i$gL zD%b5_n!I}EJ%uys>bJ_`xsgKi3e)9PFaAQ{3NAS#jUK{HlKR**! ztoTI>M}R4mt=1Dd`+T6wCe=hoV@Jag%^A5ysF>t5P9>XkMx{ z1K@$LYV>kI0jiilc(p@SX9YO@ME>tz4Pxtk5%@56Jyu6(XHqHuaGV_)MXks-T@CIi z_ToI~jb^j|LGhIBh06*2Gq%#h|>{>q*FWE^H8RxP?s3BgnjSmBv$5xmH zff6>S36zzxn`rN4SLlBOa*Lwr6KL70cud=tK*fSX$d_Wi-Ar4iZHj-QK-{5d^$HR@ z6+6h8-HMLoQJ+1ER$Jjrh{E|jSoSG);6Q+nQLLgAM66;&Q<#reL}0q-6BNM|lYLc8 z?F6|3MRgnp@(+3TU%3 zJ`$W;lyyvC2~e)cKoO{HOW}Ty(vw!?Z8l}4dZ_(&D7~4=JBhAag_+_Y74#s=Ry^mX0awA)MsHm3Pp+`3U8T7|%W%(; zk5V@AgLt$uyEatEDKkrfj8~qx4VIHiTXo!u;7=)?cLAHI3>uB%jB?URSV~sTnFmYf zlo`~P7nIL@zK_}$%l%pwdc%xiOvBrC4LmTbn@|7`LVB(W<JW_<}#4M+{NxdZs$7D+^~bYPjS;O&hiGx z-Q15@v_%Nl9~VRTeO$v%l>a!u8T=p^%2`^%(?eW+J)px}>QcyuaZ?`yd5o(>VM_$J zvjK`o?pamPqBt{cYooblAwb4*ew2rbMh2cw*08kqDZzfo-aZL~n z^EbHW)Jtx1*@*Y~+uY(DAn$N*Df^Sbo#+hcF1Lp|;%9FD8?cmcAMJ2^9sjBUs^rbr zL%i9Q_u;pyz`CBF=Ltby-rNPyM&7?RB>ecWO{mOf{_T4p?R?X#5RBn}KZYWfkEB>S zj(=*O-=n&1`F5y2!*{|pH~uW|(h*P+A1r_)mH*rt(pUIdk3hS|H;P7ai!Y(&_%=W1 zA)q__VhW1x^Kt_e4|p~QUT5mU!$Kjz(z{R)&^UQqB?J&m#zHOAAt>}s-6 zqP3;G4V9#NQ%58JLzOlkwha=Oa8@H(5rx<2KU} z((!HUEP>K?t!&2(yNyJU$M>CzyQ=(% zVq8n&r!M>grOR+@7*h}%L)~c;JO2_WJK1aP!4|@%($_u6Hm2la7#o(uq8~-FzdiaD z+XS(5XtV^gsjp#k8#`tLgpYAKl(h`!4$TDZIAjhP!-8daYOZ^IM)@R#d5ig zVKk20Tpr@5I9qu@r@4XzK#APkzVHrRnbyy<+!@N8CULeoZ$V7vey7acIj#e(ljpew z=@7iYb*>BAMJ{>}iWDx<7syN8rrMCd%zdQkGnHG5lPYxcp_8EPDi^U5ENNWaaQJ(T z(+vj8b?*9FxORhUcM|4raxQyd=oU9|8U${0J#0xJ-r@XCfHj>P$AEaBTSigE1MV$t z-!eI!J6IobmllEch`T!n<{xuS9jhGIem|gRoP7!GW^<`eVd6RGPHC(hF7qT@d z3uG>*p%4Cw>t}_s*Ia7`P#$-xfcDXExgGmayyGtRg_`$VXcJh<=WKnPcs&J8TlsYq^#b3V#`DlL7YIqUDcW}fA{HsY&6UP_dgkS>yp0=WShy-?uK5W%Et9g7%z0K_Pbz?{0$57kmv1?7g({&t`)) zmsfp+H?R2Om4IIJGlzpGk8f2TuD#)%`a=FK--UMH@A%fufPBvvU57wEZ&U&LfU%0= zBcI$9ET8x*QLyxxFN}qjFMJ#YDqs17*j)1k{PPQtE94K;yj#TEp5hpe|Hh9UiOLl7 zXDyH@;U~;SQOf_`8MN;t*2LwOb+#V7pb%Xq2 z!EX;(jtE69Ab3>Bj{!@V(B%S(V?zB%m=70TKZ2vjh0qXiMhK_7qlgraw1@Z!A^jeT zC}AS*Mexx=>?_E{2nNcz#|l4s&^jI`+*k)}yim{pJPE?d?x@9Sq4XG_MB&gDKxc&T z50E%3Oz#gUN$^gD!DJyP5zu+TgTkf@!nJ;|bWvDE;o2qP#}jWC!a zH^NRIAm0k}DIRzy^r{2odqGcYb-r-%I*N~ijRLbzLMNIZKMUh&9r_|%SdQYW5abGH z3T(oKiXavV(G=i)6RuLYS1ddm38+Lka38Lf3V-3M8vkARi3^ha4`J632>cYjjRVUn z)pI(fS)-cz49K;r6SOV$Qk|no#9K9zwzWR0&OK54^{QU9I&V-7c>@+-)jK+1+o-Zt zqBPScRU|DP{wj~zkl3s`jr$+GUF8)7gIiQjX%+}j)u(T`RkgYrXhEtPbV?Ges$K!K zZK~;!(6&SM{w%7tQ}wwWpj|3wN{Q@Iy*LYKuj){BKq0E_has>})nX|)_p8R)SeQ7d z8c4zFA=PDC{|>9Z$ARaFD(4#{j;gpCfWlNol=%r)xitauxT^FhyogZMegW?zRRt8B zpHR6NU@1z~U?*rXs&`i)5UUD}L0iPBerf>4tIDl`y#&>uDPTFN>SLz$@09As5)`LZ z%7?%vs$wgE^^EF41d6k&CHX)msRmO{Ia#%eGPCDYKc~asc~uPxpDw7X_(1%kYRF?C zQ&hjvH@KwYX)d{}YN!M)Rdx6<+`ghJdI{Q9)t#GAou+b*S7H2JQ_UI&@VaVE4vHJ9 zEXvm0RLPXQzoj}&Ny^(QJ?%j6sO;APrK_&eij|?N(GRDYfa z=UY|X;eg($s?eJJUiF>!Uiqq^4k$jTe!PT$?X&9KP{@B#)pQ5XS5+o1{_+K?1FrC* zP}L_MP?4$&?G(PL9?-E`vC7#K@+GQ0xctMHsy++{^1CYVBrN? zzf&4*gZQ>1yzmv}9I$K@JrARXe&TFe6gP<>*%0s--&F*1i#We6I0MALDBZnP>`l{a zpm^*x%m;}}6X0mD=#>b$ZKACeEx+5vy1RhgA!c>}cBj~=JF2!zoKqRd-QrOzpgrQ{ zzrYzHh8_pBPy9x+*M4!=XE<{}G)#xxP_cL>kO##b8^Ll&jO`2LVR0bkqmPISoPazk z_NRS!nCNy3$YY{tON7#Ju|6$_k>YCF;+zoMN$@*LTzMC)(PFJ(P!l88Jpfv)IAJ_| ziW9T`f}`=`r$|5vV(SSgPKtw9K+7rdUPnNu#UJeeC5i`^LCYC&O@A0VD}JGDShDDz z1?Zf(WG3sh3*UDkQR`*C_dQ*gDK+Ka$vnAj+uetvN&}yBvQpES%9vHgK7VJ zRXjxjdYY)BiSe5F`~uv*F5WIcaYH=S5Xx?gzgK~>JECtO>YFaUN4}QN5SJVV?XI}Z zOylpKc(*g;?~4s+uk=8?O2a8r3`~KghhordARmc;ECuqh_>fKmv&74k1$Zikz6J7` zSW1nTEoRYz`&_(8d)ypR+yT2U#99=xy%aA@0y0-z@i&mK#2$-KycSy`g=gdQ#52WE z`bPAmI=vOQWZREru2e7JpnH`%j?RKS)n_OSU9Ilm7&+>-6r`K7D& z`KaS7g0@~=o+hsi>ZDpIeASle;M}M_MfWNE)VosP%qE*U^$1w~)&CZv*sN|wU)!#3 zMT^uHb?#MI3Q$*j0{6G750UObbq*b#2C47UmMd6&hvwI9>X(5)ZdWVF`yFcUA8=-; zx)MdmyVT`9P>J2@mN=B;_oz3~GPYO!<2#@bwevDcBJ5M=^#ZtG9l0EK52)SgbR<+= z)$TvcV)I8J#~)EI3jkx7`tT=k98T^Eh3;f^2E{z*)bpIsFz40pX>)Wzy+;fAi|QBg;7n0({{}Ue)o1R4ma49S z-`w$6)Ia_J?W($FH*lt@j~xN>nmU;_)YsML>VtMu?R^RYx6~KW5%}BcQQH9BQD-32 zi-Dt-d!fiszo!J-U3KzYsJXA6-~sm^sBtM614ccJZk;_;w`&FDBlX_8aR0G-DN?@;2lP$tHvvVlS~?1W67|A^fJ)WZr&5IaUA>RG&JT6w zKA8Ba&c2IcrKU5j1FJNPX~po==;wfCwWcY}8f!GYtHAtPO>Q3)UYg~!PhF>}wGWWD zW_dppKAP7wov+tCw}ZAp)1f6GU(MQEXqkx<%9K z5QqVq1sg!zs*x!p7^t!Jg?x}^4vpntO-V%{w`m$v0NfK79@Ca|Fz?h?E>sL|#_@Q~(J zI!qkaG(QC75zT=GKpxfn-VD0KG>Z=bI<8r}03R(vQ;sIBNKLJlP=AV&Eh?f zi`L|=MiHZVvmF*-vyX=1Y0cu%(4D9e zDQkX4^L;UpXEh<;U?NG=g?ezZ=6E*bFKGJ5!Nf()Z!S=pqM1*}N0&4QZiDl(<^wIT zshZ_ILA#6QCYi{2I zl%+XAkZ$+BG^U(H9ljMw|SX1dTw3TQ^Q`lOn zxkMA=cg=JfF)Ovk&45;Ew@`AyQ@e$(Zmrg)O-8XsdlXmt`L)`wx1rNZ>pTMD-dZ0D zHhi=py+K>A-G*J5jo+a4#uX3VS9_i^EgQAHt3lpR+xaGVHfgg9Pz!(Ubps4;(MDfJ zlLTnf(!jY@8%oLV-P)N0U}BGU6HRG*wY9@xX}@-Mb!a)Dy-nNtP_6kSSPpAnwFY!V zt1yA(sCEH`owhJ-VgZQ9w2$aGJY2gX8U~MRYm5dmLc4DlltyYt(u90M`!}8WMrm7U z!4j?YqAY5Rws$&cvD#wFFU4t3d83HeHW&rYQ`)!rFmYP@dJB+=+6*l!k)(|r0G-L& z%$q=-vuWo|0M8w55~ZTjwL^bEX@+(`^)CUGt1a|};45t{N;$mNUZuD*PrGs#+<&7TZ~}sFwaX|re5W7LNRwx=$CB%sy0ZNcDNqjRS7(zUv6bQ{x47fd1EI$fLfH2%DGCxXH1 zqq9=3ZoTf35#~4OPSg1H)x~Ut;6`2ZJz(+EwW9N_O}gcSQTXc~Q~hcK7S{_5yT3mqAfksBV2H zh#%JFHb8Mir^fHv_@lZT5)6jvTCaq%W4d9KV+hynN8-=MAJ@&J&3=TgT^_KJx*=ns z^n@;owo_3$k&+D2I{gCBVsv%s7Hh0-J{_&b=>$5yiPxQ>4MBqLB+*XllJIjg{**57 zAjD7WX3^Z4s5^56#Ti{xa};NF$E+xlbRXY9z?Q7*MVpm#x^c9EoYzgG6xaow^(~5v zIx~e0DY`43XrN2F?gl8mth-DJmsFj816Z!;ly%|#Ro!A=Kxw*kJ!sc-i47rlU8moT z;)bq-R_L3$!_`sT(q)k9+q%QvfbQ6ICmKL$y6#*Ks-2;0z8UV{)zzk?%01n`J7D*| zt`Z&hKF}plJ7?-fQl9Cdu1y~lk976!pm?ln=>fZ0x?oy4p6G7%g3hP98+4uEnJ$)6 z_1QYrAD}(gjXwZoIl6I`Vd#a8jO& z-8Z`20ieCrHK929oo)-|@89d1EQZ~DU3?o9A9P20!_r6H#^qr7q!VSB_^ca9XEa}Q zo4Nt{Rkw=fq5|D>O28HBR@s6;EYh{0<@cK|U>M|!b^I4tD$%V?KvAk|Gz6A@>i(tq z)kB}>1vM-6r|DRHm44QK2zcsWE(GUl{d)=}*65E@n6g%%PMc;g{gt~gxK7`z258=T zEuF;p=PJm$kGA*hNmzQs?Viu_CftXN-iGKucZ^Z zBl?kTz;aaYx&cbV^c$l99oG+k43-G}Wx9zHso%dAmZJ53`KU{begvtG)xV?ULV|uO z60A1-IB)Bha-iAn z=yUSnO}f4(wR47kB5hai>gOi`c~Ac)5EA$GPbi7{Kz}zMMW+5$6?pMbzn+eO9_bHG zhPKE0vtJ;Pr5{H@z!QBK-PC%jPqBdZOy8Q;#%z5a-FSJf{}KwFIr;|~5O`tJTl+xb zrGA?px^wkM=-$CA{kS6NeyyK^-vsk{`uUW0eW$Ot4TA6WHz*Fw*AKi8mJj-wQE=v? zz6wpjpY%yom(O}%`XXQSeQ2ZiRezB#5*Fy!&VyW`{_<9^6zMmvf}wAE+cLU~QLK-m zyl06%y*GGD^^NGh!*_k^H55PeiF7>vQ~!|SDi0|<7@RAm?zE9#EsZk5{2Iym9^}?a zPxiw@FZ{9{v~|)$3Uj=r+4mvmBc)L#)=QVD)iy}WDJAMF^|pBd+$fpbz#BiwMj6LV z(iaav{?b4S6gEq%XzOm5(&xg`7O7k^kO5Nt&#<&rdjAhx3zY6tp9zwj=fl!=sTGZ} z9r#^6ik;F!O8o7T{-mVSZfU}FDBC0bVTRmZ>3)F?*bu2{N9f)sWzjYE{ZiOh6bGb) z4Df_XuW1W?P%?A^%OR=jAMo(7RQCd)BT@sbApB9uL`T(OQZu@`a!ksb2Jvv|0`>gk zlJEmigyc$-P^1((4agIcW+S|ak`hPIFD;^_-5wB(k={>&ns{mAa1axugeE|qlxp^d z;3;WbTNJ0It&~nklul8e=!}%#2ind`=|^B9Ny`5h6-}1zQ%35X^yv&Z&r7SR)l#Hm z*P-l^wBjAKT$YBO0B5Rn3fWH^e?>Y#qvNWS;tHNL>A-amuStC<+`ld@qFWa?BsJZ- zxGBXwg6><=NghfcNGqm6AXC~;WBZ|W@gJ}}lENp0<*_up0g5asyb+q~i8PP)=TD_S z6_9%-X(Z^(meNPTtnIl}ldjq3NRf9S@k07eDZiJ}ii3c1CC_z$UP+y4jJ%dy7X!+Z zI=aE`8|f#uul!r-4joCpla{+d;Jq|fveFc?{mKHmqy}mNka$SK#Pc!$(R> zco}SU!@#r7F!B>XZ$o+jwD}lrb_MHtLzo57M#H+-fcy+si@>?bP~-t^{)UNkxo)$e zdTYqp4Oi*r!WM(#BXkECa%X^LtHIL^v_Qk8mneb^t)_q_*l^)7+}>u`Pn+27hC-X; zXv6RmKVs&08n)5F-7Z6mY{>66w5D5Ydkh_E*S^@%Erg+|h8Yce(+9AV2N=qCzi1#3O#4xH4preKkG@*tW8dL0Y%&;Y%PAI|+ zt6QKrZnzc#!3e`pO5;Qtaw#%DVMwJQKFY9z;)H0!xEm0RF=SC?Vht1Ns5{Q!kp^VE zVcl@JmSFIG49=5={gfp;WthVMkXH>G4?%aDAubxw zHA5uM2>9!U4m3D!7+j|Sx@kDI2E{GIVG4+D8=|*E%N@hRZvw_&x}m=_EM*u{$^(1X zkVyNJdxm%aLgK#R1g#kl487L?nQ3T2JKTqc&S6mV$l&t=&||}8nuM|p$Mi7x#Bg;X zlsz@X8Nl+)aF))Yvkd{1)p%}Lb`wyJq3RCMUKnQ32G{n|;6=&7T!TzA>MKLLULd|U zBwmBvJVSsFpf`pQl-GW1Xih%@dS|G85uEQ0@wmRo=Nmdv!1}@9nu+40VZ~oC|H)va zdHJ(pcu$CbG2Gn+xvz#El#eJfBvUl`&9Id+X~i}}+-G1*41ZUEZ>5GI*WuK6Lol7l z{4ku5VdxzB*~ly_2wXtiAFC$z1RA5orbty~fU7B4xC zk_GGJd*8w7Etk@2<|7Yb!LnZNOzDsfvTax4$He}Q+PzqPK0a6%+h|%&_iaKKCN0eHMmG@DyB2E@Fz#1=meuSk2IgSoGPRf1@ z;o&K{MkR2bmMhZonJAym1MQ4Ffl_d1e318V1M;I>VKgj#l0VR7@>$NF2A{s*zs3T~SNZqn zU@4G4(|)y3ZbfIkMY3EB&TsO2+QF2{he`aq98J;p4|&R2KtFBrm?aSOFlIf6#7g6| zgTSsb`d0_i)967V&}!otD`;zsHE*F7YmK+Z!EZ0)1^PY1I^(E4VDUEgqD+8~F@-|5 z^~N{U*)|v(Q6|9G7!(Gb8;v81AmC>Vo(tqA<8mJe_#15-Q^C5~SlAz+-Pnq57Hl<^ zivtvB{I(W;2O00)KoM;0OqUV284XT=wi`{`Ah*LfntIYs<4~&MF5^+k1@AW2se@vV z@d1sWy~excQQr{blo_zQ&v-WpwEf1v`oh8iW0Y+Vu%X65bbfKrICl$795N2N1c}4O za5|1YV*FMEtVfN`G~0$58x2Eo%-E;~I3tXsePBM)`1KtGP8b(bU=wA0@DeQ1#;NrI z#TYY`V2L$0s10Z0jFSeSh&QICphz&rm}&f-G{y`=1D`Tln?TKJqe~oIOf)vB05xZf zn!_m08bdljBFWgp8?T3n;}H=mgG7#(Q)~ ze8sqwjv}ubvvZ*(&G_*%T)SqxvXpMfTsKZ=4Z$16O`TEPH1=EqFK!vv(;4V(<5AjT z-Z5622c_x8Qxq;_7!RBQbk}%cGPK<@E@}&B?i+uj8T^5<^>{#;#shwkduaSI23j5& z$E|`hkB!>1fU=C=Y5jU)yt$B0=${&weTU#Pa$Cy(GCSDkq zQ~dhUSnml0bB&LeL*SJ$nKp&5jmy_VAkSDZ7be~qJ5b>H)_9N3hu#@~zYUi6#uDnQ z`NoNLQG75a76bXwDDQ(7+b82N7P>zhAN~cwFGi$CF`SIcyP}2##vDo?6&gR%I4UyU z-wpY1#yT2!QEbdy2)PpD*99m_jd3*ld^h$V1lkYd?Y$8AX&gldG#;i$S zm8q~U40)O+(1F8ho2kDY#5Jb2SHZg0bepn^UZy+>bJm%r^@AF3)7M#G^)YRx6Vdgi zIW(tiFy&AR!PnH8QrR0#pG%>|&oqg4bDKN(2k+g_8` zDpWhf)SE6s?K54VF1z29u@l7sQ~5+V6KZN&3(5|fuF}@@kST2iv>Y~t428c(Ofwfi z?x^X$Egss!OdmQy+cDGYsSpe|NzXw%Zu&SLf)S?rwB?F49c~NVCrn58fiub^t^pKn z>O31tV@y}RLrbjb_kUn8&J?@?;_;?+l*COiZQcOnNfUxm3^CKh=@36{%BNgIqRBa( z_J3zgfwVTCHEHQ`WRfZ01yHgnpW>TyrZE&5oHtcj3h08#QwNrdrpdHbOEGPs--BE- zeRBkdrjd&QrJDNCea|bVffQ(8HT_)-xir(Hmng28_EVgF-E`?FEZi_X8&3Jpo2DN$ zzuq!+rGWXi>CJ2i-Z8asf|_*G;3z;DrY}cP!@H&-L4fX=V(HGsebeF$$UQLS-iA+^ zCU44GJv3$XgWMxiRXdbDHhELBAj{M@5G+qj*+XIXsVOP~a?eaPkczhP*`|MkAo$$$ zlLDh0Q{$76e_@(82+%u|DH6qdla;=9zG(`j_dc1@c&Pbox}OW=7n2*^Hu`D`qO?>+ z-J#pV9MS^NO7rb*psg~8^@bOo=IaSSt~QUPZ0Z_wKxN3UH7}rO)Z09B9||9H_ZukI zo8u^G*MQi=TM`b-7LE#}Ux!Z!=eD4&OGLLns4iH{bsO)-C2x zy1x=&j-#IdY&ADp3T=Vr3zZ=eWS&8hP_X$L-Rjt8etrnhcJpd4=-y#=YYE*u&E4Jt z+GVZ~3-R6NAv6y5m`{d4=U#Izg(4y5MYK`fXSRLa1l{}1Ryw&mU>-gf=0nXZ9sqgJ zJoY4551EftL2=kTc{XTA%!8HyI%>|O=q${9k=FEM=22$>g_~>AVaRdwE!v@;Fqcq1 zKFaLM!BVuj7JaQ4v-3J2W6fDKD&ow$Y!tJ_o2?X1CYU4E0(;Utg`%BP=A7%$ecIf! zH7b*6-b4}H8FOqjSk9Wi4hEED4$*>^Y|fKm@SOP-r8>`>ghi$+o&H;gO!KTFD0^r=W~3Y1S>|^mq3wxTNQS3R&Cesi^UVB?E?{MwJt)|EZmvNy zM2@*J?eAZhwX4DM(p+g2)a05y&Y^f^4$Oqz*MMLt&m2l4?v44!XcTYFG4CLkZ=P8j z&CS&LFW3v>XY<^rF!;rMIvQ%enmay(!2)yFRnT2%j;ABSB6D^+ zD)Y^}oNjj%o9EEsT!}gUAOuRyI_d)7%^fLT{$cJj0?40cr;V`WVHw*FT2@-dgrZnw ziJuBBo)&Kb7Hq36_bD&9#^NhO+geLJ1)g4(d_NG^St`x~(%Vw65m3IwLH^2*)z+6C=EGf;Q=CURCC)A``Qg^~cnq?GS!MJ7#FFNjwhCB0pNUU8ARXynZ@NM1hOq3m(%&*bITCA z=bB@=PrrP5VX00Ru3uUj4uluEmezwodu8cs1oE|IN+tM|XW2&QX>TlwYY=#A2`7W^ zEVTzf*?UWMN~q;qJZ7T!VCg;`w2zh`y6yVO(uZ38vqg0n#TU!>$Mj3fua^7OP^SX? zr-U$AXxY665=EBNA0Y9~(v%MFi!H4v{w%TlT@6Z0Ep2Jj@ZIv(56}-wFn#o&mcb&B z9@aq=ZmhK8|Gh?Ex8|Hi;b|R2r--Yq>wO`x#@b>VkZY~G3n>2dvM!qm-RrD56yJDT zuPR~C$9j4*Sl3&7Q?hV_^%BM6zSbdhLbB0XPzd+^tUVvX(k5%2Ind^B4T^!>X6pnR zBX(=`l@Q-z?NAk}1FTijfZS^Rhpul1T2(ZDf~=FugT)qXT|%w5&6+h8y0=@0jR&;D z>gSJQr!|bU?Xr%bBjDZEe$N2yvF@d_n7!6U=Yb5duI5nev))UFzS=Y4z%Vp~k5k;!CYA4veV$J&(oL8;iXz!6`eNQactPMR- zm+Myb5wP5_uB3CRn^t!U;BHy%Hu@yDtsnn}#2u^m0}#`#tEnwBtXtC{f7jZ<3-b4@ zd34j}zO@7S^uQWQcZD;pF7=@1p|zw1XpgLYC`TAu>+ENfp%$~>`7rON9|9rp!a8jj?f+g{Gbmj7KO9|mTvp{5*VM{P&C+-8y?3dlm1bII%bYE3 znq{SCWy4;E%0?WZh)fwO$Pif~d&^Wd2*?l=2SY$n#_xN6f1S_S=ic|;=Q-oK(6gX^ z41RAdSX=|__JWi^cO%`^av?IjAV~sjWI+ODbq^Q3?nCw8qXmy>nI2uxxeL_C z3+8SDc(UNZFVG)bkhB;VGrpjB3fxaDh!KG|x!?seB6MJs&>vxNWb`&b(uomFT_9)1 z5N!+l882=F?*OCaF|PL@W1kK&xiEH6E$hmtrQ_ai493fJ{>7bJj&cJgC< zNC!}kGmhjy@&sdrCt~tv=srUfCmCz5ff&Hp;sJI0DMno=&_G5y6%Rp-H>ocX%xM1` z#1O{ER1$|WexuWDVT`5mAf9FnrT`0PERh3?V0=l{ek5azc84eii>j0}4ErRkoMrq= zgQ0Vb6STKQGn8q-Vi+6ckUY=0Mw91QJHu-pMB^Cyd;sDZx5#J$!~7+}zrZ;41Tsks z85&hHk{NHr0i-bAu7#OY#{88~NMn@Vh2$m1wr2p+8P1d*U1of8A6N!MNe3!28O`)3 z-Le=FRLf>FK3EF990ubHILc+%_t8gvd5l%m$;)TFMrBn2V^$)tLdHVc{fii1T?AIl zSn)Zml`v+V2k{DHvl05GjA3Uelre@6gICT7`50IQqm}wLl?>x@h*U8KUjcTN@yb2$ zt}!lq!B{op87fq37z@o=kf~+x=EGtQ_$G+=7(ddhai5V=2Ah41H=jVg zpOI#N0n`D;i*zl6jGy%Y4;bx~cMdV$^aVD|5PSeLBaFI*P<+UELNDVZ##?_VSACya!4fHB6*+0Ywjta=48O)&cCV8JBA=PM{UFdtFX>d363d5{y+AAg?$ zZyIy20A}_x{f2XwE%yKzg9A@TGkNya=kaDb}%wY+P9b;y0f)!up4`QhMG1C?J`%p8EGd-yF zeS+yieQAH@do-^&$voEvGXYF9HL_1JSL_A|WU@~{F^Ksgol6R4Ced-K5N0i{uA$7| zmcn)zGs+8APBYW!$VND`TLQfZ?2j-O$(%#;ktpW9F{qzm1}vP0RpTtPi>~4vGxRNl z7|rb14iLkX%mz5m+(Pw4EVGIS#W<$d+wc_6?4^&05}5V%Fmr)fPw!+RQ$~r*Mdo%o z$C$+YgTBB@W*+_q3TezO)Zn?q{M{GCbmpJ|>X(`2_3&WNU`DJ%h?&fyR9MSmw$%V+ zGe126YdK7N46NlcooR#4V|s3dem=93p1A_1iVh7GGEYo}ND*`Y66h5(ucd=m!YuEF z!z;|Bs}Lz={?q`6Wy~`)8!KnFrNCbWbF>t^N;|WA4{TR4@9Y8fD)YMnSi8nNLdW!~ znQu^OS;Gv9gnlj4m%f&&V-{S8LOrwid5APHP0i42WUiQli)muE(9hh=bfL4L*O~k1 zS#4pCP%o#IXnU5eL>{S_K?g`{>Aq6U*}BHJb4gbTeo}*U}%(qw22ItFSHG$^Gde;v5u@TqKT_^A~PRJnQOuM3De1z%H;(gd&(k*3MWsyvSM`3CSc@#3MLLW_>{| zoD|kbFRY}pykE6LG>!Ef?NFCk-%=FmEanstFS8cW@F9b>f?mH&))2K+vRIAFfn~E+ zQIVX(Y72ovF3XQ*_j#-ncLDNQO*GpoV9lXCzL2$=`tC)n_oxG0%)0RfQDhtd?R_^NnRV*o$f>&7w`4GLv+QKfK1K0>QyEv>@E z)Up1q2dHOlvcgjXt2z`H+Q@pf4#70B-hBaj&8(h};o&-~b}4u*tgmaJ-pX2a<^Nx( zu~yS*fg3DlB=p-^(KO@jU@h4UjZT)-9atC3V-w$lcApM?Xpc+pr~s*d|v-%ufIA7K4H7tBG{ z4?=i)z&c`rry-V=YNBD*6A?s5SW`a76+UEbr3-z;D)xuuC~F!OosU`bUxueAtczwy zjN0B@XCO6A@JYb90HldNe}M?0}s{S2Zrd$S*i``No_cz(dn{`CKS2ewZNm@aHP zRk^NgKAkgjW5?1LGVW|CO-nr3slgEOWbdSon-|-zhln>j=N!NxcJF$)_hGv&g3-h5 z3QFRRu5tgo`Y?FHj^HVlk5w0 zI4XeMXn?g->@S;PCXn65f=Cei!3sDGW_L4yg|HLnLOqndpO&{Uw&hD;r`ZZFA`E9w z{Rkj}-Qf>~NcJD}yGF4)DJ?m}-Xn+mv+OVl}QXi@l4w0@>_$P9U}%cCsFdxonTG0rJ@L zk0FxJmecX$0`{wPFALevQa7)NEu!g6G22S5#S->=UjSTTKf4T}m9hu!!&4c1)-Z_W z?0hPqE7*Eh5G&a~x=|)k#s2M8=wD?&eGxL(*r^_HU(KFL$xaRX#YSMY>>UNb>evry zgi_D;x&ZwKw$~PbMz#YNB28?|E3necj-YJrIy*E7ycYI6ddgbacRv8Hjoq{g>NnWm z_5ifAOERY*ljvYa(VO1M{$>$my4YLj%hsFhu`AH;X3v-ktcSgx8ql}ck7@RJo1H`j zPcQp98hzejFQub`ciGFfLH!>4n;u~I*^8TSEBn~1!XVPm-aQTv1MELzAu`A|{|4*< zd%O+C>?7>`)MlkCJSTiVj8`Sv&TMxd&a<{7tEPTd2R?N9{J#mP)@5iurN-|Zn!_qnV{t=oRg$N zpb;DiHJM{MZze)Ljw5;vAfEFL75)jFZYt0&aJ;$z5;+r8HeKYbvC~qV#3>WPZ!%{k zZ9pj;&kV?Wq_B#*?k(kOim@GT3H;&HelJD z!<5VBa6UYYKyx`Mw1MPt-k>YX=lo2w!vfBS@4{^%r@E2ezamcH2M{ghD3-xR3CA}R zX0C7=W`S7B`I#QwGL9EbEy_7>&45A$Codo2S8_higtaQp+%kZxoR27xxyF%RfTwDX z-|N6?ICH5lTg%Z<>QTpu{swyWoG4m-8aPKT(EO>96IKqHCeE&7U^a7Jbp`V}r~7wk zv~V~c0IeKp9YSm4)X|>+y}>D=U#p$NrXhLDa|NMg78?ob%%V-JHYp z{bUcPE(2C>abB4Nh1;AzXn@npk>8>7hj%z};b7k7_&o)UKF;@df%S7XcLEG>EI+{Z zAZN4#yaycPb|?;UoIiq@Vb1=1fDz8)B_KZJ#5ltJBhE{|;|7g#_E2W`!^Rv4=$S?2v4p%Jvv_8&9n=9a~GV3 zl|$UM&%n_U?w7Y9a@5X!GZ*j}_kGIteYv}-R`KIHJpgu`yZsbIPjKHG0MVc8aT4Gp z_vmAQK(6j7hy-z^RI3DYz3UNE2)CvS#8B=_Zy<^=?$0z5Kh0ec2>0RKkNF@*a3ekg z7RjATm2ec--a@_gGu$>QZueR4x?M1Hjw_{uPtn}$7a$tLov4JF^V|_iuVT6J)V_%0 zx(4B5;<>SOg$dlopMYK9zFiG0k=sM1>_x8E8kkPvPN$w;GIwimFuZ%uirC zjhk-&2;pDi-r|9o&c$D-!0W_)LTP>$H{dXc+1$M|U^ItYNNuTHE@KdZ=5b9O5Xt8% zX<;qkmXt!Tkb8@M(IW22ui>JY8-E#+CEOR;$OgI*)-^$DO3nO+EMBIA9Ij>#L#H$o-E# z>1*P)9zA)Oi~nGYaND^zD5vb;e&h+PlgpR|!7lFO8mQgm&Uylq-Q1Nkq1MBFp8A@% zxJqj4+~$6(fLjQ2%{q#fJ&*+1w$r)caj<%r+6;gK@8*_coP~yynQp_BAAz#1=}IK*_5w_@@6iE?J(ZY3!!kD z_Xl-U!g<~E0U~&(iU1;cwNxZW@tBk>oZ*dahx%Dw`4wR2c-OB{Lo=E;ybPXVcSk4?|}`9{k(y< zA^L!qM(vg%1cPfD=FPqWFv2s?D*2FiY96phyxA{9ZbweC~YlW)MC2?v&|y@@LUjeuyty2+W7SCmE85`L%C> zc!Yo89e|_!LE5{I@gLc};n$bH@mt9F@zcKq^Em(CD^NVa48!N$! z;``Az9%uNq5%m6@r*r(Tsf`!S9}`0(hCjIw*m?eI|G`BpKlw8B;SmP?>z`&5`WeLfMoui*Px!lze-C=D*rdylhXKB8WvpQ zKeLwJzYM;6A*h-BQXhaU{)6|SkN7n}N0PBj}fGAbdY?aqJ|pSlAN&PI z`}r@?S+@cHQY90fKNdc&7wA1+Wq**t!8Wg9N{nfEX+d-mWKRrhm1xk7~lLRMe5}hn~pWd4k0mlZADwszz!Zg8{6R=By zDC(!C3)tTPyDaGb4gyB6ExjL^yPwgb8(j|1buhJrtsa^~vxXBm9>(y7NN$eqgae+XQ%V!v8J;#0%{Qs863DY^56Ig0T2~ z=qCyj7XZ5`w9-$RB%DuYk&=aaI?RwFEEXV&RN+)5^wNa&v?5&+I=%ssbm8mta$FX! z(Ewx!*S-l}rm&I+D_OzqmIe4Ma z>kt%+gi2~F7Yj#k!$pbEf!>@eLj4wqlnU2UN?ayf-2lCEVee1iRS1jJkgOCs(g?ar zSW9>9s_^lruyRf4MIRYd3*TAL!2)I#bUkI#8*uEHw&BBqJ zuy$QI_6r=g2<_o;(JIWKx}{C%Jq6%~@V`rtY!?>)2HPFNW97g)h4W7W>k?+r!HS#0 zeNzCsg}Ia(-WGoL8hE|JG&!9HxFeiX4D_yWEf(t;_k=6x%ar@Vh14MF6V?#1UzkWo zJ_m%HG=M?j+nW&R1L0~)8is^Cnw$>{=To2~!WaLA`-j2_T00*Lc{>r|6XCBkx*ik0 zM%}}4A-4(&6T*X~)D52$p8p)y97OL_K-5vxNc~kO(UdsoJBwaoL3F?9DM~*Nh}>!B z?JAl!1mGreErWY^5ib%V9-@6+Q1BGF)0s&xQ3IW;@)n(=F2W(vnMnX2Q3D--IV{@V z0uM(-Wgi2x9~H&W4(TVlN6F}M(d^4mJRvf^3#0y`b@U{h6d9(17a&?pee6@BkEs9; z6tPt>8YJ4-gUb#TMV$v0CR%+KBBw>q(b@2D(Th9aB0>~#55^)zoH@{o5*3wzcSck| zdG1-e$aw>pi6TB_b;+U)ROP0K*3luCRM9_l`Zi58pT0-9B-*S2FJKeOrlZY7>1*E$17eSNMpuU384rgbq8w6*EPVpM0^2wH$_pGp>RtSORLXq z(JvnX>lLk{hwYB&CF*6|6@By>i1$PTn-SW5(N-#D`$W@2!0Q*8#nk*95EY()?O~CW z+5jV>6E8yJp(txBLVP5;c?8&~XbmO7k40PP%gk|6crLIB(Lgz@O^QP3)V+fk|Ee1g zuy_IWbDhLLCV+TAd}Jj|9~4JW1HeTb^APH;;+xcpaT9O$r~S`eypsh{4{>t<6urfN ze+b)$#5JVhBc4ls4~xA^pm;?5E?v`6@oUtIIW9i^60j5EulvCB7gqDgOUN8jFOX4ZhB|buJ^sD0UU4dN_Cmn-mjri;q zh}4Q_(Slwlewi|<2Jsg(=4cdGQR>ws-bl}Lvv`JK`JE__!-ByA8#A z;`O5d_r+oKCnNgA4fLnO`o(qBf{Zpo0?MCUYy#j*6vjfhuN zfcH@BMW;R)>otFF)hN}pdYYykyC^w~4B0*-Ng}!c zYO>@7>dB`_=5GT?mCRiMV!GsG$`>w6v_Ar5NV>m+i%iL{0npEqC}$wTY)Jy`jX9FW zGC0hY@F>s7lUQy5E0nxY0fi#T`CMFfu_Ub*#1hFNs(r6Wp43CnUMlII3s@$3-T=jN ziGK`aDkSHBg+`@hUO$LclG!)l>8d23{szf4$xrlhRZFf7Lb66;q`p|KWKK4W)=37x z0V1+w=yLld>SItCkk~K21UM*p`%AcZAldy7Y!6ASw?G`0 z)SQLlh~%d>XgrjJ)#K70N%}irW>m7&hO2li`D_)4Pb7XDfQ?C(#X@0R^1c&{O-Mdi z1Y?tu?{9$TAZ!6)|DufOMao8ZHN=Q?dYDq^@dMbCs^8#)q49{5WLX zr3JKJc}RE8Moga4`LsKDNt-&M;4R%Z8zP6K=ja#lk=D_7xQC@>G$%hM-5w9jS9+Tc zocc+Bm+!ATM7^SblvMOL^v*~>qiZ=U^`QOwob&wv{b|6L3#=cTdYX?Xu)rQ$)LankLsFcUA`brdoQQcWs?xgZq_5PqUGiCP>N zrG2!!BuR5;0ZW!%r3OTb^qVp$q)O9daFHf0*$QKqq=#DJK3)13b$u>NH&AyiLpqa= z@@7ik&jc?^`Z9J(`;2U9(-WAYrLIqzbeyKh<BM4SRnpsZWcsSKq!E(Wq{DO% ztEER9p>D5{nrZE=mEJxAv`%{ODnPyTTdH{)q|#>a8l@UaW1FOZy$#STT{s5!*QLL` z3^Og#654lLrQfp=VVktq6AB&D6SNj}N?mA1+a*n02;xoYCOS*oEscHy3O&+)>9c}c zcIi9R=(#OzI0(^R>4&sq-jS}MHT14@?LIiXC!MkcBKM{D--CXiv~MqX{nD2yPk$h_ zy#h}|Qs0BXhNbiEP#BT^u@RCFrDIuhcX1k{LDtc*}My0P&D)tpw^mGL!uTsE1|2Q80Q$ zcIQX2MezOMM5} zDVd&@!a&)a^{^Qvduuk-gJpSZpdKP)?FI;ybs1qLOy=_gHE&PLI)8>}xU7|W?Gds$ z)WD0Bb)~>sl(&VuAc+52;$o+NvodYZ|ypI?}M^pltu?YcRTxg>l1IyBN{@ft*N zS+*z(q8YN)$Kf|qHaihfWXW9U6nnPpSK3W;WP>7re3_9_)B>5Z2$F@eH|dLuBAJO= zz{RpDNibF>+tUJ2E)#^pW`&Gd36VI= zHkGVlU3(Xb4YHNpFw-b|mXBbXWUtdR*DTu^2kg4+#n0frRW_B{Fl{m!{aQCXNQdkb>P~dYZoLMZH)Zo5Lb6--QkNZQk8Ii;$lQ`WJrkaKWgkmm`;IJ74(zV% zFuff8vb?7tG9cqTgFpvmx;*GTknMa2U`RGbneIc`+$KcvNS3o2BBQcss(BvE=FyV$ zL^fXn^)Z=0eO)jvdqWK{A=~*9orsx~NSqk^g@;Qzm?w3#f2iO7m zkPT*B=0dte@L)1^chkC%rjTT_7r$@l&M$zZwp|3fvo>IitJ<>6HT;qrzzU^7Dg&P6zklxt`n6eWM-Wf(gn ze}%?b=j0jG0JlfW@t4@~Sj+#RHUGRkQG&~km76ATX>sz~G+Kz4&!+}eg8cAK5HHAQ zZ-Hc@yy7CjMfuaTUL?u4Q8zSMJ~1D*Q{;=Ifu+j-rcyjj?t2n8FUjvW0i?@Id|>6W zJY@+$hF!ji&V^>mxlAy#n+_1R$XPFe*ec)A2GAzoLcNX~@`ktIsa?J=2(~-qKJ<%p%2&(* z)+O(m0i!qN>I{Hx`M*~YVUPSDT5WI13#qwrTmIg9V7>B+9Z3&B zAIhKg2l27|)8F9miG2E65Xa=zV;w00&c{`&$V7Zv|dLX)IO zIR+QWilsEfPf?f)08$n1rvcIwKP>>bq*(R@z@Dz)u7sz{io*+FCPSg3$yKHzautHf zQp{}tmaQ0~V_;>9P2m9LiajzAs}y`VBIc`^n zVr&&eIu&hHwst9IZw2qB!oJc5X178^%XE+8mo*6HmSXScAl_EIodMBaMH>}acNBG1 z;N4X?DwjgJ)x+oAtN@dG^xV~SLI8^;yFe?eqI5mXG3 zNyULrpy!~>qV9&Ha_>dBa8ll;o`JKnf?lfq%2G-!4k){6A33NT{Rw(5%8X|q;;MXn z62MK_Xs7+pU8xv@ClBQYCd_y$=cU7_mvZe?@Vu2@(C%_bIZWHPkJ5Ai;IJ~i2;hj) z;d_9i%5=)bk15a6*u+2^YyO^>C&(u?}MCzX4CgXsXJ^fmg6 zK&O(8Gux!`!I-U%0YU_FDWfuz|xf`sb6$i z+3pJ48Okf}0GUcd`78%Sd!aI()|4Wpj!q>N zD>W~|eTi}xH4CpOv))8ZrOMH#AzGpQm>%fDZi(-ZM9NN zFMN&i6DqQ5l?vJv>y)FzAl57UDWz^ue)0-_&_-n@owI4OD?g=yR%`#Z9Bm0R(_lc zPd!Q(e-Ljey&OQit(;AXNv|^S|6@EQi)J`?mG-X_;rE`hKO5+MWyE%XKIL|Gj%M7l)s-U>XQ%P$xXF}M&$0QnvIb3P}ST6&r_v|g1VO~?mRqstMt^sKcrgF z3UwcqDgk%>uqt2@>PJ*x#83@>R28=bGRIWBEZp_usv|6b6RNLY1n^fCUI*`#N^%J< z0#&>A!bOnEi#C#Am4fDmA*zsJfKXLKK8%H_ZdX9$v?@3P>fx$5I&~AFdY+b~NYzSO zlA=^G{xEh%b?G|oe`i&PDcL%wl8k{Ft!kn7H%1k_9s1{0NwkZ{s&eS#ojBF(R#=Ny zMbXldp!%Eo+ZR-;=`>=Z%Fh*kFRGMXxa=fVvJHC4sy);-PEqZmCqGs7c{)6#sa(DU zxTN|7OTK+Zx@v;T!ONFH$XD&_hqVILR_gl{s{Wa`Ef8r{&3qm<+w3ZS1I%=& zuFz$7s!|NNiZ0b$S~YK~5|=}xTV>h-jULskEdaMv2~?QhR{i=8uwE6L?!_HdFLf;M zt4`56*QW}bh70Xi-J$W+fGUr=p@XWp<={O~x%k26kgAfl=3$jRnA&tBsz3_yp(=(8 zqmNW|ZXk}TZ0n%^SoIeJ)}E*q(IJL0)gmh#j;m%-DKMe(dJbkLRdarUo`d>qIe?>j zffF1$sr9r;III7BA0qqJqqm@NK)s9$a8T|43NFG$J!p4?UsrX>S8(X2?vVm>S1+Nh z-9!C7J@TIFdswDtc&R(7Q|hfo4uIE5eTe#NKI+^H5IL;gNrlA`_3N~$9#wnw!S6A3 z>;({g)xUoQV}9zJ^gJF{-=fFkgn9$bxc${XRnk^@Qe8C@E&|luYXMHF^)xICR0r*X zevrEGF#HCqSKkB{qTW#lUZ}dBhKgZoMFGHR^^u>!3s*O~Kr%u-egL*3)q(#Zm?*XA zEF7Lu&zb}{tInXB^qjhmhM>{v=T=bX)bD z&J?RBDfcN+hYR8Gih32*hNbFQHH?<2)0RS^TwOz3U4`0cfMlh5$ulrkrRKi@k*n&C zc>pzP4t=v%t4^fC%U-9RNgGhTTA2sM26fbF$TX@$sLpOuFZ>ann$_i$k6l+wo#3KH z{XP}_t?H-W!kuYTpS3~qhWbc7thK9)&A>X;f#(1^)i>#L;4byn+ri@lWqj_fX4F=P!DPfX>#DANv6EnRrBs2FzTjxLRE^prkyGo56v9nd1^ji z1mLBKrO&dwHI4LcAJVLG!oBd(Y@&VSux2r}4vuL0&4|KRQ%){b)N?>12k%Cik{MJsz5M-nxSEUAWalCt%Ef=TLD5eez~v~s);`i zzhRnnR3@C(bSwZdT=S4p;|PtC9^gpLEb3L9)##sqcuw=dI(UfI-1MaxY>cL#Hoo&3 z6CFQ`)wt1NkvL5dC71Di%^N!b z@-$ayXqB&->I=~V&00F|Q>gi!PD>PNR?)b%Sd&hRSczuzTSRe1BRqiUOEsTTVpFF1 ziniu*P2mWlsLT+|)~cyE2K6?L^ZOv)&=fomg?7yu zT1h)JKl}}1r{)aR?%f(D8^j*X2ei}KZ)yIavCVCbg+58>)fkq;%pJ{(lr-JdY^A>m zcTXe!e|DyM*$LtIX^NOo?AI)$7iT~dHy_ppH9H(|5f3zuXCX4A*)j@a! zphESbX52wDzap06eOl`YmLRX+qK z{hfNrS=za$VJ2IfaU^%X{oZs~F3{S0pjD_1p+vJtJM}++Vy&EB*Ang52AH~{?WE(9 zrP`(#L{z3-83u)N?cLA8tI+mQqF1SX?1&ptrPW`8$W?7B{Z`ksPi=s=YVEW^h}39% zC^f6qM$$@Or`=q9#dWQ)3RsJl`5*LK zwQIIQvQ4}0bzmLZle=&SJGH&E5OrxYt^(ZDdhJ1I-P&7p=Xb0sYN| z2ihNkfDLIS)b$+Jn!ZJZBU)=Pu!q`ie}G3?38{~2?@_ArSUda+!hWI^QNwOb``Ob2xz zQuEYB_Yw_qTy+PzAiC+E4nt_3x^!xQdFgf^g?n$EbO0U>>C)Z==A$#=n5ccmVI6N3 z6p!c}e}m{z-QVkh9n-D$gTAlsEVWzxbbr!Ey2o|5zlGunoq7Uh{B`k7;GNVJQD_0W zh&@m^rJFwuAW--CGei-j+ekKpb+7h8Aw-u)Z+ocDg=(8H-9gGO?5B12Q(!b)x1Dmy z2;C2qY((l-QpX@l_c9If&gkBtLhG#Vqn*Ic>5Oy}qjg)Ttd7wwN`&5d-PxJ27OT5P zVaMr0_~6Cs=2OO#sJlw%t}g1T4?r?W7b^fr)#VgIAg8GOO4(J`ofQLF1- z0Aii4pPsUMU85De2HgVc7Π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 delta 207456 zcmbTecT^Nf7dPBJ)7{fE)6>(F6crV-m~+lKuDZIqW?kJ~b=NhgH4LICN>Ch85JkiQ zVnk38M8OD%2}A`GA|?zNF<^LqcgE-Wp7)&Zua|S|>YHy>SGaYn#*b-@6V5eW>){dI zOk(iIH=`$0o2kQkvMkwKL4|mw^!ftz6Yw^Vm5VA z=epz!`Ca=~@O7`^#*ltBbL&u(s@dglIll55d)vMh<}-EkueO0yo4%X8TK+$K!ori< z|Cc8<{(n62_`f}IeBce^+iXq?WlSICKpPMP2_K#FKr~S9iOp`o;#kTVI=NVJ2hkA zzLw`0nOm-686&sX!ZQjNW4|geCa&#AmN9c>J=Khb>oY{f*tof)1*Qy_7pP{+a;kM2 z#*LfIuuM6wt%+yKbN?0yOa*R`PQ|!$F|j;Tk>Oe4=>U-tk`pwHdWzZ;RTbLIgYTYY zztQ`&bt;Cd>*k5>%(LQ`G=bq&eBA(*oe^fX(J)-=a$Sj}()3sY634$eBrw9|gFM3x zC^woYoaRO_%kUx}5(F~~%5e-gx!gRWh?=7NRCj*zKeLH%s|KP%OBKUg%_cAi5#2e5=8xZ@yODJe-nEH@NO3GMj;Ry$i^!;>OoWl-E%i{f zXwx|Wiecb@evEpz6R`5$gGLA6|vqy)4_t!ldGnLO)F_Jpl^E}Vz*Yd_ek?}Dl;#c_~s;DTy1 zX2sFnT&;Cz1t^*BLUKy~-vP~VL86k}9?E9AAW2zCZ9dBdDN2xIo4KVbXO1J!T;8tE z1?gWGsh%Pcw9o}LQvO<{X4H#ZP%~xzRkY7y7t~7mV>Fs>i3@6{v~CA)?JlU3a&aq+ zd%2))O8ywomb#!`%3}#N@peJ|l-G3#T;>7?Djj20jC#2X8lr@e*FG-jS0&1^#p2F( zbR=4u7&rX`a_#V%YkWq%HXlM3{jGa@1qO)RXOD_+dKzG zo&xTR3pa@|_a2Q(d}Y<;FzEfYFQujL0;t4zhUyxU_D|OO)a)igOUB`7j!~y zMlg@L$>dLS({+cR&BNXzfaa{3H$_Ysf^{l}W^?r`2uSYYckMC}qi5MCo)KAAqH)D2 zk4FRITo9+Y4b?EB#s!H=opYe+T#%$pBbvblDaveu%r3~PG$hWlfHY9*#+Xfx#%0R< z(!V))s=9a><%M2g#2PM$Q)0G2qP7bXl{+PBMy%_CB*nstjM%^hDN5&XXld+%tV$in z<}&Whx*q2ku_LQqiwYSPu^X!$sYPYFqgRMMT&#?;cqN#6yC6;}?|5Fuoi#bMWvjO6 zUj`F(GiM8MayXS8jcfF$3xfYROxD2(9m7+2`@=%w z6pqn#a9NNyeA6(x&Q8E8lZ(1;PQXphKZhlyw-az@gwKxpZk6rlr>XGijSU2R`sqi} zbr@mCE1uB}Rr|rR_7EP{7+(!DN;gB?o-7sYa7&J9*%`a^;%Gc14@4sgVsez2q4w&=ORg`eHwM>{dACsF4fG zK-p7(U~r9l0EWny9Y2-p)--h(S}R0-8m|2q4f=*`B}8r9OmFJ-+lEq;=(z~XbMH%ODz4dI1UT|ZU(3@^^6)=%@GcQkb^w6%Ul<@MyK zv#s^BDpOm#JKI`6r*a)oD#{NWe&uW1{|V8=v^u38q5rQ;#@^iBOEPz%{K$I_z7Z}5T z`r~vv@%^VmrdObFowSBp0N7kyBMajWn@&h z5>IngwVNu&gY#)CFx9y_P1H;kZcuGCQQjyo?P-&4O53(Y461`~ww7TUF>^gkwo*`LTn_RlmCdM9%TsJ_`m82anHis{4%iM=_- z5T>pLCM|JV%RNU|G9)T}j6Xh+;do_wcZ~+aiArcTJ3dkOJcco(R2~RYb$O?PHaJy@ z;*{EQe~dQ6nM#KN)RAvt02$#37nP@WU$ zC3ig!L${qkKRIiLBX5|0Oeh;gG@?-Xs*WHH}*9S+ZPkpIjik$#r+&zxqN|ikph4ScJCk8T@SIVMOs<@7*mzo>75V0|1 zF6+2f$;0}v4^2L2+R#!wxhu!081rC!=IIE5@VU6o2k7u>h%~<1T8kZ-swFqDon#bke z*_!l~IYr)x`uxGx%!7!#vS~Of^e0+ekEHz^ckZ3e8a?UXgV+?cxDml3+ zfHh8lljl$78RJ?fAjo~jh>S5vqS+ViS~d&NI`tK(mPEFS_E!ruJqi~XwyNIsQTEr@ zFl;qF+2G{Wqp;9ccLLZ~G>a>PFHu8X3qsbt^VN*P))YfY!};oH>RNhwM|Vc}#@2SK z!$j_AU8N$s*)gn2el@lCytGL_a$AWW!`a7sUjHM$?Wq;ODOZ>nr z^@h~o|HaI_4D&;DRQn%18Xq*yFaL{)dW23i^naziV!$)(e=#?!4}q~?bqEdrqi8WA zOLqAGFnQ=4TdKOVj3cpXg*pYP7<}7A3q_Y5ZHVFoJeaCmEi9vy3WEs4Ll;xEhU0tH z3aZjM4)B@UZQ`Og2L0r0x9=jqzyZ7*XAw^>@sxUWHxl2(9k! zRz8_$ti4=}mCOED-rI4pdIfuU4S_MH3H|?zukv#YdS|?rKEs6n5BnWKr!m5bT|ii8 zv{3y{FOjj`cB!s5-A~Qfo~wk=|4LO~uooNro@y(#nnzYHmf@Bz;QS9ByQ?;C7pU#3 z)ReKY@8qme0WmlqPw<9Ke_JeYHjb)Z-Cc#HzK2Uul{$#Q%2v@*3|7GnGW6oM1Z-~T zsj&Jgif8n#SRF~WBZkw|R-}~L(T*^#em(TElhBDj#7+#m`FHTutob7^Lb(z4Gg3^1m`j}x_g7~4;NoMC!ehx46q-a zXm|QHs-SsHo#R_jvvw-993~5=BM$I+uET1Uu59a^+Gpv|l++C)IK!Dv`Uyr$y{lYq}yHIt) z;xXz{U8pZkF19>OvX{}YX>55~u~b2mJhz0PBI#^}$4+>Z=S=M3*$lP}Ep4ixPE7qy z*gDzSAeSO9m$_lD;K586s+SX0Ywk73b!DAj_P7%@p3Jp)3Ul4rGJ0%D)IkY$Pseby zQxCQb?UK|%(RQXmzTJ4Eh=&`*g%PZ&0H* z{QW%qSd9heKW+XRJeIp_;fh}s>cy^!%Myj$6YK9>e$i_zy)j1EfFIy=i+w3f1^xj4 zW*XKw0Ijo}TD_dk)U1yF=~6P=IhX%e$($eHbf&ReoW`?A<Tl|N>of8S6*PRAq7_I1 zR4h*;j8QK@x21A=1>Pe+1ADEi?rLpCUiYXMxFwDk!V{6l5G(OzMms*$Z&I$C9r-qO z$0|-K&LummDqr5y(XByM)tgR^Ne#y8!ka_5q8o2(?6}%sZ{yc&gpX@?z`L z$Pwro@M5QEaO)bnG^+KDc+~~Rfrb^?rH+dYtEfu%I$kwwT<>iVvKP<|0qn>?5WszWIR-cyIBSUBmDLo83bDQO=fU?#$=#tkwoO zLngi^k7vj6$QCkhk#XXgcgS|}Ohz4~7@60p#DAKBVrG9lQO^t}*~5qed1k~ZdVe+# zMwt64b`sc>LeIg@ckfvwFt;~7&)y?^&q?&|*NoJKUL~=yafB~@P3pG(LasbMN<344 zBkC;5c`{Lr>DlwE(=F`Lc%~`(2+y>~n!_`HdeeK(0>Ms2GxB%jGGe_ok61SyC9+=? zVl6j|{C%w@=NRX_!v@b6yfghkX~%Y{@2!Pbg6f`jb>WEXO>PS4_^8rjyQj z<48~cU4;3t7OMi!cpdSEhEUG+gN6Jrtm0X z{QZbCa~Sa)DNh<+=MpvGCB09bPt=|WNq8pl2|ZVwB}bck5q0hfxMFA4%p+9quS8aR z&@&BdBbxLf;iI?G^D%Z_jZs3i%1{Ds~RZl?Ec$dsWEJDa!75PBbsl@*xjM3sJ}_qNVY!(AtJu}jH}S1dhO zI^P*=xS-itjptLz(V-0pbGRc}so%{`ilW{TYHuqd8$(EG@H|q-Zl`A*nWzt)gJ;-G zs?CCj#QD2(5bCgf;F(4^BH)=-JE`%@I6s^vgEaT6L)t9ohtOMA|o zBQQbZpCg{uUgToS!Svp50#)F*J@h{1n2P#8Gl2k88G0Imi5%_hk_S$cqB~BvZsiev ztJ9&X73sb98hS3k2?5WXcTPnAG$Bk!tY(;4Mv_~Vs}Z$r6>{a7LbcyXiz1_U_OsBb zc(*fM+=#Hf3JD)cC-T3}k^SfZ;kTMe-D~I6F+PIccip4f{FF=YTWZp?S93B`@PsO0 zL0$oa4J$T!en-;qWFNWW@S>+_G4U^>36@FTOq}+A9~0}0PDJLnkf+`Y2{Uasy?c}) zV}5kx!al4`Z)|PnJ)LwzP4o{+ZshMdDngCQNgu`KPhO*~@9Z3yzq0 zW+M{*7;*OBsdySrVr`cbQ@?s-vV#x3r_5U#E#A!!Zi4p&Sn2w*I_sx@tNqR%?Yn)yeIaj}YWD!uONOEyx zLwdi5Egot%n%wWBNYBRd^t_Li8H0H=x%knC%pa~v@2s11{*UNJ^n6m4)a|@Z=HFw}juDYS8fM23KG!+$ zyrvQ6#AD*Af10GK{)BfsbKBXNE0ExX*F%VDd~YHTZUzIs8glERIA>oAx8e!lvadvaA3;Vi}EWeFRp2pE5>K9I!fKK$@ z-nn$8ULrlk6G_A66yp4V$qL6H_B<>sOvAd!X)rs#(Q{X4BuAJ}@i=S92GMHQ`*-dW6-z9g0FwqH2#8~19jHZKU=6wPw@_9^t zmHSRU?sG0A5tye0#v_~BAoni4SHRpZFy5=k%$BJ;OV^@u%ae=93 zr1y!~&|w|)8X$B)hV_=CIp&$MJV9!}vwlU|YF zXqt2cm}aJ$(A9iw7dy5Fq?UV#+YP+1AR0}eS$qLcF%qYhyjHjjGI3N{@ezWxpJ5aV z%hwS!7BD47JXqg`;it|Kei(dErf8k^$jT7%05I7ZJv zRxtzeQ4Q)%3*~Cno>t%qR$2F=YN4vp6kl&uJ(`8$fU53Uu%1)}(TbO$8ZrxeMsmlP ztiWdZYzZP&S|s7U;ik#Jw;zO!BR{xdG}xz}NdeWLjcS96?_vvefR3|YaU+4h#5OsG zf$+}GCg1H>L(+{5gN1|f$VWZx?CYNs+0hH<6dKc zZ?fGNHER0zW;omIDEd6#d}?R-(ZWihTFbJB;7zM@DR{O%=Z6Mu6G^LM*S|+Xs?VRE zXn+1^6NV2zdc#04P5RanDrS5u3-bI(q&4`ZY`Mqq%a@I40bU0?oc357+0Wm=9m&3} zfMOqewgr$!*umZ4bpq>j{ut}@K9P00pTs)-Kh8QUkj#?T!YQ_rooaHLrK&iaRkw03 zjM@B#<5_M6`BLFUUo>Tvk`Az5BOKW?zE;^h_*LK60&3&Z8F+8ni59@tfptM`uZ;kv zV-YTN@ZF>(c=mokA@xti*mm-RL&j4g9~@=R($Ztq z-Z0zSowh22moZS|#RgM&wv=5%(}6e3H31aDKBK)B`guRGcMd<7|E5WCaY>OyV zbcJdRl3M&q)!;XPd{vfC(78cnPoi5n8&&DGU@%0b`2)mVsuoBu@KLG}MS!AJyC0x9 zq8dg^^ikD}0WguEN~B%EIhB#>bY9i&Clr@e6KRirL$zlxXm?Z@^vUk3hIN760#&pZ zXpdA!CZKqx`ehC(QKFh)Uk5=ib-z%6K5AnU3V(GE+It14-$p?&L_Ka4Btq5mZvon& zUV9DDPW73$fMV5?uEWwH^{8j?DOH_W9d$XS_VL8Q27O`=w|96}%RGW-^~^31tnnxd z1fq3Wq5^YQd$S&>T(|Mf0QAhwhco?p!(S&$`9nhid;akS&w4M1!Ka2ta8HYG61fxa z&9~Fux0M!)4&QbJv$FYK3g9*4*2`*qxtae0ei&_Rtnh_YfwC5hf!qwm~BT5 z@sw@68^|K|+g}hUWwV<=*%#JMdoPFTO@AQQtE%3EmJO z>7GBP@}`*Vy{b>Pt9ipH$P^09mSfKmphn)e0Qc@b+)2fM8(1tGb>< zu~cpP2}-@y+N~&j)Xn<9;0m?RGC;oSJxJE_tJFH0asAYbs4e`}AD@FIP~F1>@ipq7 z=raVVyT1ptP8}8t&h_diCa?snr{AfUJEF)HwssK>Mf z&jO}dEogB9Yg1fj6E#PT1XEOlW&8_+u@_V^HcYxf- zDHOIG3|btQ9SiYz&NC9oBitIwLmlOEXv>nw<0CxOSTi`|EI^rDyF9R5 z}+Z_o*e zalYXaY+m?AD`~UZxC^Z=O*)xirs)h^#O0e!djWiNBTf7*_N4;TvS=dSTlrJO-MZ{T z${n}qkC2XU`-B$3cC}ByeEY5xmUXNfh-athqfpWL*L~pW@*VphzU%!I;JfugkjMA! zNAb$9PjT6Z|8w{|C|&q~W)vSboVwFmcKmrzwy=lVgDsMcqK_2CmZ9Y0UN*Q8M>Kpa zE8qSR+k~)#Xtac~d!NGQCbq9Xg!ge5DQmf(^P>dk0d78ddyuu(-+>I;BsmGJjpGgd~XV8AM_l=RIU$Y?oM&_ zX`MXHjk*TGGhFpLpq=G54nlE`OAY|?JU6En_ z7cmU}UgRKl5VN@@xUbA#<9ae6-sC1y zRFTW=odRSYmr04wTio$Epxx$@{(<>BTp8yo$5q_{=sxFI0J{ZTLOx79;EE}YRmdeL z!nH@7=XD?-bDwUZc*03GD0|A)W&jm&3rlDp{hS-M1H}vOY+tB($*pMuOU2yvbnv|9 z3`?Nx4L5;uVDGs$G2*}lZaXB@}Qy`y1nWHuQ@s*&h z<;T2(wjjPNoOXLV`L8&Y=6CT2>wp%;pQmI}G~W;hQv7aya|KjlAOBek^ZWU4ArLsgZ?A{q zAfHBIKrEl#1%>?(f11{UI6n3&8rM7}po zAW4XW;Nfw;3oWuIc=jhW@JT+YF`!gFVi}4{eBU}yR=~fdNZ|p0h(hi{Tx*BUhrF8= z_8!^!ZBxPem_Ls!3jc&JUJB?bKX4d$im+pWYtQ)7K9GOT*Pz|^3%+(UAYbwcmmpA# z6e6Hk*u(>R*r zKk?IsqcWfQ9acz`^4+JR_`y3XO*zD2+g%x$T$IUKjABF6a9sJI<5*3-q!*YD5Tmc6kH=TI|hlh z!nt)I1_=(D1=b1Gp8#?QYbm$5Ua;Z!34E~7VJPfw5YACbaidVJImAPRrn_MxR0s(J z%O+t3MH6AdS_;=U3j=8;-y&!zmfMhJ6u*@4|AtZ52~NZ}r(5qAnp zXmcAa{MHTfyM-kYV2KfK(Hg%;IB*y&dj-`Q6#IlKu`s`1$hr+j4+z1L;5;ZS>W(5- zh-nY;LqhTm6mdcoI#-An=01VkVc`wstd0oxd(b+5R9NE+Y=Us4K6s7^Tf3tc$AxG6 z03{0n>j9k*f?h%5r0^5P!zsedWEe~p(vtz57A8~JbVj(?50=gfzf-t&UU;z{;%P!b zC(zP`-)Zv75N`DW%LPF?fC^p|u7036`jXIpI>5`q<$Y*`tHSwXa3)Jg8U%@KVQ4UD z*91QeEaeD+r=jh-u*V&=o5E)bn{tJ7?y!_6R4+zxOBhOP_HAJ_?TGIRCl5jHo-mz~ zfcb)ZDa7v!Eq?=Nfl#0F8TJQ)6bOTbLN;yA9}20FaQ~6;822~$$HL;;fSw4`Ux4;h zIGYZ^BH_CSXwQT#tATtjG@*Flh0wA#kS_%Tt<}ZC{!1uc3%|95_#45K=Et`}7g~qj z2~mqtycd>MhchL1;Y@iDKMLC^!22W|dAzDl?uP#glk`fp}2s?e-#RG?UDZ` zgb#+mcj4F=uy|{>(d<}%F!!I~=c4L4|}Rsk(U zBhe{IsK!(dv`rdM{E7$rwyP&mwJn;sc7Vb)cjiD@gl6YSK-)BaRRKk6R_}(uc1^i| z!MQ`z)y~31l%^>KtI?WRTK{%yo*xBIjAq9tNbJ$PtqN$b<`!js_G_djKpxOM+ygHT zYRWu>_pzF1=OK4UlTUm5I8B)?pdHp+$$-ES&91{}i=&!%IzS1U(&eysOw;BMuq0}9 z7Fz$3G;0>1IIek~2W+xtPdTuj&>TOA;-u!cVjxpAZP%bk)p%28_LSz`WEecH5h;8+ zqq(~Z;%7Cz?f`jC)1JP;dCkip2&8FVsz6KEOhzi1&(J)61lk47kt3Ynnt_v2rvInxMF@3IBlN zh9*58?Q~OPp$?I&sZ7VKd74N{4cyWgH$nAnjaU&ZcQh5}0C`vAQJ&Vndz!y!9n05r z+z(IhYxu?BDbUz_VE%#T4bqr=q2{0-w1=8kJc>t}>=Ga!YlbaFeV=H)%>(CCO`Vm{ zQlzmVDa}9A)Hn^!=bAdh0KL%Modkm~HE(F|RjirY0mUoL{YMb6ztuzyf&4qo!v^4a zuQ`qDynKmfeRX*8LDQ5{>>o9CX{Yc>6Z!>qKWog(AYZCkg{waN7ftpsAiruhCc@G; z&E^A8`dyPlNeM6U8J)Z@6@9zH!ZNWDt((imPWTZC?;|#&WpIUEEN_MUN-^qB81xm3 zLs6^}PqzYcwYcvm@c4-Zlt%Lxb2`F{0P*_+ump--ccX@D#DTOZt`&cyGrAygUwI(c zizC~DGgur!>Fy1pmZsN@;^wC?A0qyH43371Q<5RKNwk0b8`vK~Q#iRxyhk~VC^0AyEYadz zN+f^XyRu z;v-sj4~xc~pdAs%jfGD~#ng2}toEKuAeAKE=m^wt@pd~v$>N_2A$3CR-XDrjigzgc zl`2-E?t4lcH4W7}Ee_lORcFL@Eg*1K+=?Fz@aM#nWx#n}95n?+nplhSHtAy8T|gP4 znYOzZ#BhqoGsWj3#4n1O_A_wvl9*J2;nRGqk)Hm(&NX zMEq2Pa$q0Cg)~)v6h~c!?oT2^^UG(kn9^mX;)LG;eGzAEK()V$LmHrJ-^Bg@K;XL= zjV%}NrJY;=+EQ&(4!XUy5p?vkOuL<;&gI%_&Vi!+i(;}B+9P$rxl-GEBIJCvCvhHO z=T~WWQpB}d8-;sjyr1^-I5_OD-A;#`0b1*1um)-u{tcEj+JJL#X00|M2Ao0K@gGpE z(>9~8?aZpQEbva+6bgQO#2## z5d3EC-``NREn1Eu;&3hFg<5RY*25trAEEW3Wow)E{#QVe+KC!K+qD;a0otLRu^4uD zYTYCV?9y^{Z7NDTtTJ>*Yker~yjwd6VH_W$ogNIiz1omB5ZI?}F&NN(ySC0|ln1rG z#1pGEQ+$0$`+yFx;c@;BSJq7k*{NAJaBi4=7RF`~#pQ zZQV?89@j3Vm@Zk{i^7=`+M|@UO3`{hhw4;q24&JtX@7Bpqo=j@2P*-d(XP@%{;YOq z0$9&!mwbYnG;Q2<(9*Rcen-b=XirQ4?SfYB2F^_Fx)>lYYIo3n`jXbW9%xszOOhaP zRqKO}!Dnd)Yyy<6&B0Go_-k6F7m6J114^%5*TzhPmYdoE&Kzm3w#6u5^R#WL^=@hF zwnCk5Ysc4t`**Zc7J&7xR%r+ zz0qbpg3`CzJrt6@)8}OUI!2pzRg`H6OLN_5=E)T`~^EXRW*k0;Sps zQGmW^FZ~JVt2Tr>(l>4Tc3AkXy?PzRQeC4$TD!eJH_cnM?fxKcbTHG!@9gMm^h+4Py589x|}E!3A%G;a30fLpam*X zw<7?KCh0 z=5uwcPeSgtu3{*lJG#^xfbQzTDDb(bn@6EtzHUr=$lce~iGwo*x_pW*9_X60U@6qK z9Ruj0&d>f21Rv?<&~SRJTa*ilC%SKy;LKB9OUfk{>B91Xe5RZF3B_|=z#0g?(2ai& zM_=k19RgIW8=M94S30i^5O}RC^AO_ibQf{*!oSx&xq_lZH*hQreb9Ai1=l|6{7*yK zC*AIfc9frWx6VUbscs}itzUGxG&6qHjiDj4R4=Rp-F2yAQ7zh&jjlReHi7wx9aN-fQbmb4^3&?^tJZG(hmL4RiS35 z{wPJ+yY#9=ugE0sy}@N$W!{^-x{rzQm0=&RI6@mBxv zGKzQl%j2Nzy?z+onkdn`eTRh)`h9c}?xVgHWpqC2Z8TIq>+Km&fGyR>(>Cafo}sFJ z)vsFu2iwvQTO3DX88g zU8eemNqU+zH%tDtLE9pAq%|sBa&yr5+bZ$2$V5nv8erWf{YrPoBBfV!0KZ+D^A>h@ zNNalm+9{o(AZ?fA*9r2wrN{MA#7H0M+TtE5UWUQF(kCw{+b0dB6vKXLWnVxCq~WyH zKPc5G0y0*zjE2rbQsfq)8~VDGHV-`Ul3^Bzhozz`fR0Eb{out>shHePkWSG4;F$F9 zRnQWpoxi|Rl9Y=d74pZWUmTsrRj|iC11VK%Nt=>W(imDQPD`~Z)pbV7A=+6}J@#DSaygiCig~ z8Z=MpLiwayQnfxPZcEl|6nCVSUa)&t3ZymSo)pvzI`gFjx;AiM3Z;~MfmCh+Xb+^y zJE5#l>grBegolzj9d;i{mPoKZma0i0K9T;wZ883-l!Pl_e37KogxzOS#sJWsOK&~` z`9fNj4&+Oz$$Z!?mJ-^acqIk&hNaiiPm96wMtWg{g||{iI*WNH4eSQwd&!$7of7H& zAUe$dAkCm0^+%~PEwrDc`9mT9Svva`mP(}_l#}}+RUQmW-=!Hek$M?oRzl5E!yY>R z_BIUI0fA+P^x5ECZrD#jgO4GE;*k}G^|XAgG{jwpL0^Md4YXAThE7~o8=m0utey8W zRBHiNe?!&*um%|F6oMzv@JJ1VYYdALAh^~rzA9LP3=#K1TW4?|0fP>MUmmKq-jLB3 zv|z(UKL~6vT%j#xh~dyI&_WG8wSYDmj0^@sB1b~?(SP!ciPFqux`VhrutfMt(C>kln^ z4Kv~Z9WeB`1D1mZU&>0w8bVjVQoLb)G3s*I(34ajG3=ux!ZEv{A7xS#4W4hHEy+-Q zFL+KHX0?NwGluE^g7vJSxediR!%y)j&KpjBLy=~9^28ba+kka%eL+#3>)42uoW{n+53`vp%7 zJwHPCQ$tPsqL(i+%%t?{3q$!$5PWG!pn$K~(E27=UKvKj!I{^FyENCnF?dm3-Wq1o z7kOuBN;|ywhW!eP62pq=ko#cp-2j%4hGpI~k$y6?rL*79hRu}UEHzx~4W2KC8g#GW zt6}d&6yFRHgW=kDLl^~6Uh>9Ja4wbW&<=jN+}i~6KC*BFax3IZJK*6;xq<|muY88$ znN@Oq`nAStIg={kCm*C%^Owinp+m3$xyed^f$|s1U$2oT(wwkXe(D7%NdAo?f_1Vt z?b#jj>1nXEUe>1q87xgvfVhz*3l8pT^i`*+K($iyTG?zHqrK zC6~6!<0eB{gxteI<8PaMu>{yixoSt~-Y%b~>*_n?;P)tY$_sL!dzYL=d*>+m8?i*o zwI{&C-Ez4zfMR5YmWn+xOGnas<+5}|WuKfq3F7jL40Jx)%h_%B}e_JZJH`Oa@plOT^D2IMh$a}yvF<%cwtCdrlBqBt)5P#z&!-a!eX z6EfQu+D^*JF))!LA6SHnrph6di8>|UKLO6u@+@k#bMo3tPPep_(C4% z34xb#kI{gN<$V=l@Ri($66LSu_6acfMxOT^;&0_e8IXG?AGOnb^+R;TUxHe)2Eu_KMgX|339410n`++j3Sf=@e*9%UfD%Q%|WiYVj6d7wob zhf)4vxA7~bWMYi%`vBTwtWOi_UgK-TE_QyOaR_B^_8YskKyko$F%p6YjqNF46Ki}- zG58_lDvH+QjHA*~#2YJJhEIo$*;JV$#y-D-^Qf^?CXflndBfn^F=Kx^<4H8Gr0iId zv43OGjvISX!Z6v`g_5Wzj7NGxwf&@V?9cEf#h6Ivx2KJkI4C`19Abt1S>q|%1)eh| z?+5L?v8Wc1X~xl=VItj_5(lLj#$k~_UNFv!hVD$`Ji2py(KrKV0sJLn6&f6ujfIqq zykb1)gW{@j9R);L#_eIyl5IC;(9b@u8Jkpur5xkovcO(9?xl^$4dcE=pxrbcqBSGe z*vbdUJYxy1L${1|_Cn2VW1okB?ilybBy`spX@J3d#)Gq=EZ-Pm1j~J+o$|8<#?{5B z*#l$SD}V}(;%3ku8tsEC0{h4~g|dQ=jo&HB_rzGE7l==dyDq|Rk#WgtK+lYwDWCn^ zSe>Hg7sfJY!THjdfNP3;v5}#G^_8(O7sYGigc&gZ#&~ruptr_OJt6+ics3kz?~Oeu z@$k{OgDwevGWyslXZG0`@fO%pV~cX|?TfM3CHVB!IGj#iz8PmKu=L&dTP+~H6z_H5 zT&gVW0u$cK?fXD3Q%2L>u;mK#9m;%^3zX1Wq2xz`Wu=lySpi=q^D8)4DfehKTdj0q z!Q!Vhnqx=luXN8t5untgIVn(?L<4?};zdXBYn52qnFc9OSAu1ovfY5fq3oRugX@)k zEIbTW_E9c$gW^HSiH%AW?YTpgU)3-ls$9&0`AteK`k-OTW;*HFtn_SzVvF+Gn+~DF zl?L=hw<=9X0~?_nrL@{M#go!hk;=X`fVM05OwhJN86O92JC%P)=`JNc7y?ns@GW48 zR$jRQ+O34s?k`4(OonUwlypk4?pKx+pg5px=nX>$75`sQrC23r0&V0EDTh_i9j9c` zO{{q3E=3)Om6Mc1I-*RVti(~}!!_tmP$s>GrDMuGI^alDmd}QVNs3zqa2{8*v^FLy zdx}6ip$wp0+exKQJE%@k@?)VhRhdcm5KbxKw6>jAF3_&ienz=54&_;;(E#wAQ_6>c z=e*K*1)wygBQ0*}%2G45WhfI$;midkrzVh@%DV1Qb5WU2KVrC~WGw>AW#tL!zM`;{ z6uhbkL2xZg*>@GlY(@PGDtJvfs|A#!Z0HUP*X>HvbI^7}ktRa-O(m65Gr7vox51OA zh!n)%Qrb2L%Wb6^oxk2u-qIDYyGm$pAnz%MY0FfgxFx}h2g)Y8Szf4^u0Z^uBK-xQ z9w}33)A3ljM)#JUC|4GP_Ed?u0r4WmzL|EI&y;*huRT}F%!ck4iu(lcyi``Vg?zDM zJpeCWDLXa+`C9o#x6a-u4{0)atDKz#pWZ1S_JifU(%}JEN|ZP{{QjU+xdr4$>$%m>0n)F%IgovVX8tm2sW5L(S4DPrY9@lcZliiWfY;N znsn)Klj$2xlVPT;P{?gI^`V}$#nhE*7;f4_N#Cue+O<(cn9^wcY%^^ri~2^IMoxj< z?WXG~pzSaX=}YnFPE&LQu)9nqI;e;;4OtHp(Iyim_ja59p=0M5)9q?-W{>GkA)vh` z%TN^iOtxy^JZS2(8s=k7hhIS8kZH6GWpSoZO2fyS2G#>~*c7Y=%Mp`%EjV-3G-v>d z1XI#E{67)=G1Dds)Fhh1hoXU#OgW9A=D5k@C|pc7*~&r92~$Qiij$_G4iHQ+^;iX3 zs;PfJ$el7dlA!yvX=^hSXG~}2L(5sy_-TO7nKrtC^SmkX9=y*mji%PVV7mGkS~5+K z-oiEeMbqkkq5G1lcWVeL%xu$rQhLp_kivx=)A|#D zuAAZ}LfZ|~h_-O%rb(t5Jl9ldETBA7;2Ox?GTk2qEw@c$yy46p)5{Zp?wTIa`gPB4 zIyM_+zNzh32;MhczXibpQ=7~1?SUzewlIaJ?AkE#&@_(X*GDGnJqSEDZCMO~C#Hk6 zDST?0=?8%#Q^_=#cxI|Xf#-8mCPf`DOx?1;^3qgFeYMy$z7C34rpV7gzBbvf(DMDp z)R%?sx26*_Ao$MY&_nROseM<}u*8&2zmNQ2%Kr@Lqv_^W$bT}KbnxP{DS0;JN=-Ls zq4;7tO0&;bQ;R{MeKVzQgTQyw2s(-JGGDk0ElbUd+(7d-=hcCsW#;aa&!dLR&Fvf@ z`k32Z0P6~K5~UGWnqw%;@io`(2Q{nAd4Gd*wfW~R@Ym1WfaVl`^9~=d1ej}5&N|S1 zlah36%vEVOx7Mtp={d;E&`xum`Klvgrqy1bHb5K9YgfU*MsxodNQas0(Y@i#W}yyf zTg-n`E-~D^$Oq6?v*&MMi7-#{N3qR3#T(U(G`FG)PTS3AsEh6}=WIc-(<~&z_%5@1 zO(=^p`z?eI(dN`8(6ZaSatQp3G1s-zPfzxkLlU5EuQ|IDwCywB{1bxv&0h;ZJ7A6- z3&DeC6K%0#&AZz|_aSrOc5ud-MIS)%<`z?-^sssLS70dx+%v~k0oHY-ot=T#AynfJj-h8Y!kZI<2^8uxso6*d=BJt%~AAYfIM^WcR=1UKkf&)+h&ym%I=tFQgYy~S-%l1 z_so$)P_umVX8eBH&fhnSlw>Y2w+n&b1M^D?gbK|y6CwZ5Ja!PE7iKmV#Y^+YrO;Mv z9!crEH)ekxYTlZY=>FV0vzcxYy*DqWG*gLrP9Ly*Fk8F8?nm>sG!&oA4@1E6*(~pa z7p3ML`Vo=+i+QGk@~c@c4>jM+BY%hBck}v&(CuaMYXNAf<#0F9ye(mr$X#YReGJIu zmfSLMj4)GP1-zfTAWf`#@#cE5l%P9OTyK+$YTMm1ICBV{kJnRNq{An>+V`)lV zZmr#tc@Rp2EUM=4ZJouBGJXzA$TzUAx2&RjDZ!SAe}UX!d9?uAHd^A`ArN92K#@-ZmsfV^R8a0B8uE$zyoF1eOuH?ZVc>V2eW`<5lr1mEsjz7L1CdzPmu zfbuQd4}#~u<$5z93oLUexO!lDKw0rZi{w*wX0~iYFGYJlK6| z`TZ0u6ox+*YHJ0$^~X z!%~oS%T{o%v-Y7Qe1~;vQ)pRl_1+4(V7s;9XAn17^Phutqg68vYC^2z=)Op(wTL?6 zChM_!D8j4_Yd~VNHN^yuu)C})@=-)t?G`%jh_SY&9=OMPh;|oytv^47-~nq}nl}zw$I$Jv zSnFlVydAP0rA0K(diyz)##_gK0n1VAeu{1qtdZlO<(PGs2WW}bvoE0~$?EqJEXS>L zr$GFqRb_zpDb{0&C{nE>?R46I%G$vLN>5u;=Kwlm^?wZLymdu$s7bS4`3^Pd*8N*x zBGcObAE>!#4Jtu#$=YBc1hTAZngg?~)29HsW}WssyvVV7(iZEwbs5b9H>?4Jp!1%! zb}%^et!?Pr-?tjC(3R@~Yb^a>e^h`^MOHf<6g;!O&V;~o>qav8!m1kpWiPD^CD4kkbN)i{%GzKuXs@lmegf@{ zwKX;RTWd))T^o64eM5Ie-&>QapiU*$a~c@@VDBr&dGFvk`9$aqo3V?u* zt->Z6e=BUhCD6Un*7h&x_O+d-_-2(YUJc}GTPz*g``LO^a?sxvL$P;&&2k?_pzYQN z=w4&f+=8XGHp4$K5oB9>7;@`u-D!+CY-N{1e7)@(<->w)>P#Rv*hbK`%#F69Tom>Y zTi>$a3AO!3t+&aR`X_XU**cB|wAnU42*nm#5NQjyxzX9~R$JryfFf)w=it@3Fg zBW>O2htb<@DX9?HVSCgIEIVx(F>q~{&7E>(QMT@0Fc@v?OWF9{Hg!2vDaLNQ-v$zU zZ13pDBztW$sk7~~6}E*>`)%%P;Y_S8;|XYoY^Ul$X`HR$Td0Y*t;mC#!?y2quyVxq z%V^M!+UDPYPYJd%G*2C~8T~;^v`x+iEy?D66VP$n2D-$aY*U`W&z6hLe|)iR>sgq1Wm`vyyVtfx zl+<`*D;@#yx3l4CxUS15u9Y_ZX_nu;_ul0wTiUj=GRw-*veJfT+w98_ zSu$h~*~@{lL1fAhP=v59%Rg$2Q)9nvXfBtX0+1u;lo($4WTdNGkQl3F_Kn+ z_%WvG+=V}5#)7c`#sl=D1u{yg%oM~}{3+ZAGd{qd16dHlupWe?P=@X^L=nb#q5(pC zIOAPU*dJyD#ej`q#M9;>k|Fg#Fj0&c+6hN9R?!wXhGG5h&@tnF3WRZto*dZ4GlX(* z2@C=4?h_fKv^pd)ShPzy!uWCyC`TDPsS$LHv5(fa;|xYFxMapla%i5gGtN+}`6R=M za*!0pHeZlb#(4rwV~lP__~{JK8K`72*i@IwX4q0dau~KIz?@=Cy$XX|h9@mYrx{9` zJM$QSQhJoncxnh-0pqF?=7o&nLbxwt1km2Km|?^ylzY!r14CfJ+(AQ{}FV z@f>Zd${9oH;Lb91wE9;t)@FjMWIXga(5e{oPC$5$@w^e{=NS{uFsNqqAHrA-Bl>-C zwTv37)6_ARz5*FxJ3`@&Z^Rqr$!#Azoxm6+)+pvEXTdHZziFD}0G@ zmzrZOj0gt^TNx$v1hz2>r~%c^_+kKPmle)DLoEI-LS>W^NV$Wk1t?8yr6Uq^#YI`4tti+?nhr z!Fe#F=?~m^GJiuNWnXZRxs#R$FQ!H??IB83l@Q#U~Zu8#Ytus*`+Ywc@>UQ z?aW5{SSXDddIF&la>o4J@yIrK2A z<^!yk8NL`Oeau2S_TSH}qJqE`=0+pN2AB_1MfNJw%L$m*mcZ8|m2OeP#v|hO^AG^fxHxnEG#_ z&37do=x#B!uhBb{0Q{06lBtog|xF03`t@N|IHNr|H?>yHZnbz{X+mgLS- zn_%w2vZsUdWUZnc@gQs6I8?k?9{&TTH_Jbl@=qUD_YY9@Wv#vmokOh4{_y0-`kE$W zf7W|zKmu4fwEhLMS|~9IV(IL#4`wA(2PlNap+q~B^~z_6B8+uv2%6!nC#W}lm{mUq z62ba+BS<8x?jb&}57cY+WTmwivYX>!_6IdL2f)iO2 z29PAylY60ggtd4h93EvIp*qzuRx|a1kF%N&0yLSWkzwovtCDteCs`TPCP`tP`3o13 z$~yfKqDW&I_JT`ixyB%v3_EM%7;3=E+0hM@iSlKrKbBeW(rsrJN z@PFrmSg%tQd1!4xn9sU%5h?{NJ-v;EtPZNU6tPNP0awg=o%YaYSS8UgC}I6Yt^88f z-a(KuR@m2YTh78KuTVY9T1j>I3f9{%!=jQEy#<3+ECoG6=U6SX2&RTLM;BVl3M#@_ z9n0wjkPECQXs1}u`k4>S2G+-XaE+|dZg3Y_5qyN!#Ijs~c{A&0YVTZPy>5l07M6bu zuCtZJw>Kl2HrAU|jag(mGkDb3p52J+=Z4yIBhpVc)~rNhw<| zOS}mNeXKrraQ&>mU&q)L)@~Vu1FVCu0p%*|F%`_Ov6j<=be(mEfw3E`uc!)iljY$? z`R5?Z8U@u`tPg0#9AX7gmvxxMrQP!gOG-_QQP!5l7#m}~Erh3WmZJ%tZnMT|!#Tm4 z5kYg3wUoYnm|}fI7kY=~77ER2R_XUpxyzci!O;vWlNRcGtR3kXyU+5Rruxe)>l4~_ z&#|u2`sc*f{D?tk_Paq4?q{2+8t=kh^Iutly*>wHuIw*q6YR$Bpk>gV?N49Ic(9kA zMNFRTKck>>kiC@(a$f8gsbJ&HPCW+V!@ltm-21ZMTmj5O>@?(f_62_I9!kCZ*{M;u z!T|P2FGwJJ}LFppucJrB)THggNOIQB9wBDBY|N2vFcz^)I4MI!rI`eBpU zaawRk*uTo*{wVvvC-8KPokZJ{bk!*dHtg=t=hXZ9qw3ubzZvD*HO! zwKR7BdjLyk@Ad%6VCT`ioXP%jKgP1y`(A}+ww=9~wnsVa(u)Y{6kF;6om}<@XF&4V zk-i`W?06wm3faMpxWXd#whQ2j*>8j(v@`5*J?u)@yS@Y|Wk2#hRLazJ%D$vzv$DshT~HPV3dM_tOTumd$g6u#T;9 zN5B`@8|heKJ$r_ZV>GZ&dBS}od+aG-Uu4hFqS(a#s2p4~yPG;Hm)QTL!@Pz4&sLCD zwgZ(c+StpU1xh>nn@zyH%=WcMVz7f^J-{c7=WO9LxvUL-W90Wv`|B^fmT%7RYt>G1?E^V4tJs@h1Cz5j+gC zW#7X57F&81+z?yUM)j9r_QSEz8DW2RA1+4OpPq!y7~8xD+&Fu%3uu$0Cve+5+N7Q(@$9AKc_&&SmLuk&jhu4G5u}!`(aNschfImmh zLtDW)aqiox|KQBon*|s9IdinLcH#W>7X}Y-mLGt7SB`@Qpl+O-loz>k{AqXP!MXh} zTzGO$)Bf)uC!11KFHV62#=JSp-9dafPp*TCFXsd`Vh?eGs1D-Caih7!pYzH>j0JFx zV>4=B5Xi|r3Qs|tpQs`p%qe^hB!u%j&6=T{-Qn;X#!05eQaDHcH0%#^l19NraD3^! zS|sN&s`*862I#mAX`av={h5uFgI8V?_oW-dY!f!T5O$$&C$FTq^r#Lrhw~@;! z@&I?57> zN;xXJv@*^{>Lr$QEN{Z^SxyP{0V+67??SVZv+QNKsN#4O0_Gg2;Bg4gbJo+7Tg`cg zni@5n2N%Ggmg8K8ORD3nDg@XC&K=4T>p4qkchkU;ro&Mq$Ntv~U@vm++{IuMXVDMf znmIeag5f1j63sp>oW1E7Yvp*>fV6SU0T^rNta8KHWlrL6FzDd4(G1hcS=x-yx;VKB z2&S9kPQO+U=iXc3dO33@#M{R?Hw%=0jwh89uWpW{IWIW7;tV3?zz1Y?B5roS;X%29p?>@m)@UW|=%jNilVHfQ^K zpiFSSEd!b4+CJoJLJ9LM z=j{NHIgZckxEKfSV`FgP$h~(Knoiuu|AMA7H;@*m{oEDa&~)L3&>4UO+k zqtcDL<#%{+=Nfx};=%oy3!x{Mok)K=`ykg&&yE+DO{=gscQzI(^lD z&wZ%`B!K%Y&2xcV3+-KkxI4$e1#>?+49yVks!<3-xqpX&gmInjf<$n24?rc7+xI27 zDDIw1h$)&|&<|k@ck%^V|6;j6Qj0u}`%nbj$8&9b#FoJQhB_9B+>w>QPU2Qm>HP?| zM2g#el)G{_V2*KFbPnn`*I@}Xlet&xfO3M{O6k=}ZYWhZQnD*O~;4-+E7eUjW$^B;?u(P;VN5N)uS0;eV;XX>6tW(^o4}hJ^-Mb#)pXOfTVJwe( zyB}O3cZRb5BCf|F2#dL2ECA>kZq_H@O1RCV2(*;T?uAMjcL~j_<=j)}VRx2WPd{h{ zci)%rP-*Ax%7kxcg~6sOPFFJ!;^t zVZu`**NvXCi`;*Afi!Wyy9Z%2x1auAz$NaA6mTuv^0#2u%6)-OY_xGJDB*19)={VM zGS^-k3EIK!rDwgHdy9^W^l-}?VBgDq^&q%D?i@`9{oLypfp&#EME#NhuKH1+UFA;D zHvbxzLB*i!+&2}lyTQ%=6A|9ze(Htm9pwH%v%oFx+6zWSA?X!tw}rxt$9- z${nR!Gsc~K2-xG?8hRjZbAO~SGbXrE`lov?B6+JHg^MWOks@G6^J=KU6T=&%%pjKc`EnS< z@qVYmOFVDjX^;fo;R=vMULkFzlX!QjR&j*a^F8hVj`C8^fj!1M-vGnoysVeuDVev2 z*0B@3bV?FW^3GC?GlkdP35V&tq2mx{@VqJc$mCVfh9rkqngD}SyhjS5lFKuSK=OIl zcEe!-Z=VymLf-tfh@yg5*$z_4`-+OG_9~v0jzm=RydrQFHN5nl zFYxqqFY0;eA0p6;ymPw{VH0ly)wi2@r)Vx~*j^necF*$D;k)EYDv1By{F@l@nkc_=BFjVVn07t4C2Bc zr)B>D|5G}q>dNn@Ev6ga_7KM0`2)1@dGN)XAoS$hDFHmlAMr&@KKwFJQh~_^-6Kf1#M;pIbekL8_jN=!dhcKQWpAWkP{?!fO68Xcm zlsP8x?Mt9~gkP8da+H4~51x+k-=<>UasEv)ERy+i%fX%Ci~fa+ll;(p*r)JE|Al5M zU$zA?rSZcki%sV%_Jhmd5B7p&@{dv5B#S@vG)Ol8!gDas;b+p6a*F?D80DY2d=>Q= zPV?CxfE4imqP4Yc%AJO{gKemG7P*%#FCJ<1`i<$p`6 zb$tB$PdxJcr6-|N&#w`HyU2e?iK}nocld)e^ZmC&^AbOrrr8$0g}#Ar<);KgvyC4{ z9m;n8Jr3Mo=D)ECTnFESe#uV0wgjPd@z*~CVK;wv4>)@de<9^;y?kya(E9j=7FVu; zV2^`7~k+Y$T(j|z4_bxtPyY%c7Dqfpp*Pt^gK`T-=K3!clcvHK%3@2 zO?k#Wehp2t_xY{g;VNeNxqBg;8+-oCM2gDs&dqhQVOJpxXn) zMUd19g9Cz&Z{gQf@Da_OZi1C90CN}ESv1jj2*SNVJOu%?<2xvDcpExig5D!=;VWRC z!`LAK)+W3%g3Y@D<1e^YfV&qUxNU>qK*1lG&1L~!#VaG`?8UC;~@ ze0Cq0;R07P#tsWi0-!_)w!O9yppgPY6{Jyurx?(Q7MN-Iju9v?Lnl_S@gc+%C&;B9 zQoJCRQlJFE3lBggQSi@)7)uiT zkVIA2Ji)y$!Q~4QX){(JFxjanStv-O4}FRR&2%SA1p7MRsZ{WMJ?zT_RjnZ9f`}~m zJu3(iVXQ)6Q$Vv)@OCfkssvw*gPaq@?giL+!JVB@sTNcXBKjJEt^{|vRpkUs9X}9Tn+avg3Z6c zMXTWF0gyHUez=WK(MD8gI5LRT>!l%*h<;ab-~Lw0CPj|9_8*g1w{lp zC}^a*$1OoEeeEzLNIe2>Sg=0|DkFmO_Ym)>po})Qw*^lg0htgaP~&S-@Hl-BKP8xs zr2j&5NASOI!A=VT--h42g7gQVGb4DX0WkLj?tvip1+5D(HY;#^5-@Xus4fr(;miz# zjzS~-=uSeR74bR?Zw&!#zc8Kpj4r}|DTO~ETzV6sxe8+!L&Z(FlBzH6!VAlQV)qb6 zM&V*Sg|bG$;)u3mw$ z0AV|wISmvh(*f8Zq0^r*4;JSB0Z$>qB5K!%3NtAy3KJgR1k7+Dw+se{?Lq~e)rb&& zD#67>3U|@^gmB5-j+!Fo7M6eg8IGfB8a2+bqHQTlM@ zsPG=06gws?+W>>(!u)LbO%^_14(JoY$M%CeDU{A)EJgTZCP=E#{u6z3oFYVGtWlnPfq4z^4fLq{jdg*lXi zpB3)%fnkMk2^}h_6!u<+iz?yw^yZus-r53{^TKB+C9W1e)&jd4VHdr4wZaNDH0y-B zsBwKkSVniPUfB03P#T24{{+$~RIGr(MPZ|jmhvXy93{Ff!jT#T+$#KXIk-0A1=_{6 z3%jlW?XoccCphd7{u&P#ox**zo#_(3OCMEt3x7Nf%^qPItxdf`=NfQ*!u#}XXTLC+ zj$>RAuAT=nAWWdt@VapAa~QiJJS?YF`lfJ-QusmP>$H)$C47j!Ul|fEr@G0ou!@8u z!o%C4GAev97i3JR`2>NE3tyz9;kNMdUjUsD-lq-fq;UQ}a6cuyMRVs};bl4$IV1ew zHK5!R%IE~)ePMeY3}%HtqqbpRFemi;9B2-rM{1$!C@Q3~tCMK>B5Yf^%0U9b=Lr+4OXo&7}xX3`& z?ZcucsihbpdPD`#NYP7IaoI7VpcCL?MK2zON}T91Izb*UnxVaOg6NxD0813LErMN= zsGhNy!+P{Cxh=vHXRur8K zQYY&A7W<7I$TqiX!XB{qFW^7BhntxA2cWQiq6r~-6s-j!1aq33NUs>bTA(V z*F=ZbL3myCA(c&Uh&1%D-4r!ajeSt`44tyQCF4Iy(22*B;%BJ?n ziNoiEoEOhU0lHfJ0@b`~#4r5>uv)wL*{iUx6Zcc8{({)m0a4V8KXU`uAkGSa>P2zL zR;Vo zH49;ncs1=<`oxbt0{8u5yLlmEyCOdMAjp8&Ksr~&wa39-6F>9`uy2a%sPHi;&bto7 zTjI6TAVcCq^oJ#e#b@YGiH(SZsP;Q5j#&pXCU(37;kfu`YW>_6k5KAAA&#JDZc?nT z#n_bCi_V7J5nr)W9yu)@d>g9w#9416sQco_k6>_CTu;x%oOm7`zH^X#n*bO`$&=J^ zc9N|68!*n2SLof`FIiCs6&J~+B!C@|1h2+LxJsBeA#{`ck1}g_N#k*N@Q^&D2Inb> zI|J^Z#2Q97!%M==2Aa3zVboR@_(-=?ToklD{qjB|@@@l7L8wBW?MkBu6OIjF!Z2 zqW{7aBYBdl8nF`5zd(zV?1;rx#7j0l1DFH}?>fd3C0`$a!z4+^7vPRb{+2-HxI{y@ zBw2FA4cI3n%in^^Ny%G6a48b8D^yY?t(4}ZNfKyNlrGu%7`O~cxIef|$$>I@|FR^D z(;>~4OjiRtM{=K5+EbFcH4x@WR#Co?FL`@&nT6MyTP56EU1M+h2+N)Ty~}8$PEaqB>&Rh_nf5j671~fC07=MR!b&m zUsEG-ONLIZ#P?@d)Jg6RLwG?l*#%GalA~?7Z4DAFyXpR`+78P4Yl0?Aj$wN(e7Y93O>Uhh5UM1|fDz{(Kb{U6LJl zLAoVdsF~0s2|kIjUdemMVc#by7>0enL>~j;6-nn5R0bs44G8qQM1BwChGeW9f!>rD zsLwbk$#@=MwA54xIk$w zofZg^zW*o;f~9}b<}5_|a0xI&rO$jo?_Zd-xd*D@(i$7WKP=Tg0G%kQCuO?P(ii^# z7bAU|ifpmcrE5Xrq~!(}#7k3Of_Z{;^=gnrX+Jd|lcdZ3hTReATXZc)r9aVneN1|d z+6Tv_Up0eEmOf9%0#8T}iRr`5lhU41uqo0lZh%RZn(3EGlRk9{!K6zU3J`vVG?Gdj znbHHi!Tb_65b#(iy;-EfkmnGTrn)lq#6s*%B3Pt2rH$rWe`?L zWe$KjC-wNR3oiYTsy@}y0ctMSNY_#ct5&*t3}AKAzLnrENNYEP)JspbLbE}dMfb2# z`e7@=wqKM!y$+yF(xZN0o24h}K`u$Zrae!KbYVNjTBU4CW80+Py$aGU)!l>p%Tntz zfa#E?)4JO!Rj?6Zm$c>}40@%ma&fhR_lWnIe zq`T}P%D_BiOKE@LDNFQ&`9awRs+oDo_!~jIWj`!~&_}jZ0&`!P&>jNmA=&;UfcnX5 zcfhZ|ER&wH0GXZE`#{;A5|AL-8zu;YWvORiA0iW~;3-tr(guSt*%+d}&q|CAi=25cbbuf>X&Hn`?M%HfxO04X!@2Hg$C#(Dss`0W4sVhIy83f=&cv%hoTU{a=o(m`YQpWCdS=^>bMX_8G+Z>?EY@dkovkr@X7(<-~kLojVJDLsMhGE)k;%d+{O!F{J}J{4uUWQ*vx z>z3vJgRvgjcG{5i%ATSMvb|q+_BnuFk=>`8KOlRgAKX>h;3DW;lbwA8o^HsVl>qyu zY_lBPpzM8mRYqjV)Ds+)wJk)TV=^(7yT)bjz5#Mumam7(lx&t>_&YMkx1cgD+etg1 zyRv#Z$1x+jFNXO&yKIvy!niM!s6l3BCQ9k&WH}GwdL891^s70^H?4+yXZffDg!|!|ALE&qiD&PTqPs$IVF zU%!CCA-TPg{+OMgJo8Dg0rJ0=g9OSKZii}+{8y?72g^56E*>H`X5!L9<)6`BDO@g% z0C!lv{zsri$Uiy-E>iyIchHQIGyZF_$(eo_iCq55SAb*F>k`~IBFfmpnuhfGpmOr)t+!^`i4!A!rpC1ijwVY2S;X3&npTX}1 zdE6e1)yuaUfzlw~IRuA|atS>i7v+xBGHQ~qd;tc{@`MaTaY>$a5&wmEL5qA9ZK7M{ zaj(ImO}=y+blT;;_0YL2A6Np?A)o&ggq`v)sFBnq-$0d*Zh6HTc6x#CZR=%5(g52>Rf z;&Bis#aI=D&WhgzxHJ0|&wD}WqNtgM@PNWjIi{;Z9SfnG;%Pbx?yhL2j+ckxtQaMV-74EMi zm?A|T-RELOE1h9IqX@4DSE5LzT2!fmkpQkt@zs}bSgx4(5@3~zS7|M;QbZmEIj4A( zzF;}8_?P;d)e2TT)n959AIl)Uph!#wsaMo5z!f$q8h2u>Nl{e{>}G|OI8&s^pMr^??#bdh>%#h*@KFF|QA_rh2ic~TfReYg(_bK_+lr;v z=_t>Hq9F&^lZwxNMTk?1Ia+e=C^mS*a9UxbxACrG_xG@$QM^x2!aYR7f#A*svtNk(`cI8uS}&h!$n!;2=0LL+D_QnU6s)f zL&r^dIt;{JS!+iW9?He^Ih&_)BNH$OmG!3q>ZN>cKE}M2{8b3XN0}7^p|5geKgc2F z-U<*uk|jW*(qCNKKSLrTrR&LCRB9mkU+~Q3)gXeKM)p>-%lX;)A>nX0rX0F$O1r($2a za!LgE8A`z@R5O*F-5ASKhSE*QR=Uu^o*d=$LXcC+x9H`_Ri@KJep)%!2QE+PL)D{v z$XpOX0psxt&Uf=aeU3LQLnCoeQB^t9*&td3DO2RD8am{ONh9)GNE50BKOZM@8I5 zrIlXzi^`{H%hjYD=mB)Ia)^%XUQ&)Qs3zQ^eCk=;^;TsZO_y!THPqf}S3W>L>}6$Z z7{)r3t7&!VREo~SQrJfGNUQw3(fUyDP z`={XOs&Yptgx8es&v@m~<*Sp3Vp6%o0b|q3eRP)euJSp0E@qT9 zR1>LNy~oF_nHR25|ai&Y(^-a?!zAOYs_ssK8Jlc1`W zV=U3GQq!E2qzVrO+7VUUWdwCp^*be7$5i-tpLk_d5%m5hs{+1<{Rvh42N*l4a-XUsij|{ zTK_$`Qq@OPY$#K08v$6kY8zF7&Z?fLrL{s8bP2*r)s_kvR6zy8bE*S&+BTn8MNwi? zt@_%8!5Y;;TE%Ns^VRTMr#gHZ!V4;YDtXkazM&PQK^4*h(x`ei3ZNHNsb2pd z+&8PPRKom{DufEtEvgj?aILDf)Ea41eVzx>uBxN&vM#HRe#?b@hsuHGhECNG9SiPK zbzA~WuPVb|eEMm7&@0dwP>t+_##Pn%Eg;ua(X=nWt}?y>?uP2#chJA7xYE+d>Eu1k`z$+LVSM3M_=519vt;G|n{qze?s!}MVDb){LVBS&X zxkEUuve`Gl{;p~z186g<6|_;jr{Y@S@V@H&4-n3(oE`(roT`=@Zw~73Yd{>;vyO1+ zq`q|)oU{7Vcc8LgeeD_yT-5WqAP3ZL&*CCn)mI(i*G+x$3pjLFUyy?HPzz}(_f&s$ zn(7G$)eZg_^inraq10QAMIY~v`p*?m^;M^(L*8Gr5qcg%)C_8IhpOMLLug^@tViJ?Tz&onki%*{O^Xp~*WENfMXIw7 z!Ecn>dIf0F>W`W+7^BXg16r(lSvg3Ydhd@Ii&xjWLNh^K-~#MKwco!8CQ03W1P+g= z&(DG!Rqvxs=rMH=C56Y;!<1?zs~2i9c0wIaU-+CKdmJix>IOMf^3~b@m5|lD zze0q?>USd{JfkkBIle^Q_aGdWsyF@wgEDn+3rM+oegcH{vudAU=v1gV^ATyKx`>jU zDz&Q+4$rAgv>80F{z(ncYW3mOu&7bz(%M$59;Q8Tom%@a&@QMuUVuuyI`&DBi|R+| z%f2S{5!z`rtH(Nla!LI}DePL*L2*!NRd0J3q|L78?0~0sbv7knm(_i=&~~U7(JsGJ zy>JcgOqcq58&td1u9tw;qjocc>s22-2GXa#B7jQ2`n_OqSJY~%^ITK6WB}~C`u!k~ z8|rxamf)sZx*jnNs;|)EdrST7DvS-O?Jv9qi(z#%8!#hkpDL)1s)t^Na7X`rfEb8JS2q)Fs`v5bg4txTdchnkZpiQeaRIhQ=lw5>?lct*TA!kj~W%%8% z*-M*V7tPPVLwG=wMSTNTO{kp`WjD>EzXQ}=lNSWyp}9a?7f;RTdW;>^yto3yOXE+c zjl4Da^ltlTUUtI0@YTFb3&$bNv=w%KnpQKS2-JAd)ElJvn>P8un*a47m=Mi|S79Ei zSxy!AFpc^_XohQ+{?{`;ta-f_(L`waCO{%JhpA>ArD@y-60O--0<;*7e=z*UYF5&| zAWjpz48nL#4&}lL8YMlziJH4~EcU2|Hv{1@&GHR!aa@xSh$xaZS7@O-p)t|nvy+;i z=%`4FX3KWU&r>zdR0&Jdcn88TUE@X5M}}s%HymbaoR>j0OJn;3D%qM^YPIEPx@ZDF zrD>owB3HAF-rLg}3DrjOG~KU&6l%);fx{xrbQ8vkHT$S|dq(ry>#!@)%>4{fsyTs{ zm3={(W-ggJ!M;!bZ)n9|HQK#+^2EO`0KEJ)1T8`vHAP^UDT6+gmi5 z0bpA-cd6adrqNNsrCk$Y0NQ0u1|NPqGy_=(ty7Z|0Q)Y@cke*ht;u`>20a>2no4^$ z?@-mKPZLa=^#RRY7KB$dR$AJwX?9T4=DLPU-znVCFkb=6P0h?vkU_gf^fDaY(meKG zI;LScA^c%YG82X)nkh;uM>T$QPIOH3g#)f)T=Vr&sNB}PF%7f{O^PQpCpG1iVNPkX zX)3&{`6>(CjOJx6T-?*F&j-1$*>VQvvzqh2!){LV$Zik^t^FrjGaR*@d>A@uo#`Bi zv-UH(-u>FrN?5pP+nm51&~7Y+rmHsoD1>g>YN{%@YmcM>#zVW1`W&9xpXS4pw{{{1 zDn8n1+T8eR7rqGMuRTK(V}N#X2kZj1kF5q~h&IOMV_|N8*IMz;9~$S(Du+$SE$`WrQ{;* z7}YRYQ#p;WIq}^@+*R0)?4A4v3P}+UAXkVZtxK;Z*b^qJ6jpHzH*ZQ7D6qmJ+TmaXh zW&R8EPOWhpG`qALUYLjXuNRkwTiU1XqN%B0n_drcMf=XLhT5GUOp>P|W9gw){JultG~78l*` zs}R!xyY2-lpStQMJt1||?c_r0t~(op*beIAsRZVwv-rckx9*8ixbV^a^%6K=-Lh6_ z9@5RxBIBpqu?L#|y3O=!1?V0Nf_b3s`%eKKq;r28F$L?6ehs@2-O^d0gzBQ&Fczk> z=TmIqI=5e8aacF?07!(c>oZ_S>RuwyD4lc|7SXy>^!mr>cF^u7R`)Zd8*#dmIRK5< z?WN>0L8qd3EK#@61;QkqfO>jIbQ0QW9o4Ph1@4$`Dc!^4Iw9?=lXZG~1`JQ={2m3` zNu3|Xoub=DlR>KPK}vx#bj5TID^pkL0?jO4umI$g?$}uvodYQ{~&yB-Fg)Z|3#wv9mxlkflrTfQZCUytkXS5DbxjB8HHW18>S4qLH9s7>>73aK#X0~O|OKo zNtd_`!e(76J!O}4l~#&Zs|Uqf!&a9d;|Tdkzt*H!XMF1zYLgBotZNGF`Yjx?bEtX z-N4Q0=5+(@p00?}qx-tY=_btT{zog`oGz&aDh~SH?jVl(BkSPFNxy>1fzJ9B(XiXE z&nyI(i+&zWwg>djQ!3%AKb8wHyPN(nrJC+~DXm8y`oTfid+POSU?0@0=P>4__tn7O zTfdS4p^yGiN)>(egS#+xNZ*wO&QI@03%$R7-}4{=dhI-52kJYhNFJpBXCp|k-aimm zAEJM)3n-!biY_<`v+G~m1ekDremr73tbh0pE-ga;$p4@dsrR8Rc$9tzZAhZ^Z@mG{ z82u=z#Oe>x>=UP7R}Q;){TFnD6Z8}5aFM7l5&Nlmsy)>l0`W zJE4Dt3ehL^_RCDDrs#LmPm-!Hr;<>b{%P9Dr|Vs*!kVFfkTS4L{eDWAv-Gy7ftIa5 zNWHln{o9Tpr}Wo8L}w~_5UB3R^j{seuA6fuXsK31(V@3M++Q1d-wUiQ^ z(Z6j^19pi%;S<1=>W|S}RHlEDzK|`~FL(pNoYikU2w{c(nkxp+U7?MTLMG{WsB2snt(B0b!kfF-?UR^d2z)tJm*t1=pYt_z0Sf`ojOt z=QZh@Xu)pQFQ=}}CH=yeL0a^?9O1WBUrz~ho8FHWuy+044-my=eed(&I`r&lsC4Ro z`4wE3{@)uw>DGUg4eTDhv=&^izPJqLefm%7TfBa~feuSt(Z5Nl-hlqtVp{*M>iP8k zUDGc)0<`P;^)!>;&>Nkhb5p;FGO0oRHmZ%>((m~lDnojF)PvPUU&qDRh~Amr=23l; z8QhqD{Qw+}>-%@%dT;B6cfd{P9jR?NsozY8S*G-%P2ldpfb!32z56HdbXWi0eMB*% zf1VP^d-?yq^N0 zi{U5waPxrS=VsWs8ae|p=4Plo0M6YI`6Zw|3=Arg+dU0_pTgpxVRbKbybPxGF!VO` zzmGv5gKZ8DeGOddh#oSeQm@(1aPb!i{SBi@h&RBn=PZPQ2JQ&#f(%Q70Tyg5=u%XloB*JcZkkaQ!gAZjUQHG~ifr~c$L}$xl4B|G} z#~LE?AdEA_(pEm+kU{Hpg5i@dAxt!U*8{sG!(O_=BZf7!U>-FX=(3L)0;%+M+@PS{ zV6vf>-h&f{_7-TKG`y?9Sc<{Eo{lA^8j5y-q#5e>futLX{s)T;!(l2qXBr}DZ<%E% zSOLRq!$Y*5jz1;aQ^!S#mov?FLR zOuh-O(Xi?;rEV7u*IonLWQeDvw%Onn1f5HUHE|egG5CogY&B@81J!0YzZP7(fk~UB z%Z8n)2&Ti}M8&;M!y`1$bs2IQaM*2_p>qN~hSFET^%}ToxHEl*bsT8+8v>|mb;Z!L zk^a=yfPqgH%d3WTs$>rv`V(O>VsN_!7o&!!sRBM`Fh345ZqU;ldfV_4rN$G6Fj^ER z4Q)@sZp!feF_1fkw^MLU%?sywQPvald?Kxu94Nb(Ld`pAEn~)_AM~264tW zO&CisuBXW>(Kx#ecP+`7e;k-cjC&r3=22tvAT*B|y_6uw?Z&aUpp$IeMBDWf#;L84 zo;1!-)horgJq9qT#y5^3;56eLtq1AGPw08fFz$U5Dw)Q$beuTL7##bB{B@{aNlnH+yHXf7<2)k9Y$_A&^nFVD0AyF297}3ZSabZySx7AQQ#~G+#^_bEw`lWo&yH?(Z1G>9L$P{_hOP zJ>&MZaCF}oxDy7m#%?YBsmVEG(h0B*ri-7#-qG}_KR74TOg9`lo7VZjV!vsvH$rnU z6@&x(fa&W|jJcYQQbEtnl4|Faf4Kdf@|2?>50c$n2GDR*&0)lJ*wiORpb@557sDXZ^!^~YC{s2)WYH!O?Mq@zRg_J} znxg1fg+0!c_zc*1(~t!A38r@1?I)VPp#o%*$#n)6M@+(A2#=d$)`CkmeNDB46Q;7A z5S}#cs{>4mX**%3n!cqyc$(=WdVSMPxjjJ1FjZ6KKGPI)7b;n%v*Q@cHce7Gmt!}% zQy8aAga3mx*QBffciObA09T)9a{C-4-}KU#Ff1?~dx>Z1hzhUpe{ z#crBB(EeL6XqsLE;Vsh-Pr}2Hse?*)!=?|+Fds4LoG2e0HHFZRK4zMvnQ`1?qD|Uu zQ&l;1CQQ2ufjw#3atXpI(;^qdeaF;56|sA!_UC|h-^6+n!dcV1uR~?d^w{{V`^agm^XJp^N{&*+P3vN;KI%OUIjU9-nN?h4-w|2l&?pcQ|JeZGH2@HKHB^$RkmWytwkVl z=5G?A5^sKfHC!Z^Lu%k6(d

Hj>Qk8xh43v&8_rV`i6+;OV$|S2k3V&GGd2?NiKh z>U*S`mE91gnWt$Bl5W1G0%y-K|3)sd%!?9WpKbn*5~CdR$}QFxT999>UXR z(Ibc=&sC=1b>6E}9442Wc|r)9cV|u6+=im&{!1o41;un1is*d^8X$?dDHbA(+eNeN?>a zFn>lD*lD&4=0VzJo}t!PkGY-Rzh3jzHL&P2-Kg&(R?0h`HiyuD9dX{AdI%${fy4X##kO-2{z91 zTp8@+Eh`70lVDl53)qR4e<@E%vb;#OyCarPYDONlOwd{VD3>hp3&6El>R-iJ zt7QT8quVT3XuWT@#6$q>vSt3G2)o0=9|qTHw+JcS=(4o50lV9BmXh!u%UjfZ?X?sy z0ZgCe<{glJ%Q+ETT(OA5VK`u^re?}j%eS|Iea-SS7u1)Sf=Rwuqb^Y zoV2W?uI-fNGdjm{$MPQCnQ2Qb?VRpf(i-7+#?pEicV^a790R*K%U6RKbFjWnIfSG2 zsiQD(vIhK#D4eZA%DN9&=h>+^>S}$P-Ul~p&F_$US{>hn>Ot#5C5V^xf*NSP)qwAPlx%qU1fyx>W@(+`9Y|m>;&T%SQB3*4gX0q-g6K zlr_XyJLv#MycOSPLnp!dz&RKu0vkFDF^}PA9_}Fo1Y7t*LZ@Io9c=&^%==ehyr&^(%VF z@~ySs(f1(**5t=wSZKYT0Z&ENhHivkY^~V?`!m*+v`s0ois?jAsWmbRq|BP)3Q}(U zScqWGT79TzRcReFfvd8*(~*mF*5|46f8IKuvgc}RHf092)-E#~)maN^ak^mrd>@?; zs<*mrg|xw{pt@0`b#MlQ7p?zHf@`u)KMT@qT}$=eOV$HtT8y zf@!yIkAdc8YXZ$B9abr7s|z}<3+Us3F6+Keq0(cu9|7sLt|>;Keb$tfh{@h>eX0Ry zSFFiFP#v)5QD%S5I^hQU>(-x30D8l^l~T8x)_Q8t3|c>*2Xf2WN}Hr%YYf%=My$y% z0DIJWXA_w?MDX$ z<7S)Oh)Z*~#lHqm9=3<6qU>q&q($PO?dW!(c-eOQL(|)4|CZL1L$+6J81%Dkpo{Uh zE$#tYkS&W0gKckVz=haW(?_P^wggHw58IOIct?b7>!UD;wDq?j>?qqav`>zC!6x;Yz zi92JPw+osjwjVwLOsOq!2kgsiU)O__+p=hzaMo5qXDcggi*un_X>+9&;Jj@GO(NB{ z=U<0rjqLz!zAxBZzXMlqlga4)Yp^{;d%Q-QqygljtwfH&CR()mwQZrt zqs`{~D8|}tU(xj3X?vHJx-MHf?V7u7Sya60u|4n%RC;Zbv?}%4vj4^<_1pMe7`tlA zPeX*)Y}=^xcilFEbra{)ZQq%)AUQmV%2h#y43ZkL{vX?B`ONJnbGGr)IL_vnY_dEU5@r>U&=Y4tK z=XuU~p7*v4PJ3t7N?_ABD{e8!<5{-UeHxr~^*ZoRW}V9i@ae3xG@B01YDk1`c-CB6 z)IOWFa|?7Mv-ZCU;pnVOUVx9yx=2;?_^f~Ek$*mGxCmroRus)Kle1hWp)*g-dWEJl zXYG_1!nXfwkHk5TdSgO znUA*p2*_cr`Z$s~qWznW03Ox8_BWgz)8_1frLT5=G>D%zeFQ>(vvw6NaRam~a2SXa zs69sgfgtTcnrTmJ`&@Aqr?e$Qa1*S}p=T#VE0_(FQ0>tMaHq91B4Bw&+e~Z3v)U|L zZk*EwQL`>w>qv8Qgm#F|uAkR#u>=>XZJ-6w1+8Bl$R({geh|tiZSrSG__B5}ZGv9W zM$))`RohHm*l6vZ%g8WByI26>HEkiSZR51L)c1+kw$XlPg0_qbgGBAT9_W&^wI={b z*5+S9h%BwJ2D)r*;VtNLwBOOfF<0wj0{n*d6EoFXdD=~(Ao*H%di@KuuS6k>LTwIJ z#zop^Z4ee~+dqb|L_0x+U#WIA^|#Bko9V-ya_vG-a248#ZiKk04LJtOO6{u*gs;*% z(oyniZFmT-vqme=L)<#;f?@z}YnS@bO1WO^*8tN7?XLaE?T)sOIz^4zdMdK+Y6I!% zzNgJ+fHY};rdC+9Hiu4-v}o;T!D*}3hpNf@+TUMC+%~Nn6)Wx9u-OoHXuqMuG@aUR zs_hFM;-ukq^@DR6Od;2#iA89w^!)6tlhB> z;Rm%XGH_3{%l-%MskU+}$dFdC6qdus_0raitHxN+^f zdgS|DYd;6N3GD@ZERFNA+LtyUsVVIu`ZGK0Z0P)qi!Ss%cyra=c?Cc>-L7}Rx$D{; zp*y6r+5|VAx`QbQ#qk$8}S5RPBULk__&YF8nx5gLRX%G7r)9orUjE-NPK1 zoYqx*gMeprvKL`_R(IGM!gIP!RCR~zcAN(wLRUBq+8xq~jME9Imldy*7s4b# zH*+6M5_LN^!z4+!pEh`sb!}o;rs)3p1OZcZ>?Ck$x*8t1blqpgh?k*TM^EQHgYj5l?Ybe5n}cV-rx)#y~_P4IS0=aq>N zwYq{`u&LLLeFEPNy1rQ0+|hlR1#kCsF4SIV(oJ_lPR%;yFaY;;+v&+~(=Fx$(5_oV zlWB+Uo*n@^bsJkj9_Y5)!SbQ5cp>23y2+0K@6mZtCDN<2@Gyhz)3K>X+OIoH>#9e( z9dw#>K(~ZCwWGSZ7vOYESN{$|jO(1YA>eb}!586lLU$<>xJlhIZvdur@6cM$S>NCZ z;-WuHKZA5Y|0TVm2lf5&aP6vJ*$23r{_hW7_0CHG=kq+M;(cg|nz@vH&wWN;efA}0(`078^Kc@s{>(q zL7#sF&MxXd=z{K&zTpd8V3huDF97Dt`n}W>zM?3ZoZ2s89QD#2Yh>uqTno2hrFHbIu&fwm#C^_M?F`Z@ZqY2wV)H@ywv4gKtG zaFeJ1f_Ad<_0yMvE70%ofn}k-c_B=S^h)a66zh`;KuYwjbP=Wcv@lqf>3^U#Q@Q?e z7t*fOZybQIN^f?j)^4@_D(y7Z=ub>RdQ1N(6~J2kMH*l0^uK)%-?#O5Xyd+K|2Q5O z+MwS_t?WDczh~oO8ujlU0(Vz$`#-?%=_hH}Y0|%J3(~CbrDCT=&!L&JRo}V@UheDP z(?Zv#pKVS+_;&rC&0st9Z$1O*)W1bn|3IHg{fvkDkc9}*rPpkSn{NF+KLC342^&Cq z^`%@m?bBaOLWceNpdW#Ir2jMvfC0UB7IcsGMUTM^>V38V@I?Q65E6Z=e|Q7JA$|UQ z+J6|>$Z1?3LC0^N>(|gKX+r<%Ob93SZaLtl z^b7p}cQ%yK4R$dE6~OX>DF8fu8~ zh3RR7c`gz@W03t0(=fwM5p-t_-zGzN&frRat#HHVv=ECh3=Sghc|-7N;35q!>mj^g zm`2a>MT1Q|LR>PahjA~W3@%jmUN-#i7=%|0H}}KjszE~^6_}$9uigPZ#_$SF*s+Ez z4ahZv_6-D#Gpwb?biCo^Z-GxRG`@*s5)GErUPv-r%!OsLK}#o)Qw)>TLQ6GVrZcH& z25unW>4w0=AQ^^~P$YWY;1>-*rlF2ZvJ8jm9CNnWaG!Q8atuF}BAZ;p%$u;eVHmK0 zGS9Fk1|;9Gay3i}4DaT_O`#zv2H}egZ7(8Vu^}r1CMAYz=}5HHP)vninPF)Ryp$W( z(vwhOFsfm4(-1rh!b-y)D(b2X?@+h7+F-UKT4T5~0@GWDMGs+GYnVx6Xq~}39XZ`L z?57H--XNp*sKF5RD|B}Z@9l)H(a=P;TJj)lH_S2@0P(;u_b#Ll4a|K&bQ!MDjzhO0>TBrw3}-9>>^DSS zL86Zg#}-33VAz|2fR7Dt3_&+&m~#NaA;a?TzzrL2TEX&}K~2xxh+&Yr&Z7n?9p@S| zJf=0ogn_vpfhG+rKcN2SlwmUgosD($X|IcMpbtP-fx+$E%nvT86C193^)EB01{!0 zNBL;xoHw$Q;55=0Pz%czX?WSB+<= z*oihipcQ9~ag?T`SYx9ZSzI$NJB6I$j3=mr9&cP*i3kbCjnvagG}_4EEXlZ?-XC+a zar8GRQ;fMIK%^R7rom~NQQZcTZrp5-yfcjJ=r4NRxR;J)Wg35c4^Fd;t~AhO8~5J^ z$uYW6pDWj>YJt-m#)H&4&ogchhR=MX!wBLQ7(2rOFEr-f2Uld=N99zp+4$fJq$S4B zsHaFT?U8x(NXW85_cXT8Sm=Wy0%d`8<^{l?W506a1do2kAZFedB(;<52}DpLlHJ$|rx zVw6$U{nYqx2~3BKF+am(*tn4o;WOi%IN(N%yPF@As)pt@ZGI&h+yUkZ@B;IlM)fcHam7yeVWENTjKV z{-PI5+YcbbMbq**;4Yb#dct><$vh3X%cg{HK(3hT4gnBjTCyGiV@-Rg&3(=EHuaKH zO@AE+mu4E*f=f4zmQnqeValY+`nu^u40xfLo@;M{v7qO|EnXx6Tys9o*bDxzjm^dQ&y+j5e4AtuSdc z{YA^1yQaQ#;O?2u&?M7hnok2wtLY0`EZsMyeg$E->09ar_n4j^g=Mcv^d)qCrn?hx z-ETJaXuv))jnIC}plNv(oIWuH&>q86lW{!|L#ARXeTGdl>mht*N~Hq|w8BUp|(+b(yG13mi#c^~Dt`9gS)AV`J@m1>SxH?`s1LEdr{+Nn8 zcSq*maO&ZB;A40@O$wNtztm;Vf*x1)dxDIZ6tL0r>e$9b0lIO3Q@mPZ|D zxxm{o$EMG~`8pmA2IuG4LLJ^f$M@S|8RVF=0vR569HD;R3CD9Z6rOZ!H$MjAl;c`D zk{j&!#`{2oIIgFnBh=A}c4$sJes%=`&p7T|j4Z+&Lu)`TI=)A*VU*(zDd4e=(^9}C zIR03IxM_~lLJ%Uuar6`T%ysW({e*V6eP++4euVGrYj=@v&}<>~YlCOksDV2@d+05Yv$I#YQU5b?HiKq~tF!IA z0Zg2&rdC+S?3jDt8fP;$0{Cz?^MCL*F#EzN!Vk^PS3x&6yPH;=Q?vi2C(zYN@fkP| zr)`Uoy^m8lwVQpNs(5f6km9n#oT7dMcizdqpUz)LIk6TYV2smC{{WHT z)cg*(RHxn4hRJm5rMKdSQ`hhCUEtJD3&>KZf=|HJIIVnuxOGk|wu8IlG`t7op3_s> zx4-Yidkb8a*PNzs;2z#75f$Ow7YhZwQginA2ZWdrUgn^dp4J zoI2`fxXw9V1{;q#duVd>ak)fN?uSKG}9TF;222dD{(s^`MbW3`llb?7LEY;d(94NS$q{mBmUP#KhycEwN~^O|0ZfbvRk*FK6(FEN@MBzAU2$S_iYmZ z-*^22$q)a00m+a5o`wBJ0UbZu6h)29pWdTs@aM%dA>Z6h7qI0ty$gHYX`pvwtWm(o zov}O&8V^R&IplGOv4^_gp34~%+tTZB$W9=4#)-OJi5gfnG2V}#(U}E%*z*t69|!(ABWo!+^NOnxta9 zmZkd~q>iPe=IU)$LL%bUvv!kZ18Wmj3Y^a*ytT9ZPr*$G>-~>`?_|lTrhdTMzY_r; zveIcW(8YS0>cDQ+U;hKVhqaHsLhfa4`U_d~v9{5e)6de-a`X}F2Cd=;SgA@ld(65- zeKzwTE6Nq@6PD+fz&~ZZGY#Aj>*PK}8fKMJS@(=}ZYNAfSmPQbI?Bp_2r|YhqWe6~ zVkbd2!E)OH-;*rw6^Ineo<9TR8halV+HvfaJHf@XIWNI7ft_MNghV!{8eWnxrd@(G znY~{NX$pG=y}@_cEE;z2v0eDE>0qCt``pPk%z+yZ&Q3bzbqJrDz|xcR@GNv^IR6^p zB^BS4f~0YZLqXCxAN&T(49-P5EO{LtSHd!rb3O)vvN*NWSkLB|k8DSX9L@&X{<*=) zS_>&2`ydGOIq|1J3OL`>A(=uBg9@r5&a{457IVI%{n`@FRyy9*WU=-fQfsyd`>%?& zVAGMAbytHU!a;gz|!|N+yq)){RpN(mX$Zb9k=|H zerqMzGVK_IA(l0D5QbV-)qxAQyju%gg5?k`OA{^KsZX9{8T}$mk}Y=~1TNJwj;fAy z%cWbO%dmWY9ykBGW$On>JJa&zSY()GIjW+bR-t7L9cwAFT;~N+Y`H%Yh!V@UD&Vcu za!xbclw0Q04@gv4?sx*67)Vbo+< zNz+fW<+05O*lOu~0mA#1p&k&nTb5uFGjlpDBbNjCz|xh@tUR>T9feJ|<^SA4dM(e= z#!H_i=Vc)JEiZS$_W>&hOC);2icdYqlUCLnKu%djv_Tkb)j+M`5GyaL`a`X1>8RUj zD=zJlow3rs1$dZMJIxf~Ry$3wG)Gtse*}8oYAYS=h_u@99c(UIwTqF=C974mkc_e_ zoeAM(t6kK4zhcFRhc40ThX?STWVP=ye5Y8s$YGLdwJ-?6G^;~xFiE%ivj~9eR)sY0 zW?HFTq06$epxwP}s|XrNbIex0-$Q!Cs(LjN&a?8P>Mq|Zkj@8@$54E<2tTYZlOj~ z!0l*+Nf39Y`7rRuxwq)tUJQ4O9Hz0{ z+`xG1Dd%vP0V+*Pz{s^IpXgzhHyCLN!xvxznO?ycV-0xN3?r{IcjyR{0d-WE`U2f_tAosYPDws5Jn?6F^ zX70`&@qC0f_+m@@_rF)%)>2qt)vvUL>7P3+8oEBQt~-Njrz3yxb3=JHs0sMTTKKFWQeg z$9v-ugyFod5_pN=O`~`EJWsP0x(hsuAK~R9?;|>@+~)N>fJwcXx6U2X`@G91K-zedHVD|xyE6-1 z2k%?zMs@P8&|2UD&yCJ}J>=!l1J%VFpvs|#_u>GAy*z6Poc8hF32 z&<*ecXs6{dui-k#AaCgh5I*6Bbc1`!Gb=q{I>gIb2J(z&Ps8O1&)5QPly``}4;bV9 zL&fDdZzioJp7Y*y27ZE9OdaM)-r}b)nc}UYXWiNQ;%pEX>&>e{4p{#|)y6^V9q-{H zT&+jw=%kzVR%*e!TSsKU#KU^hOx2K=^{;P%^|t=?ML6}bPNBmAN30{{5FWK=-30KM z_1Oft@wFbHlPG@H+F0oPt^E_g1z5+G0uXBbxfI-K>xx8Jp0VDT1QKRF)eHDJ>uZy#ZOgcf(L*6ee%r~1sg?OouV`45soT=p*+A(b))q8%c%L_%6F%I5I24! zHGVw#%o zSm$GYX&>Sa@#z?YLmZZUj6b=sgYYq+l5p z2B!qm(?Nm-MRbxRM6g#uPlBK)0vCEl@J2p_VS-`WFFh;pTL5xS@Ch|3!_9&PRiF`q zMw-kc1sApectP;fK?pAjW+&r%FA4V1Q+8Rs9_}&xnc!A+p1WXV()9jxlxN!^@cu06_0|1^v^9AZLc?plv!45y6 zCAEA`3GW8c#R%mV$SFkl>}w^^TwoF=w556TtnhDYLZ1^JrQtnX*g?f} zgm8x+$W>vg4RndZ8ro(~61wjPAX%uQhHZ*)11(`nh3}igLCb_*bTQ?^YqTp_D{Q6S zLY=UbUfkQlFq-k|g$HR@q(QjC7i=C1KcTz_g>6*i zKN0?X2HaEO(+F4&32)P>xMAUH`n{`X!o>IBZA56|13oHT?T%|16RHY8#)Y-CpYU9m z`#rb`;dnZ{ObP>k1LrK-LldTpXe6C_3I{|3$?$ei)I|reT}8tAFm)4E(2qX2i$Z8+ z?;(1bR!N6Mjr40po}zE5()1EdqXEiW^n3`3`iQJ)<#$-L=on0ni0qF5cT`kzAC|{N zYySfA6&?5huKh$u>Aau6=of4b;(s44Vjn=HAW<;wy&V_bq0ROaqJr09dQ#-s4&f=$ zH^VRq7VV`)ZHQ<(b&5kppDPgJv}nEsyoHJO9ft6%=-I!(ofBEp+Y~OcSO{H&=;urD za$Yp81;R*C@Crn@AbKQ!c#Mf+)eb6w=}Co(M%CDW3kQ1t#**c6G@^8hRs*{6V1ixhMwutwxY z!{jZ|zoY}!PFZV}YqrLli*29MdT}rvl)CNGyT3 zhoUV@q3aTrpMhn!=oodMdqj#_Tz#)-|4$%&qINnn(l7dws-s7uYFge5h}<&)e979oa3R+j$&b(}1q?07xHmkCcjE~KS)9C#> zY%}Ns#1We`3y`BWZ!;l0X0zx+;C*d;{|BcRZO08jMA`oPE3WB^?fg%mi?-z-hqqYU z^df|av(2Uho zb{BnZI$@jbi)1Ek!(IZJvYi_T;w)ZFkF$$-##~q)5MQKb&_VGAytihKkN9K=d>^>_l&xd8W*r@{~TI{nD_aa8@^$^LV ziqFl2FipID5+TyX)$~&4i-T$7zd(HUFWizs@yzdGQY3DpiP~H&p8EhcCF1vJ+o)8$ z&KkfnvCHcSST6RW<2V)K-ao+I6d%|Qu2THJy)dZ~pYMaWM)BfeBzjl;C0+JC@eWTo zYZ4dKf@>CMYyj6HmeD?Kt9W`RBHR~8vf!*u%%qNZyIEZR9Lf&yZ%tr3#hTr)c_2Pw zg%A(LgY*~e5-+Da(=A^13V=Q0FZ3|!70V3>-zT243GjZgPb^YvVKOW>kJHfdOzh?ln-MYp7?h*pcpE6k#9LFL z8y7d0A;fcW?Meik5Lf;WChih*KfHNJ!b>4MB)KPp&{OhjCIDWNJyf;^N~-+81xXgr zChQ5xJX-sll-Q4egh<-!VG=62WBvo|Y02ppuxBLRZ^AT8GAIV{tmN$yaOWh6?}LO( zmO8^ELb8=E=DcK_%DG6%91Y+XBwxlO!;6wv1mG@7&Qg^UCE0KVCYL3P=!L%`aT0-C zm4qI}4T_dL55@(?Nc^45FpZV8(4zR7L_s5Coa9vp2;(I&RH7zGUZqhaQPM%}%p}P? zsx*@&Gigjok(9L{ZmJ}i=KD0s5LIRA5;GlI&XDX11@5|}Tm_OTnROWfvn0>XB0{!g zj1tX}6uQxGI_65m^hMka$+CI4!aT|M)8RBu)}qja>dRPxt#cq@}A!vH9kY@#E~6_OVENs*fpr*C0WDfu7GZB>$02LZ2^Ec+h1 z8VUb1`ljoaYmk(Ei12qLFL>i(8YLHKC3IIZ zgBq^)B%e`ZyGfE+iV)3`m{k^FoRq*b!G8YcH8p*z8~N!Td8IPH=<)IaHvM7x5R zJ0+3SJbNI?UWI@UC5slpv`g~lc?i2DZc(_V9!cX;xapN7{ewjNBs;08-!GY>2l0_) zi3s5bB;7QPJ(lDe02q`EQHS=4;^ZX(%vVCbXuDDI=C}Z z_Ya^9lbV9y`>ga=I@EJcx|NnG;Zk>6fkj9=_kf(2z8(b2NGWd+zAs3tM&bLSw2(G& zFG1n&RhsYuglW=us6tJbhEGQp z8PdP1!CjYbUkhEPblnKJEUC*4kZftmJgWb4q~ouE&6Q@X1>%PEZ8|lTCk@yIE?+u8 zq(G`@fJvcrks7HLNkfW|MX^-N16Lw#dH}9e>a7Giss9x1>Ah@PDnel;-<7X*iw0zAcTQcdTBTM1xR+ z^qo%;;*RtH^(Y&q&D5d2D}6B+;qOV`^aR%=m0f}FX6bjdAJ-z)q(RpzEl3CMzVx+E z;H6Fa@EUaO(%=_iY3`6ZPl4@}s*F%RkZz?4_n~xU2uPPSk)G0SY3+Ysy-0Vjg_~Zf z#t*_iX|E+nzx4b`gm@$^DF+#lcAdhtJeJPh2j7EIZUB5fk)EcbwNIsM`fy8zq-%db zykTkJ5s+tQ>E#1Zj!5TH17uVhOV8DqbRCTegiKs=WoSq9;R^rt02OiJg|-+oHE znI?K?+3PW|bdmjd1#u6^vZ)1kQ1&w|lwD;D9072XrA&iscNwD%01w$&YKR|_;SZ13 zP-YhV0_r9Eb2;$dG6(8B`p6ViIvtkDskM7VR$vRKM`g|u=#I%g3Iy?$?I?%PPgbHp zcz@Y8IxrLPr zKfM;AvTa2mS7nVf)kVt|ehw~1w)ZZa#>x)R*n3TO{t$F=vb0v*gm~EuCkPW{KhZOj zD6{(*!X(*59!!#DTR(sO1Gh{W{W=OBgbZ>xU%GOgu zFH82uA;is=eW(I3N5&Q-e6CDNZQmQR>$I7YC+pS2BwyD0FK`7i0}VojvP~@@MY2C= zurHP+cY!OBnO4B0RMu^WWXfdGB?w+P*D|q%yKzR`3LX2H6oE;CE#2?M9?VSx*Mw zcV%Z%K<>$8^bKi~Y!~gzH_NtB$D>7d057wd(<&>cZry#^pa-OFvaruU+GUlt5O&Cx zUqir7StQkX4`d7J(EmeOYbvh3OBO{Vakp%?53=Zyy&MBvugs2$tUlSBe?iwTTb%{K zBU!*}AOo^a33QKTOQ@_Fl)XsZYV#9W5UmxT$~?Bg&5&%{Ft}kE>oZ)%GuhI;a5Eya z{06>9Wfkt=#$@7NcpI1f^B5-2Wxe!gnvfMxOLg3v{tiL}&?IwIzU&*2WAcvOaONu){sYcWKI19k`pfNT@ev^3LLadN z$}{K)agh8M8f=ft%^%XIwMa_JN3&dH}70S}k&`vzG=$ZKB)cV6x=3=%0{I}0Wkp*u8YTCzN2JU0C<=c?ewo^lSLIr&8lvTew1$b1Ulb!!tej0%>^1od z|3DZgukb|{@p2C?bP4iq+A&C!7gKj4N#42yBw3!316_(-AAq>2@|#rsrpdpiW_h~2 zW`On|GUQ#KApCXt`!v&L%1Z+fB1`@UmCf1mMRfKdM_x>45p(5U8=<=)&uashCqH@# zT)w=UniK_c%im#HC|7PrYDMyCj{z^1_tQm`$ZNksYNhhCbUdX@K29ZVxxDWIy?+(* z9I63s$}cv+v{K$n6Ihk}&lZqs`B(!ot&vCcf!vZ`UIbDrze)?pI(Z_ceOs=MLKgM% z82ZCB$gk0A<&K;ofU`z<`C3@sl}m2oCft*cl|tAgZ!3mnv)uhxI#bjl*JyxfmEU?3 z%KP#d>Xx_3i|Av!cKKijgdOsO^bK35{O=y<9?0|QnRzH*LEXhJ`S=gWsayWF1Gpaf z)olpaD=(v8Uh0!)QoY(QPp2ipBl)5>a07A)d3h{fL_W=fa&K8{TX6y!c zS+R8$xGRd!sb73m!TB1N(TbPp1WByo3JU?RDUt=Sj8mlEN80gqlfy-0;L&H_R!np!~0!0WlN@r4(>Oe(%$fJ`aES0KEz@{f0+b5X9X0>FGg z*?$0tgUYwwM2fD;Vrmn(Dfx5+(_Ptd90(8P3wMAxq;#h6p2|O|#Pm{@4TE?qpEknM zM`@ztEQgihUju$b8B5!=N0l#8r{viCKm9hmOe#*P&Vd<}Yu@(0)z^qK9=`c|F z(t03*lr@y%apf*&1U#XP*a31<`Sn{cJ*6yP32(tlFX~Q&DD^6kP^Fscq0`DT+M++B zTzMEF!j!$VM|W0v^D@XeWp663EL@qh0InmHM}7kCymGJ$x=5vYrxy4N%Dp{cFDjqX z#Cb{Su>@R{avRkUmz8gv0OE@Bof=qPRff?TF6CwP^B{OC3Q9l%dqLE>d>( z15m8=Ho;4YavHsqrOI~>;mXRCRj)!=uKZ#Hbr36*Bh<*ashsf~T%|Jb2~4Y$DYW5H ztu)faSEJ1T4kovhe$*qWRk{oCH>^|6s6=YFm5lAkw_X|eIRZ8)okoDWqx_pXOpVH8 zG&$WTIk0@Ftn7f(F6Ds_AnaED)&bI^y!<5qy~<0}((P0FvS8A$-0}?EBc*UQ zE@D6_p-uTg<>cQ8|3tY53qUjHsd71$Y(vV!JxG68=|>IQXG%jF@FU8P=u?_e<^6xb zjVbp}0~uFlghBXRnezy4CX^d#l{Bdwz6IfwQer?PXO)Dy^DZj!AK(tC>Z#*-P_=m< zI9Jt7>K?hN-lyYsW_OkK`v~Zv3c3j2hg6~;afP0$mT+)hs^S*`^j3)ykeZJwfHqMN zt4`86;UlW5mCzkkE&8u4Qr+@^Q(x7#pCR;91yR4qUv;Yy!T^<&TBL!h!_^Q5sa_9; zv*W6K29h~pR(XZN=A`Nxb+%5a^8bP|SoH~wh#@LN9&AEYtIi^))2el}#dt;)`W`I9 zR9$px;jC)Ic?i#`j4#7Wxa#;$2qRRZr@)<8`OZf&k*Zb>oLx|TOdIwWRkEirxunXc zlNeDd^DoPRzpQc_L8L1xn^BlvRc&p9Fj`ew2rfnysDmz6HJ8@g*Hr$_AaSa~PeI~U zuZF-fLDf1FT%xKW0wI!ALL~sns$1_NM2gCd8hNRzpJdRbsrsfPe7fpk82}loEc12T zn(L}r)D+583Fm>!QhiTL~szz!5@Pf;SCtx@fw&gCstKJ_7MRqI}duugTe0w%XrezX-^uR7Wcc!O%f z1mPW(2VH%ms`+*3?y3f;gLh9gCYKN)a^33i=-f+X4r zPs1|F?%GO_6g!Vu5T@B(qh)@&-Qsd^*X^{l1)OOY{ujM}S$0=xQqH#9M>9Z<-S;aH zKG$w>Jje~Z^Y1~JXZM8m_Vew`v^`a5_vt)vMRt>PFN^Kw`QVyL?Vi31K$%@WeO^#* z=Sv%g6?W|nu)JwkPP;Fab{WC2tg?ImBM7VQf@#@nuCa@J1bWNv)91*o*6uSJBI@jP z6(G0m9(;k+>g_&G1!=Ggrb73QogFPo8|~(IgS%^YH3#r}b{$y|HrZ9=AyTuQe=LM8 zcHTBHX|sEU4%j`k^Q5(Om)+g{uS3Qr>ae!Iog&U|F& z!GiFy-Q>S;I%xMR4W&=)23`jD)NV7)*F$!rAxL!C?m#zuKeKyEe~}TpH9y14sGTGZ z@G-lf_0WymeQm~Fe{T0Tt%N4*EX2@F+L^uRK*yBbPxO(!vpQ!s@Gk0oH(_%?{gg(; zgK9Twa=5DhqFTvKJ@7i*xU2tg0?tDnJqx-+>QxB{;i*1(1J~rGK27ZbZ*>f9oA{`Y z(#=1t9^VXdM9rnu%2D;J)gZ^zTg(fA_fsFBvqb*tx)}%&px$nRw?K7PC%7PWUlmM` zt9xrePN)y;gVU4hxm@T@sehnqKUlrtI(&zypV&bcs=h%(|7rD2+U_}{oDFcDdsbBg9fCzQ@dYb>vt3P-SH<9XHR8n71GiVyUs4k{vVU&8J8Nw^-hW~!% zL~Tj!$QbqdlQ4-@<7etIB&q$15F$>kdkA5?T0^Bkg1Xudk&@Jb)4?UH7o+0LDAw;IyhQ7$jQqQI>j%@WbB_idheQ2?i zt6rK7;SF^K?E&Sfd$&QDul}YCq(JQ%4Pl|Whz&1A>H-d27pu2D16Qh^M<=z*)Te%g zWx4tiPLAOJxvVz51oo!-W7@{3RL8!ANLA`*{WbfY$3f!kziNUm-oD}`x~29UF1#h$TU|wnWczv7 zkW-5Nytn&c2oJ)tazF}kvBhc};t%W*Jw9|oe- zVZm|uE_2vF52V~-SvhPf99HFlt91A=6eiUUOESULILPn7Ta&}(l`v^`_?+t17Kiie zVbbd0lK@?tLp|M~c88N(kf#ny=}jMYcvlC@XAZNoAslfCaK`N#bvW_g_kiOLHBkUQ zcUV9z^a+P=Yd|I)zWncuwMO;@fG(QZ1wb6o1pEf>pypFs+#pwt<5GBY)2x&u8F!8G zBV6wx%{WcXo|O4YuqMaQX^DDC!=ynoO7r+rz^`aB-01vEwB|XjqGL3(XrPMKd`t7^ zHH{B7T;nv|&%niNCSQfO1WgvL6B0Fh^sr3Q>|O(5vW7ngBt>(40Li3kw!|TPy5^UI zfahsOX++G|i0t8|KvS|9aSJu`$6#5cnIWhD=XtTlpXT%uP4huW%QOoT5Tac3#xS@F z&F|C{t<%)50C!t+l)m_F);teHz!r^k1)R2OzNgyqzQ*rIn6zmgGy>4BNv8U~L-TGQ zZeFKmg8qaLG(9m0|4{S#LBP8-CmbO(cWa^tVbi0jp+UP>vveHa*RT<0`YR{k;*F|a z{QJ#6>Fc$FjC872Tp3Sj_;F*DoQDH<#%-EoJs54&bU4KDI1hVI#*Y>V<;9TD@jGvZ zlaBR*MKELU7Z4^glIZMI5+h|VICCx@L2LNXb7lMrSxcq!nr88@>4&tX{Vfy-q~Qlt3><4H42@)-WK*uZ8v7n`pI$08n|`Z_60)CSwsuTkJ1kS zu==0nkgWSrh5v3Ip|!%!ug2ka_b&!y>d8px0r6o}eTPd-Wmv2PFppt}1=4@MrJvCT z!{3{Q@a@J}K_k4`ozeCXLJx-dBltYT*cttwqs&7{%ZqW7j^%kXKB1oAamFT^T23%t zn}$qIGWw}07s_Bh1$Uakq|Mzk48v-0VT^uC{48T(9mqMxpRd4KIOFd@kO;;f)M-1< z_R?E7HT!?2}eLA{Lke}iQo;|p5F^)m{o8hON+PqW7W zqvjp}j~TIc@IA;_wFlWhVQ@c$Zk+LW9RSZ6n(g2w7&~<^nPfanLZB&ztJw!Y59Y2R zAPzA-Xcq8f%5FpH#kBqvI&WruA%H&2KQ<%$VWtyplpSIE(d2g7hSQLDmH7!RN1~aFY~ebFDfo!ibg|4%I(T@E>A#-t zI`b!LE5|d_>4ZuGGx{EcLri}<=|9Xg(>mrE(`G5IX@oiT-#U}&N-M1~=5IQfj5C+- z#}z(jzD#3Jyr^9#g9lomGu!d4)R#b@nYeFH!ijI@35YY!c8OVw-*7p%Tmw|=sng49GEn* z7_Y#jnKl0wE~14s?Iwh+tPkmKUuJhIfV;wuz}B>xbCn&w49Y}yy93-Lv0tS7oXc)s z1g?VJ!vg*uo9~Njdcb~%c2J+Px$lDvv46dU45K+6^d2Q~+=~%DnRER*bSWGy{Y6qa z+A2iK<;*g|%MH#~RL$pcQgCDfV-T3X`AsL=OgOtHgOs>;F>vq-2|Y8b9o1ZtsLKF$fAqW zQUF~y=g}iX=;559BDt4yeF3;WGiPA|*nUnm-R?*D;U+{H;Dpmt_L%eC36Md~PTI75 z!a1IfoSt&*!vP%PymlW>hdJvUfqTYbPCz$;!#fa;a@Ib8$r!eyfg9&I)6v!EoY0HV zO>iF25yeSPt_H5BIOgTF;p}XYy$*O6i?8ZH4p^*z7p4a-)>Q-OYT@)IGIX;@EC9mY z!jOhb^RTeCfypt8(6tcyT11CK=x4Eonvnh$RYRaKq2ZhF=qBVP>wUDHvxRk{OdY&uB_cuC%Cc3pFro%ih2dy5!OuF zT{y}T(IoE6x|svZldPFbaWSV@ra?psW)&@lFod;t32sa%tB&fi(=2ZqUCyvR*vo*M zFjiSJq!(Es)E2$OTDuv-3|8-2gul+}sfRF=#SVh7fc5S1A3k76%_n0JqJ$-T3rr#@fqAz;f0tTIkoZ>OV%Jb*z9HAh%f-RFTxP?vBDs18a;X@jI;bldx=Ltv(Oj zT~^fF(A{IDw!w81D`yQzGt2Nc5^Z5kq(j%rnq>`gpH*+Bim{D#pV~m}teWY_qJ!mD z3a*ni+yU+ZE6Ww!L)OM_#O-2LL;=vvnt2&q4{HgXZR=(INh3iY>l@l8?q~hG5Ro3S z8m(#RmK4HB~U#UH3HUDmga)MPqA6GHSN~Dc|Db}bEoHP6P zSRh>3Pig8tz+QY7mR{_^Ea<%1f6$q7ANJr7Ob)Z{7lS*(4%iCaQFi7k_&&xC-HJ%Z z*|9;uonTM>4>_G=SN{RPS@sTU=!LUK)>GYjp6yRJIGX*&1R}+-D{g|svayr$Ug8IQ8hf1n2I=fTy4@MC>- zlTPYXu^qT@UCn+l0M|9_$6+tvy}8AnL7y|#vP%{LU&oHtg1gP`quu6u_UqpP(Zb$M zBW5exc|Ov=&#qwu-^M;B2G`DBA%(7&JqNomoIdvF*x%yxv)9lr^CR{NTE#wNx0fM{ z=WHkH(7JM7{vUL1oNJ-T(Co?iD;eIrIM=da>djeAL#+?Tj*i_P=6q2EL@?)%jo?B! zepH)=a&n?TPIK1Ke!v;dTN@EKjPoy@6FkfLsTqKCoS)A_SI^mC3(~+@u^F!KaGqR6 zphk|q3?_Fuj`XnHGvoIs;jM|Y=xx{xaJGL5o5!4evjH6Byz?2Hj&TIEX*JGSQ3f)} zkyk)B#aVs~I%f+dtwvoe-rtEV4p?MToqf<^YdxH~S{(8Kz|BJX4s=H>2DSrm)WY^- z#64zVrV+~5!o02zmv+*^|652;S?rC0?_i4^bgntXVhMFlLM;wbyX~~a#y=oDV=;qT z0bv&3-9)0P7Tf92RJlbl?atL&yz&d2J+^Rg0XJl!r0)lZE#9LC!qc*Zhh%&$$NvZ1 zNlW(wz@4?6GzY_5yk*a8ut~RMuYpa5WfOJeu3P?1tBXv_b2M7!S}LhQU1@1xgKMyy z{s^h{SjKKZq$ig1sNd^m^t)9(=vuG=BB21F3{)~sN#%dmQ z;ySJJ>!?`jx7vFTZsNFKi4ic3Ta^o7Irlu>?%P~nYRB|)SsuVY8an&){NB$;=ffe5L*MT=lr!0V$?ppbWumV2eV!D&>t zHt-tXhqor49o4+ily+PR_yJ1~OB}Sh0A`VEt^>mse z3#>0L0V%Pzq(mF6o%yhAv>u&?fX&u3Ujw|wn)yBe?bdt!p)+?_Yf50+Yb|?@NCVcv zO^`meR=a~6v|f;ooW`twrhVxtYkwQKapwO{8&ik*V^p;t;p^6c`14=?29`m5r?6`;HHkRp^2-5fBZ7IPX6{Z03Prk z{tWVvpGw~{ck!_*#sI~CPPl&lwpHLB@y!o-U?1}@P-Q&G@7;kcp748UZS<5sR0T4` z*WQ6{lpk0K%Q5~X>VS;%^BaJ76HI4=a~CW!fOrWS=uCmP;Kxy9;V;lr_yED_0C+he zc$t>PCj}+c;k_vMyz}g9u z1VJ{P1xysAQaO+$*hM96nqVIdB6))CwCE@l{Pq^OVnGd6X61q%^ypLw7_>g97W_(! zzdFIZkKyySV8=T&|J4gVrrX_u5a2olE!6Mo6zrtd!>AyHcJ9Umjh=8iCD2o|T3v_|P+;U_QB<$Y=ljFjw5Wvp} zKiE&_RwINT{kN4Y%%SyZitzdgAX0^@DIhY1Gk$}&9APmX>nas4A~$8i^-5$>E_{bN zD;2`hPa(W1{D}aSLJL~|-x8jS2dNeIZiTQ;I1?obzCE+2Z)6*URgn)6=a1)t3;Ovwri;IB4qBY4d2@&;dgDzB56ANNKD>`HW8ZKHz z3&#l2?k%u6FR~p4B2x4Q?Z-ulcGIApBEmWve{In+>Oy6T_P>MslqI@NWyB59L)vl3 z6RBPVJYU32fv{Ng{UE%Qh*Z;oD;05QM5__~{Woy+A{`yyX)ueH(9zmn5ziN-Pjr`# zkq(MZ?gC;+G(_Y2i0FAcgkz$>E^w0~)ohR{Q8z8p4%$>5L_k-YKt4>|Y~Gm#;%U>C z1mb0LpStDVHU$UZ%-<&NUyu_v>!T6=q>ZcyCRc3CBHE+BYV!p(BI9iG-^Tq)v^jqc zz&so8k3jNm*dx#t*hECave1VA1L79h=%_p>vkAneD5u=!7|k^mHb2t#bfrz~SFo(I znKy__sM(?*7 z+J;DvY}5sCGi-BB3vSHj*Z{b3n^muadu}sUf=GV0v#4?EZ`&?Jz5%w4$Kfo{Hf<+# zCv7hs1PQghK`rppwjosMpRxU%w$8$A-}%D~Ho|t@AQ17k)l`cm+HP?`!nw9%wCK5E zn{*B&&o++UgCg5gc>vVeeoc`YZR_a7%U#=VToL|}ZOe7w25irM0O62rD|IeMZ0&xB z>v7vnZy@}Htzr&Lyu^1!;Jn2qcrBK}irL;Q^^+;oaL^yEJf zC(;qO5%B^lI>*Ez^m6z}LaLC(5lPY;l&>V1`m9$a!yfRNEV?#BO#dkZirl5WpC zBQmq9=!S0G-Q5Ov9bk|_2e-iocc*Z7E8M+t>&6=x+?_@ncX!|a$^O^f_pNt~VgQQ(0%t1BVjxj4I$NO^IRuLHcd;yjIkazDpOmK6Et z$9>riMcjznSN07&irb(*lwadMTM5(eaf4+y+vs>lH={sbyitvC62s$7e2DDV;uW5Z z4A0|Ty@0fV@#B3$+JyMCM8zpbR&cN)%_WxnG{{7tFbZP|=HK8mavYE3Yg_ez2+r!epjhs~z$!vls71 zEsoeZAECf=cH+NaGS2l*cHsD2qb4A2hu8IFKg0trZ)$iu>$+VK`LDTZ%kInN?wQNr zX1#lIepF_g`|LI3-|N0R7q}X2ZYkhJz@db&92)pwHcVy*UY94?s=#y^QK!(r`dNU3 zfnB%4%gMmqFW~w@V0zhP_a(5OMutJry>|=Y)|R_FUW5gQHNW)4!PN@=2tR)mZh|`1 zj(!8b>!g%Uv~CImHuYZ2g-!jNzu<3!eKOo^IHW!FjV8(5t8of>RyFA^1N){s<*EH= zo*4MutZ7&1o9~mg*_Lf&rrT{{Gim?bQ%iT*FbEmGs(dn({ic#9MG@Z-dPnvjD#;jF4%Bgbq4+^MiL{5ox^rq^ zh|Wkz<4|Eo=BA_2$*^HcHnU0Oe@?RPMbodZGkRrs!lD zkTy+MOpTIe=*)+pT&f!+gXJoH(&jQjyvCE@Xo!7&j1*?4tp^Xo?181B9B$9ZAZ6L! z(aGRqqEjEu7Pf5SnJwi7%;oyXWao;(&9XRjNIGAG+cIk=f(f0n4qRQu_B zq)oFAN%ub8KG6s!K6}2zfoIrB#Mw+c=piiU**E5)7W47#F(?<zp*=m34kK#k^D$?k~ z>@~8RbeH`@#?rg(f)XFyW6zd#n7{3>y@7*v)AT5Bh3mp!?9sgO(sY2Q9JdeSZ|(n zsJ*R_G*VrXAiyZ~Sf+lXRq{+o8>75ukTz8fS%Gq(o7oD6Ci2 zr61U!zDX@Mss$xc?j}`9E@HSUc~ibyw^!ZRhT`|Bv=YJGuTGUkj=xngd7KUF;$$6-BNmOYN?6pxX1LI9YRN0f^M6WQ+SPy|6RVZtFT(P>VY{G62#O-7+2URL7Ri>Y3i{hUIge{S2fR zUj3~!e81Ga<+1%rH?UpP0P7fK6I=$D%1r+!}AC#4=kGe@X z?u1Wz+!*Bhtjm^w^hLM33Cpj#h6K^R=^RU;{H`lKfXP7fhAi+7G4II!EPRV~SATe$ zYlePD;!^YX?MBqosLI{uaIr#FxC5+IzetE?kfMtRequ4~nd z(eS%YmCOySS3_iUvq3E#j0_u9y}@#YRlsOqvnm~lv@NQGEaZ8&sxO~#Afd{=6h(xo zFN>kwrnWSOo9!yzV-&wbEuIXVR&V8kpHZ`A9r3JMp9v=C)QFUj&a19pU~)lSl`iw5 zs&N*|OX{xl-ItZ?G75}P*(W3W6%{8hYH?M0WI5uRS5@7Ka<8lRGRe51=GKLqo2q_X zC?nN-*-Ls$6>JM{w^iZ;P~K6!heP_P3Kc;`KdDqjk>Rt-EHQ?`x>iD%4AIqPxqhfl zCt;Iex^X`!hwE&cp!Dg&=b)USZ;XVOncDm7JLF%e8(&1?A|1_uc9kA3-a_=)qA=a0 zJMKo>W}RL(XYJJ9zu|3{jy)ZgyLG;Fz(KuQ)(Z~lTWC?Zc@LyQhSNG%0@VJD?z|8g z&gujifO9(AVWd6Lk0OCLI-gfwtr%+N>5HRZYNn2Z{3py9o!L7tQ|)99v|JTC3Rf%C z_ei9#RQY7FV3j)X9zH@;m~@k?RrUk0T%+>IXmG81CPSA{)u0>@rpB!VwyApIFxjrk z&qszGDrF}qy*pLxad2}$MT?G%2i4RRusNhUokYD3tA)#OTu0R}Z-8TJqBNBgs>5nX zC)F)E1Ek~ zDjk9E&nkBeV4W_s3pSzph>SqObPU-9uuW%?m8pHYpba*eKBfoAc7fyiu=Eh; zbv;=Vx}X=og71sE&>`T4o+nY{oBDnLq)7dKAF@Bx*&>nekLRvb{It$uq@lw;OJzn*FPw zPSZ?pDBMgp3w4JZpV?kk>1LSiC4&&5>`9xlh(34w@ZmBkjJq zdnPc>8rv2oo2^5&fveV*2>5(!4V2;E2>bSPV5&XPI|TU`*mY+CtMTuUz|AJR?p8K} zcqgT&XmUpuwVGxu3$K3`T7zS1cCr|1)_i4U=v!nt0)5Npxly}Tz4}7aI^-n&wux2& z$MV;`&+yRp<9FD!yDbCo_J#~9I;5Hen~pATd?a^D7mkF^Ipr?tGA9$Vb?tEyM&0)} zK(%^Jl6gj-JzZegZ=lSohN^8c862i2EQjrIRY|(x5z5>Ei-~HK1n4HI^wpr8tgOmV zPEiA8JKa>Z=N{@kO-&hw>P%OMCdfa?>rI^@!`ni&aXF4?ks6a01uj;TIs;2p!m`M|LQRtW zBdgSfNMv8Fy31nvW|a;1suxd#El;7{s@`NoxuNRp?=XF&(mX&B&(tXyyuDC0iPBBektAbd;5?)7e3l4cEQsZJGE?s{%&{q ziaHN;o!ky-sOz%#GZII-YRiBX{|s14|M

2o%xaj9l!7TOxXuut(REN({wJDu!UJp|Z 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�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 r+nIPr*Es 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

}La)~fn`AJp4a8MN%Qt6D7pI#f2)9qUx(MZxBM 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 delta 163288 zcmd44349er);3;M-M4S|-Lu~$H_6Qg0RjXF5FkQ;06`ECBC@GbBSZ*eP;l1^qK=NJ zFd~hJ3kr(j0xqDq;S8?0fV+r_j*dIvGB2|KpHtO+Nf_q+-uM0H|9xM6KQ8@LojP@D z>2s=1Exq~2{=a?Se__-&FviSE#@K>&>x#ZS5+L|wE;FCOzeOuzi5KxdV&&f!Jikxj zpgH#6-<Z%5&wPDHGkWq#z9qyjvgd{Q+gm}jo9A6_k6Oi zZ(iDn6c%NC&;0!5w-XVb>)pApdz|e_*efEuG;!5h z_UPmhtSF~t(g==UhA88}fjkO{>^vLj$o?_-op6|9_Q~h5hY#fCTznvpch6}#ke7S0 z==A-^BV_8Fo%=yG=y2VLoa-Jf{)8Usca44WSoflL zb3REt7G-SDTl@Qs$i0|#+PSSS680UjY;NzQFq`(b7UpRwK&lkxarqoLMi>rZ%329? z@KEV7!q^Zd?g*1OvbW<=X{0dM?TX4R0Fy+)%N0?sM$~s2PhF33hHg0xryQ|HFjTL$XVX5fECAnn zWN+k1BLutb&_BMh7o_r%@aX;hKpiR0VXV-zr*6XwseBGExN%>s_&_wu0#5if`-m#$ zper|wOXt^c{>+AtGx(=k${UB%OZsI;S(%L2_iWzqN;aRyd1OP^TwcgMlMfx)`<;DC zjQ`Q^*{`u|6!!35w&9x?f7{?YH*6^8!_vfW2iN!JPni5R`^f=(IG=4F8NhS-R6DnZ zci<;)7*fN}%;taEaQ{U9oyIS*7oEm4_#f>1Pvc!Xk2;{`o7*mKI#ZD{}Z3r_RT0ObIf_5quW@C&6bTV=BnG_@4wi$3Ap6FXkWHg^hex zxco4Q(yu9J?ohOo7`t_Y2=;5`=prtnkLPig}CcBc+cS*c;1n{+V2PUo_&DQ zWym6=t0JHT6YNi>^1R%cc+GN{w>YilYm~zuKfL#|BUFor_io>iHVv(N@`WcdGc@w( zzo(ADhmXNEBaYHix@(WYuWq=ci4R+vRi4Y3PRf<(+&4gDfvul-*%vcz{ZJGpTHf`t z^R+~Z!7k9!&o|j++SBjq>`HBJz{?VPiD@8Fzu}y5{WmXXLf^ZSGfn^Pb%W`8bGptv z`fs;;n4y>S_Asx$Y=mHze(iFT`Sb_BRAYGvlkryiA*}bwF8-uP=n`9kLG7bLB$8^iI(Z92SO~ z+g{+M=y zbO_(P9~~vC0;7?4?aOu1k$1H3*G2bEyG9_cotxlSLhTg_L~iW^iOLj;M9OU4BRZ5n zUxNI~RbV{w(NN^qS)r21JHMj>x+qk}Qs1^GdPH&GN3+1DMTP2-NFSu1rH~m35;|X@ zK;$1(`4=b@i5wYaulI;v+-Lvf5xI$+cMy50iY$*56S_>Hib%_~8q+RUs4{Z@R@BoK z3ROk!o`@>EQlaX|)4d>YLZO<-@5_+=T!m^QlP4l>o2V7P=2N2%*X?F*elBNd_E-jRt2I( zu7mX7DHMxbW!HPfkW+Sjj9S~R0xKhP*Mek^LRFFZ&q3^;6{?P0y$HqqMWLFAF9XH> zRiWCH+QDO)_M1X=kx}+8ugJ}B*@1HIRe|-9CwhSO?+Q(bY#C~|H$~Z)o-d-f2UTbj zOTBkI1U|&IY$zdPxyhNaE$bTeTaT%K+~3QD7h0JyZ+rfg7jL@QkDjUzUF3nTdg)K3 zt8TaNGDUpy1=o=hyMCL=z+rC_^i)r64^jkT<`D~T4~u;Ln}?a42j~T4ksT9(bcOWD z(lK6UdKEGw8(&16PoY3$x1D35le|EISt>BfQv0qknVHMAEU*q&nQ?CUEwFvFD;O0i zDi#^!HJDkdkRF+R8#t6HWJd1%Rbyr+g#wYo`;o4TLXk+*QlM@MrAK=21hSv7M6`0^ zQ#vyTaBU&w8Zm3RHJNh#2l|XTRME4@WAi~YTp>NOY>5wDW~-g&6Gf+8_@TzEN?8SZ z=**jSX7!f949%$YFsrWwfzTxp#GD{Ogc4WIn(#x&j!|q_rSLI~;${C#b`Z?MDHdSZ7{wmwh zyx+adH&BA~5XtSUl^_~A|0{4CESrh8~CsfOgrEh{=ZRoWcl=tS+cLC}`*FOW+i%N)W zWT@m0hfHLi!gtcS@T zEvw%QeY4PD{_zq7LU;Wtn17-Kkx;|S8uOnm0gT$AVTfwdxe zGn$}1+Q2`nU@=K5+rWQ80kuI)wt;_6K}W>og@)UA1w~n+YMF-xx=QvebmCnAs)3Nr0}}%f2imvTHv*Le22T z`8lF_>!4RPd09ujWQfih^bbz+vb**2BVM+X z8TIx@A(5XrG={X{(x-KdvfjYJB(CSaBv=hI1`X9&@OG_z2wi^^e$p#{V5~m4F>+$q zsrTTs1@x@Ce(?ExstP^S@G)b-O$B2RQxYl-p;&*(r$J3w=pMXT!Oi(k0(1;rz8_Wg za(;rkae1iQZqU7!PoN@Ho8e)>Etzw`p)#~_G3eeZxD22wbln1gtrAqr_6@$1PwiVH z+c)@Leh~y6C|~v92lp8?8+u|7^4TsyUFhAv;N=ePkZ5G+N&9eE)FyhN zl)*#V8Auz5hPqf^BjeCD++v{$*#<21gD_dBhts}0@(`mshZ!<#jfGqVxVwn6kfQ)Y z5AOsQ)rjcH4}I%JhtqBZ>p(0t+8Q50>}=?#(8&oWlP4NLQtxEa3~L)YRRS|qIUjr{ zNe~EKS_5#p1d-5Lv%tZ5T|%RKU<^G?#zdL%+;-$JUHch1nv`205_;KMMcFo-1P-rC zIu=^irilFb&|5v|6n`GWpfCQ6?kDt(D4C}BzX(HSmO9P;HbunKdk&S|xfhvaqef?f zrG8<@QboH^_76J3ez*skhNTX$$D~5Zgmt1T!>`Z>;#b!v;n&nJz;8rffZw=&-aQzg zveadFqC6A1c6SPl-N?|H+-gaMu_MJDYUJ$+un1}H&^f#vHMJgDO-ZKmcH5C87PcT;WLh(Hv3*jy$m0*&Gtyxy@5UgF z*QTvSULK6MSv+>w@quR*MOAJu_JgJUTktDTEFI>iYop^%I((Zj|&sgQR( zwq_M*PIW@sbs(alm=Ev?z6FvIe&Vrr(m^!QA!-krc(c7O14E~&_FEYuci7tJ@q(@} z(`XnvAcL`}fge`1HkGr;0pnx}@qiI4S~c3sBKwV*Zb+2cPyVpt&t};bnWCuTotrom zGf#Vjh_0a@DpHgNRjla5Wt^o{8k;CsW)eTezA96+iRP?;&YUEq)DIEuZ2YizvHgcE6m7hHLzXBMpO@H=WQp9N z4?g8#>2->@APdB@=fw}54^^^7<=2mbNhlRp^lRK;;a825lGKGUI~)}miSG}fM3pZJm9->!* zEQ$#(a@}~Zhxx0xk5X0>!C$G`h^s1c>De97D_;;sc{U~qNWqt%1G0AQ;D4z=5cy#E zUlT%O?X73f$5#nsL6n(yOUfHTS$4`U^t4r?H&vrpG@G^mYbF9N6vl)sc;}HVU;Yx& zEgK+%yHM87uc66n|$38?|ZqCc?q&m0E9OktEzI?4YhH(dhZomIjMS?Q+B@!Cuk z#pJi~2+D0t8h;@8%8H!ddf?s9O+=v9Z1#}%Ah5_RJMf&4316VYr z(|$xFBQ}X5pTJwq2MUeMzgRSZbxK7hQM}~r;$-w7H@cpcccf^}LK53C`!iixE^OgWAu3 z3si%-@oXwHpOrypQg$o8L3TrUCe8Y^MNcIo)polZm%;HP#)vT4x2Y&5nohj!#T@7!7tEc+uZO7Lux&@NAK*M7kXHiu55AumnH8 zd+ayz#Gnwl9L4=96a<%}9m^LvJYx6GcifBO`ILJQrQD0+1qqaUQEZYxx)aT>9LEaYqy+r=|PVu~FW6d|0AcAx-xziPKH za2$&QjzyWdbSw%u773AKaaw`nSQKz9QXn}N?<$av#n%fQ$0DqulYktH0**zZRE|Xf z$08weEVhq3jzs~-A_XePqJU$Oka8>vI2H*>$KvI2$FV5jSfo(pSQKz95>k#u0mmXC zuMT%68MFGbmA>~*Ua4Zs1jzs~-A|d5i6mTpOQjSFd z$08x+SQKz95>k#u0mmXCMli+>PCf9CxFDyO9EwyHUX1NQm5x7Zr&idE{;s za5qw*ayJUN8wtVPXn$NJa`VWuDBxM7K;>B!@GKG{&tgik<5?8&EK;EIEDCrQ2}#f5 ziN&IHN*Sn}dfwg=D5svcuLR1e=RH9J z$EoKXpq-7f_~xPzuj9c#6A$nmZp3riv}?R9*fo>FJv1GI$HeSvje~Uyk#EoJCON^k z$9LIzr6M|*TzO_cCo^*8nf+B}(v@cplt8)i%vuSQE6-HbBVBnHm;P&4o;hAS1G!t* z;zzmi%vq7EFanc)B=dq2dRG1nb51b{s@zECMa3_m>69zayrlTgh*7RQ^D_T+NTXbN z<`w?i0m?(Y$dzX%BvP(CbDjjsm1oYEK)LeFYl^9}kt@$0*-k`zlH<<2x%7T;QjR-w zQ3>@C<+w9%DSa3*%5i7jTKYHu`R#6NCu(_n`?Gc;JNsWd=_2hhuAgpqYcH}Bb(;4tJTkK70C;gKUh8a%%0jUYdoucrjcj|Pt~#h4-Tqru}# z0B;15x!r`^Xz=(_OnQjiXucs5C^wp~P6BeH4T6JngtiTG!NE!Ivu`H9I{~Mj{_k+D zU5Jb?*G7Y#bvJ(8ENfHrDt~Jy)mt6^m6J+z`e!FquTKAcCzT&g zs$w{V!Xy1~QvHf2>7??*Nku?8sr+zKoktQ&CzT&gs?!jsoK$`|srCUWCzYR^RMbk! zN#%!=YCRGvCzT&gs%*?)l#|L2Csh|9>7??Ni%F#+Sct$uV=MxdKO&br6oCUq zMJ&-CtayyW5y;r(_{W!9n7GCFso)9%G}Fz{dw@qFIXL)1qYAsn6!GbZFOt*ZgPj#^ zeVUwf9!{s+Fy}0u1Y(*tmdN?0hkNKnp!p^%-1i9KtZ1Av6Dw_{q$-c2WEq zOPAQIJ44cqAc}$LIgq4DUVn2~wXot}oJbY%vlG#bJZ^v$=IdnnM#?M>Q5Hp1zIC1G zSryNZb}H;oq4SMRa0YCawDaI;Q?&Ctbs%DG(aMA>;5BXm)50okthx2 z*nj8(AI(_%hAtu}@f-;-QwmTinch!KA0CHE=gdy@tOR%oO0k_rtWGuNLVy}c`(u*! z)DDWax%khBrHW8xJ;Nz0=BVwTB>4v#RUoL7$xHiZW3wLBK6yJ;f?=9!fZ42gyj{~3 zX8Tfd7OSl%XFvd&7;Z%p`isGP^66*{&eR4Djb=@vQ?wdULT%I#a-#+oo3Wch^vNDi zF>0TNQ2R7A+NU8#XSYy{+NUAZJ`JHJO`UZ$YeFQ=nlzdG^isUm@DbJr?@&DbFHEw`h-r{(=OiMSCptO%eo{_OLyvLQaCNs1RLCXcDBqk4XcT zrFH#7YYrYPngr<|rx7dgKi}S3fjP|_`-Q*Lv}Z{-(M>Mb>li;1i5YmnuIc8CpLL9% zDKHwK<$4|CXF{>SRrVR*IOAs><7W!24A64Dj`1_0s=$2v#cxC|_Az`)|BbQ>x;sN< z9YbXzsSnU1ypEwVp$P#j!sl%iWi>QZ)-hD3&?Xk7MR*-U<#qH@sfG8Dmscaw)15a$ z9fakGIIPy!wY^RDrtYEuYrQ+Wqi@o9(C8Le3vy=BTCY(lfo{=SuTdp|Y0&`D=qEwI zq5-1OUxJ85YrV!m3DPYZ&Kk86L@iqD#rT<6$IyBWf*B(;8v;4v87K4V1YB<6FP4HN zELVZUauqnNR)IBI1vbWOm|-xZ8b4`r71)>+sX~9XXfeUKpoE?=m&RIxF{ju9m2S~; zfpJkW6~4rx#RB7!;yT2XTC@smT;}hOG-Vc6fic&=!hbSQxkW=qBOyVBMXSKZJP9f- zS_L-dOHgIeDzI@)F;#xGMXSKZ4aHQ%8jDtejT=i(1-Dv@29w6krKbVZS+ojlEGi+g zkru528@H66jhHc(Tn097Ej<^g-WqLRQz=K2uUDdJ$PjxgWc@LV46(O|1iD3r*xO42 z)1t*MOcaQDz#>D8i2{L$_3%#g@;V99nMR9W-V?QX$SJD&hZlx84QeSY4RKg57KPpR3J$P80JT~z3d_}^uv{$) z%hjT=TrCRA)uOOkEeg_Vkr#&eMhN2@>4hQ2iWLh`1AAeJ39taQF!u7bqbZ>tpw%KT z4Dl;S5)063kr#&eY*5An)cjsD#MA+*1JnV$FvM_ovl9ZeTI7Wx#!5TuAE4DDFAOnF zDQg2*Eqbt*n3OHoRQl%Jfxv9Jn$k}`=X_`9^%l`Y^fSz%PUdO55TCUYva#HQ(3-v< zgb^D>`ujN}<|tjhJoXWVJZk7iL;6z43gZ`;#Rw9E<|PWb#rX1Qh>1M-mBxDrfn5Sk z-g=^$WxSr7aDCT#4^mL0u?a*zMRX~JoMLQ52ue%I?xc{R#uLd9HXOC0Gi+jWRsQM7 zi&TCb8if9Q1&r;2hwERc`~)`VIXeINdcF}nj;rVY6E*)wq|s>momP>KfdMl}CwS<` zy8`0rRVnmrK7gOp*YRV`#ZQ=dHsU|;753&T%&*qjUss7DxwFgz2N1Q49-y6N9yovq znE~2a=79r8C##T(N{+y3_EmjFKYoM#d|y$LIF)+ej{&N3j7>sg z3I623rcgJ6yBydOI*H(J2R4WL5!~azMwU8=@Y6;m`oHR=ET7o26EIrR`F-tBJ?M8Y zfQtIyH$m zz=9250)ED|n*l@gqMB7Hm*6=Z5o;|hbFfG!P>9D;B$E{EI~0%0XFam!b3{BLff;#> zz>^ZdalOV~aDwO-lP>TBlAj(q`~@fuI^+kwus=RQ6el!d&bSPX`soc2oXZ3;|Cf|N zsJOVlHwGg@Q>es$6-ps=h06T133(JM_g_ZHP^iN1r*vM0D*Z8vGZm`x7ltT%i>FkQ zo$=pkU*BKki+_A(KhWP%L*$31lIwm_L*$1hWco=Bksq2+z)xz3{Lq9VeyAbO0O^OW z9?;4UO_Ak((m3RYCRE`kjYEEDLY02fIOK;WROKg)Lw;yN)qc`AK z-BU_lBcnZstvJ3H*cym6g=u!Tfuf+M9r9|_Ki&!Jtj_~Ct{2fSGrmFZ@OINa2b0Vx zXk%|g%cOE-_CuR`Q#9F$GBfRk14XaNv@O85-$=luW_v)COjYP3c44Sz~{9N%5Okb@o6HB zYM1`hEOHq#FG!=Pb4Ae2BzFS^Oh$6s7%W14P0C=h=$4HCf(mh>VqXSceEIiO2%01y zxL1;{qdjV{$gFw>TNrph(c2Br8-}-pXSEhDuO6Fyd8kd$HTLqsqO|Kc%6%u74MBpZ z%M9bIs3Jc6r{JOX9%LEKqY}JyG&ZUdRoVHqsMR4P|Kmqv)nF~}Hp=M%4v!rQBNOC3 zMM1Z<4l1M_5RjKoMK;f2x+o(ydk~m*>k@z-};yj*V z$j;;zEPu7VtrnAnK@7WjPUgKSRxCQB;Q60HJ&tEk`-w%<3KmfL>v@)npUUDR(O-Gp z(Ly=(G?Pj&KEnH%=T2M zvNUE$S$@e>qMXM{#!||UWxc79K#6o$ywxhC)FhfGlHE@^Y}(P@6MnM{U5s%=jm(nx zC$I~^$>1W!_R@HP{Z3;C<;=JXg{4tN3ltCiWp_udj8Bdl^#AQe?!>?4kj?*m)R6d> zhivp#tK6RBta7`f24nTtFySXf`$HwQK3C)UFD-HxCs(J+wJRz zVLF(CAbuiG#SUhSCdlOR5j=IGv{seUhdeS`cqdcIy&p{-S2u?77M@DOfSBKJ2ZxJd zzRB)39Gaa5Q5=IPVunFf0o2zg4(rtM14lBx!(~k)D~^#B2@znC274aTpLzjh9}a|Hy`gti1Ck|niw4aZ6ptrMDEGyOUO z5dqy2@piMG0nAtmZr&b#+Oxni(hmXjlz?YE9l(^icYunnXYBnRF@0o=nei?%@%EFz z%7~#By(dWE%eawZ21ww~SV%Dg0s5ez8Q)XXU>Oz6IGb`EB0(r)62%OYAPj#Kq2XE) zgv-3le&IxD?_WW!P3Jv!BaEzRR436h$J;-hD9WM>DRzYNYnP)Gd^t{*u&ilz=MkcN z##9KQRVj_Flu_=1ukG0*L|N*SID?_(@lI4iVjEjyKQcmOR)2-VZd!nMpb-G=^vUZ$ zJP!JZj{b`9k1wZrcfKS&*vX|Vh%Fh3eRVSQ`}S^V-o+@A_USR{ajwou|LM`3Xpo^j zFDd_2z)Wl?LQYo^<(j8MHB(#mW*_m;zdA z&=woh!Cq1AOj0c_PEyfGNSklefU2Y9RRW8yiaWp5p~@dhGR&`3GPUHNN5an^wWz18 zw`Nwj9PvD^=Mcf~`L20{WoKD+b7Au1dUv-xMJw&PlSH4yK5T#H(>0j{`8o>~>nRD< zDx!M3GL|faLzIuzGGk!91GId(bks6`!Nq%s$A;|A~#8Qeg!3g ze>;Hxjykw!jgb!SMfgvx$@}HO8NWO@dbyP}Ahe*iDOd@MRjnp{=-8}I%lIEqEhY3XnkgLEK8ibYLn@6)^YH+~9AxQ zWAEbETnY?TmoXQ|Soq(0>I6yMf@8qc$YFggep4q=u4|EN51>#Xot2|(KT2l1mUmOx zHmYpb@&V6EF&fg|w-<~Rc|~%Y`{O)7T*adERen#n`8Bi5&GweD7}d&BEa80>yV)#@ zcJ^Xe>m#vS;>^4g|MTT7Q1`0D<9OFLB_7B7Q)IHl#o#2J4&f?}Lpjf{6O zmHA0}rLw-E@B)=3FuO@+`DHT80$$N3%K|>2O_l|GT$?Nl-7IEj$SiTvP{p^fs9Yi3 zCC9-u$>m5Y4RXhJ1&fpAa zlGclUe*|+Z^!ZK^{iisZg?y1o%|iVrsaXgd)hy&8{wK}S2ZcVKX0cbEBI48J`q)wR zfg|8OwIN6mAgypY9)ff608eQ%o4!s#?#&?caf zoC)Gh>$YL{)uQ)-tR@v6Dng`S-?u~`MZ0Fuh30pw6F zvoLe+StG2bVO{~Z6vxjtIrzU5}=)%eI>=H zmFVurF@V^=TLB8S5=~1K*sePP0m=YI?G+P5q4ZUH4oK&_ZjrCjb1;RprfI=f`Pl@= zR|zF1L!&-zDf^#mFv(L)xJCJn%(kL4C^wxIbkS%U(zerrsMesGz!a zI@;8`Kmya+dP9et$mHDxS?*FO%QqS}{7y&Eg{{pqHv0@NvCm*V<=H zf#d5blKCH8W<{~|it**^kyTXsboTNLl7c2dg*wrGdX#pIq$M+{Xg_a7OGkuotV8mh zf+AE&+7OJGqTQlsCrie3@`tZe#OWZelf;+@IK+=1WnA<(YJr7nHiyQ9uxEiTt3AoK zkURAb(O3$Ox#N}Ds$%n8+`>vew;wqT z+WaZ1&M&*E`fn_i9q7wp3O1C=w*7LVYT5}AS%qIYH3+vDot5G%Wu;tP?6xblf2m}< zvP&DbD{I@ZT{#|X>BNY`_r4_GcFDO#`^^wfe9m*VCE!|CfI1%$Nq zi0>GskiV)zvQEh(BunAG)Y(;ON&S4|k4itsbs8_>FKZHGU!K-hK_7Rk&~X$rwg)wW zMOy{!DCOhmWOsLvGf=2KL$s4BSU(`wiIoc04@&haRq(ZEI4T%*Ekl(G)}eyQ0x1=& zLj_YkC>5+j1rt&#SceKGq*SmD6--E}U>z!$kW#@qR4^f>f_121LXHa7p@MJ2yF)6t zSA(O1b*SK0;}&=O4(`qPS1S1WhU2K$}tC% z`W731sPMYfx7heYz_jSxz0peo?4P1@_ePc09}K)z#tBv(G^F(vO#*uYV5nkc{QzH)Q71vfx`n`r5~N!VL^e`_s1>G|GbM;wn<=AnB#2x05SS)G ziM5@`&Xu6dx{?^oAdtXLp7)9F5*bxt{YG?`N>ItPF@)x8wEXRj8P{1)Q)%ROp+9B# z5y;g3o*Ob$X~c z_Q0nr+?XjdddX$%Wc0F&k9q+^kBp)Wyi?AW1$#Wz;Ndsw=dpD$t0d8OZ{T&;~pCr~-}9Mx3q!rl^ch zav3+Pj7Pb+DRVjHGup+ol^|nWj7em%{YfJRUu8dmuD2VGS>rw`5mq!QBl@erKfe5r z5Hhnf6)x>4ZF)K--Y;act6KY<3NwT9-Y+^TS(`IvD|~{&O&RoRBc4Y7WQ!UzKchSk zilhB0jdFTMF|L;a&<3Oo(j5qHrx?x7AngI%M>TUx##n{NDcsD`XHdXG#ivU0IWNg) zq3E!bokbnmVYE>6Q;Z!(3q`%c%`E$MVl+doBuN3gTmn3ynvP3Lr_Yd}6Q$j&?=a2;d(b_>h z7JkEwPWGo@&nxZ2Q=uO2r(AX@qPWZ@dpK3)RuvSJL3w|opj9epp$ytUtgceQeF-Qf zLE1Zi2W8xWr;&A`zefCzUEi?pDn$oAM5SoVOvr}BRYywdrc60_Dd!oKRxCP?6;x6l zUnY4y1%7<_An=O+LfL#-L(k|E?y$#An5C0VlIOtrGMT&u!`*LXa+P%134<)Do*Ltw zsaq~{dO?F?wcM2qW%4gc)Ox!94m67uWc$PK^D_g4bn zN}&4=5%^95)Au}q?- z*mGuxct2;*L^~suPbW>D>-Q@?la8YB<>U`bm*@KZqUTBkiA5K(v}f$CGqB7j!w>RG zH#~#(i1Kf6^t^+69-jQ9D*ZRS%%#iJ?Rc}uNqGv@%Qy4xB|7nKPG4q^Xcq0tUZdbO z>b>qIrNG`qmM*E+@b*WkZ)=7xn{KAyi@7ludG?jm8eUg3aOcaSuvhaJ1r=VkB zMUUXiw?c|s$?TqDhga^GlBk-Zz$#U;TIq61J&8E4a$s|+^u6BaKv+$koC0iOF{zB3 zan`|683%D`;TJQoF>f>jD39Oe?@2f8&yUjR?b>`pIV)RaF$=}Zht;{7~)09 znLG?ZAbA*qfIJK__s{Y$#L)Ac6X7@v(F5N~6l ziDZub$a(Ta_-p5hZt|{3y&abeJZ6B7bnERE3Iyn`NWDyp0R)S;PZ$ zSEP<3-GoX4bXTN~Bi)3`SnzH8(iV|3@XfbjStH|y)ME&&J^By$tZvbo&>jBCW%V2a zkL$8}zeU6+9CHo=ilV3X8d9X(h1{^j#8MaFfB1R#AW$BnwYp|fxY7yUxVNiyJ)lL0 zCcNFG`<@O>*eA_$&d_@M$v|~P!rNa0bwt8DPy%&C!dokWIwIj!YfN-R!d^YgJwyA? z2O+%UwOf(7@hpDS8CvhG2<{YAPG9c@CG@PEzTP>-B&TxvdM_&e3guA;A-tCqzls=j z5W;(z|9Pa52O+SD+P@8;+>&Q#y$OlbK?v_W3DiLd?|cc=K?v_P#ne)C5W>FveCG_U z_vX@1!ATu^@GdGLzlS>Z;Ju~vZ-^OVeT&QQytkHq2SBGDUOOKbfYIG|-lf``5YJ1; zm2pN9_v~o$xH7R|79C7Ad&;WQExO>%tdhXA=wK?&FB4h7qJyb8zf2%v(ZN)lUnY=l z(ZN)6hy+oK?sqfmBtYHwvKL(7-tQKc_q&DV{cd4-zgt+|?-rK#yM^WbZee-9TUg%j z7MAzBh1LCTTD|?<1@8TBVR^q>Sl;gzR`J}b$2+htsCu(qdrRm?|8MqP4yC`OHWH(-Mr?~*%6 z33OH-?VbT1Pvb$c=*&F1GqOwWIaFjgp7ZwZu|K>J8e!FL(5=YHp^B>Q!Qh@FS+B;x zTFJU1XQ0ZWK2N%WSLBRQEXL&hMnznabC$v*^X2&c-kc0#h4Fj-YG_lwGRLWthWxc8 z;wl$6<Xv{A^0D}8nJSG1_^f$gbM{d&;izc)9msA-Ol&~lV`wjnKx0Aw7 z$Qh}GovnnOkTY2c*P?`-m@`P>W)`3K3wZTRC}wYTXXeF{SqwXNRLOfD!>s2q%zCwA z){~k)tayzAFIx7&rl2IR@G-o?F0X_mS)>)SjZ|-YvSpKO?dCFjFUf3AcAZI zvQKqO`M{|XH_cZ~pladg?EWggN!7y7*-jH;j+D5L>iFGk*-!gRsRKAGnn$Oe5Zsww z8w?urWxxF(JJZRS6;7s{UsUO^^AV-3O{RPCm~@+4rJDpR%vY&&V`xgxmoG>rT$Nqb zCd1Xqg!!-Gh2{@rJDsV86=qPt1&Yz#Qh?1#J{M&7X~XBjBp+5-Pfc~IN>@idD!x2` zEgq`Gryi4VQZk_uU~($~zN2O;Z7o1;l22)N-!=l2CHY{ZHq}5RJGcN%TZ{Z5Kr`7lJ3%IxuR>%qs20i z^>g|{{)BxHWMSdbEl!qW5u_V*G>@pajAw0ft4pxt;KN>O#Y! zHBKkQL2fGH>MSXEozy1_lId1wIXbj4kJ2STH$Ww9$X`x1`e2qTK>jntc#Vr^D~TV< zas)n)6~0Ua*(#%zvgE%dGs@0#1XLM;%n`65|3#|UT*;SQN-Zj**wKvS0r0#mIaEaN zXNA{MiQdkXC3-{FL^+PmshW5@(^10BssP(EodTc9RvY#TXlO=g0N!Tyb=@U*#`ei!rb3^{!)buB0I?ILUK!gBl;Q_H?eqP28H-CrLuXo!abT^hdmprbiT~NZU>Sk#+NzPv3YrKQU~&9_EESg z?>VX@f95EKrz+*+&pcZ-FH_1Vkl9CJoy8y9MVqYO&5)VHcWAyUt7vmF^LI09+hqQ3 z#<(__zn9UsP3G@qjBbgJMPm|?L%GcblhPX$&MTEP3^QHJ?A-l+La=8uzdA5 zqz`SA--dK&CzX@mQ|Z0j{8m$=ZA^FagE9MQzy0i$SS*x`I;9V9!>CjG1eMTXRDP7v zczVOTq&xj(dj5}8u&%8bH&IFMOj9j{N-C4D^K4vJpt{GMX~R@r&Gb5>HSbKLRYSa0 zO{$jeN~=`3QPt9lH23XLZ{0mE#>aPtku(`cGi#8U?M!Btkv61F!7|e7+Y~IbJT2KI zvWlWE^JbM*G>0Ni)-*qNQ74 z745jxzAkO?Fnjl0k=ak?SJ5i`5cQFGs#IC%)36G0tgou{@zh?)^uPXxT{BN)^py-E ztr&DCbHG|NXh|}_MfXVt{p_3PiOfkd{hpM5$?!X=H9t#{0>q^NJCo@@OX=y*<^4={ z{Iit7YM^>S-foinvy?N`i;UYhy4Xj+U&;4IN^*Q&{4l*k&no_^fEDnjsRBORitc%P z^i^*9hf_{S%J&{+d`Ii_bCc=sI7(O2&Atoi)vI-GimQtAKcqIAk&^7qx0Cj3c5#a` zGBaJ=%t{JL-tqX@3jQi(eZ(_ddB?kan-$-QZo1j|lJBGxzmri5E4{!TFkj@Tn?s^0 z{oRU`>N%QnlB&4#S?PBBGSKlNd&zvbyNam)eIAiBA`+oiim*8;!sii}6DuA43HnQ? zqqI-S7qJH0msRz4ia2_?G4CZBl6Q)Xqq!qIWNO~gDRQ=w;`BV4GxG9CU%ThkBAT{= zs4F7w6oHlgrPOY?T4Z;Vz2}v1($+|}uY|`cwoQudE8(*g+o^e%+Yerim5d$sma9dM zN*xXlQB~mx6%N<85h@&RObTUZUW2)hlqNlVRGI~;*rU28l&qt<(j+W~>rRz>O(<*QeNeHk z4UT9dgym-1tg6H3Vy8CzLAN#%tn{ipOo!G4k{zQ&c8srZldaP+0?EE7YiLctX)C9O z)&!ika%$+IfYVk^4LuZS+g6VRTGdd3s?-fY6`fC-Chw>)s^iSfafQhXI7-s-3giVw zsG2w{?>6d{d4UF16I0X>EkDp*;R$j|&f{)gE%~<+ednTpI}%n?^pb$vjnx#r)Wx_{ z_-6aA>#$NR-{%E>#~L_-EbyP`3L?jj3;d3jZ%|{$8~xo>{OPJ+-RK{xnv|)2b)$d0 ziq}<#z1e^C)s2z0+V6AwP1W^ozuE6=TO0d*$=Z-Y?DsV&rj8H?d~)}aSmX$Cz&EUo z5C?pxwh`ix@2C(T(eP=dD+I>&)v}+YV<}bjla)TlZZ@lTdZll;Vm4ikrdRq-SJ)X% zukuwWJXO`mD&LSc!mRQ+FM-ZV=aGFm$;})NwuH=lVKVcRd`@#XnV;lyn#0NbB%jk9 zPUfS0PIEY!kMgx`j!{0hIanzpW53yw)xWeeGs%UH{TJmpSfNV3*>WbVPG8t;IeQ+@ zQYGJPO;#m!n&Bm@v%*d@ykre(Q}UNAXC9)fPW+N}rs~9|>cp>DfrJWZW~FCR)$~)+ zRd-_M6sc-oO$yh~a>ibcaQ!T2gPkK>KWj=G;i@fX*>D~! zO`&#~b}aL`N#@f`$Gztm&1vSCHq57)&fDQIKi6dr-mlwtEf6_p%UAsaZ<3ExfFF3r zs2Xz=;0NAw6kkUHe&}^}PBtjx^s(2i5LJlnUZ)T zHW>}}PHmG>t+&c)I+fATV=@}nDx(bYKZL!>mUu`FkqT5xU~&`o4p5oTR%6{yfFdLt`>AmZvq;=+)=v$mSsh-V8cwr1ygoIYW(BWG(kph4n?$CXuPk-b zI{kI2;mmuT+FoijwyA{M3};2wsqNbhx3*d7-S+J_xeEJaqirjmY_x5~la02mIM!&} ziuJAdUPnFeZBMfNRq~yyFLcZQw#U)S%~Y4D+_ya=l+ey#>TQps5gbp#R*z$*8q^#9 zj>jp)Y*xC2-l3YKnN5(HZAxZV<8j9QGBY9_*(R@=a*y+dJDCmi^ibNv$!u_|%x2r4 z-z;*@lKuX5-C^vs#OwOVHr?@c{meEku|@CUbVsGOw&;#WnyEs)sUK~barWeeZp)0* zozc0I&p6!~=Q}MvPCu(nKJ~h@U!XzdQ?CzJ<#F;Ee>9(Bd5Ph(YCnRSNbM|gTj^Qh z@9uPYR@~n{ve2CgJtQ1I9%?^Gw)aZ4*n(GvHQ*m#URmrixl*{ZJ=TuCJb{D7vRgzt zGP7J7DP$sAJlEp#;?T2o~ zT{IcAQR)+}{e<;tXWv0ea<|f5piGs!l~UzyrBu0FDfM@h-FIMgwPwJ}B=;R)&o(Iux$j`X5@+85u4bgb zl2&2rk{2)%S@HtLmk^_NBH;eTE$EMOD}uSy*@|E+)gFb!a?{6X zXfwGLA-U;;wjy|2Z$iyEEg=w)wN>TX3y zm0J-~b;ysft)cw28p z@V42C;BCDX!MjC%fkkaa@V-@$f+b?L6~Vhz0<{&v`%XUfBefO5`(FN25J7E4@P3ew zGp){61aIrD2;MeZ5xhsYB8*xlYD2UY!Fx#i2h!&JcEG-SnaD6xVYzU?xU+p^naHFs zmr?(sO#&>Z!TthaJk|bvndq2UOoV&W=#8hptMQL7-v-eOe+AKR zP10W_={XFiqThOgOP~MRtDsyUDaZ7}7m6k2@FeAeTB7t|sjHx)ec$b9*T9=d&>#~$ zg^dR)fnwV**kN0c^#p8rgLC@1g)w~Y8D0G=`r@>@Bj@|W%4XvpSNV6(I^1M6^}k@U z6aVgGJZcl{1W2K7e_V+tZ<&r;T6#lEn{-Qyj$2wDATiCXzvlwtniitcO}eH<$2Bd4 zOtZ%Rbh&d)i;inrsAi%TUDE=4m^uv1Vy53NzC#p;Hc`6sx%LQ1f-CI$J4B`2ZtM9* zp4wqy+HULlRsuat+igAHNnnO)yRGMY2?F8Y3H%^IBuv|FJwK+<<-+MqOm>bfnPYG@i)V^DViY%DLud1xrcjCb9mSolP?`BQ#hsy0xjCNV8WgH9->0}U z6{<9+P~2GxRhgeq+}R3Mn^pog*VCx7uQ6qL&QYk=Jc|-eRit(17nE?CLL*sVIQp5V ziEGU$u46zW%7Egm>FcnnDbj$ZNCTQ84QNWMs~?PV?OqW1?5%g5deY?vF%nxMvCeg(WPkV^Oa&DZ9%k*itQreY@ zrIIwQQp5g)r7Fmw8kh&F8(UN5oJG7QsPcdnTQ2$iO7gs0jB1}CI`wr5log>$pCE=S z>>MzdBr>Qf=^SXzL-wu}BB#4dm?QeMNtYv>b30DDSgUjo*nRK8%uJ@+!K>P&+rfvm z$?r3MG{4;>(49QlmOG{JAEFB=;qTib3uv)S7>8MN_Z`ZwfBEM*?T9D{qXw_+A{s&xGsAu@1e3C67*gM56%w zO?;NI4Y($>_0fsr9>SN`!Q&fR+EeSokRJ?0eJ#m5741}oB|$orZ{S2Ip|T(y$~SN#lu&t)4&@s-5lW~c zNQd$boCqaU8Kgt`22O+$stU?O`36peWU!^V({S30@{bd`jnQ_lm1nFFb z;hw7quDA2=bIw&5?zxKKyY~3|! zn$sGX(-ImPq+6T~Olb*?3DT6-z?7Cyz3PIP(h`~wTxVMkh}aaG(i)i3`tYthlTPnK zj?=s>Rc?(>Yqd4rdyAGpMB6E<*`B{g)W@5m&U--QHh%pZJ|WN5@e3B*F%d{tNDnT> z&0LmOAv3t~Ma20O3IumkTu`A%@cPb}DWoct9(;i)vlNQr`^-xo6q%>Ii7j^)uD+p; zz=DIk2D3^P(u1>aLxM7e%;25B;(PZvc}A3h;Nks9*F~X7unG6ITip~&5B9caJSbw7 z6R`o_8o;%Q&}iX^Rg260pe2Lb=n6)g)sHlIGeq>vt5WesiFX#D)Kp}iUM@1$k*yrQNw*{+%L?T4OJ0vt&Kw&|YUh_Bs>Fy&fYIvDhO4Fe}GDtT{sg$J*nQ0Ah(p zib(1|?*pi3@ke!fSdC)x*0jUrzL&QS%1#`c>N_mE$apLQ#@P55erJEAZq}ulDl?qRYpG$oFeto10sE<8t zzx6Ptoa5no5$!bDX_lXWj|RY6@a2n$rL5p~TD7X+=J*oIqMbHDacGLs_H9w7xn*U= zpO>I_^x~3NQ*T^Y2O;_LLhQJ}MqS99Jz#x}d88Ppp-W@bv?0b^8uZx>Y zruJnfj-atvUn-bSWRix$7_Q_k`{_qSZl}&vE!$<*s1)|QteFwWI$esnBPnIOi|iwh z;DbL;$CKlb7j-obX+jIq-}o(z{V=`lIOMo@P5htxEY0stqQw5;QIRbzck)D}ug!@_ z-+H@n?Xf2!eec>6*GkKM^;*Yr>#pVYk>%E1%k3k}t-F@nN0wW6Ew_&>x9(bQA6ahQ zwcI|k+`4PIePp?H*K+&Fa$}Y)ZBDgMT5jF7-0Fa+Yq@=7xiRUMq;)>B+WVy*1O=yhI zbw(4aSI25y%k5id2OdWccAe35-Cxjg7cb;}VaG$#a)(=4ZX9YWK!jtt9cs*tXA`xw z+#xwP4#~N3sO{YNBoIZ)yj`pS-nkU|!X6C&Quv8yzsQFb+5hbFKJ zd0P4adWiG13>eoexj@y-6=ox^ZNV{N&kR^mO{H4=&?T-2Uov zI}hCMeNxo%_w65_6glV4A*N@EE-H0n&Q-*%QOK%;oy;kx_;Xy`oFl)-G1bK_Ia`T- znv0uQ!30Y1zM52Sl2V=vyBaIE&s#4tdyYcG@Rl^{NNa1D`J1#Kh4QOqEpPVdpe0y$f50HD4%hGVt_lE-Wb$mOmC!#P_*$#b^Uq11YpxAh0d zyf>D<1TwYWg_E~i0FozfsV0&qZ?_>PdGhu{0GzzV;M;3U9X0`HDRsQqnR?dKh_l~# zR&;WYxl;3SY9tv=~nZ{upXyMU|N;)akh7o z(_t>H0XSWPh;`O1Fi-|7-5T8kMrN9f!R1WPZO5Qwx<+?ydnhw+iFuxN5)`7$HDM}a z=43ltrgE~qNCGF@OC<=XoUW80qH?-Qf^@5!2i0}01W{|V0dTzpF>AO9ut0)1)B53Z zb@L|eEs`aYFmJJJ5=N%JHAr>ERO+QNfo^RKgZ_32OvUO>32@eb7cstD!`eFY5Eqnf zmDL{eF6#n{xnI)ZQZO&TgATj(et?G^cCp0&$KG22NpZdX!rjx;J>6rA%lfh`4#C}> z;F3TH7P16_g(wgb1_;jLkj7Lw>pBBp)EHi)<+5lXlrmi%AG+I5PtucTM+DIz2-T=b2HEsZ#3;=P9V6?YL zv#Co8b*J_tb!kx(IknqB5wv-@xl!F~08Y)b%Zt3;Z$PTnQ}4dXku~s=>`z(fQPkp$ zg?<6&*Qn<#>=%sG1q1MEJ4tid08$82c4~W7>ILEQ0X$r3)VEqLG*VjWL=>m@Rw}n= zMtn2?r}qZhGF23Pi(`=is&^41A^`;C_1^Xal1(Uu;9I6w+3bjp{*PDc37_1k*AG}} z3ROl%|NBP0b({a|jd~A({l9yoo{Ck>n~0dZhKd{YR${nl+^DDGMm+-Nje06>)MJG+ zZ`4!26SG7k%)C)gZ7pV9&rznAC#0#oQI8hRyirfZje1?d-Mmpx#f^IBfok5Ur{YGv z$AF9*^|ozsG!GO)Nzl%TN*G3a8SbE#3!&2!F%xrERPrQw#bR1S+bAmK=*0)j&I|Af zbs;yjEuzvm7!XKJ&7VLZj4lVd?Bcn z!5n9Lda?a!6m)}k91{iO{|H_!2-q5yw~0ulzuSt`5BPvKDN-p5>aqrP+aUF%BjtU=o^Tu*dx-XLQYXb&Qi(=7;5&2 z%x$abrJx>>B~3_mt?}1PuSP*ZQN3X_#II}^pNP$1O2wIidl-TfgM#D!B{=S1g5&-r zI7_4@H_#%=5S+~x^ouDtyA4C|BiI1(O@wcH13`^91iSfxrjc@QA_^pn@tX*HUc-#x zn~1Ni7)RA(1m8v2Sz^iwyth3d=u4*A(Fh}HdmDm!1qB_ANS?GuBa$cW(TL9Xj|sUUb(gs&=M*u)TgHz;`4zhXG+Uoo8ZuNcm;1$8oGIM;@8 zGD19)pi2Y{gCNW|=F^ID@Nhz5)mxzM&aoaQ8QWL=^9~`{uXA^b_)tJ z1^;2g_+q@i{^w4t+8Gy0KMAi)BY?q4#Auj$@o9M7i%^2K#u%174^PXgj=`E)_+Nxu zS=Pyv^U{Xfm~vj(aC_L5Vz6D&p)9)V!+i<$(P$abtdWAT3^4lZ!>x>rk66VLy&=39 zLn;0@hHnb8Gudyp;Z9NMSckUQFwd#jgQSek%UJXa_noe1-*&y$5JztPK9v@LNB@6` z8)&m@Z;Bga!IWh)@EHUhyy`b1gx=Z$v0DD5rQJ zEQ@WddQqX`VO1H54|b!jpt~WKv>CBz)ko3F)P@<6-8{+!tG7`5GT9kNL}U*u!j_O3 zYSgQoVd>0zg%go;QH?YvU0#DO13mx^n1pG<3M3;;_X%Nh>f!uUU>$xrY6x_Ol}bjZ zd_p&l&B?=1!*rSg`v>VBh88pFN?4jc4h?D=`+@>@hZ-iSt)c1WAmQ%Nyg`Bb-o5B3 z8hQ)}%@y>1fMwo6pRlXQD$?>(cE*>f23^b0U1#tcT*UCUT= zKd9JINb8hf95cK0fA-l1^JvCeW~kMPIhwKAVn|}KsmXjko-t|)%pSK@WR7C|H)l-G z?jC>OibC^wTExYWv^irnTT)efWMyXexur z{7;x{(>K7st>K@Tu|g2vu(f0U&HPP}`Iw9qgSf|8%7^?LHw(XcHTVwsgzqlB+yOgb zdS|R;^9V1+CbYVF9tEr~BJz8XzIyt?cFhPsg<*qO@>9ITAYRGzWrKJ%Y3p;R_oYEa zHu>!h;^j^sC>liUL&V5W89oUjMyCHfh*ydQJtV!)8DtpBk6VohhNLea#9Kf-;ZuI) zgLp#v3MO6vjXB40;^TC_XEkjN+XfLIrz;U;_=-KxtLc2#gLor?cvsUU#W<18*fH}Q z3^T@SgLuc%S#37tYU@NHPTc+};?*GH_H?Cf!I_Ke?+@Y-L?ecs(v>o^3T0T&cF0kp znc-b2T}2Ds>F$y`mzo#x`5(p9fSv7x8ZS|v_W|aR({YjLG z8CPDv7mP~j)K(d2Vu~-Fx{k@Mktx1R>LMoGfZ}l;OX~Wj^g5>WGO62I(oJdQY-#uo zyDtfjrV2(q+$alUu*H^9$5&HFQ(3~>o5GH!vV>cO;drW`>Tx$|s6&&Ondz80+)l^P zR8{PfV5DPcsxM8&+L*kWGeA1(d5&QLJ~d0& zrIf+=ltf~R6J`cgxRlZ|LRMN{N?A8qT3$|BG+A0+PWhFoft8k*Q+7(0mRD0+(MMVi z@oW0FW0(Lo3Qfh7mCVRChLz3Hr`yoNCV((yKPIQDQ$E#qJY(%#$KQ%QH+!2z? zvJ5!Ff<1&4{$Md!Zxrjm%pmd#zoo=4W>T#1*D|93GxD5u;<7JD+yu56SCmEBf-d{4 zWQ{jzFZ(Rh(jwxNN!rq^e@!AT629UqV!{m?McilrgL=hRb-H1Tgs2d9k+1ozzReF& zElF_QhC4=y48LK+9ikdA{H6`#)8jUJhm&^7PWIXDlBw8apEa08q&l$-mPm?Jet;wJ04Puq&u^;*p{zGiI3 zvU$<-uf&)efnd$cl3@)tH7FT`DDD;$?3{IZb=(}Tj}Ji(UVP(03))bh{QH=VK5 z`o7yrYfH)dZmTO~Dfz&iT*-$vY$%E24sF=d@v#lZ3*phs`_t}E3Q5&iJ8@3C3)rPt z2p>SiJ)a_W3L@@t7qbgf+$4R_SzGZ5ZoB%TkH*nLLwB%{BpQivI>@7;JD3<(*?Kf| zCnd&Dv=I-qAnj};7c*zJ6@8#th1nWvJvdt1qBIlN0<}y)L?3~Fq)12adv9VQ&0qvt(VyFuR`2mmg&Js!mk_IxIHL*uxbz5Ov5)=trRqTnttiLo$_C) zMa&{&MffYVvK?W=CVc%botoG>bT(76sSW=og#S!KS5f_>3^&SRCq_lJkXPvcV8WPZSXRwu zM>bSR9@$VOd1S+byr>g8=@FkOb%D%Z%0cF)4euRf{!+GzlGXEhDO*JeorL#4p+~vN zq|Hzn^U6jp91hZMlC9je5_6MWWwFqPZIiWzvn6RmZg>uspV{VS-V{dGzX~#%EeEqc zyc4VXSlNelEo%}YI=h_`W95RuVzx~$aoJAoj&hO-eHe=`kn)>KH>!kHUqe=xAdmdP z2n%t;snb4ZFmcRcwmpcu&zU?I_c@d2;sNI;#cZX12@09TEUPnlmSuI?S!SBXtj=$f z6|-#4e94Mg4rlUWmNRKfZd_CS>nnD|&q~QH-&rZS~;=2 zasQN(NA^!Cd1M1YUMyzSv0`U$#zj&2mR6*35_7YdWzK0cZ!Fn4Y+AO)Qj%pmte3fJ zM<|n&+_Ghol3TXSwoFXQh_t32^CLI2M2!i`^GHdSE0Nupcb^_Ou{ntM&S4uav?+h+ z=b(r=uXn_eWVueVNRD;{Q_d_>8FJZ?8||PsdNU1An7w807a?=|wlX!+_<&M5VpI&%~1D&i6<{;5FPD1!=?9UYc_!Mt*5bqB$ znA>p=*>u#kb<}TPclfd!roXOemG57KENSvX@w6t=^a{3-i1#Suh1Y{AB`1D zXKmK@F}{Lu9CypV#Ru>I|K2~`o$>#zy?=#1y?evjnw+%hZx}}P|8djbn%n7w3wH?E?#K7wc0cMF-0rsuaR_er8;_9ScE91E30|u)9YE5x8ia!T{RjlF)gbU+ zw)^QV?j~KUu^1Ttd2`=NgakMDtp~tsH5S~p&a%L@8dIQNS|=|xHTLl3!YtVTr9FK7 zv`Hp^V-KI+>7GLl{J*e=uM{N8i4^Nq?`YQ%BhX-gW*PtumOxgbf}l2#d*pKM8EElk>y zCIK~ROWJopP1=&y4Un-Vt>ptpo5I}qsO2-#SPpzjZwSxg+pMJ9t%GGMMucrLKaMwXpF(EvUKKUWeCE25|eCUWv%jIRY zpQdaghJg_J!mmGi=*V1>``*-nn&R*vi0PccD0qAbq1;%Z_R^HlU?AV1*Ft1LXuMwM zks~IWn-$a^nz{eZ;J}@DKq?BPh<9o9;g1|?GZ}j%3VU)B0h%f-x;_m2&8-8o-1(E?%}K(GeS&Ni z2f8D2psexN0Dp19b;>Yw9_X%1fJx8?84lEMnARBJ#Td)*3GOJ8av46Yb1)Jsb|k8@ z*v*~p1x$_}_rwumj)%LsYnqJEi{utav9a5?`b&F+R~iXu3T*5yW+zf+?u!(wyM42R zc;5x_s=JE@@ftA_B|n{98xq7T=?;_&B63rvn8)oK6J)qDh?plya9lid^@Nt1eFFZl zwHm3C3ft36B~NH&O`h!|?=w|SX!c@ajIknmN=r*pq)JTc%k9x^Jsq6c5@OT9Vv3WJ zm`^g8cMLM0q*)4E%qMB~3Y*D%N)q!BMttfgyqoKjp4uy;U9{3x#3P4L$u3$=GwX21 z`2qbb@XVa4rIoTHa|$L}tfkekve+#3wX~Kd9B<066O=E+4rf9=Rf7p-jt9zPXPcQ& zPt}sP4l^zx9iFPeY0230skk+)VG?mBV|L*|khr00B}5Z5l^dznx@MzD9~J#dtxsgf z@CK%0P1Injzhs1)+LK@{VrCP+nGJV}*~9SW9c+*GFV*l;`wcO+G)9*A{4bD16f@{^ybeU>1xzoiUptbE+fTuV_WQDBli=7 z9M-#P*c>u&J#T}n5d+D=Sh(NhGAuHTNQ__K0*--HgMl{4pAjd(j%61-b zCpb{8Rn|_CWm#7fT-GXUdm(l}9`LG{#B003t1PysnfY1IRVf*-daf@*7Xt?yI!$Kv zU6zRiv%Gqz7dY+2up^+3;h7S272Mb|#knB?E1SnIQG zVp6c|?XzdPu#loN#YZT?!g$?KJ|26=Oyx%?6-*tPn7l?PmJW?fUZZSY@iAD2!!+7x z#WHT+#u)2xf7@`&7-Jnyx8ZMMjCHs%HrxVBEUe}2l9X9*D6=@IOgp8Fsf-n|c8ay^ zVnwWj*VYCxQ}xR)?G!1lShmNCMRCPmb1`F4(xx+FA&8}HrL0JlwqYw0Wo+1rL|Gd~ zBzCa4Uy`j9)w{mJA=gHBUXm@_VzrEyWXra+F{|Pg*{+I0Tnnbe7d8_?IB!h2JF!X2 z%$6_YU`iOR>=&|~5|PG4$QN>JB4g`pBvwlcVFR~ZXu476TAIQd1%<^Jliy$2laAbe zvIUrN<@DmO?eufYL33w_bIZ25Gr4(_xEWhUeM#KnuF;GvcLqzCIUl+;7?tJDNuHvr{UTZC$69&%TTqy(bZ2|o50U+oRx4YQaDK!oPUsjE zo=vhE9jkC=lk6#eGlz2|@iuZer|%Qyk5lWD-#RjuH;VZYNAe^&;z*t(#~gN&m|7mU z=j5Pecm2&`sl@q%Lt-v$Vil!!m`#Z0){ANh3D(u(`}k%I*#;+pXAici6MC zrpz9;Ok`(srcBu+UOfbC+z}^q4>Bw3u-YdeFVPpibA+}rBKl0U?0USJKhMN3-hc>e z%&c>Q_)KhNR=H-T&==<5%xKp*-}zFsEaeZTWqf7B9Z>~o*yAGgyzlL;l*dHN5JQVh zdK37YC2*W*Y1hP*GQpP8f(99vr`TLuoA!8;4S#1!oovIcOnW@VhOwI5m9?w87)<6) zM(sL|jde_Bl)&zyWmln80_|SaBxHU~C{Cz@U20~YR2A)>iK*!4|5CKNE!a}Dh7DVa z*0fHBVNcnOYiXk_s1CdQcSdLBYMrhu%P7lbpCTnP@x>6RZuatd09XF0RuaO z{=MDm3R$8^t_S1a-iT5vEYD^&Fm)^T4YC?rdh|97!sevZ#`gka({VZi_c$Uu&!d+w z6oOfD3iq%cXU&uT5@ybmK0-g1zreFRqVT%Y|J{kw|H-}N;Ul5Mrx%keEWk1!()iJm z6#QCxCwzhz4HF1nG)#aO4UcXpWfJR-{$2X4L5T)9v*CoJ6cW$4X1F(A>}!UJ4(8Tp z(jADxYlfE-%5rSK+z7N0d!t60377Ed-QuL>E>ZWf#A)I6y#Cl4H6eYIS^Esr@06&Aq;l67jpR=C;3L1b@t1=PulSK_c z)i@uD<9>-2Jnol3@VH+B!Q*}j1dsbAV0{>^RF~c)>8I2cC+mA1k~^@e0}iMAual(8 zmr@su&6LS_q>lT`B{WffOu-pXW0F+)IWynQNmAw4*!I8*o&n5=2hRZJ4&C4xz*9jJ zJOg++fTS~k2?fspCJ;OWm_YChVCGfu3}D7Ccn0uVpastW-V7jk1~AcrX8`kH+29$# z`%&DCdDD}UWL`&%Gk_OEW8)0qI+&HP&j2P5^EzUj0ZhQWju>YE6ELqM#>eXf%835Fs~!V8NdX19dXn0_%yq^bP)>LU$1u%7eI%Q3m+AJGkU^- z<3#_DuPA=ulp+J~>mYCbyDN%uF7QT(Q*Pjqy5K#`a^PIxD-dnYi?5I3yEQMqF_Nhh zJQw&DLd+|Q|L5ld?*s$$iej7#Ou)RN80P}x%U@(UuPDa3z^MQP&jltBJQtW{D|jw2 zKU)u;3;Y;>c||eK1tx3riej7#Ou)LL80P{L;uXc=3bNcf7x)EeGv3G0Au`^@kVdhX@C&&atqIPMb$EA&6oiTI z9a0N8o{)B#G$D0J4Riz3g#3W#`jEPy+8lBhn1@4p20(T^WB|NYhR8t87BU)014GI{ zSc{OE2+bOj8tlFd855}q4MQqMX+nI+t58j79a0&gRYJPpy=utw2u-LMvJM=+2}uXm zEknY=vrfn|(AEvPk7vD*D&WvFBnHm{AvNIhMM(8bm|5r)G7C(940(*_Pa!iv79BDH z;wy(7!*f$eipi2~7^;rbPql%~}tL`MjDi*Q`{ULEA> zfRapjms?HHuro{0`W?bY{ez7g{sisaGR%DrF#v~F3d3=Ar~x>&HmxwvKg<9WZF)m| z#XQ{0Mh=tydGyAr6eG6M|4^lj;rkF*^>LWd0BWnDp87Zo0W>yk^(DXvd`&f;TN3*s zGV1dj(}Cg8GDBPSr6sW#LtaKRMA5DpKt2Mhc7h^a88zIir9=v=ucA$>Fdqr3zRG7< z1wm?0cCQ^>5zVlL&_wjQp-BMCWtex14%@|4@wv%UmT-qgbl6&?py($Od>Ydy9CF1F z3kMhJM2BsrPYMgC8GTxibxJpd%2EsXgmcE3H*V7_f|mukx;av_t($>q9DTPYwinY8UoANMgky>~YA2I^fz9hTA@+M@o;XNSddK7J0t2rB@dU9%hg5(7#_%y?^ur!0U0@iqzMh%v=Ud|NHgrzJ33o|x6O|Z2 z;k3P=i28ww)su3VaEr{w)piXe`x06qZZ>0C&5RTTTi<_WIY~a1%+raZ4TZ9!)I}A! zgNaCAB`MTQwBLlRtMs3|C=kQ-NnRfu~0Z2Ma|MyIVJ%HPs9?7UHXh1R~_lw zARQQ=_ACLKBf~udu8J(p;FrP!SxHvfR<3PKamJ#W4Yv`pLp7lVk}W2Z(HLrnbVM}j zGi?rvM$J0jTu?I@se2vMyD^6J!=fdrJbD4Hv2;qKoo~W9^?NVK%M$Ky`-R!xLET$&ejKQ{Jczrk4=x5ur2AFJ8{*IsinsbJuyrQO_jHxAgRSY zB|ODE)lxe!Rg+H-&njip*G5W>^oOaXYpcRDNRF)HC_Sc(6x)h}@v5oJ#%DcTPPunU zjYHnx;`?f~2i&r0%x~^Xrp4JyfQMP`b-0}6xt&f>`HfiS^k|acHlhpvgbX-<2yiZa zNf{|^iM+gX0w8+x8BGB_;FdLf(A|f-8Sr)st^v1qsCiC8QC%#H#QrXi&0u+$prWA@ z)>`gnxagw@doA}kTv&7ADqI*8;fdus!(k->hg&XQjbCOw(a$Mj^Dl^S^5aiMOpKpC zv8<#OsEJm{j73=>)j+!*WUX3jWNTvQdJX18!TrZh0xaI8gt-ywu9` zp{C7dx_$<1igk(>R4$hChsj>SA0w!lpkUrirhPI3@W_R~L-@14O+HC4RzZsMy!_Jk z=%RmLLCUJ7$!v;mqK_pw3g85g=GFI9kRm**n%d}{^v4yXDjIghtJx6VLoZiR`qfjv zwH>}%-%?RZpRq@Fod1Y${tBCpP!H~U{c%Mp&YPoyjh`Zio~e@5U9)e79J6XpCFwI! z6RaEQck5RwOI5@KJ$n_YNcO||1hqTZ)XHzV`{8!6*gu0?v4HudUqyXD6)AV>e#2}r z_B|?f^gUIiLZYI7tRl@3Z|ifaN|nS-`opSH#*Fr{x%N@Kse>oeLYvuQ zeQY(UkSEJZ+XH!0P5MkTcaRFgJ3Zy+QtM3ierxhskH5W#n=lJ+hRUnPeJ=UMjP?h6 z4A{&Eew@cIs&A<-)fS8DDQieYa@${T+h2PVi)`%A$!*y9UR}>!NlLFL)Q}RsvJaxL z55BNZ+OUuIu+I{)4=+iu&P*Y{Tvi>Kk9YfM8v6Iff4cr-O(}g=`#2-}_$2!fCZh2- z%BVFZ^hGtL$Kq~%YAvZuMtjQv!x;s8Ps3{cbuFo8puq<_VQu4R8`}0TxNSgi9BxIp zc2j^?p%eapplPTBcfaM*KQABnrNQ5BJniH7dW|i?sWsBw)F= zJH3S0>j%mqvAuPq76F=E{tc50mnN5gnq2;Aa`~sp<)0>(f0|tWX>$3e$>pCWmw%dE z{&T^S@?RK#%I1$&mlhZQfJ#$K{rTrRO|1>{y(lau|FpEWKbi1HKU!Y?X?gjl<>jB2 zmw#Gb{%Lvncfk75`qJ`-hgU}fffth|wm1tpUO>L>ROFvpy{@Ysr zfpG0`+oj)hy;ObaYh^lKJ4G98^U~td%Gzjrr?usO68^UGeD4w~sCtk3QU--@X)+re z{Is!6tp6y}FAEKA-Z=B$32q8Z1&qPp=0?9pSx8^rPovwz`mZ+pTI$28^n}H= zRkL0Ct^E)F>*2@yA59hcRx&3={O+e2<`u&H3wc*XektV;{e~^3J;pyFpP`GA084z> zc+a1kR+$!=e_CYzX^Cw$_+GJ)`CqNSZz#q3Xpear7XP>P+>NAtGB3z!qrYz?Rgb16 zrWNL&hrHX2_`bL-^uF9cYN7CLdIddCBPoZ%ZR-sxQneg@nqhAI=f6=U`nAkLTTJ_F zbK*Nc;;~`AAFsmry2VJ^ z|1`+_(-7M%_)de&KMk<$Z@cuPLFS)^*!Jf;4Kn|hS(M`vsZ5OP6uR+F*Hb*DpEJp!bM(~T zNSPdOO6oZ2JzcYo#@Z3KDp%8u%K_m)zGcut?tQi^fxn5}PWDdiKh>5p4V(VlX+tq&ZE$&n@X z@NcC|G4l?AQMQt<3)R3{{;U*Ej+IK4a{U8P%2!%;e5E)47EN`D{740VIXP>_p;!`; zLdv_^eNJ6cRFGqrYc4^`Qc;fk&`F>8trQw7Xke1QvTJ*FDt(zx>9SbGsazKiev~1m z!hZeix9Gh;zoZCQ2>Zn$$OT_vom?*T3)aiz!Z*9R1i8+I(?~FOtYsn9ueb_Rs8B@0 zb8jZxmMKJI0z?*G;bs>)odDoA~!dl5Aijz5)! z&sQ*bY6MYh{Xl&;iS%ExjhMsQQI)N`h(GKf`V1^bRdODs&)QK8ZTmT?4vwYI`1@3D z9+pL9;mB9yQxA8h!Dpx_1Y{us2dvA&&QN*{I>z^A*GN`i8sBlECZ7Lnq!@7m6`DDX z&!Vg7Q+6OR!*SLa;*^0LdY&+pzQ_0cof-Pm42E_^Wsrpho2Y1+KNDyR|=-1sn3 zMw83nMqzwLV2>^m@DlwGjpg$g)*q46XG!+{4F$*J09#p@Kb!tab|C zP^t{qFN8AR639@6&m*Hr_Io0=Yij6Ny+4)sxSsxL8uR_-D2iEsiO>1Fsq~l)3_b7Q zGs6KsKTl6?^S2Ra`R`P*Y8}4MY{CfSoz3^qRSuT_lr0DhPt9lHAqWR%-b z>&Y?tpD`4Al#cJs`}4W1F>z)ahDggrAAf+VZ*5Gq)<-dPSU6P?eT@AKpOKxavnIJsx%7ldHHwZSEYd!ZjL5qVDwF*b}Pf+ykn?o?r!uMH=Xa7QczeK zjKXB$n{xC~+A~zbH%Bldm;{rBqc}(kMY1TF$~E|&%}LB>B7IKHBkjip#7y6fKCx(~ zkV4~#^HZP&om68;)~N@P_Gh8UpL_EC(n~%oW6@g{vg250BF7plhK@9>v}zc4R@7V;UHI*rCO7tZKL zvl~lx?F~l7j7*7I#JFZ?!snOxNDIv?I!Llm9CMK{&qjmPZ2-Cb+LmgqH0*4krP2CL z?M}VEAIg9dMpq)wFp8gKlyJQoMHVei;<7kU9*xjGV%9R+gRO;(n-EI=(d&EVGs=Q?|%Z;FK%KYFEA(wm-=ge*O&p)pD>s{k#cgg5>H? zkdktZ9oXz9*Bnk`Uh5AQ(b}~;0jJKQ0Q+Ng`?3M4m!TyB>dzkqf(GAC2I?33QM`W{ zGYBcu(6azIjefWTF<<>v0Pl_0dZ!rxlH|fmwv6XTPKHq0*1lB)o!o7ELKe5J6 z5DybGeg|ii_zi3AL~#x6$WpOHY1*GfpQZ(Zcs3m>4lJFF=@W z2Wla1NnFkDb#HNAcVu>du~~U&FhDGhMqe2yzG5Sbui%fMXiO4c;l50HvRLH?RCpQ^>M^iW1$%6cv}ECqa7>fB5GqD3)sJ&>?r&LoJEdxn}NE?@ikk#y^f4O zVYo$BA7%Cr;_%Ka@y07{-gUtn41v+q0pA}Dza zFN1%+>`hU*^8dkJZh^3OkXJAxpM}bmgHPe=?5Y*nwFuf2{cR(j#me0%k^@h`p8Xp)B;kQT1<)`yQf8PmqaY|$vwr-u0gNvudy#}$|6vm6zTih_zL`HFw7?rCcd;=! z5LzmJGJMK3V$xTv&>4DF^U>7TstdCq*B{&z7L6I0z5;V45b=V!5?hFwlD!G?L@w0) z3?g6VLM5=QmW4x=`WVFKu^74ubgKj6x(x_iBQEO#aIJW%7PQ$e&O8J9 z9paZ2fx1)tWiHe@E?y}FloMk5xqT#k+($e=fJ!zem4-FFT`sh;Q3O_ z9SVW3#GBI*{l1Q7*y1erb3AwmsJ~-jG4TA`5vWxfuI~6QGX#!t9Tv+fnZdoRy9kHqomby=p+jYR6%Y3U)f0Gful43Dw{na*X{2TuwQr)JE6^$LGwl zi;kS-A@{1|!XF5`>3Gx}&OJxyFNnko$CSWe5cZHBuz%4@WZQI|!)|=vWbvtN4z_tIC*jP^Lx%^fgdI9rXZbk9&z{uJ7vs z{j*>9<30bL$#^f+a3GW|x(1DoT%sboETtbdgHO2|PoPZ2HKl-4qcn=Q+~6rkf=w=k zKt_D$j!>h0od>}AA%7OMfAUZ2MMUD)-t~brQyj})*IcnvH6Sb$i=TqCRLu7lL@UM2 z%iz3GF24lpx61vGko-;=%CLT}uWCbs!LB-80gZP3FdAVKTqC*wbEq2ggOwnG2V3Dk zU%Z6Y5!}~ra zK&Lx)A%6p~w_kF|G|tf-pBBp#90jj}VxmK#Wt!~Rlp67w;)oszWfC3xZUbeS+c6|` zK0IjNY~gL43#o58-`0?KL#{H`hFoWM@gl8Kp8FNIt)jb7N>{j7^xFm_X5g&T0_Wys@LcS?pA*g!=c+J-Epy)Cuy(og3_EKpo!2-IwaWR3 zLzcD9uV|6iIrGnlv%z_k1B{K%SPpPDJLgUSw8go;h7lEA;o}qt0|!;d#vIpuiK( zy=4HMbpFPI_|&=c4p81Y`woTL{beyHqBKA*f&OL%d7yk(2I?UB?4KYUEaxl>Xo%c9 z3n+%lu3?DG2zlUrc#f2>?*icpS(yuGr96*)=~Z$=eP~xHQ^2Kz_eMGJB{FT3d>e;s z$eTd|ls$4LP7dsq+nhky0lD-7I7j3N5%D}Kw>=K%m^_LN@M(Ei7C2|*QapCYZAXGv};65zrN9>8_A_)w$y=L|k)Lu1pM;i(peKYVsUT9SxNS^+DJ$dCwDY8!qSO$FOVVUuZzq$r;()te3xKE4xu1z?G9t zvL`p7E%Jr#a1P3G*i$86m9vdN*fqH?``p*%s~+&YA&*H3c{c;{<2FFOC1=MpihNtn z^(UY^^2R#Axhvmf8+K3rs|x7v%aw|P;vac7K1q-t$W`}(;300rUOvQlshW{ZBu%)-?UwsicOC44rK`^X?H0(hJk#ya=#41_9z8u zy!I-KJ_pJ^rNA6S@PKmv1v}CQmECOt9#Y26K_VPcF06nuN0qzGu4BrPp$I#!d?iBC z2_kD809X z@UF5t3}N?_R|DXAUm3;m`9I34Oz?c5v>6J|hsuQma2_kY*fV>gRHS`;s-$2$^h{au zJDlgrpjasLBA{#!Mc^xC-4d{Qt!!X_?~U@f0id@^x8qRlow698`pEBgUDI0)TFx<(I&z)`Lt_)HChvqwLH&EKxh(Fhyk z>da-5v980Z5jM{Clrv=$T$9%$Y7<@SiUOMCO2s*mDXv2608MpeivpDBT7uL6YNE`L6qofU?jvCl5Rqx%zR= zYq9GDm*JPV#`x;}N#PHHp2xm996-kru05eN{lKUHQ8sN^4w7E1;}( zMTfBcTj%=eS2*ikozB2_gDWRTIvZUB7r@!%I`9uXH@hAVhO@=hgj2IyU1{4u;5Jto zuDx$}ZNbd0yuo^2G=K7u!^2c50ST|3&3gm%v z($(|{oKvnx3z1HzU2Rw(&bWT&`s!KNH=G+d=Sri4^?BE>^gy}b>d*rQuo3^qm4|Ke1J`&Cz8<<3mxS}km3R#Vfv2vtTm^dO zDxL#4&t1py-G}_bl_m;Wymakb3Fwt;4d>5ZyB58I+&8W(JwX4~buvGkcP?K8c)oYt zTLVcSTy5ur=|@)_>rW4L%{f3l)!0&y@R#~E+s)o;=RW}TQ5{}5eFN&M6rk^?W@-t6 z{nbXJ;0#b(6oThKwJdG^Aoai-cqXWqN<)jms`nzGA*yc%VmMUo#71$L+J%dB!_{r+ z;5kZdRUDY3)p*W#|E-p$dDYdguS5J8_26nKI#w;Z7Ifp(Kvg!s?9iixIwek``YgAtgIBV5(e}Kz6bzT`j>(z86 z0BukwbOx7=>gcKvv`Kx%>98&8h0}nxs^7I|2XdR*btrgmR|gaX#SZoRaS*su-INZf zyVSgG;p|pB{|t&f>a`1i_NrC7f$2W=I6LV3)wK?gA5fcbgW3nxEYIN_Qr)@1?5LVE z6wHpPFNY(($JN!Cu$51!k+TqXQmyJ|{X3<8iIpn(w0eX?fir4XR;RP-&K;0+PVLhc zp6At{e}(4-^(mJFFRBMP4RBd)z&VsFYW1w(c2!-<2KSo!?Rh}g)e-F9+)#hN2Z1+L z;Tw3~Qe%FC=WX>47g6r0wK0bmkngIaUV!O6wF~2PUmbA}ydSC^*=2mBmN^fmkJV}4 z!}E#i;q=f`^;t25JyV~Q0-NV*#;gc?q1K9l=Sx+i>3*eRRueTw-EDrbqkUK-m&gGGrS{OG{&C;qzf%j~!4=1AMXnhkPaIRKpBp} zQ$f*f+ER{{wrk_uAm5=CS`N&eTA3H%vRi9%9ASI3s3XAKt1WAeuzlLY@&Tak*Vavg z?*Z*12iOO-G1(A!Sj)2p6i2k$(*YgT(u@IgOgrI#+~eByDsWC{BRS!AQv0nVxSZDZ z{toTWXe}DU^Q=~niFZz$mmi+zwUu$u{(|-yr;ILYciD zfwa9lpv86VJ*PWwXoHKv^QPu&0_e8(DiqEgEio5#x~t7Ag{a-rWUg)B*Oqf6@sHNv zAW$A?zh;KO$6DhZfSzc#uY%`OEx<17Gi?^1zyWdR$6d2&XT@~&?_iLK>LGGF?0txO~`2h`f z_u7k;8R8D(D0Zm3%Q$E_!aa(4IMV%)t9PT^wGt6F+MQw$!v1#O91Bm~J+v~&$GBrz zwa2=xB!Zf+?^bZ;yU zHq+d_z6Zs0cli)_&Tt=(hUZMTuo+s+a?jxu+ids7!w@mYU12Ib=eocD5uWqh+w*|+ ze0Ri5K#Sbje?X=!cK=-hm`mLJJV{>a4&-7&EpzuB3&Q1Yg}sgy?hsBtt#rTRz;TuP z-ZVI?-IY@SbB+7jDuk_dH%fq_>)cIQ4cEJKHw5nu?zh?CxzWAlH+XJx&wK?Do89|4 zpx@%Ie+lH<-CuJ|y2E`i96Wcrp9Hv`w9CEW2vB#sud~73<9=TOfqUI)I7r*)uIK=? z-<`h^pabp{xgg@8JAosLLvHORcpr8jWfeW*9@q^iN8Qt|fXgv=&7}xC?tT}8uoLc7 zeIfp&yGnULr`+2(k~r;d(2nzOXWUEHfbhJ#@(4f|+y{>Uy6B$Ip3o(CBKvxm-DB9A zUU8RQ1ZA$eU$DDz&0R+T%60dzjRD#absFSxa#WV! znRgGKgFRz8@iN5oE)?WLJ*(O94fCvK-*mXAf)4^mdG>Av!DvtTZeafHslFWICwsbm z4hd5{pVOiRrh2+9fTZc3=y0%^;rX21?wOv@6~LL}X;T2uT#q9aQ095=vKuO)A$Fms!D0wp|lzg6S5|lSA;_>M7nFD91bl zYr;A1al8i86P|gTA3N!}*#VfRJT*Cga@sS&1?Y@t4?7QMJ$Y%v&Us4h0l|6CrMDos z;0X*a3GkxlN)*6L9!%Pxuz50YmidZjen(JT^)%4nT=Qhx1eEKZ%8jAL4bT3(h|^8a z=r@3FdBzO@-EB`<&OqGpxY-T8>-l~>w7=&$u^4psJ%<(p^B>Q&chKp9XZ|8U4?P_N zY@Hr?mT(R4u_s$oKu4^M&;SJrlaY^Mj{aRtWs)NsBE-au4qrF0l9Xc6!GCXD{z4 zu5|z9y~fGh-rnb9fZE5q?*-`ldUJ7!s-JffyL|nO0tbWdP`gcq1kPWvKU0u6GUd=C1{3xOWGWWQ2DP*Jwt1qtmec8|BT!&e~{i z8*G@6|MpfhOt?3t4&GzDk+Z>VtasBo@E+$a&IOV2-n2BD6TDYq5jN2~l5Nx^?}cID zGTA%0GPq3fPRtCrf1#5WkY{?Emj(SC@0Q$f z=6btiMc_PdFBJmkd-MDWZVS9QIOnj?8^We)k#{@C{)@e3@4$13SN#f1mwFFybhXU; z{%4>p_pbg4VJp1C0YEFgAp@bsDsN+IzuG&3d)$Yx1KwQOL3hv_I~L9%Z>v^t4tq1OZ9L+gcN>^Ty{QAe z0Uq=2$_A##y^k&-h9|rg20_u2-ZGp{IpvKX3%RGg)w><*eu-e zCT@q^o8A>ufO^ZjLq*_i?;qGeCg1TMc?amOcUUy!-t(rb0qDNB0ei^*c;|BF{(<*G zXUKi%9Z?+4Bk!cjko4G_uPacVc-Lu=@YLIot258MjmpCFx%a|IV7~B1)nT!G>76+e zfv>#B*t2-;9Z(b_Ngut1X-a$e2LA;%J$>7_BHqi_U@8dy z@_pz8%-%kU!;?O~c=ky8`sT9z>gT)4?ce=(`%D_sq?@yFxeN$3NXbtHXrDx z`mUdc7Ky&13ZUt}#*{R}_xd74%=E3|0DG3N1*a8f`!XoNoa<{+1Ss=-W&423d|#Qx zfEM{MX^D#Co5XplCB8PjA!)g9tmA=lLR#+48wddUGT3?w5;I_`!Wgc+0 z`9>B4o9(`PzW{ZI?^y_(oxWce!rA3p@CwduU$tA%X^(GgG0^Sx)&2nl`+Q+fA!)xa zek-5@zCvux4*IIlf*EX?OXZ+ zyzlr*W(Ue$-vLgz{^P4X8iWsg$Jph2=-YJ?D35$S7eJZEzAd!2PkdMJ!g=bO!yI|$ ztH>eVbKfTJA$;L$+zE6qeN9II<(02q56*18_Eq3&@EhOEXyCl{&8`NVcfM5u)PL{$ zeJ`93zWcSI+DG4e_Mm$Bi;V$hPk%WM;d}d4FU0rp7di>LzW&#fpjrU(*9h=}k&EEb*e=AP; zP4fTA>88p4g6!r`@m~vJ{hR7dqQVLLJ z`MVbf%4~lxE>_L)m)!_xu76Awpv?1c<|6fc|7rHV7x*W0Z}>ugf0q13{>JYBE%xW6 z5nAG3{~bJ+`dbZ#7J+4c+-i&3;ZNXBwiW(HO~GchzYu$cYy9g!gXda*p^6|}=kHh; z&U*iRP9$vbZ@K`KjsCpVz-^Pi`5cJY>>tqu5#8cHz`3Zcesv8nxA`Bizr54mY#*5I z^5?n@F1!5~7XWilz(1T5pL_jlSv&UmpT_`azyJ9j1Rn4oUjpZ#e-D=}5BcYF^7ycS z@M#bn@wZ`o&-mN5`X3x!cU)HG7uU+lEZ)8Mo|>hZrIlu;Sy`E7S^d(~GR>Ab(((n7 zEkjg>Y#Az`h@gOMQ9(c%f`DupB14vf?BDm~Kj(AKbJo4@z0Y&jMF`xrJ5BF)t=-n0 zV5ze!+5nb%yDAevgWVi6Zdaq7j#BX^JI(|QHQW8~Md-X|XKVceXp3Dh#d@uFE+vp? zv%5*fzIMB{ln>pv>p2Ll!!C{9kq35Oe*){o*RrtNWp|qr)o#00r4aA2o6tevp`C$7 zt9$M8s1VU-Hp2?c#1g?vb67jrOa@cD?UoamX&1O1r~$zcoPc ziQTt!9F5q8QaUzj_cHA_V|Jyqy^q@^(&W~J-Tp-YlXkCD^>)h6E*e_w87ryv<-jPQ zq~RcAGxa+h8F4Z2{tzRDHeDyiAJ^fiGb7(fWqB9Id#AwT%Glon%#HEKF=%sVbSwp{ z2P1|9%!{GF56qkK_aHcZ7~Fl(c7%bk9lRWj&iRl#%6N`u7LGBhyP^9yL%$g;evGem zSo3H2Gy?=M)@=q$AS0&=Zl7R$K=a)*f*20;CL89J&!oMFUJ zQ6`qLdIhjJ#t*&_h-c^#yVz!&Wwa*2{5i%)uL2}6j3*&@o*`cbHHnOL3c@cix(2Y8 z#OS6tA(=5BGsiP7GA8I^E-@_Yz?s7MvH-+X#=vKAEsarM4bIDql~f-~XLQcSS_b3J zO>ky1m{dj0Vz{q>YFjoV;bVA{!?-&ata*$)3SO=4ACj*E@mt}59}u6Iukl?FsNRS8BStq(usvqHNtK5ujHO(xjWA}|=7BoO zNFM-ojPVf|9 z9b$G-WZ=Yn{~G{j=FDKQxG;05F5t@iX$+ih%(HZwxihDaL#GEb?l-!nhnZ_C06dxg zw9k1lJLrY?W(H7G-iP@LrKU%in`smBW&ZFyz)@!V78pFn{9yv%IP=dFkn>}%r|N`1 zbC|O30Oqm@a0W8RD`5Tvvz_FEnEfWK1vC9E03pnmZB&*BWp1L#B8=(y6{z7%<#Dh^ zFdzCs=}D&19atpu>?~YN6!YQ*Xp3f^A*C_Qeri3RVxFc1>NImX7uXr*UdsPsnXjhd z=AC8Erx@ZK^QmTl1g4x)rt{2@HMpcirtbS^@%~+4hSQ)>5>vh!i^@FjSAXX%n~ZLWi#7e zgWEaGe5S%GuE}|!)nEB&!sJY3UH5(>wF+ZkmUI{aUbeA$eqq1NbbCwreD`(b~ zf_R(x$!EC03g)$$z$%%0-h+iZHf9U8462yZH$Znab1l_oYM47}!E={c@e8n8rt3Vg z)G>3YBU{g$l>yxi%z_mlHZnC$kh{lRnhY;mm|-+*-pX7;1&lVP3#DA`%s(mVxX)~$ zNv00w{(rIdfcXIm%riQfw&$J#>|(x4^|fy1kMvDL53}zF@H}L`umJMC%*30N#=GNUf>y1%;)}wpgrrudysHo?G6X=Aj?S&q9f}|3V{x>zT{%fiFJoM zy3Q=S@8GrzD}X*_aAnO628$bOE+zf$tmo)w_F#QU58GkZty{o6SuxSj>BahX7y{lb zXDZ+Lu(r5RS>gz5GgZQUSzW7u9c6ub6Fh#b{3KxhtW6H^JAhSw10ay~9d!dwurg_z z3}SU0hg>jgCOt_ZtUSumLRn5!_6=h_WdsOkEu;4*f)&rf^`2z?L+$KH){GpiMX|Q5 zr1&$MwIdYN7?y!r6{lGLdcwqMR>T!ZoM9cJMszG|4aG%qtidK=@vQIH0GwsDP$lg= z%f$)i6Ip@>5V*i9pui@Hl|Y5~WY#4!u#2qWNvvIB1*_mp3ajh`fK=AK94bqsv9`Vh zHJ4eoFK~m?S@pBQn!);u_WVrN1s>F7v6`X)vRN#8$8uN^u2{=uH7$qS6;|9On9pPN zz6@}c<+cY}uCWrg0lUuf7lJdNWv)yE6?}qMMtj`xh zu!OaK2|y{U^DlT&#@b8W&vMo-N-=MyDO(}3M!&7m>ND%N8v5>~Uc zw1d~M_I?HIF6&({$knn2zJ``M*35%&rk<6N4y=LY8i%z;8|%PMz$RA669_i5dMY4z zkJVBP-&$BKXJD7S_LSduu&O92e85^t>0BqP@Hd#~Vr5a_ z+0EKTQAZE!vtqD3WR=jf+RIvG2IymXJ_50yWjjH~_W-MX60C!)!5t8M#G0H5>@myp zZCv3H>vJPmhgo5dfjwc(3xoU!OFa`_jI#3ofKOwrd%pvWvpi_`nP3S%#o8pRI~W2} ztU1(+v1eCTLyH63Q-HOD>^%k;a%6vNqvpaPc8Vt!o!Hw7!RpNZDiJ&`>>LVnT-ke9 zK#d!FK9xG%+3VkizaH!bw5J?q*Pw(j!;}5puUPY9=TVi;n{B3S&WBw_y@?}iO9aGy z*$?O`Im%Yh?sJT7qbKM%`=@1;|M{^$aD_pC_NEwU3t}&z(c)nCFH}P5%Q+I6DNP+l&bIU-bH(Wbg6@OC(#E0;N&xxgh}2?Aa-BCWfuoLD?zxuY2Ir zX|~Tl&~k?T_+$7R%ijMhecuqrK9>w_@$4?@a-C&={sRQhu`}wSG=UxS4Fu1#w^PcM z$o_W`bYEZ}4F_iuJBg-$lG*FFL+M3!_z1LIVn4kb22%S7I-9fE$4^2chy9EcST4Jl;+re%^As86v2V~e zd6oV3^I*BgzD2FN>ulE#pe>(W@?UVset#FR8|=^*AW+Euhyv{*_P!Cw6|;YA1Gvf7 zQJj5?-5di8wi0&Smq1I|PiTKFV?Qc|d^!7ztq{D;cA{B^3ij5sz$)2=r*MUL*qOe- zs@QQfZBfncy$!hV7H0= zMgruTZR{WD3&(rxHOC;>!ah5W#a8y66v(%+8$X1l9=0(K;34}d`n7x6vnWCyU_YD& z&O!D+G-3CM-LM(j9@>uVS_zh6b_cz2PuQjT03&P{f3S?Qt53s=F*buz#BsKb z@e<$!+e-j7lWeC=5S(JSnxWgCQ#~J;0|$S93$F}ELZw|t&Q5ae5a;X}D0SlSL=bo8 z?4xMZjpGyw;LaJO%D)F^ODVu%&Kf;fJUI*TVc85XPC6Yf-kcBUk@MjU+G3&f2dJn=mC&QpKg2Sf+zp{6=FI1;o`balPUk%QeS;Y{ILdyYg`9oVGb`duqeG^c zld%-Uo17)|MZ_)qu)s<<|ICDZDW@+BoMjvhowVhgP2pg<&AGP|<|{aiBfu&-O;pFf z!||nzpo)`G3Gr&q3mjZa4d*r&EO$BYK7uk^Ek{k=-Ug28D`;!vq+|kX;_RR~zh;hx zBENf_3zWIFa2C=I(aO1(2$nX^Im+GJISappn){qDvj93cK{c@Zfa646j84v?qhRUc zBvI40oAY%iySCz>+<; zej&6ta9=$MaFDy>M`&^6+Ty0e#361x)diin&34e{%r#Kp>B5zGV9k{~cN>Uq+!=Gh z;?7<3JG6Olzo>%w!`xOYI6b+=bWnS7*`rYE%?!a>u!S|Fy;ZxI-Oa_2<656>0*wyM>Ss8#&APw z08Vke94Y^c#x7vWkm+`a$jo$me2Ki1!@YoU6W9AgInbX6UE#W+o9$rcg-NcE$)Hc5Gdz{ z3t{3mH)jj53hpA>i7UC+X?wrJo!pBHtm0;T0-cTA?~Z`8iTf=5_RZW|g_Qr@)@qXa&6azCcVK^OOYJ_NeC z^C`#c;ePocls)9WNd>iDuHVl9ecVy1hW2xReT=mMZn7hk4RU3X0JcZmpjz-e=Dwo9 zH4Sm=o`%6;?#Gn>J>mLNEo+3Ebqv@jcO`8NW87;B2#j-Clr&6mV?2RPa#zuhKE-W) z21I+_BdUZu@a~Mj#6jMJi*VGDmq7{1A>MKi2srWHI|`z+jW_rRx?Ol4KSH-FZ~FJ( zapPTk3Pg9_ZXd9E@b*%%@Gx%$A8VdGQ$2te?|MIUd-MG7z>*K|J^EVZ2v0h56{ts9% z&*}pZ!Yd$cp}eiLp(c#C@-DD&-XEPXAHjP)3&fMWm??M>$@@G90#Urb-vvuF?^q0o zF}wp*J3GbugzC$udAq4Pe}?z82$vMg>$1H8i8$U1v?s;$Jn3OO%agwepU&|{`qOZ!wBkL!lD%RKvH ztfliltpt|AW6?-nCeP9dLs`5lA5;G?oA&}uVCC>$qbfx%Z}K5nukc#)U?Pu~cL!@% zd377Wd5z~e2$t)-qln~Yc<<3qQqBw81&Q0dnhGpd@TSqdtmM5%Pxl?(JV(e^ z@t)97O*OBMe5&F7LsP;w`5H zw}tocG?caSCVgluq>YzOec^VVBZVvXc@~;i=-}PI1?&Ouk04m;8M<2&{GU z(#mo7dU#7`13ctS!@n85yzALu>ElIGA+Mh|mx>$%Jki$>ALP~1X9idv^R`mj zI>gJTsLnRbn@2zM6J8T-(<8i(e*txr_xBorF<#RzkRRv$`x-80f>%5RrIWn160A+} zlva3X&lk}jk85B}#HKt0UgK8XwUcx-V3e1~dK`*Wk|2VxPNBHl(4&ckz zQpk6dzw#BV9pfLT(T(H$?-t++{rJy(3G@E^t(o8q;Gc7bp+Nq$Z{WoVzWNr3L42Es zGvtH$@gYD%_&-zf5Xv{Yz?m@qo!uaY^Ce3_jNm)|HaJb$Yi+7kKgU&H+i{8d9>xyZjkb*fAJ)_8yv{?ZbtN#!$^K_HFab03_S`ESwQ zna($6gC&E%i|P@X{KXoGXYrd-U_P7ArCc_L|Jj?6%jM7e+6GHk_(lgfoX5|gO5Rm| zJEc|E_!$YnuJb>p(?6fjrl6;Qzjht8-Qb^(1+kD{V}W=PKb$`0D(0&^v38UH*Jr?P z@mEsari7pHHdspe8(#rd#(%RLYvueXcPP8fFL?uhUuZ@J|D|;BRPujkL+KssEXPgIhgztF}=12MSHp1^QzPt%woPXd22u|?x zUxiPT{3;qWnBs?j3jupU8)dN$f}jKt$=qIe{a|B?v;6 zz|eWYLt7I}Bnk|-q2_{MklxWGLDh2r$pQx&VZ109$b~bP1QGv(M4I3uD)?L$uqh%* z7ZlTcZ-yZ9HcVs+xSznoEP)^y%CZG7mjdJnw$isnxdJV{F;@icbYABPzNAp`s^AkV zoqyK^|2zPCUC=!RkT3XXAp{EqP03ihA^77y3>FHkrC2KxI99=6vEcVt!E#gZI1vVK z34SlcT8UtYipQmbFMb2DOz;Bj7v+NGG@y4|Fq2xM6@r0ih*t`h&>Mb7u(OKd&nm(G zXTeh~uvS8_MsSse5bg@Tqo27}u#d(->jY_(9n}jyquNe`V8tR}je=hifHevJps9yu zfn@^Vo?!h8(9$C4*Z`JR!L%Jv-6n{mguY$iLKWKkf;A4%*&&eTQ~uW_c#TRe-GX`4 zOz9CQ--nuqg6}Dt>=jh10r~{JM{pDR1#6#ywgEvl{b+*%b{*6_5@b<9@3Fwj1O-mhHE)|x{4-d6gkjVGI3kQV0!zL^25rbk zg_>mm$Ape_{v8)?tptmoaKS&2_ZRM?j!=MbEd|!g8o^6SXbFgbQge2^Y%jAs!*LP13%8QplqhFH$&K3=kze8iU1XVQdKu#t0|O z0H=hKz2H18d}A#Po)PXY0~Ranp}ugOaF!dC#tVJaSUW3hplt4(a2l0w5`@3}jf*%h z3|b2>5`{JUfL#!t3xYFALU-F47)%xpM}qaDFnJY-xE*Rzg%h+rrwJK! zfL#`TMqZ=~uZ==3Lug06iA-VhQRvPRKB0y6Rocq*M!eMWdrMVVH(xt^MwkkR}~2RzQ*DW;aqxz3WYmqj`OCFUj*~Fgy$|} ztwdP<20*FMK$&8h@NX$N%Y`4xfZZ1EY6Mmxe3M4uD}}W;A$~_Fq;^l0FrVV0YTYCVWQ@V!QCzyU=o9$TdK`LpX~bqz6K8Ce}KITB_M~33HJ( z+h%kNCr*I1M>vm8%!k5w>bmv{dsjoEPv}I6Zolw1JFE=|JE#aXD4cGArANYLlrlXQ z_A0?SBwV~6S2!%3tN?f-45iM@h>$}$>8SA79M~Nbdc6Y9aiRS=tW5|bC>yj*3SB7c zo)Ri3&ps&HOs|8Zh;t0YL!vRdQBI~KPF+#Mf3|L!LFj&-$A#VDE2Dk+(mDo znKHveKOoxcu~vSUle`@CIUoN6u1V8UZCgVglM-tJPZ;=(901lVpKy*h-fnp zETN*O>2wJb{m20pF8Yy15F4!Zf zdO~r^Y0*|4%%2gR{}PsBMZZvb5+{0NB|yB0-wT$rqOG%_^qgpS1+*lHst3V&UX(;V zjYQGhkD%;=D25)7B+)+Fmy<=y?Xh-Il(Gz*mqbN2N{>=RcW=U}R8c5RgQki8P6x;k zi97%@MI)5HW{I{?VLDr+C<2xviu8wTxuOM>SX>bmeglvv60HWyRS|nXz%|h+x|P>O zW3vJBMP-E`7Knza@_0k!@(nY&f!?uh!S!%`)RjE8u&X!vV@8j(Gf zEbfY4qmRpLMeDzS&N@*_0Of!6q9A(88bnPWVzE&a^*-dAM5$E3Y!=C~Ab3v{M{jzI z=*QQ<(kdFK#Jo-PjWj$F z-7SOsh$xD(g;CMaeu$5WzTX9GT$D+jnF-M*>aa|T{#XStCE^^0fW7#~Kk?f+h)31~ zJ1Bm0KQNo4_+$c191?G%I*60_+g(_67TO%7I(3U40?!P zp#1N!cmai|p5lYFlX{8!TmZbqfh)n{BmRXNvq!{RsLSLl?xelssJQ z^9vIv)A&rdc#5hi5#mu7U?;_`J77Liyo0u@DDf>F9E}z~$%ch<;zANn5ZgKy0G=23 zP+=fZ97_q@1+nEGK$2MbUzJa+rk(hrI7b1ym&Ehv07?F+x0-PiGQ`Iz6v-3|Xc93?tcd}ZEmqV6%Mo`U29_({ZgYpHSH!V&g5-&p(WPA# z|3tmTYvPjSuzOwXKz)FGF>fU}3&h9i6u%*UGXrW0#U3+2ED~>|C%0IZc)P*rD8c_JjrT{=O}!&0$&WJpBF+*MMNlr1?r^ZUN@nhc z1vg1DeIns5=@o+LA^D49aob_ZYI=4&B`tIcdr870pvGG=?I~FDmHcoYJVzzJ^f5q)#QGFiLM8JkbqSNWm%^uT zNp%Z|5fc7lcyZDuSxPPQNXe}Ln2(ag(&r}8lJ(TFh>`qGq1P$NM@oRxlJAwc-Df1f zZ-bgxN$m6BjFb4i2+nv3zXV#&N={ICbxty+!6hX~I3c)}^O8U50uv=(+kjn=w3Gr% zl6*_QaJ zQGd1sf9Cw8!z zkT}~?!Fof&Z2(W9 z@{$sAosz)6;9-}<-xb%}Eg8=S)+0GF24xQ=7iR+WN~*mf*C$yjrv6{Q9;OqHfX^YzVqbU8$YmA&sM(cUYRb5tyg6oeFwh(u_!OdP_sy zK=hHWqhR=mbgKz#zS7!_5I-(;-UOX~(tXs7wE0U94?<0V^qq1T43tVJ1vw#Yr~Xus zbS6EW!P3{afEXg3@fIXPrM}O=M3}UIMyJB1E!5zNkiNJ8x=%{$sLmBB{gm3JQPOrU zK(w^zIzWuHfKusGQZdC4r=^QFLHvwOdLSQYthBlqf^pK!w_qt=T0`g9S?M2q5YI{b zLtrpLI$Q;b3sPPTh)L2Q3OP zE};14v2qYR_ReAHCzKLDkuqO}+=x{F5_}q!Zg~a*W70dc_l`^Vo`;1A=~l|$ zCZ(P)+Q2geX$mZ+==Xu%cZ{bs- z>^w!W7i5nefF;R}HvuHe8V`baQRcw{xFp+7)1WD`U9_d7%KYi5vZcwCzkv0!Y}uy( znX)6fpk~R2Jpi(0+gCs$N7hBTORnrRP4QfjeLe{+Pj(;^mwiT(?rotn=CvR)LXJBVl9zLX=1xn zR(A$GWwK>bU=^|kJ+8h|M*nH>j61THjo_@3Inp*;E$gSQO^q!17&!0BI=2CpWZ|8_9?Se~&jAj}cFY49mTelr6+V$A) zAWq2U{eY{Ol+C1??v(6YKP=hHvll|nL7qut5(niL+6o=zrV|i2BwyqX;3WUC1_I9V zo10+QMIK9gr>p$aGAMJC&$~}sxVwCa3cVh3h9k5cmY2Q{9#8rCXqfPkzkdU3N951Y zKIJQ4vIA<4%J)-HdrZER>>igdPXwo*{Lds{{_;WU^atSo`T`ax-}W0gPsqhjpfgCW zorASt`TJsM36anLa@u>?(B)jLf#;;0Hw9v(yd)DWQSx^v z1d5iM#^Gp;e4N7AQ}Xrx`-|}14kof0tgI6#0p{0IBjLFTymlWzrhL>!Rmm)QJAL_+E&q&e$x|1@e6@VZuP{*~ zucwyEUHPWhAy+G(PW9zF`SWH7)XP`VM&2Mln~SwZ`LFu{n&dxyg|%jR@KUVZlm8nC z@fP``a{8ZYTIIVAz_&KJ=zUyhyZq?_EZ&zlQE=BG*HC!$K;B6o(satdrr^Cx?nO$w z<*S|GT94eb2jUOqRa8CdmAeIlrB5ES8vgdn|8)g;Bu|O~cr1UH3cN$|LOM8x z2X3Co|MvsX5qZc8*d3K`oPzwATv7rsF8A^Un2`5Q$J(UamkBjfa!mt(z2duJ5FHeo z=|?}P7x|2(b7nexu*_sA9$ISUaY8 zp$Np|iWO53@KdDx1#y2x-|x720gBnH0Rk2CDJ(jns9Xn@AjPUY2n5>{i@U)ZqWE2o ziwRZiqU#M)9O(x!Tyc3jBq9`FEP$nxibZL_A{A3~XJZt*a=>{?aaID((~7^TbZ|z& zrfoS^!Tl5haf-GC*o{{d(@A$$vGiYH=M?woola0VB>o5fK6)Ku4DNsyME$N1$g7U^f#arvaQlxmAV&YhL&>0yE_1GEAr+;phEHcE0oDsDuOA}tyVmj4~J_MQ}ck`ReVZmT&-fX z724_)FVY!Ruh5=^i3Y_{%4ZrCo5#V~q&Sug&Su4KI-Kq)eDZ;{D8lGt&sN2D8s%$K zgpEO)J(_4^eEQS2Q3d376t6~D!!rgqEE4P z3t0LULDa7tPy~DiM+X&l2jR>k1&bQ)j}=04bV%{fZkQid#M9n6s>t3ByJL!N)bSoy z%$Wo62}M6bm>H9bi5rwjOewl)5Yk>5a09Fk%EMH5J*Z^HLf%n%lnd5F%HH1~@1)#7 zt#VhTj#^i4%Grf5@2(u6P|rhYp$zk|a`w+y^HlDpaV#%oOdXu@R_+}E@KF}g*vt{- zmOHTEtMvO6nC+;tYa>uU<(?o2`YSJ_K`=m>upCMQmG<-`oKQY90W3&4cob{F%8itm zhbUduP#UWIrX80Zq0Br5?4+_c1}u@vhA%;kQsz_g9If2{0OB#qmuEumlyay5Yp0bv zDbPJ*Q(jnu#U$lmA;2Z&ddhxNlt0sKOsZ0O9@^5BJCwNk%gSGMAf_wLu~3?!O!xzC zXDYudgxgt4wgBZN?AyuM6EKh0iaH4XQL8Ly>j0O zEHx-M6yTZ~l`E(e-K2Dqz|&^s)CX9*r}U<$yG5C$2iB_mMT)gHrje_<$?0< z2f#X&@6yB8rF=j|_HL#3S`d4b->ije50$ehm+e)0(U0AyOq9|4*RTA{AG#ka%UIwU zQhxX%B!-nG-@wHu%0UlcBg*3W0HewY%8n+KXJ}G%QaSS`v`r~5)3Cn1>Zuj5>!8|F z2Hgi$`{F@#QhmD|s-0CIJi(faYVl);yQ)Qn4N-GDLN%T8ijyi2e7S9#5vej>#!ZM)@u(DiO0|Z9h|?;^N|-pK zs(S}(v8v#BcoC<1m&TjUs-k`eIH$Tqz1sxUXVgDGuiE$-1QJyq0{|CPyFEcnQoUe; zvWu$qyC8l^HJy^26qWNv5K~o}^#HasRa*~OFRPewP@19oXAul$sxD5#;VjkMFlftG z?WABhN9Aq@HMyz~8hW^*dXs*NJe9B?Ygbj7Cg{GV`ce&neAQbNw-%_@(NO0NRU*B< zMJgVB?^LYXaSN(%s`mT@Ww&gqWzCQ;QJwLDwo=tqDzBHR%+A2dRm@{xtx$2+gQZfn zi#GH-s+MbDsaDOV?njL(hC;8qD*P2!Jl3ib0|e?+%fEwoy()`(8jUI=Wu{H4H^)J2 zR_&vdrA1Xe9p+nAwiQpo#WvN|DX3{z-53MUeN_NOg&nH5*MiukTD2LLx>fsHA=smO z`VqiG)u)pHy((u%nCMe^Q1Q24<+l=GK-E12;-Km+>is-YEuq-|u}VhI+>k1rD#F7m z2PqtVqS|7k9_ol{g6h5Fs+II@(uC^!Q&^l--KXbbN>vyIrS@vyaHw%mmr@*gP(8I5 zY8=&t^x_>-7tki;q@Ij`GG}$!B3y)v`fuuuyQ)(tvUXEPoQ4H=^)>@A5A`1ulpa=Z zJ#K?GPjwQ-wqELul&pBGcV7b0N8LrS;!(BzC`=qvr+xx$$JJ7bRQ=S2bi(_q+bORI zP_Lw(WT3j(334aYZc2C`qz-e3&S3S5GH3}=ds4+CR6Tb(IK$M7DAEj9vp=UyK0>Xg zvc^gE)BB(;Qhg*CR}rP2`x?|lt6lD6Ek-@>5DcDDXKer$s~(ktB~JYX-I93qStsZ| ztNw8%Sk9?)DEmxM2Rne}yt<#loJ93b%8D+ib7lZbQiuBhOI9zqLhs*2_1v?dUQ)Xh zL3fJ!2A#C2YQ;MsrmLT&cp*dGv=tyzJ!3OWWU1E$Kt5Y-m;n!S)S*i7!C*^1O#UIHvuPf=cTQ=Je4 zo?Gf`+aXb+-trK{QZ=g)mdeyQ^ruV8)e?HSZmUmrgR?^YDiy{m)jS$NzN7y3TM(<% z-vmOgTKx~5v^DB+%1rO7i{l_ys}59wSf}PZ2f2EiTJkPjY*2sw9wZvol}`Yg)D2W; zZdR|L%KYvFQoB(S+pW%A z1Z6$yPl5m*sxN*B@m_To4RZ9UIGE4e59V)3gTn+_opE^ zq?Xn}VpttohD&>*mN!7nh&ppNu3}VOxD>=O^#d9P9ak5}LtsK}`xnY4)&J7O*p&K* z8m!rC+>)WiQS&bi0w2;0QO(*(Be6As$5|7d0pOw;)HRyQX{m)^kfv%L+z-}VryL?oGenVYxaNbuAQ7QyI1dvi zHR2@zk(%Wu2t;Y7Erxis#&aP+jK6E8_dxEnrjV}XjAj|t<*Gl0llNiy9rRGd7Gvqt2Gr>SgXmYbn)A0^KttNj2=Ib<722w~G#|t^%`O_jZP$dp4T1X_C4G(1Vbcs% zL-2uS|3R>JYIJmBc4?N-9@?$R*aL$-8s_U@d8qlCa=c#6iM?3s({wzKYZ}ySqj8}} znndcJJk}ie8v;X`=+D79tP!mTc%q4Y8ahWb4VwW*HP1AIWlZB|0XD9&sV~Eu2?zpA zYW@{t(Lw9?F9Z*2*YRP=QG1#Kszcfw8oG7TM$>4Vvo^gQn2WaHF9^75eW(oSrsYwj z>#qIlAp|_M(|sX+So;nY%{;Xsp8|Mkf8l}Xt^G*`aUbmon=hzGv}ePi)K~lbPq2Gb ztDvXsn0A!P3&*u5G64LvYiIz|U)z`i`2g*99V`WEAKrn$2`z;2{%99c(h#hjPg`M# zb|Yooq1t|`)rDz2KZJO=_Bs{!BeYqR(w@{V|B3qVk=m&r!5XE#N5%GNt$YdOW3-o( zpzW0Qg&zQ7wJRyyh|^A|#!$TW=g%Q`Ry(T{oaeM(+ya)M^&1B`uMOLTdy%M>{tBHJ zw2F^_C20qr1!uBWGYjGuwXQkfyrk`U@xMQ?ujQVH-Bj(7O#o?H`xhZ`S-Wo`@0RvrF?dR}i>CvWYWYXuTeUSln^rgk)^=?oZLIgT6EA|NLtFO@EOlz1q1pQ`?M@Z2 zZtZ+}Rr<7<)D-O3E`AD*4rt4AAUCLWeIMYF_A14_!`fLD@ZyQKY&lp)wCR)qjcTud zgS9d3b1I0B+q7QvjlzUBTL&f6CG^bs=}H2j+h6w=#o__FMjGM?)J^z7Tad2f1h8OT z_*Q5O(cwP~!?UjYXe&6wbPN9LvFX-&Vl7g)rU)QP_tj$PjMja57WQIv&&&tsDc!5K z`OtP+_a?QsVs$sEARea^SODU6<8%U?)xD_1WuMbcdxA?#(DhNL;k>R>21gThW7|Ny zpsS)GxFp>tNdU>Zv43FcqV6rKjb74Ca-lj!$2bKnRkwN_ur%Gj{?K_@7gl8hOxMlx zfSL@Q{&j#%-JUJDm@J(S7i-zNIaXjfx?rk<7`&}JG#$hW9rs;acBO9TVhG&Pja+~iRl4P+G)Z5rb6*3V8r_m* zkhrT`{6Fy2>R4sqsnfMH0qS+Xut03ky-*L(sC$MgA5FRyZ^Kfv&ch$N@99e`li+Uv(0Ky}c|W&#}4 zI~9QFsAp4=@sNJ0JBUvDg%l$?>s1tEy6ESGf#|A_Du)R-{dsD6x$D^)5IywC)JQ(8 z&!O($#CfrU%@ zzc+%IqQ8UOV@9g}Wm^Pbnm(HYa9LmW1R!01^c`5r(8n;LCR4wvAA(u>i1*-3w*LFu zz;g5}J_k##-f|Pz75#mxMdj(6!hv1Yzy1RZUehbcQh|OSo#i+5w_O1W^`F9H2WilKNB{F{&{m}nr0}^~zbzM_ zMqf&S=Ux4Jx}~-H(_cfNPJdJe&U(G67{mtsUN)R*)IVPXVv|1M3gnvgPFmcqd-|)( z=>2QaucE4RtNx>}vDl`6V;&aU^^LSm-`Cf_4`({`?|uW~1HB{-oSph&O1Zl9<%L-5 z)_<)5XODjUFL36eK12x6tCuH2S)cwo3H0kPsX!diw}nD(P~WiuK0VUkZlg)2$NFuw z&kgC#G{rWo=gok&Cwez`2#)9z=xrR;=Wd4ln0^L53FG?hG*CaGKeh`jlltT=(cs4e9^D?jgf{deNN>w+{ewHf;J4ayA#kC-m{9tD)2n zz|9cyFT8L!>>Gt855t!Ns5xxdcnP{a4KY(7dKq@m>Edm$g@EW|xNQ$`#4sxlz}GOB z%1%cOe2UDE8P-!1<+!1z1w=nXDb?lt4NL#TT7cmyJ(htsL;Vdbo-i!@19pQ9^QhGj zY}iI|QHWtp0bC3i`jk=dJ*pG_=rcXr$rUCU8a>o}@upv?206 zD2p*9rr>%{8Gia6R~BpNx&$q8hWpfGi#P11b11=Jd&B}fZ#Y03MxsG_7}y2FbS2Cu z8D`SpSh7L;E7mR=Omq`28T@8qEyeJ{vjC}v_&yNR4EO0Fziimh2rS+3KdK&O7$zK` zEYr~L2#{siQ-if^!x=YVIfjE2t>hXW+A=`BVsPIHkY`BefO_2!O?yhd!M+V93JhTk zn7?6|PNl;_!yK9v8QN(T*JQ=RIOVOKuDW5e7&crj$)*<)?QaB~N|A2k%wb1`OcpqkLQVVv^% z3B#X8nxvRCq*H`2W%%hlsP@KWik2LV+aloUL1UOJFh`^3SHKP#r~LxmPR3QyAUYd` zs{mY#U(rGDYTWbzEV&uSH^Gv-@$EI>^f1Ogz}jKsOHmN_G(LS6hP;f<6wr7Z57t54 z=3`tCi@Scr_`xXTeT{og0UR}6cmq7gjJZ@7@HaN|0RoJdsB0T&+*5lxi8iWeONy}>=g^*X z%E&(kZKsWfS~zvaxRHXbSmX64Sc@~xYQ;6h8!!F@`LjkX_0P{4-QEW=!8o%D+RhvE zXlqF{zDL#W3&!_pW--a=aR_#kjg}T%_C=%aWyoDJs;P#Yf-8e~s?qjRDomsq_kRO$ z+4wspVClx|lpJOlCt{!`)3|N|O0$gfxscB`jzvIQj&TY71(ICj&=`nUjP6^2VdLr#&oIzT{k{U&r`l}a|MV6#$7qkdBb?63&cWWt&P&=BBNp{)D#=1Ojx{W z{EbfWTgF*N*ex+$O9HXf$f2;V%=izTAmzq{GJxC0MZr*7VccoPTBWh|1(?5M+;tV= zRYpfDOjjFMtAW)Rv+0ewYjnH_P-`5a53}lwmp9YQRK1Z&dqaaUgXV%8jf1zL=AKdR z-`D*#*LLn5u(TU*{{)u%#vCe|cNismq2__{bxMRfjSJ}NyNp+8#MlQ6gnRn%jqzFYz(3*-H@?{d>S?$6hQ8Yao`|`BgW@# zYau^s^r9(?G2>wxVi-53z6^sCMhOM~lSc0IP%~vr{27AwrV(o2JDBq9Vep{o-z&fz zP1{$2<&f!A3j~}@Us71*YScQCS$N@X%A)$3kEuEyEJsY6D3kCtJw>PJQBy)E>>e}CPXzI}$@e>G z^E0ibC(z&YCp{1WCM)&015MImxOT$iND*$3>En+8f=$&2U?Ifx(eJcDg_;Hq!)}-< zv<2G2O@}J67-2d^O~sR@#n}LnrWLx0SD-gF>U+@&YUvEM#11|)9g`z zGo}lag~poVDJqOJ9b5u~@g^yXxiik1zHNmw=S+tdU@gHEio(Bb#(C2kEes}_?3mz5 zHg(V*deL;(3wAG=l4$xg#qEO>GW}0%T zdzoY61cR7sI!&kd6_f8Y7|b)3ZH2&9Q&c&?HIslEtG4T=%}2qLZ^Hj+g%`+FNzu*? z(*%{d3r*#e4HlX5v`|`XdgDz<+%)yk;daY3Oi6HwsdGByN=>uh1WTD|_(gyU)1h@B zR+`Ew)w*NaO(#y3$(jMVYEy0~SZYjHD6zh4GiiTnp{?0eZ3TAEloAclVycmYrPXxE7g(EV4HbGiOuH^X*#pzyF@R1} zJbg{jWr|z{pSn$A3chlK~sVS zYmZF*yJ6z7>CE7;(A-J^k)!$E9oRi& zE;3`y$^7?D5S`68sd3<9ZnIIO>}u}*14`Y@KE43%W^c+}Jj`#=+F^4Y4HI~p=e!I{ zUglhSx4q3wd)x~j^C>zxj+m!YvB1~dG8bMPH_I}C`I(a`%l9{%s6`lHzW+AF1I_p2 zAaKI`=2PGdGA}Ks03q1?>xe0Ge^^` zNP>Cw4-}xEHwRKFEYV!#1HlXCd$fHdnRk1@V6yo$23Rkef8Gg}OXgYLSW7Wqp&dNc z{2Lt-X=ZzRZ!eph$$Ywb!&?AZ=A-*yFx%`>fwdg-D^$JBHUGN|a#zgvwgcpu_oHWJ zn{m~g?hDpy=D&tPy>9NOX^DLEMryYfn9a0_-7qiwAG|0u7aoH9Mdptwk|{RN7=wp5 z&A|ik;+8ph0oF>)|EmSD+{~lu?`?DFXHZ>X?xk$5(p*Bv=Ne7S<}PowP*J6kMd`YkC`_EWdsa6Xz_?P(+bvxlM=61nS;NsH>226O1a%l%lJC_)clqug<`!D%Vz3ylv*6pz*A<4qaUx_GPDNfZ(DRd zV5zXYdlGAvmS4@l?pO{+Lur*IlG4v=%i9zM*I0g}_WxbW+cYRpYgv*CFX}9QRKl*e zT=^H`4VER}fwR$K#1Df%b!54)1Glur;vEmxR?9af0Bx3#-{5z*Qb`4NlHHh3{=xwjpDk6Dyd zvm3YUWkO)Wa+w;Wla}aK5T`7!MnlftDy8<4gVikw;GlKz1pr6uTIz5dvc7T?n3I)7 zg>+||b)pbd7wecSsIJyGc%Zsj>q6k$Ve9);1M{@z&%U_MqW&5a(h z3aD=5Ykm1oa2~b(O25`I>pQ*>KWWmw}x(jT!3}<1hfQN|3^3Pgw?i~ zTCqXa%-k-$7GiyaMz%t&Ge~Ke_3ej{2)DY>>mOllQiA2AbrFRdk=D19pft)F zO~GZfbuR@UG1dnZb)2%kF#@^MRs*G4XRKO!;bW~*x`%OA2TH8tt@Sn-1) zS@X&71nX|v49;5*PzaP{T|%A4WUId;I4@c!qyVYbx2{1T&HCLhaP+eEUD`V{twm?C zmSq+1gLt-e!v?TivD#7PFV8wgquE!jpV2%=zE$x6YX#P6PIUg=um;bCQ-xMh3RsJ* zc5i{T*eZ+z&rR#jg^;*qb!r2##CnNBs8Z`+^vsl58H*rSZhf6{=-bu+Z>&{VMO473 zw2o1E?T+<2J!Mtam2;WOkZ-Vh zP}RB7TA2yfChPBXVm4dnD&fUFt8P2iTCDr2G}~%@@eE9~S-q$u)NV~E0l05nlm;!G z)_}Q)@0UTymt%9Y4vv*KE&~f%#A&@&X zyEqNXoM!WBvvr=mltKxY*>7HiGMnpcwhXA->}#hW?>_r@C*(b5KSx8Bhi6yQ5$id- zO$T|e*>CVc^q$>GcgAP-&D&9^9t|}uGfgYg zEN$7c)UbO+QzAD<0DsZ)=kOFDT1r*&KvDI_070U>6S(@*qMhBa5-j?)3ywkzqAi17||CFAYKsd`~Z5fB8QzIUK0I}MsVXrulay@S@a22q7y`hzt|8>6n#NINs>r9 z1ZuLV^c<|Eh>~{zq>4__2`o)CLrIZR zh+2esqL7baI$snv4WK||{0(@8qHkM)6^UZ#NKh=|7%szhiHJqVx+|jZsh3kK`ZfX` zH$)wDU~U&x(gxNc`gJ{`=oI}!Ewe7ss!)h@i!Sa3)+3rX0xP|ui|Mf4C#t5|n46*# z#Zd1T?Wsdd1EOyaLUK@aiH>?hqF3g${|$@6==~cJIYz zj>w6MBV(c~zd_`#Xq>{oC;EvG-hGkyZ(!r1RbpTdL^l0!_)wHYpEx`c^*#djSd>eB z!wJzvnr3+-T0t{YlcFv$oj;$7{@nymQzHEnMDa{yP6x>6qEoCp;3HypCpdHxzt0D77UxqZ*G2qs46Ga#pHBeMRV<-TH;;*5&|BdqPW1)PUF_rv z%tL(lOPKZ)&!Q^1!Arb*8#KJdm%1QxT)g~4D4r0PeFUbDc+E37JSl$Z1fH+BXD#CP z6Px`4;wdqoc3OY&9BPsUh&%5e`Y)Q8(RP6R8 zcxS{@#{j|%VgVhW!^QoVpco-erqno6Tt5VdXT|sEX*nlO%>*$@{41TZqQ$#XVC}rv zZ##%FVwYa%T@ZgnR~RcEJdLm~iu35Q49NuX(Rtt{ ziVeTT;btU>nN;0R7SH|*AVpkn1&vhk#U5N?nz)H_%XD#>5{en(EA-xHis#b_J4^iW zZ@7wV@gZ8ga>QFxppYvrrYQ2n_0OP?FW&MQA}kP_tpg|&E0-YpB5_M2K(RR4KqGx6 z;?rM&c|~mT8iFbnFQD^WnK*@-WaZ-YRq%9Ge98oVE5wl=z$(SV)DOER{+q@ms>DBf z!CJL=EA=vK#HAYnYQ_6DL!?gJCI_e&TjW5pLHvj^f=2PX)Us|8FAb*SezRD+0%(i4 zmJYS8;tU_iw29x31n;_d@(mDgh_f1TP3>aimB2d0ag-!=ik;#SOqcl7=aB3cf4u{G zJ>oiBIP4V%s(|&0tCj=1DPD02ccx!l&4c8CIFYJWgJO$M>7P0o5=T%~W?0-wrR;m+ zgmciiFMfC%F2=<^R04k>zHbchP`r}X&_`lpIvPI~H_)ayAzp0@y(eNpEWo6g83yoF z+(3otDe*dcT-h`68ZS6}E{>r>+zatzIt08D7tNso^&^twTYx%A?h9blSyG-4;365M zW4o)wA{zR~B&lQ2cazkJ;m|{3ausGgB}>+V=p|XZ6Tn*%@;M}rO9B}HK9X79xX_c5 ziEr3e~$?vNn6ED$Ix_((=N=Neq$(uzWCQ77~CnQOJi$cK3 zlHT_qk|KFb&tt0O*-D6{N#@Z!ak^xC9fHY_tfVGNro?C)M6x75Ql^+K>EDd#b0l+T z0n3#bv0*GvVzds#e2HNn9SaL28drcq$=E_LizHbOV69m4&)bkGku2E^VyWcNhrr4t z*_3dWOU75g+EvN74Unvm%yNc$rR3!oi13=^YwA?gNOtfMOs#~s7rZ*jntws8m%L8T zT7x9;Q$*M(u`48|3)Q0$YAD{xBml!R9qZg8$KS1H7WXD|k zQxC5sAH)MaA|2cUeJ824A24UB4YiV7q%Q8zI4X@ej?i4Ca|2=fnDo#Xcy7{4D(JaO zov8TbA$_g^@RWX%01+>#%`b@1TlxVN5{^qFzXo8w}~3#G|_L9$57-3{Bt(meX@N~Be9!sr$0oPz+R zQZITb%cO(UP%4*}{sg_N(n=a01QaBF%FKXq7IX17e%h z+zlevrLVDI^M*8@w%>MXJSBDA()9*f8GEEYw9)rU)ip5MC-t!cxGDYhCW7gg=9d5) zklrwYOr`8`=?FFV9!N83Wqc^za|Fak(#cZDJeJPNgY60FpVaeu zB6X*R#iaBXs)#+84(eg;g|y8A#Fx^(We|BK6>fl)BeGvb5OJ2twXotMduK7M9F>*s z0Ol&Y`v})^Os1Gm^-njM-!P~ivTPcD@Ra?&5}22)auhP&vMpfEob`hg;3Cq!@`DeIjN7w2S8Y1S)B<{b%3@xFEap38ILVS&E?-Cp+{pJYABxCqpD&md?NpN|X)JnK(%{M7v?KjM)Z9DY6yR zR4}B<0?0+W?7L{_XUJ^mY@8|Enge2%Y-j+A*|HOrAm+$=rXh-4*`{K+$d~;?r^*7E z4^6`q%B~hby-2ouHuQ>R&Nt!rii{TlP%2ycJ@m?C1-M@0a#;(FyIz$|TZl77k{$tcA)yHL~?Iy-+Kg69V^jvOlRjUN3vM5PlnF*M~rClAW&rXqG)$56~jJ zO|L_%OiGJ&n=ET7Y~PU0dkJE@EWr;V9kQ>f@Zzmx6Gh>1(_ZhiwazQ zvXCBto3dBSpwTbe_5#)hWdT0{49UEx$UiLG(*VU0nRFTSMrB{pZ+BaEpUP}^WWUq! z?3iphRWxyhpOL21;li%a%|MJ|R2p0R1Pj zjV;ihly=dzEeQ~ye4z61J44o z$PGcT875Ds^*mf2NT>Y>`Cdw0BIU}@Xh8O?+>1W6kCK0$5B+HQBsn}U*ZvIKG4jil z^IVYsLAASBx$$L4UX=S$C-{_abg9_mWowXsMS{^9nItm(N}f-VJ#q_0ihpOzMJk$TNdstW#dZfJm2I zaT{2-LEc2InI8Fft+3rIuct$JpIk-F*PC*VCCv28;~oMG$O~q{#h_dh1jQlwWoo7j z%cnhn?GgE3cECpE8J@6mOTL!Iqi)NC3gP~ae3EkLF}Z&sY~Gbmje>Vip0xzvzT9w) z_P=p?BaIY2kRSXQq7UVnTv&S~H&7}1v3xtt^i0S{Rq*>nZa0NsCgpc{z@Ew<(1lLP zm)F7XGkJF~?#xU1`?QF>lD|0&-Vwz`+V-6k|2q!_X9aT~qHs|}tO7Wuz`piMvCQt>SvhnZ7oQ%uom=aRy409d@@A4_1D73ZrUlA!qb0u&MzZ;|aJ#YdC|CM)i(N1!Q+ zUK-R%Rh;cbylIMby1-1uRZB=_DSEZQvK4>OLzbtw{w;kVlCR*IL$N?%ln76Sim@Jq zU!-{dXXqCzTq#W{QEaA>qAQBDP=Hd!fD1sGV(04!rd;t~5?i6b=@t*U!b|{#YYK0w z+*c`f(Sls9=%LbItzw}Rj_MSxv^mu)eE*^Wp$0|Dm!LK(4yD6ylj70@n9Yiy$G}#q(ILfJny(m9$d5vQR1sbbqqh|8 zbacC|SVs+-I||`5@WvFUDM`Ag_$3ul+*f?y2;1X|Z4aRSKw+~1@jg_9Q(p2&F%$_f zq41>|;}b>W|6p@cagw?&PYnvANr+A^1$^-u(7NIrQs~?C%#I18W{IezDXBzO6lJTYk|r`N1zy_+%Xr}Y2_b(!f2@S z4?1d|QI?EDFHAW;0}A2FaY~CKl;2RE9I4a_VC<}tGYsB2_j9yf}vk1gE)!((seiVOO=nR z0m_upEg+UFd1~0cs(d>gk`>Bxv;$NrTWArfR<5GXca3rrCExYR1K$8^P=?H=_pedu zNI71UQdb4gth_!O%ob&6Jfdh-j?-&+L)lG_N4qk{7`zVUdRm^lmEY4=*Q3m%thrbD z-fIATN^==RZYps!^I+IIdcC z62Y8MJ*9CwAC>8EFm_Tku^*DYs;zMVekupb0ZtiI9E=GY`>U$xE8qZC4Aln$RfDwC z2CLpVf~yEosUE>hsOktkJ7-jJT8Mwfa3so>!r1gGXNV+G#ktpo*vmxTrGxJ_cr-YRyUnd`b1jE-1#U>JormRxKZf zwFK4sv4}8H#iuV1l2zXIJb< zRkjSoYpMoH{Hj!3s&7}TRQ3?5QLQ@$tX9P$_jRg|d>~n`>ZfJ0LA9|MB8{rrAYe_Z z7&^nZs@SyQwW(r#>7;yJ714x9Z>Zk;8?m*kzN1P}hw2_BS)Hl~db+z*J6?g;t@4Qi zu}2k66C}N=pCmBar`k=~b#Aq=2MOHu4?iJFz>0x=?ne)s-r7lW?c36Aw=;&)yo0)Q1#gl zz#ggE_W(RrO|FIHgzAG_=si)j>0oS9WgG+IQ&smi*ql=RxCeUAR0cWXeXg3j7`zv% z%|`zX$f~$sBB)m?F8$0$)F&4~!%2Nh3~NW#wR528s_qs6JEs0d4W7IDGa9AvP#>r5 z*He8h7Y@DDQyJiStIPfY@r3%{3$W>C$ddU-H-{_2%AgRr_KAe;F!jrPh=i*@_!JH!)ISIz zc~-s16vT6CBg(p?)S=-}h*p1N5A3|UC<=aK)b(^OidBC}3(Q6J5ZR0~s1NFaUQ(BT z0Ne5E25NvOs9CfwC#paE6pBgeU#TILte$uThbih8I}uZ=df^p_q^Y0LaXnq_@(n~X z)YquNlc_#u1<5S++Es9vtzJMM#N?=(%z@>qO-tb~Pi^-cAYW~Gb^#g%YW_y(7piry zfR(7%&`jMG_3Fhga44M<7|D4yM{$rFto4n%C6Pl&Dsz z|2PJ$TAi~WSdH3|TB5b;4}Sqxr*5KIf_inK491$&D-B=6TC+Mi3ocsJ+&>_5T^&T{ z&l~F8%aCbTUnqdJF7>-~sO?slQ0J{j&7d*to9Z?6E;ipPt#^Ps2*0s;gEW` z2Vht&;Xrak&7cn0Ep@OS>bKPkDHFM)UVMb=FJtN~`taedT1Gj*J+%u>lipX?(w~ca zs{Y{|j83WlTmTo()SG^W!{_QnLKuCaUPQI}m+DX4q3}w5lFoWZG+bKxoiv&BcaWSl zQS^$sXtEN)JF3}B|I~@Ari9Lc$275h|J7eK`{<2x*KD{584pcz4s3gBc2T5Wn)40N z@YZaK0XVK{pyAsSn)8?7&_^SrlGI7f@->LUSHt3i=chRl0Ar^#9wi|9YtGX>4A6wq zaU)P;y9^*m(?QAiX^j*;HiL1n=1&t`T8L%?C0U`GCEYN3M)L~}r^aELqv7xyuJPxB z7ooA&0E^TpCV-vQG|z#xbDH-T!BdoGg$f{AGmTb(^BUt1AQ_|i>?9;FXr?@2ELPJo z1l~o>)^)hRIL&+1U@=_M@RlI%c+IrwU|!Z7I0Y<0Gd&zwqNejRh$d+|NF!Nu${A)- zH1ih$q-y3}f%`O#-A=rr(uFJ zP2vZ@$~86A*}1AIdKV%U8U@vDDm8;;0M|4zbP-jW`ZJKM)_g=~rW#Gk5W=q4{B;M! z2905L7pygE4!42Yq)DKDXR{_E6N)XG6k1TgC?NMNznzi3Uy-O2H%TBkZ&sX6qOo5A7o(c_dtv65Cg(U5ZfmAf5BH8nZ3?4fnq}#T z@UG^Euc3EO^HVky?rWUo;Eiii=_{89n$BHNc&J(Bhd>``m<1p{)^shS{=Np9}1jW}Oezk7)Dg z20LlrErq1B_J6x!%tdQm0OC>Yrg&V7tM)r;K^@bkzYRS%?V^kH2XfrCo9JEf&?eI( z@2QP8f;BI#5gSBr?T+nGJg#k>4~-Mr(?0z)!pS8eE*x-dhblf2|1}wgR+z z`r;r^+d|nwkk$x2KI79`E9wyhYh~+kWg*(b)b9_~X5g+FjL&G#{Rq)8?XHs$4cEFk zLNr1~))`vIVn}9c88m^MrER1VTDJBl8kot^cAtcLuJ)h@ zK%TZX7=h+%C6}R4pmimYLahVMF&7!M7L>FUYkx08G$q=c8pvGH&Y-NWR6FYuK$*5^ zJw(d2tBYXfs&+R`SygD;X2D^lc0(3Ku4yYX5NMTFL%CM9_7-`n(VEedP^;a*gGinB zyaL2}?b0Iv4caPO7;DrT&J%3X{y72BW^G14L|e4u)H-X`rlcdLHtkn5i*Q{#m)@fr z+N$rtYu8@-6}%4Z=WGx=wUt-kzDvspfqJ*rkv?wd(Vp50(5sDk1zw+al@NM2wKHjR z>DQW2F=#+rYM@&3u-1xNBqLhgerSwpJE-GuOB=BXyfLl$3@F~!=EWk=d)jZ-fOlW( zp9-Vn+ACCjdY~P30`al-uP=a2X#X{aD6PRhYwXuqJA z=1XmalFxes*`RbRsN6aW|e^Gs_Unn`j~EJ1bA*b$sU+-*E#wE^U!@u zU)gx-{HdtwrQ1vA3~yaRJ%Tx|d#?^6Cv;b7+xO9Re+%A8T?L(1e0A@nfaj;Xv61$_ zQ@VPpkNfLFC{GB`2^7!|)amII9i%Jwg6L`8C3^INb>Bte(n55`RN!J}_!B~clLGOUOsJ4<)@0W`98 zK|*Nc=sai_&ef^7h&xYbPQPfrZXul`3v?;;{d%EpBP}#Vx^>L}#kylu=PJ>Kb;IZt z-3lt5m+Ec=z-F0F`viW=b%AH0epT1i2dqN3meQ$8gDxlz)N8t^uYp$ShW`Y!TG!(T z#Ts2R6&q@G_q7P7PItfpSiSCE4T5RVjnh8XsPhN~Xwp@=L9bbNX9Xl%bT1ymeXFi# z0TkMFubYF|t~)_Zy$)USBzT>=Nm{|XbOt|~gzVPcx&+Xp>u-W+ukPssSnJdM?1s>8 z>Sofhu3xu^N{0hFeKbNF)WvH-9MYB0iE&uB|2?RW=%jQ^8P$D3SAR=)fCXc>b*G-f z*d3kg6pW4Ow%!8quCBit3ioth7-oTbUpM_{XpHMtQkwEWS9=074|Vqz0(+#hu7v1g z-K(7tnb7UB1o4T^lL~T^x;k2=pX&5S zuvfZ2&%pE%{SY-uob;PbsWj!Re>n~_F8YPkj6ACEr?_49+pR!6rhjq*o;>uQg#h!^ z|4I3ym;Rmg&^w{8W&-ok7tMsVlloPA;P;filWvK>p0f@P1N3|8fe6&|sPq@4A6N_C zY5mhk=mqN&!~XjNRr;CNVf&oE_&7k6zONkCqV@V7=%3eLUJDSTccUZU1^sQR0LJPg zsK<9vKf@iipNVbkf=Yl6%Ld1>z9C-tiP53$!vWcO=sokjp?YE zt7leH{+FkZSOzp-{~Z-o3-oK9AycRir6<2g|Jh0qi}f$=K%_)3NP_KBJ!cXkW%}2D z1y-(~qT*zw{%i_}*YtB+K&;YxGoV+kcP{`|qn|wqP^<5!=6Icc`x$_GeJ<5K4GsGJ zbjWMeCkBGrtY>=TcDLxg7lYWUucbkfHof2~++WwnP-papKBF5V9r{o@=5*@AB7t@3 z(`l3G)hE+J)2IKO4of%n37>#?OCL|Q;M=&rki4Ux^$~bu`Ug*8`mRC0(;nzO{mgvG zJkWnp1)~r3anxgYq~Arw!pHg(l=@8QS2Tn8M1PHrvCs4k^!q;7H_^f7g&rTt;wjTN zFcIM^eJK@Vk2tQR9)Xi%7QKzmjy1G>x;XAM06Xf~90K6#Xn2j1yJL=5_ra)}qXRWe z+#P?J35Onz(?_7;>3H!g5WO6$*^u;hjG&{;amRs+P&nZ@+Xj+8j=%j4YbPD8-UsIE zSQ-e-&yn*p)B_yTZ$dKAvGGGh805I`7g#y%m`_V#u%p3n4;mqk+x@`|bu6Ro`HW*0 zB^_aopHPP;+>sRvhY^l5S0Rc>$FypISVt+nhH;KvGM*<0|er3h9p{J#yS*1BXu>TgE|r?zoB8Ij2RI)B`%Y=p=Qwy%+7K zdW7$yiWbBhxabY4*M=@?5<)M0QQZQ7vx~MlQ~fh$(JtC0E-%{P2F3J62`iwHx2Ws} zu#QEol-`Ui`iI`_`-@gQf&0gczUG2AwdiL$alTr#fS$mkizjIfbX#nA57B!senjPF z-^Fuh;F1CtzZMIJp^Nip!cpYne}4jYesRYL&0ohY4qOh0iHpxr^CxZbA!@v5FMdj8 zn1aO|s)1cuoKE%l^2OhKfmpTp!b)IGi=Pd^Z|h?FUx2kQ&ixCZYq8J&pm1|B`yF5d zi#=)a8(LiF3F7U=)>M@oTdbl@VtjEp&21Yd7SFdvG*gQ`Dff7}_}MUAI4v2bddATu zZ&yLaZAmk2PJT-)em8yXwds%!G5T#9K%CL$CE&*!-KEocf{~bx363^!7p~%*^fi41)7)oZ&||i*BagxDH&$W%Rx-%6Gzl7ne1`^pYN`Z7tQk z2g4_NqkX&5LQXH(h!lL4yiZSoa?^65K1 z`2WquRI=D|gSw@kt=viTS6idz;hMIk9Y%DYo6?s7UwlVv>6h`Z!RYqhPAGhp|2-%> ze)qppjv=xelk4@7#6M4!UT zJ)=LUBXHkH{R4PYMrx{$JTq!0+pg301#SD^bfIBODdO~;Cj1}SoHlPi*_>9-gXHmP zd#1zvnQ15XKqPG1Njkw^n6`rMaqP7A_h9qlw8L~Nj+?e}6gDqSv)l-g_-Ut;AaZ${ zy#ne9)0R<&o;YnO-HN1XKPP~fJdLA(WXiNo!wpNE{)%W2a}sCu3;t#<@6nbZC) zf=t%5jW+@Mrv)kj2Bt;Q{TrONxC2H}BWZ%($TS~nfsamm{xfbxIwMpKkil5~I*6H! zlw$x{4DLA8vl;m=@Q}lBrcsbwM*b68;qw@!ROiTNBqqUH0mEKK9?L|V_t&wxw=(*&c4^13IC_#NlBSzbmo9nw$CPQOO!xQ&SnBk{uR}6zx>f-X>C+Qv zVj#mXz4kn)nbTiNK+T$dnO@<}=@zu^c1^!y4w=E}NpzowrZ;I|#?AO_7(#Q$XHt;# zFn$>ZUIbb`u##V3754UFQ-weguGnzKT%$*soT!=iL@pn3~i5aJ9e|k0J^IZ@*Vse3I)SXNo z-GYd-$x2%DyiBZ*!I-xR_X)7$CM>$76DFgt;dY%gvD**eYZ9~=|!xg}SOv;!r8fp^e4dNM-Ta>_tne1!?7G>hvggcXF;#vzV-Q;sBlxLXy zZ3mG|6Xzq)%QpF%(vDn{#neB|GqF8~o1brzD@WJ`CMz!?!a|d$0xD`%v}?!LD+US70-Z~)21paItH75yA2@3bUvLOLrqsr zN4#fD9VqP&Go5}7df}!=|AB`H)3x)U9%*V72ZbopJS`**(WcU+fagtH%m89cH*bSX ztf>ER*R&M=KW58GL$LADUdHa!;rVvcEe z4@7cJ=afSs-!z3b-U8Ed7w`&A9jU!nWExK^X|cid+pj>qVw$=M0hgLyru44NbklTb zl$$=IdU=Iu<1ARKG`%iFFxN~YDAlbtb=eJ(8q?NY;MJPS3IIk;jcDZimgy-<_U@QY zqydbX7B7XvyQXh@0NgWWz62OIb$Aa74@?d5MR54Yl*a=4*iB0G!N9ByjI+X0iqPE@saY;r^&u-E*kBnuXB9ddzG*7CbjIGb+Bjn|Z8*v6E)c zm*XOQ&8mICJ7u=D9z=h$XKfG(G;=d}LqEvu91ZRzn*GIrXp-4Rn)6683s?=1YW5aw zXK7{vYF4D1c~=2sm@UtP`%JTx@1UM#c85xz*=Fg~T*)!}wi#A(%@RT(nP-;Q04(23 zk`2iMvqW0_3e6gBAc`WhT}f0_E;idu8C8kd9$&~@F&m@rs7lRpX_+lElhIUOxtXyN z;HufiPJjxtAO-X)%@W>)-Zisd=pb8VW=l&_wb^hU9M+o64gjytO!gR_>dn5J1-%Bd z+m!P)nt515q{+-SkeaH^X0u+xVT)O*8>p>jTfPLiZgzy4NjJ=X+%tcdW&-b<*HYDP-27fPzytFz5r_}XQ-**&GB-51 zLiDkD87v}9$Vt#4B@M_Y(kTi`A5FxL6!oh>JLC@d?dNx>{(d27k=bTT9(EJP^)krsA$pnlFGkCyHzi}&cakGA-Y4tISPqEG{(d15gphW-&t zLk578rEwUT&X(WMxTA~ZUsQcKYB_@%A+DA)kHUqAW$?F<^t24uBVI4d$JEX7w$%Ov z?1W_uZLvO<_t(L+ujMlfSn;#;JqN!jma$asOSRlz3@pv^%R<`!(k*|c@=k`O<416j zX(^(LRhDI0G(e8!aXLxmTHZB*NP*>ByP#NPIX4=h*z*2Iu-#zkxEl@|E!Bsi-emc~ zACPRe{PI)iwOAHzfR$EDF@0pwW?48FSg++>DopfQ#$lhw9~H3dPX)8z@^Lo6pk?|B z$c$Qk;Q%wYEbF+iecN)6EqHeMz$`CA>800dZVu!ZeFE5YlK46=&e2ZyJvc=W>rTd{tHnGma-Y=BU!Gc-za#!5g- zXt))dW*Z``wv>VxY1KyGZJo8+w;JG_RYWj|Q3k6&sRs~kHJzHdF;;!wK=FdrOxh}A zt!AX+dM{d?qNnVV)vHv1cq=xYK`vYIK85=Pt4uLKqE+B3@RF>AJYdOIatB11Vzt5* z>Zw-Ke}Ka@t3cZQGpyXHNa}8Fy&Vc3)`mB!$mD4~_y!dHtjnq96Jq^u09}mr08I#= zv96-8BEziR=m-^IT}nT5r1i2Q5YJj0H^b;TYbGu4QP$sz0ivzPya6s-*I9y>Zv88@ zjWVod|3V?tT0#}uEbHIt2vcRk+LotSTAP*K5|8JP}iE=(N_C?92VmqOH)dAtSKF=iQ^?A@3X+i_{`O!H;{ z59UmIkUg26sCO89G4mfFP;cgb2C(DIDC&KmV1D8TJs;-!K1iNqzD_kuU#6!Rru~>x z{lHE!1z5uj#sSRb|G-lqbK5I`Am)AQwx4Epz6sG_W?(n2B7`ZR&VMNL7?u0ZFdydw zgfRs+a1qYjWDIMOOlMCJ&obK&K<^yWivui*IZV%bH1l{Atej_#(Vr%WVGgf@hYL*O zNdUt|rW3s#am)j^A#;iO8?6-a%&25wmznpD!de1zEzQ#;GH>PK3X_=ow*w?I$FD;q zg}Lf3L{gb0br4BoT9qTv45n)gY-TbC>3Pgz&Rqb7Y-ThSU~-tuR)Ab4D;2yv19O;u zr+ntSza!FerX?LIt}-2IoS=ePK|T9QW;Ojjjm&j46xhTxre(63S@<`IEzChrD6}$d z>FdHa=EEukbDilzYuF8@YzDA)<{SUQSO?Qr4)so^-7GljVir-^yPIj~)WKR0bH`a& z>t&8z2DOjLxel3rW-&GL2bc?3zy_JqD9;{Z?xfoCFf)-3=p)Pz)`2(5^b3RJE#@sM zKi_7)OHaui=EiRU#+V0aXyh()Hf2Zmn2~h6xz9Y41NDc@R6{KyeZ>6v1DJWt477ra z3FgmpVC@O>KplvaOno4*r%d-=C{8iUsZHQC)1C_S&NKZJpx`poM+EHXOvY}2V>7>s z0MTt`(qXu8pQ)m=i^ojXEg18hDWg#mubF>jBN*?Q?soM49iQ3a4viBt>!$(u%=CEy zaB}9L1p2-+Q+|ZeSermOG~#SF{D^Ccx9MF5UV=>mty4)hH%s6m#l}Sj$uyhdXhfJ{ zg9jJCwvCvY{H-=KDSN$Xv+-^4`fWBUK^(9NaipU1pv}@II2^JukAt;gn^k52<2HZN zf$D+Hb0v&U*eulpo3xpA1=v%Yu2g_2o5_D5`ON0YTQK_Erkiq)7dDQx_`S55We@Pm zW_LWm5!>JBadxu(U=bvpZ3n3svnaYx{^g;!(D1dH@n^udjzfqU~ck&t==bIS<4fTgg+n$hB>w zm$J-u0d@Y%ZP)#QTXNO*!d8e>*p|~qZK$+;Z2&UYY(uGURArkq1B%tQt7pMsjcp{& z$I(TBEneKK~rECS@x8r#Ie#ZLF5vPOD}vpE8h~}GOO7gHzZJ;Kz2B{&K!s_RNn93@n6g7=C`3=mZvz}2oGlMnL9Fm!=tBV1$ zSRZ%7Z#GMQ911zCKPfBAWz|x`n8#{51HF7!jR2s4H4qDjg{(i92hNQ1<;mN&e~6ht*fk}_u;UDmCr{Mm8=mZ%v@uANwa-b zEblB>t7hedL!pLc)c|9)ERSk{I@bEF5UFP^q`j?ytobU)TxV5%4D1GLj|lGDS)Y62Vmes)bQ0=hIZ(m1i}ia5c-^e3 zG6dSgx={x!y{r!m0DY{#sN{Z=b>w$o{j4Q>pf|v}PxX^QR{s$I!w_rFZMYa_-P#C; zBdm{BL3ETQIS1k`*1U_jrrWH<4`JpGYX+s5W32JL@N}28fgZ$rEIZ2m@3TIkyFSjU z)O-wXJC!Qv+aykt4iGWm-2868TGum?<_;KX*T0neHJzeX5!VRKF3@F@F> zOgMC9^W1?QV;5fq&yAgU3Ng8}hpC?K!S$M~>oY{*&yK2u!vOXQ8aoVRkNp5Fh;2nb z#cB4}u>isB57)qE2z%d6h=j7gp9hgM?A?YVFcZe!@&KN~*(!RuBG|JRf*HwPdJ4AB zvb|`k=Nvnjjww;>^d^94w(lW;^Xv^ikc?qhQib;dd-ySI$Fk*gyt>FPrGsM}+w3EV zTw(`ALLr{bd>tZ}*&on=M*{nv9X%$A?BY1MNMg5C;GQJ28@@smDQqvQzofF2I{?zy zZvVZ8>;bwn8SI%l7|moi--Veh_8+bQ+3biZ=;g3i(GALFU!IF7^4OlW!1CGM8=+9Z z{_PR4LUvFgKoL891?7Lm?9)_VD`AIy28}Chqcw=Ml)aT!;xcwRfpWH}1tM43CS16v zV1IuFQB<-YQI+l*JM1Q~D)t%{uxfTYwE%0_ujJ6HWpDiiS60W4^n`jn```g!4eaX; z0FCSs3=^rpIx3Z(mVWy3Jn%=SNY)?AM++Zgxg^PCf0jg1U zuqUWO+sW2a@v4ixlP1Z!+5NGw-NXKa8gjjCbvk%`>@k{7yUBh^Lka!tl*`}^ux(z4 zq+yVKa|-AX`yqY(JFPYmq2 zRGXb-&!PgzQ}*ZdTurgHm-z==j^Z7gZP5Ijnbl*>~1YC^c8!UT0uuRk7x~a z;v9^HUuTX#)lXbFT&ivy<*e60!Ie|;I!qtqSa(6ejpIuNad%F@b0~Ol3@-@vcz>Trnxs~52a4WIg8Ij;{>PN21b22w`qRiB*&O~6TY0Y)gbzD*3dcs6vvDvhWt5_ zi_i<;jFkZk7unanX{dWgejbccHD$i&I?Mn(>TZInMvoQ(;+Q`bMgvA zGC8ZL)}O^0p$s#d)8+?}9M0!oLL`^-`3ktr`2j3cp31 zReUHGbGBN+eF^8A%>Y+8Uert}<#;F|QpQR83wq_84`>m(%6Xew;1!%rwAfd24h{jk z#`%6dM5;Kq><~;fr|b&c*Ko`!Kd9xz9Hsha9Vdlel6p?^YjD`Wxu5~Fk@GG!Gn+UU zsV>mWIdcf0g|m&G&Q?ysUkJaAvz*e%>m1j+P`JT4t%7;3f^C|%jhd7y( z;|+7#T3}{`^CTTtKgubhv7B3+eXfY&HfLoV^zLv*%HVK}^VP55-Q^7CK;a%IZZ^Pu z&Tbp<#yLVtYaVdkrfRj}At#E?ijO!2dtl}s|n30o-NO@ebs! zp~W_cYgpC`ho`x7ZbK%RyLuO>A>8v+WeDYd_$zp4xbC#VgmK@eRzo;s95eRI#FEY zerceY?>O$ebmY6lHIVywZaS4CFLTSNW|6?1pfgM&cfTb(C2`NvG<-7m(tZ$AxTk0- zOyz#c056SuY8Y5L_aCZGWN=H?0%USKbHK~uF7k!nZ0?O&Am(sm=_HfO^&g}DLmu~g zTG#WrAIpFha9{IFd^()(A-ZCnM>I0Kqk(F`o0fK70B zQ}yZzH=ByFliW9K;rA)`FFLv+XYq!<1O z@5D=pIPo6R^W@CCZ;g0ec-!>2zef$c_nIK%&ufl_wE*7wBVY#d=2Ko1#EYUqw$r@r zk>CaMGG_w|Ad;W^~vBFLZFbz zd$LC>Kc_}Yot$@e-9K1r_AEt=Ah_`n+~rKXq!qFM0<-mFLv8+p^II@rYfwG>!0 zuaZh7Exd1Dz;-LIc^sgPw}yJ5*Lh_z5V^tI`2%dW^Vrmv>fkNZ!CxmYF9a9Z#mm@8 z^_OnmSQcb@c*?J!*vqp`2I%8`LY0r3yhYt`-_QG&x)}pJ4?27d^2+HI9pYut4?E0r zp;?g;-kUohGRkY$Bf?ue`z7Gr=0)xV@ea?DMj6I6Pt1CrkS{yKo;{D+@F z{RBUs+O$6W->6b^lJEaE^nCdfs{s7?-cgV|#dqw*J@hy5%V|3d;Gfw7jX?e<6k-tn z^51ZHnt$VGfMC9yW-vqe4(nkply6Sei8K66>X(G^*HAtb&i{TkBqR7Uyx}5}|3BJr z&+?~Y0M79_G$azmU%nisqxlhEL+?C4c>uf^zTqPk^e^xohk(ZN+xFp_F7n&n0~W_W zNIAqMz9;}1@%%3vA$ggfL1)AS{;co7OXQajV}_%$kka{du&yHxOvXsWA{e@O!?*Z7IF z&Q$S#q(fFU-+>mG8oqo7opfvY<#dRz zM>Ucb{X@gu&&MNl8}V{ak+3H~tEhMw@(XFz|F|2=ikp7MEg4xHi(>1(}b{J~%l zpYy*MgP9lnZt7sYclxN8iB6M~OF z1kXp1`d?Zk=spUgzJk#mAo>YpR4+OuICmXHe?cjgNCO1XRUifmoI+qMNYL>D9!?ts zJ~Y`EELbl98Y1|WO0=PZ)3hR<5mXc+;4lP(n8F2jsl^x}(9`61q~O?6fU^QdG>GQ} ziEqG4l%V=|5TgYzX=?Ahz-9@8i4oukfmckho*MSCf(7>>a#5h5f`%c2bL%ZlY^He*hc5=WWkan04ajd)c~o2@(@U-333+#OBcKr z0T&s9x7bj~6#PQnu`IzFD&%Dg-kJ$sj==LRxX%^vD1FQm{9>SXYrcT95i$jW_m=@H z6!c#QRwQtl3DIJ~#BLBv1kuz#yds!Gxl*ZM8`YG`1ZmzNmJ3n>LA)whoCt>%g0-~s zR0?DxuyReXc>q?b1dK&cs1}$eLZL>m<0B~43i^v^|Em+2MMI-rFrRkJ2Eo_!0U8CI zoe*sj%)bct&4Ok7px+`;%>}Vl@MR4|+6156hneew82a-AHv}en5ZeV|boCvA1#f}Z zDe$8TUY9_(2v)iUf6kN zex{~xncas8aDUaVjP7NH-A1~Xm39-JxTY$*Ra7&mwiD2kTVwYTH4JO*#+x8nXE%{X z_t$PaJuD4&$$AhQ?Y0R33{7^vqkzqJpHn-q#jcW;h*rDlRRC>voitH+-L4@G;D+5c z%BR}xp3#6%huyS6V4Zf&xlr%2J6Hf>x82=*c0XYg(t>oRs*KSKAi1+MHPXlq>PW2~@KCpA5rSzd) zfjzKCcGKPhcx?AF7=cdM4GhBe6T4sjgx;jxJG)`!sa;YM)Tivcwu1M}Zr(q*>(A{D z(Mjlq9nS{5mv)9i%4uKOnVbQ7M7Uf7eJA1CYREVXnYUraMYwe_z)|79e}m{M+)RII z^_b9_jyY~ZcgpJAg|E|aiia?{0N3Ox6dZyTFX7MBHt`l_(ak?D{FF{YCxpj);K)aq zQV(!axX3{BiGIRNKPa9OTF!$Df8jwjtOW>yM0+$y&npR!t19Xk|g{}gy@rn zZd@C`mZ6$``Yuv8-K$_4R?aNrh1N`(_Yf>el~L+syr10c-)kKYk}r2W}9p%-P} zLc2?>{X!Z+ylCJ4F+iOCiyWA~WFHa(^?3U&?a;eyKe!!4LxTOOuK*M6>!?}>{Ts@;)?y}YGCE| zF-UEVuiC%a2fYe=x4m$9&3^k9x(W6_P_g@r1CO@mFoT1fN&(>xHm86_I5g5C7U___ z9oSiiPMTASa!B|V#ApY70{q4}yhqz$qJzQ?yd;O_J;0J3at;EdIG8j+GS$J01}M`U z5?tUZ-C;ot0?lxENj0HDheEotB8O4>O0U>q{TrUpsB$<ovK~Cs+-Tn$0Y%LDPCbDc<$!WouKDo9>ix37nmQ60p@8Q$XoMXW+T^a zyv@-C;N8dEy$Nn`q4^@u#eQbVLf4HiMj4Gm|1FmkP2*> z`K%ox3^Z@xp1a)q?idtSm`mvq#Y*#=+aLy+mv9~yY%Wz7Jk2~S31F33mT{kJ%sma@ ztu^2D0$6W0+=crPb0lv|Z8dL^c~0GC9?MDT4s#QCPD303t%SMT&gp$6mvr^bKNn|3V_25vu!7+-!;edMlkox=lKNHee>32 zC_FG1c?;e{bJkPIW|;EG+_^KTkIid$!Tl3+*x%59YJO4|#AoKouh78H&0Tnueqnxs zzKQ`8Uy{nZi9mjN!GnIqcYN(hWBB--7kM6rac_DP3e1NdXqN|}mnF%ty@*D#$YL5? zOR`bdQg~Mo4^Z8Tuziqx=K{0RNj`TIO_MO+D=`$tClg}nPd9itL_N5;ahP0qb~r*t z265zh1bRoQRwS@vWMS+$`PP8m2~v5P98bqBY&3y-yoUR8G!V0)`j{H(VAM;rstr+Z zF`0)lACXiGL|-wRx1JY@Tf9E-69sv{W05G(jH4GO2L9sjXRx_MT;;KTsTjj`;$4V$8CfZ|jPW6$7dO&}%B%=bM21@-H3zlkd1%9m* zik-9kc5dJrg0LE`>H)J&vO2<5)BTTOwE0OcM)tPr0LsAXF8CbNle2-Dg?Ol#Go?1} z+m8xy@!6j`^@o2n=HqVAOrQ(Mf%1(P=+1ixGh}-h_oj0rAml^cAAsgdZd`v}NX>WV z8(QLnuoh9-lH33^pR0Zv&E?5s6|F6XNLG_ zXvjr?jg-put4(Ce0@zHexR|zuyjuXyS&dF7}iuPBoksH@suaj?M zXe86Xs_>LT!+4wg4)x=_GJ{6+gu-3g=Lc|)sy&9@eX98sBG0J;AN+Yi5xnAkNk=(P z%cOg}-greTrlNteDC{N_vT1$+n9iXhb2xK;P5rBa`H3F&g+?AtngHxGIaPUrgX}H%ipJ1>zeqhR^c965uJw29J^B!rg>{1=zjeK-F?svB`jB}xbN}B}uwJO~XgBPt>uC#)FjB@fk zJe^SH)`OXN#l#Et1SNh3qByS@xB!);6eQk_fA>QTdePucxMnlD5vl7Ec;Q3GeGf^621XO^OR=W!2GPt z;wJf`3@r-VUzLw@pzp3e>koaL_2-_yKpj&RlAfwt67;;(BV`exw|edb6ns?GiaYaF ziy0vjpr-T&F;Lwf3gU9r=@Qges6~cy<#wey&JMPN)c#vQ4OV?Pf!L!S=Azg^wFNId zZ>UbZgSbT3cRIiao%Rq42lZjC0k+y6xD1gf+ZDTjCD`6yi4r%@gq2*lSXMcltCv+a z4#suOlq+ywr!!X#+CSQe&u*4N{4I{2&9cGhGnF@V1})_y9z)X1ppRU}dz7Phx4`Gv zf!7hAPSozj6TZ`0QB5`Sj*g3y}t`aHOQJ?A`Ue$otldeMx*5L!fgx5D*O()@u1 z(_D98`>F0xU7MA!W!q=MgR7{|MP>qcFT_e-Uc3}18$v%* zY#R;iqZnKXyiZ~y7ZUP>90Q)0^omyk-jWlSXndrSrGPD!d$yy@02+(xtYbu9LcTLKN$z7+!LPNR4=S*&w-o1qhV}@j_<1zc zzd|HiI`0ExInr-yL3}Mq{I#?^slY_=K1^{HyoD8RoVetDrb%aZ<)NICu|4Eg-64aCjZR?*ecnD z2e8%hDGoGD&S?T{liZ^(6t>9KxqWxbkKe)39*evr5pb^@6o6==U^eLmbaB($*(s<3z@R4K~`1H+WEH=(ytnHL7$4dn}e?I~3$I|epyDo1u8>@?-=DTv%su5xEdSK4t_ zaa$?PC5J3!bXOjKvlX`nP|Q&Vw}a7-$}-N$J}F~P0(?;_CxZ7?DZndgclD2ou;!sQ znuaJAsDJaq+EZPf0&8CCQQqwJRy$S#Z>j3d>DMwfm(#BR^>hf^@IsCQiiP|u;PVK{`lJ#miuCIlt`zM09L7l;C|4=oPcLQV8g?vgXNnJl4wy&!p zJfmi-XWW6kQMX=&-dptzcO5_7DjC59>TZvN-fCU^-_Q%w6<7sh`*q#RLgbKcYFGZ| z&SBkpF2Nnq_2XP4PB(=I&l9@XO|W)Jw~6QVRNa&32<^GfYdAc;*3D}UqPMRNtoaqSWk^aghV3~UD7Od>E{lfr%mRQ@z zaZpUMJy?o;iYs=?T8yS}{ay<@R!>jY|! z-N?!SukFV1dF1zYg?aG&WcSJjQGB-B9IJRSs3G4?@r z0I~L+P5~UUpBD|8!}hlt!{{;l?yZ2u+XwQBBf)+M0i3jd!pn(M_Awm*678pQpsDtO z_K-}of63K}JN6ztlx5i4Re{0-`|8WVduV^*G$dcx+q{LNEc+6cbWpSHgLy@tV?W4> zpg!8y=8fpD_A5*<-IJa#BO65xqL z0bU$Db?7PqymT0&hhC;b%U-}lW&s+8*xe*xf)L#L}? zesE}W5~3d+GPnTp$szX!^t~OOzrdl7<9#k zPJv96;~75ucfc`@7Y7F&@AC>b)^Y4(I81O%+>#?<)LGSE&M)myvv1%4~{2!tL~#?A1@gF z>gdb0js=EpJehkL-d6$9$1rIrL>3x47Di0|hA3WiE-@75ANmP2oS6$=kfGaoL=kNG zIvgUJA$SecHyG0YhR9|^_x!D6LkkW&+G2PV2#pwn7te8V28Xe*cHD4>&vBhIB%cHE zykVaUqDV5lUjgC;Lquy3FB&ef!X<-&mjl-f6ZZgIH$;yEG1<_P7c4gn{rO9=sfKA= zK)h)Pc!?;|42PQ{rdx*FTyjr0SPGSe=v{+P0ML7eL0mVwZ@8fY$T6gIr+I6reHa?= z3>$Ny|K8AUB0POHoR0v})A+O_M7)ec9H8KB47v+rYmArlaJbf3HVPu^jE%;Fx89f= z4iIL1MgW_PgE)=cZ1l8@hRhb@ym!#pY7~`WZKrV%58Bbj>zqZ$8bdlkBhFal7qrt+ zW7r1p;*Dc@iy^_dtT@z98kg?}@vJd13sw@1uemUG&gjjXK39zqlc0CQxR{H5sm4)! zl=g+Ooj<@!PZcyf=>LmHS6yQ$7dw#n`hUz*pnDld$G#N^^%p zFH^W4BHpID)dBoWyY>MrGIf3n_lr$a7QomF(_sE#omD2EZE(NZv?U%Q5vKCIC%?<| zk!SCHrV$l+{ySi57Y4-yQ&2O2lco)Cz&vG2+5pkhCf@<@d&U&VtA+C>w{)0ELY)ci ze8DuH_oFYF%-tb**+egKPghLwbrIoJQ{DUET{G3r`N=roE+M`ljhiNf4i! z7GqP+qP#Rc=X@d4^yfHudS$A09A@5{YT)HmKAO5d2lmNytt7BKlT!jbEqC&B1aXDa z8%M;u(kXidtOYq`PX=$bQ^q`i^-j}Hz*C6RpSAb)I*)b6kwa3res24zteqQ znOP1v-R6D66HYURKqlTPeH}o8QxLxgXPnN)LnGN~9D7Q0%HSg|x12OyG`w=!9SglI zr|=pezHw^BmCN_|W)*CIa!M=@_n)2WHG;?@=XM5Qi=Ee7VcOq$7N=eT&gX7JA;jW* zs3WMGoWoDR%x32zycubA4&V}Aw6l8w5RW)t;Ue2H=c@cfE;+9_5BHaym-UCp73Y*q zP`K(G@)+1P=Pkn_dBfTMDu}7hMoz+SI@kII3hB;&F9NvjJSQ7|?>Gmwgh+<7rOyVq zxa%Cr-}`;&Jc^5bkDReXfdSpw^E$Bi&iAXs=tt+7{Broa>`z1#OI?mt;CNjQa-DUT zOR6V~T3yt2z~Wu5#lh1_m)aemch%*pD?4;~!qewnmvCO)esrl&6zUrae6&n~i`xYP z`Jlkl0!;>hnpeQO1)^UHj4BK>iweHp1&3O}{e#em#|o~$2mM3(s5BQ%r?Hz%p(5J)9ang?88q`KQdyhbM8i%ucK z7~DWAh3CRc27Oc^a+hjV1oo81WVdD5~FgJ?W z$^e^0GpwqV&7x;}@M1;i41hyo!FAloVex4?tR;)NoYJL;&b+a3Lp+)Wy;O0Z>k(O^ z0q+83i&k;4k|Wy0LH)J3#qZT;k<8=m7cs`t02*J#x;hBaT?)AiCVsQY2E=1hH=Zw! zOQ}4&UzfJ=ZbPz^Z36F=+?jVE-^tzVA+lPz#3jeAO3%ZH;;fSW5Du>@<3~eeiK-3) zrm0<)fOklZIR@;c>Q@TJuBe9_SfGDP?aIe3x9N_B!pvUXnpy}ZMi-a@{o^|0YJfD` zmrVd(*;R3cq?di929dS)nLL&4w0~L(Fs%0u17{r0)15AEXe=<;W+F}FUBLx zjDT*?npyS|?9VbD<@=u*hkHI%QTi2Ob0kY zWAPGLP>i120Qy&{<0mL)P~ujYc|wi(kZl&_aXs=QoqPe}CrbDmca}%b0)c&|7X{(s z3zd(6`d13}hNQa~H4Rog#MAt}ck#FcJb8-d?E$>Re*PA=x0u0)8+=5{489{@@o+7y zEfncn!1NQ>XM?&(Xx#S}iy*G0tPpoOUknnFCE;n6cpneq7E!b?BzKBC^7l=Hf-V6t zf2 zz5q*F#| zfy3?UTWsZg>-MiE!cestr}0_y1%5riqO_>NOU#zTBH^!9<~|r{J)A4zZR!Vt(sKkK zyXa-h<=Wl{xJJ@P{*3FPUCuyjSS+Vz!;_;SIb!b~#4+;S2i)5f`<}2f)w3-q(@u?s z{B#@MZ~l9FH_+#wc?De`>amm8zrM8Ocd!=HbS?t;(P&=!Euwp+p}UwIFM+p`x^ID> zATr!S0Ks&sJtQ?c#q+~zs z;)=vZI>>XDWfNr$fVIsuZa+M2p%WDWw$T6+6t~l_{Sn0udd9mhJ1Kk>G{VWin^O@K z@ClN;Y1C&}+e4?gq_CI9@;DGlvpI@=G`$7O1?-3j*#$FkVw649kBXBcK|Cf} zZGzr$ap@S}sBmZmEMENeCt^wvg_Z-H6s2c^cuM$LYC+?S*utA2=S1ZPU?z!%o1u7J zoVABcvbcN!Gr$Bl1@o8tj8#E3Syi@T!OMDXs3Hx&@YeX&6S_FOzF0q{b!L7cNJmhcLa@7w zij_pHyUB%z+dXug%O-oN7H2n+v~WHY_EF$p{D`TACqNXv;G;hWC~g9*9Hc@Ya35B3 z*a#2NRNk@y)EKJHS$-_J^I^Y3)R)KiOVs`_L@!e$Z!2D*>b$#gmDU#nc8zX-fXH>~ z!$W2=-A@8Bg@(=nc7yhChLTEtfl$9myQ?CKG#bRa6Sv6B2Zz%skQ27sG`}AgI`2># z*K#t*VGC~UF8#^}|L@V0;~?IrK?{Jrr$zM;=m)CQ7z!WBI|$Ymi0cI*;wd)f@9&G( z{G`3bxH%yDh&H>Spot#mL0lz{d%?F8ZBdGuK<_2A05zohX@xkMVzujx`r z=H9zZ%HZWyfE4ZoD}mBVHnv=v(jL4O(t=o6v8)#spGT!DREKC@{h0BSNoPhuF7ta%u z$}fe?WVH~ue_rR~I8*+%aDSYdT^4H7JkLOA#^-*BYxX-HZ0C-j3ekC1UR8O~soP+C zQ|v~_`q0x75c8$Jdm#}(uekCWNK-q5xSVcu0&xWu<@0kZsUn{`2%?!D2q&2G7DGg% zSI1#<6;-h8fzj18mS?Ut6vu}b*V1_2*;+@l>p^ineY_1bA+(3f?HkC-cNj|d`A|z3 zxo^fDZ6r%sINU^|xxTT5!ka>UJB^+UY$wfU^$61Q)_N4R;=X!-hCBoDAWbX7@1K>n zc7^CuYH%OSm(-CnsaMpWTPv4VhJp8%w!H@Sfo2?l-_O)Rg0-*II`aEobB=PAhv~OU z&5vNbSL(#T(kEpjAE5f8)Znc)cl8bDC|+vjTksaD^EqE#Y*C#`{K(%Yc)`V>_x!L2 zCvg>M%uL?y9J@FUrpNVv4Yl#xHsNz>LLlhVZ2a)~*OxVrpSLR(*IpzYg?n#m&WC)K z(9Go!UP>;!eh#K_d{$qh2{!Pufzli1x1;4^07S!Rwhx#)NNSqjW|z4f7*2Nz1B;;A zTol* z?>Id&0i31mGPuJ;Iynap&ym~)p3YNWPWqFm_<9g8kW)>FBvYCfKnjiLr1u5|Ujr|d zXbji?Z_)_PmeZ(bJ4A7d`g659oi_3cX0sUj0br|Wxf8_g;t8h~5yIyj6!wULp8)oW z20dZ>fS7R#ylBxdgYQMmULdkDf{zJ(v38fu0TZ5OKRFoIs`>6b41cID85t31~%nQ5&w2{w~9ib0g)QY3= zd?w~7E#ZxqW3>NI1ah9%@&4ps`Gx{S2eaMc=N#G*Ko^_bq`dIE>ec)rxWvzj~w5VAd$WSxL?9 zgCO5E#ugWY-~jLUFfg$58hj4w zF&AbAU&%y#Lt4he*wBld2@Pvi3dV*zkB9t-EG|@!Y~2!uN4c)W_2`G35B|QB%SdBF z6QDKLwkfp6)#83O-g_*szb3Wj<@hu`zeY2H&p~0%R}IR4UFZ4N;>JrK4|>VjtT#(684&ui7=tAh<9OfF+}Y53N7sh}yr&jiivK_%m7)HT^uIvl6U|!%qQza5Y76Kg zw(t>$1!6eQIG*AVpLy~UGhZSmKatL>x}{<|mkrj5lbjyy5Vv_hW3M>Z9U}Y1yVi*C zfDoqE&w?Py+^f>|GHJLfR z%%v^^Ao7+51;O-t8p&_N2deQKV)77kyMnhs^yjVKMdHZ}hy;r%D}iZZZ3wJv5M8;T z7%Kj%31XNSI0{X%NldWxgPE;jg$n9UF>DXFlPJyOqE&Qz30}Mi)`6EGTJz4tNiot6 z;G$UM4v|YDk;kO>u8Mk_;rF_DHWVT$qTCyZ+z{GoV5#DG{$V~*fM=RJ;^iX* zlOb&4c?7*HF0F)_d!i%1xDUkD53u%FB=BlFPdH5j2$WXyN@TfoV-&D8(yvz7UMo%I zEOni9`ver$OS!xX50N~%ioZe1!pRdQR8slNnPJknhcLZU8pN9j;nHeeSL~O%P2k@? zjFO6^BJLwnZ5x0%>2_gQJ1won*o31;b$7tbC20$1<(H+FoN1&=lfDAnlwA2Jz&)uS zcb)svlpfIgDt+Op!d+g&9butdkgL~za`#Cf2Fjhf0W6m%a^k&4UXDYA7G9gsS!`293UMr(vz%^QQ=Y_^7DwgYPqSFvdmY zy=s&o`ANMo3Rs>xm?x9Z>X(lQ?u&X*g>etvn~i+`%XFoAv{|9ETMX(-T}RG=gLF1L z<^}84M8k=uYqAZBVY+kN!8YsSHXxR8oh$D~?A9d~hl@zvvI*ct=?0C0U#qUCKZwV5 z)jC2iLFax4lBado#)Frr8_h%3HQigTKv{0+&a8vzE!|>vaYxs41KdB=jTex4r7N=w z8acZCyixK-mvsF5NK|m~a1gf8=|zy*O0y0@XB%bmx@J55auwJP^5VkFPAbLIZ#d07 z3@n1m@!{EBw4n;jMpCy#KEb$KggL_69&!9G^!JLt#sNf%_q_7oC;DGN==+6Q42sd> zt_y;U5sti#b6k8dK;(qDRs}bbD3)yo@0{4hyGU0>9KUwg#F7y(c3s5r-b}KX9SLJ8 z;&>SlZwMT2Mf<0U5B z*&z8Efrd)IH-}=F^rQ^@Zj|nqfu~JUWzLi~OXY4uG(yU%1d&}*UpBg18p9h1d!#SZ z5bs{;#&HA_Dg9mu#C_5}f2i-5s&Rf8CAH?7-vOxt7a0#q7kWU!DjB)b5N(md1gynK z7rD+8D|uZ7^N{q*6)0YpDvts2k@SVf=(kc;e(ikZX-~lmmD7023X^9Qg!%zF9X&%i zA_t{HBwlvs5$vpNar=>|9he3~)uNmbK=l{vp;*5*Z%#HiW8rdU!&pv|8r6Ca-;Ku$ zFq*vKX{@QE4L+Nt-^blI&m9Pv*5~KKfgd$p3Wh)Ja0hKERq@4G#c%07q*`k^m3g!xR z3YV#aRO*DlG&Q3=Bv+}ievn+P&Rq;_tvahDMAoTO{QyE#TTg@+sxITw{zkRMW`LdQ zP;Q$Dbz~=m$Wa#5^Kpmz1^GObr9qKuAT@~!#XYttUlZ3YFY(?_t5ohY?JoR^&)=GG zBGM_S2F!I{`zNluZ*Gk1-jjLm9(?CHbccL6jnARsH(+6SU?e`rC-9cv1Xpf~Y2kUe zo_=XJ!kf3PG%Wnx;smb!EmUX`;1aUSg{eULmG3c#a(N{aOjY&3H1g)^{wlh{3-Q&o zu@bN~)a@6Dtfh?iz}8b`9*Zwh;%79&W6~9ehip2w4mLm0v?tK}LN|TD^APb|CGryc zP_{>F;QcQcH~@@3^|%z>_YY)sO1}d9g7#m|tJDFnIa?WMkzs03$px@9xNIlL3>hAQ z&!LU%Avr8S1$X$y+mIiTvH~qLvdeJLN7>he%;*GORsQbE+hk)}SBHhMaT-3y_5GdS z|MB(fLT$oYUM);><7saCtQ>sKIKZ{8nRQZdJu5I5H#_^mW=PJ-K>Hp_M>EF(96#mwepf6qVv*IHxJ}1bAo2^0^%Ro~2J6 z5Mv@q82FJ)xpBgEo=Wgkl0-}R`CcFs7aJ~8+t=V-qUyeg?lSGh9E$X{WnF-qRBI+A z(`Y}hb#Bqb*-*%!NC!whq4st#_LNE$0`D13i3Tr+Hd}TBeNBJ!hDERl9tN3pV&N1p zH;RS42ew_9xEt*jCAi`eC0<~efpY%P#ULINp~WD1O5Eh?(Iv5iALLE(`wd_jqA;hg zkA%Z8xPKw`@By|QkrN6J4jI**zUu+D|vL-{Uu;+Jw9 zmu@oUW_Mxwt=u7l_f_A?Et*5|t9*l(H}1-Nak4iz3HDWUKO;^S9kfjjM3KN2$-5@?PZ*uWOJQbc0@u zGUN`A3b9I95$K;#9xKp~$KRI)NKon;Ks>Mf#yvbq`NU83g5upA*hQs05096W;ZI@h zva)3`99~flRzZYUm4s_(k~GCM3zD~#rVSwZKxupp#vUr4+d|}#vZyq8j}`q^NLrpK zrB$@vQ{_ekWS%LH-T>q%UYj8LTDk22zn_#%{3ZB2MUH{B&x(69@V+Rg_>|FCW!_Q% zch%YwRy@?hydA$l^;ZBqRZ9;Lz0{4r19+?ZmV)S`Hs-n6R}C8n_X{nmt`?YnY7^cR zS)`tr0-5D%;tt5HP`fY29j;VMoW~soskL~<3|0r|;9gU=cZR|$wG#KhP<2#aNQS9q zPR%!}!%D*TCiM&-&D^Y7IPch^?&VU}R<+VYVB6G$a!}u{S|(3{;tq9iLzszDH*+H# zP?vE|dr&QE3!+t>-T@-fYESNE$JBV98IG&xcp^BVR^n1tyjql}h;wQ!&brU5rGJCS zHTC8Vfa_{zb2v;^L%9l&qOL)Y#NTdm;}aVh>KMy#1ocGi^$T1)RTtfdXqK9@6Chh% zvlALQYCWE|U#p>92>hhBybH-ZHIUx}FI|ugfVXbRc<`3!Zq)*Bscr*rWCrV;_`Ig3 zyU7dA4Z7OX5n-rKx0Y{Pw|P2vJ9Nd5T7X9CDjbH!KHcuA0I|B_{Ok|ua(NANST`vJ z;E1lp07#zHC9}vW-D-Z?r*#Pp0nX@x-C_HzZsKUTPt^U{gWEzkJ_M5Ib*|GPa!ogf zGtuk1_sd}{S-1ZTJf!GWwc}r8yP@0sD@0RuD|z8_Q%9Vwrs-OFL*|yQ%}{8h>sB^_ z``fw>XCQJ%*M$q08M+MKz`LtUa)ZNrx;6eF-q#i566JGU4_@lL&^ca*UaoGYJ*>RZ zDg4cfx4NBt_U@f-$XNbGjQ6?#?gAfleVm}-q3_oLV1eG7Cst4W)LPum`j-4Cz4eQm zg6E^3%E^(5LzU z?9}i09S+0w1-1i=(7WdV+of-P7*-DG+bjb(sITXQK&|=~yi*jdZ^ygG$Mico102^k zaDu{Fi$0QvfkZuVIp&+d6z#GhNLS`@?!`ZF&O@I`&+aG1HI@0*2~F6+0H z1-PPrkqmHE->wP3HGMZ;HC@*a&wyUCem}48Q}pw>{(VD#C=Bv(;Zt>3}BNjds6 z833>KPB}38Nw405UY z355_x-4!V8c3jU7?U17%f4AqnV-P31Hywv}fx;8V0sO_`r;a;$6Y8s@#g~5(!_&}Y zAewZ&Vf89dHyGv^p|Qo#dpf{&L*{d6L>L~Hg~%SmGd|I}&v1SrhzAU6FSw63G)>1H z9x@!@94OAv^DQKg8)lpX@uWem2ES(wlN*C~!BDLQZsM|GFONmn4gM(jSnwx5hIN9q zJBF!AVBRy#&Vt56LvmGkdTJQXFITSNl|P6d4U^VG@v9-!3p@{FGv2)OGWx`W=Vx5P zHMGS>_l6KzYRsDtkwBwUIq-swd7t26wQ*SrJghVJy#j25G200|%O>NxI4Ev4X14~| zVSF$Jio1-LR^l%98vFCo6MuDr%b|yiUGm^C$yk}I2bYYqxwxES3?2gBZDa5~7|k)( z$^ytUS`R~gfk`Wf23lz9{|qrLF?Hoa^)l1CYtUP6O5#fS7K`cW66kL;^(_J0J50@a ze<#9}&2^uHrk2?NF{Wa%uy)imkAH&kr0Hc>D4sJ7xeJBMreTGlkZPLAqt;#1YtA*Z zOq*9Binpe>P6#y5oKX@-h?a4r%c)Bwh+#Bs8?cRJKLX-A>95rYF`NdR2X8;! zZUL*&6!!umM`++{sK?Xi5r{N_iu6G!r^r%*=l#?4ku%S;RH`NvFVdP2-0(F@Y68Vn zI@<+`uc$CT;4B)2`WIGw3pxPHp<2HJ^AHQTEV@7p;5pJ$ba#cGmmuEd@)Mos!{!q4 zhab<@`@?d3DvVAl!v{NOHhGB8Ss^nJ#9w_m8TF=%oN4-y@Q3jL+QFmqa#~yn z=GRdZp10PM-D(hbQuQ<#3MXqOKm<8|hR808>0D3TKr;FB;FUrpj)8cC2Jx0+DjnnlfH&!02k56!cQ+7kQT^U9 zlTI~j1Kg%N<)C*5m3!!AkXL&cyG!wB|yASCFVfy0VVE&!b1z4S7G!KUFr|? zF~yBW+)rp+F0iL0_zM!xDD*7Ab8_wn-U}LW0N6|FH5*ta4Y>{Qiu&CI$fD;3;3=ER zIm2%bMJG0}6K`|-h+codjIXG@2MP;CODm%A6T7Q}w@Bo1$HNa>)Q5tpO-ZuqHz^~4MMvP{ZQc>1YVe! z*BZCBOZ44}2(4o3M>vcYORK|7j3~Ga#8`3VA@mN34}SwYA_^A-@2Hs1<4mG3@j<9d zqCe-WSA-WIWJwlZw)6axCYFT)WQZUc4)2QI+hO~m(D6RNBN2TEMxTkiHPC-9d^{lX zR%{=_5lZ!ELo!ryI0DJdk~`Oow@CH5uSQEg3PkWj1Dk;zk$lf0ra0*d@8h44vN?B% zmpW|cU4hfmiXQXU$oXFBc@gO2_&@#8cko0pKfd=3c#6-s#Nw-wL^N zUpQPX7d*%}BUdQ_Y@6J&9x7`8mJhX>vp(NM^`oxw!pMmP*6eD|s20=yT;tRiXY~{t^VtvPhY+9x_2nhCgE4 ztd!^vhuf9qT&IXsEDu18Qfi(CW>umVf)}f#ZG+-*<+2Bip2OEeZN81}O(*a^d^4Xk zd^R6Y0AaMS<4Rr20X&AZ8aoSaTED!G&o)jxT(%v)mH#4CyEdE*v=89rREOMl(l=xJ z-dtZOy>A^nmTSWM?UiP2M-X*t^@DT+Ki;!%{7WD^+{Y(WTBdSx*nJYe4!yGY?A@RX z2jFVxN0dbJC!fwA+98ZAsm%u{y_T|zBkugFTn0^EV`HN}qMnbS@Qi*r4jUh-VJ5II zH1IM!d5iIU&x=J}&dOJbgE%soZ?wcCu0ocK9|)mR+rMzI=Q-c1w3$~AZKj#=*&%^9 z-8+8jobM1DEahwbGChQNR7Fjr#3JW>B(U6Mf&%jJmIY$VnRQ|E-X0QJmJd2c_WW z^WPt%*tQZkP{!>ZTB}^H1KPGiL!MwNR%!w}mEZ9xi>eQ~LscKK0Gc)TmB4lFo_FwB z_d3t2^=~x-y-_V5e48}I>zm(Hox^!0H7uKluRq-8!PXvpVT7wUx z)&8L!tefg^z1OWASL~`>1SLP3_mZg@f?Qycojt%t( z0@^57h{ru|m*eljez<&qmpHrS*%EjOa-XFjo|ca~!bzgMb~&t^lOOW>;k-PuG>j$5 zzwz{QLAK}d|Dyccp8%KSP_ErvmMy27K=g{-{}8}c*+E87*W^{gyIRP?uhU-j8RzWB)CgWa#j8ixfp}V-h*DjCW7XKs-M(h>c93iJ zm7rO7)*MJSxWZMfhBo|_mByX(KyR{%18M475%gvgIjLz`@*XIy9%SIUb@BvUcNxiP zUia!;WEf%@!^Nkek9)$wgg(3&nrPy$YybHxuj!{uVRKU(a(Q;fwM3Yh-FOfrEtxZM z?M~wZ!0;e#BJL1}F8U%qe>%chX8@%=2MDCs+;}VLJTIa&>bwBjtLRfRsIR8fTD<;P zONX|Dx{gx##SfujJi3O`vEk5bbOs)4ew|UqJmWE##uWJL2DX!up>U@lmx8v~nl(^XOwA zfX|eE7owgb;S9{&5@XszKU0{v2j+_5pWxz+h+V=8Lh$NqfmCGz6c$Q5_uxkTq^t$N z0;B;qVLDLy{0FdAQe8W!he*BJgSbz+cnL(yRjEH8B)KN#@l>8BO`QaAOZr+4;EvRi z2k@s-XP#7^Nke(C%asafP+TPMzJSpD<&)WnVyRq-Gp1$o=QWTFl#3ex*2;4^tq7Gj z^#Zm%oM4e;*Dd$|Pv zP@drr-cz~xb?Cp8O9XN-a&4}dy^(z`gZEZm-W3Y(WZwXYyq96Gy!yJVP(O%VQM!HrFez?OoQuKau2on=B4QC5pY|gfGvbd<$Ems(_`tz zLl9tv9Gun7f3bh@vG8K6vWl;w=Mzf!dm{9b2PeaHsa$6?P5D(g2Aa>a9p4Y+;+2pYF*Xd>V*<9}b7DCz zJ^WG79u8;ca0v6J^YN1f}YX+T-6dDK2vXzR@0lJgc*~8l& zGF%3TqLw_J#*mTAcySc#1}vUZXT!}I+PxPMouvZy2;%}J@aub#PM3z{HCl^y&Tptf z&A1RzCa(sfDPNr@k_y!yea}G3hPHvda*>HV{`~TpHzO()<3eNAXS|xOb|($05wz_9 zkbPv!&*&swdh-1dh$EcuI_5Ycih_P^zIX2Ktw%$wM<)mHdYY!=CVH7hfzqctpNr{R zY$~Mtz2Ow1e_BU;4rtH0%0SB=KCUw;@jgg{r*NTsNO~=Z4sBH#Y9k$Z*#5nt2V};4 znFY$!g;PP9_KX*A(+}1Leda_DIQ#1}->wHm?1Qo|>GhCWLUE^{5=gTnAQ40zPC;oE zjXDI8wRDenR6;CN3keE_`@iF1D~vSW-P%ZVO^9bR73q%_*g~JJz_!xTYT)fABNwZm z%4<6TdoEYvWyVtF{Cg0?72i@YdQq|82i_%R?_c0uR_t>DuHd&N5YtzsHlGD`S06Wn zX&=?nsw?ZO=TV%^{aHY61?D6V!|tKG6& zi<$3*jZ{=o3gvoAHd1kCU2P*|<_O&ghJU&!CEp~Iu1PN1<=wI??a-d?mP?C|jWx$T@=&|yc%D*mN2TB_ZRQ?1qHrwsPh?$0 z6T)W)ES9k7LukcZwT64;iuV5qMVq`=b}jeKvq`db`r%pp@azoF*s+j`xoF3eWc;16 zy>j6qE{IN+nibTgxZs|3ukk5OE2OyX(6aV^i>mq+xsX;dQtt3QG+PeM+$SKF=28<3jZ{}?yH3i* zIHrGZt^8+*_wir5I(H=30a~-TpB?Gvc=i9Zxq4{lj>-f6qq*v7b&vgQuKzcYwb!~G zmtDV)58s|9#)p57ub2=Yz5MB7&a7zR*FI@~~$=hOfHozTmj=^1# zmIH84TxVnVg~XDNL7Nhzzk+yqUM`~T zJtP0p=%0_f+Rd+MuNnou;Imc$U)R~s*UhSZ#%HUUeBHSyuJaqSzvgoGXUzKi`K9ETwuVjiCTIqW(7m`FSSGr~5Lg)K^wM{V%gZUbMpf6v#Q+wo`DmrUu` zUczVpE`-kk$xI)y4A=QF_tDy&``H2hKi{tZcC`H2@IOXNp5b_){1$%+rEq?mSG*uM z(fXX1OMidizuiZ?JV8U7xA^s+H&bb+jNq#HbGTIx@n^LxeC7u_RqLDdzaIwv4+H&? z^x1J+|H!P`YLza^1^#7tN}_nX?{Qtz`d<9M-hlr@T(19Yz%lWz-^0q)dS8|+{d>aj zV;208x%{6r7qZbGVf{-YT7+L{Tg~yRTz}#}V$<2+i>LW{-~XLe!gg!qRe88Awa4lC!|jnxwLLn~IhlPwpnaE$p6Y^V+n8Gdi3L?&hb3+b9>&XHY<++)rPZugoB zHUBS-9IXr3ZgMfO_k3q}!4m$v!D7X%mK?d5j%sV`KFDd*T$}w-u1*2g9UtY&I$EhE zlQNyIX}<}j1%3}?iBR0gU)wH}Srlq5DJffR>4|pQ0pDpTX4XO+u`}~t^D`(7i#9I- zho0;(SRqd#!=WtY_mJ`0ZG+O07FmBaDlhf4+3H$YDNgjKR;LIyLJg&?CyOX$h^kwk zx+!aP6k_!%jU!$(+d90W(w0Plvf7SHN@W_PC0D{if2HPKSs4!L$CYvBi~h8puB}WF zMf#P8`)E8U$F2$m{^NmIyVp|!Z7JG%zq#_8MDAL(*7&0ehpqctD}U&OsiL)XCuOTW zHP+7d#a8bs>)C$F$il*=x>j|H(v!|u7fewKDdcZmJriXex}=Srt#qI++P>LJXF4A| z2gjsaYe{pkJKfrPaIVrrPtlsKC(26Qtihg2AA5RYeYq4TqG+u3n5J}+Xr0w@t!Bctdtdn+gd{p z3(4?3eA?p2}g`A;Cf{d2XvTS_@0chSnE!$g5D z)(+{)Oo_^B$1<>kZR)DEzpKm^rf%AayUJYQ&|PbKPnji5Jv8e*WfkMJi_(QLZU_-Scc6_lWsE3mx} zVmepgpD{%r_^htb(-|$$R&^B)eYKsosvAwzPTHy!(fhK1iNgIf2Rn5b&C~v{Qw!61 z&BsptO%&^Iy=tenB6LGn2el_!e}aR$1?}PFs5T;cp>;N>WvIS3#h`YB&IyBx6Lt7! zJ#180Ci#v@SFK~xb#o_aVX>-<_3Ll??GD;$)y`FOo~|!$-PTXvtEkp3U3I0QTKDOC zSFL#ydk1anVn>74e7as|9Xnlr$Euyku`Q&PT&~*t&aG@~om<&%RUfCJLp!zY(V|ta zp&eRw=rwd`$?96xPTLZ`qdo2L-`+af)1kJV=Im)#N9!}kVDjCu#KF2_iKB6x?}@jL z))Q|HxpfPSp5ANRAEPJFm~J!e&*7tnj+{JW(sV7bim{Y6ql&SBEyk1MgN!a(^QK0m z68Ohs?{uw3J)qdd|+K3IvZx#t7Prxt{T3Lb{@UF}c+R6VYGQQNOpS5NOy++Rwc*2XWBH2T*m$hp*r71eo*Umq z`x7cq4{V$t)_1TA7)Ldvt+9~SyrEJ47v!5az6&`02l!VT|Apag`Qe!3`sLfh{1N8= zjJD73OaBqz-%Y;-c)N?y%(2~``W=49zw|M>X{MHVJBFc}`UJQ8t#gTCdM&QA(VS1_ zV9@=!XR{RltN-7jDswTfU1(->qhZ?9X2udf74RtV!sMgx%|AOhEAY%$F~5WB866K) z3vFsF3=7o4SoD8&cJ{$lR{0%2_mZ&p#=vvK`)f!bfVwCFc?mXwWJoANfC~~yoJ0wY z+rWYwAkg3hZ?eW!Fi>&PgFC>Q9ckGPYq13Z7aX$1F4$mU3R9OAXEQwc2^b_(ZHbb# zA~VQ#A@Hplr&^7b-CD#RWb@mi+BiGLMyv4vK(Eahb6qe>4}Yjxui`7dxg|QRY2}uLTRyAa|9aFV4tg zW!@+R-3X!-@OoMI#hKphiy@Gf%tD8qku^HlFv}YehL9szrQwmq%n4@E0xSros-JD8 z9x=8Qr83Z$E>;82$3orSRykjHvMDvgMz0jI_e`v#mQzx-BxkZTxd?3lYmz-5bFX1G z=H5}fQhpfrV?SSrNk-)LhFtC9!#X2MTkaE)hxK5v%2NU<(=H0|D3llLnjFoNpDe&o z(4m?6*ZK$%yI(}caeEvXCGuJ-J7-}Q_R)jpS`bc|gB-v%To3kB708Wqu;tiH?g%-3 zjyE8cef51bb5O(-sR+9&h7t>Sd@e?>6FzGgVYWOz7vqh^6n^Etz!`Sg{H~cxftaTuPE0gY&B|cneams@3Nn~MYhiK1~U22=IP|mV5M}KD<}CA z6Mk(%^tg(jZbCI3q4#Z}TD8AJo|TeES{t}F^Q)8bOt3n>(l&+E_H#Ld>Ko>r6>)}P%2kFYFeaJ zZo!{y>+2Ox-TpZ##PK@x;mIPhLr+*@d&JnV*p`fiN;wplM;3eI z!#UYz@!**xN0wCJNTW_45U9md#SMk1rUI*`iA@c4N@{%uEd;$DQ-Ps*Ae%(1ep?|Z zzpuP8-^+yBS0)usL_?xE**H_6s+ckM2xW3Kdo2}styF8j(kD(*=QiZ__7ZFXIr20D zCdA=yz-yIWzi@djk6c4S<#Ix$HzK1v7w5gHIJ@-J3p06Vk%+`(H&!%gZG%>nvHNC- zNE+vFUv=IqmuD+cLb?153J7{tso((wEQ4*C5^BSt+M!iDt5kXf`t%0LmsQ^Q=+aR_ z>@OCPTY5<+@;a`%6~~a}kE5ieauWijOW{sEUSfGTam*Bv{Yp0+%aiY6&kMz5ZY|R2 zAW9`(W)xX8Hvq)Nr6RIdk1^t1V6`4pR(X)#Uo6%qOTVjlSP@!=^ZLbw-aYvHNVPKT zcL;pLcFMEZydWH0s>#>1vt)j^0oYIFR5701T#C zrQ}w@;gXxAZL`LpK2&a&xiyY-Z?g0kwpyW}BXuQl&s>119FtW`aWIO>jZ0O7?$Xq$ zsapsCD>27JtQK%r5W-AY}=nnE?V-tAaTqBGjNo zY=;(hF2gy^R{4Y;(H4iXj(X2Vf*M{ zMQpB)WuOeC|3;4i;3+#_Km&qnd;^8$Wt`FgH1L z{w^6;B;yCkm?F(jmS!j8w@dR-PFA`e{K}3CvSnrW1=87zxh^Fsw*~knq;&x@tv+6(b1)+M$&K~i zJ*t#Qg*pH0LW_aLDq(~cwg6=ecUIU!2d}_jiR0C4UhQfWhT{+ELzoVS=;;`judl## zjLTz4f#9O1&<_>m>cCK~rdAzv=%7;v-8u-ZROxCpwd$Zl2c0_THl#JXS7O>(Lyxkb z^gQ$9F41!_)W?r?SK1UOz7wwm(vxVMGXb($urc!1!)7&7=E9NXquFJwRJ)mcslGM# zad&dg7XsV?$EKdFw*6Hi`a8`WW(kLVq!wqQpS8Jrvv!OLvSuAp&`dC^+@O@vtI-Dd zoEoO_lv~u`4eiN4;Zc2}0fU==uUx_#irNO$pLh;f8sMNx4p3jpavKz?ESu$5$Wr~; zrT$b|P$^&E?KVsc?xZ&nt4+yQYB)9MBlMGvk)cAIU1&(DJii)lM`e@z5`W^6 zz~D9BC>3)}maH)a7s%Q*O4w>+x?~6bg!(ZpxQHMOOK`g}M7dia8opL(Ok0Zy&>(Ac z(7IM-)S-h;9dzp;)Tm^+jo$dsi}3w=-wz#-8yR^{?m`g0RV3eQ#G;K;L!&nqj@0yZ z(5aUb7;Kj{435i9>%6JqJJaQF)_GGx`SQzk$N*Dzy*HJ)uJ;~-tM+*W;Ttm!y}RDq z97+_!5y%!5A}sJTW>M*I4tSBn_@C#*3Wq0vf8a1)CpR4 zsC4*Jk^EwVH$9YgX!0}OuX`jQ6a{cGBfu3FOiY)vLNMPwz1$y*DndMC6t@v}(&4PM z5rfx-OYjWuu3-4+n3c!`kqD;G#gD5Hw()Qy>lCgF^(kv_bTETc-YDhpA5w zxGSFogDg|dhm4k)ei97OoX`dE$)l^#;xIGd(@0nTk;9bp38gFl!+?M(r`z3?4};%b zal+J)j(Arg?l3dpgG^Um2hY4^%IT@M%o=9GA#a&-KJc_m`MqJ0LzZ_F-k=1%`6RYC zrOggAHQoD^TKQpzDL?Ko(>KAbPi@4ZJBaD4zSGP+Z?96-C@diIt+QX;G+OHgG&x?RPC6c``oJF1$%K7 zJP8q;+^WiOd|Nro9Om#I=nn^f?C9Tck4=Reb!K59a&_9qfhP)eVd+4AGhT% zRFR?G^73=u_$+#_tz;A)GEI=9+q@BpOt_eBG&7*b+ARR5SvP{s=Yon-=59g`n4%F%_U1Nw~cOC_o zO~xZq!}uwfSTHe=Uk9HCHyL@aG$FRod1sg=(m9I&7dB`9GBrfcqC(wl+u^QNawsqX z-M5zUYjSZ4`X?OyJL3a6^#$ZspA|acFy$v5UV`$)i?GlppaR{EF4H;aGTnog@y#Mp z_7E5Y-wt>>46U5`l~S%QUBP0spyk2+sNh7<;sbKs3*Lw#dI+r^qsylR%zWuGbmf;E z#vSGhUf@clpDN2^ptLCO}pAj(A)4%4*--HXy z^3T(ReC`D=YdHO4Hj;%j!r5i{9c?H5Up9*Q(wSwMNp3hyIlWu1JPzlQWy( z@ByUfFzN%|@+j_^4G+doS@4AQ{3dV2!hHBbY&o=pz7fm#!M}I}H^|i{9X=N%q7}Fe zHXH}<-Ow~IMQ(w6Ul!6}FcUWb^N*)iG>2Ekp zIUNW_U!P5{1QBZP$IvE5LG71^9cBh}Gr00bw3%hf>36V91ID55mMN#JL9;oV(z{?4 zm>>;}XPF7;Q?N{Vp~IBZ$>7SH9j2UK2Pt>!L`{^-sLdmyyJD{G2HT6hCCs74{Rft zL8HUWpxI%{PdH3@m&26zs|xa?e3-+Ow>|F4XJSovBB*ew##O*Qg2R*-K9MXhmAAKe z;}gf9OpZS1Fq3_>G+BNvg$rr}IrUFEtm^47kv3z?EHJ+H9Qg^$f_y&sL`dY6tMnP70-TGxJe^;L_zUn3FVD!JS^v zN!ei6;9~H7f2r>_Sm2@*`BN#pE`bPq&c<(|Ht>0LuN@Wb;8tV^dz8hmq-5|5FouTT zWeeiD1S*Htf!K-udCXbOn1nz|{)?*+lioko&1zlR65Ob)28ZR{o zD!~;vrR+8QGI$d%RyaD%IJ57fF35H8acL_4Q3x2-NuaW4NiPMIY-zac8 z#!R6xU>wcqewf?IJ<#Xe^NpMW=F?};0}3Lc3TqCThDP4E>A(qhFu#5Z6F zO`m6oCS&@nRzmw|_8nm$F7{|M|(+rI)| z#TaRU0nAT=_uyo_-|#QNTL$4pQp3Lmf2vv#^PdSWAOfGV&^rhUxWWX(MTGYuH0T!C zH82f(#xy>C!?0%hZ18HdfbEje;773VG@1hM2fHifL@-xYwf=Eb79*mnEU_P)0Qvn5n1i&727><{JQ-b#*{ckG7hHoDO|&rr3co?b zMeMVaOpQJSZ*dl$bKoPBgK2mZoQ`#XHD(L-#gE0^X*Lvm+8HyW!RKMXcB4NLya_kD ze1lIJfDtT~qsjA(!aVRa90ZtvHLL-z>xreBV*&=R03UI-+2_E+aRBPV;!pj*2Cqho zsFe`R@`9tD^&#|vg(3CvyzN^gS#e!XTiA4w2F#N;8#&Yym6yiWCwT}#!NFA z71~Gr9Q?x-6CrT`+#h3tD;HZ3TRHsT$iQ~NIYgAe;$kWwgZ}`Japv*o;PX$SNzEAP zC9`(o2+eZA zo(1CrPNv=&Vlx<*T7a_z{&zx&h_{RJ4vASV-Uhpqp%d)R?tcZhqMoy801WB|y9Qkc zy9Rxe!dYnXCV$h#7Cs0OsJyW-Dn@|QQA4zsYU%OdZp^kW!&AXgv>4@_JafTCd_B)p zpa$$3&w1gG%gir?xiYCXXPhSKWHdy|F?JggI}>s|WD} VuWpwohRWzWNRZesAAH9f@IRyV*Jl6# diff --git a/firmware/Debug/DiLight.list b/firmware/Debug/DiLight.list index 3e12378..757adaa 100644 --- a/firmware/Debug/DiLight.list +++ b/firmware/Debug/DiLight.list @@ -27,23 +27,23 @@ Idx Name Size VMA LMA File off Algn ALLOC 11 .ARM.attributes 00000028 00000000 00000000 00020098 2**0 CONTENTS, READONLY - 12 .debug_info 0001128d 00000000 00000000 000200c0 2**0 + 12 .debug_info 000112c0 00000000 00000000 000200c0 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 13 .debug_abbrev 00002b70 00000000 00000000 0003134d 2**0 + 13 .debug_abbrev 00002b9b 00000000 00000000 00031380 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 14 .debug_aranges 00001130 00000000 00000000 00033ec0 2**3 + 14 .debug_aranges 00001138 00000000 00000000 00033f20 2**3 CONTENTS, READONLY, DEBUGGING, OCTETS - 15 .debug_ranges 00000ff8 00000000 00000000 00034ff0 2**3 + 15 .debug_ranges 00001000 00000000 00000000 00035058 2**3 CONTENTS, READONLY, DEBUGGING, OCTETS - 16 .debug_macro 00017358 00000000 00000000 00035fe8 2**0 + 16 .debug_macro 00017358 00000000 00000000 00036058 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 17 .debug_line 00013e44 00000000 00000000 0004d340 2**0 + 17 .debug_line 00013e1a 00000000 00000000 0004d3b0 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 18 .debug_str 00092472 00000000 00000000 00061184 2**0 + 18 .debug_str 0009247c 00000000 00000000 000611ca 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 19 .comment 00000050 00000000 00000000 000f35f6 2**0 + 19 .comment 00000050 00000000 00000000 000f3646 2**0 CONTENTS, READONLY - 20 .debug_frame 0000401c 00000000 00000000 000f3648 2**2 + 20 .debug_frame 00004038 00000000 00000000 000f3698 2**2 CONTENTS, READONLY, DEBUGGING, OCTETS Disassembly of section .text: @@ -1978,7 +1978,7 @@ volatile void loadConfig(void) { 8000f78: 4b0e ldr r3, [pc, #56] ; (8000fb4 ) 8000f7a: 2202 movs r2, #2 8000f7c: 0018 movs r0, r3 - 8000f7e: f001 f877 bl 8002070 + 8000f7e: f001 f867 bl 8002050 8000f82: 0002 movs r2, r0 8000f84: 4b09 ldr r3, [pc, #36] ; (8000fac ) 8000f86: 68db ldr r3, [r3, #12] @@ -2113,19 +2113,19 @@ volatile void saveConfig(void) { 800104a: 4b1c ldr r3, [pc, #112] ; (80010bc ) 800104c: 2202 movs r2, #2 800104e: 0018 movs r0, r3 - 8001050: f001 f80e bl 8002070 + 8001050: f000 fffe bl 8002050 8001054: 0002 movs r2, r0 8001056: 4b17 ldr r3, [pc, #92] ; (80010b4 ) 8001058: 60da str r2, [r3, #12] HAL_FLASH_Unlock(); //Unlock the FLASH - 800105a: f001 f9db bl 8002414 + 800105a: f001 f9cb bl 80023f4 HAL_FLASHEx_Erase(&EraseInitStruct, &l_Error); //Erase the page 800105e: 1d3a adds r2, r7, #4 8001060: 4b13 ldr r3, [pc, #76] ; (80010b0 ) 8001062: 0011 movs r1, r2 8001064: 0018 movs r0, r3 - 8001066: f001 fa83 bl 8002570 + 8001066: f001 fa73 bl 8002550 // Programming the config @@ -2140,7 +2140,7 @@ volatile void saveConfig(void) { 8001076: 685b ldr r3, [r3, #4] 8001078: 68f9 ldr r1, [r7, #12] 800107a: 2001 movs r0, #1 - 800107c: f001 f97c bl 8002378 + 800107c: f001 f96c bl 8002358 8001080: 1e03 subs r3, r0, #0 8001082: d105 bne.n 8001090 l_Index += 1; @@ -2159,10 +2159,10 @@ volatile void saveConfig(void) { } } HAL_FLASH_Lock(); - 8001098: f001 f9e0 bl 800245c + 8001098: f001 f9d0 bl 800243c HAL_Delay(50); 800109c: 2032 movs r0, #50 ; 0x32 - 800109e: f000 fe7f bl 8001da0 + 800109e: f000 fe6f bl 8001d80 } 80010a2: 46c0 nop ; (mov r8, r8) 80010a4: 46bd mov sp, r7 @@ -2176,3447 +2176,3466 @@ volatile void saveConfig(void) { 80010bc: 200000b4 .word 0x200000b4 80010c0: 0800f80f .word 0x0800f80f -080010c4 : +080010c4 : -void configure(void) { +// Fast blink LEDs `count` times +void fastBlink(uint8_t count) { 80010c4: b580 push {r7, lr} - 80010c6: b082 sub sp, #8 + 80010c6: b084 sub sp, #16 80010c8: af00 add r7, sp, #0 + 80010ca: 0002 movs r2, r0 + 80010cc: 1dfb adds r3, r7, #7 + 80010ce: 701a strb r2, [r3, #0] uint8_t i; + setLightLevel(0); + 80010d0: 2000 movs r0, #0 + 80010d2: f000 faf9 bl 80016c8 + for (i = 0; i < count; i++) { + 80010d6: 230f movs r3, #15 + 80010d8: 18fb adds r3, r7, r3 + 80010da: 2200 movs r2, #0 + 80010dc: 701a strb r2, [r3, #0] + 80010de: e011 b.n 8001104 + setLightLevel(99); + 80010e0: 2063 movs r0, #99 ; 0x63 + 80010e2: f000 faf1 bl 80016c8 + HAL_Delay(80); + 80010e6: 2050 movs r0, #80 ; 0x50 + 80010e8: f000 fe4a bl 8001d80 + setLightLevel(0); + 80010ec: 2000 movs r0, #0 + 80010ee: f000 faeb bl 80016c8 + HAL_Delay(80); + 80010f2: 2050 movs r0, #80 ; 0x50 + 80010f4: f000 fe44 bl 8001d80 + for (i = 0; i < count; i++) { + 80010f8: 210f movs r1, #15 + 80010fa: 187b adds r3, r7, r1 + 80010fc: 781a ldrb r2, [r3, #0] + 80010fe: 187b adds r3, r7, r1 + 8001100: 3201 adds r2, #1 + 8001102: 701a strb r2, [r3, #0] + 8001104: 230f movs r3, #15 + 8001106: 18fa adds r2, r7, r3 + 8001108: 1dfb adds r3, r7, #7 + 800110a: 7812 ldrb r2, [r2, #0] + 800110c: 781b ldrb r3, [r3, #0] + 800110e: 429a cmp r2, r3 + 8001110: d3e6 bcc.n 80010e0 + } +} + 8001112: 46c0 nop ; (mov r8, r8) + 8001114: 46c0 nop ; (mov r8, r8) + 8001116: 46bd mov sp, r7 + 8001118: b004 add sp, #16 + 800111a: bd80 pop {r7, pc} + +0800111c : + +// Range configuration procedure (set on and off ranges) +void configure(void) { + 800111c: b580 push {r7, lr} + 800111e: af00 add r7, sp, #0 startConfig = 0; - 80010ca: 4b5b ldr r3, [pc, #364] ; (8001238 ) - 80010cc: 2200 movs r2, #0 - 80010ce: 701a strb r2, [r3, #0] + 8001120: 4b35 ldr r3, [pc, #212] ; (80011f8 ) + 8001122: 2200 movs r2, #0 + 8001124: 701a strb r2, [r3, #0] //Fast blink 3 times needConfig = 1; - 80010d0: 4b5a ldr r3, [pc, #360] ; (800123c ) - 80010d2: 2201 movs r2, #1 - 80010d4: 701a strb r2, [r3, #0] - setLightLevel(0); - 80010d6: 2000 movs r0, #0 - 80010d8: f000 fb06 bl 80016e8 - for (i = 0; i < 3; i++) { - 80010dc: 1dfb adds r3, r7, #7 - 80010de: 2200 movs r2, #0 - 80010e0: 701a strb r2, [r3, #0] - 80010e2: e010 b.n 8001106 - setLightLevel(99); - 80010e4: 2063 movs r0, #99 ; 0x63 - 80010e6: f000 faff bl 80016e8 - HAL_Delay(80); - 80010ea: 2050 movs r0, #80 ; 0x50 - 80010ec: f000 fe58 bl 8001da0 - setLightLevel(0); - 80010f0: 2000 movs r0, #0 - 80010f2: f000 faf9 bl 80016e8 - HAL_Delay(80); - 80010f6: 2050 movs r0, #80 ; 0x50 - 80010f8: f000 fe52 bl 8001da0 - for (i = 0; i < 3; i++) { - 80010fc: 1dfb adds r3, r7, #7 - 80010fe: 781a ldrb r2, [r3, #0] - 8001100: 1dfb adds r3, r7, #7 - 8001102: 3201 adds r2, #1 - 8001104: 701a strb r2, [r3, #0] - 8001106: 1dfb adds r3, r7, #7 - 8001108: 781b ldrb r3, [r3, #0] - 800110a: 2b02 cmp r3, #2 - 800110c: d9ea bls.n 80010e4 - } + 8001126: 4b35 ldr r3, [pc, #212] ; (80011fc ) + 8001128: 2201 movs r2, #1 + 800112a: 701a strb r2, [r3, #0] + fastBlink(3); + 800112c: 2003 movs r0, #3 + 800112e: f7ff ffc9 bl 80010c4 //Configure ON distance - needConfig = 1; - 800110e: 4b4b ldr r3, [pc, #300] ; (800123c ) - 8001110: 2201 movs r2, #1 - 8001112: 701a strb r2, [r3, #0] + needConfig = 1; // in case the button was touched during fast blinks + 8001132: 4b32 ldr r3, [pc, #200] ; (80011fc ) + 8001134: 2201 movs r2, #1 + 8001136: 701a strb r2, [r3, #0] while (needConfig) { - 8001114: e01a b.n 800114c + 8001138: e01a b.n 8001170 HAL_Delay(250); - 8001116: 20fa movs r0, #250 ; 0xfa - 8001118: f000 fe42 bl 8001da0 + 800113a: 20fa movs r0, #250 ; 0xfa + 800113c: f000 fe20 bl 8001d80 if (curDist > 1400) setLightLevel(0); - 800111c: 4b48 ldr r3, [pc, #288] ; (8001240 ) - 800111e: 881a ldrh r2, [r3, #0] - 8001120: 23af movs r3, #175 ; 0xaf - 8001122: 00db lsls r3, r3, #3 - 8001124: 429a cmp r2, r3 - 8001126: d903 bls.n 8001130 - 8001128: 2000 movs r0, #0 - 800112a: f000 fadd bl 80016e8 - 800112e: e00d b.n 800114c + 8001140: 4b2f ldr r3, [pc, #188] ; (8001200 ) + 8001142: 881a ldrh r2, [r3, #0] + 8001144: 23af movs r3, #175 ; 0xaf + 8001146: 00db lsls r3, r3, #3 + 8001148: 429a cmp r2, r3 + 800114a: d903 bls.n 8001154 + 800114c: 2000 movs r0, #0 + 800114e: f000 fabb bl 80016c8 + 8001152: e00d b.n 8001170 // (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min // (x - 0) * (50 - 0) / (1400 - 0) + 0 // x * 50 / 1400 // (99 - curDist * 99 / 2000) //old version else setLightLevel((uint8_t)(50 - curDist * 50 / 1400)); - 8001130: 4b43 ldr r3, [pc, #268] ; (8001240 ) - 8001132: 881b ldrh r3, [r3, #0] - 8001134: 211c movs r1, #28 - 8001136: 0018 movs r0, r3 - 8001138: f7ff f870 bl 800021c <__divsi3> - 800113c: 0003 movs r3, r0 - 800113e: b2db uxtb r3, r3 - 8001140: 2232 movs r2, #50 ; 0x32 - 8001142: 1ad3 subs r3, r2, r3 - 8001144: b2db uxtb r3, r3 - 8001146: 0018 movs r0, r3 - 8001148: f000 face bl 80016e8 + 8001154: 4b2a ldr r3, [pc, #168] ; (8001200 ) + 8001156: 881b ldrh r3, [r3, #0] + 8001158: 211c movs r1, #28 + 800115a: 0018 movs r0, r3 + 800115c: f7ff f85e bl 800021c <__divsi3> + 8001160: 0003 movs r3, r0 + 8001162: b2db uxtb r3, r3 + 8001164: 2232 movs r2, #50 ; 0x32 + 8001166: 1ad3 subs r3, r2, r3 + 8001168: b2db uxtb r3, r3 + 800116a: 0018 movs r0, r3 + 800116c: f000 faac bl 80016c8 while (needConfig) { - 800114c: 4b3b ldr r3, [pc, #236] ; (800123c ) - 800114e: 781b ldrb r3, [r3, #0] - 8001150: 2b00 cmp r3, #0 - 8001152: d1e0 bne.n 8001116 + 8001170: 4b22 ldr r3, [pc, #136] ; (80011fc ) + 8001172: 781b ldrb r3, [r3, #0] + 8001174: 2b00 cmp r3, #0 + 8001176: d1e0 bne.n 800113a } configuration.config.dist_on = curDist; - 8001154: 4b3a ldr r3, [pc, #232] ; (8001240 ) - 8001156: 881a ldrh r2, [r3, #0] - 8001158: 4b3a ldr r3, [pc, #232] ; (8001244 ) - 800115a: 809a strh r2, [r3, #4] + 8001178: 4b21 ldr r3, [pc, #132] ; (8001200 ) + 800117a: 881a ldrh r2, [r3, #0] + 800117c: 4b21 ldr r3, [pc, #132] ; (8001204 ) + 800117e: 809a strh r2, [r3, #4] //Fast blink 2 times needConfig = 1; - 800115c: 4b37 ldr r3, [pc, #220] ; (800123c ) - 800115e: 2201 movs r2, #1 - 8001160: 701a strb r2, [r3, #0] - setLightLevel(0); - 8001162: 2000 movs r0, #0 - 8001164: f000 fac0 bl 80016e8 - for (i = 0; i < 2; i++) { - 8001168: 1dfb adds r3, r7, #7 - 800116a: 2200 movs r2, #0 - 800116c: 701a strb r2, [r3, #0] - 800116e: e010 b.n 8001192 - setLightLevel(99); - 8001170: 2063 movs r0, #99 ; 0x63 - 8001172: f000 fab9 bl 80016e8 - HAL_Delay(80); - 8001176: 2050 movs r0, #80 ; 0x50 - 8001178: f000 fe12 bl 8001da0 - setLightLevel(0); - 800117c: 2000 movs r0, #0 - 800117e: f000 fab3 bl 80016e8 - HAL_Delay(80); - 8001182: 2050 movs r0, #80 ; 0x50 - 8001184: f000 fe0c bl 8001da0 - for (i = 0; i < 2; i++) { - 8001188: 1dfb adds r3, r7, #7 - 800118a: 781a ldrb r2, [r3, #0] - 800118c: 1dfb adds r3, r7, #7 - 800118e: 3201 adds r2, #1 - 8001190: 701a strb r2, [r3, #0] - 8001192: 1dfb adds r3, r7, #7 - 8001194: 781b ldrb r3, [r3, #0] - 8001196: 2b01 cmp r3, #1 - 8001198: d9ea bls.n 8001170 - } + 8001180: 4b1e ldr r3, [pc, #120] ; (80011fc ) + 8001182: 2201 movs r2, #1 + 8001184: 701a strb r2, [r3, #0] + fastBlink(2); + 8001186: 2002 movs r0, #2 + 8001188: f7ff ff9c bl 80010c4 //Configure OFF distance - needConfig = 1; - 800119a: 4b28 ldr r3, [pc, #160] ; (800123c ) - 800119c: 2201 movs r2, #1 - 800119e: 701a strb r2, [r3, #0] + needConfig = 1; // in case the button was touched during fast blinks + 800118c: 4b1b ldr r3, [pc, #108] ; (80011fc ) + 800118e: 2201 movs r2, #1 + 8001190: 701a strb r2, [r3, #0] while (needConfig) { - 80011a0: e01a b.n 80011d8 + 8001192: e01a b.n 80011ca HAL_Delay(250); - 80011a2: 20fa movs r0, #250 ; 0xfa - 80011a4: f000 fdfc bl 8001da0 + 8001194: 20fa movs r0, #250 ; 0xfa + 8001196: f000 fdf3 bl 8001d80 if (curDist > 1400) setLightLevel(0); - 80011a8: 4b25 ldr r3, [pc, #148] ; (8001240 ) - 80011aa: 881a ldrh r2, [r3, #0] - 80011ac: 23af movs r3, #175 ; 0xaf - 80011ae: 00db lsls r3, r3, #3 - 80011b0: 429a cmp r2, r3 - 80011b2: d903 bls.n 80011bc - 80011b4: 2000 movs r0, #0 - 80011b6: f000 fa97 bl 80016e8 - 80011ba: e00d b.n 80011d8 + 800119a: 4b19 ldr r3, [pc, #100] ; (8001200 ) + 800119c: 881a ldrh r2, [r3, #0] + 800119e: 23af movs r3, #175 ; 0xaf + 80011a0: 00db lsls r3, r3, #3 + 80011a2: 429a cmp r2, r3 + 80011a4: d903 bls.n 80011ae + 80011a6: 2000 movs r0, #0 + 80011a8: f000 fa8e bl 80016c8 + 80011ac: e00d b.n 80011ca else setLightLevel((uint8_t)(50 - curDist * 50 / 1400)); - 80011bc: 4b20 ldr r3, [pc, #128] ; (8001240 ) - 80011be: 881b ldrh r3, [r3, #0] - 80011c0: 211c movs r1, #28 - 80011c2: 0018 movs r0, r3 - 80011c4: f7ff f82a bl 800021c <__divsi3> - 80011c8: 0003 movs r3, r0 - 80011ca: b2db uxtb r3, r3 - 80011cc: 2232 movs r2, #50 ; 0x32 - 80011ce: 1ad3 subs r3, r2, r3 - 80011d0: b2db uxtb r3, r3 - 80011d2: 0018 movs r0, r3 - 80011d4: f000 fa88 bl 80016e8 + 80011ae: 4b14 ldr r3, [pc, #80] ; (8001200 ) + 80011b0: 881b ldrh r3, [r3, #0] + 80011b2: 211c movs r1, #28 + 80011b4: 0018 movs r0, r3 + 80011b6: f7ff f831 bl 800021c <__divsi3> + 80011ba: 0003 movs r3, r0 + 80011bc: b2db uxtb r3, r3 + 80011be: 2232 movs r2, #50 ; 0x32 + 80011c0: 1ad3 subs r3, r2, r3 + 80011c2: b2db uxtb r3, r3 + 80011c4: 0018 movs r0, r3 + 80011c6: f000 fa7f bl 80016c8 while (needConfig) { - 80011d8: 4b18 ldr r3, [pc, #96] ; (800123c ) - 80011da: 781b ldrb r3, [r3, #0] - 80011dc: 2b00 cmp r3, #0 - 80011de: d1e0 bne.n 80011a2 + 80011ca: 4b0c ldr r3, [pc, #48] ; (80011fc ) + 80011cc: 781b ldrb r3, [r3, #0] + 80011ce: 2b00 cmp r3, #0 + 80011d0: d1e0 bne.n 8001194 } configuration.config.dist_off = curDist; - 80011e0: 4b17 ldr r3, [pc, #92] ; (8001240 ) - 80011e2: 881a ldrh r2, [r3, #0] - 80011e4: 4b17 ldr r3, [pc, #92] ; (8001244 ) - 80011e6: 80da strh r2, [r3, #6] + 80011d2: 4b0b ldr r3, [pc, #44] ; (8001200 ) + 80011d4: 881a ldrh r2, [r3, #0] + 80011d6: 4b0b ldr r3, [pc, #44] ; (8001204 ) + 80011d8: 80da strh r2, [r3, #6] saveConfig(); - 80011e8: f7ff feea bl 8000fc0 + 80011da: f7ff fef1 bl 8000fc0 //Fast blink 5 times needConfig = 1; - 80011ec: 4b13 ldr r3, [pc, #76] ; (800123c ) - 80011ee: 2201 movs r2, #1 - 80011f0: 701a strb r2, [r3, #0] - setLightLevel(0); - 80011f2: 2000 movs r0, #0 - 80011f4: f000 fa78 bl 80016e8 - for (i = 0; i < 5; i++) { - 80011f8: 1dfb adds r3, r7, #7 - 80011fa: 2200 movs r2, #0 - 80011fc: 701a strb r2, [r3, #0] - 80011fe: e010 b.n 8001222 - setLightLevel(99); - 8001200: 2063 movs r0, #99 ; 0x63 - 8001202: f000 fa71 bl 80016e8 - HAL_Delay(80); - 8001206: 2050 movs r0, #80 ; 0x50 - 8001208: f000 fdca bl 8001da0 - setLightLevel(0); - 800120c: 2000 movs r0, #0 - 800120e: f000 fa6b bl 80016e8 - HAL_Delay(80); - 8001212: 2050 movs r0, #80 ; 0x50 - 8001214: f000 fdc4 bl 8001da0 - for (i = 0; i < 5; i++) { - 8001218: 1dfb adds r3, r7, #7 - 800121a: 781a ldrb r2, [r3, #0] - 800121c: 1dfb adds r3, r7, #7 - 800121e: 3201 adds r2, #1 - 8001220: 701a strb r2, [r3, #0] - 8001222: 1dfb adds r3, r7, #7 - 8001224: 781b ldrb r3, [r3, #0] - 8001226: 2b04 cmp r3, #4 - 8001228: d9ea bls.n 8001200 - } + 80011de: 4b07 ldr r3, [pc, #28] ; (80011fc ) + 80011e0: 2201 movs r2, #1 + 80011e2: 701a strb r2, [r3, #0] + fastBlink(5); + 80011e4: 2005 movs r0, #5 + 80011e6: f7ff ff6d bl 80010c4 needConfig = 0; - 800122a: 4b04 ldr r3, [pc, #16] ; (800123c ) - 800122c: 2200 movs r2, #0 - 800122e: 701a strb r2, [r3, #0] + 80011ea: 4b04 ldr r3, [pc, #16] ; (80011fc ) + 80011ec: 2200 movs r2, #0 + 80011ee: 701a strb r2, [r3, #0] } - 8001230: 46c0 nop ; (mov r8, r8) - 8001232: 46bd mov sp, r7 - 8001234: b002 add sp, #8 - 8001236: bd80 pop {r7, pc} - 8001238: 20000226 .word 0x20000226 - 800123c: 20000000 .word 0x20000000 - 8001240: 20000222 .word 0x20000222 - 8001244: 20000210 .word 0x20000210 + 80011f0: 46c0 nop ; (mov r8, r8) + 80011f2: 46bd mov sp, r7 + 80011f4: bd80 pop {r7, pc} + 80011f6: 46c0 nop ; (mov r8, r8) + 80011f8: 20000226 .word 0x20000226 + 80011fc: 20000000 .word 0x20000000 + 8001200: 20000222 .word 0x20000222 + 8001204: 20000210 .word 0x20000210 -08001248

: +08001208
: /** * @brief The application entry point. * @retval int */ int main(void) { - 8001248: b580 push {r7, lr} - 800124a: af00 add r7, sp, #0 + 8001208: b580 push {r7, lr} + 800120a: af00 add r7, sp, #0 /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); - 800124c: f000 fd22 bl 8001c94 + 800120c: f000 fd32 bl 8001c74 /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); - 8001250: f000 f834 bl 80012bc + 8001210: f000 f844 bl 800129c /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); - 8001254: f000 f9c6 bl 80015e4 + 8001214: f000 f9d6 bl 80015c4 MX_I2C1_Init(); - 8001258: f000 f8b2 bl 80013c0 + 8001218: f000 f8c2 bl 80013a0 MX_TIM3_Init(); - 800125c: f000 f8f0 bl 8001440 + 800121c: f000 f900 bl 8001420 MX_TIM17_Init(); - 8001260: f000 f996 bl 8001590 + 8001220: f000 f9a6 bl 8001570 MX_CRC_Init(); - 8001264: f000 f888 bl 8001378 + 8001224: f000 f898 bl 8001358 MX_TIM16_Init(); - 8001268: f000 f968 bl 800153c + 8001228: f000 f978 bl 800151c // TIM3 - PWM timer // TIM16 - ticks timer (10Hz - 100ms) // TIM17 - timer for light fading loadConfig(); - 800126c: f7ff fe68 bl 8000f40 + 800122c: f7ff fe88 bl 8000f40 - initVL53L0X(1); - 8001270: 2001 movs r0, #1 - 8001272: f004 fb53 bl 800591c - // lower the return signal rate limit (default is 0.25 MCPS) - // setSignalRateLimit(0.1); - // increase laser pulse periods (defaults are 14 and 10 PCLKs) - // setVcselPulsePeriod(VcselPeriodPreRange, 18); - // setVcselPulsePeriod(VcselPeriodFinalRange, 14); - TOF_Ready = 1; - 8001276: 4b0d ldr r3, [pc, #52] ; (80012ac ) - 8001278: 2201 movs r2, #1 - 800127a: 701a strb r2, [r3, #0] - setMeasurementTimingBudget( 500 * 1000UL ); // integrate over 500 ms per measurement - 800127c: 4b0c ldr r3, [pc, #48] ; (80012b0 ) - 800127e: 0018 movs r0, r3 - 8001280: f004 fde0 bl 8005e44 + // Set IO timeout for range sensor + setTimeout(250); + 8001230: 20fa movs r0, #250 ; 0xfa + 8001232: f005 f843 bl 80062bc - // Start measurements every second - startContinuous(1000); - 8001284: 23fa movs r3, #250 ; 0xfa - 8001286: 009b lsls r3, r3, #2 - 8001288: 0018 movs r0, r3 - 800128a: f004 ff55 bl 8006138 + TOF_Ready = initVL53L0X(1); + 8001236: 2001 movs r0, #1 + 8001238: f004 fb60 bl 80058fc + 800123c: 0003 movs r3, r0 + 800123e: 001a movs r2, r3 + 8001240: 4b12 ldr r3, [pc, #72] ; (800128c ) + 8001242: 701a strb r2, [r3, #0] + if (TOF_Ready) { + 8001244: 4b11 ldr r3, [pc, #68] ; (800128c ) + 8001246: 781b ldrb r3, [r3, #0] + 8001248: 2b00 cmp r3, #0 + 800124a: d008 beq.n 800125e + // lower the return signal rate limit (default is 0.25 MCPS) + // setSignalRateLimit(0.1); + // increase laser pulse periods (defaults are 14 and 10 PCLKs) + // setVcselPulsePeriod(VcselPeriodPreRange, 18); + // setVcselPulsePeriod(VcselPeriodFinalRange, 14); + setMeasurementTimingBudget( 500 * 1000UL ); // integrate over 500 ms per measurement + 800124c: 4b10 ldr r3, [pc, #64] ; (8001290 ) + 800124e: 0018 movs r0, r3 + 8001250: f004 fde8 bl 8005e24 + // Start measurements every second + startContinuous(1000); + 8001254: 23fa movs r3, #250 ; 0xfa + 8001256: 009b lsls r3, r3, #2 + 8001258: 0018 movs r0, r3 + 800125a: f004 ff5d bl 8006118 + } HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); - 800128e: 4b09 ldr r3, [pc, #36] ; (80012b4 ) - 8001290: 2100 movs r1, #0 - 8001292: 0018 movs r0, r3 - 8001294: f003 f9c0 bl 8004618 + 800125e: 4b0d ldr r3, [pc, #52] ; (8001294 ) + 8001260: 2100 movs r1, #0 + 8001262: 0018 movs r0, r3 + 8001264: f003 f9c8 bl 80045f8 + + // Fast-blink 10 times to indicate range sensor error + if (!TOF_Ready) { + 8001268: 4b08 ldr r3, [pc, #32] ; (800128c ) + 800126a: 781b ldrb r3, [r3, #0] + 800126c: 2b00 cmp r3, #0 + 800126e: d102 bne.n 8001276 + fastBlink(10); + 8001270: 200a movs r0, #10 + 8001272: f7ff ff27 bl 80010c4 /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { if (startConfig) { - 8001298: 4b07 ldr r3, [pc, #28] ; (80012b8 ) - 800129a: 781b ldrb r3, [r3, #0] - 800129c: 2b00 cmp r3, #0 - 800129e: d001 beq.n 80012a4 + 8001276: 4b08 ldr r3, [pc, #32] ; (8001298 ) + 8001278: 781b ldrb r3, [r3, #0] + 800127a: 2b00 cmp r3, #0 + 800127c: d001 beq.n 8001282 configure(); - 80012a0: f7ff ff10 bl 80010c4 + 800127e: f7ff ff4d bl 800111c } - HAL_Delay(100); - 80012a4: 2064 movs r0, #100 ; 0x64 - 80012a6: f000 fd7b bl 8001da0 - if (startConfig) { - 80012aa: e7f5 b.n 8001298 - 80012ac: 20000220 .word 0x20000220 - 80012b0: 0007a120 .word 0x0007a120 - 80012b4: 2000012c .word 0x2000012c - 80012b8: 20000226 .word 0x20000226 -080012bc : + HAL_Delay(100); + 8001282: 2064 movs r0, #100 ; 0x64 + 8001284: f000 fd7c bl 8001d80 + if (startConfig) { + 8001288: e7f5 b.n 8001276 + 800128a: 46c0 nop ; (mov r8, r8) + 800128c: 20000220 .word 0x20000220 + 8001290: 0007a120 .word 0x0007a120 + 8001294: 2000012c .word 0x2000012c + 8001298: 20000226 .word 0x20000226 + +0800129c : /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { - 80012bc: b590 push {r4, r7, lr} - 80012be: b093 sub sp, #76 ; 0x4c - 80012c0: af00 add r7, sp, #0 + 800129c: b590 push {r4, r7, lr} + 800129e: b093 sub sp, #76 ; 0x4c + 80012a0: af00 add r7, sp, #0 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 80012c2: 2410 movs r4, #16 - 80012c4: 193b adds r3, r7, r4 - 80012c6: 0018 movs r0, r3 - 80012c8: 2338 movs r3, #56 ; 0x38 - 80012ca: 001a movs r2, r3 - 80012cc: 2100 movs r1, #0 - 80012ce: f005 fa4f bl 8006770 + 80012a2: 2410 movs r4, #16 + 80012a4: 193b adds r3, r7, r4 + 80012a6: 0018 movs r0, r3 + 80012a8: 2338 movs r3, #56 ; 0x38 + 80012aa: 001a movs r2, r3 + 80012ac: 2100 movs r1, #0 + 80012ae: f005 fa5f bl 8006770 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 80012d2: 003b movs r3, r7 - 80012d4: 0018 movs r0, r3 - 80012d6: 2310 movs r3, #16 - 80012d8: 001a movs r2, r3 - 80012da: 2100 movs r1, #0 - 80012dc: f005 fa48 bl 8006770 + 80012b2: 003b movs r3, r7 + 80012b4: 0018 movs r0, r3 + 80012b6: 2310 movs r3, #16 + 80012b8: 001a movs r2, r3 + 80012ba: 2100 movs r1, #0 + 80012bc: f005 fa58 bl 8006770 /** Configure the main internal regulator output voltage */ HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1); - 80012e0: 2380 movs r3, #128 ; 0x80 - 80012e2: 009b lsls r3, r3, #2 - 80012e4: 0018 movs r0, r3 - 80012e6: f002 f9ff bl 80036e8 + 80012c0: 2380 movs r3, #128 ; 0x80 + 80012c2: 009b lsls r3, r3, #2 + 80012c4: 0018 movs r0, r3 + 80012c6: f002 f9ff bl 80036c8 /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - 80012ea: 193b adds r3, r7, r4 - 80012ec: 2202 movs r2, #2 - 80012ee: 601a str r2, [r3, #0] + 80012ca: 193b adds r3, r7, r4 + 80012cc: 2202 movs r2, #2 + 80012ce: 601a str r2, [r3, #0] RCC_OscInitStruct.HSIState = RCC_HSI_ON; - 80012f0: 193b adds r3, r7, r4 - 80012f2: 2280 movs r2, #128 ; 0x80 - 80012f4: 0052 lsls r2, r2, #1 - 80012f6: 60da str r2, [r3, #12] + 80012d0: 193b adds r3, r7, r4 + 80012d2: 2280 movs r2, #128 ; 0x80 + 80012d4: 0052 lsls r2, r2, #1 + 80012d6: 60da str r2, [r3, #12] RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1; - 80012f8: 0021 movs r1, r4 - 80012fa: 187b adds r3, r7, r1 - 80012fc: 2200 movs r2, #0 - 80012fe: 611a str r2, [r3, #16] + 80012d8: 0021 movs r1, r4 + 80012da: 187b adds r3, r7, r1 + 80012dc: 2200 movs r2, #0 + 80012de: 611a str r2, [r3, #16] RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; - 8001300: 187b adds r3, r7, r1 - 8001302: 2240 movs r2, #64 ; 0x40 - 8001304: 615a str r2, [r3, #20] + 80012e0: 187b adds r3, r7, r1 + 80012e2: 2240 movs r2, #64 ; 0x40 + 80012e4: 615a str r2, [r3, #20] RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 8001306: 187b adds r3, r7, r1 - 8001308: 2202 movs r2, #2 - 800130a: 61da str r2, [r3, #28] + 80012e6: 187b adds r3, r7, r1 + 80012e8: 2202 movs r2, #2 + 80012ea: 61da str r2, [r3, #28] RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; - 800130c: 187b adds r3, r7, r1 - 800130e: 2202 movs r2, #2 - 8001310: 621a str r2, [r3, #32] + 80012ec: 187b adds r3, r7, r1 + 80012ee: 2202 movs r2, #2 + 80012f0: 621a str r2, [r3, #32] RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1; - 8001312: 187b adds r3, r7, r1 - 8001314: 2200 movs r2, #0 - 8001316: 625a str r2, [r3, #36] ; 0x24 + 80012f2: 187b adds r3, r7, r1 + 80012f4: 2200 movs r2, #0 + 80012f6: 625a str r2, [r3, #36] ; 0x24 RCC_OscInitStruct.PLL.PLLN = 8; - 8001318: 187b adds r3, r7, r1 - 800131a: 2208 movs r2, #8 - 800131c: 629a str r2, [r3, #40] ; 0x28 + 80012f8: 187b adds r3, r7, r1 + 80012fa: 2208 movs r2, #8 + 80012fc: 629a str r2, [r3, #40] ; 0x28 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - 800131e: 187b adds r3, r7, r1 - 8001320: 2280 movs r2, #128 ; 0x80 - 8001322: 0292 lsls r2, r2, #10 - 8001324: 62da str r2, [r3, #44] ; 0x2c + 80012fe: 187b adds r3, r7, r1 + 8001300: 2280 movs r2, #128 ; 0x80 + 8001302: 0292 lsls r2, r2, #10 + 8001304: 62da str r2, [r3, #44] ; 0x2c RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; - 8001326: 187b adds r3, r7, r1 - 8001328: 2280 movs r2, #128 ; 0x80 - 800132a: 0492 lsls r2, r2, #18 - 800132c: 631a str r2, [r3, #48] ; 0x30 + 8001306: 187b adds r3, r7, r1 + 8001308: 2280 movs r2, #128 ; 0x80 + 800130a: 0492 lsls r2, r2, #18 + 800130c: 631a str r2, [r3, #48] ; 0x30 RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; - 800132e: 187b adds r3, r7, r1 - 8001330: 2280 movs r2, #128 ; 0x80 - 8001332: 0592 lsls r2, r2, #22 - 8001334: 635a str r2, [r3, #52] ; 0x34 + 800130e: 187b adds r3, r7, r1 + 8001310: 2280 movs r2, #128 ; 0x80 + 8001312: 0592 lsls r2, r2, #22 + 8001314: 635a str r2, [r3, #52] ; 0x34 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 8001336: 187b adds r3, r7, r1 - 8001338: 0018 movs r0, r3 - 800133a: f002 fa15 bl 8003768 - 800133e: 1e03 subs r3, r0, #0 - 8001340: d001 beq.n 8001346 + 8001316: 187b adds r3, r7, r1 + 8001318: 0018 movs r0, r3 + 800131a: f002 fa15 bl 8003748 + 800131e: 1e03 subs r3, r0, #0 + 8001320: d001 beq.n 8001326 { Error_Handler(); - 8001342: f000 faf3 bl 800192c + 8001322: f000 faf3 bl 800190c } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 8001346: 003b movs r3, r7 - 8001348: 2207 movs r2, #7 - 800134a: 601a str r2, [r3, #0] + 8001326: 003b movs r3, r7 + 8001328: 2207 movs r2, #7 + 800132a: 601a str r2, [r3, #0] |RCC_CLOCKTYPE_PCLK1; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - 800134c: 003b movs r3, r7 - 800134e: 2202 movs r2, #2 - 8001350: 605a str r2, [r3, #4] + 800132c: 003b movs r3, r7 + 800132e: 2202 movs r2, #2 + 8001330: 605a str r2, [r3, #4] RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 8001352: 003b movs r3, r7 - 8001354: 2200 movs r2, #0 - 8001356: 609a str r2, [r3, #8] + 8001332: 003b movs r3, r7 + 8001334: 2200 movs r2, #0 + 8001336: 609a str r2, [r3, #8] RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - 8001358: 003b movs r3, r7 - 800135a: 2200 movs r2, #0 - 800135c: 60da str r2, [r3, #12] + 8001338: 003b movs r3, r7 + 800133a: 2200 movs r2, #0 + 800133c: 60da str r2, [r3, #12] if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) - 800135e: 003b movs r3, r7 - 8001360: 2102 movs r1, #2 - 8001362: 0018 movs r0, r3 - 8001364: f002 fd1a bl 8003d9c - 8001368: 1e03 subs r3, r0, #0 - 800136a: d001 beq.n 8001370 + 800133e: 003b movs r3, r7 + 8001340: 2102 movs r1, #2 + 8001342: 0018 movs r0, r3 + 8001344: f002 fd1a bl 8003d7c + 8001348: 1e03 subs r3, r0, #0 + 800134a: d001 beq.n 8001350 { Error_Handler(); - 800136c: f000 fade bl 800192c + 800134c: f000 fade bl 800190c } } - 8001370: 46c0 nop ; (mov r8, r8) - 8001372: 46bd mov sp, r7 - 8001374: b013 add sp, #76 ; 0x4c - 8001376: bd90 pop {r4, r7, pc} + 8001350: 46c0 nop ; (mov r8, r8) + 8001352: 46bd mov sp, r7 + 8001354: b013 add sp, #76 ; 0x4c + 8001356: bd90 pop {r4, r7, pc} -08001378 : +08001358 : * @brief CRC Initialization Function * @param None * @retval None */ static void MX_CRC_Init(void) { - 8001378: b580 push {r7, lr} - 800137a: af00 add r7, sp, #0 + 8001358: b580 push {r7, lr} + 800135a: af00 add r7, sp, #0 /* USER CODE END CRC_Init 0 */ /* USER CODE BEGIN CRC_Init 1 */ /* USER CODE END CRC_Init 1 */ hcrc.Instance = CRC; - 800137c: 4b0e ldr r3, [pc, #56] ; (80013b8 ) - 800137e: 4a0f ldr r2, [pc, #60] ; (80013bc ) - 8001380: 601a str r2, [r3, #0] + 800135c: 4b0e ldr r3, [pc, #56] ; (8001398 ) + 800135e: 4a0f ldr r2, [pc, #60] ; (800139c ) + 8001360: 601a str r2, [r3, #0] hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE; - 8001382: 4b0d ldr r3, [pc, #52] ; (80013b8 ) - 8001384: 2200 movs r2, #0 - 8001386: 711a strb r2, [r3, #4] + 8001362: 4b0d ldr r3, [pc, #52] ; (8001398 ) + 8001364: 2200 movs r2, #0 + 8001366: 711a strb r2, [r3, #4] hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE; - 8001388: 4b0b ldr r3, [pc, #44] ; (80013b8 ) - 800138a: 2200 movs r2, #0 - 800138c: 715a strb r2, [r3, #5] + 8001368: 4b0b ldr r3, [pc, #44] ; (8001398 ) + 800136a: 2200 movs r2, #0 + 800136c: 715a strb r2, [r3, #5] hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE; - 800138e: 4b0a ldr r3, [pc, #40] ; (80013b8 ) - 8001390: 2200 movs r2, #0 - 8001392: 615a str r2, [r3, #20] + 800136e: 4b0a ldr r3, [pc, #40] ; (8001398 ) + 8001370: 2200 movs r2, #0 + 8001372: 615a str r2, [r3, #20] hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE; - 8001394: 4b08 ldr r3, [pc, #32] ; (80013b8 ) - 8001396: 2200 movs r2, #0 - 8001398: 619a str r2, [r3, #24] + 8001374: 4b08 ldr r3, [pc, #32] ; (8001398 ) + 8001376: 2200 movs r2, #0 + 8001378: 619a str r2, [r3, #24] hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES; - 800139a: 4b07 ldr r3, [pc, #28] ; (80013b8 ) - 800139c: 2201 movs r2, #1 - 800139e: 621a str r2, [r3, #32] + 800137a: 4b07 ldr r3, [pc, #28] ; (8001398 ) + 800137c: 2201 movs r2, #1 + 800137e: 621a str r2, [r3, #32] if (HAL_CRC_Init(&hcrc) != HAL_OK) - 80013a0: 4b05 ldr r3, [pc, #20] ; (80013b8 ) - 80013a2: 0018 movs r0, r3 - 80013a4: f000 fdfe bl 8001fa4 - 80013a8: 1e03 subs r3, r0, #0 - 80013aa: d001 beq.n 80013b0 + 8001380: 4b05 ldr r3, [pc, #20] ; (8001398 ) + 8001382: 0018 movs r0, r3 + 8001384: f000 fdfe bl 8001f84 + 8001388: 1e03 subs r3, r0, #0 + 800138a: d001 beq.n 8001390 { Error_Handler(); - 80013ac: f000 fabe bl 800192c + 800138c: f000 fabe bl 800190c } /* USER CODE BEGIN CRC_Init 2 */ /* USER CODE END CRC_Init 2 */ } - 80013b0: 46c0 nop ; (mov r8, r8) - 80013b2: 46bd mov sp, r7 - 80013b4: bd80 pop {r7, pc} - 80013b6: 46c0 nop ; (mov r8, r8) - 80013b8: 200000b4 .word 0x200000b4 - 80013bc: 40023000 .word 0x40023000 + 8001390: 46c0 nop ; (mov r8, r8) + 8001392: 46bd mov sp, r7 + 8001394: bd80 pop {r7, pc} + 8001396: 46c0 nop ; (mov r8, r8) + 8001398: 200000b4 .word 0x200000b4 + 800139c: 40023000 .word 0x40023000 -080013c0 : +080013a0 : * @brief I2C1 Initialization Function * @param None * @retval None */ static void MX_I2C1_Init(void) { - 80013c0: b580 push {r7, lr} - 80013c2: af00 add r7, sp, #0 + 80013a0: b580 push {r7, lr} + 80013a2: af00 add r7, sp, #0 /* USER CODE END I2C1_Init 0 */ /* USER CODE BEGIN I2C1_Init 1 */ /* USER CODE END I2C1_Init 1 */ hi2c1.Instance = I2C1; - 80013c4: 4b1b ldr r3, [pc, #108] ; (8001434 ) - 80013c6: 4a1c ldr r2, [pc, #112] ; (8001438 ) - 80013c8: 601a str r2, [r3, #0] + 80013a4: 4b1b ldr r3, [pc, #108] ; (8001414 ) + 80013a6: 4a1c ldr r2, [pc, #112] ; (8001418 ) + 80013a8: 601a str r2, [r3, #0] hi2c1.Init.Timing = 0x10707DBC; - 80013ca: 4b1a ldr r3, [pc, #104] ; (8001434 ) - 80013cc: 4a1b ldr r2, [pc, #108] ; (800143c ) - 80013ce: 605a str r2, [r3, #4] + 80013aa: 4b1a ldr r3, [pc, #104] ; (8001414 ) + 80013ac: 4a1b ldr r2, [pc, #108] ; (800141c ) + 80013ae: 605a str r2, [r3, #4] hi2c1.Init.OwnAddress1 = 0; - 80013d0: 4b18 ldr r3, [pc, #96] ; (8001434 ) - 80013d2: 2200 movs r2, #0 - 80013d4: 609a str r2, [r3, #8] + 80013b0: 4b18 ldr r3, [pc, #96] ; (8001414 ) + 80013b2: 2200 movs r2, #0 + 80013b4: 609a str r2, [r3, #8] hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; - 80013d6: 4b17 ldr r3, [pc, #92] ; (8001434 ) - 80013d8: 2201 movs r2, #1 - 80013da: 60da str r2, [r3, #12] + 80013b6: 4b17 ldr r3, [pc, #92] ; (8001414 ) + 80013b8: 2201 movs r2, #1 + 80013ba: 60da str r2, [r3, #12] hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; - 80013dc: 4b15 ldr r3, [pc, #84] ; (8001434 ) - 80013de: 2200 movs r2, #0 - 80013e0: 611a str r2, [r3, #16] + 80013bc: 4b15 ldr r3, [pc, #84] ; (8001414 ) + 80013be: 2200 movs r2, #0 + 80013c0: 611a str r2, [r3, #16] hi2c1.Init.OwnAddress2 = 0; - 80013e2: 4b14 ldr r3, [pc, #80] ; (8001434 ) - 80013e4: 2200 movs r2, #0 - 80013e6: 615a str r2, [r3, #20] + 80013c2: 4b14 ldr r3, [pc, #80] ; (8001414 ) + 80013c4: 2200 movs r2, #0 + 80013c6: 615a str r2, [r3, #20] hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; - 80013e8: 4b12 ldr r3, [pc, #72] ; (8001434 ) - 80013ea: 2200 movs r2, #0 - 80013ec: 619a str r2, [r3, #24] + 80013c8: 4b12 ldr r3, [pc, #72] ; (8001414 ) + 80013ca: 2200 movs r2, #0 + 80013cc: 619a str r2, [r3, #24] hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; - 80013ee: 4b11 ldr r3, [pc, #68] ; (8001434 ) - 80013f0: 2200 movs r2, #0 - 80013f2: 61da str r2, [r3, #28] + 80013ce: 4b11 ldr r3, [pc, #68] ; (8001414 ) + 80013d0: 2200 movs r2, #0 + 80013d2: 61da str r2, [r3, #28] hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; - 80013f4: 4b0f ldr r3, [pc, #60] ; (8001434 ) - 80013f6: 2200 movs r2, #0 - 80013f8: 621a str r2, [r3, #32] + 80013d4: 4b0f ldr r3, [pc, #60] ; (8001414 ) + 80013d6: 2200 movs r2, #0 + 80013d8: 621a str r2, [r3, #32] if (HAL_I2C_Init(&hi2c1) != HAL_OK) - 80013fa: 4b0e ldr r3, [pc, #56] ; (8001434 ) - 80013fc: 0018 movs r0, r3 - 80013fe: f001 fb07 bl 8002a10 - 8001402: 1e03 subs r3, r0, #0 - 8001404: d001 beq.n 800140a + 80013da: 4b0e ldr r3, [pc, #56] ; (8001414 ) + 80013dc: 0018 movs r0, r3 + 80013de: f001 fb07 bl 80029f0 + 80013e2: 1e03 subs r3, r0, #0 + 80013e4: d001 beq.n 80013ea { Error_Handler(); - 8001406: f000 fa91 bl 800192c + 80013e6: f000 fa91 bl 800190c } /** Configure Analogue filter */ if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK) - 800140a: 4b0a ldr r3, [pc, #40] ; (8001434 ) - 800140c: 2100 movs r1, #0 - 800140e: 0018 movs r0, r3 - 8001410: f002 f8d2 bl 80035b8 - 8001414: 1e03 subs r3, r0, #0 - 8001416: d001 beq.n 800141c + 80013ea: 4b0a ldr r3, [pc, #40] ; (8001414 ) + 80013ec: 2100 movs r1, #0 + 80013ee: 0018 movs r0, r3 + 80013f0: f002 f8d2 bl 8003598 + 80013f4: 1e03 subs r3, r0, #0 + 80013f6: d001 beq.n 80013fc { Error_Handler(); - 8001418: f000 fa88 bl 800192c + 80013f8: f000 fa88 bl 800190c } /** Configure Digital filter */ if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK) - 800141c: 4b05 ldr r3, [pc, #20] ; (8001434 ) - 800141e: 2100 movs r1, #0 - 8001420: 0018 movs r0, r3 - 8001422: f002 f915 bl 8003650 - 8001426: 1e03 subs r3, r0, #0 - 8001428: d001 beq.n 800142e + 80013fc: 4b05 ldr r3, [pc, #20] ; (8001414 ) + 80013fe: 2100 movs r1, #0 + 8001400: 0018 movs r0, r3 + 8001402: f002 f915 bl 8003630 + 8001406: 1e03 subs r3, r0, #0 + 8001408: d001 beq.n 800140e { Error_Handler(); - 800142a: f000 fa7f bl 800192c + 800140a: f000 fa7f bl 800190c } /* USER CODE BEGIN I2C1_Init 2 */ /* USER CODE END I2C1_Init 2 */ } - 800142e: 46c0 nop ; (mov r8, r8) - 8001430: 46bd mov sp, r7 - 8001432: bd80 pop {r7, pc} - 8001434: 200000d8 .word 0x200000d8 - 8001438: 40005400 .word 0x40005400 - 800143c: 10707dbc .word 0x10707dbc + 800140e: 46c0 nop ; (mov r8, r8) + 8001410: 46bd mov sp, r7 + 8001412: bd80 pop {r7, pc} + 8001414: 200000d8 .word 0x200000d8 + 8001418: 40005400 .word 0x40005400 + 800141c: 10707dbc .word 0x10707dbc -08001440 : +08001420 : * @brief TIM3 Initialization Function * @param None * @retval None */ static void MX_TIM3_Init(void) { - 8001440: b580 push {r7, lr} - 8001442: b08e sub sp, #56 ; 0x38 - 8001444: af00 add r7, sp, #0 + 8001420: b580 push {r7, lr} + 8001422: b08e sub sp, #56 ; 0x38 + 8001424: af00 add r7, sp, #0 /* USER CODE BEGIN TIM3_Init 0 */ /* USER CODE END TIM3_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 8001446: 2328 movs r3, #40 ; 0x28 - 8001448: 18fb adds r3, r7, r3 - 800144a: 0018 movs r0, r3 - 800144c: 2310 movs r3, #16 - 800144e: 001a movs r2, r3 - 8001450: 2100 movs r1, #0 - 8001452: f005 f98d bl 8006770 + 8001426: 2328 movs r3, #40 ; 0x28 + 8001428: 18fb adds r3, r7, r3 + 800142a: 0018 movs r0, r3 + 800142c: 2310 movs r3, #16 + 800142e: 001a movs r2, r3 + 8001430: 2100 movs r1, #0 + 8001432: f005 f99d bl 8006770 TIM_MasterConfigTypeDef sMasterConfig = {0}; - 8001456: 231c movs r3, #28 - 8001458: 18fb adds r3, r7, r3 - 800145a: 0018 movs r0, r3 - 800145c: 230c movs r3, #12 - 800145e: 001a movs r2, r3 - 8001460: 2100 movs r1, #0 - 8001462: f005 f985 bl 8006770 + 8001436: 231c movs r3, #28 + 8001438: 18fb adds r3, r7, r3 + 800143a: 0018 movs r0, r3 + 800143c: 230c movs r3, #12 + 800143e: 001a movs r2, r3 + 8001440: 2100 movs r1, #0 + 8001442: f005 f995 bl 8006770 TIM_OC_InitTypeDef sConfigOC = {0}; - 8001466: 003b movs r3, r7 - 8001468: 0018 movs r0, r3 - 800146a: 231c movs r3, #28 - 800146c: 001a movs r2, r3 - 800146e: 2100 movs r1, #0 - 8001470: f005 f97e bl 8006770 + 8001446: 003b movs r3, r7 + 8001448: 0018 movs r0, r3 + 800144a: 231c movs r3, #28 + 800144c: 001a movs r2, r3 + 800144e: 2100 movs r1, #0 + 8001450: f005 f98e bl 8006770 /* USER CODE BEGIN TIM3_Init 1 */ /* USER CODE END TIM3_Init 1 */ htim3.Instance = TIM3; - 8001474: 4b2f ldr r3, [pc, #188] ; (8001534 ) - 8001476: 4a30 ldr r2, [pc, #192] ; (8001538 ) - 8001478: 601a str r2, [r3, #0] + 8001454: 4b2f ldr r3, [pc, #188] ; (8001514 ) + 8001456: 4a30 ldr r2, [pc, #192] ; (8001518 ) + 8001458: 601a str r2, [r3, #0] htim3.Init.Prescaler = 20-1; - 800147a: 4b2e ldr r3, [pc, #184] ; (8001534 ) - 800147c: 2213 movs r2, #19 - 800147e: 605a str r2, [r3, #4] + 800145a: 4b2e ldr r3, [pc, #184] ; (8001514 ) + 800145c: 2213 movs r2, #19 + 800145e: 605a str r2, [r3, #4] htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - 8001480: 4b2c ldr r3, [pc, #176] ; (8001534 ) - 8001482: 2200 movs r2, #0 - 8001484: 609a str r2, [r3, #8] + 8001460: 4b2c ldr r3, [pc, #176] ; (8001514 ) + 8001462: 2200 movs r2, #0 + 8001464: 609a str r2, [r3, #8] htim3.Init.Period = 100-1; - 8001486: 4b2b ldr r3, [pc, #172] ; (8001534 ) - 8001488: 2263 movs r2, #99 ; 0x63 - 800148a: 60da str r2, [r3, #12] + 8001466: 4b2b ldr r3, [pc, #172] ; (8001514 ) + 8001468: 2263 movs r2, #99 ; 0x63 + 800146a: 60da str r2, [r3, #12] htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 800148c: 4b29 ldr r3, [pc, #164] ; (8001534 ) - 800148e: 2200 movs r2, #0 - 8001490: 611a str r2, [r3, #16] + 800146c: 4b29 ldr r3, [pc, #164] ; (8001514 ) + 800146e: 2200 movs r2, #0 + 8001470: 611a str r2, [r3, #16] htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8001492: 4b28 ldr r3, [pc, #160] ; (8001534 ) - 8001494: 2200 movs r2, #0 - 8001496: 619a str r2, [r3, #24] + 8001472: 4b28 ldr r3, [pc, #160] ; (8001514 ) + 8001474: 2200 movs r2, #0 + 8001476: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - 8001498: 4b26 ldr r3, [pc, #152] ; (8001534 ) - 800149a: 0018 movs r0, r3 - 800149c: f002 ff82 bl 80043a4 - 80014a0: 1e03 subs r3, r0, #0 - 80014a2: d001 beq.n 80014a8 + 8001478: 4b26 ldr r3, [pc, #152] ; (8001514 ) + 800147a: 0018 movs r0, r3 + 800147c: f002 ff82 bl 8004384 + 8001480: 1e03 subs r3, r0, #0 + 8001482: d001 beq.n 8001488 { Error_Handler(); - 80014a4: f000 fa42 bl 800192c + 8001484: f000 fa42 bl 800190c } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 80014a8: 2128 movs r1, #40 ; 0x28 - 80014aa: 187b adds r3, r7, r1 - 80014ac: 2280 movs r2, #128 ; 0x80 - 80014ae: 0152 lsls r2, r2, #5 - 80014b0: 601a str r2, [r3, #0] + 8001488: 2128 movs r1, #40 ; 0x28 + 800148a: 187b adds r3, r7, r1 + 800148c: 2280 movs r2, #128 ; 0x80 + 800148e: 0152 lsls r2, r2, #5 + 8001490: 601a str r2, [r3, #0] if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - 80014b2: 187a adds r2, r7, r1 - 80014b4: 4b1f ldr r3, [pc, #124] ; (8001534 ) - 80014b6: 0011 movs r1, r2 - 80014b8: 0018 movs r0, r3 - 80014ba: f003 fbbd bl 8004c38 - 80014be: 1e03 subs r3, r0, #0 - 80014c0: d001 beq.n 80014c6 + 8001492: 187a adds r2, r7, r1 + 8001494: 4b1f ldr r3, [pc, #124] ; (8001514 ) + 8001496: 0011 movs r1, r2 + 8001498: 0018 movs r0, r3 + 800149a: f003 fbbd bl 8004c18 + 800149e: 1e03 subs r3, r0, #0 + 80014a0: d001 beq.n 80014a6 { Error_Handler(); - 80014c2: f000 fa33 bl 800192c + 80014a2: f000 fa33 bl 800190c } if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - 80014c6: 4b1b ldr r3, [pc, #108] ; (8001534 ) - 80014c8: 0018 movs r0, r3 - 80014ca: f003 f845 bl 8004558 - 80014ce: 1e03 subs r3, r0, #0 - 80014d0: d001 beq.n 80014d6 + 80014a6: 4b1b ldr r3, [pc, #108] ; (8001514 ) + 80014a8: 0018 movs r0, r3 + 80014aa: f003 f845 bl 8004538 + 80014ae: 1e03 subs r3, r0, #0 + 80014b0: d001 beq.n 80014b6 { Error_Handler(); - 80014d2: f000 fa2b bl 800192c + 80014b2: f000 fa2b bl 800190c } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 80014d6: 211c movs r1, #28 - 80014d8: 187b adds r3, r7, r1 - 80014da: 2200 movs r2, #0 - 80014dc: 601a str r2, [r3, #0] + 80014b6: 211c movs r1, #28 + 80014b8: 187b adds r3, r7, r1 + 80014ba: 2200 movs r2, #0 + 80014bc: 601a str r2, [r3, #0] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 80014de: 187b adds r3, r7, r1 - 80014e0: 2200 movs r2, #0 - 80014e2: 609a str r2, [r3, #8] + 80014be: 187b adds r3, r7, r1 + 80014c0: 2200 movs r2, #0 + 80014c2: 609a str r2, [r3, #8] if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - 80014e4: 187a adds r2, r7, r1 - 80014e6: 4b13 ldr r3, [pc, #76] ; (8001534 ) - 80014e8: 0011 movs r1, r2 - 80014ea: 0018 movs r0, r3 - 80014ec: f004 f86c bl 80055c8 - 80014f0: 1e03 subs r3, r0, #0 - 80014f2: d001 beq.n 80014f8 + 80014c4: 187a adds r2, r7, r1 + 80014c6: 4b13 ldr r3, [pc, #76] ; (8001514 ) + 80014c8: 0011 movs r1, r2 + 80014ca: 0018 movs r0, r3 + 80014cc: f004 f86c bl 80055a8 + 80014d0: 1e03 subs r3, r0, #0 + 80014d2: d001 beq.n 80014d8 { Error_Handler(); - 80014f4: f000 fa1a bl 800192c + 80014d4: f000 fa1a bl 800190c } sConfigOC.OCMode = TIM_OCMODE_PWM1; - 80014f8: 003b movs r3, r7 - 80014fa: 2260 movs r2, #96 ; 0x60 - 80014fc: 601a str r2, [r3, #0] + 80014d8: 003b movs r3, r7 + 80014da: 2260 movs r2, #96 ; 0x60 + 80014dc: 601a str r2, [r3, #0] sConfigOC.Pulse = 0; - 80014fe: 003b movs r3, r7 - 8001500: 2200 movs r2, #0 - 8001502: 605a str r2, [r3, #4] + 80014de: 003b movs r3, r7 + 80014e0: 2200 movs r2, #0 + 80014e2: 605a str r2, [r3, #4] sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 8001504: 003b movs r3, r7 - 8001506: 2200 movs r2, #0 - 8001508: 609a str r2, [r3, #8] + 80014e4: 003b movs r3, r7 + 80014e6: 2200 movs r2, #0 + 80014e8: 609a str r2, [r3, #8] sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - 800150a: 003b movs r3, r7 - 800150c: 2200 movs r2, #0 - 800150e: 611a str r2, [r3, #16] + 80014ea: 003b movs r3, r7 + 80014ec: 2200 movs r2, #0 + 80014ee: 611a str r2, [r3, #16] if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 8001510: 0039 movs r1, r7 - 8001512: 4b08 ldr r3, [pc, #32] ; (8001534 ) - 8001514: 2200 movs r2, #0 - 8001516: 0018 movs r0, r3 - 8001518: f003 fa8e bl 8004a38 - 800151c: 1e03 subs r3, r0, #0 - 800151e: d001 beq.n 8001524 + 80014f0: 0039 movs r1, r7 + 80014f2: 4b08 ldr r3, [pc, #32] ; (8001514 ) + 80014f4: 2200 movs r2, #0 + 80014f6: 0018 movs r0, r3 + 80014f8: f003 fa8e bl 8004a18 + 80014fc: 1e03 subs r3, r0, #0 + 80014fe: d001 beq.n 8001504 { Error_Handler(); - 8001520: f000 fa04 bl 800192c + 8001500: f000 fa04 bl 800190c } /* USER CODE BEGIN TIM3_Init 2 */ /* USER CODE END TIM3_Init 2 */ HAL_TIM_MspPostInit(&htim3); - 8001524: 4b03 ldr r3, [pc, #12] ; (8001534 ) - 8001526: 0018 movs r0, r3 - 8001528: f000 fb06 bl 8001b38 + 8001504: 4b03 ldr r3, [pc, #12] ; (8001514 ) + 8001506: 0018 movs r0, r3 + 8001508: f000 fb06 bl 8001b18 } - 800152c: 46c0 nop ; (mov r8, r8) - 800152e: 46bd mov sp, r7 - 8001530: b00e add sp, #56 ; 0x38 - 8001532: bd80 pop {r7, pc} - 8001534: 2000012c .word 0x2000012c - 8001538: 40000400 .word 0x40000400 + 800150c: 46c0 nop ; (mov r8, r8) + 800150e: 46bd mov sp, r7 + 8001510: b00e add sp, #56 ; 0x38 + 8001512: bd80 pop {r7, pc} + 8001514: 2000012c .word 0x2000012c + 8001518: 40000400 .word 0x40000400 -0800153c : +0800151c : * @brief TIM16 Initialization Function * @param None * @retval None */ static void MX_TIM16_Init(void) { - 800153c: b580 push {r7, lr} - 800153e: af00 add r7, sp, #0 + 800151c: b580 push {r7, lr} + 800151e: af00 add r7, sp, #0 /* USER CODE END TIM16_Init 0 */ /* USER CODE BEGIN TIM16_Init 1 */ /* USER CODE END TIM16_Init 1 */ htim16.Instance = TIM16; - 8001540: 4b0f ldr r3, [pc, #60] ; (8001580 ) - 8001542: 4a10 ldr r2, [pc, #64] ; (8001584 ) - 8001544: 601a str r2, [r3, #0] + 8001520: 4b0f ldr r3, [pc, #60] ; (8001560 ) + 8001522: 4a10 ldr r2, [pc, #64] ; (8001564 ) + 8001524: 601a str r2, [r3, #0] htim16.Init.Prescaler = 640-1; - 8001546: 4b0e ldr r3, [pc, #56] ; (8001580 ) - 8001548: 4a0f ldr r2, [pc, #60] ; (8001588 ) - 800154a: 605a str r2, [r3, #4] + 8001526: 4b0e ldr r3, [pc, #56] ; (8001560 ) + 8001528: 4a0f ldr r2, [pc, #60] ; (8001568 ) + 800152a: 605a str r2, [r3, #4] htim16.Init.CounterMode = TIM_COUNTERMODE_UP; - 800154c: 4b0c ldr r3, [pc, #48] ; (8001580 ) - 800154e: 2200 movs r2, #0 - 8001550: 609a str r2, [r3, #8] + 800152c: 4b0c ldr r3, [pc, #48] ; (8001560 ) + 800152e: 2200 movs r2, #0 + 8001530: 609a str r2, [r3, #8] htim16.Init.Period = 10000-1; - 8001552: 4b0b ldr r3, [pc, #44] ; (8001580 ) - 8001554: 4a0d ldr r2, [pc, #52] ; (800158c ) - 8001556: 60da str r2, [r3, #12] + 8001532: 4b0b ldr r3, [pc, #44] ; (8001560 ) + 8001534: 4a0d ldr r2, [pc, #52] ; (800156c ) + 8001536: 60da str r2, [r3, #12] htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 8001558: 4b09 ldr r3, [pc, #36] ; (8001580 ) - 800155a: 2200 movs r2, #0 - 800155c: 611a str r2, [r3, #16] + 8001538: 4b09 ldr r3, [pc, #36] ; (8001560 ) + 800153a: 2200 movs r2, #0 + 800153c: 611a str r2, [r3, #16] htim16.Init.RepetitionCounter = 0; - 800155e: 4b08 ldr r3, [pc, #32] ; (8001580 ) - 8001560: 2200 movs r2, #0 - 8001562: 615a str r2, [r3, #20] + 800153e: 4b08 ldr r3, [pc, #32] ; (8001560 ) + 8001540: 2200 movs r2, #0 + 8001542: 615a str r2, [r3, #20] htim16.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8001564: 4b06 ldr r3, [pc, #24] ; (8001580 ) - 8001566: 2200 movs r2, #0 - 8001568: 619a str r2, [r3, #24] + 8001544: 4b06 ldr r3, [pc, #24] ; (8001560 ) + 8001546: 2200 movs r2, #0 + 8001548: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim16) != HAL_OK) - 800156a: 4b05 ldr r3, [pc, #20] ; (8001580 ) - 800156c: 0018 movs r0, r3 - 800156e: f002 ff19 bl 80043a4 - 8001572: 1e03 subs r3, r0, #0 - 8001574: d001 beq.n 800157a + 800154a: 4b05 ldr r3, [pc, #20] ; (8001560 ) + 800154c: 0018 movs r0, r3 + 800154e: f002 ff19 bl 8004384 + 8001552: 1e03 subs r3, r0, #0 + 8001554: d001 beq.n 800155a { Error_Handler(); - 8001576: f000 f9d9 bl 800192c + 8001556: f000 f9d9 bl 800190c } /* USER CODE BEGIN TIM16_Init 2 */ /* USER CODE END TIM16_Init 2 */ } - 800157a: 46c0 nop ; (mov r8, r8) - 800157c: 46bd mov sp, r7 - 800157e: bd80 pop {r7, pc} - 8001580: 20000178 .word 0x20000178 - 8001584: 40014400 .word 0x40014400 - 8001588: 0000027f .word 0x0000027f - 800158c: 0000270f .word 0x0000270f + 800155a: 46c0 nop ; (mov r8, r8) + 800155c: 46bd mov sp, r7 + 800155e: bd80 pop {r7, pc} + 8001560: 20000178 .word 0x20000178 + 8001564: 40014400 .word 0x40014400 + 8001568: 0000027f .word 0x0000027f + 800156c: 0000270f .word 0x0000270f -08001590 : +08001570 : * @brief TIM17 Initialization Function * @param None * @retval None */ static void MX_TIM17_Init(void) { - 8001590: b580 push {r7, lr} - 8001592: af00 add r7, sp, #0 + 8001570: b580 push {r7, lr} + 8001572: af00 add r7, sp, #0 /* USER CODE END TIM17_Init 0 */ /* USER CODE BEGIN TIM17_Init 1 */ /* USER CODE END TIM17_Init 1 */ htim17.Instance = TIM17; - 8001594: 4b10 ldr r3, [pc, #64] ; (80015d8 ) - 8001596: 4a11 ldr r2, [pc, #68] ; (80015dc ) - 8001598: 601a str r2, [r3, #0] + 8001574: 4b10 ldr r3, [pc, #64] ; (80015b8 ) + 8001576: 4a11 ldr r2, [pc, #68] ; (80015bc ) + 8001578: 601a str r2, [r3, #0] htim17.Init.Prescaler = 320-1; - 800159a: 4b0f ldr r3, [pc, #60] ; (80015d8 ) - 800159c: 2240 movs r2, #64 ; 0x40 - 800159e: 32ff adds r2, #255 ; 0xff - 80015a0: 605a str r2, [r3, #4] + 800157a: 4b0f ldr r3, [pc, #60] ; (80015b8 ) + 800157c: 2240 movs r2, #64 ; 0x40 + 800157e: 32ff adds r2, #255 ; 0xff + 8001580: 605a str r2, [r3, #4] htim17.Init.CounterMode = TIM_COUNTERMODE_UP; - 80015a2: 4b0d ldr r3, [pc, #52] ; (80015d8 ) - 80015a4: 2200 movs r2, #0 - 80015a6: 609a str r2, [r3, #8] + 8001582: 4b0d ldr r3, [pc, #52] ; (80015b8 ) + 8001584: 2200 movs r2, #0 + 8001586: 609a str r2, [r3, #8] htim17.Init.Period = 3000-1; - 80015a8: 4b0b ldr r3, [pc, #44] ; (80015d8 ) - 80015aa: 4a0d ldr r2, [pc, #52] ; (80015e0 ) - 80015ac: 60da str r2, [r3, #12] + 8001588: 4b0b ldr r3, [pc, #44] ; (80015b8 ) + 800158a: 4a0d ldr r2, [pc, #52] ; (80015c0 ) + 800158c: 60da str r2, [r3, #12] htim17.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 80015ae: 4b0a ldr r3, [pc, #40] ; (80015d8 ) - 80015b0: 2200 movs r2, #0 - 80015b2: 611a str r2, [r3, #16] + 800158e: 4b0a ldr r3, [pc, #40] ; (80015b8 ) + 8001590: 2200 movs r2, #0 + 8001592: 611a str r2, [r3, #16] htim17.Init.RepetitionCounter = 0; - 80015b4: 4b08 ldr r3, [pc, #32] ; (80015d8 ) - 80015b6: 2200 movs r2, #0 - 80015b8: 615a str r2, [r3, #20] + 8001594: 4b08 ldr r3, [pc, #32] ; (80015b8 ) + 8001596: 2200 movs r2, #0 + 8001598: 615a str r2, [r3, #20] htim17.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; - 80015ba: 4b07 ldr r3, [pc, #28] ; (80015d8 ) - 80015bc: 2280 movs r2, #128 ; 0x80 - 80015be: 619a str r2, [r3, #24] + 800159a: 4b07 ldr r3, [pc, #28] ; (80015b8 ) + 800159c: 2280 movs r2, #128 ; 0x80 + 800159e: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim17) != HAL_OK) - 80015c0: 4b05 ldr r3, [pc, #20] ; (80015d8 ) - 80015c2: 0018 movs r0, r3 - 80015c4: f002 feee bl 80043a4 - 80015c8: 1e03 subs r3, r0, #0 - 80015ca: d001 beq.n 80015d0 + 80015a0: 4b05 ldr r3, [pc, #20] ; (80015b8 ) + 80015a2: 0018 movs r0, r3 + 80015a4: f002 feee bl 8004384 + 80015a8: 1e03 subs r3, r0, #0 + 80015aa: d001 beq.n 80015b0 { Error_Handler(); - 80015cc: f000 f9ae bl 800192c + 80015ac: f000 f9ae bl 800190c } /* USER CODE BEGIN TIM17_Init 2 */ /* USER CODE END TIM17_Init 2 */ } - 80015d0: 46c0 nop ; (mov r8, r8) - 80015d2: 46bd mov sp, r7 - 80015d4: bd80 pop {r7, pc} - 80015d6: 46c0 nop ; (mov r8, r8) - 80015d8: 200001c4 .word 0x200001c4 - 80015dc: 40014800 .word 0x40014800 - 80015e0: 00000bb7 .word 0x00000bb7 + 80015b0: 46c0 nop ; (mov r8, r8) + 80015b2: 46bd mov sp, r7 + 80015b4: bd80 pop {r7, pc} + 80015b6: 46c0 nop ; (mov r8, r8) + 80015b8: 200001c4 .word 0x200001c4 + 80015bc: 40014800 .word 0x40014800 + 80015c0: 00000bb7 .word 0x00000bb7 -080015e4 : +080015c4 : * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) { - 80015e4: b590 push {r4, r7, lr} - 80015e6: b089 sub sp, #36 ; 0x24 - 80015e8: af00 add r7, sp, #0 + 80015c4: b590 push {r4, r7, lr} + 80015c6: b089 sub sp, #36 ; 0x24 + 80015c8: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80015ea: 240c movs r4, #12 - 80015ec: 193b adds r3, r7, r4 - 80015ee: 0018 movs r0, r3 - 80015f0: 2314 movs r3, #20 - 80015f2: 001a movs r2, r3 - 80015f4: 2100 movs r1, #0 - 80015f6: f005 f8bb bl 8006770 + 80015ca: 240c movs r4, #12 + 80015cc: 193b adds r3, r7, r4 + 80015ce: 0018 movs r0, r3 + 80015d0: 2314 movs r3, #20 + 80015d2: 001a movs r2, r3 + 80015d4: 2100 movs r1, #0 + 80015d6: f005 f8cb bl 8006770 /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOA_CLK_ENABLE(); - 80015fa: 4b39 ldr r3, [pc, #228] ; (80016e0 ) - 80015fc: 6b5a ldr r2, [r3, #52] ; 0x34 - 80015fe: 4b38 ldr r3, [pc, #224] ; (80016e0 ) - 8001600: 2101 movs r1, #1 - 8001602: 430a orrs r2, r1 - 8001604: 635a str r2, [r3, #52] ; 0x34 - 8001606: 4b36 ldr r3, [pc, #216] ; (80016e0 ) - 8001608: 6b5b ldr r3, [r3, #52] ; 0x34 - 800160a: 2201 movs r2, #1 - 800160c: 4013 ands r3, r2 - 800160e: 60bb str r3, [r7, #8] - 8001610: 68bb ldr r3, [r7, #8] + 80015da: 4b39 ldr r3, [pc, #228] ; (80016c0 ) + 80015dc: 6b5a ldr r2, [r3, #52] ; 0x34 + 80015de: 4b38 ldr r3, [pc, #224] ; (80016c0 ) + 80015e0: 2101 movs r1, #1 + 80015e2: 430a orrs r2, r1 + 80015e4: 635a str r2, [r3, #52] ; 0x34 + 80015e6: 4b36 ldr r3, [pc, #216] ; (80016c0 ) + 80015e8: 6b5b ldr r3, [r3, #52] ; 0x34 + 80015ea: 2201 movs r2, #1 + 80015ec: 4013 ands r3, r2 + 80015ee: 60bb str r3, [r7, #8] + 80015f0: 68bb ldr r3, [r7, #8] __HAL_RCC_GPIOC_CLK_ENABLE(); - 8001612: 4b33 ldr r3, [pc, #204] ; (80016e0 ) - 8001614: 6b5a ldr r2, [r3, #52] ; 0x34 - 8001616: 4b32 ldr r3, [pc, #200] ; (80016e0 ) - 8001618: 2104 movs r1, #4 - 800161a: 430a orrs r2, r1 - 800161c: 635a str r2, [r3, #52] ; 0x34 - 800161e: 4b30 ldr r3, [pc, #192] ; (80016e0 ) - 8001620: 6b5b ldr r3, [r3, #52] ; 0x34 - 8001622: 2204 movs r2, #4 - 8001624: 4013 ands r3, r2 - 8001626: 607b str r3, [r7, #4] - 8001628: 687b ldr r3, [r7, #4] + 80015f2: 4b33 ldr r3, [pc, #204] ; (80016c0 ) + 80015f4: 6b5a ldr r2, [r3, #52] ; 0x34 + 80015f6: 4b32 ldr r3, [pc, #200] ; (80016c0 ) + 80015f8: 2104 movs r1, #4 + 80015fa: 430a orrs r2, r1 + 80015fc: 635a str r2, [r3, #52] ; 0x34 + 80015fe: 4b30 ldr r3, [pc, #192] ; (80016c0 ) + 8001600: 6b5b ldr r3, [r3, #52] ; 0x34 + 8001602: 2204 movs r2, #4 + 8001604: 4013 ands r3, r2 + 8001606: 607b str r3, [r7, #4] + 8001608: 687b ldr r3, [r7, #4] __HAL_RCC_GPIOB_CLK_ENABLE(); - 800162a: 4b2d ldr r3, [pc, #180] ; (80016e0 ) - 800162c: 6b5a ldr r2, [r3, #52] ; 0x34 - 800162e: 4b2c ldr r3, [pc, #176] ; (80016e0 ) - 8001630: 2102 movs r1, #2 - 8001632: 430a orrs r2, r1 - 8001634: 635a str r2, [r3, #52] ; 0x34 - 8001636: 4b2a ldr r3, [pc, #168] ; (80016e0 ) - 8001638: 6b5b ldr r3, [r3, #52] ; 0x34 - 800163a: 2202 movs r2, #2 - 800163c: 4013 ands r3, r2 - 800163e: 603b str r3, [r7, #0] - 8001640: 683b ldr r3, [r7, #0] + 800160a: 4b2d ldr r3, [pc, #180] ; (80016c0 ) + 800160c: 6b5a ldr r2, [r3, #52] ; 0x34 + 800160e: 4b2c ldr r3, [pc, #176] ; (80016c0 ) + 8001610: 2102 movs r1, #2 + 8001612: 430a orrs r2, r1 + 8001614: 635a str r2, [r3, #52] ; 0x34 + 8001616: 4b2a ldr r3, [pc, #168] ; (80016c0 ) + 8001618: 6b5b ldr r3, [r3, #52] ; 0x34 + 800161a: 2202 movs r2, #2 + 800161c: 4013 ands r3, r2 + 800161e: 603b str r3, [r7, #0] + 8001620: 683b ldr r3, [r7, #0] /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(Sens_SHUT_GPIO_Port, Sens_SHUT_Pin, GPIO_PIN_SET); - 8001642: 4b28 ldr r3, [pc, #160] ; (80016e4 ) - 8001644: 2201 movs r2, #1 - 8001646: 2110 movs r1, #16 - 8001648: 0018 movs r0, r3 - 800164a: f001 f999 bl 8002980 + 8001622: 4b28 ldr r3, [pc, #160] ; (80016c4 ) + 8001624: 2201 movs r2, #1 + 8001626: 2110 movs r1, #16 + 8001628: 0018 movs r0, r3 + 800162a: f001 f999 bl 8002960 /*Configure GPIO pin : Btn_INT_Pin */ GPIO_InitStruct.Pin = Btn_INT_Pin; - 800164e: 193b adds r3, r7, r4 - 8001650: 2201 movs r2, #1 - 8001652: 601a str r2, [r3, #0] + 800162e: 193b adds r3, r7, r4 + 8001630: 2201 movs r2, #1 + 8001632: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; - 8001654: 193b adds r3, r7, r4 - 8001656: 22c4 movs r2, #196 ; 0xc4 - 8001658: 0392 lsls r2, r2, #14 - 800165a: 605a str r2, [r3, #4] + 8001634: 193b adds r3, r7, r4 + 8001636: 22c4 movs r2, #196 ; 0xc4 + 8001638: 0392 lsls r2, r2, #14 + 800163a: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 800165c: 193b adds r3, r7, r4 - 800165e: 2200 movs r2, #0 - 8001660: 609a str r2, [r3, #8] + 800163c: 193b adds r3, r7, r4 + 800163e: 2200 movs r2, #0 + 8001640: 609a str r2, [r3, #8] HAL_GPIO_Init(Btn_INT_GPIO_Port, &GPIO_InitStruct); - 8001662: 193a adds r2, r7, r4 - 8001664: 23a0 movs r3, #160 ; 0xa0 - 8001666: 05db lsls r3, r3, #23 - 8001668: 0011 movs r1, r2 - 800166a: 0018 movs r0, r3 - 800166c: f001 f824 bl 80026b8 + 8001642: 193a adds r2, r7, r4 + 8001644: 23a0 movs r3, #160 ; 0xa0 + 8001646: 05db lsls r3, r3, #23 + 8001648: 0011 movs r1, r2 + 800164a: 0018 movs r0, r3 + 800164c: f001 f824 bl 8002698 /*Configure GPIO pin : Sens_SHUT_Pin */ GPIO_InitStruct.Pin = Sens_SHUT_Pin; - 8001670: 193b adds r3, r7, r4 - 8001672: 2210 movs r2, #16 - 8001674: 601a str r2, [r3, #0] + 8001650: 193b adds r3, r7, r4 + 8001652: 2210 movs r2, #16 + 8001654: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8001676: 193b adds r3, r7, r4 - 8001678: 2201 movs r2, #1 - 800167a: 605a str r2, [r3, #4] + 8001656: 193b adds r3, r7, r4 + 8001658: 2201 movs r2, #1 + 800165a: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_PULLUP; - 800167c: 193b adds r3, r7, r4 - 800167e: 2201 movs r2, #1 - 8001680: 609a str r2, [r3, #8] + 800165c: 193b adds r3, r7, r4 + 800165e: 2201 movs r2, #1 + 8001660: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - 8001682: 193b adds r3, r7, r4 - 8001684: 2202 movs r2, #2 - 8001686: 60da str r2, [r3, #12] + 8001662: 193b adds r3, r7, r4 + 8001664: 2202 movs r2, #2 + 8001666: 60da str r2, [r3, #12] HAL_GPIO_Init(Sens_SHUT_GPIO_Port, &GPIO_InitStruct); - 8001688: 193b adds r3, r7, r4 - 800168a: 4a16 ldr r2, [pc, #88] ; (80016e4 ) - 800168c: 0019 movs r1, r3 - 800168e: 0010 movs r0, r2 - 8001690: f001 f812 bl 80026b8 + 8001668: 193b adds r3, r7, r4 + 800166a: 4a16 ldr r2, [pc, #88] ; (80016c4 ) + 800166c: 0019 movs r1, r3 + 800166e: 0010 movs r0, r2 + 8001670: f001 f812 bl 8002698 /*Configure GPIO pin : Sens_INT_Pin */ GPIO_InitStruct.Pin = Sens_INT_Pin; - 8001694: 0021 movs r1, r4 - 8001696: 187b adds r3, r7, r1 - 8001698: 2220 movs r2, #32 - 800169a: 601a str r2, [r3, #0] + 8001674: 0021 movs r1, r4 + 8001676: 187b adds r3, r7, r1 + 8001678: 2220 movs r2, #32 + 800167a: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; - 800169c: 187b adds r3, r7, r1 - 800169e: 2284 movs r2, #132 ; 0x84 - 80016a0: 0392 lsls r2, r2, #14 - 80016a2: 605a str r2, [r3, #4] + 800167c: 187b adds r3, r7, r1 + 800167e: 2284 movs r2, #132 ; 0x84 + 8001680: 0392 lsls r2, r2, #14 + 8001682: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80016a4: 187b adds r3, r7, r1 - 80016a6: 2200 movs r2, #0 - 80016a8: 609a str r2, [r3, #8] + 8001684: 187b adds r3, r7, r1 + 8001686: 2200 movs r2, #0 + 8001688: 609a str r2, [r3, #8] HAL_GPIO_Init(Sens_INT_GPIO_Port, &GPIO_InitStruct); - 80016aa: 187b adds r3, r7, r1 - 80016ac: 4a0d ldr r2, [pc, #52] ; (80016e4 ) - 80016ae: 0019 movs r1, r3 - 80016b0: 0010 movs r0, r2 - 80016b2: f001 f801 bl 80026b8 + 800168a: 187b adds r3, r7, r1 + 800168c: 4a0d ldr r2, [pc, #52] ; (80016c4 ) + 800168e: 0019 movs r1, r3 + 8001690: 0010 movs r0, r2 + 8001692: f001 f801 bl 8002698 /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI0_1_IRQn, 0, 0); - 80016b6: 2200 movs r2, #0 - 80016b8: 2100 movs r1, #0 - 80016ba: 2005 movs r0, #5 - 80016bc: f000 fc40 bl 8001f40 + 8001696: 2200 movs r2, #0 + 8001698: 2100 movs r1, #0 + 800169a: 2005 movs r0, #5 + 800169c: f000 fc40 bl 8001f20 HAL_NVIC_EnableIRQ(EXTI0_1_IRQn); - 80016c0: 2005 movs r0, #5 - 80016c2: f000 fc52 bl 8001f6a + 80016a0: 2005 movs r0, #5 + 80016a2: f000 fc52 bl 8001f4a HAL_NVIC_SetPriority(EXTI4_15_IRQn, 0, 0); - 80016c6: 2200 movs r2, #0 - 80016c8: 2100 movs r1, #0 - 80016ca: 2007 movs r0, #7 - 80016cc: f000 fc38 bl 8001f40 + 80016a6: 2200 movs r2, #0 + 80016a8: 2100 movs r1, #0 + 80016aa: 2007 movs r0, #7 + 80016ac: f000 fc38 bl 8001f20 HAL_NVIC_EnableIRQ(EXTI4_15_IRQn); - 80016d0: 2007 movs r0, #7 - 80016d2: f000 fc4a bl 8001f6a + 80016b0: 2007 movs r0, #7 + 80016b2: f000 fc4a bl 8001f4a } - 80016d6: 46c0 nop ; (mov r8, r8) - 80016d8: 46bd mov sp, r7 - 80016da: b009 add sp, #36 ; 0x24 - 80016dc: bd90 pop {r4, r7, pc} - 80016de: 46c0 nop ; (mov r8, r8) - 80016e0: 40021000 .word 0x40021000 - 80016e4: 50000400 .word 0x50000400 + 80016b6: 46c0 nop ; (mov r8, r8) + 80016b8: 46bd mov sp, r7 + 80016ba: b009 add sp, #36 ; 0x24 + 80016bc: bd90 pop {r4, r7, pc} + 80016be: 46c0 nop ; (mov r8, r8) + 80016c0: 40021000 .word 0x40021000 + 80016c4: 50000400 .word 0x50000400 -080016e8 : +080016c8 : /* USER CODE BEGIN 4 */ -void setLightLevel(uint8_t level) { - 80016e8: b580 push {r7, lr} - 80016ea: b082 sub sp, #8 - 80016ec: af00 add r7, sp, #0 - 80016ee: 0002 movs r2, r0 - 80016f0: 1dfb adds r3, r7, #7 - 80016f2: 701a strb r2, [r3, #0] +volatile void setLightLevel(uint8_t level) { + 80016c8: b580 push {r7, lr} + 80016ca: b082 sub sp, #8 + 80016cc: af00 add r7, sp, #0 + 80016ce: 0002 movs r2, r0 + 80016d0: 1dfb adds r3, r7, #7 + 80016d2: 701a strb r2, [r3, #0] if (level > 99) level = 99; - 80016f4: 1dfb adds r3, r7, #7 - 80016f6: 781b ldrb r3, [r3, #0] - 80016f8: 2b63 cmp r3, #99 ; 0x63 - 80016fa: d902 bls.n 8001702 - 80016fc: 1dfb adds r3, r7, #7 - 80016fe: 2263 movs r2, #99 ; 0x63 - 8001700: 701a strb r2, [r3, #0] + 80016d4: 1dfb adds r3, r7, #7 + 80016d6: 781b ldrb r3, [r3, #0] + 80016d8: 2b63 cmp r3, #99 ; 0x63 + 80016da: d902 bls.n 80016e2 + 80016dc: 1dfb adds r3, r7, #7 + 80016de: 2263 movs r2, #99 ; 0x63 + 80016e0: 701a strb r2, [r3, #0] curLightLevel = level; - 8001702: 4b06 ldr r3, [pc, #24] ; (800171c ) - 8001704: 1dfa adds r2, r7, #7 - 8001706: 7812 ldrb r2, [r2, #0] - 8001708: 701a strb r2, [r3, #0] + 80016e2: 4b06 ldr r3, [pc, #24] ; (80016fc ) + 80016e4: 1dfa adds r2, r7, #7 + 80016e6: 7812 ldrb r2, [r2, #0] + 80016e8: 701a strb r2, [r3, #0] TIM3->CCR1 = curLightLevel; - 800170a: 4b04 ldr r3, [pc, #16] ; (800171c ) - 800170c: 781a ldrb r2, [r3, #0] - 800170e: 4b04 ldr r3, [pc, #16] ; (8001720 ) - 8001710: 635a str r2, [r3, #52] ; 0x34 + 80016ea: 4b04 ldr r3, [pc, #16] ; (80016fc ) + 80016ec: 781a ldrb r2, [r3, #0] + 80016ee: 4b04 ldr r3, [pc, #16] ; (8001700 ) + 80016f0: 635a str r2, [r3, #52] ; 0x34 } - 8001712: 46c0 nop ; (mov r8, r8) - 8001714: 46bd mov sp, r7 - 8001716: b002 add sp, #8 - 8001718: bd80 pop {r7, pc} - 800171a: 46c0 nop ; (mov r8, r8) - 800171c: 20000221 .word 0x20000221 - 8001720: 40000400 .word 0x40000400 + 80016f2: 46c0 nop ; (mov r8, r8) + 80016f4: 46bd mov sp, r7 + 80016f6: b002 add sp, #8 + 80016f8: bd80 pop {r7, pc} + 80016fa: 46c0 nop ; (mov r8, r8) + 80016fc: 20000221 .word 0x20000221 + 8001700: 40000400 .word 0x40000400 -08001724 : +08001704 : void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin) { - 8001724: b580 push {r7, lr} - 8001726: b082 sub sp, #8 - 8001728: af00 add r7, sp, #0 - 800172a: 0002 movs r2, r0 - 800172c: 1dbb adds r3, r7, #6 - 800172e: 801a strh r2, [r3, #0] + 8001704: b580 push {r7, lr} + 8001706: b082 sub sp, #8 + 8001708: af00 add r7, sp, #0 + 800170a: 0002 movs r2, r0 + 800170c: 1dbb adds r3, r7, #6 + 800170e: 801a strh r2, [r3, #0] // Start counting "ticks" when the sense-button is pressed if (GPIO_Pin == Btn_INT_Pin) { - 8001730: 1dbb adds r3, r7, #6 - 8001732: 881b ldrh r3, [r3, #0] - 8001734: 2b01 cmp r3, #1 - 8001736: d106 bne.n 8001746 + 8001710: 1dbb adds r3, r7, #6 + 8001712: 881b ldrh r3, [r3, #0] + 8001714: 2b01 cmp r3, #1 + 8001716: d106 bne.n 8001726 btn_ticks = 0; - 8001738: 4b05 ldr r3, [pc, #20] ; (8001750 ) - 800173a: 2200 movs r2, #0 - 800173c: 801a strh r2, [r3, #0] + 8001718: 4b05 ldr r3, [pc, #20] ; (8001730 ) + 800171a: 2200 movs r2, #0 + 800171c: 801a strh r2, [r3, #0] HAL_TIM_Base_Start_IT(&htim16); - 800173e: 4b05 ldr r3, [pc, #20] ; (8001754 ) - 8001740: 0018 movs r0, r3 - 8001742: f002 fe87 bl 8004454 + 800171e: 4b05 ldr r3, [pc, #20] ; (8001734 ) + 8001720: 0018 movs r0, r3 + 8001722: f002 fe87 bl 8004434 } } - 8001746: 46c0 nop ; (mov r8, r8) - 8001748: 46bd mov sp, r7 - 800174a: b002 add sp, #8 - 800174c: bd80 pop {r7, pc} - 800174e: 46c0 nop ; (mov r8, r8) - 8001750: 20000224 .word 0x20000224 - 8001754: 20000178 .word 0x20000178 + 8001726: 46c0 nop ; (mov r8, r8) + 8001728: 46bd mov sp, r7 + 800172a: b002 add sp, #8 + 800172c: bd80 pop {r7, pc} + 800172e: 46c0 nop ; (mov r8, r8) + 8001730: 20000224 .word 0x20000224 + 8001734: 20000178 .word 0x20000178 -08001758 : +08001738 : void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin) { - 8001758: b5b0 push {r4, r5, r7, lr} - 800175a: b084 sub sp, #16 - 800175c: af00 add r7, sp, #0 - 800175e: 0002 movs r2, r0 - 8001760: 1dbb adds r3, r7, #6 - 8001762: 801a strh r2, [r3, #0] + 8001738: b5b0 push {r4, r5, r7, lr} + 800173a: b084 sub sp, #16 + 800173c: af00 add r7, sp, #0 + 800173e: 0002 movs r2, r0 + 8001740: 1dbb adds r3, r7, #6 + 8001742: 801a strh r2, [r3, #0] uint16_t dist; // Range sensor interrupt (measurement is done) if (TOF_Ready && GPIO_Pin == Sens_INT_Pin) { - 8001764: 4b3f ldr r3, [pc, #252] ; (8001864 ) - 8001766: 781b ldrb r3, [r3, #0] - 8001768: 2b00 cmp r3, #0 - 800176a: d044 beq.n 80017f6 - 800176c: 1dbb adds r3, r7, #6 - 800176e: 881b ldrh r3, [r3, #0] - 8001770: 2b20 cmp r3, #32 - 8001772: d140 bne.n 80017f6 + 8001744: 4b3f ldr r3, [pc, #252] ; (8001844 ) + 8001746: 781b ldrb r3, [r3, #0] + 8001748: 2b00 cmp r3, #0 + 800174a: d044 beq.n 80017d6 + 800174c: 1dbb adds r3, r7, #6 + 800174e: 881b ldrh r3, [r3, #0] + 8001750: 2b20 cmp r3, #32 + 8001752: d140 bne.n 80017d6 dist = readRangeContinuousMillimeters(0); - 8001774: 250e movs r5, #14 - 8001776: 197c adds r4, r7, r5 - 8001778: 2000 movs r0, #0 - 800177a: f004 fd27 bl 80061cc - 800177e: 0003 movs r3, r0 - 8001780: 8023 strh r3, [r4, #0] + 8001754: 250e movs r5, #14 + 8001756: 197c adds r4, r7, r5 + 8001758: 2000 movs r0, #0 + 800175a: f004 fd27 bl 80061ac + 800175e: 0003 movs r3, r0 + 8001760: 8023 strh r3, [r4, #0] if (dist < 1400) curDist = dist; - 8001782: 0029 movs r1, r5 - 8001784: 187b adds r3, r7, r1 - 8001786: 881a ldrh r2, [r3, #0] - 8001788: 23af movs r3, #175 ; 0xaf - 800178a: 00db lsls r3, r3, #3 - 800178c: 429a cmp r2, r3 - 800178e: d204 bcs.n 800179a - 8001790: 4b35 ldr r3, [pc, #212] ; (8001868 ) - 8001792: 187a adds r2, r7, r1 - 8001794: 8812 ldrh r2, [r2, #0] - 8001796: 801a strh r2, [r3, #0] - 8001798: e003 b.n 80017a2 + 8001762: 0029 movs r1, r5 + 8001764: 187b adds r3, r7, r1 + 8001766: 881a ldrh r2, [r3, #0] + 8001768: 23af movs r3, #175 ; 0xaf + 800176a: 00db lsls r3, r3, #3 + 800176c: 429a cmp r2, r3 + 800176e: d204 bcs.n 800177a + 8001770: 4b35 ldr r3, [pc, #212] ; (8001848 ) + 8001772: 187a adds r2, r7, r1 + 8001774: 8812 ldrh r2, [r2, #0] + 8001776: 801a strh r2, [r3, #0] + 8001778: e003 b.n 8001782 else curDist = 1400; - 800179a: 4b33 ldr r3, [pc, #204] ; (8001868 ) - 800179c: 22af movs r2, #175 ; 0xaf - 800179e: 00d2 lsls r2, r2, #3 - 80017a0: 801a strh r2, [r3, #0] + 800177a: 4b33 ldr r3, [pc, #204] ; (8001848 ) + 800177c: 22af movs r2, #175 ; 0xaf + 800177e: 00d2 lsls r2, r2, #3 + 8001780: 801a strh r2, [r3, #0] if (!needConfig && !manualOn) { - 80017a2: 4b32 ldr r3, [pc, #200] ; (800186c ) - 80017a4: 781b ldrb r3, [r3, #0] - 80017a6: 2b00 cmp r3, #0 - 80017a8: d125 bne.n 80017f6 - 80017aa: 4b31 ldr r3, [pc, #196] ; (8001870 ) - 80017ac: 781b ldrb r3, [r3, #0] - 80017ae: 2b00 cmp r3, #0 - 80017b0: d121 bne.n 80017f6 + 8001782: 4b32 ldr r3, [pc, #200] ; (800184c ) + 8001784: 781b ldrb r3, [r3, #0] + 8001786: 2b00 cmp r3, #0 + 8001788: d125 bne.n 80017d6 + 800178a: 4b31 ldr r3, [pc, #196] ; (8001850 ) + 800178c: 781b ldrb r3, [r3, #0] + 800178e: 2b00 cmp r3, #0 + 8001790: d121 bne.n 80017d6 if (curDist <= configuration.config.dist_on && curLightLevel < 90) { - 80017b2: 4b30 ldr r3, [pc, #192] ; (8001874 ) - 80017b4: 889a ldrh r2, [r3, #4] - 80017b6: 4b2c ldr r3, [pc, #176] ; (8001868 ) - 80017b8: 881b ldrh r3, [r3, #0] - 80017ba: 429a cmp r2, r3 - 80017bc: d30a bcc.n 80017d4 - 80017be: 4b2e ldr r3, [pc, #184] ; (8001878 ) - 80017c0: 781b ldrb r3, [r3, #0] - 80017c2: 2b59 cmp r3, #89 ; 0x59 - 80017c4: d806 bhi.n 80017d4 + 8001792: 4b30 ldr r3, [pc, #192] ; (8001854 ) + 8001794: 889a ldrh r2, [r3, #4] + 8001796: 4b2c ldr r3, [pc, #176] ; (8001848 ) + 8001798: 881b ldrh r3, [r3, #0] + 800179a: 429a cmp r2, r3 + 800179c: d30a bcc.n 80017b4 + 800179e: 4b2e ldr r3, [pc, #184] ; (8001858 ) + 80017a0: 781b ldrb r3, [r3, #0] + 80017a2: 2b59 cmp r3, #89 ; 0x59 + 80017a4: d806 bhi.n 80017b4 //Turn on the lights dLevel = 2; - 80017c6: 4b2d ldr r3, [pc, #180] ; (800187c ) - 80017c8: 2202 movs r2, #2 - 80017ca: 701a strb r2, [r3, #0] + 80017a6: 4b2d ldr r3, [pc, #180] ; (800185c ) + 80017a8: 2202 movs r2, #2 + 80017aa: 701a strb r2, [r3, #0] HAL_TIM_Base_Start_IT(&htim17); - 80017cc: 4b2c ldr r3, [pc, #176] ; (8001880 ) - 80017ce: 0018 movs r0, r3 - 80017d0: f002 fe40 bl 8004454 + 80017ac: 4b2c ldr r3, [pc, #176] ; (8001860 ) + 80017ae: 0018 movs r0, r3 + 80017b0: f002 fe40 bl 8004434 } if (curDist >= configuration.config.dist_off && curLightLevel == 99) { - 80017d4: 4b27 ldr r3, [pc, #156] ; (8001874 ) - 80017d6: 88da ldrh r2, [r3, #6] - 80017d8: 4b23 ldr r3, [pc, #140] ; (8001868 ) - 80017da: 881b ldrh r3, [r3, #0] - 80017dc: 429a cmp r2, r3 - 80017de: d80a bhi.n 80017f6 - 80017e0: 4b25 ldr r3, [pc, #148] ; (8001878 ) - 80017e2: 781b ldrb r3, [r3, #0] - 80017e4: 2b63 cmp r3, #99 ; 0x63 - 80017e6: d106 bne.n 80017f6 + 80017b4: 4b27 ldr r3, [pc, #156] ; (8001854 ) + 80017b6: 88da ldrh r2, [r3, #6] + 80017b8: 4b23 ldr r3, [pc, #140] ; (8001848 ) + 80017ba: 881b ldrh r3, [r3, #0] + 80017bc: 429a cmp r2, r3 + 80017be: d80a bhi.n 80017d6 + 80017c0: 4b25 ldr r3, [pc, #148] ; (8001858 ) + 80017c2: 781b ldrb r3, [r3, #0] + 80017c4: 2b63 cmp r3, #99 ; 0x63 + 80017c6: d106 bne.n 80017d6 //Turn off the lights dLevel = -1; - 80017e8: 4b24 ldr r3, [pc, #144] ; (800187c ) - 80017ea: 22ff movs r2, #255 ; 0xff - 80017ec: 701a strb r2, [r3, #0] + 80017c8: 4b24 ldr r3, [pc, #144] ; (800185c ) + 80017ca: 22ff movs r2, #255 ; 0xff + 80017cc: 701a strb r2, [r3, #0] HAL_TIM_Base_Start_IT(&htim17); - 80017ee: 4b24 ldr r3, [pc, #144] ; (8001880 ) - 80017f0: 0018 movs r0, r3 - 80017f2: f002 fe2f bl 8004454 + 80017ce: 4b24 ldr r3, [pc, #144] ; (8001860 ) + 80017d0: 0018 movs r0, r3 + 80017d2: f002 fe2f bl 8004434 } } } // The sense-button is released if (GPIO_Pin == Btn_INT_Pin) { - 80017f6: 1dbb adds r3, r7, #6 - 80017f8: 881b ldrh r3, [r3, #0] - 80017fa: 2b01 cmp r3, #1 - 80017fc: d12d bne.n 800185a + 80017d6: 1dbb adds r3, r7, #6 + 80017d8: 881b ldrh r3, [r3, #0] + 80017da: 2b01 cmp r3, #1 + 80017dc: d12d bne.n 800183a HAL_TIM_Base_Stop_IT(&htim16); - 80017fe: 4b21 ldr r3, [pc, #132] ; (8001884 ) - 8001800: 0018 movs r0, r3 - 8001802: f002 fe7b bl 80044fc + 80017de: 4b21 ldr r3, [pc, #132] ; (8001864 ) + 80017e0: 0018 movs r0, r3 + 80017e2: f002 fe7b bl 80044dc if (btn_ticks < 60) { - 8001806: 4b20 ldr r3, [pc, #128] ; (8001888 ) - 8001808: 881b ldrh r3, [r3, #0] - 800180a: 2b3b cmp r3, #59 ; 0x3b - 800180c: d825 bhi.n 800185a + 80017e6: 4b20 ldr r3, [pc, #128] ; (8001868 ) + 80017e8: 881b ldrh r3, [r3, #0] + 80017ea: 2b3b cmp r3, #59 ; 0x3b + 80017ec: d825 bhi.n 800183a // Button was not held for more than 6 seconds if (needConfig) { - 800180e: 4b17 ldr r3, [pc, #92] ; (800186c ) - 8001810: 781b ldrb r3, [r3, #0] - 8001812: 2b00 cmp r3, #0 - 8001814: d003 beq.n 800181e + 80017ee: 4b17 ldr r3, [pc, #92] ; (800184c ) + 80017f0: 781b ldrb r3, [r3, #0] + 80017f2: 2b00 cmp r3, #0 + 80017f4: d003 beq.n 80017fe needConfig = 0; - 8001816: 4b15 ldr r3, [pc, #84] ; (800186c ) - 8001818: 2200 movs r2, #0 - 800181a: 701a strb r2, [r3, #0] + 80017f6: 4b15 ldr r3, [pc, #84] ; (800184c ) + 80017f8: 2200 movs r2, #0 + 80017fa: 701a strb r2, [r3, #0] } setLightLevel(curLightLevel); } } } } - 800181c: e01d b.n 800185a + 80017fc: e01d b.n 800183a if (curLightLevel < 90){ - 800181e: 4b16 ldr r3, [pc, #88] ; (8001878 ) - 8001820: 781b ldrb r3, [r3, #0] - 8001822: 2b59 cmp r3, #89 ; 0x59 - 8001824: d80a bhi.n 800183c + 80017fe: 4b16 ldr r3, [pc, #88] ; (8001858 ) + 8001800: 781b ldrb r3, [r3, #0] + 8001802: 2b59 cmp r3, #89 ; 0x59 + 8001804: d80a bhi.n 800181c manualOn = 1; - 8001826: 4b12 ldr r3, [pc, #72] ; (8001870 ) - 8001828: 2201 movs r2, #1 - 800182a: 701a strb r2, [r3, #0] + 8001806: 4b12 ldr r3, [pc, #72] ; (8001850 ) + 8001808: 2201 movs r2, #1 + 800180a: 701a strb r2, [r3, #0] dLevel = 2; - 800182c: 4b13 ldr r3, [pc, #76] ; (800187c ) - 800182e: 2202 movs r2, #2 - 8001830: 701a strb r2, [r3, #0] + 800180c: 4b13 ldr r3, [pc, #76] ; (800185c ) + 800180e: 2202 movs r2, #2 + 8001810: 701a strb r2, [r3, #0] HAL_TIM_Base_Start_IT(&htim17); - 8001832: 4b13 ldr r3, [pc, #76] ; (8001880 ) - 8001834: 0018 movs r0, r3 - 8001836: f002 fe0d bl 8004454 - 800183a: e009 b.n 8001850 + 8001812: 4b13 ldr r3, [pc, #76] ; (8001860 ) + 8001814: 0018 movs r0, r3 + 8001816: f002 fe0d bl 8004434 + 800181a: e009 b.n 8001830 manualOn = 0; - 800183c: 4b0c ldr r3, [pc, #48] ; (8001870 ) - 800183e: 2200 movs r2, #0 - 8001840: 701a strb r2, [r3, #0] + 800181c: 4b0c ldr r3, [pc, #48] ; (8001850 ) + 800181e: 2200 movs r2, #0 + 8001820: 701a strb r2, [r3, #0] dLevel = -1; - 8001842: 4b0e ldr r3, [pc, #56] ; (800187c ) - 8001844: 22ff movs r2, #255 ; 0xff - 8001846: 701a strb r2, [r3, #0] + 8001822: 4b0e ldr r3, [pc, #56] ; (800185c ) + 8001824: 22ff movs r2, #255 ; 0xff + 8001826: 701a strb r2, [r3, #0] HAL_TIM_Base_Start_IT(&htim17); - 8001848: 4b0d ldr r3, [pc, #52] ; (8001880 ) - 800184a: 0018 movs r0, r3 - 800184c: f002 fe02 bl 8004454 + 8001828: 4b0d ldr r3, [pc, #52] ; (8001860 ) + 800182a: 0018 movs r0, r3 + 800182c: f002 fe02 bl 8004434 setLightLevel(curLightLevel); - 8001850: 4b09 ldr r3, [pc, #36] ; (8001878 ) - 8001852: 781b ldrb r3, [r3, #0] - 8001854: 0018 movs r0, r3 - 8001856: f7ff ff47 bl 80016e8 + 8001830: 4b09 ldr r3, [pc, #36] ; (8001858 ) + 8001832: 781b ldrb r3, [r3, #0] + 8001834: 0018 movs r0, r3 + 8001836: f7ff ff47 bl 80016c8 } - 800185a: 46c0 nop ; (mov r8, r8) - 800185c: 46bd mov sp, r7 - 800185e: b004 add sp, #16 - 8001860: bdb0 pop {r4, r5, r7, pc} - 8001862: 46c0 nop ; (mov r8, r8) - 8001864: 20000220 .word 0x20000220 - 8001868: 20000222 .word 0x20000222 - 800186c: 20000000 .word 0x20000000 - 8001870: 20000227 .word 0x20000227 - 8001874: 20000210 .word 0x20000210 - 8001878: 20000221 .word 0x20000221 - 800187c: 20000001 .word 0x20000001 - 8001880: 200001c4 .word 0x200001c4 - 8001884: 20000178 .word 0x20000178 - 8001888: 20000224 .word 0x20000224 + 800183a: 46c0 nop ; (mov r8, r8) + 800183c: 46bd mov sp, r7 + 800183e: b004 add sp, #16 + 8001840: bdb0 pop {r4, r5, r7, pc} + 8001842: 46c0 nop ; (mov r8, r8) + 8001844: 20000220 .word 0x20000220 + 8001848: 20000222 .word 0x20000222 + 800184c: 20000000 .word 0x20000000 + 8001850: 20000227 .word 0x20000227 + 8001854: 20000210 .word 0x20000210 + 8001858: 20000221 .word 0x20000221 + 800185c: 20000001 .word 0x20000001 + 8001860: 200001c4 .word 0x200001c4 + 8001864: 20000178 .word 0x20000178 + 8001868: 20000224 .word 0x20000224 -0800188c : +0800186c : void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { - 800188c: b580 push {r7, lr} - 800188e: b082 sub sp, #8 - 8001890: af00 add r7, sp, #0 - 8001892: 6078 str r0, [r7, #4] + 800186c: b580 push {r7, lr} + 800186e: b082 sub sp, #8 + 8001870: af00 add r7, sp, #0 + 8001872: 6078 str r0, [r7, #4] if(htim->Instance == TIM16) { //check if the interrupt comes from TIM16 - 8001894: 687b ldr r3, [r7, #4] - 8001896: 681b ldr r3, [r3, #0] - 8001898: 4a1c ldr r2, [pc, #112] ; (800190c ) - 800189a: 4293 cmp r3, r2 - 800189c: d111 bne.n 80018c2 + 8001874: 687b ldr r3, [r7, #4] + 8001876: 681b ldr r3, [r3, #0] + 8001878: 4a1c ldr r2, [pc, #112] ; (80018ec ) + 800187a: 4293 cmp r3, r2 + 800187c: d111 bne.n 80018a2 if (btn_ticks < 60) { - 800189e: 4b1c ldr r3, [pc, #112] ; (8001910 ) - 80018a0: 881b ldrh r3, [r3, #0] - 80018a2: 2b3b cmp r3, #59 ; 0x3b - 80018a4: d806 bhi.n 80018b4 + 800187e: 4b1c ldr r3, [pc, #112] ; (80018f0 ) + 8001880: 881b ldrh r3, [r3, #0] + 8001882: 2b3b cmp r3, #59 ; 0x3b + 8001884: d806 bhi.n 8001894 btn_ticks++; - 80018a6: 4b1a ldr r3, [pc, #104] ; (8001910 ) - 80018a8: 881b ldrh r3, [r3, #0] - 80018aa: 3301 adds r3, #1 - 80018ac: b29a uxth r2, r3 - 80018ae: 4b18 ldr r3, [pc, #96] ; (8001910 ) - 80018b0: 801a strh r2, [r3, #0] - 80018b2: e006 b.n 80018c2 + 8001886: 4b1a ldr r3, [pc, #104] ; (80018f0 ) + 8001888: 881b ldrh r3, [r3, #0] + 800188a: 3301 adds r3, #1 + 800188c: b29a uxth r2, r3 + 800188e: 4b18 ldr r3, [pc, #96] ; (80018f0 ) + 8001890: 801a strh r2, [r3, #0] + 8001892: e006 b.n 80018a2 } else { // the button is held for more than 6 seconds HAL_TIM_Base_Stop_IT(&htim16); - 80018b4: 4b17 ldr r3, [pc, #92] ; (8001914 ) - 80018b6: 0018 movs r0, r3 - 80018b8: f002 fe20 bl 80044fc + 8001894: 4b17 ldr r3, [pc, #92] ; (80018f4 ) + 8001896: 0018 movs r0, r3 + 8001898: f002 fe20 bl 80044dc startConfig = 1; - 80018bc: 4b16 ldr r3, [pc, #88] ; (8001918 ) - 80018be: 2201 movs r2, #1 - 80018c0: 701a strb r2, [r3, #0] + 800189c: 4b16 ldr r3, [pc, #88] ; (80018f8 ) + 800189e: 2201 movs r2, #1 + 80018a0: 701a strb r2, [r3, #0] } } // Fade-in / fade-out animation if(htim->Instance == TIM17) { //check if the interrupt comes from TIM17 - 80018c2: 687b ldr r3, [r7, #4] - 80018c4: 681b ldr r3, [r3, #0] - 80018c6: 4a15 ldr r2, [pc, #84] ; (800191c ) - 80018c8: 4293 cmp r3, r2 - 80018ca: d11a bne.n 8001902 + 80018a2: 687b ldr r3, [r7, #4] + 80018a4: 681b ldr r3, [r3, #0] + 80018a6: 4a15 ldr r2, [pc, #84] ; (80018fc ) + 80018a8: 4293 cmp r3, r2 + 80018aa: d11a bne.n 80018e2 curLightLevel += dLevel; - 80018cc: 4b14 ldr r3, [pc, #80] ; (8001920 ) - 80018ce: 781a ldrb r2, [r3, #0] - 80018d0: 4b14 ldr r3, [pc, #80] ; (8001924 ) - 80018d2: 781b ldrb r3, [r3, #0] - 80018d4: b25b sxtb r3, r3 - 80018d6: b2db uxtb r3, r3 - 80018d8: 18d3 adds r3, r2, r3 - 80018da: b2da uxtb r2, r3 - 80018dc: 4b10 ldr r3, [pc, #64] ; (8001920 ) - 80018de: 701a strb r2, [r3, #0] + 80018ac: 4b14 ldr r3, [pc, #80] ; (8001900 ) + 80018ae: 781a ldrb r2, [r3, #0] + 80018b0: 4b14 ldr r3, [pc, #80] ; (8001904 ) + 80018b2: 781b ldrb r3, [r3, #0] + 80018b4: b25b sxtb r3, r3 + 80018b6: b2db uxtb r3, r3 + 80018b8: 18d3 adds r3, r2, r3 + 80018ba: b2da uxtb r2, r3 + 80018bc: 4b10 ldr r3, [pc, #64] ; (8001900 ) + 80018be: 701a strb r2, [r3, #0] setLightLevel(curLightLevel); - 80018e0: 4b0f ldr r3, [pc, #60] ; (8001920 ) - 80018e2: 781b ldrb r3, [r3, #0] - 80018e4: 0018 movs r0, r3 - 80018e6: f7ff feff bl 80016e8 + 80018c0: 4b0f ldr r3, [pc, #60] ; (8001900 ) + 80018c2: 781b ldrb r3, [r3, #0] + 80018c4: 0018 movs r0, r3 + 80018c6: f7ff feff bl 80016c8 if (curLightLevel >= 99 || curLightLevel <= 0) { - 80018ea: 4b0d ldr r3, [pc, #52] ; (8001920 ) - 80018ec: 781b ldrb r3, [r3, #0] - 80018ee: 2b62 cmp r3, #98 ; 0x62 - 80018f0: d803 bhi.n 80018fa - 80018f2: 4b0b ldr r3, [pc, #44] ; (8001920 ) - 80018f4: 781b ldrb r3, [r3, #0] - 80018f6: 2b00 cmp r3, #0 - 80018f8: d103 bne.n 8001902 + 80018ca: 4b0d ldr r3, [pc, #52] ; (8001900 ) + 80018cc: 781b ldrb r3, [r3, #0] + 80018ce: 2b62 cmp r3, #98 ; 0x62 + 80018d0: d803 bhi.n 80018da + 80018d2: 4b0b ldr r3, [pc, #44] ; (8001900 ) + 80018d4: 781b ldrb r3, [r3, #0] + 80018d6: 2b00 cmp r3, #0 + 80018d8: d103 bne.n 80018e2 HAL_TIM_Base_Stop_IT(&htim17); - 80018fa: 4b0b ldr r3, [pc, #44] ; (8001928 ) - 80018fc: 0018 movs r0, r3 - 80018fe: f002 fdfd bl 80044fc + 80018da: 4b0b ldr r3, [pc, #44] ; (8001908 ) + 80018dc: 0018 movs r0, r3 + 80018de: f002 fdfd bl 80044dc } } } - 8001902: 46c0 nop ; (mov r8, r8) - 8001904: 46bd mov sp, r7 - 8001906: b002 add sp, #8 - 8001908: bd80 pop {r7, pc} - 800190a: 46c0 nop ; (mov r8, r8) - 800190c: 40014400 .word 0x40014400 - 8001910: 20000224 .word 0x20000224 - 8001914: 20000178 .word 0x20000178 - 8001918: 20000226 .word 0x20000226 - 800191c: 40014800 .word 0x40014800 - 8001920: 20000221 .word 0x20000221 - 8001924: 20000001 .word 0x20000001 - 8001928: 200001c4 .word 0x200001c4 + 80018e2: 46c0 nop ; (mov r8, r8) + 80018e4: 46bd mov sp, r7 + 80018e6: b002 add sp, #8 + 80018e8: bd80 pop {r7, pc} + 80018ea: 46c0 nop ; (mov r8, r8) + 80018ec: 40014400 .word 0x40014400 + 80018f0: 20000224 .word 0x20000224 + 80018f4: 20000178 .word 0x20000178 + 80018f8: 20000226 .word 0x20000226 + 80018fc: 40014800 .word 0x40014800 + 8001900: 20000221 .word 0x20000221 + 8001904: 20000001 .word 0x20000001 + 8001908: 200001c4 .word 0x200001c4 -0800192c : +0800190c : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { - 800192c: b580 push {r7, lr} - 800192e: af00 add r7, sp, #0 + 800190c: b580 push {r7, lr} + 800190e: af00 add r7, sp, #0 \details Disables IRQ interrupts by setting the I-bit in the CPSR. Can only be executed in Privileged modes. */ __STATIC_FORCEINLINE void __disable_irq(void) { __ASM volatile ("cpsid i" : : : "memory"); - 8001930: b672 cpsid i + 8001910: b672 cpsid i } - 8001932: 46c0 nop ; (mov r8, r8) + 8001912: 46c0 nop ; (mov r8, r8) /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) - 8001934: e7fe b.n 8001934 + 8001914: e7fe b.n 8001914 ... -08001938 : +08001918 : void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); /** * Initializes the Global MSP. */ void HAL_MspInit(void) { - 8001938: b580 push {r7, lr} - 800193a: b082 sub sp, #8 - 800193c: af00 add r7, sp, #0 + 8001918: b580 push {r7, lr} + 800191a: b082 sub sp, #8 + 800191c: af00 add r7, sp, #0 /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_SYSCFG_CLK_ENABLE(); - 800193e: 4b0f ldr r3, [pc, #60] ; (800197c ) - 8001940: 6c1a ldr r2, [r3, #64] ; 0x40 - 8001942: 4b0e ldr r3, [pc, #56] ; (800197c ) - 8001944: 2101 movs r1, #1 - 8001946: 430a orrs r2, r1 - 8001948: 641a str r2, [r3, #64] ; 0x40 - 800194a: 4b0c ldr r3, [pc, #48] ; (800197c ) - 800194c: 6c1b ldr r3, [r3, #64] ; 0x40 - 800194e: 2201 movs r2, #1 - 8001950: 4013 ands r3, r2 - 8001952: 607b str r3, [r7, #4] - 8001954: 687b ldr r3, [r7, #4] + 800191e: 4b0f ldr r3, [pc, #60] ; (800195c ) + 8001920: 6c1a ldr r2, [r3, #64] ; 0x40 + 8001922: 4b0e ldr r3, [pc, #56] ; (800195c ) + 8001924: 2101 movs r1, #1 + 8001926: 430a orrs r2, r1 + 8001928: 641a str r2, [r3, #64] ; 0x40 + 800192a: 4b0c ldr r3, [pc, #48] ; (800195c ) + 800192c: 6c1b ldr r3, [r3, #64] ; 0x40 + 800192e: 2201 movs r2, #1 + 8001930: 4013 ands r3, r2 + 8001932: 607b str r3, [r7, #4] + 8001934: 687b ldr r3, [r7, #4] __HAL_RCC_PWR_CLK_ENABLE(); - 8001956: 4b09 ldr r3, [pc, #36] ; (800197c ) - 8001958: 6bda ldr r2, [r3, #60] ; 0x3c - 800195a: 4b08 ldr r3, [pc, #32] ; (800197c ) - 800195c: 2180 movs r1, #128 ; 0x80 - 800195e: 0549 lsls r1, r1, #21 - 8001960: 430a orrs r2, r1 - 8001962: 63da str r2, [r3, #60] ; 0x3c - 8001964: 4b05 ldr r3, [pc, #20] ; (800197c ) - 8001966: 6bda ldr r2, [r3, #60] ; 0x3c - 8001968: 2380 movs r3, #128 ; 0x80 - 800196a: 055b lsls r3, r3, #21 - 800196c: 4013 ands r3, r2 - 800196e: 603b str r3, [r7, #0] - 8001970: 683b ldr r3, [r7, #0] + 8001936: 4b09 ldr r3, [pc, #36] ; (800195c ) + 8001938: 6bda ldr r2, [r3, #60] ; 0x3c + 800193a: 4b08 ldr r3, [pc, #32] ; (800195c ) + 800193c: 2180 movs r1, #128 ; 0x80 + 800193e: 0549 lsls r1, r1, #21 + 8001940: 430a orrs r2, r1 + 8001942: 63da str r2, [r3, #60] ; 0x3c + 8001944: 4b05 ldr r3, [pc, #20] ; (800195c ) + 8001946: 6bda ldr r2, [r3, #60] ; 0x3c + 8001948: 2380 movs r3, #128 ; 0x80 + 800194a: 055b lsls r3, r3, #21 + 800194c: 4013 ands r3, r2 + 800194e: 603b str r3, [r7, #0] + 8001950: 683b ldr r3, [r7, #0] /* System interrupt init*/ /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } - 8001972: 46c0 nop ; (mov r8, r8) - 8001974: 46bd mov sp, r7 - 8001976: b002 add sp, #8 - 8001978: bd80 pop {r7, pc} - 800197a: 46c0 nop ; (mov r8, r8) - 800197c: 40021000 .word 0x40021000 + 8001952: 46c0 nop ; (mov r8, r8) + 8001954: 46bd mov sp, r7 + 8001956: b002 add sp, #8 + 8001958: bd80 pop {r7, pc} + 800195a: 46c0 nop ; (mov r8, r8) + 800195c: 40021000 .word 0x40021000 -08001980 : +08001960 : * This function configures the hardware resources used in this example * @param hcrc: CRC handle pointer * @retval None */ void HAL_CRC_MspInit(CRC_HandleTypeDef* hcrc) { - 8001980: b580 push {r7, lr} - 8001982: b084 sub sp, #16 - 8001984: af00 add r7, sp, #0 - 8001986: 6078 str r0, [r7, #4] + 8001960: b580 push {r7, lr} + 8001962: b084 sub sp, #16 + 8001964: af00 add r7, sp, #0 + 8001966: 6078 str r0, [r7, #4] if(hcrc->Instance==CRC) - 8001988: 687b ldr r3, [r7, #4] - 800198a: 681b ldr r3, [r3, #0] - 800198c: 4a0a ldr r2, [pc, #40] ; (80019b8 ) - 800198e: 4293 cmp r3, r2 - 8001990: d10d bne.n 80019ae + 8001968: 687b ldr r3, [r7, #4] + 800196a: 681b ldr r3, [r3, #0] + 800196c: 4a0a ldr r2, [pc, #40] ; (8001998 ) + 800196e: 4293 cmp r3, r2 + 8001970: d10d bne.n 800198e { /* USER CODE BEGIN CRC_MspInit 0 */ /* USER CODE END CRC_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_CRC_CLK_ENABLE(); - 8001992: 4b0a ldr r3, [pc, #40] ; (80019bc ) - 8001994: 6b9a ldr r2, [r3, #56] ; 0x38 - 8001996: 4b09 ldr r3, [pc, #36] ; (80019bc ) - 8001998: 2180 movs r1, #128 ; 0x80 - 800199a: 0149 lsls r1, r1, #5 - 800199c: 430a orrs r2, r1 - 800199e: 639a str r2, [r3, #56] ; 0x38 - 80019a0: 4b06 ldr r3, [pc, #24] ; (80019bc ) - 80019a2: 6b9a ldr r2, [r3, #56] ; 0x38 - 80019a4: 2380 movs r3, #128 ; 0x80 - 80019a6: 015b lsls r3, r3, #5 - 80019a8: 4013 ands r3, r2 - 80019aa: 60fb str r3, [r7, #12] - 80019ac: 68fb ldr r3, [r7, #12] + 8001972: 4b0a ldr r3, [pc, #40] ; (800199c ) + 8001974: 6b9a ldr r2, [r3, #56] ; 0x38 + 8001976: 4b09 ldr r3, [pc, #36] ; (800199c ) + 8001978: 2180 movs r1, #128 ; 0x80 + 800197a: 0149 lsls r1, r1, #5 + 800197c: 430a orrs r2, r1 + 800197e: 639a str r2, [r3, #56] ; 0x38 + 8001980: 4b06 ldr r3, [pc, #24] ; (800199c ) + 8001982: 6b9a ldr r2, [r3, #56] ; 0x38 + 8001984: 2380 movs r3, #128 ; 0x80 + 8001986: 015b lsls r3, r3, #5 + 8001988: 4013 ands r3, r2 + 800198a: 60fb str r3, [r7, #12] + 800198c: 68fb ldr r3, [r7, #12] /* USER CODE BEGIN CRC_MspInit 1 */ /* USER CODE END CRC_MspInit 1 */ } } - 80019ae: 46c0 nop ; (mov r8, r8) - 80019b0: 46bd mov sp, r7 - 80019b2: b004 add sp, #16 - 80019b4: bd80 pop {r7, pc} - 80019b6: 46c0 nop ; (mov r8, r8) - 80019b8: 40023000 .word 0x40023000 - 80019bc: 40021000 .word 0x40021000 + 800198e: 46c0 nop ; (mov r8, r8) + 8001990: 46bd mov sp, r7 + 8001992: b004 add sp, #16 + 8001994: bd80 pop {r7, pc} + 8001996: 46c0 nop ; (mov r8, r8) + 8001998: 40023000 .word 0x40023000 + 800199c: 40021000 .word 0x40021000 -080019c0 : +080019a0 : * This function configures the hardware resources used in this example * @param hi2c: I2C handle pointer * @retval None */ void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) { - 80019c0: b590 push {r4, r7, lr} - 80019c2: b095 sub sp, #84 ; 0x54 - 80019c4: af00 add r7, sp, #0 - 80019c6: 6078 str r0, [r7, #4] + 80019a0: b590 push {r4, r7, lr} + 80019a2: b095 sub sp, #84 ; 0x54 + 80019a4: af00 add r7, sp, #0 + 80019a6: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80019c8: 233c movs r3, #60 ; 0x3c - 80019ca: 18fb adds r3, r7, r3 - 80019cc: 0018 movs r0, r3 - 80019ce: 2314 movs r3, #20 - 80019d0: 001a movs r2, r3 - 80019d2: 2100 movs r1, #0 - 80019d4: f004 fecc bl 8006770 + 80019a8: 233c movs r3, #60 ; 0x3c + 80019aa: 18fb adds r3, r7, r3 + 80019ac: 0018 movs r0, r3 + 80019ae: 2314 movs r3, #20 + 80019b0: 001a movs r2, r3 + 80019b2: 2100 movs r1, #0 + 80019b4: f004 fedc bl 8006770 RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - 80019d8: 2414 movs r4, #20 - 80019da: 193b adds r3, r7, r4 - 80019dc: 0018 movs r0, r3 - 80019de: 2328 movs r3, #40 ; 0x28 - 80019e0: 001a movs r2, r3 - 80019e2: 2100 movs r1, #0 - 80019e4: f004 fec4 bl 8006770 + 80019b8: 2414 movs r4, #20 + 80019ba: 193b adds r3, r7, r4 + 80019bc: 0018 movs r0, r3 + 80019be: 2328 movs r3, #40 ; 0x28 + 80019c0: 001a movs r2, r3 + 80019c2: 2100 movs r1, #0 + 80019c4: f004 fed4 bl 8006770 if(hi2c->Instance==I2C1) - 80019e8: 687b ldr r3, [r7, #4] - 80019ea: 681b ldr r3, [r3, #0] - 80019ec: 4a22 ldr r2, [pc, #136] ; (8001a78 ) - 80019ee: 4293 cmp r3, r2 - 80019f0: d13d bne.n 8001a6e + 80019c8: 687b ldr r3, [r7, #4] + 80019ca: 681b ldr r3, [r3, #0] + 80019cc: 4a22 ldr r2, [pc, #136] ; (8001a58 ) + 80019ce: 4293 cmp r3, r2 + 80019d0: d13d bne.n 8001a4e /* USER CODE END I2C1_MspInit 0 */ /** Initializes the peripherals clocks */ PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_I2C1; - 80019f2: 193b adds r3, r7, r4 - 80019f4: 2220 movs r2, #32 - 80019f6: 601a str r2, [r3, #0] + 80019d2: 193b adds r3, r7, r4 + 80019d4: 2220 movs r2, #32 + 80019d6: 601a str r2, [r3, #0] PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1; - 80019f8: 193b adds r3, r7, r4 - 80019fa: 2200 movs r2, #0 - 80019fc: 60da str r2, [r3, #12] + 80019d8: 193b adds r3, r7, r4 + 80019da: 2200 movs r2, #0 + 80019dc: 60da str r2, [r3, #12] if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - 80019fe: 193b adds r3, r7, r4 - 8001a00: 0018 movs r0, r3 - 8001a02: f002 fb55 bl 80040b0 - 8001a06: 1e03 subs r3, r0, #0 - 8001a08: d001 beq.n 8001a0e + 80019de: 193b adds r3, r7, r4 + 80019e0: 0018 movs r0, r3 + 80019e2: f002 fb55 bl 8004090 + 80019e6: 1e03 subs r3, r0, #0 + 80019e8: d001 beq.n 80019ee { Error_Handler(); - 8001a0a: f7ff ff8f bl 800192c + 80019ea: f7ff ff8f bl 800190c } __HAL_RCC_GPIOB_CLK_ENABLE(); - 8001a0e: 4b1b ldr r3, [pc, #108] ; (8001a7c ) - 8001a10: 6b5a ldr r2, [r3, #52] ; 0x34 - 8001a12: 4b1a ldr r3, [pc, #104] ; (8001a7c ) - 8001a14: 2102 movs r1, #2 - 8001a16: 430a orrs r2, r1 - 8001a18: 635a str r2, [r3, #52] ; 0x34 - 8001a1a: 4b18 ldr r3, [pc, #96] ; (8001a7c ) - 8001a1c: 6b5b ldr r3, [r3, #52] ; 0x34 - 8001a1e: 2202 movs r2, #2 - 8001a20: 4013 ands r3, r2 - 8001a22: 613b str r3, [r7, #16] - 8001a24: 693b ldr r3, [r7, #16] + 80019ee: 4b1b ldr r3, [pc, #108] ; (8001a5c ) + 80019f0: 6b5a ldr r2, [r3, #52] ; 0x34 + 80019f2: 4b1a ldr r3, [pc, #104] ; (8001a5c ) + 80019f4: 2102 movs r1, #2 + 80019f6: 430a orrs r2, r1 + 80019f8: 635a str r2, [r3, #52] ; 0x34 + 80019fa: 4b18 ldr r3, [pc, #96] ; (8001a5c ) + 80019fc: 6b5b ldr r3, [r3, #52] ; 0x34 + 80019fe: 2202 movs r2, #2 + 8001a00: 4013 ands r3, r2 + 8001a02: 613b str r3, [r7, #16] + 8001a04: 693b ldr r3, [r7, #16] /**I2C1 GPIO Configuration PB6 ------> I2C1_SCL PB7 ------> I2C1_SDA */ GPIO_InitStruct.Pin = Sens_SCL_Pin|Sens_SDA_Pin; - 8001a26: 213c movs r1, #60 ; 0x3c - 8001a28: 187b adds r3, r7, r1 - 8001a2a: 22c0 movs r2, #192 ; 0xc0 - 8001a2c: 601a str r2, [r3, #0] + 8001a06: 213c movs r1, #60 ; 0x3c + 8001a08: 187b adds r3, r7, r1 + 8001a0a: 22c0 movs r2, #192 ; 0xc0 + 8001a0c: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - 8001a2e: 187b adds r3, r7, r1 - 8001a30: 2212 movs r2, #18 - 8001a32: 605a str r2, [r3, #4] + 8001a0e: 187b adds r3, r7, r1 + 8001a10: 2212 movs r2, #18 + 8001a12: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001a34: 187b adds r3, r7, r1 - 8001a36: 2200 movs r2, #0 - 8001a38: 609a str r2, [r3, #8] + 8001a14: 187b adds r3, r7, r1 + 8001a16: 2200 movs r2, #0 + 8001a18: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001a3a: 187b adds r3, r7, r1 - 8001a3c: 2200 movs r2, #0 - 8001a3e: 60da str r2, [r3, #12] + 8001a1a: 187b adds r3, r7, r1 + 8001a1c: 2200 movs r2, #0 + 8001a1e: 60da str r2, [r3, #12] GPIO_InitStruct.Alternate = GPIO_AF6_I2C1; - 8001a40: 187b adds r3, r7, r1 - 8001a42: 2206 movs r2, #6 - 8001a44: 611a str r2, [r3, #16] + 8001a20: 187b adds r3, r7, r1 + 8001a22: 2206 movs r2, #6 + 8001a24: 611a str r2, [r3, #16] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8001a46: 187b adds r3, r7, r1 - 8001a48: 4a0d ldr r2, [pc, #52] ; (8001a80 ) - 8001a4a: 0019 movs r1, r3 - 8001a4c: 0010 movs r0, r2 - 8001a4e: f000 fe33 bl 80026b8 + 8001a26: 187b adds r3, r7, r1 + 8001a28: 4a0d ldr r2, [pc, #52] ; (8001a60 ) + 8001a2a: 0019 movs r1, r3 + 8001a2c: 0010 movs r0, r2 + 8001a2e: f000 fe33 bl 8002698 /* Peripheral clock enable */ __HAL_RCC_I2C1_CLK_ENABLE(); - 8001a52: 4b0a ldr r3, [pc, #40] ; (8001a7c ) - 8001a54: 6bda ldr r2, [r3, #60] ; 0x3c - 8001a56: 4b09 ldr r3, [pc, #36] ; (8001a7c ) - 8001a58: 2180 movs r1, #128 ; 0x80 - 8001a5a: 0389 lsls r1, r1, #14 - 8001a5c: 430a orrs r2, r1 - 8001a5e: 63da str r2, [r3, #60] ; 0x3c - 8001a60: 4b06 ldr r3, [pc, #24] ; (8001a7c ) - 8001a62: 6bda ldr r2, [r3, #60] ; 0x3c - 8001a64: 2380 movs r3, #128 ; 0x80 - 8001a66: 039b lsls r3, r3, #14 - 8001a68: 4013 ands r3, r2 - 8001a6a: 60fb str r3, [r7, #12] - 8001a6c: 68fb ldr r3, [r7, #12] + 8001a32: 4b0a ldr r3, [pc, #40] ; (8001a5c ) + 8001a34: 6bda ldr r2, [r3, #60] ; 0x3c + 8001a36: 4b09 ldr r3, [pc, #36] ; (8001a5c ) + 8001a38: 2180 movs r1, #128 ; 0x80 + 8001a3a: 0389 lsls r1, r1, #14 + 8001a3c: 430a orrs r2, r1 + 8001a3e: 63da str r2, [r3, #60] ; 0x3c + 8001a40: 4b06 ldr r3, [pc, #24] ; (8001a5c ) + 8001a42: 6bda ldr r2, [r3, #60] ; 0x3c + 8001a44: 2380 movs r3, #128 ; 0x80 + 8001a46: 039b lsls r3, r3, #14 + 8001a48: 4013 ands r3, r2 + 8001a4a: 60fb str r3, [r7, #12] + 8001a4c: 68fb ldr r3, [r7, #12] /* USER CODE BEGIN I2C1_MspInit 1 */ /* USER CODE END I2C1_MspInit 1 */ } } - 8001a6e: 46c0 nop ; (mov r8, r8) - 8001a70: 46bd mov sp, r7 - 8001a72: b015 add sp, #84 ; 0x54 - 8001a74: bd90 pop {r4, r7, pc} - 8001a76: 46c0 nop ; (mov r8, r8) - 8001a78: 40005400 .word 0x40005400 - 8001a7c: 40021000 .word 0x40021000 - 8001a80: 50000400 .word 0x50000400 + 8001a4e: 46c0 nop ; (mov r8, r8) + 8001a50: 46bd mov sp, r7 + 8001a52: b015 add sp, #84 ; 0x54 + 8001a54: bd90 pop {r4, r7, pc} + 8001a56: 46c0 nop ; (mov r8, r8) + 8001a58: 40005400 .word 0x40005400 + 8001a5c: 40021000 .word 0x40021000 + 8001a60: 50000400 .word 0x50000400 -08001a84 : +08001a64 : * 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) { - 8001a84: b580 push {r7, lr} - 8001a86: b086 sub sp, #24 - 8001a88: af00 add r7, sp, #0 - 8001a8a: 6078 str r0, [r7, #4] + 8001a64: b580 push {r7, lr} + 8001a66: b086 sub sp, #24 + 8001a68: af00 add r7, sp, #0 + 8001a6a: 6078 str r0, [r7, #4] if(htim_base->Instance==TIM3) - 8001a8c: 687b ldr r3, [r7, #4] - 8001a8e: 681b ldr r3, [r3, #0] - 8001a90: 4a25 ldr r2, [pc, #148] ; (8001b28 ) - 8001a92: 4293 cmp r3, r2 - 8001a94: d10c bne.n 8001ab0 + 8001a6c: 687b ldr r3, [r7, #4] + 8001a6e: 681b ldr r3, [r3, #0] + 8001a70: 4a25 ldr r2, [pc, #148] ; (8001b08 ) + 8001a72: 4293 cmp r3, r2 + 8001a74: d10c bne.n 8001a90 { /* USER CODE BEGIN TIM3_MspInit 0 */ /* USER CODE END TIM3_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_TIM3_CLK_ENABLE(); - 8001a96: 4b25 ldr r3, [pc, #148] ; (8001b2c ) - 8001a98: 6bda ldr r2, [r3, #60] ; 0x3c - 8001a9a: 4b24 ldr r3, [pc, #144] ; (8001b2c ) - 8001a9c: 2102 movs r1, #2 - 8001a9e: 430a orrs r2, r1 - 8001aa0: 63da str r2, [r3, #60] ; 0x3c - 8001aa2: 4b22 ldr r3, [pc, #136] ; (8001b2c ) - 8001aa4: 6bdb ldr r3, [r3, #60] ; 0x3c - 8001aa6: 2202 movs r2, #2 - 8001aa8: 4013 ands r3, r2 - 8001aaa: 617b str r3, [r7, #20] - 8001aac: 697b ldr r3, [r7, #20] + 8001a76: 4b25 ldr r3, [pc, #148] ; (8001b0c ) + 8001a78: 6bda ldr r2, [r3, #60] ; 0x3c + 8001a7a: 4b24 ldr r3, [pc, #144] ; (8001b0c ) + 8001a7c: 2102 movs r1, #2 + 8001a7e: 430a orrs r2, r1 + 8001a80: 63da str r2, [r3, #60] ; 0x3c + 8001a82: 4b22 ldr r3, [pc, #136] ; (8001b0c ) + 8001a84: 6bdb ldr r3, [r3, #60] ; 0x3c + 8001a86: 2202 movs r2, #2 + 8001a88: 4013 ands r3, r2 + 8001a8a: 617b str r3, [r7, #20] + 8001a8c: 697b ldr r3, [r7, #20] /* USER CODE BEGIN TIM17_MspInit 1 */ /* USER CODE END TIM17_MspInit 1 */ } } - 8001aae: e036 b.n 8001b1e + 8001a8e: e036 b.n 8001afe else if(htim_base->Instance==TIM16) - 8001ab0: 687b ldr r3, [r7, #4] - 8001ab2: 681b ldr r3, [r3, #0] - 8001ab4: 4a1e ldr r2, [pc, #120] ; (8001b30 ) - 8001ab6: 4293 cmp r3, r2 - 8001ab8: d116 bne.n 8001ae8 + 8001a90: 687b ldr r3, [r7, #4] + 8001a92: 681b ldr r3, [r3, #0] + 8001a94: 4a1e ldr r2, [pc, #120] ; (8001b10 ) + 8001a96: 4293 cmp r3, r2 + 8001a98: d116 bne.n 8001ac8 __HAL_RCC_TIM16_CLK_ENABLE(); - 8001aba: 4b1c ldr r3, [pc, #112] ; (8001b2c ) - 8001abc: 6c1a ldr r2, [r3, #64] ; 0x40 - 8001abe: 4b1b ldr r3, [pc, #108] ; (8001b2c ) - 8001ac0: 2180 movs r1, #128 ; 0x80 - 8001ac2: 0289 lsls r1, r1, #10 - 8001ac4: 430a orrs r2, r1 - 8001ac6: 641a str r2, [r3, #64] ; 0x40 - 8001ac8: 4b18 ldr r3, [pc, #96] ; (8001b2c ) - 8001aca: 6c1a ldr r2, [r3, #64] ; 0x40 - 8001acc: 2380 movs r3, #128 ; 0x80 - 8001ace: 029b lsls r3, r3, #10 - 8001ad0: 4013 ands r3, r2 - 8001ad2: 613b str r3, [r7, #16] - 8001ad4: 693b ldr r3, [r7, #16] + 8001a9a: 4b1c ldr r3, [pc, #112] ; (8001b0c ) + 8001a9c: 6c1a ldr r2, [r3, #64] ; 0x40 + 8001a9e: 4b1b ldr r3, [pc, #108] ; (8001b0c ) + 8001aa0: 2180 movs r1, #128 ; 0x80 + 8001aa2: 0289 lsls r1, r1, #10 + 8001aa4: 430a orrs r2, r1 + 8001aa6: 641a str r2, [r3, #64] ; 0x40 + 8001aa8: 4b18 ldr r3, [pc, #96] ; (8001b0c ) + 8001aaa: 6c1a ldr r2, [r3, #64] ; 0x40 + 8001aac: 2380 movs r3, #128 ; 0x80 + 8001aae: 029b lsls r3, r3, #10 + 8001ab0: 4013 ands r3, r2 + 8001ab2: 613b str r3, [r7, #16] + 8001ab4: 693b ldr r3, [r7, #16] HAL_NVIC_SetPriority(TIM16_IRQn, 0, 0); - 8001ad6: 2200 movs r2, #0 - 8001ad8: 2100 movs r1, #0 - 8001ada: 2015 movs r0, #21 - 8001adc: f000 fa30 bl 8001f40 + 8001ab6: 2200 movs r2, #0 + 8001ab8: 2100 movs r1, #0 + 8001aba: 2015 movs r0, #21 + 8001abc: f000 fa30 bl 8001f20 HAL_NVIC_EnableIRQ(TIM16_IRQn); - 8001ae0: 2015 movs r0, #21 - 8001ae2: f000 fa42 bl 8001f6a + 8001ac0: 2015 movs r0, #21 + 8001ac2: f000 fa42 bl 8001f4a } - 8001ae6: e01a b.n 8001b1e + 8001ac6: e01a b.n 8001afe else if(htim_base->Instance==TIM17) - 8001ae8: 687b ldr r3, [r7, #4] - 8001aea: 681b ldr r3, [r3, #0] - 8001aec: 4a11 ldr r2, [pc, #68] ; (8001b34 ) - 8001aee: 4293 cmp r3, r2 - 8001af0: d115 bne.n 8001b1e + 8001ac8: 687b ldr r3, [r7, #4] + 8001aca: 681b ldr r3, [r3, #0] + 8001acc: 4a11 ldr r2, [pc, #68] ; (8001b14 ) + 8001ace: 4293 cmp r3, r2 + 8001ad0: d115 bne.n 8001afe __HAL_RCC_TIM17_CLK_ENABLE(); - 8001af2: 4b0e ldr r3, [pc, #56] ; (8001b2c ) - 8001af4: 6c1a ldr r2, [r3, #64] ; 0x40 - 8001af6: 4b0d ldr r3, [pc, #52] ; (8001b2c ) - 8001af8: 2180 movs r1, #128 ; 0x80 - 8001afa: 02c9 lsls r1, r1, #11 - 8001afc: 430a orrs r2, r1 - 8001afe: 641a str r2, [r3, #64] ; 0x40 - 8001b00: 4b0a ldr r3, [pc, #40] ; (8001b2c ) - 8001b02: 6c1a ldr r2, [r3, #64] ; 0x40 - 8001b04: 2380 movs r3, #128 ; 0x80 - 8001b06: 02db lsls r3, r3, #11 - 8001b08: 4013 ands r3, r2 - 8001b0a: 60fb str r3, [r7, #12] - 8001b0c: 68fb ldr r3, [r7, #12] + 8001ad2: 4b0e ldr r3, [pc, #56] ; (8001b0c ) + 8001ad4: 6c1a ldr r2, [r3, #64] ; 0x40 + 8001ad6: 4b0d ldr r3, [pc, #52] ; (8001b0c ) + 8001ad8: 2180 movs r1, #128 ; 0x80 + 8001ada: 02c9 lsls r1, r1, #11 + 8001adc: 430a orrs r2, r1 + 8001ade: 641a str r2, [r3, #64] ; 0x40 + 8001ae0: 4b0a ldr r3, [pc, #40] ; (8001b0c ) + 8001ae2: 6c1a ldr r2, [r3, #64] ; 0x40 + 8001ae4: 2380 movs r3, #128 ; 0x80 + 8001ae6: 02db lsls r3, r3, #11 + 8001ae8: 4013 ands r3, r2 + 8001aea: 60fb str r3, [r7, #12] + 8001aec: 68fb ldr r3, [r7, #12] HAL_NVIC_SetPriority(TIM17_IRQn, 0, 0); - 8001b0e: 2200 movs r2, #0 - 8001b10: 2100 movs r1, #0 - 8001b12: 2016 movs r0, #22 - 8001b14: f000 fa14 bl 8001f40 + 8001aee: 2200 movs r2, #0 + 8001af0: 2100 movs r1, #0 + 8001af2: 2016 movs r0, #22 + 8001af4: f000 fa14 bl 8001f20 HAL_NVIC_EnableIRQ(TIM17_IRQn); - 8001b18: 2016 movs r0, #22 - 8001b1a: f000 fa26 bl 8001f6a + 8001af8: 2016 movs r0, #22 + 8001afa: f000 fa26 bl 8001f4a } - 8001b1e: 46c0 nop ; (mov r8, r8) - 8001b20: 46bd mov sp, r7 - 8001b22: b006 add sp, #24 - 8001b24: bd80 pop {r7, pc} - 8001b26: 46c0 nop ; (mov r8, r8) - 8001b28: 40000400 .word 0x40000400 - 8001b2c: 40021000 .word 0x40021000 - 8001b30: 40014400 .word 0x40014400 - 8001b34: 40014800 .word 0x40014800 + 8001afe: 46c0 nop ; (mov r8, r8) + 8001b00: 46bd mov sp, r7 + 8001b02: b006 add sp, #24 + 8001b04: bd80 pop {r7, pc} + 8001b06: 46c0 nop ; (mov r8, r8) + 8001b08: 40000400 .word 0x40000400 + 8001b0c: 40021000 .word 0x40021000 + 8001b10: 40014400 .word 0x40014400 + 8001b14: 40014800 .word 0x40014800 -08001b38 : +08001b18 : void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) { - 8001b38: b590 push {r4, r7, lr} - 8001b3a: b089 sub sp, #36 ; 0x24 - 8001b3c: af00 add r7, sp, #0 - 8001b3e: 6078 str r0, [r7, #4] + 8001b18: b590 push {r4, r7, lr} + 8001b1a: b089 sub sp, #36 ; 0x24 + 8001b1c: af00 add r7, sp, #0 + 8001b1e: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8001b40: 240c movs r4, #12 - 8001b42: 193b adds r3, r7, r4 - 8001b44: 0018 movs r0, r3 - 8001b46: 2314 movs r3, #20 - 8001b48: 001a movs r2, r3 - 8001b4a: 2100 movs r1, #0 - 8001b4c: f004 fe10 bl 8006770 + 8001b20: 240c movs r4, #12 + 8001b22: 193b adds r3, r7, r4 + 8001b24: 0018 movs r0, r3 + 8001b26: 2314 movs r3, #20 + 8001b28: 001a movs r2, r3 + 8001b2a: 2100 movs r1, #0 + 8001b2c: f004 fe20 bl 8006770 if(htim->Instance==TIM3) - 8001b50: 687b ldr r3, [r7, #4] - 8001b52: 681b ldr r3, [r3, #0] - 8001b54: 4a14 ldr r2, [pc, #80] ; (8001ba8 ) - 8001b56: 4293 cmp r3, r2 - 8001b58: d121 bne.n 8001b9e + 8001b30: 687b ldr r3, [r7, #4] + 8001b32: 681b ldr r3, [r3, #0] + 8001b34: 4a14 ldr r2, [pc, #80] ; (8001b88 ) + 8001b36: 4293 cmp r3, r2 + 8001b38: d121 bne.n 8001b7e { /* USER CODE BEGIN TIM3_MspPostInit 0 */ /* USER CODE END TIM3_MspPostInit 0 */ __HAL_RCC_GPIOC_CLK_ENABLE(); - 8001b5a: 4b14 ldr r3, [pc, #80] ; (8001bac ) - 8001b5c: 6b5a ldr r2, [r3, #52] ; 0x34 - 8001b5e: 4b13 ldr r3, [pc, #76] ; (8001bac ) - 8001b60: 2104 movs r1, #4 - 8001b62: 430a orrs r2, r1 - 8001b64: 635a str r2, [r3, #52] ; 0x34 - 8001b66: 4b11 ldr r3, [pc, #68] ; (8001bac ) - 8001b68: 6b5b ldr r3, [r3, #52] ; 0x34 - 8001b6a: 2204 movs r2, #4 - 8001b6c: 4013 ands r3, r2 - 8001b6e: 60bb str r3, [r7, #8] - 8001b70: 68bb ldr r3, [r7, #8] + 8001b3a: 4b14 ldr r3, [pc, #80] ; (8001b8c ) + 8001b3c: 6b5a ldr r2, [r3, #52] ; 0x34 + 8001b3e: 4b13 ldr r3, [pc, #76] ; (8001b8c ) + 8001b40: 2104 movs r1, #4 + 8001b42: 430a orrs r2, r1 + 8001b44: 635a str r2, [r3, #52] ; 0x34 + 8001b46: 4b11 ldr r3, [pc, #68] ; (8001b8c ) + 8001b48: 6b5b ldr r3, [r3, #52] ; 0x34 + 8001b4a: 2204 movs r2, #4 + 8001b4c: 4013 ands r3, r2 + 8001b4e: 60bb str r3, [r7, #8] + 8001b50: 68bb ldr r3, [r7, #8] /**TIM3 GPIO Configuration PC6 ------> TIM3_CH1 */ GPIO_InitStruct.Pin = GPIO_PIN_6; - 8001b72: 0021 movs r1, r4 - 8001b74: 187b adds r3, r7, r1 - 8001b76: 2240 movs r2, #64 ; 0x40 - 8001b78: 601a str r2, [r3, #0] + 8001b52: 0021 movs r1, r4 + 8001b54: 187b adds r3, r7, r1 + 8001b56: 2240 movs r2, #64 ; 0x40 + 8001b58: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001b7a: 187b adds r3, r7, r1 - 8001b7c: 2202 movs r2, #2 - 8001b7e: 605a str r2, [r3, #4] + 8001b5a: 187b adds r3, r7, r1 + 8001b5c: 2202 movs r2, #2 + 8001b5e: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001b80: 187b adds r3, r7, r1 - 8001b82: 2200 movs r2, #0 - 8001b84: 609a str r2, [r3, #8] + 8001b60: 187b adds r3, r7, r1 + 8001b62: 2200 movs r2, #0 + 8001b64: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001b86: 187b adds r3, r7, r1 - 8001b88: 2200 movs r2, #0 - 8001b8a: 60da str r2, [r3, #12] + 8001b66: 187b adds r3, r7, r1 + 8001b68: 2200 movs r2, #0 + 8001b6a: 60da str r2, [r3, #12] GPIO_InitStruct.Alternate = GPIO_AF1_TIM3; - 8001b8c: 187b adds r3, r7, r1 - 8001b8e: 2201 movs r2, #1 - 8001b90: 611a str r2, [r3, #16] + 8001b6c: 187b adds r3, r7, r1 + 8001b6e: 2201 movs r2, #1 + 8001b70: 611a str r2, [r3, #16] HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 8001b92: 187b adds r3, r7, r1 - 8001b94: 4a06 ldr r2, [pc, #24] ; (8001bb0 ) - 8001b96: 0019 movs r1, r3 - 8001b98: 0010 movs r0, r2 - 8001b9a: f000 fd8d bl 80026b8 + 8001b72: 187b adds r3, r7, r1 + 8001b74: 4a06 ldr r2, [pc, #24] ; (8001b90 ) + 8001b76: 0019 movs r1, r3 + 8001b78: 0010 movs r0, r2 + 8001b7a: f000 fd8d bl 8002698 /* USER CODE BEGIN TIM3_MspPostInit 1 */ /* USER CODE END TIM3_MspPostInit 1 */ } } - 8001b9e: 46c0 nop ; (mov r8, r8) - 8001ba0: 46bd mov sp, r7 - 8001ba2: b009 add sp, #36 ; 0x24 - 8001ba4: bd90 pop {r4, r7, pc} - 8001ba6: 46c0 nop ; (mov r8, r8) - 8001ba8: 40000400 .word 0x40000400 - 8001bac: 40021000 .word 0x40021000 - 8001bb0: 50000800 .word 0x50000800 + 8001b7e: 46c0 nop ; (mov r8, r8) + 8001b80: 46bd mov sp, r7 + 8001b82: b009 add sp, #36 ; 0x24 + 8001b84: bd90 pop {r4, r7, pc} + 8001b86: 46c0 nop ; (mov r8, r8) + 8001b88: 40000400 .word 0x40000400 + 8001b8c: 40021000 .word 0x40021000 + 8001b90: 50000800 .word 0x50000800 -08001bb4 : +08001b94 : /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { - 8001bb4: b580 push {r7, lr} - 8001bb6: af00 add r7, sp, #0 + 8001b94: b580 push {r7, lr} + 8001b96: af00 add r7, sp, #0 /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ /* USER CODE END NonMaskableInt_IRQn 0 */ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ while (1) - 8001bb8: e7fe b.n 8001bb8 + 8001b98: e7fe b.n 8001b98 -08001bba : +08001b9a : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { - 8001bba: b580 push {r7, lr} - 8001bbc: af00 add r7, sp, #0 + 8001b9a: b580 push {r7, lr} + 8001b9c: af00 add r7, sp, #0 /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) - 8001bbe: e7fe b.n 8001bbe + 8001b9e: e7fe b.n 8001b9e -08001bc0 : +08001ba0 : /** * @brief This function handles System service call via SWI instruction. */ void SVC_Handler(void) { - 8001bc0: b580 push {r7, lr} - 8001bc2: af00 add r7, sp, #0 + 8001ba0: b580 push {r7, lr} + 8001ba2: af00 add r7, sp, #0 /* USER CODE END SVC_IRQn 0 */ /* USER CODE BEGIN SVC_IRQn 1 */ /* USER CODE END SVC_IRQn 1 */ } - 8001bc4: 46c0 nop ; (mov r8, r8) - 8001bc6: 46bd mov sp, r7 - 8001bc8: bd80 pop {r7, pc} + 8001ba4: 46c0 nop ; (mov r8, r8) + 8001ba6: 46bd mov sp, r7 + 8001ba8: bd80 pop {r7, pc} -08001bca : +08001baa : /** * @brief This function handles Pendable request for system service. */ void PendSV_Handler(void) { - 8001bca: b580 push {r7, lr} - 8001bcc: af00 add r7, sp, #0 + 8001baa: b580 push {r7, lr} + 8001bac: af00 add r7, sp, #0 /* USER CODE END PendSV_IRQn 0 */ /* USER CODE BEGIN PendSV_IRQn 1 */ /* USER CODE END PendSV_IRQn 1 */ } - 8001bce: 46c0 nop ; (mov r8, r8) - 8001bd0: 46bd mov sp, r7 - 8001bd2: bd80 pop {r7, pc} + 8001bae: 46c0 nop ; (mov r8, r8) + 8001bb0: 46bd mov sp, r7 + 8001bb2: bd80 pop {r7, pc} -08001bd4 : +08001bb4 : /** * @brief This function handles System tick timer. */ void SysTick_Handler(void) { - 8001bd4: b580 push {r7, lr} - 8001bd6: af00 add r7, sp, #0 + 8001bb4: b580 push {r7, lr} + 8001bb6: af00 add r7, sp, #0 /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); - 8001bd8: f000 f8c6 bl 8001d68 + 8001bb8: f000 f8c6 bl 8001d48 /* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */ } - 8001bdc: 46c0 nop ; (mov r8, r8) - 8001bde: 46bd mov sp, r7 - 8001be0: bd80 pop {r7, pc} + 8001bbc: 46c0 nop ; (mov r8, r8) + 8001bbe: 46bd mov sp, r7 + 8001bc0: bd80 pop {r7, pc} -08001be2 : +08001bc2 : /** * @brief This function handles EXTI line 0 and line 1 interrupts. */ void EXTI0_1_IRQHandler(void) { - 8001be2: b580 push {r7, lr} - 8001be4: af00 add r7, sp, #0 + 8001bc2: b580 push {r7, lr} + 8001bc4: af00 add r7, sp, #0 /* USER CODE BEGIN EXTI0_1_IRQn 0 */ /* USER CODE END EXTI0_1_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(Btn_INT_Pin); - 8001be6: 2001 movs r0, #1 - 8001be8: f000 fee8 bl 80029bc + 8001bc6: 2001 movs r0, #1 + 8001bc8: f000 fee8 bl 800299c /* USER CODE BEGIN EXTI0_1_IRQn 1 */ /* USER CODE END EXTI0_1_IRQn 1 */ } - 8001bec: 46c0 nop ; (mov r8, r8) - 8001bee: 46bd mov sp, r7 - 8001bf0: bd80 pop {r7, pc} + 8001bcc: 46c0 nop ; (mov r8, r8) + 8001bce: 46bd mov sp, r7 + 8001bd0: bd80 pop {r7, pc} -08001bf2 : +08001bd2 : /** * @brief This function handles EXTI line 4 to 15 interrupts. */ void EXTI4_15_IRQHandler(void) { - 8001bf2: b580 push {r7, lr} - 8001bf4: af00 add r7, sp, #0 + 8001bd2: b580 push {r7, lr} + 8001bd4: af00 add r7, sp, #0 /* USER CODE BEGIN EXTI4_15_IRQn 0 */ /* USER CODE END EXTI4_15_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(Sens_INT_Pin); - 8001bf6: 2020 movs r0, #32 - 8001bf8: f000 fee0 bl 80029bc + 8001bd6: 2020 movs r0, #32 + 8001bd8: f000 fee0 bl 800299c /* USER CODE BEGIN EXTI4_15_IRQn 1 */ /* USER CODE END EXTI4_15_IRQn 1 */ } - 8001bfc: 46c0 nop ; (mov r8, r8) - 8001bfe: 46bd mov sp, r7 - 8001c00: bd80 pop {r7, pc} + 8001bdc: 46c0 nop ; (mov r8, r8) + 8001bde: 46bd mov sp, r7 + 8001be0: bd80 pop {r7, pc} ... -08001c04 : +08001be4 : /** * @brief This function handles TIM16 global interrupt. */ void TIM16_IRQHandler(void) { - 8001c04: b580 push {r7, lr} - 8001c06: af00 add r7, sp, #0 + 8001be4: b580 push {r7, lr} + 8001be6: af00 add r7, sp, #0 /* USER CODE BEGIN TIM16_IRQn 0 */ /* USER CODE END TIM16_IRQn 0 */ HAL_TIM_IRQHandler(&htim16); - 8001c08: 4b03 ldr r3, [pc, #12] ; (8001c18 ) - 8001c0a: 0018 movs r0, r3 - 8001c0c: f002 fde2 bl 80047d4 + 8001be8: 4b03 ldr r3, [pc, #12] ; (8001bf8 ) + 8001bea: 0018 movs r0, r3 + 8001bec: f002 fde2 bl 80047b4 /* USER CODE BEGIN TIM16_IRQn 1 */ /* USER CODE END TIM16_IRQn 1 */ } - 8001c10: 46c0 nop ; (mov r8, r8) - 8001c12: 46bd mov sp, r7 - 8001c14: bd80 pop {r7, pc} - 8001c16: 46c0 nop ; (mov r8, r8) - 8001c18: 20000178 .word 0x20000178 + 8001bf0: 46c0 nop ; (mov r8, r8) + 8001bf2: 46bd mov sp, r7 + 8001bf4: bd80 pop {r7, pc} + 8001bf6: 46c0 nop ; (mov r8, r8) + 8001bf8: 20000178 .word 0x20000178 -08001c1c : +08001bfc : /** * @brief This function handles TIM17 global interrupt. */ void TIM17_IRQHandler(void) { - 8001c1c: b580 push {r7, lr} - 8001c1e: af00 add r7, sp, #0 + 8001bfc: b580 push {r7, lr} + 8001bfe: af00 add r7, sp, #0 /* USER CODE BEGIN TIM17_IRQn 0 */ /* USER CODE END TIM17_IRQn 0 */ HAL_TIM_IRQHandler(&htim17); - 8001c20: 4b03 ldr r3, [pc, #12] ; (8001c30 ) - 8001c22: 0018 movs r0, r3 - 8001c24: f002 fdd6 bl 80047d4 + 8001c00: 4b03 ldr r3, [pc, #12] ; (8001c10 ) + 8001c02: 0018 movs r0, r3 + 8001c04: f002 fdd6 bl 80047b4 /* USER CODE BEGIN TIM17_IRQn 1 */ /* USER CODE END TIM17_IRQn 1 */ } - 8001c28: 46c0 nop ; (mov r8, r8) - 8001c2a: 46bd mov sp, r7 - 8001c2c: bd80 pop {r7, pc} - 8001c2e: 46c0 nop ; (mov r8, r8) - 8001c30: 200001c4 .word 0x200001c4 + 8001c08: 46c0 nop ; (mov r8, r8) + 8001c0a: 46bd mov sp, r7 + 8001c0c: bd80 pop {r7, pc} + 8001c0e: 46c0 nop ; (mov r8, r8) + 8001c10: 200001c4 .word 0x200001c4 -08001c34 : +08001c14 : * @brief Setup the microcontroller system. * @param None * @retval None */ void SystemInit(void) { - 8001c34: b580 push {r7, lr} - 8001c36: af00 add r7, sp, #0 + 8001c14: b580 push {r7, lr} + 8001c16: af00 add r7, sp, #0 /* Configure the Vector Table location -------------------------------------*/ #if defined(USER_VECT_TAB_ADDRESS) SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation */ #endif /* USER_VECT_TAB_ADDRESS */ } - 8001c38: 46c0 nop ; (mov r8, r8) - 8001c3a: 46bd mov sp, r7 - 8001c3c: bd80 pop {r7, pc} + 8001c18: 46c0 nop ; (mov r8, r8) + 8001c1a: 46bd mov sp, r7 + 8001c1c: bd80 pop {r7, pc} ... -08001c40 : +08001c20 : .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: ldr r0, =_estack - 8001c40: 480d ldr r0, [pc, #52] ; (8001c78 ) + 8001c20: 480d ldr r0, [pc, #52] ; (8001c58 ) mov sp, r0 /* set stack pointer */ - 8001c42: 4685 mov sp, r0 + 8001c22: 4685 mov sp, r0 /* Call the clock system initialization function.*/ bl SystemInit - 8001c44: f7ff fff6 bl 8001c34 + 8001c24: f7ff fff6 bl 8001c14 /* Copy the data segment initializers from flash to SRAM */ ldr r0, =_sdata - 8001c48: 480c ldr r0, [pc, #48] ; (8001c7c ) + 8001c28: 480c ldr r0, [pc, #48] ; (8001c5c ) ldr r1, =_edata - 8001c4a: 490d ldr r1, [pc, #52] ; (8001c80 ) + 8001c2a: 490d ldr r1, [pc, #52] ; (8001c60 ) ldr r2, =_sidata - 8001c4c: 4a0d ldr r2, [pc, #52] ; (8001c84 ) + 8001c2c: 4a0d ldr r2, [pc, #52] ; (8001c64 ) movs r3, #0 - 8001c4e: 2300 movs r3, #0 + 8001c2e: 2300 movs r3, #0 b LoopCopyDataInit - 8001c50: e002 b.n 8001c58 + 8001c30: e002 b.n 8001c38 -08001c52 : +08001c32 : CopyDataInit: ldr r4, [r2, r3] - 8001c52: 58d4 ldr r4, [r2, r3] + 8001c32: 58d4 ldr r4, [r2, r3] str r4, [r0, r3] - 8001c54: 50c4 str r4, [r0, r3] + 8001c34: 50c4 str r4, [r0, r3] adds r3, r3, #4 - 8001c56: 3304 adds r3, #4 + 8001c36: 3304 adds r3, #4 -08001c58 : +08001c38 : LoopCopyDataInit: adds r4, r0, r3 - 8001c58: 18c4 adds r4, r0, r3 + 8001c38: 18c4 adds r4, r0, r3 cmp r4, r1 - 8001c5a: 428c cmp r4, r1 + 8001c3a: 428c cmp r4, r1 bcc CopyDataInit - 8001c5c: d3f9 bcc.n 8001c52 + 8001c3c: d3f9 bcc.n 8001c32 /* Zero fill the bss segment. */ ldr r2, =_sbss - 8001c5e: 4a0a ldr r2, [pc, #40] ; (8001c88 ) + 8001c3e: 4a0a ldr r2, [pc, #40] ; (8001c68 ) ldr r4, =_ebss - 8001c60: 4c0a ldr r4, [pc, #40] ; (8001c8c ) + 8001c40: 4c0a ldr r4, [pc, #40] ; (8001c6c ) movs r3, #0 - 8001c62: 2300 movs r3, #0 + 8001c42: 2300 movs r3, #0 b LoopFillZerobss - 8001c64: e001 b.n 8001c6a + 8001c44: e001 b.n 8001c4a -08001c66 : +08001c46 : FillZerobss: str r3, [r2] - 8001c66: 6013 str r3, [r2, #0] + 8001c46: 6013 str r3, [r2, #0] adds r2, r2, #4 - 8001c68: 3204 adds r2, #4 + 8001c48: 3204 adds r2, #4 -08001c6a : +08001c4a : LoopFillZerobss: cmp r2, r4 - 8001c6a: 42a2 cmp r2, r4 + 8001c4a: 42a2 cmp r2, r4 bcc FillZerobss - 8001c6c: d3fb bcc.n 8001c66 + 8001c4c: d3fb bcc.n 8001c46 /* Call static constructors */ bl __libc_init_array - 8001c6e: f004 fd5b bl 8006728 <__libc_init_array> + 8001c4e: f004 fd6b bl 8006728 <__libc_init_array> /* Call the application s entry point.*/ bl main - 8001c72: f7ff fae9 bl 8001248
+ 8001c52: f7ff fad9 bl 8001208
-08001c76 : +08001c56 : LoopForever: b LoopForever - 8001c76: e7fe b.n 8001c76 + 8001c56: e7fe b.n 8001c56 ldr r0, =_estack - 8001c78: 20002000 .word 0x20002000 + 8001c58: 20002000 .word 0x20002000 ldr r0, =_sdata - 8001c7c: 20000000 .word 0x20000000 + 8001c5c: 20000000 .word 0x20000000 ldr r1, =_edata - 8001c80: 20000098 .word 0x20000098 + 8001c60: 20000098 .word 0x20000098 ldr r2, =_sidata - 8001c84: 08006884 .word 0x08006884 + 8001c64: 08006884 .word 0x08006884 ldr r2, =_sbss - 8001c88: 20000098 .word 0x20000098 + 8001c68: 20000098 .word 0x20000098 ldr r4, =_ebss - 8001c8c: 20000264 .word 0x20000264 + 8001c6c: 20000264 .word 0x20000264 -08001c90 : +08001c70 : * @retval None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop - 8001c90: e7fe b.n 8001c90 + 8001c70: e7fe b.n 8001c70 ... -08001c94 : +08001c74 : * each 1ms in the SysTick_Handler() interrupt handler. * * @retval HAL status */ HAL_StatusTypeDef HAL_Init(void) { - 8001c94: b580 push {r7, lr} - 8001c96: b082 sub sp, #8 - 8001c98: af00 add r7, sp, #0 + 8001c74: b580 push {r7, lr} + 8001c76: b082 sub sp, #8 + 8001c78: af00 add r7, sp, #0 HAL_StatusTypeDef status = HAL_OK; - 8001c9a: 1dfb adds r3, r7, #7 - 8001c9c: 2200 movs r2, #0 - 8001c9e: 701a strb r2, [r3, #0] + 8001c7a: 1dfb adds r3, r7, #7 + 8001c7c: 2200 movs r2, #0 + 8001c7e: 701a strb r2, [r3, #0] #if (INSTRUCTION_CACHE_ENABLE == 0U) __HAL_FLASH_INSTRUCTION_CACHE_DISABLE(); #endif /* INSTRUCTION_CACHE_ENABLE */ #if (PREFETCH_ENABLE != 0U) __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 8001ca0: 4b0b ldr r3, [pc, #44] ; (8001cd0 ) - 8001ca2: 681a ldr r2, [r3, #0] - 8001ca4: 4b0a ldr r3, [pc, #40] ; (8001cd0 ) - 8001ca6: 2180 movs r1, #128 ; 0x80 - 8001ca8: 0049 lsls r1, r1, #1 - 8001caa: 430a orrs r2, r1 - 8001cac: 601a str r2, [r3, #0] + 8001c80: 4b0b ldr r3, [pc, #44] ; (8001cb0 ) + 8001c82: 681a ldr r2, [r3, #0] + 8001c84: 4b0a ldr r3, [pc, #40] ; (8001cb0 ) + 8001c86: 2180 movs r1, #128 ; 0x80 + 8001c88: 0049 lsls r1, r1, #1 + 8001c8a: 430a orrs r2, r1 + 8001c8c: 601a str r2, [r3, #0] #endif /* PREFETCH_ENABLE */ /* Use SysTick as time base source and configure 1ms tick (default clock after Reset is HSI) */ if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) - 8001cae: 2003 movs r0, #3 - 8001cb0: f000 f810 bl 8001cd4 - 8001cb4: 1e03 subs r3, r0, #0 - 8001cb6: d003 beq.n 8001cc0 + 8001c8e: 2003 movs r0, #3 + 8001c90: f000 f810 bl 8001cb4 + 8001c94: 1e03 subs r3, r0, #0 + 8001c96: d003 beq.n 8001ca0 { status = HAL_ERROR; - 8001cb8: 1dfb adds r3, r7, #7 - 8001cba: 2201 movs r2, #1 - 8001cbc: 701a strb r2, [r3, #0] - 8001cbe: e001 b.n 8001cc4 + 8001c98: 1dfb adds r3, r7, #7 + 8001c9a: 2201 movs r2, #1 + 8001c9c: 701a strb r2, [r3, #0] + 8001c9e: e001 b.n 8001ca4 } else { /* Init the low level hardware */ HAL_MspInit(); - 8001cc0: f7ff fe3a bl 8001938 + 8001ca0: f7ff fe3a bl 8001918 } /* Return function status */ return status; - 8001cc4: 1dfb adds r3, r7, #7 - 8001cc6: 781b ldrb r3, [r3, #0] + 8001ca4: 1dfb adds r3, r7, #7 + 8001ca6: 781b ldrb r3, [r3, #0] } - 8001cc8: 0018 movs r0, r3 - 8001cca: 46bd mov sp, r7 - 8001ccc: b002 add sp, #8 - 8001cce: bd80 pop {r7, pc} - 8001cd0: 40022000 .word 0x40022000 + 8001ca8: 0018 movs r0, r3 + 8001caa: 46bd mov sp, r7 + 8001cac: b002 add sp, #8 + 8001cae: bd80 pop {r7, pc} + 8001cb0: 40022000 .word 0x40022000 -08001cd4 : +08001cb4 : * implementation in user file. * @param TickPriority Tick interrupt priority. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { - 8001cd4: b590 push {r4, r7, lr} - 8001cd6: b085 sub sp, #20 - 8001cd8: af00 add r7, sp, #0 - 8001cda: 6078 str r0, [r7, #4] + 8001cb4: b590 push {r4, r7, lr} + 8001cb6: b085 sub sp, #20 + 8001cb8: af00 add r7, sp, #0 + 8001cba: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 8001cdc: 230f movs r3, #15 - 8001cde: 18fb adds r3, r7, r3 - 8001ce0: 2200 movs r2, #0 - 8001ce2: 701a strb r2, [r3, #0] + 8001cbc: 230f movs r3, #15 + 8001cbe: 18fb adds r3, r7, r3 + 8001cc0: 2200 movs r2, #0 + 8001cc2: 701a strb r2, [r3, #0] /* Check uwTickFreq for MisraC 2012 (even if uwTickFreq is a enum type that doesn't take the value zero)*/ if ((uint32_t)uwTickFreq != 0U) - 8001ce4: 4b1d ldr r3, [pc, #116] ; (8001d5c ) - 8001ce6: 781b ldrb r3, [r3, #0] - 8001ce8: 2b00 cmp r3, #0 - 8001cea: d02b beq.n 8001d44 + 8001cc4: 4b1d ldr r3, [pc, #116] ; (8001d3c ) + 8001cc6: 781b ldrb r3, [r3, #0] + 8001cc8: 2b00 cmp r3, #0 + 8001cca: d02b beq.n 8001d24 { /*Configure the SysTick to have interrupt in 1ms time basis*/ if (HAL_SYSTICK_Config(SystemCoreClock / (1000U /(uint32_t)uwTickFreq)) == 0U) - 8001cec: 4b1c ldr r3, [pc, #112] ; (8001d60 ) - 8001cee: 681c ldr r4, [r3, #0] - 8001cf0: 4b1a ldr r3, [pc, #104] ; (8001d5c ) - 8001cf2: 781b ldrb r3, [r3, #0] - 8001cf4: 0019 movs r1, r3 - 8001cf6: 23fa movs r3, #250 ; 0xfa - 8001cf8: 0098 lsls r0, r3, #2 - 8001cfa: f7fe fa05 bl 8000108 <__udivsi3> - 8001cfe: 0003 movs r3, r0 - 8001d00: 0019 movs r1, r3 - 8001d02: 0020 movs r0, r4 - 8001d04: f7fe fa00 bl 8000108 <__udivsi3> - 8001d08: 0003 movs r3, r0 - 8001d0a: 0018 movs r0, r3 - 8001d0c: f000 f93d bl 8001f8a - 8001d10: 1e03 subs r3, r0, #0 - 8001d12: d112 bne.n 8001d3a + 8001ccc: 4b1c ldr r3, [pc, #112] ; (8001d40 ) + 8001cce: 681c ldr r4, [r3, #0] + 8001cd0: 4b1a ldr r3, [pc, #104] ; (8001d3c ) + 8001cd2: 781b ldrb r3, [r3, #0] + 8001cd4: 0019 movs r1, r3 + 8001cd6: 23fa movs r3, #250 ; 0xfa + 8001cd8: 0098 lsls r0, r3, #2 + 8001cda: f7fe fa15 bl 8000108 <__udivsi3> + 8001cde: 0003 movs r3, r0 + 8001ce0: 0019 movs r1, r3 + 8001ce2: 0020 movs r0, r4 + 8001ce4: f7fe fa10 bl 8000108 <__udivsi3> + 8001ce8: 0003 movs r3, r0 + 8001cea: 0018 movs r0, r3 + 8001cec: f000 f93d bl 8001f6a + 8001cf0: 1e03 subs r3, r0, #0 + 8001cf2: d112 bne.n 8001d1a { /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 8001d14: 687b ldr r3, [r7, #4] - 8001d16: 2b03 cmp r3, #3 - 8001d18: d80a bhi.n 8001d30 + 8001cf4: 687b ldr r3, [r7, #4] + 8001cf6: 2b03 cmp r3, #3 + 8001cf8: d80a bhi.n 8001d10 { HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); - 8001d1a: 6879 ldr r1, [r7, #4] - 8001d1c: 2301 movs r3, #1 - 8001d1e: 425b negs r3, r3 - 8001d20: 2200 movs r2, #0 - 8001d22: 0018 movs r0, r3 - 8001d24: f000 f90c bl 8001f40 + 8001cfa: 6879 ldr r1, [r7, #4] + 8001cfc: 2301 movs r3, #1 + 8001cfe: 425b negs r3, r3 + 8001d00: 2200 movs r2, #0 + 8001d02: 0018 movs r0, r3 + 8001d04: f000 f90c bl 8001f20 uwTickPrio = TickPriority; - 8001d28: 4b0e ldr r3, [pc, #56] ; (8001d64 ) - 8001d2a: 687a ldr r2, [r7, #4] - 8001d2c: 601a str r2, [r3, #0] - 8001d2e: e00d b.n 8001d4c + 8001d08: 4b0e ldr r3, [pc, #56] ; (8001d44 ) + 8001d0a: 687a ldr r2, [r7, #4] + 8001d0c: 601a str r2, [r3, #0] + 8001d0e: e00d b.n 8001d2c } else { status = HAL_ERROR; - 8001d30: 230f movs r3, #15 - 8001d32: 18fb adds r3, r7, r3 - 8001d34: 2201 movs r2, #1 - 8001d36: 701a strb r2, [r3, #0] - 8001d38: e008 b.n 8001d4c + 8001d10: 230f movs r3, #15 + 8001d12: 18fb adds r3, r7, r3 + 8001d14: 2201 movs r2, #1 + 8001d16: 701a strb r2, [r3, #0] + 8001d18: e008 b.n 8001d2c } } else { status = HAL_ERROR; - 8001d3a: 230f movs r3, #15 - 8001d3c: 18fb adds r3, r7, r3 - 8001d3e: 2201 movs r2, #1 - 8001d40: 701a strb r2, [r3, #0] - 8001d42: e003 b.n 8001d4c + 8001d1a: 230f movs r3, #15 + 8001d1c: 18fb adds r3, r7, r3 + 8001d1e: 2201 movs r2, #1 + 8001d20: 701a strb r2, [r3, #0] + 8001d22: e003 b.n 8001d2c } } else { status = HAL_ERROR; - 8001d44: 230f movs r3, #15 - 8001d46: 18fb adds r3, r7, r3 - 8001d48: 2201 movs r2, #1 - 8001d4a: 701a strb r2, [r3, #0] + 8001d24: 230f movs r3, #15 + 8001d26: 18fb adds r3, r7, r3 + 8001d28: 2201 movs r2, #1 + 8001d2a: 701a strb r2, [r3, #0] } /* Return function status */ return status; - 8001d4c: 230f movs r3, #15 - 8001d4e: 18fb adds r3, r7, r3 - 8001d50: 781b ldrb r3, [r3, #0] + 8001d2c: 230f movs r3, #15 + 8001d2e: 18fb adds r3, r7, r3 + 8001d30: 781b ldrb r3, [r3, #0] } - 8001d52: 0018 movs r0, r3 - 8001d54: 46bd mov sp, r7 - 8001d56: b005 add sp, #20 - 8001d58: bd90 pop {r4, r7, pc} - 8001d5a: 46c0 nop ; (mov r8, r8) - 8001d5c: 2000000c .word 0x2000000c - 8001d60: 20000004 .word 0x20000004 - 8001d64: 20000008 .word 0x20000008 + 8001d32: 0018 movs r0, r3 + 8001d34: 46bd mov sp, r7 + 8001d36: b005 add sp, #20 + 8001d38: bd90 pop {r4, r7, pc} + 8001d3a: 46c0 nop ; (mov r8, r8) + 8001d3c: 2000000c .word 0x2000000c + 8001d40: 20000004 .word 0x20000004 + 8001d44: 20000008 .word 0x20000008 -08001d68 : +08001d48 : * @note This function is declared as __weak to be overwritten in case of other * implementations in user file. * @retval None */ __weak void HAL_IncTick(void) { - 8001d68: b580 push {r7, lr} - 8001d6a: af00 add r7, sp, #0 + 8001d48: b580 push {r7, lr} + 8001d4a: af00 add r7, sp, #0 uwTick += (uint32_t)uwTickFreq; - 8001d6c: 4b05 ldr r3, [pc, #20] ; (8001d84 ) - 8001d6e: 781b ldrb r3, [r3, #0] - 8001d70: 001a movs r2, r3 - 8001d72: 4b05 ldr r3, [pc, #20] ; (8001d88 ) - 8001d74: 681b ldr r3, [r3, #0] - 8001d76: 18d2 adds r2, r2, r3 - 8001d78: 4b03 ldr r3, [pc, #12] ; (8001d88 ) - 8001d7a: 601a str r2, [r3, #0] + 8001d4c: 4b05 ldr r3, [pc, #20] ; (8001d64 ) + 8001d4e: 781b ldrb r3, [r3, #0] + 8001d50: 001a movs r2, r3 + 8001d52: 4b05 ldr r3, [pc, #20] ; (8001d68 ) + 8001d54: 681b ldr r3, [r3, #0] + 8001d56: 18d2 adds r2, r2, r3 + 8001d58: 4b03 ldr r3, [pc, #12] ; (8001d68 ) + 8001d5a: 601a str r2, [r3, #0] } - 8001d7c: 46c0 nop ; (mov r8, r8) - 8001d7e: 46bd mov sp, r7 - 8001d80: bd80 pop {r7, pc} - 8001d82: 46c0 nop ; (mov r8, r8) - 8001d84: 2000000c .word 0x2000000c - 8001d88: 20000238 .word 0x20000238 + 8001d5c: 46c0 nop ; (mov r8, r8) + 8001d5e: 46bd mov sp, r7 + 8001d60: bd80 pop {r7, pc} + 8001d62: 46c0 nop ; (mov r8, r8) + 8001d64: 2000000c .word 0x2000000c + 8001d68: 20000238 .word 0x20000238 -08001d8c : +08001d6c : * @note This function is declared as __weak to be overwritten in case of other * implementations in user file. * @retval tick value */ __weak uint32_t HAL_GetTick(void) { - 8001d8c: b580 push {r7, lr} - 8001d8e: af00 add r7, sp, #0 + 8001d6c: b580 push {r7, lr} + 8001d6e: af00 add r7, sp, #0 return uwTick; - 8001d90: 4b02 ldr r3, [pc, #8] ; (8001d9c ) - 8001d92: 681b ldr r3, [r3, #0] + 8001d70: 4b02 ldr r3, [pc, #8] ; (8001d7c ) + 8001d72: 681b ldr r3, [r3, #0] } - 8001d94: 0018 movs r0, r3 - 8001d96: 46bd mov sp, r7 - 8001d98: bd80 pop {r7, pc} - 8001d9a: 46c0 nop ; (mov r8, r8) - 8001d9c: 20000238 .word 0x20000238 + 8001d74: 0018 movs r0, r3 + 8001d76: 46bd mov sp, r7 + 8001d78: bd80 pop {r7, pc} + 8001d7a: 46c0 nop ; (mov r8, r8) + 8001d7c: 20000238 .word 0x20000238 -08001da0 : +08001d80 : * implementations in user file. * @param Delay specifies the delay time length, in milliseconds. * @retval None */ __weak void HAL_Delay(uint32_t Delay) { - 8001da0: b580 push {r7, lr} - 8001da2: b084 sub sp, #16 - 8001da4: af00 add r7, sp, #0 - 8001da6: 6078 str r0, [r7, #4] + 8001d80: b580 push {r7, lr} + 8001d82: b084 sub sp, #16 + 8001d84: af00 add r7, sp, #0 + 8001d86: 6078 str r0, [r7, #4] uint32_t tickstart = HAL_GetTick(); - 8001da8: f7ff fff0 bl 8001d8c - 8001dac: 0003 movs r3, r0 - 8001dae: 60bb str r3, [r7, #8] + 8001d88: f7ff fff0 bl 8001d6c + 8001d8c: 0003 movs r3, r0 + 8001d8e: 60bb str r3, [r7, #8] uint32_t wait = Delay; - 8001db0: 687b ldr r3, [r7, #4] - 8001db2: 60fb str r3, [r7, #12] + 8001d90: 687b ldr r3, [r7, #4] + 8001d92: 60fb str r3, [r7, #12] /* Add a freq to guarantee minimum wait */ if (wait < HAL_MAX_DELAY) - 8001db4: 68fb ldr r3, [r7, #12] - 8001db6: 3301 adds r3, #1 - 8001db8: d005 beq.n 8001dc6 + 8001d94: 68fb ldr r3, [r7, #12] + 8001d96: 3301 adds r3, #1 + 8001d98: d005 beq.n 8001da6 { wait += (uint32_t)(uwTickFreq); - 8001dba: 4b0a ldr r3, [pc, #40] ; (8001de4 ) - 8001dbc: 781b ldrb r3, [r3, #0] - 8001dbe: 001a movs r2, r3 - 8001dc0: 68fb ldr r3, [r7, #12] - 8001dc2: 189b adds r3, r3, r2 - 8001dc4: 60fb str r3, [r7, #12] + 8001d9a: 4b0a ldr r3, [pc, #40] ; (8001dc4 ) + 8001d9c: 781b ldrb r3, [r3, #0] + 8001d9e: 001a movs r2, r3 + 8001da0: 68fb ldr r3, [r7, #12] + 8001da2: 189b adds r3, r3, r2 + 8001da4: 60fb str r3, [r7, #12] } while ((HAL_GetTick() - tickstart) < wait) - 8001dc6: 46c0 nop ; (mov r8, r8) - 8001dc8: f7ff ffe0 bl 8001d8c - 8001dcc: 0002 movs r2, r0 - 8001dce: 68bb ldr r3, [r7, #8] - 8001dd0: 1ad3 subs r3, r2, r3 - 8001dd2: 68fa ldr r2, [r7, #12] - 8001dd4: 429a cmp r2, r3 - 8001dd6: d8f7 bhi.n 8001dc8 + 8001da6: 46c0 nop ; (mov r8, r8) + 8001da8: f7ff ffe0 bl 8001d6c + 8001dac: 0002 movs r2, r0 + 8001dae: 68bb ldr r3, [r7, #8] + 8001db0: 1ad3 subs r3, r2, r3 + 8001db2: 68fa ldr r2, [r7, #12] + 8001db4: 429a cmp r2, r3 + 8001db6: d8f7 bhi.n 8001da8 { } } - 8001dd8: 46c0 nop ; (mov r8, r8) - 8001dda: 46c0 nop ; (mov r8, r8) - 8001ddc: 46bd mov sp, r7 - 8001dde: b004 add sp, #16 - 8001de0: bd80 pop {r7, pc} - 8001de2: 46c0 nop ; (mov r8, r8) - 8001de4: 2000000c .word 0x2000000c + 8001db8: 46c0 nop ; (mov r8, r8) + 8001dba: 46c0 nop ; (mov r8, r8) + 8001dbc: 46bd mov sp, r7 + 8001dbe: b004 add sp, #16 + 8001dc0: bd80 pop {r7, pc} + 8001dc2: 46c0 nop ; (mov r8, r8) + 8001dc4: 2000000c .word 0x2000000c -08001de8 <__NVIC_EnableIRQ>: +08001dc8 <__NVIC_EnableIRQ>: \details Enables a device specific interrupt in the NVIC interrupt controller. \param [in] IRQn Device specific interrupt number. \note IRQn must not be negative. */ __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) { - 8001de8: b580 push {r7, lr} - 8001dea: b082 sub sp, #8 - 8001dec: af00 add r7, sp, #0 - 8001dee: 0002 movs r2, r0 - 8001df0: 1dfb adds r3, r7, #7 - 8001df2: 701a strb r2, [r3, #0] + 8001dc8: b580 push {r7, lr} + 8001dca: b082 sub sp, #8 + 8001dcc: af00 add r7, sp, #0 + 8001dce: 0002 movs r2, r0 + 8001dd0: 1dfb adds r3, r7, #7 + 8001dd2: 701a strb r2, [r3, #0] if ((int32_t)(IRQn) >= 0) - 8001df4: 1dfb adds r3, r7, #7 - 8001df6: 781b ldrb r3, [r3, #0] - 8001df8: 2b7f cmp r3, #127 ; 0x7f - 8001dfa: d809 bhi.n 8001e10 <__NVIC_EnableIRQ+0x28> + 8001dd4: 1dfb adds r3, r7, #7 + 8001dd6: 781b ldrb r3, [r3, #0] + 8001dd8: 2b7f cmp r3, #127 ; 0x7f + 8001dda: d809 bhi.n 8001df0 <__NVIC_EnableIRQ+0x28> { __COMPILER_BARRIER(); NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 8001dfc: 1dfb adds r3, r7, #7 - 8001dfe: 781b ldrb r3, [r3, #0] - 8001e00: 001a movs r2, r3 - 8001e02: 231f movs r3, #31 - 8001e04: 401a ands r2, r3 - 8001e06: 4b04 ldr r3, [pc, #16] ; (8001e18 <__NVIC_EnableIRQ+0x30>) - 8001e08: 2101 movs r1, #1 - 8001e0a: 4091 lsls r1, r2 - 8001e0c: 000a movs r2, r1 - 8001e0e: 601a str r2, [r3, #0] + 8001ddc: 1dfb adds r3, r7, #7 + 8001dde: 781b ldrb r3, [r3, #0] + 8001de0: 001a movs r2, r3 + 8001de2: 231f movs r3, #31 + 8001de4: 401a ands r2, r3 + 8001de6: 4b04 ldr r3, [pc, #16] ; (8001df8 <__NVIC_EnableIRQ+0x30>) + 8001de8: 2101 movs r1, #1 + 8001dea: 4091 lsls r1, r2 + 8001dec: 000a movs r2, r1 + 8001dee: 601a str r2, [r3, #0] __COMPILER_BARRIER(); } } - 8001e10: 46c0 nop ; (mov r8, r8) - 8001e12: 46bd mov sp, r7 - 8001e14: b002 add sp, #8 - 8001e16: bd80 pop {r7, pc} - 8001e18: e000e100 .word 0xe000e100 + 8001df0: 46c0 nop ; (mov r8, r8) + 8001df2: 46bd mov sp, r7 + 8001df4: b002 add sp, #8 + 8001df6: bd80 pop {r7, pc} + 8001df8: e000e100 .word 0xe000e100 -08001e1c <__NVIC_SetPriority>: +08001dfc <__NVIC_SetPriority>: \param [in] IRQn Interrupt number. \param [in] priority Priority to set. \note The priority cannot be set for every processor exception. */ __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) { - 8001e1c: b590 push {r4, r7, lr} - 8001e1e: b083 sub sp, #12 - 8001e20: af00 add r7, sp, #0 - 8001e22: 0002 movs r2, r0 - 8001e24: 6039 str r1, [r7, #0] - 8001e26: 1dfb adds r3, r7, #7 - 8001e28: 701a strb r2, [r3, #0] + 8001dfc: b590 push {r4, r7, lr} + 8001dfe: b083 sub sp, #12 + 8001e00: af00 add r7, sp, #0 + 8001e02: 0002 movs r2, r0 + 8001e04: 6039 str r1, [r7, #0] + 8001e06: 1dfb adds r3, r7, #7 + 8001e08: 701a strb r2, [r3, #0] if ((int32_t)(IRQn) >= 0) - 8001e2a: 1dfb adds r3, r7, #7 - 8001e2c: 781b ldrb r3, [r3, #0] - 8001e2e: 2b7f cmp r3, #127 ; 0x7f - 8001e30: d828 bhi.n 8001e84 <__NVIC_SetPriority+0x68> + 8001e0a: 1dfb adds r3, r7, #7 + 8001e0c: 781b ldrb r3, [r3, #0] + 8001e0e: 2b7f cmp r3, #127 ; 0x7f + 8001e10: d828 bhi.n 8001e64 <__NVIC_SetPriority+0x68> { NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 8001e32: 4a2f ldr r2, [pc, #188] ; (8001ef0 <__NVIC_SetPriority+0xd4>) - 8001e34: 1dfb adds r3, r7, #7 - 8001e36: 781b ldrb r3, [r3, #0] - 8001e38: b25b sxtb r3, r3 - 8001e3a: 089b lsrs r3, r3, #2 - 8001e3c: 33c0 adds r3, #192 ; 0xc0 - 8001e3e: 009b lsls r3, r3, #2 - 8001e40: 589b ldr r3, [r3, r2] - 8001e42: 1dfa adds r2, r7, #7 - 8001e44: 7812 ldrb r2, [r2, #0] - 8001e46: 0011 movs r1, r2 - 8001e48: 2203 movs r2, #3 - 8001e4a: 400a ands r2, r1 - 8001e4c: 00d2 lsls r2, r2, #3 - 8001e4e: 21ff movs r1, #255 ; 0xff - 8001e50: 4091 lsls r1, r2 - 8001e52: 000a movs r2, r1 - 8001e54: 43d2 mvns r2, r2 - 8001e56: 401a ands r2, r3 - 8001e58: 0011 movs r1, r2 + 8001e12: 4a2f ldr r2, [pc, #188] ; (8001ed0 <__NVIC_SetPriority+0xd4>) + 8001e14: 1dfb adds r3, r7, #7 + 8001e16: 781b ldrb r3, [r3, #0] + 8001e18: b25b sxtb r3, r3 + 8001e1a: 089b lsrs r3, r3, #2 + 8001e1c: 33c0 adds r3, #192 ; 0xc0 + 8001e1e: 009b lsls r3, r3, #2 + 8001e20: 589b ldr r3, [r3, r2] + 8001e22: 1dfa adds r2, r7, #7 + 8001e24: 7812 ldrb r2, [r2, #0] + 8001e26: 0011 movs r1, r2 + 8001e28: 2203 movs r2, #3 + 8001e2a: 400a ands r2, r1 + 8001e2c: 00d2 lsls r2, r2, #3 + 8001e2e: 21ff movs r1, #255 ; 0xff + 8001e30: 4091 lsls r1, r2 + 8001e32: 000a movs r2, r1 + 8001e34: 43d2 mvns r2, r2 + 8001e36: 401a ands r2, r3 + 8001e38: 0011 movs r1, r2 (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - 8001e5a: 683b ldr r3, [r7, #0] - 8001e5c: 019b lsls r3, r3, #6 - 8001e5e: 22ff movs r2, #255 ; 0xff - 8001e60: 401a ands r2, r3 - 8001e62: 1dfb adds r3, r7, #7 - 8001e64: 781b ldrb r3, [r3, #0] - 8001e66: 0018 movs r0, r3 - 8001e68: 2303 movs r3, #3 - 8001e6a: 4003 ands r3, r0 - 8001e6c: 00db lsls r3, r3, #3 - 8001e6e: 409a lsls r2, r3 + 8001e3a: 683b ldr r3, [r7, #0] + 8001e3c: 019b lsls r3, r3, #6 + 8001e3e: 22ff movs r2, #255 ; 0xff + 8001e40: 401a ands r2, r3 + 8001e42: 1dfb adds r3, r7, #7 + 8001e44: 781b ldrb r3, [r3, #0] + 8001e46: 0018 movs r0, r3 + 8001e48: 2303 movs r3, #3 + 8001e4a: 4003 ands r3, r0 + 8001e4c: 00db lsls r3, r3, #3 + 8001e4e: 409a lsls r2, r3 NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 8001e70: 481f ldr r0, [pc, #124] ; (8001ef0 <__NVIC_SetPriority+0xd4>) - 8001e72: 1dfb adds r3, r7, #7 - 8001e74: 781b ldrb r3, [r3, #0] - 8001e76: b25b sxtb r3, r3 - 8001e78: 089b lsrs r3, r3, #2 - 8001e7a: 430a orrs r2, r1 - 8001e7c: 33c0 adds r3, #192 ; 0xc0 - 8001e7e: 009b lsls r3, r3, #2 - 8001e80: 501a str r2, [r3, r0] + 8001e50: 481f ldr r0, [pc, #124] ; (8001ed0 <__NVIC_SetPriority+0xd4>) + 8001e52: 1dfb adds r3, r7, #7 + 8001e54: 781b ldrb r3, [r3, #0] + 8001e56: b25b sxtb r3, r3 + 8001e58: 089b lsrs r3, r3, #2 + 8001e5a: 430a orrs r2, r1 + 8001e5c: 33c0 adds r3, #192 ; 0xc0 + 8001e5e: 009b lsls r3, r3, #2 + 8001e60: 501a str r2, [r3, r0] else { SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); } } - 8001e82: e031 b.n 8001ee8 <__NVIC_SetPriority+0xcc> + 8001e62: e031 b.n 8001ec8 <__NVIC_SetPriority+0xcc> SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 8001e84: 4a1b ldr r2, [pc, #108] ; (8001ef4 <__NVIC_SetPriority+0xd8>) - 8001e86: 1dfb adds r3, r7, #7 - 8001e88: 781b ldrb r3, [r3, #0] - 8001e8a: 0019 movs r1, r3 - 8001e8c: 230f movs r3, #15 - 8001e8e: 400b ands r3, r1 - 8001e90: 3b08 subs r3, #8 - 8001e92: 089b lsrs r3, r3, #2 - 8001e94: 3306 adds r3, #6 - 8001e96: 009b lsls r3, r3, #2 - 8001e98: 18d3 adds r3, r2, r3 - 8001e9a: 3304 adds r3, #4 - 8001e9c: 681b ldr r3, [r3, #0] - 8001e9e: 1dfa adds r2, r7, #7 - 8001ea0: 7812 ldrb r2, [r2, #0] - 8001ea2: 0011 movs r1, r2 - 8001ea4: 2203 movs r2, #3 - 8001ea6: 400a ands r2, r1 - 8001ea8: 00d2 lsls r2, r2, #3 - 8001eaa: 21ff movs r1, #255 ; 0xff - 8001eac: 4091 lsls r1, r2 - 8001eae: 000a movs r2, r1 - 8001eb0: 43d2 mvns r2, r2 - 8001eb2: 401a ands r2, r3 - 8001eb4: 0011 movs r1, r2 + 8001e64: 4a1b ldr r2, [pc, #108] ; (8001ed4 <__NVIC_SetPriority+0xd8>) + 8001e66: 1dfb adds r3, r7, #7 + 8001e68: 781b ldrb r3, [r3, #0] + 8001e6a: 0019 movs r1, r3 + 8001e6c: 230f movs r3, #15 + 8001e6e: 400b ands r3, r1 + 8001e70: 3b08 subs r3, #8 + 8001e72: 089b lsrs r3, r3, #2 + 8001e74: 3306 adds r3, #6 + 8001e76: 009b lsls r3, r3, #2 + 8001e78: 18d3 adds r3, r2, r3 + 8001e7a: 3304 adds r3, #4 + 8001e7c: 681b ldr r3, [r3, #0] + 8001e7e: 1dfa adds r2, r7, #7 + 8001e80: 7812 ldrb r2, [r2, #0] + 8001e82: 0011 movs r1, r2 + 8001e84: 2203 movs r2, #3 + 8001e86: 400a ands r2, r1 + 8001e88: 00d2 lsls r2, r2, #3 + 8001e8a: 21ff movs r1, #255 ; 0xff + 8001e8c: 4091 lsls r1, r2 + 8001e8e: 000a movs r2, r1 + 8001e90: 43d2 mvns r2, r2 + 8001e92: 401a ands r2, r3 + 8001e94: 0011 movs r1, r2 (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - 8001eb6: 683b ldr r3, [r7, #0] - 8001eb8: 019b lsls r3, r3, #6 - 8001eba: 22ff movs r2, #255 ; 0xff - 8001ebc: 401a ands r2, r3 - 8001ebe: 1dfb adds r3, r7, #7 - 8001ec0: 781b ldrb r3, [r3, #0] - 8001ec2: 0018 movs r0, r3 - 8001ec4: 2303 movs r3, #3 - 8001ec6: 4003 ands r3, r0 - 8001ec8: 00db lsls r3, r3, #3 - 8001eca: 409a lsls r2, r3 + 8001e96: 683b ldr r3, [r7, #0] + 8001e98: 019b lsls r3, r3, #6 + 8001e9a: 22ff movs r2, #255 ; 0xff + 8001e9c: 401a ands r2, r3 + 8001e9e: 1dfb adds r3, r7, #7 + 8001ea0: 781b ldrb r3, [r3, #0] + 8001ea2: 0018 movs r0, r3 + 8001ea4: 2303 movs r3, #3 + 8001ea6: 4003 ands r3, r0 + 8001ea8: 00db lsls r3, r3, #3 + 8001eaa: 409a lsls r2, r3 SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 8001ecc: 4809 ldr r0, [pc, #36] ; (8001ef4 <__NVIC_SetPriority+0xd8>) - 8001ece: 1dfb adds r3, r7, #7 - 8001ed0: 781b ldrb r3, [r3, #0] - 8001ed2: 001c movs r4, r3 - 8001ed4: 230f movs r3, #15 - 8001ed6: 4023 ands r3, r4 - 8001ed8: 3b08 subs r3, #8 - 8001eda: 089b lsrs r3, r3, #2 - 8001edc: 430a orrs r2, r1 - 8001ede: 3306 adds r3, #6 - 8001ee0: 009b lsls r3, r3, #2 - 8001ee2: 18c3 adds r3, r0, r3 - 8001ee4: 3304 adds r3, #4 - 8001ee6: 601a str r2, [r3, #0] + 8001eac: 4809 ldr r0, [pc, #36] ; (8001ed4 <__NVIC_SetPriority+0xd8>) + 8001eae: 1dfb adds r3, r7, #7 + 8001eb0: 781b ldrb r3, [r3, #0] + 8001eb2: 001c movs r4, r3 + 8001eb4: 230f movs r3, #15 + 8001eb6: 4023 ands r3, r4 + 8001eb8: 3b08 subs r3, #8 + 8001eba: 089b lsrs r3, r3, #2 + 8001ebc: 430a orrs r2, r1 + 8001ebe: 3306 adds r3, #6 + 8001ec0: 009b lsls r3, r3, #2 + 8001ec2: 18c3 adds r3, r0, r3 + 8001ec4: 3304 adds r3, #4 + 8001ec6: 601a str r2, [r3, #0] } - 8001ee8: 46c0 nop ; (mov r8, r8) - 8001eea: 46bd mov sp, r7 - 8001eec: b003 add sp, #12 - 8001eee: bd90 pop {r4, r7, pc} - 8001ef0: e000e100 .word 0xe000e100 - 8001ef4: e000ed00 .word 0xe000ed00 + 8001ec8: 46c0 nop ; (mov r8, r8) + 8001eca: 46bd mov sp, r7 + 8001ecc: b003 add sp, #12 + 8001ece: bd90 pop {r4, r7, pc} + 8001ed0: e000e100 .word 0xe000e100 + 8001ed4: e000ed00 .word 0xe000ed00 -08001ef8 : +08001ed8 : \note When the variable __Vendor_SysTickConfig is set to 1, then the function SysTick_Config is not included. In this case, the file device.h must contain a vendor-specific implementation of this function. */ __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { - 8001ef8: b580 push {r7, lr} - 8001efa: b082 sub sp, #8 - 8001efc: af00 add r7, sp, #0 - 8001efe: 6078 str r0, [r7, #4] + 8001ed8: b580 push {r7, lr} + 8001eda: b082 sub sp, #8 + 8001edc: af00 add r7, sp, #0 + 8001ede: 6078 str r0, [r7, #4] if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - 8001f00: 687b ldr r3, [r7, #4] - 8001f02: 1e5a subs r2, r3, #1 - 8001f04: 2380 movs r3, #128 ; 0x80 - 8001f06: 045b lsls r3, r3, #17 - 8001f08: 429a cmp r2, r3 - 8001f0a: d301 bcc.n 8001f10 + 8001ee0: 687b ldr r3, [r7, #4] + 8001ee2: 1e5a subs r2, r3, #1 + 8001ee4: 2380 movs r3, #128 ; 0x80 + 8001ee6: 045b lsls r3, r3, #17 + 8001ee8: 429a cmp r2, r3 + 8001eea: d301 bcc.n 8001ef0 { return (1UL); /* Reload value impossible */ - 8001f0c: 2301 movs r3, #1 - 8001f0e: e010 b.n 8001f32 + 8001eec: 2301 movs r3, #1 + 8001eee: e010 b.n 8001f12 } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - 8001f10: 4b0a ldr r3, [pc, #40] ; (8001f3c ) - 8001f12: 687a ldr r2, [r7, #4] - 8001f14: 3a01 subs r2, #1 - 8001f16: 605a str r2, [r3, #4] + 8001ef0: 4b0a ldr r3, [pc, #40] ; (8001f1c ) + 8001ef2: 687a ldr r2, [r7, #4] + 8001ef4: 3a01 subs r2, #1 + 8001ef6: 605a str r2, [r3, #4] NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - 8001f18: 2301 movs r3, #1 - 8001f1a: 425b negs r3, r3 - 8001f1c: 2103 movs r1, #3 - 8001f1e: 0018 movs r0, r3 - 8001f20: f7ff ff7c bl 8001e1c <__NVIC_SetPriority> + 8001ef8: 2301 movs r3, #1 + 8001efa: 425b negs r3, r3 + 8001efc: 2103 movs r1, #3 + 8001efe: 0018 movs r0, r3 + 8001f00: f7ff ff7c bl 8001dfc <__NVIC_SetPriority> SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - 8001f24: 4b05 ldr r3, [pc, #20] ; (8001f3c ) - 8001f26: 2200 movs r2, #0 - 8001f28: 609a str r2, [r3, #8] + 8001f04: 4b05 ldr r3, [pc, #20] ; (8001f1c ) + 8001f06: 2200 movs r2, #0 + 8001f08: 609a str r2, [r3, #8] SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - 8001f2a: 4b04 ldr r3, [pc, #16] ; (8001f3c ) - 8001f2c: 2207 movs r2, #7 - 8001f2e: 601a str r2, [r3, #0] + 8001f0a: 4b04 ldr r3, [pc, #16] ; (8001f1c ) + 8001f0c: 2207 movs r2, #7 + 8001f0e: 601a str r2, [r3, #0] SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0UL); /* Function successful */ - 8001f30: 2300 movs r3, #0 + 8001f10: 2300 movs r3, #0 } - 8001f32: 0018 movs r0, r3 - 8001f34: 46bd mov sp, r7 - 8001f36: b002 add sp, #8 - 8001f38: bd80 pop {r7, pc} - 8001f3a: 46c0 nop ; (mov r8, r8) - 8001f3c: e000e010 .word 0xe000e010 + 8001f12: 0018 movs r0, r3 + 8001f14: 46bd mov sp, r7 + 8001f16: b002 add sp, #8 + 8001f18: bd80 pop {r7, pc} + 8001f1a: 46c0 nop ; (mov r8, r8) + 8001f1c: e000e010 .word 0xe000e010 -08001f40 : +08001f20 : * with stm32g0xx devices, this parameter is a dummy value and it is ignored, because * no subpriority supported in Cortex M0+ based products. * @retval None */ void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) { - 8001f40: b580 push {r7, lr} - 8001f42: b084 sub sp, #16 - 8001f44: af00 add r7, sp, #0 - 8001f46: 60b9 str r1, [r7, #8] - 8001f48: 607a str r2, [r7, #4] - 8001f4a: 210f movs r1, #15 - 8001f4c: 187b adds r3, r7, r1 - 8001f4e: 1c02 adds r2, r0, #0 - 8001f50: 701a strb r2, [r3, #0] + 8001f20: b580 push {r7, lr} + 8001f22: b084 sub sp, #16 + 8001f24: af00 add r7, sp, #0 + 8001f26: 60b9 str r1, [r7, #8] + 8001f28: 607a str r2, [r7, #4] + 8001f2a: 210f movs r1, #15 + 8001f2c: 187b adds r3, r7, r1 + 8001f2e: 1c02 adds r2, r0, #0 + 8001f30: 701a strb r2, [r3, #0] /* Prevent unused argument(s) compilation warning */ UNUSED(SubPriority); /* Check the parameters */ assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); NVIC_SetPriority(IRQn, PreemptPriority); - 8001f52: 68ba ldr r2, [r7, #8] - 8001f54: 187b adds r3, r7, r1 - 8001f56: 781b ldrb r3, [r3, #0] - 8001f58: b25b sxtb r3, r3 - 8001f5a: 0011 movs r1, r2 - 8001f5c: 0018 movs r0, r3 - 8001f5e: f7ff ff5d bl 8001e1c <__NVIC_SetPriority> + 8001f32: 68ba ldr r2, [r7, #8] + 8001f34: 187b adds r3, r7, r1 + 8001f36: 781b ldrb r3, [r3, #0] + 8001f38: b25b sxtb r3, r3 + 8001f3a: 0011 movs r1, r2 + 8001f3c: 0018 movs r0, r3 + 8001f3e: f7ff ff5d bl 8001dfc <__NVIC_SetPriority> } - 8001f62: 46c0 nop ; (mov r8, r8) - 8001f64: 46bd mov sp, r7 - 8001f66: b004 add sp, #16 - 8001f68: bd80 pop {r7, pc} + 8001f42: 46c0 nop ; (mov r8, r8) + 8001f44: 46bd mov sp, r7 + 8001f46: b004 add sp, #16 + 8001f48: bd80 pop {r7, pc} -08001f6a : +08001f4a : * This parameter can be an enumerator of IRQn_Type enumeration * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32g0xxxx.h)) * @retval None */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) { - 8001f6a: b580 push {r7, lr} - 8001f6c: b082 sub sp, #8 - 8001f6e: af00 add r7, sp, #0 - 8001f70: 0002 movs r2, r0 - 8001f72: 1dfb adds r3, r7, #7 - 8001f74: 701a strb r2, [r3, #0] + 8001f4a: b580 push {r7, lr} + 8001f4c: b082 sub sp, #8 + 8001f4e: af00 add r7, sp, #0 + 8001f50: 0002 movs r2, r0 + 8001f52: 1dfb adds r3, r7, #7 + 8001f54: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); /* Enable interrupt */ NVIC_EnableIRQ(IRQn); - 8001f76: 1dfb adds r3, r7, #7 - 8001f78: 781b ldrb r3, [r3, #0] - 8001f7a: b25b sxtb r3, r3 - 8001f7c: 0018 movs r0, r3 - 8001f7e: f7ff ff33 bl 8001de8 <__NVIC_EnableIRQ> + 8001f56: 1dfb adds r3, r7, #7 + 8001f58: 781b ldrb r3, [r3, #0] + 8001f5a: b25b sxtb r3, r3 + 8001f5c: 0018 movs r0, r3 + 8001f5e: f7ff ff33 bl 8001dc8 <__NVIC_EnableIRQ> } - 8001f82: 46c0 nop ; (mov r8, r8) - 8001f84: 46bd mov sp, r7 - 8001f86: b002 add sp, #8 - 8001f88: bd80 pop {r7, pc} + 8001f62: 46c0 nop ; (mov r8, r8) + 8001f64: 46bd mov sp, r7 + 8001f66: b002 add sp, #8 + 8001f68: bd80 pop {r7, pc} -08001f8a : +08001f6a : * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. * @retval status: - 0 Function succeeded. * - 1 Function failed. */ uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) { - 8001f8a: b580 push {r7, lr} - 8001f8c: b082 sub sp, #8 - 8001f8e: af00 add r7, sp, #0 - 8001f90: 6078 str r0, [r7, #4] + 8001f6a: b580 push {r7, lr} + 8001f6c: b082 sub sp, #8 + 8001f6e: af00 add r7, sp, #0 + 8001f70: 6078 str r0, [r7, #4] return SysTick_Config(TicksNumb); - 8001f92: 687b ldr r3, [r7, #4] - 8001f94: 0018 movs r0, r3 - 8001f96: f7ff ffaf bl 8001ef8 - 8001f9a: 0003 movs r3, r0 + 8001f72: 687b ldr r3, [r7, #4] + 8001f74: 0018 movs r0, r3 + 8001f76: f7ff ffaf bl 8001ed8 + 8001f7a: 0003 movs r3, r0 } - 8001f9c: 0018 movs r0, r3 - 8001f9e: 46bd mov sp, r7 - 8001fa0: b002 add sp, #8 - 8001fa2: bd80 pop {r7, pc} + 8001f7c: 0018 movs r0, r3 + 8001f7e: 46bd mov sp, r7 + 8001f80: b002 add sp, #8 + 8001f82: bd80 pop {r7, pc} -08001fa4 : +08001f84 : * parameters in the CRC_InitTypeDef and create the associated handle. * @param hcrc CRC handle * @retval HAL status */ HAL_StatusTypeDef HAL_CRC_Init(CRC_HandleTypeDef *hcrc) { - 8001fa4: b580 push {r7, lr} - 8001fa6: b082 sub sp, #8 - 8001fa8: af00 add r7, sp, #0 - 8001faa: 6078 str r0, [r7, #4] + 8001f84: b580 push {r7, lr} + 8001f86: b082 sub sp, #8 + 8001f88: af00 add r7, sp, #0 + 8001f8a: 6078 str r0, [r7, #4] /* Check the CRC handle allocation */ if (hcrc == NULL) - 8001fac: 687b ldr r3, [r7, #4] - 8001fae: 2b00 cmp r3, #0 - 8001fb0: d101 bne.n 8001fb6 + 8001f8c: 687b ldr r3, [r7, #4] + 8001f8e: 2b00 cmp r3, #0 + 8001f90: d101 bne.n 8001f96 { return HAL_ERROR; - 8001fb2: 2301 movs r3, #1 - 8001fb4: e056 b.n 8002064 + 8001f92: 2301 movs r3, #1 + 8001f94: e056 b.n 8002044 } /* Check the parameters */ assert_param(IS_CRC_ALL_INSTANCE(hcrc->Instance)); if (hcrc->State == HAL_CRC_STATE_RESET) - 8001fb6: 687b ldr r3, [r7, #4] - 8001fb8: 7f5b ldrb r3, [r3, #29] - 8001fba: b2db uxtb r3, r3 - 8001fbc: 2b00 cmp r3, #0 - 8001fbe: d106 bne.n 8001fce + 8001f96: 687b ldr r3, [r7, #4] + 8001f98: 7f5b ldrb r3, [r3, #29] + 8001f9a: b2db uxtb r3, r3 + 8001f9c: 2b00 cmp r3, #0 + 8001f9e: d106 bne.n 8001fae { /* Allocate lock resource and initialize it */ hcrc->Lock = HAL_UNLOCKED; - 8001fc0: 687b ldr r3, [r7, #4] - 8001fc2: 2200 movs r2, #0 - 8001fc4: 771a strb r2, [r3, #28] + 8001fa0: 687b ldr r3, [r7, #4] + 8001fa2: 2200 movs r2, #0 + 8001fa4: 771a strb r2, [r3, #28] /* Init the low level hardware */ HAL_CRC_MspInit(hcrc); - 8001fc6: 687b ldr r3, [r7, #4] - 8001fc8: 0018 movs r0, r3 - 8001fca: f7ff fcd9 bl 8001980 + 8001fa6: 687b ldr r3, [r7, #4] + 8001fa8: 0018 movs r0, r3 + 8001faa: f7ff fcd9 bl 8001960 } hcrc->State = HAL_CRC_STATE_BUSY; - 8001fce: 687b ldr r3, [r7, #4] - 8001fd0: 2202 movs r2, #2 - 8001fd2: 775a strb r2, [r3, #29] + 8001fae: 687b ldr r3, [r7, #4] + 8001fb0: 2202 movs r2, #2 + 8001fb2: 775a strb r2, [r3, #29] /* check whether or not non-default generating polynomial has been * picked up by user */ assert_param(IS_DEFAULT_POLYNOMIAL(hcrc->Init.DefaultPolynomialUse)); if (hcrc->Init.DefaultPolynomialUse == DEFAULT_POLYNOMIAL_ENABLE) - 8001fd4: 687b ldr r3, [r7, #4] - 8001fd6: 791b ldrb r3, [r3, #4] - 8001fd8: 2b00 cmp r3, #0 - 8001fda: d10c bne.n 8001ff6 + 8001fb4: 687b ldr r3, [r7, #4] + 8001fb6: 791b ldrb r3, [r3, #4] + 8001fb8: 2b00 cmp r3, #0 + 8001fba: d10c bne.n 8001fd6 { /* initialize peripheral with default generating polynomial */ WRITE_REG(hcrc->Instance->POL, DEFAULT_CRC32_POLY); - 8001fdc: 687b ldr r3, [r7, #4] - 8001fde: 681b ldr r3, [r3, #0] - 8001fe0: 4a22 ldr r2, [pc, #136] ; (800206c ) - 8001fe2: 615a str r2, [r3, #20] + 8001fbc: 687b ldr r3, [r7, #4] + 8001fbe: 681b ldr r3, [r3, #0] + 8001fc0: 4a22 ldr r2, [pc, #136] ; (800204c ) + 8001fc2: 615a str r2, [r3, #20] MODIFY_REG(hcrc->Instance->CR, CRC_CR_POLYSIZE, CRC_POLYLENGTH_32B); - 8001fe4: 687b ldr r3, [r7, #4] - 8001fe6: 681b ldr r3, [r3, #0] - 8001fe8: 689a ldr r2, [r3, #8] - 8001fea: 687b ldr r3, [r7, #4] - 8001fec: 681b ldr r3, [r3, #0] - 8001fee: 2118 movs r1, #24 - 8001ff0: 438a bics r2, r1 - 8001ff2: 609a str r2, [r3, #8] - 8001ff4: e00b b.n 800200e + 8001fc4: 687b ldr r3, [r7, #4] + 8001fc6: 681b ldr r3, [r3, #0] + 8001fc8: 689a ldr r2, [r3, #8] + 8001fca: 687b ldr r3, [r7, #4] + 8001fcc: 681b ldr r3, [r3, #0] + 8001fce: 2118 movs r1, #24 + 8001fd0: 438a bics r2, r1 + 8001fd2: 609a str r2, [r3, #8] + 8001fd4: e00b b.n 8001fee } else { /* initialize CRC peripheral with generating polynomial defined by user */ if (HAL_CRCEx_Polynomial_Set(hcrc, hcrc->Init.GeneratingPolynomial, hcrc->Init.CRCLength) != HAL_OK) - 8001ff6: 687b ldr r3, [r7, #4] - 8001ff8: 6899 ldr r1, [r3, #8] - 8001ffa: 687b ldr r3, [r7, #4] - 8001ffc: 68da ldr r2, [r3, #12] - 8001ffe: 687b ldr r3, [r7, #4] - 8002000: 0018 movs r0, r3 - 8002002: f000 f94c bl 800229e - 8002006: 1e03 subs r3, r0, #0 - 8002008: d001 beq.n 800200e + 8001fd6: 687b ldr r3, [r7, #4] + 8001fd8: 6899 ldr r1, [r3, #8] + 8001fda: 687b ldr r3, [r7, #4] + 8001fdc: 68da ldr r2, [r3, #12] + 8001fde: 687b ldr r3, [r7, #4] + 8001fe0: 0018 movs r0, r3 + 8001fe2: f000 f94c bl 800227e + 8001fe6: 1e03 subs r3, r0, #0 + 8001fe8: d001 beq.n 8001fee { return HAL_ERROR; - 800200a: 2301 movs r3, #1 - 800200c: e02a b.n 8002064 + 8001fea: 2301 movs r3, #1 + 8001fec: e02a b.n 8002044 } /* check whether or not non-default CRC initial value has been * picked up by user */ assert_param(IS_DEFAULT_INIT_VALUE(hcrc->Init.DefaultInitValueUse)); if (hcrc->Init.DefaultInitValueUse == DEFAULT_INIT_VALUE_ENABLE) - 800200e: 687b ldr r3, [r7, #4] - 8002010: 795b ldrb r3, [r3, #5] - 8002012: 2b00 cmp r3, #0 - 8002014: d105 bne.n 8002022 + 8001fee: 687b ldr r3, [r7, #4] + 8001ff0: 795b ldrb r3, [r3, #5] + 8001ff2: 2b00 cmp r3, #0 + 8001ff4: d105 bne.n 8002002 { WRITE_REG(hcrc->Instance->INIT, DEFAULT_CRC_INITVALUE); - 8002016: 687b ldr r3, [r7, #4] - 8002018: 681b ldr r3, [r3, #0] - 800201a: 2201 movs r2, #1 - 800201c: 4252 negs r2, r2 - 800201e: 611a str r2, [r3, #16] - 8002020: e004 b.n 800202c + 8001ff6: 687b ldr r3, [r7, #4] + 8001ff8: 681b ldr r3, [r3, #0] + 8001ffa: 2201 movs r2, #1 + 8001ffc: 4252 negs r2, r2 + 8001ffe: 611a str r2, [r3, #16] + 8002000: e004 b.n 800200c } else { WRITE_REG(hcrc->Instance->INIT, hcrc->Init.InitValue); - 8002022: 687b ldr r3, [r7, #4] - 8002024: 681b ldr r3, [r3, #0] - 8002026: 687a ldr r2, [r7, #4] - 8002028: 6912 ldr r2, [r2, #16] - 800202a: 611a str r2, [r3, #16] + 8002002: 687b ldr r3, [r7, #4] + 8002004: 681b ldr r3, [r3, #0] + 8002006: 687a ldr r2, [r7, #4] + 8002008: 6912 ldr r2, [r2, #16] + 800200a: 611a str r2, [r3, #16] } /* set input data inversion mode */ assert_param(IS_CRC_INPUTDATA_INVERSION_MODE(hcrc->Init.InputDataInversionMode)); MODIFY_REG(hcrc->Instance->CR, CRC_CR_REV_IN, hcrc->Init.InputDataInversionMode); - 800202c: 687b ldr r3, [r7, #4] - 800202e: 681b ldr r3, [r3, #0] - 8002030: 689b ldr r3, [r3, #8] - 8002032: 2260 movs r2, #96 ; 0x60 - 8002034: 4393 bics r3, r2 - 8002036: 0019 movs r1, r3 - 8002038: 687b ldr r3, [r7, #4] - 800203a: 695a ldr r2, [r3, #20] - 800203c: 687b ldr r3, [r7, #4] - 800203e: 681b ldr r3, [r3, #0] - 8002040: 430a orrs r2, r1 - 8002042: 609a str r2, [r3, #8] + 800200c: 687b ldr r3, [r7, #4] + 800200e: 681b ldr r3, [r3, #0] + 8002010: 689b ldr r3, [r3, #8] + 8002012: 2260 movs r2, #96 ; 0x60 + 8002014: 4393 bics r3, r2 + 8002016: 0019 movs r1, r3 + 8002018: 687b ldr r3, [r7, #4] + 800201a: 695a ldr r2, [r3, #20] + 800201c: 687b ldr r3, [r7, #4] + 800201e: 681b ldr r3, [r3, #0] + 8002020: 430a orrs r2, r1 + 8002022: 609a str r2, [r3, #8] /* set output data inversion mode */ assert_param(IS_CRC_OUTPUTDATA_INVERSION_MODE(hcrc->Init.OutputDataInversionMode)); MODIFY_REG(hcrc->Instance->CR, CRC_CR_REV_OUT, hcrc->Init.OutputDataInversionMode); - 8002044: 687b ldr r3, [r7, #4] - 8002046: 681b ldr r3, [r3, #0] - 8002048: 689b ldr r3, [r3, #8] - 800204a: 2280 movs r2, #128 ; 0x80 - 800204c: 4393 bics r3, r2 - 800204e: 0019 movs r1, r3 - 8002050: 687b ldr r3, [r7, #4] - 8002052: 699a ldr r2, [r3, #24] - 8002054: 687b ldr r3, [r7, #4] - 8002056: 681b ldr r3, [r3, #0] - 8002058: 430a orrs r2, r1 - 800205a: 609a str r2, [r3, #8] + 8002024: 687b ldr r3, [r7, #4] + 8002026: 681b ldr r3, [r3, #0] + 8002028: 689b ldr r3, [r3, #8] + 800202a: 2280 movs r2, #128 ; 0x80 + 800202c: 4393 bics r3, r2 + 800202e: 0019 movs r1, r3 + 8002030: 687b ldr r3, [r7, #4] + 8002032: 699a ldr r2, [r3, #24] + 8002034: 687b ldr r3, [r7, #4] + 8002036: 681b ldr r3, [r3, #0] + 8002038: 430a orrs r2, r1 + 800203a: 609a str r2, [r3, #8] /* makes sure the input data format (bytes, halfwords or words stream) * is properly specified by user */ assert_param(IS_CRC_INPUTDATA_FORMAT(hcrc->InputDataFormat)); /* Change CRC peripheral state */ hcrc->State = HAL_CRC_STATE_READY; - 800205c: 687b ldr r3, [r7, #4] - 800205e: 2201 movs r2, #1 - 8002060: 775a strb r2, [r3, #29] + 800203c: 687b ldr r3, [r7, #4] + 800203e: 2201 movs r2, #1 + 8002040: 775a strb r2, [r3, #29] /* Return function status */ return HAL_OK; - 8002062: 2300 movs r3, #0 + 8002042: 2300 movs r3, #0 } - 8002064: 0018 movs r0, r3 - 8002066: 46bd mov sp, r7 - 8002068: b002 add sp, #8 - 800206a: bd80 pop {r7, pc} - 800206c: 04c11db7 .word 0x04c11db7 + 8002044: 0018 movs r0, r3 + 8002046: 46bd mov sp, r7 + 8002048: b002 add sp, #8 + 800204a: bd80 pop {r7, pc} + 800204c: 04c11db7 .word 0x04c11db7 -08002070 : +08002050 : * and the API will internally adjust its input data processing based on the * handle field hcrc->InputDataFormat. * @retval uint32_t CRC (returned value LSBs for CRC shorter than 32 bits) */ uint32_t HAL_CRC_Calculate(CRC_HandleTypeDef *hcrc, uint32_t pBuffer[], uint32_t BufferLength) { - 8002070: b580 push {r7, lr} - 8002072: b086 sub sp, #24 - 8002074: af00 add r7, sp, #0 - 8002076: 60f8 str r0, [r7, #12] - 8002078: 60b9 str r1, [r7, #8] - 800207a: 607a str r2, [r7, #4] + 8002050: b580 push {r7, lr} + 8002052: b086 sub sp, #24 + 8002054: af00 add r7, sp, #0 + 8002056: 60f8 str r0, [r7, #12] + 8002058: 60b9 str r1, [r7, #8] + 800205a: 607a str r2, [r7, #4] uint32_t index; /* CRC input data buffer index */ uint32_t temp = 0U; /* CRC output (read from hcrc->Instance->DR register) */ - 800207c: 2300 movs r3, #0 - 800207e: 613b str r3, [r7, #16] + 800205c: 2300 movs r3, #0 + 800205e: 613b str r3, [r7, #16] /* Change CRC peripheral state */ hcrc->State = HAL_CRC_STATE_BUSY; - 8002080: 68fb ldr r3, [r7, #12] - 8002082: 2202 movs r2, #2 - 8002084: 775a strb r2, [r3, #29] + 8002060: 68fb ldr r3, [r7, #12] + 8002062: 2202 movs r2, #2 + 8002064: 775a strb r2, [r3, #29] /* Reset CRC Calculation Unit (hcrc->Instance->INIT is * written in hcrc->Instance->DR) */ __HAL_CRC_DR_RESET(hcrc); - 8002086: 68fb ldr r3, [r7, #12] - 8002088: 681b ldr r3, [r3, #0] - 800208a: 689a ldr r2, [r3, #8] - 800208c: 68fb ldr r3, [r7, #12] - 800208e: 681b ldr r3, [r3, #0] - 8002090: 2101 movs r1, #1 - 8002092: 430a orrs r2, r1 - 8002094: 609a str r2, [r3, #8] + 8002066: 68fb ldr r3, [r7, #12] + 8002068: 681b ldr r3, [r3, #0] + 800206a: 689a ldr r2, [r3, #8] + 800206c: 68fb ldr r3, [r7, #12] + 800206e: 681b ldr r3, [r3, #0] + 8002070: 2101 movs r1, #1 + 8002072: 430a orrs r2, r1 + 8002074: 609a str r2, [r3, #8] switch (hcrc->InputDataFormat) - 8002096: 68fb ldr r3, [r7, #12] - 8002098: 6a1b ldr r3, [r3, #32] - 800209a: 2b03 cmp r3, #3 - 800209c: d005 beq.n 80020aa - 800209e: d82d bhi.n 80020fc - 80020a0: 2b01 cmp r3, #1 - 80020a2: d019 beq.n 80020d8 - 80020a4: 2b02 cmp r3, #2 - 80020a6: d020 beq.n 80020ea + 8002076: 68fb ldr r3, [r7, #12] + 8002078: 6a1b ldr r3, [r3, #32] + 800207a: 2b03 cmp r3, #3 + 800207c: d005 beq.n 800208a + 800207e: d82d bhi.n 80020dc + 8002080: 2b01 cmp r3, #1 + 8002082: d019 beq.n 80020b8 + 8002084: 2b02 cmp r3, #2 + 8002086: d020 beq.n 80020ca /* Specific 16-bit input data handling */ temp = CRC_Handle_16(hcrc, (uint16_t *)(void *)pBuffer, BufferLength); /* Derogation MisraC2012 R.11.5 */ break; default: break; - 80020a8: e028 b.n 80020fc + 8002088: e028 b.n 80020dc for (index = 0U; index < BufferLength; index++) - 80020aa: 2300 movs r3, #0 - 80020ac: 617b str r3, [r7, #20] - 80020ae: e00a b.n 80020c6 + 800208a: 2300 movs r3, #0 + 800208c: 617b str r3, [r7, #20] + 800208e: e00a b.n 80020a6 hcrc->Instance->DR = pBuffer[index]; - 80020b0: 697b ldr r3, [r7, #20] - 80020b2: 009b lsls r3, r3, #2 - 80020b4: 68ba ldr r2, [r7, #8] - 80020b6: 18d2 adds r2, r2, r3 - 80020b8: 68fb ldr r3, [r7, #12] - 80020ba: 681b ldr r3, [r3, #0] - 80020bc: 6812 ldr r2, [r2, #0] - 80020be: 601a str r2, [r3, #0] + 8002090: 697b ldr r3, [r7, #20] + 8002092: 009b lsls r3, r3, #2 + 8002094: 68ba ldr r2, [r7, #8] + 8002096: 18d2 adds r2, r2, r3 + 8002098: 68fb ldr r3, [r7, #12] + 800209a: 681b ldr r3, [r3, #0] + 800209c: 6812 ldr r2, [r2, #0] + 800209e: 601a str r2, [r3, #0] for (index = 0U; index < BufferLength; index++) - 80020c0: 697b ldr r3, [r7, #20] - 80020c2: 3301 adds r3, #1 - 80020c4: 617b str r3, [r7, #20] - 80020c6: 697a ldr r2, [r7, #20] - 80020c8: 687b ldr r3, [r7, #4] - 80020ca: 429a cmp r2, r3 - 80020cc: d3f0 bcc.n 80020b0 + 80020a0: 697b ldr r3, [r7, #20] + 80020a2: 3301 adds r3, #1 + 80020a4: 617b str r3, [r7, #20] + 80020a6: 697a ldr r2, [r7, #20] + 80020a8: 687b ldr r3, [r7, #4] + 80020aa: 429a cmp r2, r3 + 80020ac: d3f0 bcc.n 8002090 temp = hcrc->Instance->DR; - 80020ce: 68fb ldr r3, [r7, #12] - 80020d0: 681b ldr r3, [r3, #0] - 80020d2: 681b ldr r3, [r3, #0] - 80020d4: 613b str r3, [r7, #16] + 80020ae: 68fb ldr r3, [r7, #12] + 80020b0: 681b ldr r3, [r3, #0] + 80020b2: 681b ldr r3, [r3, #0] + 80020b4: 613b str r3, [r7, #16] break; - 80020d6: e012 b.n 80020fe + 80020b6: e012 b.n 80020de temp = CRC_Handle_8(hcrc, (uint8_t *)pBuffer, BufferLength); - 80020d8: 687a ldr r2, [r7, #4] - 80020da: 68b9 ldr r1, [r7, #8] - 80020dc: 68fb ldr r3, [r7, #12] - 80020de: 0018 movs r0, r3 - 80020e0: f000 f815 bl 800210e - 80020e4: 0003 movs r3, r0 - 80020e6: 613b str r3, [r7, #16] + 80020b8: 687a ldr r2, [r7, #4] + 80020ba: 68b9 ldr r1, [r7, #8] + 80020bc: 68fb ldr r3, [r7, #12] + 80020be: 0018 movs r0, r3 + 80020c0: f000 f815 bl 80020ee + 80020c4: 0003 movs r3, r0 + 80020c6: 613b str r3, [r7, #16] break; - 80020e8: e009 b.n 80020fe + 80020c8: e009 b.n 80020de temp = CRC_Handle_16(hcrc, (uint16_t *)(void *)pBuffer, BufferLength); /* Derogation MisraC2012 R.11.5 */ - 80020ea: 687a ldr r2, [r7, #4] - 80020ec: 68b9 ldr r1, [r7, #8] - 80020ee: 68fb ldr r3, [r7, #12] - 80020f0: 0018 movs r0, r3 - 80020f2: f000 f89d bl 8002230 - 80020f6: 0003 movs r3, r0 - 80020f8: 613b str r3, [r7, #16] + 80020ca: 687a ldr r2, [r7, #4] + 80020cc: 68b9 ldr r1, [r7, #8] + 80020ce: 68fb ldr r3, [r7, #12] + 80020d0: 0018 movs r0, r3 + 80020d2: f000 f89d bl 8002210 + 80020d6: 0003 movs r3, r0 + 80020d8: 613b str r3, [r7, #16] break; - 80020fa: e000 b.n 80020fe + 80020da: e000 b.n 80020de break; - 80020fc: 46c0 nop ; (mov r8, r8) + 80020dc: 46c0 nop ; (mov r8, r8) } /* Change CRC peripheral state */ hcrc->State = HAL_CRC_STATE_READY; - 80020fe: 68fb ldr r3, [r7, #12] - 8002100: 2201 movs r2, #1 - 8002102: 775a strb r2, [r3, #29] + 80020de: 68fb ldr r3, [r7, #12] + 80020e0: 2201 movs r2, #1 + 80020e2: 775a strb r2, [r3, #29] /* Return the CRC computed value */ return temp; - 8002104: 693b ldr r3, [r7, #16] + 80020e4: 693b ldr r3, [r7, #16] } - 8002106: 0018 movs r0, r3 - 8002108: 46bd mov sp, r7 - 800210a: b006 add sp, #24 - 800210c: bd80 pop {r7, pc} + 80020e6: 0018 movs r0, r3 + 80020e8: 46bd mov sp, r7 + 80020ea: b006 add sp, #24 + 80020ec: bd80 pop {r7, pc} -0800210e : +080020ee : * @param pBuffer pointer to the input data buffer * @param BufferLength input data buffer length * @retval uint32_t CRC (returned value LSBs for CRC shorter than 32 bits) */ static uint32_t CRC_Handle_8(CRC_HandleTypeDef *hcrc, uint8_t pBuffer[], uint32_t BufferLength) { - 800210e: b580 push {r7, lr} - 8002110: b088 sub sp, #32 - 8002112: af00 add r7, sp, #0 - 8002114: 60f8 str r0, [r7, #12] - 8002116: 60b9 str r1, [r7, #8] - 8002118: 607a str r2, [r7, #4] + 80020ee: b580 push {r7, lr} + 80020f0: b088 sub sp, #32 + 80020f2: af00 add r7, sp, #0 + 80020f4: 60f8 str r0, [r7, #12] + 80020f6: 60b9 str r1, [r7, #8] + 80020f8: 607a str r2, [r7, #4] __IO uint16_t *pReg; /* Processing time optimization: 4 bytes are entered in a row with a single word write, * last bytes must be carefully fed to the CRC calculator to ensure a correct type * handling by the peripheral */ for (i = 0U; i < (BufferLength / 4U); i++) - 800211a: 2300 movs r3, #0 - 800211c: 61fb str r3, [r7, #28] - 800211e: e023 b.n 8002168 + 80020fa: 2300 movs r3, #0 + 80020fc: 61fb str r3, [r7, #28] + 80020fe: e023 b.n 8002148 { hcrc->Instance->DR = ((uint32_t)pBuffer[4U * i] << 24U) | \ - 8002120: 69fb ldr r3, [r7, #28] - 8002122: 009b lsls r3, r3, #2 - 8002124: 68ba ldr r2, [r7, #8] - 8002126: 18d3 adds r3, r2, r3 - 8002128: 781b ldrb r3, [r3, #0] - 800212a: 061a lsls r2, r3, #24 + 8002100: 69fb ldr r3, [r7, #28] + 8002102: 009b lsls r3, r3, #2 + 8002104: 68ba ldr r2, [r7, #8] + 8002106: 18d3 adds r3, r2, r3 + 8002108: 781b ldrb r3, [r3, #0] + 800210a: 061a lsls r2, r3, #24 ((uint32_t)pBuffer[(4U * i) + 1U] << 16U) | \ + 800210c: 69fb ldr r3, [r7, #28] + 800210e: 009b lsls r3, r3, #2 + 8002110: 3301 adds r3, #1 + 8002112: 68b9 ldr r1, [r7, #8] + 8002114: 18cb adds r3, r1, r3 + 8002116: 781b ldrb r3, [r3, #0] + 8002118: 041b lsls r3, r3, #16 + hcrc->Instance->DR = ((uint32_t)pBuffer[4U * i] << 24U) | \ + 800211a: 431a orrs r2, r3 + ((uint32_t)pBuffer[(4U * i) + 2U] << 8U) | \ + 800211c: 69fb ldr r3, [r7, #28] + 800211e: 009b lsls r3, r3, #2 + 8002120: 3302 adds r3, #2 + 8002122: 68b9 ldr r1, [r7, #8] + 8002124: 18cb adds r3, r1, r3 + 8002126: 781b ldrb r3, [r3, #0] + 8002128: 021b lsls r3, r3, #8 + ((uint32_t)pBuffer[(4U * i) + 1U] << 16U) | \ + 800212a: 431a orrs r2, r3 + (uint32_t)pBuffer[(4U * i) + 3U]; 800212c: 69fb ldr r3, [r7, #28] 800212e: 009b lsls r3, r3, #2 - 8002130: 3301 adds r3, #1 + 8002130: 3303 adds r3, #3 8002132: 68b9 ldr r1, [r7, #8] 8002134: 18cb adds r3, r1, r3 8002136: 781b ldrb r3, [r3, #0] - 8002138: 041b lsls r3, r3, #16 + 8002138: 0019 movs r1, r3 hcrc->Instance->DR = ((uint32_t)pBuffer[4U * i] << 24U) | \ - 800213a: 431a orrs r2, r3 + 800213a: 68fb ldr r3, [r7, #12] + 800213c: 681b ldr r3, [r3, #0] ((uint32_t)pBuffer[(4U * i) + 2U] << 8U) | \ - 800213c: 69fb ldr r3, [r7, #28] - 800213e: 009b lsls r3, r3, #2 - 8002140: 3302 adds r3, #2 - 8002142: 68b9 ldr r1, [r7, #8] - 8002144: 18cb adds r3, r1, r3 - 8002146: 781b ldrb r3, [r3, #0] - 8002148: 021b lsls r3, r3, #8 - ((uint32_t)pBuffer[(4U * i) + 1U] << 16U) | \ - 800214a: 431a orrs r2, r3 - (uint32_t)pBuffer[(4U * i) + 3U]; - 800214c: 69fb ldr r3, [r7, #28] - 800214e: 009b lsls r3, r3, #2 - 8002150: 3303 adds r3, #3 - 8002152: 68b9 ldr r1, [r7, #8] - 8002154: 18cb adds r3, r1, r3 - 8002156: 781b ldrb r3, [r3, #0] - 8002158: 0019 movs r1, r3 + 800213e: 430a orrs r2, r1 hcrc->Instance->DR = ((uint32_t)pBuffer[4U * i] << 24U) | \ - 800215a: 68fb ldr r3, [r7, #12] - 800215c: 681b ldr r3, [r3, #0] - ((uint32_t)pBuffer[(4U * i) + 2U] << 8U) | \ - 800215e: 430a orrs r2, r1 - hcrc->Instance->DR = ((uint32_t)pBuffer[4U * i] << 24U) | \ - 8002160: 601a str r2, [r3, #0] + 8002140: 601a str r2, [r3, #0] for (i = 0U; i < (BufferLength / 4U); i++) - 8002162: 69fb ldr r3, [r7, #28] - 8002164: 3301 adds r3, #1 - 8002166: 61fb str r3, [r7, #28] - 8002168: 687b ldr r3, [r7, #4] - 800216a: 089b lsrs r3, r3, #2 - 800216c: 69fa ldr r2, [r7, #28] - 800216e: 429a cmp r2, r3 - 8002170: d3d6 bcc.n 8002120 + 8002142: 69fb ldr r3, [r7, #28] + 8002144: 3301 adds r3, #1 + 8002146: 61fb str r3, [r7, #28] + 8002148: 687b ldr r3, [r7, #4] + 800214a: 089b lsrs r3, r3, #2 + 800214c: 69fa ldr r2, [r7, #28] + 800214e: 429a cmp r2, r3 + 8002150: d3d6 bcc.n 8002100 } /* last bytes specific handling */ if ((BufferLength % 4U) != 0U) - 8002172: 687b ldr r3, [r7, #4] - 8002174: 2203 movs r2, #3 - 8002176: 4013 ands r3, r2 - 8002178: d053 beq.n 8002222 + 8002152: 687b ldr r3, [r7, #4] + 8002154: 2203 movs r2, #3 + 8002156: 4013 ands r3, r2 + 8002158: d053 beq.n 8002202 { if ((BufferLength % 4U) == 1U) - 800217a: 687b ldr r3, [r7, #4] - 800217c: 2203 movs r2, #3 - 800217e: 4013 ands r3, r2 - 8002180: 2b01 cmp r3, #1 - 8002182: d107 bne.n 8002194 + 800215a: 687b ldr r3, [r7, #4] + 800215c: 2203 movs r2, #3 + 800215e: 4013 ands r3, r2 + 8002160: 2b01 cmp r3, #1 + 8002162: d107 bne.n 8002174 { *(__IO uint8_t *)(__IO void *)(&hcrc->Instance->DR) = pBuffer[4U * i]; /* Derogation MisraC2012 R.11.5 */ - 8002184: 69fb ldr r3, [r7, #28] - 8002186: 009b lsls r3, r3, #2 - 8002188: 68ba ldr r2, [r7, #8] - 800218a: 18d2 adds r2, r2, r3 - 800218c: 68fb ldr r3, [r7, #12] - 800218e: 681b ldr r3, [r3, #0] - 8002190: 7812 ldrb r2, [r2, #0] - 8002192: 701a strb r2, [r3, #0] + 8002164: 69fb ldr r3, [r7, #28] + 8002166: 009b lsls r3, r3, #2 + 8002168: 68ba ldr r2, [r7, #8] + 800216a: 18d2 adds r2, r2, r3 + 800216c: 68fb ldr r3, [r7, #12] + 800216e: 681b ldr r3, [r3, #0] + 8002170: 7812 ldrb r2, [r2, #0] + 8002172: 701a strb r2, [r3, #0] } if ((BufferLength % 4U) == 2U) - 8002194: 687b ldr r3, [r7, #4] - 8002196: 2203 movs r2, #3 - 8002198: 4013 ands r3, r2 - 800219a: 2b02 cmp r3, #2 - 800219c: d119 bne.n 80021d2 + 8002174: 687b ldr r3, [r7, #4] + 8002176: 2203 movs r2, #3 + 8002178: 4013 ands r3, r2 + 800217a: 2b02 cmp r3, #2 + 800217c: d119 bne.n 80021b2 { data = ((uint16_t)(pBuffer[4U * i]) << 8U) | (uint16_t)pBuffer[(4U * i) + 1U]; - 800219e: 69fb ldr r3, [r7, #28] - 80021a0: 009b lsls r3, r3, #2 - 80021a2: 68ba ldr r2, [r7, #8] - 80021a4: 18d3 adds r3, r2, r3 - 80021a6: 781b ldrb r3, [r3, #0] - 80021a8: 021b lsls r3, r3, #8 - 80021aa: b21a sxth r2, r3 - 80021ac: 69fb ldr r3, [r7, #28] - 80021ae: 009b lsls r3, r3, #2 - 80021b0: 3301 adds r3, #1 - 80021b2: 68b9 ldr r1, [r7, #8] - 80021b4: 18cb adds r3, r1, r3 - 80021b6: 781b ldrb r3, [r3, #0] - 80021b8: b21b sxth r3, r3 - 80021ba: 4313 orrs r3, r2 - 80021bc: b21a sxth r2, r3 - 80021be: 211a movs r1, #26 - 80021c0: 187b adds r3, r7, r1 - 80021c2: 801a strh r2, [r3, #0] + 800217e: 69fb ldr r3, [r7, #28] + 8002180: 009b lsls r3, r3, #2 + 8002182: 68ba ldr r2, [r7, #8] + 8002184: 18d3 adds r3, r2, r3 + 8002186: 781b ldrb r3, [r3, #0] + 8002188: 021b lsls r3, r3, #8 + 800218a: b21a sxth r2, r3 + 800218c: 69fb ldr r3, [r7, #28] + 800218e: 009b lsls r3, r3, #2 + 8002190: 3301 adds r3, #1 + 8002192: 68b9 ldr r1, [r7, #8] + 8002194: 18cb adds r3, r1, r3 + 8002196: 781b ldrb r3, [r3, #0] + 8002198: b21b sxth r3, r3 + 800219a: 4313 orrs r3, r2 + 800219c: b21a sxth r2, r3 + 800219e: 211a movs r1, #26 + 80021a0: 187b adds r3, r7, r1 + 80021a2: 801a strh r2, [r3, #0] pReg = (__IO uint16_t *)(__IO void *)(&hcrc->Instance->DR); /* Derogation MisraC2012 R.11.5 */ - 80021c4: 68fb ldr r3, [r7, #12] - 80021c6: 681b ldr r3, [r3, #0] - 80021c8: 617b str r3, [r7, #20] + 80021a4: 68fb ldr r3, [r7, #12] + 80021a6: 681b ldr r3, [r3, #0] + 80021a8: 617b str r3, [r7, #20] *pReg = data; - 80021ca: 697b ldr r3, [r7, #20] - 80021cc: 187a adds r2, r7, r1 - 80021ce: 8812 ldrh r2, [r2, #0] - 80021d0: 801a strh r2, [r3, #0] + 80021aa: 697b ldr r3, [r7, #20] + 80021ac: 187a adds r2, r7, r1 + 80021ae: 8812 ldrh r2, [r2, #0] + 80021b0: 801a strh r2, [r3, #0] } if ((BufferLength % 4U) == 3U) - 80021d2: 687b ldr r3, [r7, #4] - 80021d4: 2203 movs r2, #3 - 80021d6: 4013 ands r3, r2 - 80021d8: 2b03 cmp r3, #3 - 80021da: d122 bne.n 8002222 + 80021b2: 687b ldr r3, [r7, #4] + 80021b4: 2203 movs r2, #3 + 80021b6: 4013 ands r3, r2 + 80021b8: 2b03 cmp r3, #3 + 80021ba: d122 bne.n 8002202 { data = ((uint16_t)(pBuffer[4U * i]) << 8U) | (uint16_t)pBuffer[(4U * i) + 1U]; - 80021dc: 69fb ldr r3, [r7, #28] - 80021de: 009b lsls r3, r3, #2 - 80021e0: 68ba ldr r2, [r7, #8] - 80021e2: 18d3 adds r3, r2, r3 - 80021e4: 781b ldrb r3, [r3, #0] - 80021e6: 021b lsls r3, r3, #8 - 80021e8: b21a sxth r2, r3 - 80021ea: 69fb ldr r3, [r7, #28] - 80021ec: 009b lsls r3, r3, #2 - 80021ee: 3301 adds r3, #1 - 80021f0: 68b9 ldr r1, [r7, #8] - 80021f2: 18cb adds r3, r1, r3 - 80021f4: 781b ldrb r3, [r3, #0] - 80021f6: b21b sxth r3, r3 - 80021f8: 4313 orrs r3, r2 - 80021fa: b21a sxth r2, r3 - 80021fc: 211a movs r1, #26 - 80021fe: 187b adds r3, r7, r1 - 8002200: 801a strh r2, [r3, #0] + 80021bc: 69fb ldr r3, [r7, #28] + 80021be: 009b lsls r3, r3, #2 + 80021c0: 68ba ldr r2, [r7, #8] + 80021c2: 18d3 adds r3, r2, r3 + 80021c4: 781b ldrb r3, [r3, #0] + 80021c6: 021b lsls r3, r3, #8 + 80021c8: b21a sxth r2, r3 + 80021ca: 69fb ldr r3, [r7, #28] + 80021cc: 009b lsls r3, r3, #2 + 80021ce: 3301 adds r3, #1 + 80021d0: 68b9 ldr r1, [r7, #8] + 80021d2: 18cb adds r3, r1, r3 + 80021d4: 781b ldrb r3, [r3, #0] + 80021d6: b21b sxth r3, r3 + 80021d8: 4313 orrs r3, r2 + 80021da: b21a sxth r2, r3 + 80021dc: 211a movs r1, #26 + 80021de: 187b adds r3, r7, r1 + 80021e0: 801a strh r2, [r3, #0] pReg = (__IO uint16_t *)(__IO void *)(&hcrc->Instance->DR); /* Derogation MisraC2012 R.11.5 */ - 8002202: 68fb ldr r3, [r7, #12] - 8002204: 681b ldr r3, [r3, #0] - 8002206: 617b str r3, [r7, #20] + 80021e2: 68fb ldr r3, [r7, #12] + 80021e4: 681b ldr r3, [r3, #0] + 80021e6: 617b str r3, [r7, #20] *pReg = data; - 8002208: 697b ldr r3, [r7, #20] - 800220a: 187a adds r2, r7, r1 - 800220c: 8812 ldrh r2, [r2, #0] - 800220e: 801a strh r2, [r3, #0] + 80021e8: 697b ldr r3, [r7, #20] + 80021ea: 187a adds r2, r7, r1 + 80021ec: 8812 ldrh r2, [r2, #0] + 80021ee: 801a strh r2, [r3, #0] *(__IO uint8_t *)(__IO void *)(&hcrc->Instance->DR) = pBuffer[(4U * i) + 2U]; /* Derogation MisraC2012 R.11.5 */ - 8002210: 69fb ldr r3, [r7, #28] - 8002212: 009b lsls r3, r3, #2 - 8002214: 3302 adds r3, #2 - 8002216: 68ba ldr r2, [r7, #8] - 8002218: 18d2 adds r2, r2, r3 - 800221a: 68fb ldr r3, [r7, #12] - 800221c: 681b ldr r3, [r3, #0] - 800221e: 7812 ldrb r2, [r2, #0] - 8002220: 701a strb r2, [r3, #0] + 80021f0: 69fb ldr r3, [r7, #28] + 80021f2: 009b lsls r3, r3, #2 + 80021f4: 3302 adds r3, #2 + 80021f6: 68ba ldr r2, [r7, #8] + 80021f8: 18d2 adds r2, r2, r3 + 80021fa: 68fb ldr r3, [r7, #12] + 80021fc: 681b ldr r3, [r3, #0] + 80021fe: 7812 ldrb r2, [r2, #0] + 8002200: 701a strb r2, [r3, #0] } } /* Return the CRC computed value */ return hcrc->Instance->DR; - 8002222: 68fb ldr r3, [r7, #12] - 8002224: 681b ldr r3, [r3, #0] - 8002226: 681b ldr r3, [r3, #0] + 8002202: 68fb ldr r3, [r7, #12] + 8002204: 681b ldr r3, [r3, #0] + 8002206: 681b ldr r3, [r3, #0] } - 8002228: 0018 movs r0, r3 - 800222a: 46bd mov sp, r7 - 800222c: b008 add sp, #32 - 800222e: bd80 pop {r7, pc} + 8002208: 0018 movs r0, r3 + 800220a: 46bd mov sp, r7 + 800220c: b008 add sp, #32 + 800220e: bd80 pop {r7, pc} -08002230 : +08002210 : * @param pBuffer pointer to the input data buffer * @param BufferLength input data buffer length * @retval uint32_t CRC (returned value LSBs for CRC shorter than 32 bits) */ static uint32_t CRC_Handle_16(CRC_HandleTypeDef *hcrc, uint16_t pBuffer[], uint32_t BufferLength) { - 8002230: b580 push {r7, lr} - 8002232: b086 sub sp, #24 - 8002234: af00 add r7, sp, #0 - 8002236: 60f8 str r0, [r7, #12] - 8002238: 60b9 str r1, [r7, #8] - 800223a: 607a str r2, [r7, #4] + 8002210: b580 push {r7, lr} + 8002212: b086 sub sp, #24 + 8002214: af00 add r7, sp, #0 + 8002216: 60f8 str r0, [r7, #12] + 8002218: 60b9 str r1, [r7, #8] + 800221a: 607a str r2, [r7, #4] __IO uint16_t *pReg; /* Processing time optimization: 2 HalfWords are entered in a row with a single word write, * in case of odd length, last HalfWord must be carefully fed to the CRC calculator to ensure * a correct type handling by the peripheral */ for (i = 0U; i < (BufferLength / 2U); i++) - 800223c: 2300 movs r3, #0 - 800223e: 617b str r3, [r7, #20] - 8002240: e013 b.n 800226a + 800221c: 2300 movs r3, #0 + 800221e: 617b str r3, [r7, #20] + 8002220: e013 b.n 800224a { hcrc->Instance->DR = ((uint32_t)pBuffer[2U * i] << 16U) | (uint32_t)pBuffer[(2U * i) + 1U]; - 8002242: 697b ldr r3, [r7, #20] - 8002244: 009b lsls r3, r3, #2 - 8002246: 68ba ldr r2, [r7, #8] - 8002248: 18d3 adds r3, r2, r3 - 800224a: 881b ldrh r3, [r3, #0] - 800224c: 041a lsls r2, r3, #16 - 800224e: 697b ldr r3, [r7, #20] - 8002250: 009b lsls r3, r3, #2 - 8002252: 3302 adds r3, #2 - 8002254: 68b9 ldr r1, [r7, #8] - 8002256: 18cb adds r3, r1, r3 - 8002258: 881b ldrh r3, [r3, #0] - 800225a: 0019 movs r1, r3 - 800225c: 68fb ldr r3, [r7, #12] - 800225e: 681b ldr r3, [r3, #0] - 8002260: 430a orrs r2, r1 - 8002262: 601a str r2, [r3, #0] + 8002222: 697b ldr r3, [r7, #20] + 8002224: 009b lsls r3, r3, #2 + 8002226: 68ba ldr r2, [r7, #8] + 8002228: 18d3 adds r3, r2, r3 + 800222a: 881b ldrh r3, [r3, #0] + 800222c: 041a lsls r2, r3, #16 + 800222e: 697b ldr r3, [r7, #20] + 8002230: 009b lsls r3, r3, #2 + 8002232: 3302 adds r3, #2 + 8002234: 68b9 ldr r1, [r7, #8] + 8002236: 18cb adds r3, r1, r3 + 8002238: 881b ldrh r3, [r3, #0] + 800223a: 0019 movs r1, r3 + 800223c: 68fb ldr r3, [r7, #12] + 800223e: 681b ldr r3, [r3, #0] + 8002240: 430a orrs r2, r1 + 8002242: 601a str r2, [r3, #0] for (i = 0U; i < (BufferLength / 2U); i++) - 8002264: 697b ldr r3, [r7, #20] - 8002266: 3301 adds r3, #1 - 8002268: 617b str r3, [r7, #20] - 800226a: 687b ldr r3, [r7, #4] - 800226c: 085b lsrs r3, r3, #1 - 800226e: 697a ldr r2, [r7, #20] - 8002270: 429a cmp r2, r3 - 8002272: d3e6 bcc.n 8002242 + 8002244: 697b ldr r3, [r7, #20] + 8002246: 3301 adds r3, #1 + 8002248: 617b str r3, [r7, #20] + 800224a: 687b ldr r3, [r7, #4] + 800224c: 085b lsrs r3, r3, #1 + 800224e: 697a ldr r2, [r7, #20] + 8002250: 429a cmp r2, r3 + 8002252: d3e6 bcc.n 8002222 } if ((BufferLength % 2U) != 0U) - 8002274: 687b ldr r3, [r7, #4] - 8002276: 2201 movs r2, #1 - 8002278: 4013 ands r3, r2 - 800227a: d009 beq.n 8002290 + 8002254: 687b ldr r3, [r7, #4] + 8002256: 2201 movs r2, #1 + 8002258: 4013 ands r3, r2 + 800225a: d009 beq.n 8002270 { pReg = (__IO uint16_t *)(__IO void *)(&hcrc->Instance->DR); /* Derogation MisraC2012 R.11.5 */ - 800227c: 68fb ldr r3, [r7, #12] - 800227e: 681b ldr r3, [r3, #0] - 8002280: 613b str r3, [r7, #16] + 800225c: 68fb ldr r3, [r7, #12] + 800225e: 681b ldr r3, [r3, #0] + 8002260: 613b str r3, [r7, #16] *pReg = pBuffer[2U * i]; - 8002282: 697b ldr r3, [r7, #20] - 8002284: 009b lsls r3, r3, #2 - 8002286: 68ba ldr r2, [r7, #8] - 8002288: 18d3 adds r3, r2, r3 - 800228a: 881a ldrh r2, [r3, #0] - 800228c: 693b ldr r3, [r7, #16] - 800228e: 801a strh r2, [r3, #0] + 8002262: 697b ldr r3, [r7, #20] + 8002264: 009b lsls r3, r3, #2 + 8002266: 68ba ldr r2, [r7, #8] + 8002268: 18d3 adds r3, r2, r3 + 800226a: 881a ldrh r2, [r3, #0] + 800226c: 693b ldr r3, [r7, #16] + 800226e: 801a strh r2, [r3, #0] } /* Return the CRC computed value */ return hcrc->Instance->DR; - 8002290: 68fb ldr r3, [r7, #12] - 8002292: 681b ldr r3, [r3, #0] - 8002294: 681b ldr r3, [r3, #0] + 8002270: 68fb ldr r3, [r7, #12] + 8002272: 681b ldr r3, [r3, #0] + 8002274: 681b ldr r3, [r3, #0] } - 8002296: 0018 movs r0, r3 - 8002298: 46bd mov sp, r7 - 800229a: b006 add sp, #24 - 800229c: bd80 pop {r7, pc} + 8002276: 0018 movs r0, r3 + 8002278: 46bd mov sp, r7 + 800227a: b006 add sp, #24 + 800227c: bd80 pop {r7, pc} -0800229e : +0800227e : * @arg @ref CRC_POLYLENGTH_16B 16-bit long CRC (generating polynomial of degree 16) * @arg @ref CRC_POLYLENGTH_32B 32-bit long CRC (generating polynomial of degree 32) * @retval HAL status */ HAL_StatusTypeDef HAL_CRCEx_Polynomial_Set(CRC_HandleTypeDef *hcrc, uint32_t Pol, uint32_t PolyLength) { - 800229e: b580 push {r7, lr} - 80022a0: b086 sub sp, #24 - 80022a2: af00 add r7, sp, #0 - 80022a4: 60f8 str r0, [r7, #12] - 80022a6: 60b9 str r1, [r7, #8] - 80022a8: 607a str r2, [r7, #4] + 800227e: b580 push {r7, lr} + 8002280: b086 sub sp, #24 + 8002282: af00 add r7, sp, #0 + 8002284: 60f8 str r0, [r7, #12] + 8002286: 60b9 str r1, [r7, #8] + 8002288: 607a str r2, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 80022aa: 2317 movs r3, #23 - 80022ac: 18fb adds r3, r7, r3 - 80022ae: 2200 movs r2, #0 - 80022b0: 701a strb r2, [r3, #0] + 800228a: 2317 movs r3, #23 + 800228c: 18fb adds r3, r7, r3 + 800228e: 2200 movs r2, #0 + 8002290: 701a strb r2, [r3, #0] uint32_t msb = 31U; /* polynomial degree is 32 at most, so msb is initialized to max value */ - 80022b2: 231f movs r3, #31 - 80022b4: 613b str r3, [r7, #16] + 8002292: 231f movs r3, #31 + 8002294: 613b str r3, [r7, #16] * definition. HAL_ERROR is reported if Pol degree is * larger than that indicated by PolyLength. * Look for MSB position: msb will contain the degree of * the second to the largest polynomial member. E.g., for * X^7 + X^6 + X^5 + X^2 + 1, msb = 6. */ while ((msb-- > 0U) && ((Pol & ((uint32_t)(0x1U) << (msb & 0x1FU))) == 0U)) - 80022b6: 46c0 nop ; (mov r8, r8) - 80022b8: 693b ldr r3, [r7, #16] - 80022ba: 1e5a subs r2, r3, #1 - 80022bc: 613a str r2, [r7, #16] - 80022be: 2b00 cmp r3, #0 - 80022c0: d008 beq.n 80022d4 - 80022c2: 693b ldr r3, [r7, #16] - 80022c4: 221f movs r2, #31 - 80022c6: 4013 ands r3, r2 - 80022c8: 68ba ldr r2, [r7, #8] - 80022ca: 40da lsrs r2, r3 - 80022cc: 0013 movs r3, r2 - 80022ce: 2201 movs r2, #1 - 80022d0: 4013 ands r3, r2 - 80022d2: d0f1 beq.n 80022b8 + 8002296: 46c0 nop ; (mov r8, r8) + 8002298: 693b ldr r3, [r7, #16] + 800229a: 1e5a subs r2, r3, #1 + 800229c: 613a str r2, [r7, #16] + 800229e: 2b00 cmp r3, #0 + 80022a0: d008 beq.n 80022b4 + 80022a2: 693b ldr r3, [r7, #16] + 80022a4: 221f movs r2, #31 + 80022a6: 4013 ands r3, r2 + 80022a8: 68ba ldr r2, [r7, #8] + 80022aa: 40da lsrs r2, r3 + 80022ac: 0013 movs r3, r2 + 80022ae: 2201 movs r2, #1 + 80022b0: 4013 ands r3, r2 + 80022b2: d0f1 beq.n 8002298 { } switch (PolyLength) - 80022d4: 687b ldr r3, [r7, #4] - 80022d6: 2b18 cmp r3, #24 - 80022d8: d00f beq.n 80022fa - 80022da: 687b ldr r3, [r7, #4] - 80022dc: 2b18 cmp r3, #24 - 80022de: d824 bhi.n 800232a - 80022e0: 687b ldr r3, [r7, #4] - 80022e2: 2b10 cmp r3, #16 - 80022e4: d011 beq.n 800230a - 80022e6: 687b ldr r3, [r7, #4] - 80022e8: 2b10 cmp r3, #16 - 80022ea: d81e bhi.n 800232a - 80022ec: 687b ldr r3, [r7, #4] - 80022ee: 2b00 cmp r3, #0 - 80022f0: d020 beq.n 8002334 - 80022f2: 687b ldr r3, [r7, #4] - 80022f4: 2b08 cmp r3, #8 - 80022f6: d010 beq.n 800231a - 80022f8: e017 b.n 800232a + 80022b4: 687b ldr r3, [r7, #4] + 80022b6: 2b18 cmp r3, #24 + 80022b8: d00f beq.n 80022da + 80022ba: 687b ldr r3, [r7, #4] + 80022bc: 2b18 cmp r3, #24 + 80022be: d824 bhi.n 800230a + 80022c0: 687b ldr r3, [r7, #4] + 80022c2: 2b10 cmp r3, #16 + 80022c4: d011 beq.n 80022ea + 80022c6: 687b ldr r3, [r7, #4] + 80022c8: 2b10 cmp r3, #16 + 80022ca: d81e bhi.n 800230a + 80022cc: 687b ldr r3, [r7, #4] + 80022ce: 2b00 cmp r3, #0 + 80022d0: d020 beq.n 8002314 + 80022d2: 687b ldr r3, [r7, #4] + 80022d4: 2b08 cmp r3, #8 + 80022d6: d010 beq.n 80022fa + 80022d8: e017 b.n 800230a { case CRC_POLYLENGTH_7B: if (msb >= HAL_CRC_LENGTH_7B) + 80022da: 693b ldr r3, [r7, #16] + 80022dc: 2b06 cmp r3, #6 + 80022de: d91b bls.n 8002318 + { + status = HAL_ERROR; + 80022e0: 2317 movs r3, #23 + 80022e2: 18fb adds r3, r7, r3 + 80022e4: 2201 movs r2, #1 + 80022e6: 701a strb r2, [r3, #0] + } + break; + 80022e8: e016 b.n 8002318 + case CRC_POLYLENGTH_8B: + if (msb >= HAL_CRC_LENGTH_8B) + 80022ea: 693b ldr r3, [r7, #16] + 80022ec: 2b07 cmp r3, #7 + 80022ee: d915 bls.n 800231c + { + status = HAL_ERROR; + 80022f0: 2317 movs r3, #23 + 80022f2: 18fb adds r3, r7, r3 + 80022f4: 2201 movs r2, #1 + 80022f6: 701a strb r2, [r3, #0] + } + break; + 80022f8: e010 b.n 800231c + case CRC_POLYLENGTH_16B: + if (msb >= HAL_CRC_LENGTH_16B) 80022fa: 693b ldr r3, [r7, #16] - 80022fc: 2b06 cmp r3, #6 - 80022fe: d91b bls.n 8002338 + 80022fc: 2b0f cmp r3, #15 + 80022fe: d90f bls.n 8002320 { status = HAL_ERROR; 8002300: 2317 movs r3, #23 @@ -5625,7920 +5644,7916 @@ HAL_StatusTypeDef HAL_CRCEx_Polynomial_Set(CRC_HandleTypeDef *hcrc, uint32_t Pol 8002306: 701a strb r2, [r3, #0] } break; - 8002308: e016 b.n 8002338 - case CRC_POLYLENGTH_8B: - if (msb >= HAL_CRC_LENGTH_8B) - 800230a: 693b ldr r3, [r7, #16] - 800230c: 2b07 cmp r3, #7 - 800230e: d915 bls.n 800233c - { - status = HAL_ERROR; - 8002310: 2317 movs r3, #23 - 8002312: 18fb adds r3, r7, r3 - 8002314: 2201 movs r2, #1 - 8002316: 701a strb r2, [r3, #0] - } - break; - 8002318: e010 b.n 800233c - case CRC_POLYLENGTH_16B: - if (msb >= HAL_CRC_LENGTH_16B) - 800231a: 693b ldr r3, [r7, #16] - 800231c: 2b0f cmp r3, #15 - 800231e: d90f bls.n 8002340 - { - status = HAL_ERROR; - 8002320: 2317 movs r3, #23 - 8002322: 18fb adds r3, r7, r3 - 8002324: 2201 movs r2, #1 - 8002326: 701a strb r2, [r3, #0] - } - break; - 8002328: e00a b.n 8002340 + 8002308: e00a b.n 8002320 case CRC_POLYLENGTH_32B: /* no polynomial definition vs. polynomial length issue possible */ break; default: status = HAL_ERROR; - 800232a: 2317 movs r3, #23 - 800232c: 18fb adds r3, r7, r3 - 800232e: 2201 movs r2, #1 - 8002330: 701a strb r2, [r3, #0] + 800230a: 2317 movs r3, #23 + 800230c: 18fb adds r3, r7, r3 + 800230e: 2201 movs r2, #1 + 8002310: 701a strb r2, [r3, #0] break; - 8002332: e006 b.n 8002342 + 8002312: e006 b.n 8002322 break; - 8002334: 46c0 nop ; (mov r8, r8) - 8002336: e004 b.n 8002342 + 8002314: 46c0 nop ; (mov r8, r8) + 8002316: e004 b.n 8002322 break; - 8002338: 46c0 nop ; (mov r8, r8) - 800233a: e002 b.n 8002342 + 8002318: 46c0 nop ; (mov r8, r8) + 800231a: e002 b.n 8002322 break; - 800233c: 46c0 nop ; (mov r8, r8) - 800233e: e000 b.n 8002342 + 800231c: 46c0 nop ; (mov r8, r8) + 800231e: e000 b.n 8002322 break; - 8002340: 46c0 nop ; (mov r8, r8) + 8002320: 46c0 nop ; (mov r8, r8) } if (status == HAL_OK) - 8002342: 2317 movs r3, #23 - 8002344: 18fb adds r3, r7, r3 - 8002346: 781b ldrb r3, [r3, #0] - 8002348: 2b00 cmp r3, #0 - 800234a: d10e bne.n 800236a + 8002322: 2317 movs r3, #23 + 8002324: 18fb adds r3, r7, r3 + 8002326: 781b ldrb r3, [r3, #0] + 8002328: 2b00 cmp r3, #0 + 800232a: d10e bne.n 800234a { /* set generating polynomial */ WRITE_REG(hcrc->Instance->POL, Pol); - 800234c: 68fb ldr r3, [r7, #12] - 800234e: 681b ldr r3, [r3, #0] - 8002350: 68ba ldr r2, [r7, #8] - 8002352: 615a str r2, [r3, #20] + 800232c: 68fb ldr r3, [r7, #12] + 800232e: 681b ldr r3, [r3, #0] + 8002330: 68ba ldr r2, [r7, #8] + 8002332: 615a str r2, [r3, #20] /* set generating polynomial size */ MODIFY_REG(hcrc->Instance->CR, CRC_CR_POLYSIZE, PolyLength); - 8002354: 68fb ldr r3, [r7, #12] - 8002356: 681b ldr r3, [r3, #0] - 8002358: 689b ldr r3, [r3, #8] - 800235a: 2218 movs r2, #24 - 800235c: 4393 bics r3, r2 - 800235e: 0019 movs r1, r3 - 8002360: 68fb ldr r3, [r7, #12] - 8002362: 681b ldr r3, [r3, #0] - 8002364: 687a ldr r2, [r7, #4] - 8002366: 430a orrs r2, r1 - 8002368: 609a str r2, [r3, #8] + 8002334: 68fb ldr r3, [r7, #12] + 8002336: 681b ldr r3, [r3, #0] + 8002338: 689b ldr r3, [r3, #8] + 800233a: 2218 movs r2, #24 + 800233c: 4393 bics r3, r2 + 800233e: 0019 movs r1, r3 + 8002340: 68fb ldr r3, [r7, #12] + 8002342: 681b ldr r3, [r3, #0] + 8002344: 687a ldr r2, [r7, #4] + 8002346: 430a orrs r2, r1 + 8002348: 609a str r2, [r3, #8] } /* Return function status */ return status; - 800236a: 2317 movs r3, #23 - 800236c: 18fb adds r3, r7, r3 - 800236e: 781b ldrb r3, [r3, #0] + 800234a: 2317 movs r3, #23 + 800234c: 18fb adds r3, r7, r3 + 800234e: 781b ldrb r3, [r3, #0] } - 8002370: 0018 movs r0, r3 - 8002372: 46bd mov sp, r7 - 8002374: b006 add sp, #24 - 8002376: bd80 pop {r7, pc} + 8002350: 0018 movs r0, r3 + 8002352: 46bd mov sp, r7 + 8002354: b006 add sp, #24 + 8002356: bd80 pop {r7, pc} -08002378 : +08002358 : * TypeProgram = FLASH_TYPEPROGRAM_FAST (32-bit). * * @retval HAL_StatusTypeDef HAL Status */ HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) { - 8002378: b5b0 push {r4, r5, r7, lr} - 800237a: b086 sub sp, #24 - 800237c: af00 add r7, sp, #0 - 800237e: 60f8 str r0, [r7, #12] - 8002380: 60b9 str r1, [r7, #8] - 8002382: 603a str r2, [r7, #0] - 8002384: 607b str r3, [r7, #4] + 8002358: b5b0 push {r4, r5, r7, lr} + 800235a: b086 sub sp, #24 + 800235c: af00 add r7, sp, #0 + 800235e: 60f8 str r0, [r7, #12] + 8002360: 60b9 str r1, [r7, #8] + 8002362: 603a str r2, [r7, #0] + 8002364: 607b str r3, [r7, #4] /* Check the parameters */ assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); /* Process Locked */ __HAL_LOCK(&pFlash); - 8002386: 4b21 ldr r3, [pc, #132] ; (800240c ) - 8002388: 781b ldrb r3, [r3, #0] - 800238a: 2b01 cmp r3, #1 - 800238c: d101 bne.n 8002392 - 800238e: 2302 movs r3, #2 - 8002390: e038 b.n 8002404 - 8002392: 4b1e ldr r3, [pc, #120] ; (800240c ) - 8002394: 2201 movs r2, #1 - 8002396: 701a strb r2, [r3, #0] + 8002366: 4b21 ldr r3, [pc, #132] ; (80023ec ) + 8002368: 781b ldrb r3, [r3, #0] + 800236a: 2b01 cmp r3, #1 + 800236c: d101 bne.n 8002372 + 800236e: 2302 movs r3, #2 + 8002370: e038 b.n 80023e4 + 8002372: 4b1e ldr r3, [pc, #120] ; (80023ec ) + 8002374: 2201 movs r2, #1 + 8002376: 701a strb r2, [r3, #0] /* Reset error code */ pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; - 8002398: 4b1c ldr r3, [pc, #112] ; (800240c ) - 800239a: 2200 movs r2, #0 - 800239c: 605a str r2, [r3, #4] + 8002378: 4b1c ldr r3, [pc, #112] ; (80023ec ) + 800237a: 2200 movs r2, #0 + 800237c: 605a str r2, [r3, #4] /* Wait for last operation to be completed */ status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); - 800239e: 2517 movs r5, #23 - 80023a0: 197c adds r4, r7, r5 - 80023a2: 23fa movs r3, #250 ; 0xfa - 80023a4: 009b lsls r3, r3, #2 - 80023a6: 0018 movs r0, r3 - 80023a8: f000 f874 bl 8002494 - 80023ac: 0003 movs r3, r0 - 80023ae: 7023 strb r3, [r4, #0] + 800237e: 2517 movs r5, #23 + 8002380: 197c adds r4, r7, r5 + 8002382: 23fa movs r3, #250 ; 0xfa + 8002384: 009b lsls r3, r3, #2 + 8002386: 0018 movs r0, r3 + 8002388: f000 f874 bl 8002474 + 800238c: 0003 movs r3, r0 + 800238e: 7023 strb r3, [r4, #0] if (status == HAL_OK) - 80023b0: 197b adds r3, r7, r5 - 80023b2: 781b ldrb r3, [r3, #0] - 80023b4: 2b00 cmp r3, #0 - 80023b6: d11f bne.n 80023f8 + 8002390: 197b adds r3, r7, r5 + 8002392: 781b ldrb r3, [r3, #0] + 8002394: 2b00 cmp r3, #0 + 8002396: d11f bne.n 80023d8 { if (TypeProgram == FLASH_TYPEPROGRAM_DOUBLEWORD) - 80023b8: 68fb ldr r3, [r7, #12] - 80023ba: 2b01 cmp r3, #1 - 80023bc: d106 bne.n 80023cc + 8002398: 68fb ldr r3, [r7, #12] + 800239a: 2b01 cmp r3, #1 + 800239c: d106 bne.n 80023ac { /* Check the parameters */ assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); /* Program double-word (64-bit) at a specified address */ FLASH_Program_DoubleWord(Address, Data); - 80023be: 683a ldr r2, [r7, #0] - 80023c0: 687b ldr r3, [r7, #4] - 80023c2: 68b9 ldr r1, [r7, #8] - 80023c4: 0008 movs r0, r1 - 80023c6: f000 f8b3 bl 8002530 - 80023ca: e005 b.n 80023d8 + 800239e: 683a ldr r2, [r7, #0] + 80023a0: 687b ldr r3, [r7, #4] + 80023a2: 68b9 ldr r1, [r7, #8] + 80023a4: 0008 movs r0, r1 + 80023a6: f000 f8b3 bl 8002510 + 80023aa: e005 b.n 80023b8 { /* Check the parameters */ assert_param(IS_FLASH_FAST_PROGRAM_ADDRESS(Address)); /* Fast program a 32 row double-word (64-bit) at a specified address */ FLASH_Program_Fast(Address, (uint32_t)Data); - 80023cc: 683a ldr r2, [r7, #0] - 80023ce: 68bb ldr r3, [r7, #8] - 80023d0: 0011 movs r1, r2 - 80023d2: 0018 movs r0, r3 - 80023d4: f004 f9e0 bl 8006798 <__FLASH_Program_Fast_veneer> + 80023ac: 683a ldr r2, [r7, #0] + 80023ae: 68bb ldr r3, [r7, #8] + 80023b0: 0011 movs r1, r2 + 80023b2: 0018 movs r0, r3 + 80023b4: f004 f9f0 bl 8006798 <__FLASH_Program_Fast_veneer> } /* Wait for last operation to be completed */ status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); - 80023d8: 2317 movs r3, #23 - 80023da: 18fc adds r4, r7, r3 - 80023dc: 23fa movs r3, #250 ; 0xfa - 80023de: 009b lsls r3, r3, #2 - 80023e0: 0018 movs r0, r3 - 80023e2: f000 f857 bl 8002494 - 80023e6: 0003 movs r3, r0 - 80023e8: 7023 strb r3, [r4, #0] + 80023b8: 2317 movs r3, #23 + 80023ba: 18fc adds r4, r7, r3 + 80023bc: 23fa movs r3, #250 ; 0xfa + 80023be: 009b lsls r3, r3, #2 + 80023c0: 0018 movs r0, r3 + 80023c2: f000 f857 bl 8002474 + 80023c6: 0003 movs r3, r0 + 80023c8: 7023 strb r3, [r4, #0] /* If the program operation is completed, disable the PG or FSTPG Bit */ CLEAR_BIT(FLASH->CR, TypeProgram); - 80023ea: 4b09 ldr r3, [pc, #36] ; (8002410 ) - 80023ec: 695a ldr r2, [r3, #20] - 80023ee: 68fb ldr r3, [r7, #12] - 80023f0: 43d9 mvns r1, r3 - 80023f2: 4b07 ldr r3, [pc, #28] ; (8002410 ) - 80023f4: 400a ands r2, r1 - 80023f6: 615a str r2, [r3, #20] + 80023ca: 4b09 ldr r3, [pc, #36] ; (80023f0 ) + 80023cc: 695a ldr r2, [r3, #20] + 80023ce: 68fb ldr r3, [r7, #12] + 80023d0: 43d9 mvns r1, r3 + 80023d2: 4b07 ldr r3, [pc, #28] ; (80023f0 ) + 80023d4: 400a ands r2, r1 + 80023d6: 615a str r2, [r3, #20] } /* Process Unlocked */ __HAL_UNLOCK(&pFlash); - 80023f8: 4b04 ldr r3, [pc, #16] ; (800240c ) - 80023fa: 2200 movs r2, #0 - 80023fc: 701a strb r2, [r3, #0] + 80023d8: 4b04 ldr r3, [pc, #16] ; (80023ec ) + 80023da: 2200 movs r2, #0 + 80023dc: 701a strb r2, [r3, #0] /* return status */ return status; - 80023fe: 2317 movs r3, #23 - 8002400: 18fb adds r3, r7, r3 - 8002402: 781b ldrb r3, [r3, #0] + 80023de: 2317 movs r3, #23 + 80023e0: 18fb adds r3, r7, r3 + 80023e2: 781b ldrb r3, [r3, #0] } - 8002404: 0018 movs r0, r3 - 8002406: 46bd mov sp, r7 - 8002408: b006 add sp, #24 - 800240a: bdb0 pop {r4, r5, r7, pc} - 800240c: 2000023c .word 0x2000023c - 8002410: 40022000 .word 0x40022000 + 80023e4: 0018 movs r0, r3 + 80023e6: 46bd mov sp, r7 + 80023e8: b006 add sp, #24 + 80023ea: bdb0 pop {r4, r5, r7, pc} + 80023ec: 2000023c .word 0x2000023c + 80023f0: 40022000 .word 0x40022000 -08002414 : +080023f4 : /** * @brief Unlock the FLASH control register access. * @retval HAL Status */ HAL_StatusTypeDef HAL_FLASH_Unlock(void) { - 8002414: b580 push {r7, lr} - 8002416: b082 sub sp, #8 - 8002418: af00 add r7, sp, #0 + 80023f4: b580 push {r7, lr} + 80023f6: b082 sub sp, #8 + 80023f8: af00 add r7, sp, #0 HAL_StatusTypeDef status = HAL_OK; - 800241a: 1dfb adds r3, r7, #7 - 800241c: 2200 movs r2, #0 - 800241e: 701a strb r2, [r3, #0] + 80023fa: 1dfb adds r3, r7, #7 + 80023fc: 2200 movs r2, #0 + 80023fe: 701a strb r2, [r3, #0] if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0x00U) - 8002420: 4b0b ldr r3, [pc, #44] ; (8002450 ) - 8002422: 695b ldr r3, [r3, #20] - 8002424: 2b00 cmp r3, #0 - 8002426: da0c bge.n 8002442 + 8002400: 4b0b ldr r3, [pc, #44] ; (8002430 ) + 8002402: 695b ldr r3, [r3, #20] + 8002404: 2b00 cmp r3, #0 + 8002406: da0c bge.n 8002422 { /* Authorize the FLASH Registers access */ WRITE_REG(FLASH->KEYR, FLASH_KEY1); - 8002428: 4b09 ldr r3, [pc, #36] ; (8002450 ) - 800242a: 4a0a ldr r2, [pc, #40] ; (8002454 ) - 800242c: 609a str r2, [r3, #8] + 8002408: 4b09 ldr r3, [pc, #36] ; (8002430 ) + 800240a: 4a0a ldr r2, [pc, #40] ; (8002434 ) + 800240c: 609a str r2, [r3, #8] WRITE_REG(FLASH->KEYR, FLASH_KEY2); - 800242e: 4b08 ldr r3, [pc, #32] ; (8002450 ) - 8002430: 4a09 ldr r2, [pc, #36] ; (8002458 ) - 8002432: 609a str r2, [r3, #8] + 800240e: 4b08 ldr r3, [pc, #32] ; (8002430 ) + 8002410: 4a09 ldr r2, [pc, #36] ; (8002438 ) + 8002412: 609a str r2, [r3, #8] /* verify Flash is unlock */ if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0x00U) - 8002434: 4b06 ldr r3, [pc, #24] ; (8002450 ) - 8002436: 695b ldr r3, [r3, #20] - 8002438: 2b00 cmp r3, #0 - 800243a: da02 bge.n 8002442 + 8002414: 4b06 ldr r3, [pc, #24] ; (8002430 ) + 8002416: 695b ldr r3, [r3, #20] + 8002418: 2b00 cmp r3, #0 + 800241a: da02 bge.n 8002422 { status = HAL_ERROR; - 800243c: 1dfb adds r3, r7, #7 - 800243e: 2201 movs r2, #1 - 8002440: 701a strb r2, [r3, #0] + 800241c: 1dfb adds r3, r7, #7 + 800241e: 2201 movs r2, #1 + 8002420: 701a strb r2, [r3, #0] } } return status; - 8002442: 1dfb adds r3, r7, #7 - 8002444: 781b ldrb r3, [r3, #0] + 8002422: 1dfb adds r3, r7, #7 + 8002424: 781b ldrb r3, [r3, #0] } - 8002446: 0018 movs r0, r3 - 8002448: 46bd mov sp, r7 - 800244a: b002 add sp, #8 - 800244c: bd80 pop {r7, pc} - 800244e: 46c0 nop ; (mov r8, r8) - 8002450: 40022000 .word 0x40022000 - 8002454: 45670123 .word 0x45670123 - 8002458: cdef89ab .word 0xcdef89ab + 8002426: 0018 movs r0, r3 + 8002428: 46bd mov sp, r7 + 800242a: b002 add sp, #8 + 800242c: bd80 pop {r7, pc} + 800242e: 46c0 nop ; (mov r8, r8) + 8002430: 40022000 .word 0x40022000 + 8002434: 45670123 .word 0x45670123 + 8002438: cdef89ab .word 0xcdef89ab -0800245c : +0800243c : /** * @brief Lock the FLASH control register access. * @retval HAL Status */ HAL_StatusTypeDef HAL_FLASH_Lock(void) { - 800245c: b580 push {r7, lr} - 800245e: b082 sub sp, #8 - 8002460: af00 add r7, sp, #0 + 800243c: b580 push {r7, lr} + 800243e: b082 sub sp, #8 + 8002440: af00 add r7, sp, #0 HAL_StatusTypeDef status = HAL_ERROR; - 8002462: 1dfb adds r3, r7, #7 - 8002464: 2201 movs r2, #1 - 8002466: 701a strb r2, [r3, #0] + 8002442: 1dfb adds r3, r7, #7 + 8002444: 2201 movs r2, #1 + 8002446: 701a strb r2, [r3, #0] /* Set the LOCK Bit to lock the FLASH Registers access */ SET_BIT(FLASH->CR, FLASH_CR_LOCK); - 8002468: 4b09 ldr r3, [pc, #36] ; (8002490 ) - 800246a: 695a ldr r2, [r3, #20] - 800246c: 4b08 ldr r3, [pc, #32] ; (8002490 ) - 800246e: 2180 movs r1, #128 ; 0x80 - 8002470: 0609 lsls r1, r1, #24 - 8002472: 430a orrs r2, r1 - 8002474: 615a str r2, [r3, #20] + 8002448: 4b09 ldr r3, [pc, #36] ; (8002470 ) + 800244a: 695a ldr r2, [r3, #20] + 800244c: 4b08 ldr r3, [pc, #32] ; (8002470 ) + 800244e: 2180 movs r1, #128 ; 0x80 + 8002450: 0609 lsls r1, r1, #24 + 8002452: 430a orrs r2, r1 + 8002454: 615a str r2, [r3, #20] /* verify Flash is locked */ if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0x00u) - 8002476: 4b06 ldr r3, [pc, #24] ; (8002490 ) - 8002478: 695b ldr r3, [r3, #20] - 800247a: 2b00 cmp r3, #0 - 800247c: da02 bge.n 8002484 + 8002456: 4b06 ldr r3, [pc, #24] ; (8002470 ) + 8002458: 695b ldr r3, [r3, #20] + 800245a: 2b00 cmp r3, #0 + 800245c: da02 bge.n 8002464 { status = HAL_OK; - 800247e: 1dfb adds r3, r7, #7 - 8002480: 2200 movs r2, #0 - 8002482: 701a strb r2, [r3, #0] + 800245e: 1dfb adds r3, r7, #7 + 8002460: 2200 movs r2, #0 + 8002462: 701a strb r2, [r3, #0] } return status; - 8002484: 1dfb adds r3, r7, #7 - 8002486: 781b ldrb r3, [r3, #0] + 8002464: 1dfb adds r3, r7, #7 + 8002466: 781b ldrb r3, [r3, #0] } - 8002488: 0018 movs r0, r3 - 800248a: 46bd mov sp, r7 - 800248c: b002 add sp, #8 - 800248e: bd80 pop {r7, pc} - 8002490: 40022000 .word 0x40022000 + 8002468: 0018 movs r0, r3 + 800246a: 46bd mov sp, r7 + 800246c: b002 add sp, #8 + 800246e: bd80 pop {r7, pc} + 8002470: 40022000 .word 0x40022000 -08002494 : +08002474 : * @brief Wait for a FLASH operation to complete. * @param Timeout maximum flash operation timeout * @retval HAL_StatusTypeDef HAL Status */ HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) { - 8002494: b580 push {r7, lr} - 8002496: b084 sub sp, #16 - 8002498: af00 add r7, sp, #0 - 800249a: 6078 str r0, [r7, #4] + 8002474: b580 push {r7, lr} + 8002476: b084 sub sp, #16 + 8002478: af00 add r7, sp, #0 + 800247a: 6078 str r0, [r7, #4] uint32_t error; /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. Even if the FLASH operation fails, the BUSY flag will be reset and an error flag will be set */ uint32_t timeout = HAL_GetTick() + Timeout; - 800249c: f7ff fc76 bl 8001d8c - 80024a0: 0002 movs r2, r0 - 80024a2: 687b ldr r3, [r7, #4] - 80024a4: 189b adds r3, r3, r2 - 80024a6: 60fb str r3, [r7, #12] + 800247c: f7ff fc76 bl 8001d6c + 8002480: 0002 movs r2, r0 + 8002482: 687b ldr r3, [r7, #4] + 8002484: 189b adds r3, r3, r2 + 8002486: 60fb str r3, [r7, #12] /* Wait if any operation is ongoing */ #if defined(FLASH_DBANK_SUPPORT) error = (FLASH_SR_BSY1 | FLASH_SR_BSY2); #else error = FLASH_SR_BSY1; - 80024a8: 2380 movs r3, #128 ; 0x80 - 80024aa: 025b lsls r3, r3, #9 - 80024ac: 60bb str r3, [r7, #8] + 8002488: 2380 movs r3, #128 ; 0x80 + 800248a: 025b lsls r3, r3, #9 + 800248c: 60bb str r3, [r7, #8] #endif /* FLASH_DBANK_SUPPORT */ while ((FLASH->SR & error) != 0x00U) - 80024ae: e007 b.n 80024c0 + 800248e: e007 b.n 80024a0 { if (HAL_GetTick() >= timeout) - 80024b0: f7ff fc6c bl 8001d8c - 80024b4: 0002 movs r2, r0 - 80024b6: 68fb ldr r3, [r7, #12] - 80024b8: 4293 cmp r3, r2 - 80024ba: d801 bhi.n 80024c0 + 8002490: f7ff fc6c bl 8001d6c + 8002494: 0002 movs r2, r0 + 8002496: 68fb ldr r3, [r7, #12] + 8002498: 4293 cmp r3, r2 + 800249a: d801 bhi.n 80024a0 { return HAL_TIMEOUT; - 80024bc: 2303 movs r3, #3 - 80024be: e02a b.n 8002516 + 800249c: 2303 movs r3, #3 + 800249e: e02a b.n 80024f6 while ((FLASH->SR & error) != 0x00U) - 80024c0: 4b17 ldr r3, [pc, #92] ; (8002520 ) - 80024c2: 691b ldr r3, [r3, #16] - 80024c4: 68ba ldr r2, [r7, #8] - 80024c6: 4013 ands r3, r2 - 80024c8: d1f2 bne.n 80024b0 + 80024a0: 4b17 ldr r3, [pc, #92] ; (8002500 ) + 80024a2: 691b ldr r3, [r3, #16] + 80024a4: 68ba ldr r2, [r7, #8] + 80024a6: 4013 ands r3, r2 + 80024a8: d1f2 bne.n 8002490 } } /* check flash errors */ error = (FLASH->SR & FLASH_SR_ERRORS); - 80024ca: 4b15 ldr r3, [pc, #84] ; (8002520 ) - 80024cc: 691b ldr r3, [r3, #16] - 80024ce: 4a15 ldr r2, [pc, #84] ; (8002524 ) - 80024d0: 4013 ands r3, r2 - 80024d2: 60bb str r3, [r7, #8] + 80024aa: 4b15 ldr r3, [pc, #84] ; (8002500 ) + 80024ac: 691b ldr r3, [r3, #16] + 80024ae: 4a15 ldr r2, [pc, #84] ; (8002504 ) + 80024b0: 4013 ands r3, r2 + 80024b2: 60bb str r3, [r7, #8] /* Clear SR register */ FLASH->SR = FLASH_SR_CLEAR; - 80024d4: 4b12 ldr r3, [pc, #72] ; (8002520 ) - 80024d6: 4a14 ldr r2, [pc, #80] ; (8002528 ) - 80024d8: 611a str r2, [r3, #16] + 80024b4: 4b12 ldr r3, [pc, #72] ; (8002500 ) + 80024b6: 4a14 ldr r2, [pc, #80] ; (8002508 ) + 80024b8: 611a str r2, [r3, #16] if (error != 0x00U) - 80024da: 68bb ldr r3, [r7, #8] - 80024dc: 2b00 cmp r3, #0 - 80024de: d004 beq.n 80024ea + 80024ba: 68bb ldr r3, [r7, #8] + 80024bc: 2b00 cmp r3, #0 + 80024be: d004 beq.n 80024ca { /*Save the error code*/ pFlash.ErrorCode = error; - 80024e0: 4b12 ldr r3, [pc, #72] ; (800252c ) - 80024e2: 68ba ldr r2, [r7, #8] - 80024e4: 605a str r2, [r3, #4] + 80024c0: 4b12 ldr r3, [pc, #72] ; (800250c ) + 80024c2: 68ba ldr r2, [r7, #8] + 80024c4: 605a str r2, [r3, #4] return HAL_ERROR; - 80024e6: 2301 movs r3, #1 - 80024e8: e015 b.n 8002516 + 80024c6: 2301 movs r3, #1 + 80024c8: e015 b.n 80024f6 } /* Wait for control register to be written */ timeout = HAL_GetTick() + Timeout; - 80024ea: f7ff fc4f bl 8001d8c - 80024ee: 0002 movs r2, r0 - 80024f0: 687b ldr r3, [r7, #4] - 80024f2: 189b adds r3, r3, r2 - 80024f4: 60fb str r3, [r7, #12] + 80024ca: f7ff fc4f bl 8001d6c + 80024ce: 0002 movs r2, r0 + 80024d0: 687b ldr r3, [r7, #4] + 80024d2: 189b adds r3, r3, r2 + 80024d4: 60fb str r3, [r7, #12] while ((FLASH->SR & FLASH_SR_CFGBSY) != 0x00U) - 80024f6: e007 b.n 8002508 + 80024d6: e007 b.n 80024e8 { if (HAL_GetTick() >= timeout) - 80024f8: f7ff fc48 bl 8001d8c - 80024fc: 0002 movs r2, r0 - 80024fe: 68fb ldr r3, [r7, #12] - 8002500: 4293 cmp r3, r2 - 8002502: d801 bhi.n 8002508 + 80024d8: f7ff fc48 bl 8001d6c + 80024dc: 0002 movs r2, r0 + 80024de: 68fb ldr r3, [r7, #12] + 80024e0: 4293 cmp r3, r2 + 80024e2: d801 bhi.n 80024e8 { return HAL_TIMEOUT; - 8002504: 2303 movs r3, #3 - 8002506: e006 b.n 8002516 + 80024e4: 2303 movs r3, #3 + 80024e6: e006 b.n 80024f6 while ((FLASH->SR & FLASH_SR_CFGBSY) != 0x00U) - 8002508: 4b05 ldr r3, [pc, #20] ; (8002520 ) - 800250a: 691a ldr r2, [r3, #16] - 800250c: 2380 movs r3, #128 ; 0x80 - 800250e: 02db lsls r3, r3, #11 - 8002510: 4013 ands r3, r2 - 8002512: d1f1 bne.n 80024f8 + 80024e8: 4b05 ldr r3, [pc, #20] ; (8002500 ) + 80024ea: 691a ldr r2, [r3, #16] + 80024ec: 2380 movs r3, #128 ; 0x80 + 80024ee: 02db lsls r3, r3, #11 + 80024f0: 4013 ands r3, r2 + 80024f2: d1f1 bne.n 80024d8 } } return HAL_OK; - 8002514: 2300 movs r3, #0 + 80024f4: 2300 movs r3, #0 } - 8002516: 0018 movs r0, r3 - 8002518: 46bd mov sp, r7 - 800251a: b004 add sp, #16 - 800251c: bd80 pop {r7, pc} - 800251e: 46c0 nop ; (mov r8, r8) - 8002520: 40022000 .word 0x40022000 - 8002524: 0000c3fa .word 0x0000c3fa - 8002528: 0000c3fb .word 0x0000c3fb - 800252c: 2000023c .word 0x2000023c + 80024f6: 0018 movs r0, r3 + 80024f8: 46bd mov sp, r7 + 80024fa: b004 add sp, #16 + 80024fc: bd80 pop {r7, pc} + 80024fe: 46c0 nop ; (mov r8, r8) + 8002500: 40022000 .word 0x40022000 + 8002504: 0000c3fa .word 0x0000c3fa + 8002508: 0000c3fb .word 0x0000c3fb + 800250c: 2000023c .word 0x2000023c -08002530 : +08002510 : * @param Address Specifies the address to be programmed. * @param Data Specifies the data to be programmed. * @retval None */ static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data) { - 8002530: b5b0 push {r4, r5, r7, lr} - 8002532: b084 sub sp, #16 - 8002534: af00 add r7, sp, #0 - 8002536: 60f8 str r0, [r7, #12] - 8002538: 603a str r2, [r7, #0] - 800253a: 607b str r3, [r7, #4] + 8002510: b5b0 push {r4, r5, r7, lr} + 8002512: b084 sub sp, #16 + 8002514: af00 add r7, sp, #0 + 8002516: 60f8 str r0, [r7, #12] + 8002518: 603a str r2, [r7, #0] + 800251a: 607b str r3, [r7, #4] /* Set PG bit */ SET_BIT(FLASH->CR, FLASH_CR_PG); - 800253c: 4b0b ldr r3, [pc, #44] ; (800256c ) - 800253e: 695a ldr r2, [r3, #20] - 8002540: 4b0a ldr r3, [pc, #40] ; (800256c ) - 8002542: 2101 movs r1, #1 - 8002544: 430a orrs r2, r1 - 8002546: 615a str r2, [r3, #20] + 800251c: 4b0b ldr r3, [pc, #44] ; (800254c ) + 800251e: 695a ldr r2, [r3, #20] + 8002520: 4b0a ldr r3, [pc, #40] ; (800254c ) + 8002522: 2101 movs r1, #1 + 8002524: 430a orrs r2, r1 + 8002526: 615a str r2, [r3, #20] /* Program first word */ *(uint32_t *)Address = (uint32_t)Data; - 8002548: 68fb ldr r3, [r7, #12] - 800254a: 683a ldr r2, [r7, #0] - 800254c: 601a str r2, [r3, #0] + 8002528: 68fb ldr r3, [r7, #12] + 800252a: 683a ldr r2, [r7, #0] + 800252c: 601a str r2, [r3, #0] so that all instructions following the ISB are fetched from cache or memory, after the instruction has been completed. */ __STATIC_FORCEINLINE void __ISB(void) { __ASM volatile ("isb 0xF":::"memory"); - 800254e: f3bf 8f6f isb sy + 800252e: f3bf 8f6f isb sy } - 8002552: 46c0 nop ; (mov r8, r8) + 8002532: 46c0 nop ; (mov r8, r8) /* Barrier to ensure programming is performed in 2 steps, in right order (independently of compiler optimization behavior) */ __ISB(); /* Program second word */ *(uint32_t *)(Address + 4U) = (uint32_t)(Data >> 32U); - 8002554: 687b ldr r3, [r7, #4] - 8002556: 001c movs r4, r3 - 8002558: 2300 movs r3, #0 - 800255a: 001d movs r5, r3 - 800255c: 68fb ldr r3, [r7, #12] - 800255e: 3304 adds r3, #4 - 8002560: 0022 movs r2, r4 - 8002562: 601a str r2, [r3, #0] + 8002534: 687b ldr r3, [r7, #4] + 8002536: 001c movs r4, r3 + 8002538: 2300 movs r3, #0 + 800253a: 001d movs r5, r3 + 800253c: 68fb ldr r3, [r7, #12] + 800253e: 3304 adds r3, #4 + 8002540: 0022 movs r2, r4 + 8002542: 601a str r2, [r3, #0] } - 8002564: 46c0 nop ; (mov r8, r8) - 8002566: 46bd mov sp, r7 - 8002568: b004 add sp, #16 - 800256a: bdb0 pop {r4, r5, r7, pc} - 800256c: 40022000 .word 0x40022000 + 8002544: 46c0 nop ; (mov r8, r8) + 8002546: 46bd mov sp, r7 + 8002548: b004 add sp, #16 + 800254a: bdb0 pop {r4, r5, r7, pc} + 800254c: 40022000 .word 0x40022000 -08002570 : +08002550 : * information on faulty page in case of error (0xFFFFFFFF means that all * the pages have been correctly erased) * @retval HAL Status */ HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError) { - 8002570: b5b0 push {r4, r5, r7, lr} - 8002572: b084 sub sp, #16 - 8002574: af00 add r7, sp, #0 - 8002576: 6078 str r0, [r7, #4] - 8002578: 6039 str r1, [r7, #0] + 8002550: b5b0 push {r4, r5, r7, lr} + 8002552: b084 sub sp, #16 + 8002554: af00 add r7, sp, #0 + 8002556: 6078 str r0, [r7, #4] + 8002558: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); /* Process Locked */ __HAL_LOCK(&pFlash); - 800257a: 4b35 ldr r3, [pc, #212] ; (8002650 ) - 800257c: 781b ldrb r3, [r3, #0] - 800257e: 2b01 cmp r3, #1 - 8002580: d101 bne.n 8002586 - 8002582: 2302 movs r3, #2 - 8002584: e05f b.n 8002646 - 8002586: 4b32 ldr r3, [pc, #200] ; (8002650 ) - 8002588: 2201 movs r2, #1 - 800258a: 701a strb r2, [r3, #0] + 800255a: 4b35 ldr r3, [pc, #212] ; (8002630 ) + 800255c: 781b ldrb r3, [r3, #0] + 800255e: 2b01 cmp r3, #1 + 8002560: d101 bne.n 8002566 + 8002562: 2302 movs r3, #2 + 8002564: e05f b.n 8002626 + 8002566: 4b32 ldr r3, [pc, #200] ; (8002630 ) + 8002568: 2201 movs r2, #1 + 800256a: 701a strb r2, [r3, #0] /* Reset error code */ pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; - 800258c: 4b30 ldr r3, [pc, #192] ; (8002650 ) - 800258e: 2200 movs r2, #0 - 8002590: 605a str r2, [r3, #4] + 800256c: 4b30 ldr r3, [pc, #192] ; (8002630 ) + 800256e: 2200 movs r2, #0 + 8002570: 605a str r2, [r3, #4] /* Wait for last operation to be completed */ status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); - 8002592: 250f movs r5, #15 - 8002594: 197c adds r4, r7, r5 - 8002596: 23fa movs r3, #250 ; 0xfa - 8002598: 009b lsls r3, r3, #2 - 800259a: 0018 movs r0, r3 - 800259c: f7ff ff7a bl 8002494 - 80025a0: 0003 movs r3, r0 - 80025a2: 7023 strb r3, [r4, #0] + 8002572: 250f movs r5, #15 + 8002574: 197c adds r4, r7, r5 + 8002576: 23fa movs r3, #250 ; 0xfa + 8002578: 009b lsls r3, r3, #2 + 800257a: 0018 movs r0, r3 + 800257c: f7ff ff7a bl 8002474 + 8002580: 0003 movs r3, r0 + 8002582: 7023 strb r3, [r4, #0] if (status == HAL_OK) - 80025a4: 002c movs r4, r5 - 80025a6: 193b adds r3, r7, r4 - 80025a8: 781b ldrb r3, [r3, #0] - 80025aa: 2b00 cmp r3, #0 - 80025ac: d145 bne.n 800263a + 8002584: 002c movs r4, r5 + 8002586: 193b adds r3, r7, r4 + 8002588: 781b ldrb r3, [r3, #0] + 800258a: 2b00 cmp r3, #0 + 800258c: d145 bne.n 800261a { #if !defined(FLASH_DBANK_SUPPORT) /* For single bank product force Banks to Bank 1 */ pEraseInit->Banks = FLASH_BANK_1; - 80025ae: 687b ldr r3, [r7, #4] - 80025b0: 2204 movs r2, #4 - 80025b2: 605a str r2, [r3, #4] + 800258e: 687b ldr r3, [r7, #4] + 8002590: 2204 movs r2, #4 + 8002592: 605a str r2, [r3, #4] #endif /* FLASH_DBANK_SUPPORT */ if (pEraseInit->TypeErase == FLASH_TYPEERASE_MASS) - 80025b4: 687b ldr r3, [r7, #4] - 80025b6: 681b ldr r3, [r3, #0] - 80025b8: 2b04 cmp r3, #4 - 80025ba: d10d bne.n 80025d8 + 8002594: 687b ldr r3, [r7, #4] + 8002596: 681b ldr r3, [r3, #0] + 8002598: 2b04 cmp r3, #4 + 800259a: d10d bne.n 80025b8 { /* Proceed to Mass Erase */ FLASH_MassErase(pEraseInit->Banks); - 80025bc: 687b ldr r3, [r7, #4] - 80025be: 685b ldr r3, [r3, #4] - 80025c0: 0018 movs r0, r3 - 80025c2: f000 f849 bl 8002658 + 800259c: 687b ldr r3, [r7, #4] + 800259e: 685b ldr r3, [r3, #4] + 80025a0: 0018 movs r0, r3 + 80025a2: f000 f849 bl 8002638 /* Wait for last operation to be completed */ status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); - 80025c6: 193c adds r4, r7, r4 - 80025c8: 23fa movs r3, #250 ; 0xfa - 80025ca: 009b lsls r3, r3, #2 - 80025cc: 0018 movs r0, r3 - 80025ce: f7ff ff61 bl 8002494 - 80025d2: 0003 movs r3, r0 - 80025d4: 7023 strb r3, [r4, #0] - 80025d6: e030 b.n 800263a + 80025a6: 193c adds r4, r7, r4 + 80025a8: 23fa movs r3, #250 ; 0xfa + 80025aa: 009b lsls r3, r3, #2 + 80025ac: 0018 movs r0, r3 + 80025ae: f7ff ff61 bl 8002474 + 80025b2: 0003 movs r3, r0 + 80025b4: 7023 strb r3, [r4, #0] + 80025b6: e030 b.n 800261a } else { /*Initialization of PageError variable*/ *PageError = 0xFFFFFFFFU; - 80025d8: 683b ldr r3, [r7, #0] - 80025da: 2201 movs r2, #1 - 80025dc: 4252 negs r2, r2 - 80025de: 601a str r2, [r3, #0] + 80025b8: 683b ldr r3, [r7, #0] + 80025ba: 2201 movs r2, #1 + 80025bc: 4252 negs r2, r2 + 80025be: 601a str r2, [r3, #0] for (index = pEraseInit->Page; index < (pEraseInit->Page + pEraseInit->NbPages); index++) - 80025e0: 687b ldr r3, [r7, #4] - 80025e2: 689b ldr r3, [r3, #8] - 80025e4: 60bb str r3, [r7, #8] - 80025e6: e01a b.n 800261e + 80025c0: 687b ldr r3, [r7, #4] + 80025c2: 689b ldr r3, [r3, #8] + 80025c4: 60bb str r3, [r7, #8] + 80025c6: e01a b.n 80025fe { /* Start erase page */ FLASH_PageErase(pEraseInit->Banks, index); - 80025e8: 687b ldr r3, [r7, #4] - 80025ea: 685b ldr r3, [r3, #4] - 80025ec: 68ba ldr r2, [r7, #8] - 80025ee: 0011 movs r1, r2 - 80025f0: 0018 movs r0, r3 - 80025f2: f000 f845 bl 8002680 + 80025c8: 687b ldr r3, [r7, #4] + 80025ca: 685b ldr r3, [r3, #4] + 80025cc: 68ba ldr r2, [r7, #8] + 80025ce: 0011 movs r1, r2 + 80025d0: 0018 movs r0, r3 + 80025d2: f000 f845 bl 8002660 /* Wait for last operation to be completed */ status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); - 80025f6: 250f movs r5, #15 - 80025f8: 197c adds r4, r7, r5 - 80025fa: 23fa movs r3, #250 ; 0xfa - 80025fc: 009b lsls r3, r3, #2 - 80025fe: 0018 movs r0, r3 - 8002600: f7ff ff48 bl 8002494 - 8002604: 0003 movs r3, r0 - 8002606: 7023 strb r3, [r4, #0] + 80025d6: 250f movs r5, #15 + 80025d8: 197c adds r4, r7, r5 + 80025da: 23fa movs r3, #250 ; 0xfa + 80025dc: 009b lsls r3, r3, #2 + 80025de: 0018 movs r0, r3 + 80025e0: f7ff ff48 bl 8002474 + 80025e4: 0003 movs r3, r0 + 80025e6: 7023 strb r3, [r4, #0] if (status != HAL_OK) - 8002608: 197b adds r3, r7, r5 - 800260a: 781b ldrb r3, [r3, #0] - 800260c: 2b00 cmp r3, #0 - 800260e: d003 beq.n 8002618 + 80025e8: 197b adds r3, r7, r5 + 80025ea: 781b ldrb r3, [r3, #0] + 80025ec: 2b00 cmp r3, #0 + 80025ee: d003 beq.n 80025f8 { /* In case of error, stop erase procedure and return the faulty address */ *PageError = index; - 8002610: 683b ldr r3, [r7, #0] - 8002612: 68ba ldr r2, [r7, #8] - 8002614: 601a str r2, [r3, #0] + 80025f0: 683b ldr r3, [r7, #0] + 80025f2: 68ba ldr r2, [r7, #8] + 80025f4: 601a str r2, [r3, #0] break; - 8002616: e00a b.n 800262e + 80025f6: e00a b.n 800260e for (index = pEraseInit->Page; index < (pEraseInit->Page + pEraseInit->NbPages); index++) - 8002618: 68bb ldr r3, [r7, #8] - 800261a: 3301 adds r3, #1 - 800261c: 60bb str r3, [r7, #8] - 800261e: 687b ldr r3, [r7, #4] - 8002620: 689a ldr r2, [r3, #8] - 8002622: 687b ldr r3, [r7, #4] - 8002624: 68db ldr r3, [r3, #12] - 8002626: 18d3 adds r3, r2, r3 - 8002628: 68ba ldr r2, [r7, #8] - 800262a: 429a cmp r2, r3 - 800262c: d3dc bcc.n 80025e8 + 80025f8: 68bb ldr r3, [r7, #8] + 80025fa: 3301 adds r3, #1 + 80025fc: 60bb str r3, [r7, #8] + 80025fe: 687b ldr r3, [r7, #4] + 8002600: 689a ldr r2, [r3, #8] + 8002602: 687b ldr r3, [r7, #4] + 8002604: 68db ldr r3, [r3, #12] + 8002606: 18d3 adds r3, r2, r3 + 8002608: 68ba ldr r2, [r7, #8] + 800260a: 429a cmp r2, r3 + 800260c: d3dc bcc.n 80025c8 } } /* If operation is completed or interrupted, disable the Page Erase Bit */ CLEAR_BIT(FLASH->CR, FLASH_CR_PER); - 800262e: 4b09 ldr r3, [pc, #36] ; (8002654 ) - 8002630: 695a ldr r2, [r3, #20] - 8002632: 4b08 ldr r3, [pc, #32] ; (8002654 ) - 8002634: 2102 movs r1, #2 - 8002636: 438a bics r2, r1 - 8002638: 615a str r2, [r3, #20] + 800260e: 4b09 ldr r3, [pc, #36] ; (8002634 ) + 8002610: 695a ldr r2, [r3, #20] + 8002612: 4b08 ldr r3, [pc, #32] ; (8002634 ) + 8002614: 2102 movs r1, #2 + 8002616: 438a bics r2, r1 + 8002618: 615a str r2, [r3, #20] } } /* Process Unlocked */ __HAL_UNLOCK(&pFlash); - 800263a: 4b05 ldr r3, [pc, #20] ; (8002650 ) - 800263c: 2200 movs r2, #0 - 800263e: 701a strb r2, [r3, #0] + 800261a: 4b05 ldr r3, [pc, #20] ; (8002630 ) + 800261c: 2200 movs r2, #0 + 800261e: 701a strb r2, [r3, #0] /* return status */ return status; - 8002640: 230f movs r3, #15 - 8002642: 18fb adds r3, r7, r3 - 8002644: 781b ldrb r3, [r3, #0] + 8002620: 230f movs r3, #15 + 8002622: 18fb adds r3, r7, r3 + 8002624: 781b ldrb r3, [r3, #0] } - 8002646: 0018 movs r0, r3 - 8002648: 46bd mov sp, r7 - 800264a: b004 add sp, #16 - 800264c: bdb0 pop {r4, r5, r7, pc} - 800264e: 46c0 nop ; (mov r8, r8) - 8002650: 2000023c .word 0x2000023c - 8002654: 40022000 .word 0x40022000 + 8002626: 0018 movs r0, r3 + 8002628: 46bd mov sp, r7 + 800262a: b004 add sp, #16 + 800262c: bdb0 pop {r4, r5, r7, pc} + 800262e: 46c0 nop ; (mov r8, r8) + 8002630: 2000023c .word 0x2000023c + 8002634: 40022000 .word 0x40022000 -08002658 : +08002638 : * @arg FLASH_BANK_2: Bank2 to be erased* * @note (*) availability depends on devices * @retval None */ static void FLASH_MassErase(uint32_t Banks) { - 8002658: b580 push {r7, lr} - 800265a: b082 sub sp, #8 - 800265c: af00 add r7, sp, #0 - 800265e: 6078 str r0, [r7, #4] + 8002638: b580 push {r7, lr} + 800263a: b082 sub sp, #8 + 800263c: af00 add r7, sp, #0 + 800263e: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_FLASH_BANK(Banks)); /* Set the Mass Erase Bit and start bit */ FLASH->CR |= (FLASH_CR_STRT | Banks); - 8002660: 4b06 ldr r3, [pc, #24] ; (800267c ) - 8002662: 695a ldr r2, [r3, #20] - 8002664: 687b ldr r3, [r7, #4] - 8002666: 431a orrs r2, r3 - 8002668: 4b04 ldr r3, [pc, #16] ; (800267c ) - 800266a: 2180 movs r1, #128 ; 0x80 - 800266c: 0249 lsls r1, r1, #9 - 800266e: 430a orrs r2, r1 - 8002670: 615a str r2, [r3, #20] + 8002640: 4b06 ldr r3, [pc, #24] ; (800265c ) + 8002642: 695a ldr r2, [r3, #20] + 8002644: 687b ldr r3, [r7, #4] + 8002646: 431a orrs r2, r3 + 8002648: 4b04 ldr r3, [pc, #16] ; (800265c ) + 800264a: 2180 movs r1, #128 ; 0x80 + 800264c: 0249 lsls r1, r1, #9 + 800264e: 430a orrs r2, r1 + 8002650: 615a str r2, [r3, #20] } - 8002672: 46c0 nop ; (mov r8, r8) - 8002674: 46bd mov sp, r7 - 8002676: b002 add sp, #8 - 8002678: bd80 pop {r7, pc} - 800267a: 46c0 nop ; (mov r8, r8) - 800267c: 40022000 .word 0x40022000 + 8002652: 46c0 nop ; (mov r8, r8) + 8002654: 46bd mov sp, r7 + 8002656: b002 add sp, #8 + 8002658: bd80 pop {r7, pc} + 800265a: 46c0 nop ; (mov r8, r8) + 800265c: 40022000 .word 0x40022000 -08002680 : +08002660 : * This parameter must be a value between 0 and (max number of pages in Flash - 1) * @note (*) availability depends on devices * @retval None */ void FLASH_PageErase(uint32_t Banks, uint32_t Page) { - 8002680: b580 push {r7, lr} - 8002682: b084 sub sp, #16 - 8002684: af00 add r7, sp, #0 - 8002686: 6078 str r0, [r7, #4] - 8002688: 6039 str r1, [r7, #0] + 8002660: b580 push {r7, lr} + 8002662: b084 sub sp, #16 + 8002664: af00 add r7, sp, #0 + 8002666: 6078 str r0, [r7, #4] + 8002668: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_FLASH_BANK(Banks)); assert_param(IS_FLASH_PAGE(Page)); /* Get configuration register, then clear page number */ tmp = (FLASH->CR & ~FLASH_CR_PNB); - 800268a: 4b08 ldr r3, [pc, #32] ; (80026ac ) - 800268c: 695b ldr r3, [r3, #20] - 800268e: 4a08 ldr r2, [pc, #32] ; (80026b0 ) - 8002690: 4013 ands r3, r2 - 8002692: 60fb str r3, [r7, #12] + 800266a: 4b08 ldr r3, [pc, #32] ; (800268c ) + 800266c: 695b ldr r3, [r3, #20] + 800266e: 4a08 ldr r2, [pc, #32] ; (8002690 ) + 8002670: 4013 ands r3, r2 + 8002672: 60fb str r3, [r7, #12] tmp &= ~FLASH_CR_BKER; } #endif /* FLASH_DBANK_SUPPORT */ /* Set page number, Page Erase bit & Start bit */ FLASH->CR = (tmp | (FLASH_CR_STRT | (Page << FLASH_CR_PNB_Pos) | FLASH_CR_PER)); - 8002694: 683b ldr r3, [r7, #0] - 8002696: 00da lsls r2, r3, #3 - 8002698: 68fb ldr r3, [r7, #12] - 800269a: 431a orrs r2, r3 - 800269c: 4b03 ldr r3, [pc, #12] ; (80026ac ) - 800269e: 4905 ldr r1, [pc, #20] ; (80026b4 ) - 80026a0: 430a orrs r2, r1 - 80026a2: 615a str r2, [r3, #20] + 8002674: 683b ldr r3, [r7, #0] + 8002676: 00da lsls r2, r3, #3 + 8002678: 68fb ldr r3, [r7, #12] + 800267a: 431a orrs r2, r3 + 800267c: 4b03 ldr r3, [pc, #12] ; (800268c ) + 800267e: 4905 ldr r1, [pc, #20] ; (8002694 ) + 8002680: 430a orrs r2, r1 + 8002682: 615a str r2, [r3, #20] } - 80026a4: 46c0 nop ; (mov r8, r8) - 80026a6: 46bd mov sp, r7 - 80026a8: b004 add sp, #16 - 80026aa: bd80 pop {r7, pc} - 80026ac: 40022000 .word 0x40022000 - 80026b0: ffffe007 .word 0xffffe007 - 80026b4: 00010002 .word 0x00010002 + 8002684: 46c0 nop ; (mov r8, r8) + 8002686: 46bd mov sp, r7 + 8002688: b004 add sp, #16 + 800268a: bd80 pop {r7, pc} + 800268c: 40022000 .word 0x40022000 + 8002690: ffffe007 .word 0xffffe007 + 8002694: 00010002 .word 0x00010002 -080026b8 : +08002698 : * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains * the configuration information for the specified GPIO peripheral. * @retval None */ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) { - 80026b8: b580 push {r7, lr} - 80026ba: b086 sub sp, #24 - 80026bc: af00 add r7, sp, #0 - 80026be: 6078 str r0, [r7, #4] - 80026c0: 6039 str r1, [r7, #0] + 8002698: b580 push {r7, lr} + 800269a: b086 sub sp, #24 + 800269c: af00 add r7, sp, #0 + 800269e: 6078 str r0, [r7, #4] + 80026a0: 6039 str r1, [r7, #0] uint32_t position = 0x00u; - 80026c2: 2300 movs r3, #0 - 80026c4: 617b str r3, [r7, #20] + 80026a2: 2300 movs r3, #0 + 80026a4: 617b str r3, [r7, #20] assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); /* Configure the port pins */ while (((GPIO_Init->Pin) >> position) != 0x00u) - 80026c6: e147 b.n 8002958 + 80026a6: e147 b.n 8002938 { /* Get current io position */ iocurrent = (GPIO_Init->Pin) & (1uL << position); - 80026c8: 683b ldr r3, [r7, #0] - 80026ca: 681b ldr r3, [r3, #0] - 80026cc: 2101 movs r1, #1 - 80026ce: 697a ldr r2, [r7, #20] - 80026d0: 4091 lsls r1, r2 - 80026d2: 000a movs r2, r1 - 80026d4: 4013 ands r3, r2 - 80026d6: 60fb str r3, [r7, #12] + 80026a8: 683b ldr r3, [r7, #0] + 80026aa: 681b ldr r3, [r3, #0] + 80026ac: 2101 movs r1, #1 + 80026ae: 697a ldr r2, [r7, #20] + 80026b0: 4091 lsls r1, r2 + 80026b2: 000a movs r2, r1 + 80026b4: 4013 ands r3, r2 + 80026b6: 60fb str r3, [r7, #12] if (iocurrent != 0x00u) - 80026d8: 68fb ldr r3, [r7, #12] - 80026da: 2b00 cmp r3, #0 - 80026dc: d100 bne.n 80026e0 - 80026de: e138 b.n 8002952 + 80026b8: 68fb ldr r3, [r7, #12] + 80026ba: 2b00 cmp r3, #0 + 80026bc: d100 bne.n 80026c0 + 80026be: e138 b.n 8002932 { /*--------------------- GPIO Mode Configuration ------------------------*/ /* In case of Output or Alternate function mode selection */ if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) - 80026e0: 683b ldr r3, [r7, #0] - 80026e2: 685b ldr r3, [r3, #4] - 80026e4: 2203 movs r2, #3 - 80026e6: 4013 ands r3, r2 - 80026e8: 2b01 cmp r3, #1 - 80026ea: d005 beq.n 80026f8 - 80026ec: 683b ldr r3, [r7, #0] - 80026ee: 685b ldr r3, [r3, #4] - 80026f0: 2203 movs r2, #3 - 80026f2: 4013 ands r3, r2 - 80026f4: 2b02 cmp r3, #2 - 80026f6: d130 bne.n 800275a + 80026c0: 683b ldr r3, [r7, #0] + 80026c2: 685b ldr r3, [r3, #4] + 80026c4: 2203 movs r2, #3 + 80026c6: 4013 ands r3, r2 + 80026c8: 2b01 cmp r3, #1 + 80026ca: d005 beq.n 80026d8 + 80026cc: 683b ldr r3, [r7, #0] + 80026ce: 685b ldr r3, [r3, #4] + 80026d0: 2203 movs r2, #3 + 80026d2: 4013 ands r3, r2 + 80026d4: 2b02 cmp r3, #2 + 80026d6: d130 bne.n 800273a { /* Check the Speed parameter */ assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); /* Configure the IO Speed */ temp = GPIOx->OSPEEDR; - 80026f8: 687b ldr r3, [r7, #4] - 80026fa: 689b ldr r3, [r3, #8] - 80026fc: 613b str r3, [r7, #16] + 80026d8: 687b ldr r3, [r7, #4] + 80026da: 689b ldr r3, [r3, #8] + 80026dc: 613b str r3, [r7, #16] temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2u)); - 80026fe: 697b ldr r3, [r7, #20] - 8002700: 005b lsls r3, r3, #1 - 8002702: 2203 movs r2, #3 - 8002704: 409a lsls r2, r3 - 8002706: 0013 movs r3, r2 - 8002708: 43da mvns r2, r3 - 800270a: 693b ldr r3, [r7, #16] - 800270c: 4013 ands r3, r2 - 800270e: 613b str r3, [r7, #16] + 80026de: 697b ldr r3, [r7, #20] + 80026e0: 005b lsls r3, r3, #1 + 80026e2: 2203 movs r2, #3 + 80026e4: 409a lsls r2, r3 + 80026e6: 0013 movs r3, r2 + 80026e8: 43da mvns r2, r3 + 80026ea: 693b ldr r3, [r7, #16] + 80026ec: 4013 ands r3, r2 + 80026ee: 613b str r3, [r7, #16] temp |= (GPIO_Init->Speed << (position * 2u)); - 8002710: 683b ldr r3, [r7, #0] - 8002712: 68da ldr r2, [r3, #12] - 8002714: 697b ldr r3, [r7, #20] - 8002716: 005b lsls r3, r3, #1 - 8002718: 409a lsls r2, r3 - 800271a: 0013 movs r3, r2 - 800271c: 693a ldr r2, [r7, #16] - 800271e: 4313 orrs r3, r2 - 8002720: 613b str r3, [r7, #16] + 80026f0: 683b ldr r3, [r7, #0] + 80026f2: 68da ldr r2, [r3, #12] + 80026f4: 697b ldr r3, [r7, #20] + 80026f6: 005b lsls r3, r3, #1 + 80026f8: 409a lsls r2, r3 + 80026fa: 0013 movs r3, r2 + 80026fc: 693a ldr r2, [r7, #16] + 80026fe: 4313 orrs r3, r2 + 8002700: 613b str r3, [r7, #16] GPIOx->OSPEEDR = temp; - 8002722: 687b ldr r3, [r7, #4] - 8002724: 693a ldr r2, [r7, #16] - 8002726: 609a str r2, [r3, #8] + 8002702: 687b ldr r3, [r7, #4] + 8002704: 693a ldr r2, [r7, #16] + 8002706: 609a str r2, [r3, #8] /* Configure the IO Output Type */ temp = GPIOx->OTYPER; - 8002728: 687b ldr r3, [r7, #4] - 800272a: 685b ldr r3, [r3, #4] - 800272c: 613b str r3, [r7, #16] + 8002708: 687b ldr r3, [r7, #4] + 800270a: 685b ldr r3, [r3, #4] + 800270c: 613b str r3, [r7, #16] temp &= ~(GPIO_OTYPER_OT0 << position) ; - 800272e: 2201 movs r2, #1 - 8002730: 697b ldr r3, [r7, #20] - 8002732: 409a lsls r2, r3 - 8002734: 0013 movs r3, r2 - 8002736: 43da mvns r2, r3 - 8002738: 693b ldr r3, [r7, #16] - 800273a: 4013 ands r3, r2 - 800273c: 613b str r3, [r7, #16] + 800270e: 2201 movs r2, #1 + 8002710: 697b ldr r3, [r7, #20] + 8002712: 409a lsls r2, r3 + 8002714: 0013 movs r3, r2 + 8002716: 43da mvns r2, r3 + 8002718: 693b ldr r3, [r7, #16] + 800271a: 4013 ands r3, r2 + 800271c: 613b str r3, [r7, #16] temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); - 800273e: 683b ldr r3, [r7, #0] - 8002740: 685b ldr r3, [r3, #4] - 8002742: 091b lsrs r3, r3, #4 - 8002744: 2201 movs r2, #1 - 8002746: 401a ands r2, r3 - 8002748: 697b ldr r3, [r7, #20] - 800274a: 409a lsls r2, r3 - 800274c: 0013 movs r3, r2 - 800274e: 693a ldr r2, [r7, #16] - 8002750: 4313 orrs r3, r2 - 8002752: 613b str r3, [r7, #16] + 800271e: 683b ldr r3, [r7, #0] + 8002720: 685b ldr r3, [r3, #4] + 8002722: 091b lsrs r3, r3, #4 + 8002724: 2201 movs r2, #1 + 8002726: 401a ands r2, r3 + 8002728: 697b ldr r3, [r7, #20] + 800272a: 409a lsls r2, r3 + 800272c: 0013 movs r3, r2 + 800272e: 693a ldr r2, [r7, #16] + 8002730: 4313 orrs r3, r2 + 8002732: 613b str r3, [r7, #16] GPIOx->OTYPER = temp; - 8002754: 687b ldr r3, [r7, #4] - 8002756: 693a ldr r2, [r7, #16] - 8002758: 605a str r2, [r3, #4] + 8002734: 687b ldr r3, [r7, #4] + 8002736: 693a ldr r2, [r7, #16] + 8002738: 605a str r2, [r3, #4] } if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) - 800275a: 683b ldr r3, [r7, #0] - 800275c: 685b ldr r3, [r3, #4] - 800275e: 2203 movs r2, #3 - 8002760: 4013 ands r3, r2 - 8002762: 2b03 cmp r3, #3 - 8002764: d017 beq.n 8002796 + 800273a: 683b ldr r3, [r7, #0] + 800273c: 685b ldr r3, [r3, #4] + 800273e: 2203 movs r2, #3 + 8002740: 4013 ands r3, r2 + 8002742: 2b03 cmp r3, #3 + 8002744: d017 beq.n 8002776 { /* Check the Pull parameter */ assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); /* Activate the Pull-up or Pull down resistor for the current IO */ temp = GPIOx->PUPDR; - 8002766: 687b ldr r3, [r7, #4] - 8002768: 68db ldr r3, [r3, #12] - 800276a: 613b str r3, [r7, #16] + 8002746: 687b ldr r3, [r7, #4] + 8002748: 68db ldr r3, [r3, #12] + 800274a: 613b str r3, [r7, #16] temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2u)); - 800276c: 697b ldr r3, [r7, #20] - 800276e: 005b lsls r3, r3, #1 - 8002770: 2203 movs r2, #3 - 8002772: 409a lsls r2, r3 - 8002774: 0013 movs r3, r2 - 8002776: 43da mvns r2, r3 - 8002778: 693b ldr r3, [r7, #16] - 800277a: 4013 ands r3, r2 - 800277c: 613b str r3, [r7, #16] + 800274c: 697b ldr r3, [r7, #20] + 800274e: 005b lsls r3, r3, #1 + 8002750: 2203 movs r2, #3 + 8002752: 409a lsls r2, r3 + 8002754: 0013 movs r3, r2 + 8002756: 43da mvns r2, r3 + 8002758: 693b ldr r3, [r7, #16] + 800275a: 4013 ands r3, r2 + 800275c: 613b str r3, [r7, #16] temp |= ((GPIO_Init->Pull) << (position * 2u)); - 800277e: 683b ldr r3, [r7, #0] - 8002780: 689a ldr r2, [r3, #8] - 8002782: 697b ldr r3, [r7, #20] - 8002784: 005b lsls r3, r3, #1 - 8002786: 409a lsls r2, r3 - 8002788: 0013 movs r3, r2 - 800278a: 693a ldr r2, [r7, #16] - 800278c: 4313 orrs r3, r2 - 800278e: 613b str r3, [r7, #16] + 800275e: 683b ldr r3, [r7, #0] + 8002760: 689a ldr r2, [r3, #8] + 8002762: 697b ldr r3, [r7, #20] + 8002764: 005b lsls r3, r3, #1 + 8002766: 409a lsls r2, r3 + 8002768: 0013 movs r3, r2 + 800276a: 693a ldr r2, [r7, #16] + 800276c: 4313 orrs r3, r2 + 800276e: 613b str r3, [r7, #16] GPIOx->PUPDR = temp; - 8002790: 687b ldr r3, [r7, #4] - 8002792: 693a ldr r2, [r7, #16] - 8002794: 60da str r2, [r3, #12] + 8002770: 687b ldr r3, [r7, #4] + 8002772: 693a ldr r2, [r7, #16] + 8002774: 60da str r2, [r3, #12] } /* In case of Alternate function mode selection */ if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 8002796: 683b ldr r3, [r7, #0] - 8002798: 685b ldr r3, [r3, #4] - 800279a: 2203 movs r2, #3 - 800279c: 4013 ands r3, r2 - 800279e: 2b02 cmp r3, #2 - 80027a0: d123 bne.n 80027ea + 8002776: 683b ldr r3, [r7, #0] + 8002778: 685b ldr r3, [r3, #4] + 800277a: 2203 movs r2, #3 + 800277c: 4013 ands r3, r2 + 800277e: 2b02 cmp r3, #2 + 8002780: d123 bne.n 80027ca /* Check the Alternate function parameters */ assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); /* Configure Alternate function mapped with the current IO */ temp = GPIOx->AFR[position >> 3u]; - 80027a2: 697b ldr r3, [r7, #20] - 80027a4: 08da lsrs r2, r3, #3 - 80027a6: 687b ldr r3, [r7, #4] - 80027a8: 3208 adds r2, #8 - 80027aa: 0092 lsls r2, r2, #2 - 80027ac: 58d3 ldr r3, [r2, r3] - 80027ae: 613b str r3, [r7, #16] + 8002782: 697b ldr r3, [r7, #20] + 8002784: 08da lsrs r2, r3, #3 + 8002786: 687b ldr r3, [r7, #4] + 8002788: 3208 adds r2, #8 + 800278a: 0092 lsls r2, r2, #2 + 800278c: 58d3 ldr r3, [r2, r3] + 800278e: 613b str r3, [r7, #16] temp &= ~(0xFu << ((position & 0x07u) * 4u)); - 80027b0: 697b ldr r3, [r7, #20] - 80027b2: 2207 movs r2, #7 - 80027b4: 4013 ands r3, r2 - 80027b6: 009b lsls r3, r3, #2 - 80027b8: 220f movs r2, #15 - 80027ba: 409a lsls r2, r3 - 80027bc: 0013 movs r3, r2 - 80027be: 43da mvns r2, r3 - 80027c0: 693b ldr r3, [r7, #16] - 80027c2: 4013 ands r3, r2 - 80027c4: 613b str r3, [r7, #16] + 8002790: 697b ldr r3, [r7, #20] + 8002792: 2207 movs r2, #7 + 8002794: 4013 ands r3, r2 + 8002796: 009b lsls r3, r3, #2 + 8002798: 220f movs r2, #15 + 800279a: 409a lsls r2, r3 + 800279c: 0013 movs r3, r2 + 800279e: 43da mvns r2, r3 + 80027a0: 693b ldr r3, [r7, #16] + 80027a2: 4013 ands r3, r2 + 80027a4: 613b str r3, [r7, #16] temp |= ((GPIO_Init->Alternate) << ((position & 0x07u) * 4u)); - 80027c6: 683b ldr r3, [r7, #0] - 80027c8: 691a ldr r2, [r3, #16] - 80027ca: 697b ldr r3, [r7, #20] - 80027cc: 2107 movs r1, #7 - 80027ce: 400b ands r3, r1 - 80027d0: 009b lsls r3, r3, #2 - 80027d2: 409a lsls r2, r3 - 80027d4: 0013 movs r3, r2 - 80027d6: 693a ldr r2, [r7, #16] - 80027d8: 4313 orrs r3, r2 - 80027da: 613b str r3, [r7, #16] + 80027a6: 683b ldr r3, [r7, #0] + 80027a8: 691a ldr r2, [r3, #16] + 80027aa: 697b ldr r3, [r7, #20] + 80027ac: 2107 movs r1, #7 + 80027ae: 400b ands r3, r1 + 80027b0: 009b lsls r3, r3, #2 + 80027b2: 409a lsls r2, r3 + 80027b4: 0013 movs r3, r2 + 80027b6: 693a ldr r2, [r7, #16] + 80027b8: 4313 orrs r3, r2 + 80027ba: 613b str r3, [r7, #16] GPIOx->AFR[position >> 3u] = temp; - 80027dc: 697b ldr r3, [r7, #20] - 80027de: 08da lsrs r2, r3, #3 - 80027e0: 687b ldr r3, [r7, #4] - 80027e2: 3208 adds r2, #8 - 80027e4: 0092 lsls r2, r2, #2 - 80027e6: 6939 ldr r1, [r7, #16] - 80027e8: 50d1 str r1, [r2, r3] + 80027bc: 697b ldr r3, [r7, #20] + 80027be: 08da lsrs r2, r3, #3 + 80027c0: 687b ldr r3, [r7, #4] + 80027c2: 3208 adds r2, #8 + 80027c4: 0092 lsls r2, r2, #2 + 80027c6: 6939 ldr r1, [r7, #16] + 80027c8: 50d1 str r1, [r2, r3] } /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ temp = GPIOx->MODER; - 80027ea: 687b ldr r3, [r7, #4] - 80027ec: 681b ldr r3, [r3, #0] - 80027ee: 613b str r3, [r7, #16] + 80027ca: 687b ldr r3, [r7, #4] + 80027cc: 681b ldr r3, [r3, #0] + 80027ce: 613b str r3, [r7, #16] temp &= ~(GPIO_MODER_MODE0 << (position * 2u)); - 80027f0: 697b ldr r3, [r7, #20] - 80027f2: 005b lsls r3, r3, #1 - 80027f4: 2203 movs r2, #3 - 80027f6: 409a lsls r2, r3 - 80027f8: 0013 movs r3, r2 - 80027fa: 43da mvns r2, r3 - 80027fc: 693b ldr r3, [r7, #16] - 80027fe: 4013 ands r3, r2 - 8002800: 613b str r3, [r7, #16] + 80027d0: 697b ldr r3, [r7, #20] + 80027d2: 005b lsls r3, r3, #1 + 80027d4: 2203 movs r2, #3 + 80027d6: 409a lsls r2, r3 + 80027d8: 0013 movs r3, r2 + 80027da: 43da mvns r2, r3 + 80027dc: 693b ldr r3, [r7, #16] + 80027de: 4013 ands r3, r2 + 80027e0: 613b str r3, [r7, #16] temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2u)); - 8002802: 683b ldr r3, [r7, #0] - 8002804: 685b ldr r3, [r3, #4] - 8002806: 2203 movs r2, #3 - 8002808: 401a ands r2, r3 - 800280a: 697b ldr r3, [r7, #20] - 800280c: 005b lsls r3, r3, #1 - 800280e: 409a lsls r2, r3 - 8002810: 0013 movs r3, r2 - 8002812: 693a ldr r2, [r7, #16] - 8002814: 4313 orrs r3, r2 - 8002816: 613b str r3, [r7, #16] + 80027e2: 683b ldr r3, [r7, #0] + 80027e4: 685b ldr r3, [r3, #4] + 80027e6: 2203 movs r2, #3 + 80027e8: 401a ands r2, r3 + 80027ea: 697b ldr r3, [r7, #20] + 80027ec: 005b lsls r3, r3, #1 + 80027ee: 409a lsls r2, r3 + 80027f0: 0013 movs r3, r2 + 80027f2: 693a ldr r2, [r7, #16] + 80027f4: 4313 orrs r3, r2 + 80027f6: 613b str r3, [r7, #16] GPIOx->MODER = temp; - 8002818: 687b ldr r3, [r7, #4] - 800281a: 693a ldr r2, [r7, #16] - 800281c: 601a str r2, [r3, #0] + 80027f8: 687b ldr r3, [r7, #4] + 80027fa: 693a ldr r2, [r7, #16] + 80027fc: 601a str r2, [r3, #0] /*--------------------- EXTI Mode Configuration ------------------------*/ /* Configure the External Interrupt or event for the current IO */ if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u) - 800281e: 683b ldr r3, [r7, #0] - 8002820: 685a ldr r2, [r3, #4] - 8002822: 23c0 movs r3, #192 ; 0xc0 - 8002824: 029b lsls r3, r3, #10 - 8002826: 4013 ands r3, r2 - 8002828: d100 bne.n 800282c - 800282a: e092 b.n 8002952 + 80027fe: 683b ldr r3, [r7, #0] + 8002800: 685a ldr r2, [r3, #4] + 8002802: 23c0 movs r3, #192 ; 0xc0 + 8002804: 029b lsls r3, r3, #10 + 8002806: 4013 ands r3, r2 + 8002808: d100 bne.n 800280c + 800280a: e092 b.n 8002932 { temp = EXTI->EXTICR[position >> 2u]; - 800282c: 4a50 ldr r2, [pc, #320] ; (8002970 ) - 800282e: 697b ldr r3, [r7, #20] - 8002830: 089b lsrs r3, r3, #2 - 8002832: 3318 adds r3, #24 - 8002834: 009b lsls r3, r3, #2 - 8002836: 589b ldr r3, [r3, r2] - 8002838: 613b str r3, [r7, #16] + 800280c: 4a50 ldr r2, [pc, #320] ; (8002950 ) + 800280e: 697b ldr r3, [r7, #20] + 8002810: 089b lsrs r3, r3, #2 + 8002812: 3318 adds r3, #24 + 8002814: 009b lsls r3, r3, #2 + 8002816: 589b ldr r3, [r3, r2] + 8002818: 613b str r3, [r7, #16] temp &= ~(0x0FuL << (8u * (position & 0x03u))); - 800283a: 697b ldr r3, [r7, #20] - 800283c: 2203 movs r2, #3 - 800283e: 4013 ands r3, r2 - 8002840: 00db lsls r3, r3, #3 - 8002842: 220f movs r2, #15 - 8002844: 409a lsls r2, r3 - 8002846: 0013 movs r3, r2 - 8002848: 43da mvns r2, r3 - 800284a: 693b ldr r3, [r7, #16] - 800284c: 4013 ands r3, r2 - 800284e: 613b str r3, [r7, #16] + 800281a: 697b ldr r3, [r7, #20] + 800281c: 2203 movs r2, #3 + 800281e: 4013 ands r3, r2 + 8002820: 00db lsls r3, r3, #3 + 8002822: 220f movs r2, #15 + 8002824: 409a lsls r2, r3 + 8002826: 0013 movs r3, r2 + 8002828: 43da mvns r2, r3 + 800282a: 693b ldr r3, [r7, #16] + 800282c: 4013 ands r3, r2 + 800282e: 613b str r3, [r7, #16] temp |= (GPIO_GET_INDEX(GPIOx) << (8u * (position & 0x03u))); - 8002850: 687a ldr r2, [r7, #4] - 8002852: 23a0 movs r3, #160 ; 0xa0 - 8002854: 05db lsls r3, r3, #23 - 8002856: 429a cmp r2, r3 - 8002858: d013 beq.n 8002882 - 800285a: 687b ldr r3, [r7, #4] - 800285c: 4a45 ldr r2, [pc, #276] ; (8002974 ) - 800285e: 4293 cmp r3, r2 - 8002860: d00d beq.n 800287e - 8002862: 687b ldr r3, [r7, #4] - 8002864: 4a44 ldr r2, [pc, #272] ; (8002978 ) - 8002866: 4293 cmp r3, r2 - 8002868: d007 beq.n 800287a - 800286a: 687b ldr r3, [r7, #4] - 800286c: 4a43 ldr r2, [pc, #268] ; (800297c ) - 800286e: 4293 cmp r3, r2 - 8002870: d101 bne.n 8002876 - 8002872: 2303 movs r3, #3 - 8002874: e006 b.n 8002884 - 8002876: 2305 movs r3, #5 - 8002878: e004 b.n 8002884 - 800287a: 2302 movs r3, #2 - 800287c: e002 b.n 8002884 - 800287e: 2301 movs r3, #1 - 8002880: e000 b.n 8002884 - 8002882: 2300 movs r3, #0 - 8002884: 697a ldr r2, [r7, #20] - 8002886: 2103 movs r1, #3 - 8002888: 400a ands r2, r1 - 800288a: 00d2 lsls r2, r2, #3 - 800288c: 4093 lsls r3, r2 - 800288e: 693a ldr r2, [r7, #16] - 8002890: 4313 orrs r3, r2 - 8002892: 613b str r3, [r7, #16] + 8002830: 687a ldr r2, [r7, #4] + 8002832: 23a0 movs r3, #160 ; 0xa0 + 8002834: 05db lsls r3, r3, #23 + 8002836: 429a cmp r2, r3 + 8002838: d013 beq.n 8002862 + 800283a: 687b ldr r3, [r7, #4] + 800283c: 4a45 ldr r2, [pc, #276] ; (8002954 ) + 800283e: 4293 cmp r3, r2 + 8002840: d00d beq.n 800285e + 8002842: 687b ldr r3, [r7, #4] + 8002844: 4a44 ldr r2, [pc, #272] ; (8002958 ) + 8002846: 4293 cmp r3, r2 + 8002848: d007 beq.n 800285a + 800284a: 687b ldr r3, [r7, #4] + 800284c: 4a43 ldr r2, [pc, #268] ; (800295c ) + 800284e: 4293 cmp r3, r2 + 8002850: d101 bne.n 8002856 + 8002852: 2303 movs r3, #3 + 8002854: e006 b.n 8002864 + 8002856: 2305 movs r3, #5 + 8002858: e004 b.n 8002864 + 800285a: 2302 movs r3, #2 + 800285c: e002 b.n 8002864 + 800285e: 2301 movs r3, #1 + 8002860: e000 b.n 8002864 + 8002862: 2300 movs r3, #0 + 8002864: 697a ldr r2, [r7, #20] + 8002866: 2103 movs r1, #3 + 8002868: 400a ands r2, r1 + 800286a: 00d2 lsls r2, r2, #3 + 800286c: 4093 lsls r3, r2 + 800286e: 693a ldr r2, [r7, #16] + 8002870: 4313 orrs r3, r2 + 8002872: 613b str r3, [r7, #16] EXTI->EXTICR[position >> 2u] = temp; - 8002894: 4936 ldr r1, [pc, #216] ; (8002970 ) - 8002896: 697b ldr r3, [r7, #20] - 8002898: 089b lsrs r3, r3, #2 - 800289a: 3318 adds r3, #24 - 800289c: 009b lsls r3, r3, #2 - 800289e: 693a ldr r2, [r7, #16] - 80028a0: 505a str r2, [r3, r1] + 8002874: 4936 ldr r1, [pc, #216] ; (8002950 ) + 8002876: 697b ldr r3, [r7, #20] + 8002878: 089b lsrs r3, r3, #2 + 800287a: 3318 adds r3, #24 + 800287c: 009b lsls r3, r3, #2 + 800287e: 693a ldr r2, [r7, #16] + 8002880: 505a str r2, [r3, r1] /* Clear Rising Falling edge configuration */ temp = EXTI->RTSR1; - 80028a2: 4b33 ldr r3, [pc, #204] ; (8002970 ) - 80028a4: 681b ldr r3, [r3, #0] - 80028a6: 613b str r3, [r7, #16] + 8002882: 4b33 ldr r3, [pc, #204] ; (8002950 ) + 8002884: 681b ldr r3, [r3, #0] + 8002886: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 80028a8: 68fb ldr r3, [r7, #12] - 80028aa: 43da mvns r2, r3 - 80028ac: 693b ldr r3, [r7, #16] - 80028ae: 4013 ands r3, r2 - 80028b0: 613b str r3, [r7, #16] + 8002888: 68fb ldr r3, [r7, #12] + 800288a: 43da mvns r2, r3 + 800288c: 693b ldr r3, [r7, #16] + 800288e: 4013 ands r3, r2 + 8002890: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00u) - 80028b2: 683b ldr r3, [r7, #0] - 80028b4: 685a ldr r2, [r3, #4] - 80028b6: 2380 movs r3, #128 ; 0x80 - 80028b8: 035b lsls r3, r3, #13 - 80028ba: 4013 ands r3, r2 - 80028bc: d003 beq.n 80028c6 + 8002892: 683b ldr r3, [r7, #0] + 8002894: 685a ldr r2, [r3, #4] + 8002896: 2380 movs r3, #128 ; 0x80 + 8002898: 035b lsls r3, r3, #13 + 800289a: 4013 ands r3, r2 + 800289c: d003 beq.n 80028a6 { temp |= iocurrent; - 80028be: 693a ldr r2, [r7, #16] - 80028c0: 68fb ldr r3, [r7, #12] - 80028c2: 4313 orrs r3, r2 - 80028c4: 613b str r3, [r7, #16] + 800289e: 693a ldr r2, [r7, #16] + 80028a0: 68fb ldr r3, [r7, #12] + 80028a2: 4313 orrs r3, r2 + 80028a4: 613b str r3, [r7, #16] } EXTI->RTSR1 = temp; - 80028c6: 4b2a ldr r3, [pc, #168] ; (8002970 ) - 80028c8: 693a ldr r2, [r7, #16] - 80028ca: 601a str r2, [r3, #0] + 80028a6: 4b2a ldr r3, [pc, #168] ; (8002950 ) + 80028a8: 693a ldr r2, [r7, #16] + 80028aa: 601a str r2, [r3, #0] temp = EXTI->FTSR1; - 80028cc: 4b28 ldr r3, [pc, #160] ; (8002970 ) - 80028ce: 685b ldr r3, [r3, #4] - 80028d0: 613b str r3, [r7, #16] + 80028ac: 4b28 ldr r3, [pc, #160] ; (8002950 ) + 80028ae: 685b ldr r3, [r3, #4] + 80028b0: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 80028d2: 68fb ldr r3, [r7, #12] - 80028d4: 43da mvns r2, r3 - 80028d6: 693b ldr r3, [r7, #16] - 80028d8: 4013 ands r3, r2 - 80028da: 613b str r3, [r7, #16] + 80028b2: 68fb ldr r3, [r7, #12] + 80028b4: 43da mvns r2, r3 + 80028b6: 693b ldr r3, [r7, #16] + 80028b8: 4013 ands r3, r2 + 80028ba: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00u) - 80028dc: 683b ldr r3, [r7, #0] - 80028de: 685a ldr r2, [r3, #4] - 80028e0: 2380 movs r3, #128 ; 0x80 - 80028e2: 039b lsls r3, r3, #14 - 80028e4: 4013 ands r3, r2 - 80028e6: d003 beq.n 80028f0 + 80028bc: 683b ldr r3, [r7, #0] + 80028be: 685a ldr r2, [r3, #4] + 80028c0: 2380 movs r3, #128 ; 0x80 + 80028c2: 039b lsls r3, r3, #14 + 80028c4: 4013 ands r3, r2 + 80028c6: d003 beq.n 80028d0 { temp |= iocurrent; - 80028e8: 693a ldr r2, [r7, #16] - 80028ea: 68fb ldr r3, [r7, #12] - 80028ec: 4313 orrs r3, r2 - 80028ee: 613b str r3, [r7, #16] + 80028c8: 693a ldr r2, [r7, #16] + 80028ca: 68fb ldr r3, [r7, #12] + 80028cc: 4313 orrs r3, r2 + 80028ce: 613b str r3, [r7, #16] } EXTI->FTSR1 = temp; - 80028f0: 4b1f ldr r3, [pc, #124] ; (8002970 ) - 80028f2: 693a ldr r2, [r7, #16] - 80028f4: 605a str r2, [r3, #4] + 80028d0: 4b1f ldr r3, [pc, #124] ; (8002950 ) + 80028d2: 693a ldr r2, [r7, #16] + 80028d4: 605a str r2, [r3, #4] /* Clear EXTI line configuration */ temp = EXTI->EMR1; - 80028f6: 4a1e ldr r2, [pc, #120] ; (8002970 ) - 80028f8: 2384 movs r3, #132 ; 0x84 - 80028fa: 58d3 ldr r3, [r2, r3] - 80028fc: 613b str r3, [r7, #16] + 80028d6: 4a1e ldr r2, [pc, #120] ; (8002950 ) + 80028d8: 2384 movs r3, #132 ; 0x84 + 80028da: 58d3 ldr r3, [r2, r3] + 80028dc: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 80028fe: 68fb ldr r3, [r7, #12] - 8002900: 43da mvns r2, r3 - 8002902: 693b ldr r3, [r7, #16] - 8002904: 4013 ands r3, r2 - 8002906: 613b str r3, [r7, #16] + 80028de: 68fb ldr r3, [r7, #12] + 80028e0: 43da mvns r2, r3 + 80028e2: 693b ldr r3, [r7, #16] + 80028e4: 4013 ands r3, r2 + 80028e6: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & EXTI_EVT) != 0x00u) - 8002908: 683b ldr r3, [r7, #0] - 800290a: 685a ldr r2, [r3, #4] - 800290c: 2380 movs r3, #128 ; 0x80 - 800290e: 029b lsls r3, r3, #10 - 8002910: 4013 ands r3, r2 - 8002912: d003 beq.n 800291c + 80028e8: 683b ldr r3, [r7, #0] + 80028ea: 685a ldr r2, [r3, #4] + 80028ec: 2380 movs r3, #128 ; 0x80 + 80028ee: 029b lsls r3, r3, #10 + 80028f0: 4013 ands r3, r2 + 80028f2: d003 beq.n 80028fc { temp |= iocurrent; - 8002914: 693a ldr r2, [r7, #16] - 8002916: 68fb ldr r3, [r7, #12] - 8002918: 4313 orrs r3, r2 - 800291a: 613b str r3, [r7, #16] + 80028f4: 693a ldr r2, [r7, #16] + 80028f6: 68fb ldr r3, [r7, #12] + 80028f8: 4313 orrs r3, r2 + 80028fa: 613b str r3, [r7, #16] } EXTI->EMR1 = temp; - 800291c: 4914 ldr r1, [pc, #80] ; (8002970 ) - 800291e: 2284 movs r2, #132 ; 0x84 - 8002920: 693b ldr r3, [r7, #16] - 8002922: 508b str r3, [r1, r2] + 80028fc: 4914 ldr r1, [pc, #80] ; (8002950 ) + 80028fe: 2284 movs r2, #132 ; 0x84 + 8002900: 693b ldr r3, [r7, #16] + 8002902: 508b str r3, [r1, r2] temp = EXTI->IMR1; - 8002924: 4a12 ldr r2, [pc, #72] ; (8002970 ) - 8002926: 2380 movs r3, #128 ; 0x80 - 8002928: 58d3 ldr r3, [r2, r3] - 800292a: 613b str r3, [r7, #16] + 8002904: 4a12 ldr r2, [pc, #72] ; (8002950 ) + 8002906: 2380 movs r3, #128 ; 0x80 + 8002908: 58d3 ldr r3, [r2, r3] + 800290a: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 800292c: 68fb ldr r3, [r7, #12] - 800292e: 43da mvns r2, r3 - 8002930: 693b ldr r3, [r7, #16] - 8002932: 4013 ands r3, r2 - 8002934: 613b str r3, [r7, #16] + 800290c: 68fb ldr r3, [r7, #12] + 800290e: 43da mvns r2, r3 + 8002910: 693b ldr r3, [r7, #16] + 8002912: 4013 ands r3, r2 + 8002914: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & EXTI_IT) != 0x00u) - 8002936: 683b ldr r3, [r7, #0] - 8002938: 685a ldr r2, [r3, #4] - 800293a: 2380 movs r3, #128 ; 0x80 - 800293c: 025b lsls r3, r3, #9 - 800293e: 4013 ands r3, r2 - 8002940: d003 beq.n 800294a + 8002916: 683b ldr r3, [r7, #0] + 8002918: 685a ldr r2, [r3, #4] + 800291a: 2380 movs r3, #128 ; 0x80 + 800291c: 025b lsls r3, r3, #9 + 800291e: 4013 ands r3, r2 + 8002920: d003 beq.n 800292a { temp |= iocurrent; - 8002942: 693a ldr r2, [r7, #16] - 8002944: 68fb ldr r3, [r7, #12] - 8002946: 4313 orrs r3, r2 - 8002948: 613b str r3, [r7, #16] + 8002922: 693a ldr r2, [r7, #16] + 8002924: 68fb ldr r3, [r7, #12] + 8002926: 4313 orrs r3, r2 + 8002928: 613b str r3, [r7, #16] } EXTI->IMR1 = temp; - 800294a: 4909 ldr r1, [pc, #36] ; (8002970 ) - 800294c: 2280 movs r2, #128 ; 0x80 - 800294e: 693b ldr r3, [r7, #16] - 8002950: 508b str r3, [r1, r2] + 800292a: 4909 ldr r1, [pc, #36] ; (8002950 ) + 800292c: 2280 movs r2, #128 ; 0x80 + 800292e: 693b ldr r3, [r7, #16] + 8002930: 508b str r3, [r1, r2] } } position++; - 8002952: 697b ldr r3, [r7, #20] - 8002954: 3301 adds r3, #1 - 8002956: 617b str r3, [r7, #20] + 8002932: 697b ldr r3, [r7, #20] + 8002934: 3301 adds r3, #1 + 8002936: 617b str r3, [r7, #20] while (((GPIO_Init->Pin) >> position) != 0x00u) - 8002958: 683b ldr r3, [r7, #0] - 800295a: 681a ldr r2, [r3, #0] - 800295c: 697b ldr r3, [r7, #20] - 800295e: 40da lsrs r2, r3 - 8002960: 1e13 subs r3, r2, #0 - 8002962: d000 beq.n 8002966 - 8002964: e6b0 b.n 80026c8 + 8002938: 683b ldr r3, [r7, #0] + 800293a: 681a ldr r2, [r3, #0] + 800293c: 697b ldr r3, [r7, #20] + 800293e: 40da lsrs r2, r3 + 8002940: 1e13 subs r3, r2, #0 + 8002942: d000 beq.n 8002946 + 8002944: e6b0 b.n 80026a8 } } - 8002966: 46c0 nop ; (mov r8, r8) - 8002968: 46c0 nop ; (mov r8, r8) - 800296a: 46bd mov sp, r7 - 800296c: b006 add sp, #24 - 800296e: bd80 pop {r7, pc} - 8002970: 40021800 .word 0x40021800 - 8002974: 50000400 .word 0x50000400 - 8002978: 50000800 .word 0x50000800 - 800297c: 50000c00 .word 0x50000c00 + 8002946: 46c0 nop ; (mov r8, r8) + 8002948: 46c0 nop ; (mov r8, r8) + 800294a: 46bd mov sp, r7 + 800294c: b006 add sp, #24 + 800294e: bd80 pop {r7, pc} + 8002950: 40021800 .word 0x40021800 + 8002954: 50000400 .word 0x50000400 + 8002958: 50000800 .word 0x50000800 + 800295c: 50000c00 .word 0x50000c00 -08002980 : +08002960 : * @arg GPIO_PIN_RESET: to clear the port pin * @arg GPIO_PIN_SET: to set the port pin * @retval None */ void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) { - 8002980: b580 push {r7, lr} - 8002982: b082 sub sp, #8 - 8002984: af00 add r7, sp, #0 - 8002986: 6078 str r0, [r7, #4] - 8002988: 0008 movs r0, r1 - 800298a: 0011 movs r1, r2 - 800298c: 1cbb adds r3, r7, #2 - 800298e: 1c02 adds r2, r0, #0 - 8002990: 801a strh r2, [r3, #0] - 8002992: 1c7b adds r3, r7, #1 - 8002994: 1c0a adds r2, r1, #0 - 8002996: 701a strb r2, [r3, #0] + 8002960: b580 push {r7, lr} + 8002962: b082 sub sp, #8 + 8002964: af00 add r7, sp, #0 + 8002966: 6078 str r0, [r7, #4] + 8002968: 0008 movs r0, r1 + 800296a: 0011 movs r1, r2 + 800296c: 1cbb adds r3, r7, #2 + 800296e: 1c02 adds r2, r0, #0 + 8002970: 801a strh r2, [r3, #0] + 8002972: 1c7b adds r3, r7, #1 + 8002974: 1c0a adds r2, r1, #0 + 8002976: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); assert_param(IS_GPIO_PIN_ACTION(PinState)); if (PinState != GPIO_PIN_RESET) - 8002998: 1c7b adds r3, r7, #1 - 800299a: 781b ldrb r3, [r3, #0] - 800299c: 2b00 cmp r3, #0 - 800299e: d004 beq.n 80029aa + 8002978: 1c7b adds r3, r7, #1 + 800297a: 781b ldrb r3, [r3, #0] + 800297c: 2b00 cmp r3, #0 + 800297e: d004 beq.n 800298a { GPIOx->BSRR = (uint32_t)GPIO_Pin; - 80029a0: 1cbb adds r3, r7, #2 - 80029a2: 881a ldrh r2, [r3, #0] - 80029a4: 687b ldr r3, [r7, #4] - 80029a6: 619a str r2, [r3, #24] + 8002980: 1cbb adds r3, r7, #2 + 8002982: 881a ldrh r2, [r3, #0] + 8002984: 687b ldr r3, [r7, #4] + 8002986: 619a str r2, [r3, #24] } else { GPIOx->BRR = (uint32_t)GPIO_Pin; } } - 80029a8: e003 b.n 80029b2 + 8002988: e003 b.n 8002992 GPIOx->BRR = (uint32_t)GPIO_Pin; - 80029aa: 1cbb adds r3, r7, #2 - 80029ac: 881a ldrh r2, [r3, #0] - 80029ae: 687b ldr r3, [r7, #4] - 80029b0: 629a str r2, [r3, #40] ; 0x28 + 800298a: 1cbb adds r3, r7, #2 + 800298c: 881a ldrh r2, [r3, #0] + 800298e: 687b ldr r3, [r7, #4] + 8002990: 629a str r2, [r3, #40] ; 0x28 } - 80029b2: 46c0 nop ; (mov r8, r8) - 80029b4: 46bd mov sp, r7 - 80029b6: b002 add sp, #8 - 80029b8: bd80 pop {r7, pc} + 8002992: 46c0 nop ; (mov r8, r8) + 8002994: 46bd mov sp, r7 + 8002996: b002 add sp, #8 + 8002998: bd80 pop {r7, pc} ... -080029bc : +0800299c : * @brief Handle EXTI interrupt request. * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. * @retval None */ void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) { - 80029bc: b580 push {r7, lr} - 80029be: b082 sub sp, #8 - 80029c0: af00 add r7, sp, #0 - 80029c2: 0002 movs r2, r0 - 80029c4: 1dbb adds r3, r7, #6 - 80029c6: 801a strh r2, [r3, #0] + 800299c: b580 push {r7, lr} + 800299e: b082 sub sp, #8 + 80029a0: af00 add r7, sp, #0 + 80029a2: 0002 movs r2, r0 + 80029a4: 1dbb adds r3, r7, #6 + 80029a6: 801a strh r2, [r3, #0] /* EXTI line interrupt detected */ if (__HAL_GPIO_EXTI_GET_RISING_IT(GPIO_Pin) != 0x00u) - 80029c8: 4b10 ldr r3, [pc, #64] ; (8002a0c ) - 80029ca: 68db ldr r3, [r3, #12] - 80029cc: 1dba adds r2, r7, #6 - 80029ce: 8812 ldrh r2, [r2, #0] - 80029d0: 4013 ands r3, r2 - 80029d2: d008 beq.n 80029e6 + 80029a8: 4b10 ldr r3, [pc, #64] ; (80029ec ) + 80029aa: 68db ldr r3, [r3, #12] + 80029ac: 1dba adds r2, r7, #6 + 80029ae: 8812 ldrh r2, [r2, #0] + 80029b0: 4013 ands r3, r2 + 80029b2: d008 beq.n 80029c6 { __HAL_GPIO_EXTI_CLEAR_RISING_IT(GPIO_Pin); - 80029d4: 4b0d ldr r3, [pc, #52] ; (8002a0c ) - 80029d6: 1dba adds r2, r7, #6 - 80029d8: 8812 ldrh r2, [r2, #0] - 80029da: 60da str r2, [r3, #12] + 80029b4: 4b0d ldr r3, [pc, #52] ; (80029ec ) + 80029b6: 1dba adds r2, r7, #6 + 80029b8: 8812 ldrh r2, [r2, #0] + 80029ba: 60da str r2, [r3, #12] HAL_GPIO_EXTI_Rising_Callback(GPIO_Pin); - 80029dc: 1dbb adds r3, r7, #6 - 80029de: 881b ldrh r3, [r3, #0] - 80029e0: 0018 movs r0, r3 - 80029e2: f7fe fe9f bl 8001724 + 80029bc: 1dbb adds r3, r7, #6 + 80029be: 881b ldrh r3, [r3, #0] + 80029c0: 0018 movs r0, r3 + 80029c2: f7fe fe9f bl 8001704 } if (__HAL_GPIO_EXTI_GET_FALLING_IT(GPIO_Pin) != 0x00u) - 80029e6: 4b09 ldr r3, [pc, #36] ; (8002a0c ) - 80029e8: 691b ldr r3, [r3, #16] - 80029ea: 1dba adds r2, r7, #6 - 80029ec: 8812 ldrh r2, [r2, #0] - 80029ee: 4013 ands r3, r2 - 80029f0: d008 beq.n 8002a04 + 80029c6: 4b09 ldr r3, [pc, #36] ; (80029ec ) + 80029c8: 691b ldr r3, [r3, #16] + 80029ca: 1dba adds r2, r7, #6 + 80029cc: 8812 ldrh r2, [r2, #0] + 80029ce: 4013 ands r3, r2 + 80029d0: d008 beq.n 80029e4 { __HAL_GPIO_EXTI_CLEAR_FALLING_IT(GPIO_Pin); - 80029f2: 4b06 ldr r3, [pc, #24] ; (8002a0c ) - 80029f4: 1dba adds r2, r7, #6 - 80029f6: 8812 ldrh r2, [r2, #0] - 80029f8: 611a str r2, [r3, #16] + 80029d2: 4b06 ldr r3, [pc, #24] ; (80029ec ) + 80029d4: 1dba adds r2, r7, #6 + 80029d6: 8812 ldrh r2, [r2, #0] + 80029d8: 611a str r2, [r3, #16] HAL_GPIO_EXTI_Falling_Callback(GPIO_Pin); - 80029fa: 1dbb adds r3, r7, #6 - 80029fc: 881b ldrh r3, [r3, #0] - 80029fe: 0018 movs r0, r3 - 8002a00: f7fe feaa bl 8001758 + 80029da: 1dbb adds r3, r7, #6 + 80029dc: 881b ldrh r3, [r3, #0] + 80029de: 0018 movs r0, r3 + 80029e0: f7fe feaa bl 8001738 } } - 8002a04: 46c0 nop ; (mov r8, r8) - 8002a06: 46bd mov sp, r7 - 8002a08: b002 add sp, #8 - 8002a0a: bd80 pop {r7, pc} - 8002a0c: 40021800 .word 0x40021800 + 80029e4: 46c0 nop ; (mov r8, r8) + 80029e6: 46bd mov sp, r7 + 80029e8: b002 add sp, #8 + 80029ea: bd80 pop {r7, pc} + 80029ec: 40021800 .word 0x40021800 -08002a10 : +080029f0 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) { - 8002a10: b580 push {r7, lr} - 8002a12: b082 sub sp, #8 - 8002a14: af00 add r7, sp, #0 - 8002a16: 6078 str r0, [r7, #4] + 80029f0: b580 push {r7, lr} + 80029f2: b082 sub sp, #8 + 80029f4: af00 add r7, sp, #0 + 80029f6: 6078 str r0, [r7, #4] /* Check the I2C handle allocation */ if (hi2c == NULL) - 8002a18: 687b ldr r3, [r7, #4] - 8002a1a: 2b00 cmp r3, #0 - 8002a1c: d101 bne.n 8002a22 + 80029f8: 687b ldr r3, [r7, #4] + 80029fa: 2b00 cmp r3, #0 + 80029fc: d101 bne.n 8002a02 { return HAL_ERROR; - 8002a1e: 2301 movs r3, #1 - 8002a20: e082 b.n 8002b28 + 80029fe: 2301 movs r3, #1 + 8002a00: e082 b.n 8002b08 assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); if (hi2c->State == HAL_I2C_STATE_RESET) - 8002a22: 687b ldr r3, [r7, #4] - 8002a24: 2241 movs r2, #65 ; 0x41 - 8002a26: 5c9b ldrb r3, [r3, r2] - 8002a28: b2db uxtb r3, r3 - 8002a2a: 2b00 cmp r3, #0 - 8002a2c: d107 bne.n 8002a3e + 8002a02: 687b ldr r3, [r7, #4] + 8002a04: 2241 movs r2, #65 ; 0x41 + 8002a06: 5c9b ldrb r3, [r3, r2] + 8002a08: b2db uxtb r3, r3 + 8002a0a: 2b00 cmp r3, #0 + 8002a0c: d107 bne.n 8002a1e { /* Allocate lock resource and initialize it */ hi2c->Lock = HAL_UNLOCKED; - 8002a2e: 687b ldr r3, [r7, #4] - 8002a30: 2240 movs r2, #64 ; 0x40 - 8002a32: 2100 movs r1, #0 - 8002a34: 5499 strb r1, [r3, r2] + 8002a0e: 687b ldr r3, [r7, #4] + 8002a10: 2240 movs r2, #64 ; 0x40 + 8002a12: 2100 movs r1, #0 + 8002a14: 5499 strb r1, [r3, r2] /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ hi2c->MspInitCallback(hi2c); #else /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ HAL_I2C_MspInit(hi2c); - 8002a36: 687b ldr r3, [r7, #4] - 8002a38: 0018 movs r0, r3 - 8002a3a: f7fe ffc1 bl 80019c0 + 8002a16: 687b ldr r3, [r7, #4] + 8002a18: 0018 movs r0, r3 + 8002a1a: f7fe ffc1 bl 80019a0 #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } hi2c->State = HAL_I2C_STATE_BUSY; - 8002a3e: 687b ldr r3, [r7, #4] - 8002a40: 2241 movs r2, #65 ; 0x41 - 8002a42: 2124 movs r1, #36 ; 0x24 - 8002a44: 5499 strb r1, [r3, r2] + 8002a1e: 687b ldr r3, [r7, #4] + 8002a20: 2241 movs r2, #65 ; 0x41 + 8002a22: 2124 movs r1, #36 ; 0x24 + 8002a24: 5499 strb r1, [r3, r2] /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8002a46: 687b ldr r3, [r7, #4] - 8002a48: 681b ldr r3, [r3, #0] - 8002a4a: 681a ldr r2, [r3, #0] - 8002a4c: 687b ldr r3, [r7, #4] - 8002a4e: 681b ldr r3, [r3, #0] - 8002a50: 2101 movs r1, #1 - 8002a52: 438a bics r2, r1 - 8002a54: 601a str r2, [r3, #0] + 8002a26: 687b ldr r3, [r7, #4] + 8002a28: 681b ldr r3, [r3, #0] + 8002a2a: 681a ldr r2, [r3, #0] + 8002a2c: 687b ldr r3, [r7, #4] + 8002a2e: 681b ldr r3, [r3, #0] + 8002a30: 2101 movs r1, #1 + 8002a32: 438a bics r2, r1 + 8002a34: 601a str r2, [r3, #0] /*---------------------------- I2Cx TIMINGR Configuration ------------------*/ /* Configure I2Cx: Frequency range */ hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; - 8002a56: 687b ldr r3, [r7, #4] - 8002a58: 685a ldr r2, [r3, #4] - 8002a5a: 687b ldr r3, [r7, #4] - 8002a5c: 681b ldr r3, [r3, #0] - 8002a5e: 4934 ldr r1, [pc, #208] ; (8002b30 ) - 8002a60: 400a ands r2, r1 - 8002a62: 611a str r2, [r3, #16] + 8002a36: 687b ldr r3, [r7, #4] + 8002a38: 685a ldr r2, [r3, #4] + 8002a3a: 687b ldr r3, [r7, #4] + 8002a3c: 681b ldr r3, [r3, #0] + 8002a3e: 4934 ldr r1, [pc, #208] ; (8002b10 ) + 8002a40: 400a ands r2, r1 + 8002a42: 611a str r2, [r3, #16] /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ /* Disable Own Address1 before set the Own Address1 configuration */ hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; - 8002a64: 687b ldr r3, [r7, #4] - 8002a66: 681b ldr r3, [r3, #0] - 8002a68: 689a ldr r2, [r3, #8] - 8002a6a: 687b ldr r3, [r7, #4] - 8002a6c: 681b ldr r3, [r3, #0] - 8002a6e: 4931 ldr r1, [pc, #196] ; (8002b34 ) - 8002a70: 400a ands r2, r1 - 8002a72: 609a str r2, [r3, #8] + 8002a44: 687b ldr r3, [r7, #4] + 8002a46: 681b ldr r3, [r3, #0] + 8002a48: 689a ldr r2, [r3, #8] + 8002a4a: 687b ldr r3, [r7, #4] + 8002a4c: 681b ldr r3, [r3, #0] + 8002a4e: 4931 ldr r1, [pc, #196] ; (8002b14 ) + 8002a50: 400a ands r2, r1 + 8002a52: 609a str r2, [r3, #8] /* Configure I2Cx: Own Address1 and ack own address1 mode */ if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) - 8002a74: 687b ldr r3, [r7, #4] - 8002a76: 68db ldr r3, [r3, #12] - 8002a78: 2b01 cmp r3, #1 - 8002a7a: d108 bne.n 8002a8e + 8002a54: 687b ldr r3, [r7, #4] + 8002a56: 68db ldr r3, [r3, #12] + 8002a58: 2b01 cmp r3, #1 + 8002a5a: d108 bne.n 8002a6e { hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); - 8002a7c: 687b ldr r3, [r7, #4] - 8002a7e: 689a ldr r2, [r3, #8] - 8002a80: 687b ldr r3, [r7, #4] - 8002a82: 681b ldr r3, [r3, #0] - 8002a84: 2180 movs r1, #128 ; 0x80 - 8002a86: 0209 lsls r1, r1, #8 - 8002a88: 430a orrs r2, r1 - 8002a8a: 609a str r2, [r3, #8] - 8002a8c: e007 b.n 8002a9e + 8002a5c: 687b ldr r3, [r7, #4] + 8002a5e: 689a ldr r2, [r3, #8] + 8002a60: 687b ldr r3, [r7, #4] + 8002a62: 681b ldr r3, [r3, #0] + 8002a64: 2180 movs r1, #128 ; 0x80 + 8002a66: 0209 lsls r1, r1, #8 + 8002a68: 430a orrs r2, r1 + 8002a6a: 609a str r2, [r3, #8] + 8002a6c: e007 b.n 8002a7e } else /* I2C_ADDRESSINGMODE_10BIT */ { hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); - 8002a8e: 687b ldr r3, [r7, #4] - 8002a90: 689a ldr r2, [r3, #8] - 8002a92: 687b ldr r3, [r7, #4] - 8002a94: 681b ldr r3, [r3, #0] - 8002a96: 2184 movs r1, #132 ; 0x84 - 8002a98: 0209 lsls r1, r1, #8 - 8002a9a: 430a orrs r2, r1 - 8002a9c: 609a str r2, [r3, #8] + 8002a6e: 687b ldr r3, [r7, #4] + 8002a70: 689a ldr r2, [r3, #8] + 8002a72: 687b ldr r3, [r7, #4] + 8002a74: 681b ldr r3, [r3, #0] + 8002a76: 2184 movs r1, #132 ; 0x84 + 8002a78: 0209 lsls r1, r1, #8 + 8002a7a: 430a orrs r2, r1 + 8002a7c: 609a str r2, [r3, #8] } /*---------------------------- I2Cx CR2 Configuration ----------------------*/ /* Configure I2Cx: Addressing Master mode */ if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) - 8002a9e: 687b ldr r3, [r7, #4] - 8002aa0: 68db ldr r3, [r3, #12] - 8002aa2: 2b02 cmp r3, #2 - 8002aa4: d104 bne.n 8002ab0 + 8002a7e: 687b ldr r3, [r7, #4] + 8002a80: 68db ldr r3, [r3, #12] + 8002a82: 2b02 cmp r3, #2 + 8002a84: d104 bne.n 8002a90 { hi2c->Instance->CR2 = (I2C_CR2_ADD10); - 8002aa6: 687b ldr r3, [r7, #4] - 8002aa8: 681b ldr r3, [r3, #0] - 8002aaa: 2280 movs r2, #128 ; 0x80 - 8002aac: 0112 lsls r2, r2, #4 - 8002aae: 605a str r2, [r3, #4] + 8002a86: 687b ldr r3, [r7, #4] + 8002a88: 681b ldr r3, [r3, #0] + 8002a8a: 2280 movs r2, #128 ; 0x80 + 8002a8c: 0112 lsls r2, r2, #4 + 8002a8e: 605a str r2, [r3, #4] } /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */ hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); - 8002ab0: 687b ldr r3, [r7, #4] - 8002ab2: 681b ldr r3, [r3, #0] - 8002ab4: 685a ldr r2, [r3, #4] - 8002ab6: 687b ldr r3, [r7, #4] - 8002ab8: 681b ldr r3, [r3, #0] - 8002aba: 491f ldr r1, [pc, #124] ; (8002b38 ) - 8002abc: 430a orrs r2, r1 - 8002abe: 605a str r2, [r3, #4] + 8002a90: 687b ldr r3, [r7, #4] + 8002a92: 681b ldr r3, [r3, #0] + 8002a94: 685a ldr r2, [r3, #4] + 8002a96: 687b ldr r3, [r7, #4] + 8002a98: 681b ldr r3, [r3, #0] + 8002a9a: 491f ldr r1, [pc, #124] ; (8002b18 ) + 8002a9c: 430a orrs r2, r1 + 8002a9e: 605a str r2, [r3, #4] /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ /* Disable Own Address2 before set the Own Address2 configuration */ hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; - 8002ac0: 687b ldr r3, [r7, #4] - 8002ac2: 681b ldr r3, [r3, #0] - 8002ac4: 68da ldr r2, [r3, #12] - 8002ac6: 687b ldr r3, [r7, #4] - 8002ac8: 681b ldr r3, [r3, #0] - 8002aca: 491a ldr r1, [pc, #104] ; (8002b34 ) - 8002acc: 400a ands r2, r1 - 8002ace: 60da str r2, [r3, #12] + 8002aa0: 687b ldr r3, [r7, #4] + 8002aa2: 681b ldr r3, [r3, #0] + 8002aa4: 68da ldr r2, [r3, #12] + 8002aa6: 687b ldr r3, [r7, #4] + 8002aa8: 681b ldr r3, [r3, #0] + 8002aaa: 491a ldr r1, [pc, #104] ; (8002b14 ) + 8002aac: 400a ands r2, r1 + 8002aae: 60da str r2, [r3, #12] /* Configure I2Cx: Dual mode and Own Address2 */ hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ - 8002ad0: 687b ldr r3, [r7, #4] - 8002ad2: 691a ldr r2, [r3, #16] - 8002ad4: 687b ldr r3, [r7, #4] - 8002ad6: 695b ldr r3, [r3, #20] - 8002ad8: 431a orrs r2, r3 - 8002ada: 0011 movs r1, r2 + 8002ab0: 687b ldr r3, [r7, #4] + 8002ab2: 691a ldr r2, [r3, #16] + 8002ab4: 687b ldr r3, [r7, #4] + 8002ab6: 695b ldr r3, [r3, #20] + 8002ab8: 431a orrs r2, r3 + 8002aba: 0011 movs r1, r2 (hi2c->Init.OwnAddress2Masks << 8)); - 8002adc: 687b ldr r3, [r7, #4] - 8002ade: 699b ldr r3, [r3, #24] - 8002ae0: 021a lsls r2, r3, #8 + 8002abc: 687b ldr r3, [r7, #4] + 8002abe: 699b ldr r3, [r3, #24] + 8002ac0: 021a lsls r2, r3, #8 hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ - 8002ae2: 687b ldr r3, [r7, #4] - 8002ae4: 681b ldr r3, [r3, #0] - 8002ae6: 430a orrs r2, r1 - 8002ae8: 60da str r2, [r3, #12] + 8002ac2: 687b ldr r3, [r7, #4] + 8002ac4: 681b ldr r3, [r3, #0] + 8002ac6: 430a orrs r2, r1 + 8002ac8: 60da str r2, [r3, #12] /*---------------------------- I2Cx CR1 Configuration ----------------------*/ /* Configure I2Cx: Generalcall and NoStretch mode */ hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); - 8002aea: 687b ldr r3, [r7, #4] - 8002aec: 69d9 ldr r1, [r3, #28] - 8002aee: 687b ldr r3, [r7, #4] - 8002af0: 6a1a ldr r2, [r3, #32] - 8002af2: 687b ldr r3, [r7, #4] - 8002af4: 681b ldr r3, [r3, #0] - 8002af6: 430a orrs r2, r1 - 8002af8: 601a str r2, [r3, #0] + 8002aca: 687b ldr r3, [r7, #4] + 8002acc: 69d9 ldr r1, [r3, #28] + 8002ace: 687b ldr r3, [r7, #4] + 8002ad0: 6a1a ldr r2, [r3, #32] + 8002ad2: 687b ldr r3, [r7, #4] + 8002ad4: 681b ldr r3, [r3, #0] + 8002ad6: 430a orrs r2, r1 + 8002ad8: 601a str r2, [r3, #0] /* Enable the selected I2C peripheral */ __HAL_I2C_ENABLE(hi2c); - 8002afa: 687b ldr r3, [r7, #4] - 8002afc: 681b ldr r3, [r3, #0] - 8002afe: 681a ldr r2, [r3, #0] - 8002b00: 687b ldr r3, [r7, #4] - 8002b02: 681b ldr r3, [r3, #0] - 8002b04: 2101 movs r1, #1 - 8002b06: 430a orrs r2, r1 - 8002b08: 601a str r2, [r3, #0] + 8002ada: 687b ldr r3, [r7, #4] + 8002adc: 681b ldr r3, [r3, #0] + 8002ade: 681a ldr r2, [r3, #0] + 8002ae0: 687b ldr r3, [r7, #4] + 8002ae2: 681b ldr r3, [r3, #0] + 8002ae4: 2101 movs r1, #1 + 8002ae6: 430a orrs r2, r1 + 8002ae8: 601a str r2, [r3, #0] hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8002b0a: 687b ldr r3, [r7, #4] - 8002b0c: 2200 movs r2, #0 - 8002b0e: 645a str r2, [r3, #68] ; 0x44 + 8002aea: 687b ldr r3, [r7, #4] + 8002aec: 2200 movs r2, #0 + 8002aee: 645a str r2, [r3, #68] ; 0x44 hi2c->State = HAL_I2C_STATE_READY; - 8002b10: 687b ldr r3, [r7, #4] - 8002b12: 2241 movs r2, #65 ; 0x41 - 8002b14: 2120 movs r1, #32 - 8002b16: 5499 strb r1, [r3, r2] + 8002af0: 687b ldr r3, [r7, #4] + 8002af2: 2241 movs r2, #65 ; 0x41 + 8002af4: 2120 movs r1, #32 + 8002af6: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_NONE; - 8002b18: 687b ldr r3, [r7, #4] - 8002b1a: 2200 movs r2, #0 - 8002b1c: 631a str r2, [r3, #48] ; 0x30 + 8002af8: 687b ldr r3, [r7, #4] + 8002afa: 2200 movs r2, #0 + 8002afc: 631a str r2, [r3, #48] ; 0x30 hi2c->Mode = HAL_I2C_MODE_NONE; - 8002b1e: 687b ldr r3, [r7, #4] - 8002b20: 2242 movs r2, #66 ; 0x42 - 8002b22: 2100 movs r1, #0 - 8002b24: 5499 strb r1, [r3, r2] + 8002afe: 687b ldr r3, [r7, #4] + 8002b00: 2242 movs r2, #66 ; 0x42 + 8002b02: 2100 movs r1, #0 + 8002b04: 5499 strb r1, [r3, r2] return HAL_OK; - 8002b26: 2300 movs r3, #0 + 8002b06: 2300 movs r3, #0 } - 8002b28: 0018 movs r0, r3 - 8002b2a: 46bd mov sp, r7 - 8002b2c: b002 add sp, #8 - 8002b2e: bd80 pop {r7, pc} - 8002b30: f0ffffff .word 0xf0ffffff - 8002b34: ffff7fff .word 0xffff7fff - 8002b38: 02008000 .word 0x02008000 + 8002b08: 0018 movs r0, r3 + 8002b0a: 46bd mov sp, r7 + 8002b0c: b002 add sp, #8 + 8002b0e: bd80 pop {r7, pc} + 8002b10: f0ffffff .word 0xf0ffffff + 8002b14: ffff7fff .word 0xffff7fff + 8002b18: 02008000 .word 0x02008000 -08002b3c : +08002b1c : * @param Timeout Timeout duration * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) { - 8002b3c: b590 push {r4, r7, lr} - 8002b3e: b089 sub sp, #36 ; 0x24 - 8002b40: af02 add r7, sp, #8 - 8002b42: 60f8 str r0, [r7, #12] - 8002b44: 000c movs r4, r1 - 8002b46: 0010 movs r0, r2 - 8002b48: 0019 movs r1, r3 - 8002b4a: 230a movs r3, #10 - 8002b4c: 18fb adds r3, r7, r3 - 8002b4e: 1c22 adds r2, r4, #0 - 8002b50: 801a strh r2, [r3, #0] - 8002b52: 2308 movs r3, #8 - 8002b54: 18fb adds r3, r7, r3 - 8002b56: 1c02 adds r2, r0, #0 - 8002b58: 801a strh r2, [r3, #0] - 8002b5a: 1dbb adds r3, r7, #6 - 8002b5c: 1c0a adds r2, r1, #0 - 8002b5e: 801a strh r2, [r3, #0] + 8002b1c: b590 push {r4, r7, lr} + 8002b1e: b089 sub sp, #36 ; 0x24 + 8002b20: af02 add r7, sp, #8 + 8002b22: 60f8 str r0, [r7, #12] + 8002b24: 000c movs r4, r1 + 8002b26: 0010 movs r0, r2 + 8002b28: 0019 movs r1, r3 + 8002b2a: 230a movs r3, #10 + 8002b2c: 18fb adds r3, r7, r3 + 8002b2e: 1c22 adds r2, r4, #0 + 8002b30: 801a strh r2, [r3, #0] + 8002b32: 2308 movs r3, #8 + 8002b34: 18fb adds r3, r7, r3 + 8002b36: 1c02 adds r2, r0, #0 + 8002b38: 801a strh r2, [r3, #0] + 8002b3a: 1dbb adds r3, r7, #6 + 8002b3c: 1c0a adds r2, r1, #0 + 8002b3e: 801a strh r2, [r3, #0] uint32_t tickstart; /* Check the parameters */ assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); if (hi2c->State == HAL_I2C_STATE_READY) - 8002b60: 68fb ldr r3, [r7, #12] - 8002b62: 2241 movs r2, #65 ; 0x41 - 8002b64: 5c9b ldrb r3, [r3, r2] - 8002b66: b2db uxtb r3, r3 - 8002b68: 2b20 cmp r3, #32 - 8002b6a: d000 beq.n 8002b6e - 8002b6c: e10c b.n 8002d88 + 8002b40: 68fb ldr r3, [r7, #12] + 8002b42: 2241 movs r2, #65 ; 0x41 + 8002b44: 5c9b ldrb r3, [r3, r2] + 8002b46: b2db uxtb r3, r3 + 8002b48: 2b20 cmp r3, #32 + 8002b4a: d000 beq.n 8002b4e + 8002b4c: e10c b.n 8002d68 { if ((pData == NULL) || (Size == 0U)) - 8002b6e: 6abb ldr r3, [r7, #40] ; 0x28 - 8002b70: 2b00 cmp r3, #0 - 8002b72: d004 beq.n 8002b7e - 8002b74: 232c movs r3, #44 ; 0x2c - 8002b76: 18fb adds r3, r7, r3 - 8002b78: 881b ldrh r3, [r3, #0] - 8002b7a: 2b00 cmp r3, #0 - 8002b7c: d105 bne.n 8002b8a + 8002b4e: 6abb ldr r3, [r7, #40] ; 0x28 + 8002b50: 2b00 cmp r3, #0 + 8002b52: d004 beq.n 8002b5e + 8002b54: 232c movs r3, #44 ; 0x2c + 8002b56: 18fb adds r3, r7, r3 + 8002b58: 881b ldrh r3, [r3, #0] + 8002b5a: 2b00 cmp r3, #0 + 8002b5c: d105 bne.n 8002b6a { hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; - 8002b7e: 68fb ldr r3, [r7, #12] - 8002b80: 2280 movs r2, #128 ; 0x80 - 8002b82: 0092 lsls r2, r2, #2 - 8002b84: 645a str r2, [r3, #68] ; 0x44 + 8002b5e: 68fb ldr r3, [r7, #12] + 8002b60: 2280 movs r2, #128 ; 0x80 + 8002b62: 0092 lsls r2, r2, #2 + 8002b64: 645a str r2, [r3, #68] ; 0x44 return HAL_ERROR; - 8002b86: 2301 movs r3, #1 - 8002b88: e0ff b.n 8002d8a + 8002b66: 2301 movs r3, #1 + 8002b68: e0ff b.n 8002d6a } /* Process Locked */ __HAL_LOCK(hi2c); - 8002b8a: 68fb ldr r3, [r7, #12] - 8002b8c: 2240 movs r2, #64 ; 0x40 - 8002b8e: 5c9b ldrb r3, [r3, r2] - 8002b90: 2b01 cmp r3, #1 - 8002b92: d101 bne.n 8002b98 - 8002b94: 2302 movs r3, #2 - 8002b96: e0f8 b.n 8002d8a - 8002b98: 68fb ldr r3, [r7, #12] - 8002b9a: 2240 movs r2, #64 ; 0x40 - 8002b9c: 2101 movs r1, #1 - 8002b9e: 5499 strb r1, [r3, r2] + 8002b6a: 68fb ldr r3, [r7, #12] + 8002b6c: 2240 movs r2, #64 ; 0x40 + 8002b6e: 5c9b ldrb r3, [r3, r2] + 8002b70: 2b01 cmp r3, #1 + 8002b72: d101 bne.n 8002b78 + 8002b74: 2302 movs r3, #2 + 8002b76: e0f8 b.n 8002d6a + 8002b78: 68fb ldr r3, [r7, #12] + 8002b7a: 2240 movs r2, #64 ; 0x40 + 8002b7c: 2101 movs r1, #1 + 8002b7e: 5499 strb r1, [r3, r2] /* Init tickstart for timeout management*/ tickstart = HAL_GetTick(); - 8002ba0: f7ff f8f4 bl 8001d8c - 8002ba4: 0003 movs r3, r0 - 8002ba6: 617b str r3, [r7, #20] + 8002b80: f7ff f8f4 bl 8001d6c + 8002b84: 0003 movs r3, r0 + 8002b86: 617b str r3, [r7, #20] if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) - 8002ba8: 2380 movs r3, #128 ; 0x80 - 8002baa: 0219 lsls r1, r3, #8 - 8002bac: 68f8 ldr r0, [r7, #12] - 8002bae: 697b ldr r3, [r7, #20] - 8002bb0: 9300 str r3, [sp, #0] - 8002bb2: 2319 movs r3, #25 - 8002bb4: 2201 movs r2, #1 - 8002bb6: f000 fb0b bl 80031d0 - 8002bba: 1e03 subs r3, r0, #0 - 8002bbc: d001 beq.n 8002bc2 + 8002b88: 2380 movs r3, #128 ; 0x80 + 8002b8a: 0219 lsls r1, r3, #8 + 8002b8c: 68f8 ldr r0, [r7, #12] + 8002b8e: 697b ldr r3, [r7, #20] + 8002b90: 9300 str r3, [sp, #0] + 8002b92: 2319 movs r3, #25 + 8002b94: 2201 movs r2, #1 + 8002b96: f000 fb0b bl 80031b0 + 8002b9a: 1e03 subs r3, r0, #0 + 8002b9c: d001 beq.n 8002ba2 { return HAL_ERROR; - 8002bbe: 2301 movs r3, #1 - 8002bc0: e0e3 b.n 8002d8a + 8002b9e: 2301 movs r3, #1 + 8002ba0: e0e3 b.n 8002d6a } hi2c->State = HAL_I2C_STATE_BUSY_TX; - 8002bc2: 68fb ldr r3, [r7, #12] - 8002bc4: 2241 movs r2, #65 ; 0x41 - 8002bc6: 2121 movs r1, #33 ; 0x21 - 8002bc8: 5499 strb r1, [r3, r2] + 8002ba2: 68fb ldr r3, [r7, #12] + 8002ba4: 2241 movs r2, #65 ; 0x41 + 8002ba6: 2121 movs r1, #33 ; 0x21 + 8002ba8: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_MEM; - 8002bca: 68fb ldr r3, [r7, #12] - 8002bcc: 2242 movs r2, #66 ; 0x42 - 8002bce: 2140 movs r1, #64 ; 0x40 - 8002bd0: 5499 strb r1, [r3, r2] + 8002baa: 68fb ldr r3, [r7, #12] + 8002bac: 2242 movs r2, #66 ; 0x42 + 8002bae: 2140 movs r1, #64 ; 0x40 + 8002bb0: 5499 strb r1, [r3, r2] hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8002bd2: 68fb ldr r3, [r7, #12] - 8002bd4: 2200 movs r2, #0 - 8002bd6: 645a str r2, [r3, #68] ; 0x44 + 8002bb2: 68fb ldr r3, [r7, #12] + 8002bb4: 2200 movs r2, #0 + 8002bb6: 645a str r2, [r3, #68] ; 0x44 /* Prepare transfer parameters */ hi2c->pBuffPtr = pData; - 8002bd8: 68fb ldr r3, [r7, #12] - 8002bda: 6aba ldr r2, [r7, #40] ; 0x28 - 8002bdc: 625a str r2, [r3, #36] ; 0x24 + 8002bb8: 68fb ldr r3, [r7, #12] + 8002bba: 6aba ldr r2, [r7, #40] ; 0x28 + 8002bbc: 625a str r2, [r3, #36] ; 0x24 hi2c->XferCount = Size; - 8002bde: 68fb ldr r3, [r7, #12] - 8002be0: 222c movs r2, #44 ; 0x2c - 8002be2: 18ba adds r2, r7, r2 - 8002be4: 8812 ldrh r2, [r2, #0] - 8002be6: 855a strh r2, [r3, #42] ; 0x2a + 8002bbe: 68fb ldr r3, [r7, #12] + 8002bc0: 222c movs r2, #44 ; 0x2c + 8002bc2: 18ba adds r2, r7, r2 + 8002bc4: 8812 ldrh r2, [r2, #0] + 8002bc6: 855a strh r2, [r3, #42] ; 0x2a hi2c->XferISR = NULL; - 8002be8: 68fb ldr r3, [r7, #12] - 8002bea: 2200 movs r2, #0 - 8002bec: 635a str r2, [r3, #52] ; 0x34 + 8002bc8: 68fb ldr r3, [r7, #12] + 8002bca: 2200 movs r2, #0 + 8002bcc: 635a str r2, [r3, #52] ; 0x34 /* Send Slave Address and Memory Address */ if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) - 8002bee: 1dbb adds r3, r7, #6 - 8002bf0: 881c ldrh r4, [r3, #0] - 8002bf2: 2308 movs r3, #8 - 8002bf4: 18fb adds r3, r7, r3 - 8002bf6: 881a ldrh r2, [r3, #0] - 8002bf8: 230a movs r3, #10 - 8002bfa: 18fb adds r3, r7, r3 - 8002bfc: 8819 ldrh r1, [r3, #0] - 8002bfe: 68f8 ldr r0, [r7, #12] - 8002c00: 697b ldr r3, [r7, #20] - 8002c02: 9301 str r3, [sp, #4] - 8002c04: 6b3b ldr r3, [r7, #48] ; 0x30 - 8002c06: 9300 str r3, [sp, #0] - 8002c08: 0023 movs r3, r4 - 8002c0a: f000 f9f9 bl 8003000 - 8002c0e: 1e03 subs r3, r0, #0 - 8002c10: d005 beq.n 8002c1e + 8002bce: 1dbb adds r3, r7, #6 + 8002bd0: 881c ldrh r4, [r3, #0] + 8002bd2: 2308 movs r3, #8 + 8002bd4: 18fb adds r3, r7, r3 + 8002bd6: 881a ldrh r2, [r3, #0] + 8002bd8: 230a movs r3, #10 + 8002bda: 18fb adds r3, r7, r3 + 8002bdc: 8819 ldrh r1, [r3, #0] + 8002bde: 68f8 ldr r0, [r7, #12] + 8002be0: 697b ldr r3, [r7, #20] + 8002be2: 9301 str r3, [sp, #4] + 8002be4: 6b3b ldr r3, [r7, #48] ; 0x30 + 8002be6: 9300 str r3, [sp, #0] + 8002be8: 0023 movs r3, r4 + 8002bea: f000 f9f9 bl 8002fe0 + 8002bee: 1e03 subs r3, r0, #0 + 8002bf0: d005 beq.n 8002bfe { /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002c12: 68fb ldr r3, [r7, #12] - 8002c14: 2240 movs r2, #64 ; 0x40 - 8002c16: 2100 movs r1, #0 - 8002c18: 5499 strb r1, [r3, r2] + 8002bf2: 68fb ldr r3, [r7, #12] + 8002bf4: 2240 movs r2, #64 ; 0x40 + 8002bf6: 2100 movs r1, #0 + 8002bf8: 5499 strb r1, [r3, r2] return HAL_ERROR; - 8002c1a: 2301 movs r3, #1 - 8002c1c: e0b5 b.n 8002d8a + 8002bfa: 2301 movs r3, #1 + 8002bfc: e0b5 b.n 8002d6a } /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ if (hi2c->XferCount > MAX_NBYTE_SIZE) - 8002c1e: 68fb ldr r3, [r7, #12] - 8002c20: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002c22: b29b uxth r3, r3 - 8002c24: 2bff cmp r3, #255 ; 0xff - 8002c26: d911 bls.n 8002c4c + 8002bfe: 68fb ldr r3, [r7, #12] + 8002c00: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002c02: b29b uxth r3, r3 + 8002c04: 2bff cmp r3, #255 ; 0xff + 8002c06: d911 bls.n 8002c2c { hi2c->XferSize = MAX_NBYTE_SIZE; - 8002c28: 68fb ldr r3, [r7, #12] - 8002c2a: 22ff movs r2, #255 ; 0xff - 8002c2c: 851a strh r2, [r3, #40] ; 0x28 + 8002c08: 68fb ldr r3, [r7, #12] + 8002c0a: 22ff movs r2, #255 ; 0xff + 8002c0c: 851a strh r2, [r3, #40] ; 0x28 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); - 8002c2e: 68fb ldr r3, [r7, #12] - 8002c30: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002c32: b2da uxtb r2, r3 - 8002c34: 2380 movs r3, #128 ; 0x80 - 8002c36: 045c lsls r4, r3, #17 - 8002c38: 230a movs r3, #10 - 8002c3a: 18fb adds r3, r7, r3 - 8002c3c: 8819 ldrh r1, [r3, #0] - 8002c3e: 68f8 ldr r0, [r7, #12] - 8002c40: 2300 movs r3, #0 - 8002c42: 9300 str r3, [sp, #0] - 8002c44: 0023 movs r3, r4 - 8002c46: f000 fc7d bl 8003544 - 8002c4a: e012 b.n 8002c72 + 8002c0e: 68fb ldr r3, [r7, #12] + 8002c10: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002c12: b2da uxtb r2, r3 + 8002c14: 2380 movs r3, #128 ; 0x80 + 8002c16: 045c lsls r4, r3, #17 + 8002c18: 230a movs r3, #10 + 8002c1a: 18fb adds r3, r7, r3 + 8002c1c: 8819 ldrh r1, [r3, #0] + 8002c1e: 68f8 ldr r0, [r7, #12] + 8002c20: 2300 movs r3, #0 + 8002c22: 9300 str r3, [sp, #0] + 8002c24: 0023 movs r3, r4 + 8002c26: f000 fc7d bl 8003524 + 8002c2a: e012 b.n 8002c52 } else { hi2c->XferSize = hi2c->XferCount; - 8002c4c: 68fb ldr r3, [r7, #12] - 8002c4e: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002c50: b29a uxth r2, r3 - 8002c52: 68fb ldr r3, [r7, #12] - 8002c54: 851a strh r2, [r3, #40] ; 0x28 + 8002c2c: 68fb ldr r3, [r7, #12] + 8002c2e: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002c30: b29a uxth r2, r3 + 8002c32: 68fb ldr r3, [r7, #12] + 8002c34: 851a strh r2, [r3, #40] ; 0x28 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); - 8002c56: 68fb ldr r3, [r7, #12] - 8002c58: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002c5a: b2da uxtb r2, r3 - 8002c5c: 2380 movs r3, #128 ; 0x80 - 8002c5e: 049c lsls r4, r3, #18 - 8002c60: 230a movs r3, #10 - 8002c62: 18fb adds r3, r7, r3 - 8002c64: 8819 ldrh r1, [r3, #0] - 8002c66: 68f8 ldr r0, [r7, #12] - 8002c68: 2300 movs r3, #0 - 8002c6a: 9300 str r3, [sp, #0] - 8002c6c: 0023 movs r3, r4 - 8002c6e: f000 fc69 bl 8003544 + 8002c36: 68fb ldr r3, [r7, #12] + 8002c38: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002c3a: b2da uxtb r2, r3 + 8002c3c: 2380 movs r3, #128 ; 0x80 + 8002c3e: 049c lsls r4, r3, #18 + 8002c40: 230a movs r3, #10 + 8002c42: 18fb adds r3, r7, r3 + 8002c44: 8819 ldrh r1, [r3, #0] + 8002c46: 68f8 ldr r0, [r7, #12] + 8002c48: 2300 movs r3, #0 + 8002c4a: 9300 str r3, [sp, #0] + 8002c4c: 0023 movs r3, r4 + 8002c4e: f000 fc69 bl 8003524 } do { /* Wait until TXIS flag is set */ if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) - 8002c72: 697a ldr r2, [r7, #20] - 8002c74: 6b39 ldr r1, [r7, #48] ; 0x30 - 8002c76: 68fb ldr r3, [r7, #12] - 8002c78: 0018 movs r0, r3 - 8002c7a: f000 fae8 bl 800324e - 8002c7e: 1e03 subs r3, r0, #0 - 8002c80: d001 beq.n 8002c86 + 8002c52: 697a ldr r2, [r7, #20] + 8002c54: 6b39 ldr r1, [r7, #48] ; 0x30 + 8002c56: 68fb ldr r3, [r7, #12] + 8002c58: 0018 movs r0, r3 + 8002c5a: f000 fae8 bl 800322e + 8002c5e: 1e03 subs r3, r0, #0 + 8002c60: d001 beq.n 8002c66 { return HAL_ERROR; - 8002c82: 2301 movs r3, #1 - 8002c84: e081 b.n 8002d8a + 8002c62: 2301 movs r3, #1 + 8002c64: e081 b.n 8002d6a } /* Write data to TXDR */ hi2c->Instance->TXDR = *hi2c->pBuffPtr; - 8002c86: 68fb ldr r3, [r7, #12] - 8002c88: 6a5b ldr r3, [r3, #36] ; 0x24 - 8002c8a: 781a ldrb r2, [r3, #0] - 8002c8c: 68fb ldr r3, [r7, #12] - 8002c8e: 681b ldr r3, [r3, #0] - 8002c90: 629a str r2, [r3, #40] ; 0x28 + 8002c66: 68fb ldr r3, [r7, #12] + 8002c68: 6a5b ldr r3, [r3, #36] ; 0x24 + 8002c6a: 781a ldrb r2, [r3, #0] + 8002c6c: 68fb ldr r3, [r7, #12] + 8002c6e: 681b ldr r3, [r3, #0] + 8002c70: 629a str r2, [r3, #40] ; 0x28 /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8002c92: 68fb ldr r3, [r7, #12] - 8002c94: 6a5b ldr r3, [r3, #36] ; 0x24 - 8002c96: 1c5a adds r2, r3, #1 - 8002c98: 68fb ldr r3, [r7, #12] - 8002c9a: 625a str r2, [r3, #36] ; 0x24 + 8002c72: 68fb ldr r3, [r7, #12] + 8002c74: 6a5b ldr r3, [r3, #36] ; 0x24 + 8002c76: 1c5a adds r2, r3, #1 + 8002c78: 68fb ldr r3, [r7, #12] + 8002c7a: 625a str r2, [r3, #36] ; 0x24 hi2c->XferCount--; - 8002c9c: 68fb ldr r3, [r7, #12] - 8002c9e: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002ca0: b29b uxth r3, r3 - 8002ca2: 3b01 subs r3, #1 - 8002ca4: b29a uxth r2, r3 - 8002ca6: 68fb ldr r3, [r7, #12] - 8002ca8: 855a strh r2, [r3, #42] ; 0x2a + 8002c7c: 68fb ldr r3, [r7, #12] + 8002c7e: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002c80: b29b uxth r3, r3 + 8002c82: 3b01 subs r3, #1 + 8002c84: b29a uxth r2, r3 + 8002c86: 68fb ldr r3, [r7, #12] + 8002c88: 855a strh r2, [r3, #42] ; 0x2a hi2c->XferSize--; - 8002caa: 68fb ldr r3, [r7, #12] - 8002cac: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002cae: 3b01 subs r3, #1 - 8002cb0: b29a uxth r2, r3 - 8002cb2: 68fb ldr r3, [r7, #12] - 8002cb4: 851a strh r2, [r3, #40] ; 0x28 + 8002c8a: 68fb ldr r3, [r7, #12] + 8002c8c: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002c8e: 3b01 subs r3, #1 + 8002c90: b29a uxth r2, r3 + 8002c92: 68fb ldr r3, [r7, #12] + 8002c94: 851a strh r2, [r3, #40] ; 0x28 if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) - 8002cb6: 68fb ldr r3, [r7, #12] - 8002cb8: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002cba: b29b uxth r3, r3 - 8002cbc: 2b00 cmp r3, #0 - 8002cbe: d03a beq.n 8002d36 - 8002cc0: 68fb ldr r3, [r7, #12] - 8002cc2: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002cc4: 2b00 cmp r3, #0 - 8002cc6: d136 bne.n 8002d36 + 8002c96: 68fb ldr r3, [r7, #12] + 8002c98: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002c9a: b29b uxth r3, r3 + 8002c9c: 2b00 cmp r3, #0 + 8002c9e: d03a beq.n 8002d16 + 8002ca0: 68fb ldr r3, [r7, #12] + 8002ca2: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002ca4: 2b00 cmp r3, #0 + 8002ca6: d136 bne.n 8002d16 { /* Wait until TCR flag is set */ if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) - 8002cc8: 6b3a ldr r2, [r7, #48] ; 0x30 - 8002cca: 68f8 ldr r0, [r7, #12] - 8002ccc: 697b ldr r3, [r7, #20] - 8002cce: 9300 str r3, [sp, #0] - 8002cd0: 0013 movs r3, r2 - 8002cd2: 2200 movs r2, #0 - 8002cd4: 2180 movs r1, #128 ; 0x80 - 8002cd6: f000 fa7b bl 80031d0 - 8002cda: 1e03 subs r3, r0, #0 - 8002cdc: d001 beq.n 8002ce2 + 8002ca8: 6b3a ldr r2, [r7, #48] ; 0x30 + 8002caa: 68f8 ldr r0, [r7, #12] + 8002cac: 697b ldr r3, [r7, #20] + 8002cae: 9300 str r3, [sp, #0] + 8002cb0: 0013 movs r3, r2 + 8002cb2: 2200 movs r2, #0 + 8002cb4: 2180 movs r1, #128 ; 0x80 + 8002cb6: f000 fa7b bl 80031b0 + 8002cba: 1e03 subs r3, r0, #0 + 8002cbc: d001 beq.n 8002cc2 { return HAL_ERROR; - 8002cde: 2301 movs r3, #1 - 8002ce0: e053 b.n 8002d8a + 8002cbe: 2301 movs r3, #1 + 8002cc0: e053 b.n 8002d6a } if (hi2c->XferCount > MAX_NBYTE_SIZE) - 8002ce2: 68fb ldr r3, [r7, #12] - 8002ce4: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002ce6: b29b uxth r3, r3 - 8002ce8: 2bff cmp r3, #255 ; 0xff - 8002cea: d911 bls.n 8002d10 + 8002cc2: 68fb ldr r3, [r7, #12] + 8002cc4: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002cc6: b29b uxth r3, r3 + 8002cc8: 2bff cmp r3, #255 ; 0xff + 8002cca: d911 bls.n 8002cf0 { hi2c->XferSize = MAX_NBYTE_SIZE; - 8002cec: 68fb ldr r3, [r7, #12] - 8002cee: 22ff movs r2, #255 ; 0xff - 8002cf0: 851a strh r2, [r3, #40] ; 0x28 + 8002ccc: 68fb ldr r3, [r7, #12] + 8002cce: 22ff movs r2, #255 ; 0xff + 8002cd0: 851a strh r2, [r3, #40] ; 0x28 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, - 8002cf2: 68fb ldr r3, [r7, #12] - 8002cf4: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002cf6: b2da uxtb r2, r3 - 8002cf8: 2380 movs r3, #128 ; 0x80 - 8002cfa: 045c lsls r4, r3, #17 - 8002cfc: 230a movs r3, #10 - 8002cfe: 18fb adds r3, r7, r3 - 8002d00: 8819 ldrh r1, [r3, #0] - 8002d02: 68f8 ldr r0, [r7, #12] - 8002d04: 2300 movs r3, #0 - 8002d06: 9300 str r3, [sp, #0] - 8002d08: 0023 movs r3, r4 - 8002d0a: f000 fc1b bl 8003544 - 8002d0e: e012 b.n 8002d36 + 8002cd2: 68fb ldr r3, [r7, #12] + 8002cd4: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002cd6: b2da uxtb r2, r3 + 8002cd8: 2380 movs r3, #128 ; 0x80 + 8002cda: 045c lsls r4, r3, #17 + 8002cdc: 230a movs r3, #10 + 8002cde: 18fb adds r3, r7, r3 + 8002ce0: 8819 ldrh r1, [r3, #0] + 8002ce2: 68f8 ldr r0, [r7, #12] + 8002ce4: 2300 movs r3, #0 + 8002ce6: 9300 str r3, [sp, #0] + 8002ce8: 0023 movs r3, r4 + 8002cea: f000 fc1b bl 8003524 + 8002cee: e012 b.n 8002d16 I2C_NO_STARTSTOP); } else { hi2c->XferSize = hi2c->XferCount; - 8002d10: 68fb ldr r3, [r7, #12] - 8002d12: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002d14: b29a uxth r2, r3 - 8002d16: 68fb ldr r3, [r7, #12] - 8002d18: 851a strh r2, [r3, #40] ; 0x28 + 8002cf0: 68fb ldr r3, [r7, #12] + 8002cf2: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002cf4: b29a uxth r2, r3 + 8002cf6: 68fb ldr r3, [r7, #12] + 8002cf8: 851a strh r2, [r3, #40] ; 0x28 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, - 8002d1a: 68fb ldr r3, [r7, #12] - 8002d1c: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002d1e: b2da uxtb r2, r3 - 8002d20: 2380 movs r3, #128 ; 0x80 - 8002d22: 049c lsls r4, r3, #18 - 8002d24: 230a movs r3, #10 - 8002d26: 18fb adds r3, r7, r3 - 8002d28: 8819 ldrh r1, [r3, #0] - 8002d2a: 68f8 ldr r0, [r7, #12] - 8002d2c: 2300 movs r3, #0 - 8002d2e: 9300 str r3, [sp, #0] - 8002d30: 0023 movs r3, r4 - 8002d32: f000 fc07 bl 8003544 + 8002cfa: 68fb ldr r3, [r7, #12] + 8002cfc: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002cfe: b2da uxtb r2, r3 + 8002d00: 2380 movs r3, #128 ; 0x80 + 8002d02: 049c lsls r4, r3, #18 + 8002d04: 230a movs r3, #10 + 8002d06: 18fb adds r3, r7, r3 + 8002d08: 8819 ldrh r1, [r3, #0] + 8002d0a: 68f8 ldr r0, [r7, #12] + 8002d0c: 2300 movs r3, #0 + 8002d0e: 9300 str r3, [sp, #0] + 8002d10: 0023 movs r3, r4 + 8002d12: f000 fc07 bl 8003524 I2C_NO_STARTSTOP); } } } while (hi2c->XferCount > 0U); - 8002d36: 68fb ldr r3, [r7, #12] - 8002d38: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002d3a: b29b uxth r3, r3 - 8002d3c: 2b00 cmp r3, #0 - 8002d3e: d198 bne.n 8002c72 + 8002d16: 68fb ldr r3, [r7, #12] + 8002d18: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002d1a: b29b uxth r3, r3 + 8002d1c: 2b00 cmp r3, #0 + 8002d1e: d198 bne.n 8002c52 /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ /* Wait until STOPF flag is reset */ if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) - 8002d40: 697a ldr r2, [r7, #20] - 8002d42: 6b39 ldr r1, [r7, #48] ; 0x30 - 8002d44: 68fb ldr r3, [r7, #12] - 8002d46: 0018 movs r0, r3 - 8002d48: f000 fac0 bl 80032cc - 8002d4c: 1e03 subs r3, r0, #0 - 8002d4e: d001 beq.n 8002d54 + 8002d20: 697a ldr r2, [r7, #20] + 8002d22: 6b39 ldr r1, [r7, #48] ; 0x30 + 8002d24: 68fb ldr r3, [r7, #12] + 8002d26: 0018 movs r0, r3 + 8002d28: f000 fac0 bl 80032ac + 8002d2c: 1e03 subs r3, r0, #0 + 8002d2e: d001 beq.n 8002d34 { return HAL_ERROR; - 8002d50: 2301 movs r3, #1 - 8002d52: e01a b.n 8002d8a + 8002d30: 2301 movs r3, #1 + 8002d32: e01a b.n 8002d6a } /* Clear STOP Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); - 8002d54: 68fb ldr r3, [r7, #12] - 8002d56: 681b ldr r3, [r3, #0] - 8002d58: 2220 movs r2, #32 - 8002d5a: 61da str r2, [r3, #28] + 8002d34: 68fb ldr r3, [r7, #12] + 8002d36: 681b ldr r3, [r3, #0] + 8002d38: 2220 movs r2, #32 + 8002d3a: 61da str r2, [r3, #28] /* Clear Configuration Register 2 */ I2C_RESET_CR2(hi2c); - 8002d5c: 68fb ldr r3, [r7, #12] - 8002d5e: 681b ldr r3, [r3, #0] - 8002d60: 685a ldr r2, [r3, #4] - 8002d62: 68fb ldr r3, [r7, #12] - 8002d64: 681b ldr r3, [r3, #0] - 8002d66: 490b ldr r1, [pc, #44] ; (8002d94 ) - 8002d68: 400a ands r2, r1 - 8002d6a: 605a str r2, [r3, #4] + 8002d3c: 68fb ldr r3, [r7, #12] + 8002d3e: 681b ldr r3, [r3, #0] + 8002d40: 685a ldr r2, [r3, #4] + 8002d42: 68fb ldr r3, [r7, #12] + 8002d44: 681b ldr r3, [r3, #0] + 8002d46: 490b ldr r1, [pc, #44] ; (8002d74 ) + 8002d48: 400a ands r2, r1 + 8002d4a: 605a str r2, [r3, #4] hi2c->State = HAL_I2C_STATE_READY; - 8002d6c: 68fb ldr r3, [r7, #12] - 8002d6e: 2241 movs r2, #65 ; 0x41 - 8002d70: 2120 movs r1, #32 - 8002d72: 5499 strb r1, [r3, r2] + 8002d4c: 68fb ldr r3, [r7, #12] + 8002d4e: 2241 movs r2, #65 ; 0x41 + 8002d50: 2120 movs r1, #32 + 8002d52: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_NONE; - 8002d74: 68fb ldr r3, [r7, #12] - 8002d76: 2242 movs r2, #66 ; 0x42 - 8002d78: 2100 movs r1, #0 - 8002d7a: 5499 strb r1, [r3, r2] + 8002d54: 68fb ldr r3, [r7, #12] + 8002d56: 2242 movs r2, #66 ; 0x42 + 8002d58: 2100 movs r1, #0 + 8002d5a: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002d7c: 68fb ldr r3, [r7, #12] - 8002d7e: 2240 movs r2, #64 ; 0x40 - 8002d80: 2100 movs r1, #0 - 8002d82: 5499 strb r1, [r3, r2] + 8002d5c: 68fb ldr r3, [r7, #12] + 8002d5e: 2240 movs r2, #64 ; 0x40 + 8002d60: 2100 movs r1, #0 + 8002d62: 5499 strb r1, [r3, r2] return HAL_OK; - 8002d84: 2300 movs r3, #0 - 8002d86: e000 b.n 8002d8a + 8002d64: 2300 movs r3, #0 + 8002d66: e000 b.n 8002d6a } else { return HAL_BUSY; - 8002d88: 2302 movs r3, #2 + 8002d68: 2302 movs r3, #2 } } - 8002d8a: 0018 movs r0, r3 - 8002d8c: 46bd mov sp, r7 - 8002d8e: b007 add sp, #28 - 8002d90: bd90 pop {r4, r7, pc} - 8002d92: 46c0 nop ; (mov r8, r8) - 8002d94: fe00e800 .word 0xfe00e800 + 8002d6a: 0018 movs r0, r3 + 8002d6c: 46bd mov sp, r7 + 8002d6e: b007 add sp, #28 + 8002d70: bd90 pop {r4, r7, pc} + 8002d72: 46c0 nop ; (mov r8, r8) + 8002d74: fe00e800 .word 0xfe00e800 -08002d98 : +08002d78 : * @param Timeout Timeout duration * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) { - 8002d98: b590 push {r4, r7, lr} - 8002d9a: b089 sub sp, #36 ; 0x24 - 8002d9c: af02 add r7, sp, #8 - 8002d9e: 60f8 str r0, [r7, #12] - 8002da0: 000c movs r4, r1 - 8002da2: 0010 movs r0, r2 - 8002da4: 0019 movs r1, r3 - 8002da6: 230a movs r3, #10 - 8002da8: 18fb adds r3, r7, r3 - 8002daa: 1c22 adds r2, r4, #0 - 8002dac: 801a strh r2, [r3, #0] - 8002dae: 2308 movs r3, #8 - 8002db0: 18fb adds r3, r7, r3 - 8002db2: 1c02 adds r2, r0, #0 - 8002db4: 801a strh r2, [r3, #0] - 8002db6: 1dbb adds r3, r7, #6 - 8002db8: 1c0a adds r2, r1, #0 - 8002dba: 801a strh r2, [r3, #0] + 8002d78: b590 push {r4, r7, lr} + 8002d7a: b089 sub sp, #36 ; 0x24 + 8002d7c: af02 add r7, sp, #8 + 8002d7e: 60f8 str r0, [r7, #12] + 8002d80: 000c movs r4, r1 + 8002d82: 0010 movs r0, r2 + 8002d84: 0019 movs r1, r3 + 8002d86: 230a movs r3, #10 + 8002d88: 18fb adds r3, r7, r3 + 8002d8a: 1c22 adds r2, r4, #0 + 8002d8c: 801a strh r2, [r3, #0] + 8002d8e: 2308 movs r3, #8 + 8002d90: 18fb adds r3, r7, r3 + 8002d92: 1c02 adds r2, r0, #0 + 8002d94: 801a strh r2, [r3, #0] + 8002d96: 1dbb adds r3, r7, #6 + 8002d98: 1c0a adds r2, r1, #0 + 8002d9a: 801a strh r2, [r3, #0] uint32_t tickstart; /* Check the parameters */ assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); if (hi2c->State == HAL_I2C_STATE_READY) - 8002dbc: 68fb ldr r3, [r7, #12] - 8002dbe: 2241 movs r2, #65 ; 0x41 - 8002dc0: 5c9b ldrb r3, [r3, r2] - 8002dc2: b2db uxtb r3, r3 - 8002dc4: 2b20 cmp r3, #32 - 8002dc6: d000 beq.n 8002dca - 8002dc8: e110 b.n 8002fec + 8002d9c: 68fb ldr r3, [r7, #12] + 8002d9e: 2241 movs r2, #65 ; 0x41 + 8002da0: 5c9b ldrb r3, [r3, r2] + 8002da2: b2db uxtb r3, r3 + 8002da4: 2b20 cmp r3, #32 + 8002da6: d000 beq.n 8002daa + 8002da8: e110 b.n 8002fcc { if ((pData == NULL) || (Size == 0U)) - 8002dca: 6abb ldr r3, [r7, #40] ; 0x28 - 8002dcc: 2b00 cmp r3, #0 - 8002dce: d004 beq.n 8002dda - 8002dd0: 232c movs r3, #44 ; 0x2c - 8002dd2: 18fb adds r3, r7, r3 - 8002dd4: 881b ldrh r3, [r3, #0] - 8002dd6: 2b00 cmp r3, #0 - 8002dd8: d105 bne.n 8002de6 + 8002daa: 6abb ldr r3, [r7, #40] ; 0x28 + 8002dac: 2b00 cmp r3, #0 + 8002dae: d004 beq.n 8002dba + 8002db0: 232c movs r3, #44 ; 0x2c + 8002db2: 18fb adds r3, r7, r3 + 8002db4: 881b ldrh r3, [r3, #0] + 8002db6: 2b00 cmp r3, #0 + 8002db8: d105 bne.n 8002dc6 { hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; - 8002dda: 68fb ldr r3, [r7, #12] - 8002ddc: 2280 movs r2, #128 ; 0x80 - 8002dde: 0092 lsls r2, r2, #2 - 8002de0: 645a str r2, [r3, #68] ; 0x44 + 8002dba: 68fb ldr r3, [r7, #12] + 8002dbc: 2280 movs r2, #128 ; 0x80 + 8002dbe: 0092 lsls r2, r2, #2 + 8002dc0: 645a str r2, [r3, #68] ; 0x44 return HAL_ERROR; - 8002de2: 2301 movs r3, #1 - 8002de4: e103 b.n 8002fee + 8002dc2: 2301 movs r3, #1 + 8002dc4: e103 b.n 8002fce } /* Process Locked */ __HAL_LOCK(hi2c); - 8002de6: 68fb ldr r3, [r7, #12] - 8002de8: 2240 movs r2, #64 ; 0x40 - 8002dea: 5c9b ldrb r3, [r3, r2] - 8002dec: 2b01 cmp r3, #1 - 8002dee: d101 bne.n 8002df4 - 8002df0: 2302 movs r3, #2 - 8002df2: e0fc b.n 8002fee - 8002df4: 68fb ldr r3, [r7, #12] - 8002df6: 2240 movs r2, #64 ; 0x40 - 8002df8: 2101 movs r1, #1 - 8002dfa: 5499 strb r1, [r3, r2] + 8002dc6: 68fb ldr r3, [r7, #12] + 8002dc8: 2240 movs r2, #64 ; 0x40 + 8002dca: 5c9b ldrb r3, [r3, r2] + 8002dcc: 2b01 cmp r3, #1 + 8002dce: d101 bne.n 8002dd4 + 8002dd0: 2302 movs r3, #2 + 8002dd2: e0fc b.n 8002fce + 8002dd4: 68fb ldr r3, [r7, #12] + 8002dd6: 2240 movs r2, #64 ; 0x40 + 8002dd8: 2101 movs r1, #1 + 8002dda: 5499 strb r1, [r3, r2] /* Init tickstart for timeout management*/ tickstart = HAL_GetTick(); - 8002dfc: f7fe ffc6 bl 8001d8c - 8002e00: 0003 movs r3, r0 - 8002e02: 617b str r3, [r7, #20] + 8002ddc: f7fe ffc6 bl 8001d6c + 8002de0: 0003 movs r3, r0 + 8002de2: 617b str r3, [r7, #20] if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) - 8002e04: 2380 movs r3, #128 ; 0x80 - 8002e06: 0219 lsls r1, r3, #8 - 8002e08: 68f8 ldr r0, [r7, #12] - 8002e0a: 697b ldr r3, [r7, #20] - 8002e0c: 9300 str r3, [sp, #0] - 8002e0e: 2319 movs r3, #25 - 8002e10: 2201 movs r2, #1 - 8002e12: f000 f9dd bl 80031d0 - 8002e16: 1e03 subs r3, r0, #0 - 8002e18: d001 beq.n 8002e1e + 8002de4: 2380 movs r3, #128 ; 0x80 + 8002de6: 0219 lsls r1, r3, #8 + 8002de8: 68f8 ldr r0, [r7, #12] + 8002dea: 697b ldr r3, [r7, #20] + 8002dec: 9300 str r3, [sp, #0] + 8002dee: 2319 movs r3, #25 + 8002df0: 2201 movs r2, #1 + 8002df2: f000 f9dd bl 80031b0 + 8002df6: 1e03 subs r3, r0, #0 + 8002df8: d001 beq.n 8002dfe { return HAL_ERROR; - 8002e1a: 2301 movs r3, #1 - 8002e1c: e0e7 b.n 8002fee + 8002dfa: 2301 movs r3, #1 + 8002dfc: e0e7 b.n 8002fce } hi2c->State = HAL_I2C_STATE_BUSY_RX; - 8002e1e: 68fb ldr r3, [r7, #12] - 8002e20: 2241 movs r2, #65 ; 0x41 - 8002e22: 2122 movs r1, #34 ; 0x22 - 8002e24: 5499 strb r1, [r3, r2] + 8002dfe: 68fb ldr r3, [r7, #12] + 8002e00: 2241 movs r2, #65 ; 0x41 + 8002e02: 2122 movs r1, #34 ; 0x22 + 8002e04: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_MEM; - 8002e26: 68fb ldr r3, [r7, #12] - 8002e28: 2242 movs r2, #66 ; 0x42 - 8002e2a: 2140 movs r1, #64 ; 0x40 - 8002e2c: 5499 strb r1, [r3, r2] + 8002e06: 68fb ldr r3, [r7, #12] + 8002e08: 2242 movs r2, #66 ; 0x42 + 8002e0a: 2140 movs r1, #64 ; 0x40 + 8002e0c: 5499 strb r1, [r3, r2] hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8002e2e: 68fb ldr r3, [r7, #12] - 8002e30: 2200 movs r2, #0 - 8002e32: 645a str r2, [r3, #68] ; 0x44 + 8002e0e: 68fb ldr r3, [r7, #12] + 8002e10: 2200 movs r2, #0 + 8002e12: 645a str r2, [r3, #68] ; 0x44 /* Prepare transfer parameters */ hi2c->pBuffPtr = pData; - 8002e34: 68fb ldr r3, [r7, #12] - 8002e36: 6aba ldr r2, [r7, #40] ; 0x28 - 8002e38: 625a str r2, [r3, #36] ; 0x24 + 8002e14: 68fb ldr r3, [r7, #12] + 8002e16: 6aba ldr r2, [r7, #40] ; 0x28 + 8002e18: 625a str r2, [r3, #36] ; 0x24 hi2c->XferCount = Size; - 8002e3a: 68fb ldr r3, [r7, #12] - 8002e3c: 222c movs r2, #44 ; 0x2c - 8002e3e: 18ba adds r2, r7, r2 - 8002e40: 8812 ldrh r2, [r2, #0] - 8002e42: 855a strh r2, [r3, #42] ; 0x2a + 8002e1a: 68fb ldr r3, [r7, #12] + 8002e1c: 222c movs r2, #44 ; 0x2c + 8002e1e: 18ba adds r2, r7, r2 + 8002e20: 8812 ldrh r2, [r2, #0] + 8002e22: 855a strh r2, [r3, #42] ; 0x2a hi2c->XferISR = NULL; - 8002e44: 68fb ldr r3, [r7, #12] - 8002e46: 2200 movs r2, #0 - 8002e48: 635a str r2, [r3, #52] ; 0x34 + 8002e24: 68fb ldr r3, [r7, #12] + 8002e26: 2200 movs r2, #0 + 8002e28: 635a str r2, [r3, #52] ; 0x34 /* Send Slave Address and Memory Address */ if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) - 8002e4a: 1dbb adds r3, r7, #6 - 8002e4c: 881c ldrh r4, [r3, #0] - 8002e4e: 2308 movs r3, #8 - 8002e50: 18fb adds r3, r7, r3 - 8002e52: 881a ldrh r2, [r3, #0] - 8002e54: 230a movs r3, #10 - 8002e56: 18fb adds r3, r7, r3 - 8002e58: 8819 ldrh r1, [r3, #0] - 8002e5a: 68f8 ldr r0, [r7, #12] - 8002e5c: 697b ldr r3, [r7, #20] - 8002e5e: 9301 str r3, [sp, #4] - 8002e60: 6b3b ldr r3, [r7, #48] ; 0x30 - 8002e62: 9300 str r3, [sp, #0] - 8002e64: 0023 movs r3, r4 - 8002e66: f000 f92f bl 80030c8 - 8002e6a: 1e03 subs r3, r0, #0 - 8002e6c: d005 beq.n 8002e7a + 8002e2a: 1dbb adds r3, r7, #6 + 8002e2c: 881c ldrh r4, [r3, #0] + 8002e2e: 2308 movs r3, #8 + 8002e30: 18fb adds r3, r7, r3 + 8002e32: 881a ldrh r2, [r3, #0] + 8002e34: 230a movs r3, #10 + 8002e36: 18fb adds r3, r7, r3 + 8002e38: 8819 ldrh r1, [r3, #0] + 8002e3a: 68f8 ldr r0, [r7, #12] + 8002e3c: 697b ldr r3, [r7, #20] + 8002e3e: 9301 str r3, [sp, #4] + 8002e40: 6b3b ldr r3, [r7, #48] ; 0x30 + 8002e42: 9300 str r3, [sp, #0] + 8002e44: 0023 movs r3, r4 + 8002e46: f000 f92f bl 80030a8 + 8002e4a: 1e03 subs r3, r0, #0 + 8002e4c: d005 beq.n 8002e5a { /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002e6e: 68fb ldr r3, [r7, #12] - 8002e70: 2240 movs r2, #64 ; 0x40 - 8002e72: 2100 movs r1, #0 - 8002e74: 5499 strb r1, [r3, r2] + 8002e4e: 68fb ldr r3, [r7, #12] + 8002e50: 2240 movs r2, #64 ; 0x40 + 8002e52: 2100 movs r1, #0 + 8002e54: 5499 strb r1, [r3, r2] return HAL_ERROR; - 8002e76: 2301 movs r3, #1 - 8002e78: e0b9 b.n 8002fee + 8002e56: 2301 movs r3, #1 + 8002e58: e0b9 b.n 8002fce } /* Send Slave Address */ /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ if (hi2c->XferCount > MAX_NBYTE_SIZE) - 8002e7a: 68fb ldr r3, [r7, #12] - 8002e7c: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002e7e: b29b uxth r3, r3 - 8002e80: 2bff cmp r3, #255 ; 0xff - 8002e82: d911 bls.n 8002ea8 + 8002e5a: 68fb ldr r3, [r7, #12] + 8002e5c: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002e5e: b29b uxth r3, r3 + 8002e60: 2bff cmp r3, #255 ; 0xff + 8002e62: d911 bls.n 8002e88 { hi2c->XferSize = MAX_NBYTE_SIZE; - 8002e84: 68fb ldr r3, [r7, #12] - 8002e86: 22ff movs r2, #255 ; 0xff - 8002e88: 851a strh r2, [r3, #40] ; 0x28 + 8002e64: 68fb ldr r3, [r7, #12] + 8002e66: 22ff movs r2, #255 ; 0xff + 8002e68: 851a strh r2, [r3, #40] ; 0x28 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, - 8002e8a: 68fb ldr r3, [r7, #12] - 8002e8c: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002e8e: b2da uxtb r2, r3 - 8002e90: 2380 movs r3, #128 ; 0x80 - 8002e92: 045c lsls r4, r3, #17 - 8002e94: 230a movs r3, #10 - 8002e96: 18fb adds r3, r7, r3 - 8002e98: 8819 ldrh r1, [r3, #0] - 8002e9a: 68f8 ldr r0, [r7, #12] - 8002e9c: 4b56 ldr r3, [pc, #344] ; (8002ff8 ) - 8002e9e: 9300 str r3, [sp, #0] - 8002ea0: 0023 movs r3, r4 - 8002ea2: f000 fb4f bl 8003544 - 8002ea6: e012 b.n 8002ece + 8002e6a: 68fb ldr r3, [r7, #12] + 8002e6c: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002e6e: b2da uxtb r2, r3 + 8002e70: 2380 movs r3, #128 ; 0x80 + 8002e72: 045c lsls r4, r3, #17 + 8002e74: 230a movs r3, #10 + 8002e76: 18fb adds r3, r7, r3 + 8002e78: 8819 ldrh r1, [r3, #0] + 8002e7a: 68f8 ldr r0, [r7, #12] + 8002e7c: 4b56 ldr r3, [pc, #344] ; (8002fd8 ) + 8002e7e: 9300 str r3, [sp, #0] + 8002e80: 0023 movs r3, r4 + 8002e82: f000 fb4f bl 8003524 + 8002e86: e012 b.n 8002eae I2C_GENERATE_START_READ); } else { hi2c->XferSize = hi2c->XferCount; - 8002ea8: 68fb ldr r3, [r7, #12] - 8002eaa: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002eac: b29a uxth r2, r3 - 8002eae: 68fb ldr r3, [r7, #12] - 8002eb0: 851a strh r2, [r3, #40] ; 0x28 + 8002e88: 68fb ldr r3, [r7, #12] + 8002e8a: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002e8c: b29a uxth r2, r3 + 8002e8e: 68fb ldr r3, [r7, #12] + 8002e90: 851a strh r2, [r3, #40] ; 0x28 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, - 8002eb2: 68fb ldr r3, [r7, #12] - 8002eb4: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002eb6: b2da uxtb r2, r3 - 8002eb8: 2380 movs r3, #128 ; 0x80 - 8002eba: 049c lsls r4, r3, #18 - 8002ebc: 230a movs r3, #10 - 8002ebe: 18fb adds r3, r7, r3 - 8002ec0: 8819 ldrh r1, [r3, #0] - 8002ec2: 68f8 ldr r0, [r7, #12] - 8002ec4: 4b4c ldr r3, [pc, #304] ; (8002ff8 ) - 8002ec6: 9300 str r3, [sp, #0] - 8002ec8: 0023 movs r3, r4 - 8002eca: f000 fb3b bl 8003544 + 8002e92: 68fb ldr r3, [r7, #12] + 8002e94: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002e96: b2da uxtb r2, r3 + 8002e98: 2380 movs r3, #128 ; 0x80 + 8002e9a: 049c lsls r4, r3, #18 + 8002e9c: 230a movs r3, #10 + 8002e9e: 18fb adds r3, r7, r3 + 8002ea0: 8819 ldrh r1, [r3, #0] + 8002ea2: 68f8 ldr r0, [r7, #12] + 8002ea4: 4b4c ldr r3, [pc, #304] ; (8002fd8 ) + 8002ea6: 9300 str r3, [sp, #0] + 8002ea8: 0023 movs r3, r4 + 8002eaa: f000 fb3b bl 8003524 } do { /* Wait until RXNE flag is set */ if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) - 8002ece: 6b3a ldr r2, [r7, #48] ; 0x30 - 8002ed0: 68f8 ldr r0, [r7, #12] - 8002ed2: 697b ldr r3, [r7, #20] - 8002ed4: 9300 str r3, [sp, #0] - 8002ed6: 0013 movs r3, r2 - 8002ed8: 2200 movs r2, #0 - 8002eda: 2104 movs r1, #4 - 8002edc: f000 f978 bl 80031d0 - 8002ee0: 1e03 subs r3, r0, #0 - 8002ee2: d001 beq.n 8002ee8 + 8002eae: 6b3a ldr r2, [r7, #48] ; 0x30 + 8002eb0: 68f8 ldr r0, [r7, #12] + 8002eb2: 697b ldr r3, [r7, #20] + 8002eb4: 9300 str r3, [sp, #0] + 8002eb6: 0013 movs r3, r2 + 8002eb8: 2200 movs r2, #0 + 8002eba: 2104 movs r1, #4 + 8002ebc: f000 f978 bl 80031b0 + 8002ec0: 1e03 subs r3, r0, #0 + 8002ec2: d001 beq.n 8002ec8 { return HAL_ERROR; - 8002ee4: 2301 movs r3, #1 - 8002ee6: e082 b.n 8002fee + 8002ec4: 2301 movs r3, #1 + 8002ec6: e082 b.n 8002fce } /* Read data from RXDR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; - 8002ee8: 68fb ldr r3, [r7, #12] - 8002eea: 681b ldr r3, [r3, #0] - 8002eec: 6a5a ldr r2, [r3, #36] ; 0x24 - 8002eee: 68fb ldr r3, [r7, #12] - 8002ef0: 6a5b ldr r3, [r3, #36] ; 0x24 - 8002ef2: b2d2 uxtb r2, r2 - 8002ef4: 701a strb r2, [r3, #0] + 8002ec8: 68fb ldr r3, [r7, #12] + 8002eca: 681b ldr r3, [r3, #0] + 8002ecc: 6a5a ldr r2, [r3, #36] ; 0x24 + 8002ece: 68fb ldr r3, [r7, #12] + 8002ed0: 6a5b ldr r3, [r3, #36] ; 0x24 + 8002ed2: b2d2 uxtb r2, r2 + 8002ed4: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8002ef6: 68fb ldr r3, [r7, #12] - 8002ef8: 6a5b ldr r3, [r3, #36] ; 0x24 - 8002efa: 1c5a adds r2, r3, #1 - 8002efc: 68fb ldr r3, [r7, #12] - 8002efe: 625a str r2, [r3, #36] ; 0x24 + 8002ed6: 68fb ldr r3, [r7, #12] + 8002ed8: 6a5b ldr r3, [r3, #36] ; 0x24 + 8002eda: 1c5a adds r2, r3, #1 + 8002edc: 68fb ldr r3, [r7, #12] + 8002ede: 625a str r2, [r3, #36] ; 0x24 hi2c->XferSize--; - 8002f00: 68fb ldr r3, [r7, #12] - 8002f02: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002f04: 3b01 subs r3, #1 - 8002f06: b29a uxth r2, r3 - 8002f08: 68fb ldr r3, [r7, #12] - 8002f0a: 851a strh r2, [r3, #40] ; 0x28 + 8002ee0: 68fb ldr r3, [r7, #12] + 8002ee2: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002ee4: 3b01 subs r3, #1 + 8002ee6: b29a uxth r2, r3 + 8002ee8: 68fb ldr r3, [r7, #12] + 8002eea: 851a strh r2, [r3, #40] ; 0x28 hi2c->XferCount--; - 8002f0c: 68fb ldr r3, [r7, #12] - 8002f0e: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002f10: b29b uxth r3, r3 - 8002f12: 3b01 subs r3, #1 - 8002f14: b29a uxth r2, r3 - 8002f16: 68fb ldr r3, [r7, #12] - 8002f18: 855a strh r2, [r3, #42] ; 0x2a + 8002eec: 68fb ldr r3, [r7, #12] + 8002eee: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002ef0: b29b uxth r3, r3 + 8002ef2: 3b01 subs r3, #1 + 8002ef4: b29a uxth r2, r3 + 8002ef6: 68fb ldr r3, [r7, #12] + 8002ef8: 855a strh r2, [r3, #42] ; 0x2a if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) - 8002f1a: 68fb ldr r3, [r7, #12] - 8002f1c: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002f1e: b29b uxth r3, r3 - 8002f20: 2b00 cmp r3, #0 - 8002f22: d03a beq.n 8002f9a - 8002f24: 68fb ldr r3, [r7, #12] - 8002f26: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002f28: 2b00 cmp r3, #0 - 8002f2a: d136 bne.n 8002f9a + 8002efa: 68fb ldr r3, [r7, #12] + 8002efc: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002efe: b29b uxth r3, r3 + 8002f00: 2b00 cmp r3, #0 + 8002f02: d03a beq.n 8002f7a + 8002f04: 68fb ldr r3, [r7, #12] + 8002f06: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002f08: 2b00 cmp r3, #0 + 8002f0a: d136 bne.n 8002f7a { /* Wait until TCR flag is set */ if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) - 8002f2c: 6b3a ldr r2, [r7, #48] ; 0x30 - 8002f2e: 68f8 ldr r0, [r7, #12] - 8002f30: 697b ldr r3, [r7, #20] - 8002f32: 9300 str r3, [sp, #0] - 8002f34: 0013 movs r3, r2 - 8002f36: 2200 movs r2, #0 - 8002f38: 2180 movs r1, #128 ; 0x80 - 8002f3a: f000 f949 bl 80031d0 - 8002f3e: 1e03 subs r3, r0, #0 - 8002f40: d001 beq.n 8002f46 + 8002f0c: 6b3a ldr r2, [r7, #48] ; 0x30 + 8002f0e: 68f8 ldr r0, [r7, #12] + 8002f10: 697b ldr r3, [r7, #20] + 8002f12: 9300 str r3, [sp, #0] + 8002f14: 0013 movs r3, r2 + 8002f16: 2200 movs r2, #0 + 8002f18: 2180 movs r1, #128 ; 0x80 + 8002f1a: f000 f949 bl 80031b0 + 8002f1e: 1e03 subs r3, r0, #0 + 8002f20: d001 beq.n 8002f26 { return HAL_ERROR; - 8002f42: 2301 movs r3, #1 - 8002f44: e053 b.n 8002fee + 8002f22: 2301 movs r3, #1 + 8002f24: e053 b.n 8002fce } if (hi2c->XferCount > MAX_NBYTE_SIZE) - 8002f46: 68fb ldr r3, [r7, #12] - 8002f48: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002f4a: b29b uxth r3, r3 - 8002f4c: 2bff cmp r3, #255 ; 0xff - 8002f4e: d911 bls.n 8002f74 + 8002f26: 68fb ldr r3, [r7, #12] + 8002f28: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002f2a: b29b uxth r3, r3 + 8002f2c: 2bff cmp r3, #255 ; 0xff + 8002f2e: d911 bls.n 8002f54 { hi2c->XferSize = MAX_NBYTE_SIZE; - 8002f50: 68fb ldr r3, [r7, #12] - 8002f52: 22ff movs r2, #255 ; 0xff - 8002f54: 851a strh r2, [r3, #40] ; 0x28 + 8002f30: 68fb ldr r3, [r7, #12] + 8002f32: 22ff movs r2, #255 ; 0xff + 8002f34: 851a strh r2, [r3, #40] ; 0x28 I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, - 8002f56: 68fb ldr r3, [r7, #12] - 8002f58: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002f5a: b2da uxtb r2, r3 - 8002f5c: 2380 movs r3, #128 ; 0x80 - 8002f5e: 045c lsls r4, r3, #17 - 8002f60: 230a movs r3, #10 - 8002f62: 18fb adds r3, r7, r3 - 8002f64: 8819 ldrh r1, [r3, #0] - 8002f66: 68f8 ldr r0, [r7, #12] - 8002f68: 2300 movs r3, #0 - 8002f6a: 9300 str r3, [sp, #0] - 8002f6c: 0023 movs r3, r4 - 8002f6e: f000 fae9 bl 8003544 - 8002f72: e012 b.n 8002f9a + 8002f36: 68fb ldr r3, [r7, #12] + 8002f38: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002f3a: b2da uxtb r2, r3 + 8002f3c: 2380 movs r3, #128 ; 0x80 + 8002f3e: 045c lsls r4, r3, #17 + 8002f40: 230a movs r3, #10 + 8002f42: 18fb adds r3, r7, r3 + 8002f44: 8819 ldrh r1, [r3, #0] + 8002f46: 68f8 ldr r0, [r7, #12] + 8002f48: 2300 movs r3, #0 + 8002f4a: 9300 str r3, [sp, #0] + 8002f4c: 0023 movs r3, r4 + 8002f4e: f000 fae9 bl 8003524 + 8002f52: e012 b.n 8002f7a I2C_NO_STARTSTOP); } else { hi2c->XferSize = hi2c->XferCount; - 8002f74: 68fb ldr r3, [r7, #12] - 8002f76: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002f78: b29a uxth r2, r3 - 8002f7a: 68fb ldr r3, [r7, #12] - 8002f7c: 851a strh r2, [r3, #40] ; 0x28 + 8002f54: 68fb ldr r3, [r7, #12] + 8002f56: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002f58: b29a uxth r2, r3 + 8002f5a: 68fb ldr r3, [r7, #12] + 8002f5c: 851a strh r2, [r3, #40] ; 0x28 I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, - 8002f7e: 68fb ldr r3, [r7, #12] - 8002f80: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8002f82: b2da uxtb r2, r3 - 8002f84: 2380 movs r3, #128 ; 0x80 - 8002f86: 049c lsls r4, r3, #18 - 8002f88: 230a movs r3, #10 - 8002f8a: 18fb adds r3, r7, r3 - 8002f8c: 8819 ldrh r1, [r3, #0] - 8002f8e: 68f8 ldr r0, [r7, #12] - 8002f90: 2300 movs r3, #0 - 8002f92: 9300 str r3, [sp, #0] - 8002f94: 0023 movs r3, r4 - 8002f96: f000 fad5 bl 8003544 + 8002f5e: 68fb ldr r3, [r7, #12] + 8002f60: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8002f62: b2da uxtb r2, r3 + 8002f64: 2380 movs r3, #128 ; 0x80 + 8002f66: 049c lsls r4, r3, #18 + 8002f68: 230a movs r3, #10 + 8002f6a: 18fb adds r3, r7, r3 + 8002f6c: 8819 ldrh r1, [r3, #0] + 8002f6e: 68f8 ldr r0, [r7, #12] + 8002f70: 2300 movs r3, #0 + 8002f72: 9300 str r3, [sp, #0] + 8002f74: 0023 movs r3, r4 + 8002f76: f000 fad5 bl 8003524 I2C_NO_STARTSTOP); } } } while (hi2c->XferCount > 0U); - 8002f9a: 68fb ldr r3, [r7, #12] - 8002f9c: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8002f9e: b29b uxth r3, r3 - 8002fa0: 2b00 cmp r3, #0 - 8002fa2: d194 bne.n 8002ece + 8002f7a: 68fb ldr r3, [r7, #12] + 8002f7c: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8002f7e: b29b uxth r3, r3 + 8002f80: 2b00 cmp r3, #0 + 8002f82: d194 bne.n 8002eae /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ /* Wait until STOPF flag is reset */ if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) - 8002fa4: 697a ldr r2, [r7, #20] - 8002fa6: 6b39 ldr r1, [r7, #48] ; 0x30 - 8002fa8: 68fb ldr r3, [r7, #12] - 8002faa: 0018 movs r0, r3 - 8002fac: f000 f98e bl 80032cc - 8002fb0: 1e03 subs r3, r0, #0 - 8002fb2: d001 beq.n 8002fb8 + 8002f84: 697a ldr r2, [r7, #20] + 8002f86: 6b39 ldr r1, [r7, #48] ; 0x30 + 8002f88: 68fb ldr r3, [r7, #12] + 8002f8a: 0018 movs r0, r3 + 8002f8c: f000 f98e bl 80032ac + 8002f90: 1e03 subs r3, r0, #0 + 8002f92: d001 beq.n 8002f98 { return HAL_ERROR; - 8002fb4: 2301 movs r3, #1 - 8002fb6: e01a b.n 8002fee + 8002f94: 2301 movs r3, #1 + 8002f96: e01a b.n 8002fce } /* Clear STOP Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); - 8002fb8: 68fb ldr r3, [r7, #12] - 8002fba: 681b ldr r3, [r3, #0] - 8002fbc: 2220 movs r2, #32 - 8002fbe: 61da str r2, [r3, #28] + 8002f98: 68fb ldr r3, [r7, #12] + 8002f9a: 681b ldr r3, [r3, #0] + 8002f9c: 2220 movs r2, #32 + 8002f9e: 61da str r2, [r3, #28] /* Clear Configuration Register 2 */ I2C_RESET_CR2(hi2c); - 8002fc0: 68fb ldr r3, [r7, #12] - 8002fc2: 681b ldr r3, [r3, #0] - 8002fc4: 685a ldr r2, [r3, #4] - 8002fc6: 68fb ldr r3, [r7, #12] - 8002fc8: 681b ldr r3, [r3, #0] - 8002fca: 490c ldr r1, [pc, #48] ; (8002ffc ) - 8002fcc: 400a ands r2, r1 - 8002fce: 605a str r2, [r3, #4] + 8002fa0: 68fb ldr r3, [r7, #12] + 8002fa2: 681b ldr r3, [r3, #0] + 8002fa4: 685a ldr r2, [r3, #4] + 8002fa6: 68fb ldr r3, [r7, #12] + 8002fa8: 681b ldr r3, [r3, #0] + 8002faa: 490c ldr r1, [pc, #48] ; (8002fdc ) + 8002fac: 400a ands r2, r1 + 8002fae: 605a str r2, [r3, #4] hi2c->State = HAL_I2C_STATE_READY; - 8002fd0: 68fb ldr r3, [r7, #12] - 8002fd2: 2241 movs r2, #65 ; 0x41 - 8002fd4: 2120 movs r1, #32 - 8002fd6: 5499 strb r1, [r3, r2] + 8002fb0: 68fb ldr r3, [r7, #12] + 8002fb2: 2241 movs r2, #65 ; 0x41 + 8002fb4: 2120 movs r1, #32 + 8002fb6: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_NONE; - 8002fd8: 68fb ldr r3, [r7, #12] - 8002fda: 2242 movs r2, #66 ; 0x42 - 8002fdc: 2100 movs r1, #0 - 8002fde: 5499 strb r1, [r3, r2] + 8002fb8: 68fb ldr r3, [r7, #12] + 8002fba: 2242 movs r2, #66 ; 0x42 + 8002fbc: 2100 movs r1, #0 + 8002fbe: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002fe0: 68fb ldr r3, [r7, #12] - 8002fe2: 2240 movs r2, #64 ; 0x40 - 8002fe4: 2100 movs r1, #0 - 8002fe6: 5499 strb r1, [r3, r2] + 8002fc0: 68fb ldr r3, [r7, #12] + 8002fc2: 2240 movs r2, #64 ; 0x40 + 8002fc4: 2100 movs r1, #0 + 8002fc6: 5499 strb r1, [r3, r2] return HAL_OK; - 8002fe8: 2300 movs r3, #0 - 8002fea: e000 b.n 8002fee + 8002fc8: 2300 movs r3, #0 + 8002fca: e000 b.n 8002fce } else { return HAL_BUSY; - 8002fec: 2302 movs r3, #2 + 8002fcc: 2302 movs r3, #2 } } - 8002fee: 0018 movs r0, r3 - 8002ff0: 46bd mov sp, r7 - 8002ff2: b007 add sp, #28 - 8002ff4: bd90 pop {r4, r7, pc} - 8002ff6: 46c0 nop ; (mov r8, r8) - 8002ff8: 80002400 .word 0x80002400 - 8002ffc: fe00e800 .word 0xfe00e800 + 8002fce: 0018 movs r0, r3 + 8002fd0: 46bd mov sp, r7 + 8002fd2: b007 add sp, #28 + 8002fd4: bd90 pop {r4, r7, pc} + 8002fd6: 46c0 nop ; (mov r8, r8) + 8002fd8: 80002400 .word 0x80002400 + 8002fdc: fe00e800 .word 0xfe00e800 -08003000 : +08002fe0 : * @retval HAL status */ static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart) { - 8003000: b5b0 push {r4, r5, r7, lr} - 8003002: b086 sub sp, #24 - 8003004: af02 add r7, sp, #8 - 8003006: 60f8 str r0, [r7, #12] - 8003008: 000c movs r4, r1 - 800300a: 0010 movs r0, r2 - 800300c: 0019 movs r1, r3 - 800300e: 250a movs r5, #10 - 8003010: 197b adds r3, r7, r5 - 8003012: 1c22 adds r2, r4, #0 - 8003014: 801a strh r2, [r3, #0] - 8003016: 2308 movs r3, #8 - 8003018: 18fb adds r3, r7, r3 - 800301a: 1c02 adds r2, r0, #0 - 800301c: 801a strh r2, [r3, #0] - 800301e: 1dbb adds r3, r7, #6 - 8003020: 1c0a adds r2, r1, #0 - 8003022: 801a strh r2, [r3, #0] + 8002fe0: b5b0 push {r4, r5, r7, lr} + 8002fe2: b086 sub sp, #24 + 8002fe4: af02 add r7, sp, #8 + 8002fe6: 60f8 str r0, [r7, #12] + 8002fe8: 000c movs r4, r1 + 8002fea: 0010 movs r0, r2 + 8002fec: 0019 movs r1, r3 + 8002fee: 250a movs r5, #10 + 8002ff0: 197b adds r3, r7, r5 + 8002ff2: 1c22 adds r2, r4, #0 + 8002ff4: 801a strh r2, [r3, #0] + 8002ff6: 2308 movs r3, #8 + 8002ff8: 18fb adds r3, r7, r3 + 8002ffa: 1c02 adds r2, r0, #0 + 8002ffc: 801a strh r2, [r3, #0] + 8002ffe: 1dbb adds r3, r7, #6 + 8003000: 1c0a adds r2, r1, #0 + 8003002: 801a strh r2, [r3, #0] I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE); - 8003024: 1dbb adds r3, r7, #6 - 8003026: 881b ldrh r3, [r3, #0] - 8003028: b2da uxtb r2, r3 - 800302a: 2380 movs r3, #128 ; 0x80 - 800302c: 045c lsls r4, r3, #17 - 800302e: 197b adds r3, r7, r5 - 8003030: 8819 ldrh r1, [r3, #0] - 8003032: 68f8 ldr r0, [r7, #12] - 8003034: 4b23 ldr r3, [pc, #140] ; (80030c4 ) - 8003036: 9300 str r3, [sp, #0] - 8003038: 0023 movs r3, r4 - 800303a: f000 fa83 bl 8003544 + 8003004: 1dbb adds r3, r7, #6 + 8003006: 881b ldrh r3, [r3, #0] + 8003008: b2da uxtb r2, r3 + 800300a: 2380 movs r3, #128 ; 0x80 + 800300c: 045c lsls r4, r3, #17 + 800300e: 197b adds r3, r7, r5 + 8003010: 8819 ldrh r1, [r3, #0] + 8003012: 68f8 ldr r0, [r7, #12] + 8003014: 4b23 ldr r3, [pc, #140] ; (80030a4 ) + 8003016: 9300 str r3, [sp, #0] + 8003018: 0023 movs r3, r4 + 800301a: f000 fa83 bl 8003524 /* Wait until TXIS flag is set */ if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) - 800303e: 6a7a ldr r2, [r7, #36] ; 0x24 - 8003040: 6a39 ldr r1, [r7, #32] - 8003042: 68fb ldr r3, [r7, #12] - 8003044: 0018 movs r0, r3 - 8003046: f000 f902 bl 800324e - 800304a: 1e03 subs r3, r0, #0 - 800304c: d001 beq.n 8003052 + 800301e: 6a7a ldr r2, [r7, #36] ; 0x24 + 8003020: 6a39 ldr r1, [r7, #32] + 8003022: 68fb ldr r3, [r7, #12] + 8003024: 0018 movs r0, r3 + 8003026: f000 f902 bl 800322e + 800302a: 1e03 subs r3, r0, #0 + 800302c: d001 beq.n 8003032 { return HAL_ERROR; - 800304e: 2301 movs r3, #1 - 8003050: e033 b.n 80030ba + 800302e: 2301 movs r3, #1 + 8003030: e033 b.n 800309a } /* If Memory address size is 8Bit */ if (MemAddSize == I2C_MEMADD_SIZE_8BIT) - 8003052: 1dbb adds r3, r7, #6 - 8003054: 881b ldrh r3, [r3, #0] - 8003056: 2b01 cmp r3, #1 - 8003058: d107 bne.n 800306a + 8003032: 1dbb adds r3, r7, #6 + 8003034: 881b ldrh r3, [r3, #0] + 8003036: 2b01 cmp r3, #1 + 8003038: d107 bne.n 800304a { /* Send Memory Address */ hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); - 800305a: 2308 movs r3, #8 - 800305c: 18fb adds r3, r7, r3 - 800305e: 881b ldrh r3, [r3, #0] - 8003060: b2da uxtb r2, r3 - 8003062: 68fb ldr r3, [r7, #12] - 8003064: 681b ldr r3, [r3, #0] - 8003066: 629a str r2, [r3, #40] ; 0x28 - 8003068: e019 b.n 800309e + 800303a: 2308 movs r3, #8 + 800303c: 18fb adds r3, r7, r3 + 800303e: 881b ldrh r3, [r3, #0] + 8003040: b2da uxtb r2, r3 + 8003042: 68fb ldr r3, [r7, #12] + 8003044: 681b ldr r3, [r3, #0] + 8003046: 629a str r2, [r3, #40] ; 0x28 + 8003048: e019 b.n 800307e } /* If Memory address size is 16Bit */ else { /* Send MSB of Memory Address */ hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); - 800306a: 2308 movs r3, #8 - 800306c: 18fb adds r3, r7, r3 - 800306e: 881b ldrh r3, [r3, #0] - 8003070: 0a1b lsrs r3, r3, #8 - 8003072: b29b uxth r3, r3 - 8003074: b2da uxtb r2, r3 - 8003076: 68fb ldr r3, [r7, #12] - 8003078: 681b ldr r3, [r3, #0] - 800307a: 629a str r2, [r3, #40] ; 0x28 + 800304a: 2308 movs r3, #8 + 800304c: 18fb adds r3, r7, r3 + 800304e: 881b ldrh r3, [r3, #0] + 8003050: 0a1b lsrs r3, r3, #8 + 8003052: b29b uxth r3, r3 + 8003054: b2da uxtb r2, r3 + 8003056: 68fb ldr r3, [r7, #12] + 8003058: 681b ldr r3, [r3, #0] + 800305a: 629a str r2, [r3, #40] ; 0x28 /* Wait until TXIS flag is set */ if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) - 800307c: 6a7a ldr r2, [r7, #36] ; 0x24 - 800307e: 6a39 ldr r1, [r7, #32] - 8003080: 68fb ldr r3, [r7, #12] - 8003082: 0018 movs r0, r3 - 8003084: f000 f8e3 bl 800324e - 8003088: 1e03 subs r3, r0, #0 - 800308a: d001 beq.n 8003090 + 800305c: 6a7a ldr r2, [r7, #36] ; 0x24 + 800305e: 6a39 ldr r1, [r7, #32] + 8003060: 68fb ldr r3, [r7, #12] + 8003062: 0018 movs r0, r3 + 8003064: f000 f8e3 bl 800322e + 8003068: 1e03 subs r3, r0, #0 + 800306a: d001 beq.n 8003070 { return HAL_ERROR; - 800308c: 2301 movs r3, #1 - 800308e: e014 b.n 80030ba + 800306c: 2301 movs r3, #1 + 800306e: e014 b.n 800309a } /* Send LSB of Memory Address */ hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); - 8003090: 2308 movs r3, #8 - 8003092: 18fb adds r3, r7, r3 - 8003094: 881b ldrh r3, [r3, #0] - 8003096: b2da uxtb r2, r3 - 8003098: 68fb ldr r3, [r7, #12] - 800309a: 681b ldr r3, [r3, #0] - 800309c: 629a str r2, [r3, #40] ; 0x28 + 8003070: 2308 movs r3, #8 + 8003072: 18fb adds r3, r7, r3 + 8003074: 881b ldrh r3, [r3, #0] + 8003076: b2da uxtb r2, r3 + 8003078: 68fb ldr r3, [r7, #12] + 800307a: 681b ldr r3, [r3, #0] + 800307c: 629a str r2, [r3, #40] ; 0x28 } /* Wait until TCR flag is set */ if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) - 800309e: 6a3a ldr r2, [r7, #32] - 80030a0: 68f8 ldr r0, [r7, #12] - 80030a2: 6a7b ldr r3, [r7, #36] ; 0x24 - 80030a4: 9300 str r3, [sp, #0] - 80030a6: 0013 movs r3, r2 - 80030a8: 2200 movs r2, #0 - 80030aa: 2180 movs r1, #128 ; 0x80 - 80030ac: f000 f890 bl 80031d0 - 80030b0: 1e03 subs r3, r0, #0 - 80030b2: d001 beq.n 80030b8 + 800307e: 6a3a ldr r2, [r7, #32] + 8003080: 68f8 ldr r0, [r7, #12] + 8003082: 6a7b ldr r3, [r7, #36] ; 0x24 + 8003084: 9300 str r3, [sp, #0] + 8003086: 0013 movs r3, r2 + 8003088: 2200 movs r2, #0 + 800308a: 2180 movs r1, #128 ; 0x80 + 800308c: f000 f890 bl 80031b0 + 8003090: 1e03 subs r3, r0, #0 + 8003092: d001 beq.n 8003098 { return HAL_ERROR; - 80030b4: 2301 movs r3, #1 - 80030b6: e000 b.n 80030ba + 8003094: 2301 movs r3, #1 + 8003096: e000 b.n 800309a } return HAL_OK; - 80030b8: 2300 movs r3, #0 + 8003098: 2300 movs r3, #0 } - 80030ba: 0018 movs r0, r3 - 80030bc: 46bd mov sp, r7 - 80030be: b004 add sp, #16 - 80030c0: bdb0 pop {r4, r5, r7, pc} - 80030c2: 46c0 nop ; (mov r8, r8) - 80030c4: 80002000 .word 0x80002000 + 800309a: 0018 movs r0, r3 + 800309c: 46bd mov sp, r7 + 800309e: b004 add sp, #16 + 80030a0: bdb0 pop {r4, r5, r7, pc} + 80030a2: 46c0 nop ; (mov r8, r8) + 80030a4: 80002000 .word 0x80002000 -080030c8 : +080030a8 : * @retval HAL status */ static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart) { - 80030c8: b5b0 push {r4, r5, r7, lr} - 80030ca: b086 sub sp, #24 - 80030cc: af02 add r7, sp, #8 - 80030ce: 60f8 str r0, [r7, #12] - 80030d0: 000c movs r4, r1 - 80030d2: 0010 movs r0, r2 - 80030d4: 0019 movs r1, r3 - 80030d6: 250a movs r5, #10 - 80030d8: 197b adds r3, r7, r5 - 80030da: 1c22 adds r2, r4, #0 - 80030dc: 801a strh r2, [r3, #0] - 80030de: 2308 movs r3, #8 - 80030e0: 18fb adds r3, r7, r3 - 80030e2: 1c02 adds r2, r0, #0 - 80030e4: 801a strh r2, [r3, #0] - 80030e6: 1dbb adds r3, r7, #6 - 80030e8: 1c0a adds r2, r1, #0 - 80030ea: 801a strh r2, [r3, #0] + 80030a8: b5b0 push {r4, r5, r7, lr} + 80030aa: b086 sub sp, #24 + 80030ac: af02 add r7, sp, #8 + 80030ae: 60f8 str r0, [r7, #12] + 80030b0: 000c movs r4, r1 + 80030b2: 0010 movs r0, r2 + 80030b4: 0019 movs r1, r3 + 80030b6: 250a movs r5, #10 + 80030b8: 197b adds r3, r7, r5 + 80030ba: 1c22 adds r2, r4, #0 + 80030bc: 801a strh r2, [r3, #0] + 80030be: 2308 movs r3, #8 + 80030c0: 18fb adds r3, r7, r3 + 80030c2: 1c02 adds r2, r0, #0 + 80030c4: 801a strh r2, [r3, #0] + 80030c6: 1dbb adds r3, r7, #6 + 80030c8: 1c0a adds r2, r1, #0 + 80030ca: 801a strh r2, [r3, #0] I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE); - 80030ec: 1dbb adds r3, r7, #6 - 80030ee: 881b ldrh r3, [r3, #0] - 80030f0: b2da uxtb r2, r3 - 80030f2: 197b adds r3, r7, r5 - 80030f4: 8819 ldrh r1, [r3, #0] - 80030f6: 68f8 ldr r0, [r7, #12] - 80030f8: 4b23 ldr r3, [pc, #140] ; (8003188 ) - 80030fa: 9300 str r3, [sp, #0] - 80030fc: 2300 movs r3, #0 - 80030fe: f000 fa21 bl 8003544 + 80030cc: 1dbb adds r3, r7, #6 + 80030ce: 881b ldrh r3, [r3, #0] + 80030d0: b2da uxtb r2, r3 + 80030d2: 197b adds r3, r7, r5 + 80030d4: 8819 ldrh r1, [r3, #0] + 80030d6: 68f8 ldr r0, [r7, #12] + 80030d8: 4b23 ldr r3, [pc, #140] ; (8003168 ) + 80030da: 9300 str r3, [sp, #0] + 80030dc: 2300 movs r3, #0 + 80030de: f000 fa21 bl 8003524 /* Wait until TXIS flag is set */ if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) - 8003102: 6a7a ldr r2, [r7, #36] ; 0x24 - 8003104: 6a39 ldr r1, [r7, #32] - 8003106: 68fb ldr r3, [r7, #12] - 8003108: 0018 movs r0, r3 - 800310a: f000 f8a0 bl 800324e - 800310e: 1e03 subs r3, r0, #0 - 8003110: d001 beq.n 8003116 + 80030e2: 6a7a ldr r2, [r7, #36] ; 0x24 + 80030e4: 6a39 ldr r1, [r7, #32] + 80030e6: 68fb ldr r3, [r7, #12] + 80030e8: 0018 movs r0, r3 + 80030ea: f000 f8a0 bl 800322e + 80030ee: 1e03 subs r3, r0, #0 + 80030f0: d001 beq.n 80030f6 { return HAL_ERROR; - 8003112: 2301 movs r3, #1 - 8003114: e033 b.n 800317e + 80030f2: 2301 movs r3, #1 + 80030f4: e033 b.n 800315e } /* If Memory address size is 8Bit */ if (MemAddSize == I2C_MEMADD_SIZE_8BIT) - 8003116: 1dbb adds r3, r7, #6 - 8003118: 881b ldrh r3, [r3, #0] - 800311a: 2b01 cmp r3, #1 - 800311c: d107 bne.n 800312e + 80030f6: 1dbb adds r3, r7, #6 + 80030f8: 881b ldrh r3, [r3, #0] + 80030fa: 2b01 cmp r3, #1 + 80030fc: d107 bne.n 800310e { /* Send Memory Address */ hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); - 800311e: 2308 movs r3, #8 - 8003120: 18fb adds r3, r7, r3 - 8003122: 881b ldrh r3, [r3, #0] - 8003124: b2da uxtb r2, r3 - 8003126: 68fb ldr r3, [r7, #12] - 8003128: 681b ldr r3, [r3, #0] - 800312a: 629a str r2, [r3, #40] ; 0x28 - 800312c: e019 b.n 8003162 + 80030fe: 2308 movs r3, #8 + 8003100: 18fb adds r3, r7, r3 + 8003102: 881b ldrh r3, [r3, #0] + 8003104: b2da uxtb r2, r3 + 8003106: 68fb ldr r3, [r7, #12] + 8003108: 681b ldr r3, [r3, #0] + 800310a: 629a str r2, [r3, #40] ; 0x28 + 800310c: e019 b.n 8003142 } /* If Memory address size is 16Bit */ else { /* Send MSB of Memory Address */ hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); - 800312e: 2308 movs r3, #8 - 8003130: 18fb adds r3, r7, r3 - 8003132: 881b ldrh r3, [r3, #0] - 8003134: 0a1b lsrs r3, r3, #8 - 8003136: b29b uxth r3, r3 - 8003138: b2da uxtb r2, r3 - 800313a: 68fb ldr r3, [r7, #12] - 800313c: 681b ldr r3, [r3, #0] - 800313e: 629a str r2, [r3, #40] ; 0x28 + 800310e: 2308 movs r3, #8 + 8003110: 18fb adds r3, r7, r3 + 8003112: 881b ldrh r3, [r3, #0] + 8003114: 0a1b lsrs r3, r3, #8 + 8003116: b29b uxth r3, r3 + 8003118: b2da uxtb r2, r3 + 800311a: 68fb ldr r3, [r7, #12] + 800311c: 681b ldr r3, [r3, #0] + 800311e: 629a str r2, [r3, #40] ; 0x28 /* Wait until TXIS flag is set */ if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) - 8003140: 6a7a ldr r2, [r7, #36] ; 0x24 - 8003142: 6a39 ldr r1, [r7, #32] - 8003144: 68fb ldr r3, [r7, #12] - 8003146: 0018 movs r0, r3 - 8003148: f000 f881 bl 800324e - 800314c: 1e03 subs r3, r0, #0 - 800314e: d001 beq.n 8003154 + 8003120: 6a7a ldr r2, [r7, #36] ; 0x24 + 8003122: 6a39 ldr r1, [r7, #32] + 8003124: 68fb ldr r3, [r7, #12] + 8003126: 0018 movs r0, r3 + 8003128: f000 f881 bl 800322e + 800312c: 1e03 subs r3, r0, #0 + 800312e: d001 beq.n 8003134 { return HAL_ERROR; - 8003150: 2301 movs r3, #1 - 8003152: e014 b.n 800317e + 8003130: 2301 movs r3, #1 + 8003132: e014 b.n 800315e } /* Send LSB of Memory Address */ hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); - 8003154: 2308 movs r3, #8 - 8003156: 18fb adds r3, r7, r3 - 8003158: 881b ldrh r3, [r3, #0] - 800315a: b2da uxtb r2, r3 - 800315c: 68fb ldr r3, [r7, #12] - 800315e: 681b ldr r3, [r3, #0] - 8003160: 629a str r2, [r3, #40] ; 0x28 + 8003134: 2308 movs r3, #8 + 8003136: 18fb adds r3, r7, r3 + 8003138: 881b ldrh r3, [r3, #0] + 800313a: b2da uxtb r2, r3 + 800313c: 68fb ldr r3, [r7, #12] + 800313e: 681b ldr r3, [r3, #0] + 8003140: 629a str r2, [r3, #40] ; 0x28 } /* Wait until TC flag is set */ if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) - 8003162: 6a3a ldr r2, [r7, #32] - 8003164: 68f8 ldr r0, [r7, #12] - 8003166: 6a7b ldr r3, [r7, #36] ; 0x24 - 8003168: 9300 str r3, [sp, #0] - 800316a: 0013 movs r3, r2 - 800316c: 2200 movs r2, #0 - 800316e: 2140 movs r1, #64 ; 0x40 - 8003170: f000 f82e bl 80031d0 - 8003174: 1e03 subs r3, r0, #0 - 8003176: d001 beq.n 800317c + 8003142: 6a3a ldr r2, [r7, #32] + 8003144: 68f8 ldr r0, [r7, #12] + 8003146: 6a7b ldr r3, [r7, #36] ; 0x24 + 8003148: 9300 str r3, [sp, #0] + 800314a: 0013 movs r3, r2 + 800314c: 2200 movs r2, #0 + 800314e: 2140 movs r1, #64 ; 0x40 + 8003150: f000 f82e bl 80031b0 + 8003154: 1e03 subs r3, r0, #0 + 8003156: d001 beq.n 800315c { return HAL_ERROR; - 8003178: 2301 movs r3, #1 - 800317a: e000 b.n 800317e + 8003158: 2301 movs r3, #1 + 800315a: e000 b.n 800315e } return HAL_OK; - 800317c: 2300 movs r3, #0 + 800315c: 2300 movs r3, #0 } - 800317e: 0018 movs r0, r3 - 8003180: 46bd mov sp, r7 - 8003182: b004 add sp, #16 - 8003184: bdb0 pop {r4, r5, r7, pc} - 8003186: 46c0 nop ; (mov r8, r8) - 8003188: 80002000 .word 0x80002000 + 800315e: 0018 movs r0, r3 + 8003160: 46bd mov sp, r7 + 8003162: b004 add sp, #16 + 8003164: bdb0 pop {r4, r5, r7, pc} + 8003166: 46c0 nop ; (mov r8, r8) + 8003168: 80002000 .word 0x80002000 -0800318c : +0800316c : * @brief I2C Tx data register flush process. * @param hi2c I2C handle. * @retval None */ static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) { - 800318c: b580 push {r7, lr} - 800318e: b082 sub sp, #8 - 8003190: af00 add r7, sp, #0 - 8003192: 6078 str r0, [r7, #4] + 800316c: b580 push {r7, lr} + 800316e: b082 sub sp, #8 + 8003170: af00 add r7, sp, #0 + 8003172: 6078 str r0, [r7, #4] /* If a pending TXIS flag is set */ /* Write a dummy data in TXDR to clear it */ if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) - 8003194: 687b ldr r3, [r7, #4] - 8003196: 681b ldr r3, [r3, #0] - 8003198: 699b ldr r3, [r3, #24] - 800319a: 2202 movs r2, #2 - 800319c: 4013 ands r3, r2 - 800319e: 2b02 cmp r3, #2 - 80031a0: d103 bne.n 80031aa + 8003174: 687b ldr r3, [r7, #4] + 8003176: 681b ldr r3, [r3, #0] + 8003178: 699b ldr r3, [r3, #24] + 800317a: 2202 movs r2, #2 + 800317c: 4013 ands r3, r2 + 800317e: 2b02 cmp r3, #2 + 8003180: d103 bne.n 800318a { hi2c->Instance->TXDR = 0x00U; - 80031a2: 687b ldr r3, [r7, #4] - 80031a4: 681b ldr r3, [r3, #0] - 80031a6: 2200 movs r2, #0 - 80031a8: 629a str r2, [r3, #40] ; 0x28 + 8003182: 687b ldr r3, [r7, #4] + 8003184: 681b ldr r3, [r3, #0] + 8003186: 2200 movs r2, #0 + 8003188: 629a str r2, [r3, #40] ; 0x28 } /* Flush TX register if not empty */ if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) - 80031aa: 687b ldr r3, [r7, #4] - 80031ac: 681b ldr r3, [r3, #0] - 80031ae: 699b ldr r3, [r3, #24] - 80031b0: 2201 movs r2, #1 - 80031b2: 4013 ands r3, r2 - 80031b4: 2b01 cmp r3, #1 - 80031b6: d007 beq.n 80031c8 + 800318a: 687b ldr r3, [r7, #4] + 800318c: 681b ldr r3, [r3, #0] + 800318e: 699b ldr r3, [r3, #24] + 8003190: 2201 movs r2, #1 + 8003192: 4013 ands r3, r2 + 8003194: 2b01 cmp r3, #1 + 8003196: d007 beq.n 80031a8 { __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); - 80031b8: 687b ldr r3, [r7, #4] - 80031ba: 681b ldr r3, [r3, #0] - 80031bc: 699a ldr r2, [r3, #24] - 80031be: 687b ldr r3, [r7, #4] - 80031c0: 681b ldr r3, [r3, #0] - 80031c2: 2101 movs r1, #1 - 80031c4: 430a orrs r2, r1 - 80031c6: 619a str r2, [r3, #24] + 8003198: 687b ldr r3, [r7, #4] + 800319a: 681b ldr r3, [r3, #0] + 800319c: 699a ldr r2, [r3, #24] + 800319e: 687b ldr r3, [r7, #4] + 80031a0: 681b ldr r3, [r3, #0] + 80031a2: 2101 movs r1, #1 + 80031a4: 430a orrs r2, r1 + 80031a6: 619a str r2, [r3, #24] } } - 80031c8: 46c0 nop ; (mov r8, r8) - 80031ca: 46bd mov sp, r7 - 80031cc: b002 add sp, #8 - 80031ce: bd80 pop {r7, pc} + 80031a8: 46c0 nop ; (mov r8, r8) + 80031aa: 46bd mov sp, r7 + 80031ac: b002 add sp, #8 + 80031ae: bd80 pop {r7, pc} -080031d0 : +080031b0 : * @param Tickstart Tick start value * @retval HAL status */ static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, uint32_t Timeout, uint32_t Tickstart) { - 80031d0: b580 push {r7, lr} - 80031d2: b084 sub sp, #16 - 80031d4: af00 add r7, sp, #0 - 80031d6: 60f8 str r0, [r7, #12] - 80031d8: 60b9 str r1, [r7, #8] - 80031da: 603b str r3, [r7, #0] - 80031dc: 1dfb adds r3, r7, #7 - 80031de: 701a strb r2, [r3, #0] + 80031b0: b580 push {r7, lr} + 80031b2: b084 sub sp, #16 + 80031b4: af00 add r7, sp, #0 + 80031b6: 60f8 str r0, [r7, #12] + 80031b8: 60b9 str r1, [r7, #8] + 80031ba: 603b str r3, [r7, #0] + 80031bc: 1dfb adds r3, r7, #7 + 80031be: 701a strb r2, [r3, #0] while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) - 80031e0: e021 b.n 8003226 + 80031c0: e021 b.n 8003206 { /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 80031e2: 683b ldr r3, [r7, #0] - 80031e4: 3301 adds r3, #1 - 80031e6: d01e beq.n 8003226 + 80031c2: 683b ldr r3, [r7, #0] + 80031c4: 3301 adds r3, #1 + 80031c6: d01e beq.n 8003206 { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 80031e8: f7fe fdd0 bl 8001d8c - 80031ec: 0002 movs r2, r0 - 80031ee: 69bb ldr r3, [r7, #24] - 80031f0: 1ad3 subs r3, r2, r3 - 80031f2: 683a ldr r2, [r7, #0] - 80031f4: 429a cmp r2, r3 - 80031f6: d302 bcc.n 80031fe - 80031f8: 683b ldr r3, [r7, #0] - 80031fa: 2b00 cmp r3, #0 - 80031fc: d113 bne.n 8003226 + 80031c8: f7fe fdd0 bl 8001d6c + 80031cc: 0002 movs r2, r0 + 80031ce: 69bb ldr r3, [r7, #24] + 80031d0: 1ad3 subs r3, r2, r3 + 80031d2: 683a ldr r2, [r7, #0] + 80031d4: 429a cmp r2, r3 + 80031d6: d302 bcc.n 80031de + 80031d8: 683b ldr r3, [r7, #0] + 80031da: 2b00 cmp r3, #0 + 80031dc: d113 bne.n 8003206 { hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; - 80031fe: 68fb ldr r3, [r7, #12] - 8003200: 6c5b ldr r3, [r3, #68] ; 0x44 - 8003202: 2220 movs r2, #32 - 8003204: 431a orrs r2, r3 - 8003206: 68fb ldr r3, [r7, #12] - 8003208: 645a str r2, [r3, #68] ; 0x44 + 80031de: 68fb ldr r3, [r7, #12] + 80031e0: 6c5b ldr r3, [r3, #68] ; 0x44 + 80031e2: 2220 movs r2, #32 + 80031e4: 431a orrs r2, r3 + 80031e6: 68fb ldr r3, [r7, #12] + 80031e8: 645a str r2, [r3, #68] ; 0x44 hi2c->State = HAL_I2C_STATE_READY; - 800320a: 68fb ldr r3, [r7, #12] - 800320c: 2241 movs r2, #65 ; 0x41 - 800320e: 2120 movs r1, #32 - 8003210: 5499 strb r1, [r3, r2] + 80031ea: 68fb ldr r3, [r7, #12] + 80031ec: 2241 movs r2, #65 ; 0x41 + 80031ee: 2120 movs r1, #32 + 80031f0: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_NONE; - 8003212: 68fb ldr r3, [r7, #12] - 8003214: 2242 movs r2, #66 ; 0x42 - 8003216: 2100 movs r1, #0 - 8003218: 5499 strb r1, [r3, r2] + 80031f2: 68fb ldr r3, [r7, #12] + 80031f4: 2242 movs r2, #66 ; 0x42 + 80031f6: 2100 movs r1, #0 + 80031f8: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 800321a: 68fb ldr r3, [r7, #12] - 800321c: 2240 movs r2, #64 ; 0x40 - 800321e: 2100 movs r1, #0 - 8003220: 5499 strb r1, [r3, r2] + 80031fa: 68fb ldr r3, [r7, #12] + 80031fc: 2240 movs r2, #64 ; 0x40 + 80031fe: 2100 movs r1, #0 + 8003200: 5499 strb r1, [r3, r2] return HAL_ERROR; - 8003222: 2301 movs r3, #1 - 8003224: e00f b.n 8003246 + 8003202: 2301 movs r3, #1 + 8003204: e00f b.n 8003226 while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) - 8003226: 68fb ldr r3, [r7, #12] - 8003228: 681b ldr r3, [r3, #0] - 800322a: 699b ldr r3, [r3, #24] - 800322c: 68ba ldr r2, [r7, #8] - 800322e: 4013 ands r3, r2 - 8003230: 68ba ldr r2, [r7, #8] - 8003232: 1ad3 subs r3, r2, r3 - 8003234: 425a negs r2, r3 - 8003236: 4153 adcs r3, r2 - 8003238: b2db uxtb r3, r3 - 800323a: 001a movs r2, r3 - 800323c: 1dfb adds r3, r7, #7 - 800323e: 781b ldrb r3, [r3, #0] - 8003240: 429a cmp r2, r3 - 8003242: d0ce beq.n 80031e2 + 8003206: 68fb ldr r3, [r7, #12] + 8003208: 681b ldr r3, [r3, #0] + 800320a: 699b ldr r3, [r3, #24] + 800320c: 68ba ldr r2, [r7, #8] + 800320e: 4013 ands r3, r2 + 8003210: 68ba ldr r2, [r7, #8] + 8003212: 1ad3 subs r3, r2, r3 + 8003214: 425a negs r2, r3 + 8003216: 4153 adcs r3, r2 + 8003218: b2db uxtb r3, r3 + 800321a: 001a movs r2, r3 + 800321c: 1dfb adds r3, r7, #7 + 800321e: 781b ldrb r3, [r3, #0] + 8003220: 429a cmp r2, r3 + 8003222: d0ce beq.n 80031c2 } } } return HAL_OK; - 8003244: 2300 movs r3, #0 + 8003224: 2300 movs r3, #0 } - 8003246: 0018 movs r0, r3 - 8003248: 46bd mov sp, r7 - 800324a: b004 add sp, #16 - 800324c: bd80 pop {r7, pc} + 8003226: 0018 movs r0, r3 + 8003228: 46bd mov sp, r7 + 800322a: b004 add sp, #16 + 800322c: bd80 pop {r7, pc} -0800324e : +0800322e : * @param Tickstart Tick start value * @retval HAL status */ static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart) { - 800324e: b580 push {r7, lr} - 8003250: b084 sub sp, #16 - 8003252: af00 add r7, sp, #0 - 8003254: 60f8 str r0, [r7, #12] - 8003256: 60b9 str r1, [r7, #8] - 8003258: 607a str r2, [r7, #4] + 800322e: b580 push {r7, lr} + 8003230: b084 sub sp, #16 + 8003232: af00 add r7, sp, #0 + 8003234: 60f8 str r0, [r7, #12] + 8003236: 60b9 str r1, [r7, #8] + 8003238: 607a str r2, [r7, #4] while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) - 800325a: e02b b.n 80032b4 + 800323a: e02b b.n 8003294 { /* Check if an error is detected */ if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) - 800325c: 687a ldr r2, [r7, #4] - 800325e: 68b9 ldr r1, [r7, #8] - 8003260: 68fb ldr r3, [r7, #12] - 8003262: 0018 movs r0, r3 - 8003264: f000 f86e bl 8003344 - 8003268: 1e03 subs r3, r0, #0 - 800326a: d001 beq.n 8003270 + 800323c: 687a ldr r2, [r7, #4] + 800323e: 68b9 ldr r1, [r7, #8] + 8003240: 68fb ldr r3, [r7, #12] + 8003242: 0018 movs r0, r3 + 8003244: f000 f86e bl 8003324 + 8003248: 1e03 subs r3, r0, #0 + 800324a: d001 beq.n 8003250 { return HAL_ERROR; - 800326c: 2301 movs r3, #1 - 800326e: e029 b.n 80032c4 + 800324c: 2301 movs r3, #1 + 800324e: e029 b.n 80032a4 } /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 8003270: 68bb ldr r3, [r7, #8] - 8003272: 3301 adds r3, #1 - 8003274: d01e beq.n 80032b4 + 8003250: 68bb ldr r3, [r7, #8] + 8003252: 3301 adds r3, #1 + 8003254: d01e beq.n 8003294 { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 8003276: f7fe fd89 bl 8001d8c - 800327a: 0002 movs r2, r0 - 800327c: 687b ldr r3, [r7, #4] - 800327e: 1ad3 subs r3, r2, r3 - 8003280: 68ba ldr r2, [r7, #8] - 8003282: 429a cmp r2, r3 - 8003284: d302 bcc.n 800328c - 8003286: 68bb ldr r3, [r7, #8] - 8003288: 2b00 cmp r3, #0 - 800328a: d113 bne.n 80032b4 + 8003256: f7fe fd89 bl 8001d6c + 800325a: 0002 movs r2, r0 + 800325c: 687b ldr r3, [r7, #4] + 800325e: 1ad3 subs r3, r2, r3 + 8003260: 68ba ldr r2, [r7, #8] + 8003262: 429a cmp r2, r3 + 8003264: d302 bcc.n 800326c + 8003266: 68bb ldr r3, [r7, #8] + 8003268: 2b00 cmp r3, #0 + 800326a: d113 bne.n 8003294 { hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; - 800328c: 68fb ldr r3, [r7, #12] - 800328e: 6c5b ldr r3, [r3, #68] ; 0x44 - 8003290: 2220 movs r2, #32 - 8003292: 431a orrs r2, r3 - 8003294: 68fb ldr r3, [r7, #12] - 8003296: 645a str r2, [r3, #68] ; 0x44 + 800326c: 68fb ldr r3, [r7, #12] + 800326e: 6c5b ldr r3, [r3, #68] ; 0x44 + 8003270: 2220 movs r2, #32 + 8003272: 431a orrs r2, r3 + 8003274: 68fb ldr r3, [r7, #12] + 8003276: 645a str r2, [r3, #68] ; 0x44 hi2c->State = HAL_I2C_STATE_READY; - 8003298: 68fb ldr r3, [r7, #12] - 800329a: 2241 movs r2, #65 ; 0x41 - 800329c: 2120 movs r1, #32 - 800329e: 5499 strb r1, [r3, r2] + 8003278: 68fb ldr r3, [r7, #12] + 800327a: 2241 movs r2, #65 ; 0x41 + 800327c: 2120 movs r1, #32 + 800327e: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_NONE; - 80032a0: 68fb ldr r3, [r7, #12] - 80032a2: 2242 movs r2, #66 ; 0x42 - 80032a4: 2100 movs r1, #0 - 80032a6: 5499 strb r1, [r3, r2] + 8003280: 68fb ldr r3, [r7, #12] + 8003282: 2242 movs r2, #66 ; 0x42 + 8003284: 2100 movs r1, #0 + 8003286: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80032a8: 68fb ldr r3, [r7, #12] - 80032aa: 2240 movs r2, #64 ; 0x40 - 80032ac: 2100 movs r1, #0 - 80032ae: 5499 strb r1, [r3, r2] + 8003288: 68fb ldr r3, [r7, #12] + 800328a: 2240 movs r2, #64 ; 0x40 + 800328c: 2100 movs r1, #0 + 800328e: 5499 strb r1, [r3, r2] return HAL_ERROR; - 80032b0: 2301 movs r3, #1 - 80032b2: e007 b.n 80032c4 + 8003290: 2301 movs r3, #1 + 8003292: e007 b.n 80032a4 while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) - 80032b4: 68fb ldr r3, [r7, #12] - 80032b6: 681b ldr r3, [r3, #0] - 80032b8: 699b ldr r3, [r3, #24] - 80032ba: 2202 movs r2, #2 - 80032bc: 4013 ands r3, r2 - 80032be: 2b02 cmp r3, #2 - 80032c0: d1cc bne.n 800325c + 8003294: 68fb ldr r3, [r7, #12] + 8003296: 681b ldr r3, [r3, #0] + 8003298: 699b ldr r3, [r3, #24] + 800329a: 2202 movs r2, #2 + 800329c: 4013 ands r3, r2 + 800329e: 2b02 cmp r3, #2 + 80032a0: d1cc bne.n 800323c } } } return HAL_OK; - 80032c2: 2300 movs r3, #0 + 80032a2: 2300 movs r3, #0 } - 80032c4: 0018 movs r0, r3 - 80032c6: 46bd mov sp, r7 - 80032c8: b004 add sp, #16 - 80032ca: bd80 pop {r7, pc} + 80032a4: 0018 movs r0, r3 + 80032a6: 46bd mov sp, r7 + 80032a8: b004 add sp, #16 + 80032aa: bd80 pop {r7, pc} -080032cc : +080032ac : * @param Tickstart Tick start value * @retval HAL status */ static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart) { - 80032cc: b580 push {r7, lr} - 80032ce: b084 sub sp, #16 - 80032d0: af00 add r7, sp, #0 - 80032d2: 60f8 str r0, [r7, #12] - 80032d4: 60b9 str r1, [r7, #8] - 80032d6: 607a str r2, [r7, #4] + 80032ac: b580 push {r7, lr} + 80032ae: b084 sub sp, #16 + 80032b0: af00 add r7, sp, #0 + 80032b2: 60f8 str r0, [r7, #12] + 80032b4: 60b9 str r1, [r7, #8] + 80032b6: 607a str r2, [r7, #4] while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) - 80032d8: e028 b.n 800332c + 80032b8: e028 b.n 800330c { /* Check if an error is detected */ if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) - 80032da: 687a ldr r2, [r7, #4] - 80032dc: 68b9 ldr r1, [r7, #8] - 80032de: 68fb ldr r3, [r7, #12] - 80032e0: 0018 movs r0, r3 - 80032e2: f000 f82f bl 8003344 - 80032e6: 1e03 subs r3, r0, #0 - 80032e8: d001 beq.n 80032ee + 80032ba: 687a ldr r2, [r7, #4] + 80032bc: 68b9 ldr r1, [r7, #8] + 80032be: 68fb ldr r3, [r7, #12] + 80032c0: 0018 movs r0, r3 + 80032c2: f000 f82f bl 8003324 + 80032c6: 1e03 subs r3, r0, #0 + 80032c8: d001 beq.n 80032ce { return HAL_ERROR; - 80032ea: 2301 movs r3, #1 - 80032ec: e026 b.n 800333c + 80032ca: 2301 movs r3, #1 + 80032cc: e026 b.n 800331c } /* Check for the Timeout */ if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 80032ee: f7fe fd4d bl 8001d8c - 80032f2: 0002 movs r2, r0 - 80032f4: 687b ldr r3, [r7, #4] - 80032f6: 1ad3 subs r3, r2, r3 - 80032f8: 68ba ldr r2, [r7, #8] - 80032fa: 429a cmp r2, r3 - 80032fc: d302 bcc.n 8003304 - 80032fe: 68bb ldr r3, [r7, #8] - 8003300: 2b00 cmp r3, #0 - 8003302: d113 bne.n 800332c + 80032ce: f7fe fd4d bl 8001d6c + 80032d2: 0002 movs r2, r0 + 80032d4: 687b ldr r3, [r7, #4] + 80032d6: 1ad3 subs r3, r2, r3 + 80032d8: 68ba ldr r2, [r7, #8] + 80032da: 429a cmp r2, r3 + 80032dc: d302 bcc.n 80032e4 + 80032de: 68bb ldr r3, [r7, #8] + 80032e0: 2b00 cmp r3, #0 + 80032e2: d113 bne.n 800330c { hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; - 8003304: 68fb ldr r3, [r7, #12] - 8003306: 6c5b ldr r3, [r3, #68] ; 0x44 - 8003308: 2220 movs r2, #32 - 800330a: 431a orrs r2, r3 - 800330c: 68fb ldr r3, [r7, #12] - 800330e: 645a str r2, [r3, #68] ; 0x44 + 80032e4: 68fb ldr r3, [r7, #12] + 80032e6: 6c5b ldr r3, [r3, #68] ; 0x44 + 80032e8: 2220 movs r2, #32 + 80032ea: 431a orrs r2, r3 + 80032ec: 68fb ldr r3, [r7, #12] + 80032ee: 645a str r2, [r3, #68] ; 0x44 hi2c->State = HAL_I2C_STATE_READY; - 8003310: 68fb ldr r3, [r7, #12] - 8003312: 2241 movs r2, #65 ; 0x41 - 8003314: 2120 movs r1, #32 - 8003316: 5499 strb r1, [r3, r2] + 80032f0: 68fb ldr r3, [r7, #12] + 80032f2: 2241 movs r2, #65 ; 0x41 + 80032f4: 2120 movs r1, #32 + 80032f6: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_NONE; - 8003318: 68fb ldr r3, [r7, #12] - 800331a: 2242 movs r2, #66 ; 0x42 - 800331c: 2100 movs r1, #0 - 800331e: 5499 strb r1, [r3, r2] + 80032f8: 68fb ldr r3, [r7, #12] + 80032fa: 2242 movs r2, #66 ; 0x42 + 80032fc: 2100 movs r1, #0 + 80032fe: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8003320: 68fb ldr r3, [r7, #12] - 8003322: 2240 movs r2, #64 ; 0x40 - 8003324: 2100 movs r1, #0 - 8003326: 5499 strb r1, [r3, r2] + 8003300: 68fb ldr r3, [r7, #12] + 8003302: 2240 movs r2, #64 ; 0x40 + 8003304: 2100 movs r1, #0 + 8003306: 5499 strb r1, [r3, r2] return HAL_ERROR; - 8003328: 2301 movs r3, #1 - 800332a: e007 b.n 800333c + 8003308: 2301 movs r3, #1 + 800330a: e007 b.n 800331c while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) - 800332c: 68fb ldr r3, [r7, #12] - 800332e: 681b ldr r3, [r3, #0] - 8003330: 699b ldr r3, [r3, #24] - 8003332: 2220 movs r2, #32 - 8003334: 4013 ands r3, r2 - 8003336: 2b20 cmp r3, #32 - 8003338: d1cf bne.n 80032da + 800330c: 68fb ldr r3, [r7, #12] + 800330e: 681b ldr r3, [r3, #0] + 8003310: 699b ldr r3, [r3, #24] + 8003312: 2220 movs r2, #32 + 8003314: 4013 ands r3, r2 + 8003316: 2b20 cmp r3, #32 + 8003318: d1cf bne.n 80032ba } } return HAL_OK; - 800333a: 2300 movs r3, #0 + 800331a: 2300 movs r3, #0 } - 800333c: 0018 movs r0, r3 - 800333e: 46bd mov sp, r7 - 8003340: b004 add sp, #16 - 8003342: bd80 pop {r7, pc} + 800331c: 0018 movs r0, r3 + 800331e: 46bd mov sp, r7 + 8003320: b004 add sp, #16 + 8003322: bd80 pop {r7, pc} -08003344 : +08003324 : * @param Timeout Timeout duration * @param Tickstart Tick start value * @retval HAL status */ static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart) { - 8003344: b590 push {r4, r7, lr} - 8003346: b08b sub sp, #44 ; 0x2c - 8003348: af00 add r7, sp, #0 - 800334a: 60f8 str r0, [r7, #12] - 800334c: 60b9 str r1, [r7, #8] - 800334e: 607a str r2, [r7, #4] + 8003324: b590 push {r4, r7, lr} + 8003326: b08b sub sp, #44 ; 0x2c + 8003328: af00 add r7, sp, #0 + 800332a: 60f8 str r0, [r7, #12] + 800332c: 60b9 str r1, [r7, #8] + 800332e: 607a str r2, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 8003350: 2327 movs r3, #39 ; 0x27 - 8003352: 18fb adds r3, r7, r3 - 8003354: 2200 movs r2, #0 - 8003356: 701a strb r2, [r3, #0] + 8003330: 2327 movs r3, #39 ; 0x27 + 8003332: 18fb adds r3, r7, r3 + 8003334: 2200 movs r2, #0 + 8003336: 701a strb r2, [r3, #0] uint32_t itflag = hi2c->Instance->ISR; - 8003358: 68fb ldr r3, [r7, #12] - 800335a: 681b ldr r3, [r3, #0] - 800335c: 699b ldr r3, [r3, #24] - 800335e: 61bb str r3, [r7, #24] + 8003338: 68fb ldr r3, [r7, #12] + 800333a: 681b ldr r3, [r3, #0] + 800333c: 699b ldr r3, [r3, #24] + 800333e: 61bb str r3, [r7, #24] uint32_t error_code = 0; - 8003360: 2300 movs r3, #0 - 8003362: 623b str r3, [r7, #32] + 8003340: 2300 movs r3, #0 + 8003342: 623b str r3, [r7, #32] uint32_t tickstart = Tickstart; - 8003364: 687b ldr r3, [r7, #4] - 8003366: 61fb str r3, [r7, #28] + 8003344: 687b ldr r3, [r7, #4] + 8003346: 61fb str r3, [r7, #28] uint32_t tmp1; HAL_I2C_ModeTypeDef tmp2; if (HAL_IS_BIT_SET(itflag, I2C_FLAG_AF)) - 8003368: 69bb ldr r3, [r7, #24] - 800336a: 2210 movs r2, #16 - 800336c: 4013 ands r3, r2 - 800336e: d100 bne.n 8003372 - 8003370: e082 b.n 8003478 + 8003348: 69bb ldr r3, [r7, #24] + 800334a: 2210 movs r2, #16 + 800334c: 4013 ands r3, r2 + 800334e: d100 bne.n 8003352 + 8003350: e082 b.n 8003458 { /* Clear NACKF Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8003372: 68fb ldr r3, [r7, #12] - 8003374: 681b ldr r3, [r3, #0] - 8003376: 2210 movs r2, #16 - 8003378: 61da str r2, [r3, #28] + 8003352: 68fb ldr r3, [r7, #12] + 8003354: 681b ldr r3, [r3, #0] + 8003356: 2210 movs r2, #16 + 8003358: 61da str r2, [r3, #28] /* Wait until STOP Flag is set or timeout occurred */ /* AutoEnd should be initiate after AF */ while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) - 800337a: e060 b.n 800343e - 800337c: 2427 movs r4, #39 ; 0x27 - 800337e: 193b adds r3, r7, r4 - 8003380: 193a adds r2, r7, r4 - 8003382: 7812 ldrb r2, [r2, #0] - 8003384: 701a strb r2, [r3, #0] + 800335a: e060 b.n 800341e + 800335c: 2427 movs r4, #39 ; 0x27 + 800335e: 193b adds r3, r7, r4 + 8003360: 193a adds r2, r7, r4 + 8003362: 7812 ldrb r2, [r2, #0] + 8003364: 701a strb r2, [r3, #0] { /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 8003386: 68bb ldr r3, [r7, #8] - 8003388: 3301 adds r3, #1 - 800338a: d058 beq.n 800343e + 8003366: 68bb ldr r3, [r7, #8] + 8003368: 3301 adds r3, #1 + 800336a: d058 beq.n 800341e { if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) - 800338c: f7fe fcfe bl 8001d8c - 8003390: 0002 movs r2, r0 - 8003392: 69fb ldr r3, [r7, #28] - 8003394: 1ad3 subs r3, r2, r3 - 8003396: 68ba ldr r2, [r7, #8] - 8003398: 429a cmp r2, r3 - 800339a: d306 bcc.n 80033aa - 800339c: 193b adds r3, r7, r4 - 800339e: 193a adds r2, r7, r4 - 80033a0: 7812 ldrb r2, [r2, #0] - 80033a2: 701a strb r2, [r3, #0] - 80033a4: 68bb ldr r3, [r7, #8] - 80033a6: 2b00 cmp r3, #0 - 80033a8: d149 bne.n 800343e + 800336c: f7fe fcfe bl 8001d6c + 8003370: 0002 movs r2, r0 + 8003372: 69fb ldr r3, [r7, #28] + 8003374: 1ad3 subs r3, r2, r3 + 8003376: 68ba ldr r2, [r7, #8] + 8003378: 429a cmp r2, r3 + 800337a: d306 bcc.n 800338a + 800337c: 193b adds r3, r7, r4 + 800337e: 193a adds r2, r7, r4 + 8003380: 7812 ldrb r2, [r2, #0] + 8003382: 701a strb r2, [r3, #0] + 8003384: 68bb ldr r3, [r7, #8] + 8003386: 2b00 cmp r3, #0 + 8003388: d149 bne.n 800341e { tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); - 80033aa: 68fb ldr r3, [r7, #12] - 80033ac: 681b ldr r3, [r3, #0] - 80033ae: 685a ldr r2, [r3, #4] - 80033b0: 2380 movs r3, #128 ; 0x80 - 80033b2: 01db lsls r3, r3, #7 - 80033b4: 4013 ands r3, r2 - 80033b6: 617b str r3, [r7, #20] + 800338a: 68fb ldr r3, [r7, #12] + 800338c: 681b ldr r3, [r3, #0] + 800338e: 685a ldr r2, [r3, #4] + 8003390: 2380 movs r3, #128 ; 0x80 + 8003392: 01db lsls r3, r3, #7 + 8003394: 4013 ands r3, r2 + 8003396: 617b str r3, [r7, #20] tmp2 = hi2c->Mode; - 80033b8: 2013 movs r0, #19 - 80033ba: 183b adds r3, r7, r0 - 80033bc: 68fa ldr r2, [r7, #12] - 80033be: 2142 movs r1, #66 ; 0x42 - 80033c0: 5c52 ldrb r2, [r2, r1] - 80033c2: 701a strb r2, [r3, #0] + 8003398: 2013 movs r0, #19 + 800339a: 183b adds r3, r7, r0 + 800339c: 68fa ldr r2, [r7, #12] + 800339e: 2142 movs r1, #66 ; 0x42 + 80033a0: 5c52 ldrb r2, [r2, r1] + 80033a2: 701a strb r2, [r3, #0] /* In case of I2C still busy, try to regenerate a STOP manually */ if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ - 80033c4: 68fb ldr r3, [r7, #12] - 80033c6: 681b ldr r3, [r3, #0] - 80033c8: 699a ldr r2, [r3, #24] - 80033ca: 2380 movs r3, #128 ; 0x80 - 80033cc: 021b lsls r3, r3, #8 - 80033ce: 401a ands r2, r3 - 80033d0: 2380 movs r3, #128 ; 0x80 - 80033d2: 021b lsls r3, r3, #8 - 80033d4: 429a cmp r2, r3 - 80033d6: d126 bne.n 8003426 - 80033d8: 697a ldr r2, [r7, #20] - 80033da: 2380 movs r3, #128 ; 0x80 - 80033dc: 01db lsls r3, r3, #7 - 80033de: 429a cmp r2, r3 - 80033e0: d021 beq.n 8003426 + 80033a4: 68fb ldr r3, [r7, #12] + 80033a6: 681b ldr r3, [r3, #0] + 80033a8: 699a ldr r2, [r3, #24] + 80033aa: 2380 movs r3, #128 ; 0x80 + 80033ac: 021b lsls r3, r3, #8 + 80033ae: 401a ands r2, r3 + 80033b0: 2380 movs r3, #128 ; 0x80 + 80033b2: 021b lsls r3, r3, #8 + 80033b4: 429a cmp r2, r3 + 80033b6: d126 bne.n 8003406 + 80033b8: 697a ldr r2, [r7, #20] + 80033ba: 2380 movs r3, #128 ; 0x80 + 80033bc: 01db lsls r3, r3, #7 + 80033be: 429a cmp r2, r3 + 80033c0: d021 beq.n 8003406 (tmp1 != I2C_CR2_STOP) && \ - 80033e2: 183b adds r3, r7, r0 - 80033e4: 781b ldrb r3, [r3, #0] - 80033e6: 2b20 cmp r3, #32 - 80033e8: d01d beq.n 8003426 + 80033c2: 183b adds r3, r7, r0 + 80033c4: 781b ldrb r3, [r3, #0] + 80033c6: 2b20 cmp r3, #32 + 80033c8: d01d beq.n 8003406 (tmp2 != HAL_I2C_MODE_SLAVE)) { /* Generate Stop */ hi2c->Instance->CR2 |= I2C_CR2_STOP; - 80033ea: 68fb ldr r3, [r7, #12] - 80033ec: 681b ldr r3, [r3, #0] - 80033ee: 685a ldr r2, [r3, #4] - 80033f0: 68fb ldr r3, [r7, #12] - 80033f2: 681b ldr r3, [r3, #0] - 80033f4: 2180 movs r1, #128 ; 0x80 - 80033f6: 01c9 lsls r1, r1, #7 - 80033f8: 430a orrs r2, r1 - 80033fa: 605a str r2, [r3, #4] + 80033ca: 68fb ldr r3, [r7, #12] + 80033cc: 681b ldr r3, [r3, #0] + 80033ce: 685a ldr r2, [r3, #4] + 80033d0: 68fb ldr r3, [r7, #12] + 80033d2: 681b ldr r3, [r3, #0] + 80033d4: 2180 movs r1, #128 ; 0x80 + 80033d6: 01c9 lsls r1, r1, #7 + 80033d8: 430a orrs r2, r1 + 80033da: 605a str r2, [r3, #4] /* Update Tick with new reference */ tickstart = HAL_GetTick(); - 80033fc: f7fe fcc6 bl 8001d8c - 8003400: 0003 movs r3, r0 - 8003402: 61fb str r3, [r7, #28] + 80033dc: f7fe fcc6 bl 8001d6c + 80033e0: 0003 movs r3, r0 + 80033e2: 61fb str r3, [r7, #28] } while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) - 8003404: e00f b.n 8003426 + 80033e4: e00f b.n 8003406 { /* Check for the Timeout */ if ((HAL_GetTick() - tickstart) > I2C_TIMEOUT_STOPF) - 8003406: f7fe fcc1 bl 8001d8c - 800340a: 0002 movs r2, r0 - 800340c: 69fb ldr r3, [r7, #28] - 800340e: 1ad3 subs r3, r2, r3 - 8003410: 2b19 cmp r3, #25 - 8003412: d908 bls.n 8003426 + 80033e6: f7fe fcc1 bl 8001d6c + 80033ea: 0002 movs r2, r0 + 80033ec: 69fb ldr r3, [r7, #28] + 80033ee: 1ad3 subs r3, r2, r3 + 80033f0: 2b19 cmp r3, #25 + 80033f2: d908 bls.n 8003406 { error_code |=HAL_I2C_ERROR_TIMEOUT; - 8003414: 6a3b ldr r3, [r7, #32] - 8003416: 2220 movs r2, #32 - 8003418: 4313 orrs r3, r2 - 800341a: 623b str r3, [r7, #32] + 80033f4: 6a3b ldr r3, [r7, #32] + 80033f6: 2220 movs r2, #32 + 80033f8: 4313 orrs r3, r2 + 80033fa: 623b str r3, [r7, #32] status = HAL_ERROR; - 800341c: 2327 movs r3, #39 ; 0x27 - 800341e: 18fb adds r3, r7, r3 - 8003420: 2201 movs r2, #1 - 8003422: 701a strb r2, [r3, #0] + 80033fc: 2327 movs r3, #39 ; 0x27 + 80033fe: 18fb adds r3, r7, r3 + 8003400: 2201 movs r2, #1 + 8003402: 701a strb r2, [r3, #0] break; - 8003424: e00b b.n 800343e + 8003404: e00b b.n 800341e while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) - 8003426: 68fb ldr r3, [r7, #12] - 8003428: 681b ldr r3, [r3, #0] - 800342a: 699b ldr r3, [r3, #24] - 800342c: 2220 movs r2, #32 - 800342e: 4013 ands r3, r2 - 8003430: 2127 movs r1, #39 ; 0x27 - 8003432: 187a adds r2, r7, r1 - 8003434: 1879 adds r1, r7, r1 - 8003436: 7809 ldrb r1, [r1, #0] - 8003438: 7011 strb r1, [r2, #0] - 800343a: 2b20 cmp r3, #32 - 800343c: d1e3 bne.n 8003406 + 8003406: 68fb ldr r3, [r7, #12] + 8003408: 681b ldr r3, [r3, #0] + 800340a: 699b ldr r3, [r3, #24] + 800340c: 2220 movs r2, #32 + 800340e: 4013 ands r3, r2 + 8003410: 2127 movs r1, #39 ; 0x27 + 8003412: 187a adds r2, r7, r1 + 8003414: 1879 adds r1, r7, r1 + 8003416: 7809 ldrb r1, [r1, #0] + 8003418: 7011 strb r1, [r2, #0] + 800341a: 2b20 cmp r3, #32 + 800341c: d1e3 bne.n 80033e6 while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) - 800343e: 68fb ldr r3, [r7, #12] - 8003440: 681b ldr r3, [r3, #0] - 8003442: 699b ldr r3, [r3, #24] - 8003444: 2220 movs r2, #32 - 8003446: 4013 ands r3, r2 - 8003448: 2b20 cmp r3, #32 - 800344a: d004 beq.n 8003456 - 800344c: 2327 movs r3, #39 ; 0x27 - 800344e: 18fb adds r3, r7, r3 - 8003450: 781b ldrb r3, [r3, #0] - 8003452: 2b00 cmp r3, #0 - 8003454: d092 beq.n 800337c + 800341e: 68fb ldr r3, [r7, #12] + 8003420: 681b ldr r3, [r3, #0] + 8003422: 699b ldr r3, [r3, #24] + 8003424: 2220 movs r2, #32 + 8003426: 4013 ands r3, r2 + 8003428: 2b20 cmp r3, #32 + 800342a: d004 beq.n 8003436 + 800342c: 2327 movs r3, #39 ; 0x27 + 800342e: 18fb adds r3, r7, r3 + 8003430: 781b ldrb r3, [r3, #0] + 8003432: 2b00 cmp r3, #0 + 8003434: d092 beq.n 800335c } } } /* In case STOP Flag is detected, clear it */ if (status == HAL_OK) - 8003456: 2327 movs r3, #39 ; 0x27 - 8003458: 18fb adds r3, r7, r3 - 800345a: 781b ldrb r3, [r3, #0] - 800345c: 2b00 cmp r3, #0 - 800345e: d103 bne.n 8003468 + 8003436: 2327 movs r3, #39 ; 0x27 + 8003438: 18fb adds r3, r7, r3 + 800343a: 781b ldrb r3, [r3, #0] + 800343c: 2b00 cmp r3, #0 + 800343e: d103 bne.n 8003448 { /* Clear STOP Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); - 8003460: 68fb ldr r3, [r7, #12] - 8003462: 681b ldr r3, [r3, #0] - 8003464: 2220 movs r2, #32 - 8003466: 61da str r2, [r3, #28] + 8003440: 68fb ldr r3, [r7, #12] + 8003442: 681b ldr r3, [r3, #0] + 8003444: 2220 movs r2, #32 + 8003446: 61da str r2, [r3, #28] } error_code |= HAL_I2C_ERROR_AF; - 8003468: 6a3b ldr r3, [r7, #32] - 800346a: 2204 movs r2, #4 - 800346c: 4313 orrs r3, r2 - 800346e: 623b str r3, [r7, #32] + 8003448: 6a3b ldr r3, [r7, #32] + 800344a: 2204 movs r2, #4 + 800344c: 4313 orrs r3, r2 + 800344e: 623b str r3, [r7, #32] status = HAL_ERROR; - 8003470: 2327 movs r3, #39 ; 0x27 - 8003472: 18fb adds r3, r7, r3 - 8003474: 2201 movs r2, #1 - 8003476: 701a strb r2, [r3, #0] + 8003450: 2327 movs r3, #39 ; 0x27 + 8003452: 18fb adds r3, r7, r3 + 8003454: 2201 movs r2, #1 + 8003456: 701a strb r2, [r3, #0] } /* Refresh Content of Status register */ itflag = hi2c->Instance->ISR; - 8003478: 68fb ldr r3, [r7, #12] - 800347a: 681b ldr r3, [r3, #0] - 800347c: 699b ldr r3, [r3, #24] - 800347e: 61bb str r3, [r7, #24] + 8003458: 68fb ldr r3, [r7, #12] + 800345a: 681b ldr r3, [r3, #0] + 800345c: 699b ldr r3, [r3, #24] + 800345e: 61bb str r3, [r7, #24] /* Then verify if an additional errors occurs */ /* Check if a Bus error occurred */ if (HAL_IS_BIT_SET(itflag, I2C_FLAG_BERR)) - 8003480: 69ba ldr r2, [r7, #24] - 8003482: 2380 movs r3, #128 ; 0x80 - 8003484: 005b lsls r3, r3, #1 - 8003486: 4013 ands r3, r2 - 8003488: d00c beq.n 80034a4 + 8003460: 69ba ldr r2, [r7, #24] + 8003462: 2380 movs r3, #128 ; 0x80 + 8003464: 005b lsls r3, r3, #1 + 8003466: 4013 ands r3, r2 + 8003468: d00c beq.n 8003484 { error_code |= HAL_I2C_ERROR_BERR; - 800348a: 6a3b ldr r3, [r7, #32] - 800348c: 2201 movs r2, #1 - 800348e: 4313 orrs r3, r2 - 8003490: 623b str r3, [r7, #32] + 800346a: 6a3b ldr r3, [r7, #32] + 800346c: 2201 movs r2, #1 + 800346e: 4313 orrs r3, r2 + 8003470: 623b str r3, [r7, #32] /* Clear BERR flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); - 8003492: 68fb ldr r3, [r7, #12] - 8003494: 681b ldr r3, [r3, #0] - 8003496: 2280 movs r2, #128 ; 0x80 - 8003498: 0052 lsls r2, r2, #1 - 800349a: 61da str r2, [r3, #28] + 8003472: 68fb ldr r3, [r7, #12] + 8003474: 681b ldr r3, [r3, #0] + 8003476: 2280 movs r2, #128 ; 0x80 + 8003478: 0052 lsls r2, r2, #1 + 800347a: 61da str r2, [r3, #28] status = HAL_ERROR; - 800349c: 2327 movs r3, #39 ; 0x27 - 800349e: 18fb adds r3, r7, r3 - 80034a0: 2201 movs r2, #1 - 80034a2: 701a strb r2, [r3, #0] + 800347c: 2327 movs r3, #39 ; 0x27 + 800347e: 18fb adds r3, r7, r3 + 8003480: 2201 movs r2, #1 + 8003482: 701a strb r2, [r3, #0] } /* Check if an Over-Run/Under-Run error occurred */ if (HAL_IS_BIT_SET(itflag, I2C_FLAG_OVR)) - 80034a4: 69ba ldr r2, [r7, #24] - 80034a6: 2380 movs r3, #128 ; 0x80 - 80034a8: 00db lsls r3, r3, #3 - 80034aa: 4013 ands r3, r2 - 80034ac: d00c beq.n 80034c8 + 8003484: 69ba ldr r2, [r7, #24] + 8003486: 2380 movs r3, #128 ; 0x80 + 8003488: 00db lsls r3, r3, #3 + 800348a: 4013 ands r3, r2 + 800348c: d00c beq.n 80034a8 { error_code |= HAL_I2C_ERROR_OVR; - 80034ae: 6a3b ldr r3, [r7, #32] - 80034b0: 2208 movs r2, #8 - 80034b2: 4313 orrs r3, r2 - 80034b4: 623b str r3, [r7, #32] + 800348e: 6a3b ldr r3, [r7, #32] + 8003490: 2208 movs r2, #8 + 8003492: 4313 orrs r3, r2 + 8003494: 623b str r3, [r7, #32] /* Clear OVR flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); - 80034b6: 68fb ldr r3, [r7, #12] - 80034b8: 681b ldr r3, [r3, #0] - 80034ba: 2280 movs r2, #128 ; 0x80 - 80034bc: 00d2 lsls r2, r2, #3 - 80034be: 61da str r2, [r3, #28] + 8003496: 68fb ldr r3, [r7, #12] + 8003498: 681b ldr r3, [r3, #0] + 800349a: 2280 movs r2, #128 ; 0x80 + 800349c: 00d2 lsls r2, r2, #3 + 800349e: 61da str r2, [r3, #28] status = HAL_ERROR; - 80034c0: 2327 movs r3, #39 ; 0x27 - 80034c2: 18fb adds r3, r7, r3 - 80034c4: 2201 movs r2, #1 - 80034c6: 701a strb r2, [r3, #0] + 80034a0: 2327 movs r3, #39 ; 0x27 + 80034a2: 18fb adds r3, r7, r3 + 80034a4: 2201 movs r2, #1 + 80034a6: 701a strb r2, [r3, #0] } /* Check if an Arbitration Loss error occurred */ if (HAL_IS_BIT_SET(itflag, I2C_FLAG_ARLO)) - 80034c8: 69ba ldr r2, [r7, #24] - 80034ca: 2380 movs r3, #128 ; 0x80 - 80034cc: 009b lsls r3, r3, #2 - 80034ce: 4013 ands r3, r2 - 80034d0: d00c beq.n 80034ec + 80034a8: 69ba ldr r2, [r7, #24] + 80034aa: 2380 movs r3, #128 ; 0x80 + 80034ac: 009b lsls r3, r3, #2 + 80034ae: 4013 ands r3, r2 + 80034b0: d00c beq.n 80034cc { error_code |= HAL_I2C_ERROR_ARLO; - 80034d2: 6a3b ldr r3, [r7, #32] - 80034d4: 2202 movs r2, #2 - 80034d6: 4313 orrs r3, r2 - 80034d8: 623b str r3, [r7, #32] + 80034b2: 6a3b ldr r3, [r7, #32] + 80034b4: 2202 movs r2, #2 + 80034b6: 4313 orrs r3, r2 + 80034b8: 623b str r3, [r7, #32] /* Clear ARLO flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); - 80034da: 68fb ldr r3, [r7, #12] - 80034dc: 681b ldr r3, [r3, #0] - 80034de: 2280 movs r2, #128 ; 0x80 - 80034e0: 0092 lsls r2, r2, #2 - 80034e2: 61da str r2, [r3, #28] + 80034ba: 68fb ldr r3, [r7, #12] + 80034bc: 681b ldr r3, [r3, #0] + 80034be: 2280 movs r2, #128 ; 0x80 + 80034c0: 0092 lsls r2, r2, #2 + 80034c2: 61da str r2, [r3, #28] status = HAL_ERROR; - 80034e4: 2327 movs r3, #39 ; 0x27 - 80034e6: 18fb adds r3, r7, r3 - 80034e8: 2201 movs r2, #1 - 80034ea: 701a strb r2, [r3, #0] + 80034c4: 2327 movs r3, #39 ; 0x27 + 80034c6: 18fb adds r3, r7, r3 + 80034c8: 2201 movs r2, #1 + 80034ca: 701a strb r2, [r3, #0] } if (status != HAL_OK) - 80034ec: 2327 movs r3, #39 ; 0x27 - 80034ee: 18fb adds r3, r7, r3 - 80034f0: 781b ldrb r3, [r3, #0] - 80034f2: 2b00 cmp r3, #0 - 80034f4: d01d beq.n 8003532 + 80034cc: 2327 movs r3, #39 ; 0x27 + 80034ce: 18fb adds r3, r7, r3 + 80034d0: 781b ldrb r3, [r3, #0] + 80034d2: 2b00 cmp r3, #0 + 80034d4: d01d beq.n 8003512 { /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 80034f6: 68fb ldr r3, [r7, #12] - 80034f8: 0018 movs r0, r3 - 80034fa: f7ff fe47 bl 800318c + 80034d6: 68fb ldr r3, [r7, #12] + 80034d8: 0018 movs r0, r3 + 80034da: f7ff fe47 bl 800316c /* Clear Configuration Register 2 */ I2C_RESET_CR2(hi2c); - 80034fe: 68fb ldr r3, [r7, #12] - 8003500: 681b ldr r3, [r3, #0] - 8003502: 685a ldr r2, [r3, #4] - 8003504: 68fb ldr r3, [r7, #12] - 8003506: 681b ldr r3, [r3, #0] - 8003508: 490d ldr r1, [pc, #52] ; (8003540 ) - 800350a: 400a ands r2, r1 - 800350c: 605a str r2, [r3, #4] + 80034de: 68fb ldr r3, [r7, #12] + 80034e0: 681b ldr r3, [r3, #0] + 80034e2: 685a ldr r2, [r3, #4] + 80034e4: 68fb ldr r3, [r7, #12] + 80034e6: 681b ldr r3, [r3, #0] + 80034e8: 490d ldr r1, [pc, #52] ; (8003520 ) + 80034ea: 400a ands r2, r1 + 80034ec: 605a str r2, [r3, #4] hi2c->ErrorCode |= error_code; - 800350e: 68fb ldr r3, [r7, #12] - 8003510: 6c5a ldr r2, [r3, #68] ; 0x44 - 8003512: 6a3b ldr r3, [r7, #32] - 8003514: 431a orrs r2, r3 - 8003516: 68fb ldr r3, [r7, #12] - 8003518: 645a str r2, [r3, #68] ; 0x44 + 80034ee: 68fb ldr r3, [r7, #12] + 80034f0: 6c5a ldr r2, [r3, #68] ; 0x44 + 80034f2: 6a3b ldr r3, [r7, #32] + 80034f4: 431a orrs r2, r3 + 80034f6: 68fb ldr r3, [r7, #12] + 80034f8: 645a str r2, [r3, #68] ; 0x44 hi2c->State = HAL_I2C_STATE_READY; - 800351a: 68fb ldr r3, [r7, #12] - 800351c: 2241 movs r2, #65 ; 0x41 - 800351e: 2120 movs r1, #32 - 8003520: 5499 strb r1, [r3, r2] + 80034fa: 68fb ldr r3, [r7, #12] + 80034fc: 2241 movs r2, #65 ; 0x41 + 80034fe: 2120 movs r1, #32 + 8003500: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_NONE; - 8003522: 68fb ldr r3, [r7, #12] - 8003524: 2242 movs r2, #66 ; 0x42 - 8003526: 2100 movs r1, #0 - 8003528: 5499 strb r1, [r3, r2] + 8003502: 68fb ldr r3, [r7, #12] + 8003504: 2242 movs r2, #66 ; 0x42 + 8003506: 2100 movs r1, #0 + 8003508: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 800352a: 68fb ldr r3, [r7, #12] - 800352c: 2240 movs r2, #64 ; 0x40 - 800352e: 2100 movs r1, #0 - 8003530: 5499 strb r1, [r3, r2] + 800350a: 68fb ldr r3, [r7, #12] + 800350c: 2240 movs r2, #64 ; 0x40 + 800350e: 2100 movs r1, #0 + 8003510: 5499 strb r1, [r3, r2] } return status; - 8003532: 2327 movs r3, #39 ; 0x27 - 8003534: 18fb adds r3, r7, r3 - 8003536: 781b ldrb r3, [r3, #0] + 8003512: 2327 movs r3, #39 ; 0x27 + 8003514: 18fb adds r3, r7, r3 + 8003516: 781b ldrb r3, [r3, #0] } - 8003538: 0018 movs r0, r3 - 800353a: 46bd mov sp, r7 - 800353c: b00b add sp, #44 ; 0x2c - 800353e: bd90 pop {r4, r7, pc} - 8003540: fe00e800 .word 0xfe00e800 + 8003518: 0018 movs r0, r3 + 800351a: 46bd mov sp, r7 + 800351c: b00b add sp, #44 ; 0x2c + 800351e: bd90 pop {r4, r7, pc} + 8003520: fe00e800 .word 0xfe00e800 -08003544 : +08003524 : * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request. * @retval None */ static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, uint32_t Request) { - 8003544: b590 push {r4, r7, lr} - 8003546: b087 sub sp, #28 - 8003548: af00 add r7, sp, #0 - 800354a: 60f8 str r0, [r7, #12] - 800354c: 0008 movs r0, r1 - 800354e: 0011 movs r1, r2 - 8003550: 607b str r3, [r7, #4] - 8003552: 240a movs r4, #10 - 8003554: 193b adds r3, r7, r4 - 8003556: 1c02 adds r2, r0, #0 - 8003558: 801a strh r2, [r3, #0] - 800355a: 2009 movs r0, #9 - 800355c: 183b adds r3, r7, r0 - 800355e: 1c0a adds r2, r1, #0 - 8003560: 701a strb r2, [r3, #0] + 8003524: b590 push {r4, r7, lr} + 8003526: b087 sub sp, #28 + 8003528: af00 add r7, sp, #0 + 800352a: 60f8 str r0, [r7, #12] + 800352c: 0008 movs r0, r1 + 800352e: 0011 movs r1, r2 + 8003530: 607b str r3, [r7, #4] + 8003532: 240a movs r4, #10 + 8003534: 193b adds r3, r7, r4 + 8003536: 1c02 adds r2, r0, #0 + 8003538: 801a strh r2, [r3, #0] + 800353a: 2009 movs r0, #9 + 800353c: 183b adds r3, r7, r0 + 800353e: 1c0a adds r2, r1, #0 + 8003540: 701a strb r2, [r3, #0] assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_TRANSFER_MODE(Mode)); assert_param(IS_TRANSFER_REQUEST(Request)); /* Declaration of tmp to prevent undefined behavior of volatile usage */ uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ - 8003562: 193b adds r3, r7, r4 - 8003564: 881b ldrh r3, [r3, #0] - 8003566: 059b lsls r3, r3, #22 - 8003568: 0d9a lsrs r2, r3, #22 + 8003542: 193b adds r3, r7, r4 + 8003544: 881b ldrh r3, [r3, #0] + 8003546: 059b lsls r3, r3, #22 + 8003548: 0d9a lsrs r2, r3, #22 (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ - 800356a: 183b adds r3, r7, r0 - 800356c: 781b ldrb r3, [r3, #0] - 800356e: 0419 lsls r1, r3, #16 - 8003570: 23ff movs r3, #255 ; 0xff - 8003572: 041b lsls r3, r3, #16 - 8003574: 400b ands r3, r1 + 800354a: 183b adds r3, r7, r0 + 800354c: 781b ldrb r3, [r3, #0] + 800354e: 0419 lsls r1, r3, #16 + 8003550: 23ff movs r3, #255 ; 0xff + 8003552: 041b lsls r3, r3, #16 + 8003554: 400b ands r3, r1 uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ - 8003576: 431a orrs r2, r3 + 8003556: 431a orrs r2, r3 (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ - 8003578: 687b ldr r3, [r7, #4] - 800357a: 431a orrs r2, r3 + 8003558: 687b ldr r3, [r7, #4] + 800355a: 431a orrs r2, r3 uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ - 800357c: 6abb ldr r3, [r7, #40] ; 0x28 - 800357e: 4313 orrs r3, r2 - 8003580: 005b lsls r3, r3, #1 - 8003582: 085b lsrs r3, r3, #1 - 8003584: 617b str r3, [r7, #20] + 800355c: 6abb ldr r3, [r7, #40] ; 0x28 + 800355e: 4313 orrs r3, r2 + 8003560: 005b lsls r3, r3, #1 + 8003562: 085b lsrs r3, r3, #1 + 8003564: 617b str r3, [r7, #20] (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U)); /* update CR2 register */ MODIFY_REG(hi2c->Instance->CR2, \ - 8003586: 68fb ldr r3, [r7, #12] - 8003588: 681b ldr r3, [r3, #0] - 800358a: 685b ldr r3, [r3, #4] - 800358c: 6aba ldr r2, [r7, #40] ; 0x28 - 800358e: 0d51 lsrs r1, r2, #21 - 8003590: 2280 movs r2, #128 ; 0x80 - 8003592: 00d2 lsls r2, r2, #3 - 8003594: 400a ands r2, r1 - 8003596: 4907 ldr r1, [pc, #28] ; (80035b4 ) - 8003598: 430a orrs r2, r1 - 800359a: 43d2 mvns r2, r2 - 800359c: 401a ands r2, r3 - 800359e: 0011 movs r1, r2 - 80035a0: 68fb ldr r3, [r7, #12] - 80035a2: 681b ldr r3, [r3, #0] - 80035a4: 697a ldr r2, [r7, #20] - 80035a6: 430a orrs r2, r1 - 80035a8: 605a str r2, [r3, #4] + 8003566: 68fb ldr r3, [r7, #12] + 8003568: 681b ldr r3, [r3, #0] + 800356a: 685b ldr r3, [r3, #4] + 800356c: 6aba ldr r2, [r7, #40] ; 0x28 + 800356e: 0d51 lsrs r1, r2, #21 + 8003570: 2280 movs r2, #128 ; 0x80 + 8003572: 00d2 lsls r2, r2, #3 + 8003574: 400a ands r2, r1 + 8003576: 4907 ldr r1, [pc, #28] ; (8003594 ) + 8003578: 430a orrs r2, r1 + 800357a: 43d2 mvns r2, r2 + 800357c: 401a ands r2, r3 + 800357e: 0011 movs r1, r2 + 8003580: 68fb ldr r3, [r7, #12] + 8003582: 681b ldr r3, [r3, #0] + 8003584: 697a ldr r2, [r7, #20] + 8003586: 430a orrs r2, r1 + 8003588: 605a str r2, [r3, #4] ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \ (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \ I2C_CR2_START | I2C_CR2_STOP)), tmp); } - 80035aa: 46c0 nop ; (mov r8, r8) - 80035ac: 46bd mov sp, r7 - 80035ae: b007 add sp, #28 - 80035b0: bd90 pop {r4, r7, pc} - 80035b2: 46c0 nop ; (mov r8, r8) - 80035b4: 03ff63ff .word 0x03ff63ff + 800358a: 46c0 nop ; (mov r8, r8) + 800358c: 46bd mov sp, r7 + 800358e: b007 add sp, #28 + 8003590: bd90 pop {r4, r7, pc} + 8003592: 46c0 nop ; (mov r8, r8) + 8003594: 03ff63ff .word 0x03ff63ff -080035b8 : +08003598 : * the configuration information for the specified I2Cx peripheral. * @param AnalogFilter New state of the Analog filter. * @retval HAL status */ HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) { - 80035b8: b580 push {r7, lr} - 80035ba: b082 sub sp, #8 - 80035bc: af00 add r7, sp, #0 - 80035be: 6078 str r0, [r7, #4] - 80035c0: 6039 str r1, [r7, #0] + 8003598: b580 push {r7, lr} + 800359a: b082 sub sp, #8 + 800359c: af00 add r7, sp, #0 + 800359e: 6078 str r0, [r7, #4] + 80035a0: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); if (hi2c->State == HAL_I2C_STATE_READY) - 80035c2: 687b ldr r3, [r7, #4] - 80035c4: 2241 movs r2, #65 ; 0x41 - 80035c6: 5c9b ldrb r3, [r3, r2] - 80035c8: b2db uxtb r3, r3 - 80035ca: 2b20 cmp r3, #32 - 80035cc: d138 bne.n 8003640 + 80035a2: 687b ldr r3, [r7, #4] + 80035a4: 2241 movs r2, #65 ; 0x41 + 80035a6: 5c9b ldrb r3, [r3, r2] + 80035a8: b2db uxtb r3, r3 + 80035aa: 2b20 cmp r3, #32 + 80035ac: d138 bne.n 8003620 { /* Process Locked */ __HAL_LOCK(hi2c); - 80035ce: 687b ldr r3, [r7, #4] - 80035d0: 2240 movs r2, #64 ; 0x40 - 80035d2: 5c9b ldrb r3, [r3, r2] - 80035d4: 2b01 cmp r3, #1 - 80035d6: d101 bne.n 80035dc - 80035d8: 2302 movs r3, #2 - 80035da: e032 b.n 8003642 - 80035dc: 687b ldr r3, [r7, #4] - 80035de: 2240 movs r2, #64 ; 0x40 - 80035e0: 2101 movs r1, #1 - 80035e2: 5499 strb r1, [r3, r2] + 80035ae: 687b ldr r3, [r7, #4] + 80035b0: 2240 movs r2, #64 ; 0x40 + 80035b2: 5c9b ldrb r3, [r3, r2] + 80035b4: 2b01 cmp r3, #1 + 80035b6: d101 bne.n 80035bc + 80035b8: 2302 movs r3, #2 + 80035ba: e032 b.n 8003622 + 80035bc: 687b ldr r3, [r7, #4] + 80035be: 2240 movs r2, #64 ; 0x40 + 80035c0: 2101 movs r1, #1 + 80035c2: 5499 strb r1, [r3, r2] hi2c->State = HAL_I2C_STATE_BUSY; - 80035e4: 687b ldr r3, [r7, #4] - 80035e6: 2241 movs r2, #65 ; 0x41 - 80035e8: 2124 movs r1, #36 ; 0x24 - 80035ea: 5499 strb r1, [r3, r2] + 80035c4: 687b ldr r3, [r7, #4] + 80035c6: 2241 movs r2, #65 ; 0x41 + 80035c8: 2124 movs r1, #36 ; 0x24 + 80035ca: 5499 strb r1, [r3, r2] /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 80035ec: 687b ldr r3, [r7, #4] - 80035ee: 681b ldr r3, [r3, #0] - 80035f0: 681a ldr r2, [r3, #0] - 80035f2: 687b ldr r3, [r7, #4] - 80035f4: 681b ldr r3, [r3, #0] - 80035f6: 2101 movs r1, #1 - 80035f8: 438a bics r2, r1 - 80035fa: 601a str r2, [r3, #0] + 80035cc: 687b ldr r3, [r7, #4] + 80035ce: 681b ldr r3, [r3, #0] + 80035d0: 681a ldr r2, [r3, #0] + 80035d2: 687b ldr r3, [r7, #4] + 80035d4: 681b ldr r3, [r3, #0] + 80035d6: 2101 movs r1, #1 + 80035d8: 438a bics r2, r1 + 80035da: 601a str r2, [r3, #0] /* Reset I2Cx ANOFF bit */ hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF); + 80035dc: 687b ldr r3, [r7, #4] + 80035de: 681b ldr r3, [r3, #0] + 80035e0: 681a ldr r2, [r3, #0] + 80035e2: 687b ldr r3, [r7, #4] + 80035e4: 681b ldr r3, [r3, #0] + 80035e6: 4911 ldr r1, [pc, #68] ; (800362c ) + 80035e8: 400a ands r2, r1 + 80035ea: 601a str r2, [r3, #0] + + /* Set analog filter bit*/ + hi2c->Instance->CR1 |= AnalogFilter; + 80035ec: 687b ldr r3, [r7, #4] + 80035ee: 681b ldr r3, [r3, #0] + 80035f0: 6819 ldr r1, [r3, #0] + 80035f2: 687b ldr r3, [r7, #4] + 80035f4: 681b ldr r3, [r3, #0] + 80035f6: 683a ldr r2, [r7, #0] + 80035f8: 430a orrs r2, r1 + 80035fa: 601a str r2, [r3, #0] + + __HAL_I2C_ENABLE(hi2c); 80035fc: 687b ldr r3, [r7, #4] 80035fe: 681b ldr r3, [r3, #0] 8003600: 681a ldr r2, [r3, #0] 8003602: 687b ldr r3, [r7, #4] 8003604: 681b ldr r3, [r3, #0] - 8003606: 4911 ldr r1, [pc, #68] ; (800364c ) - 8003608: 400a ands r2, r1 + 8003606: 2101 movs r1, #1 + 8003608: 430a orrs r2, r1 800360a: 601a str r2, [r3, #0] - /* Set analog filter bit*/ - hi2c->Instance->CR1 |= AnalogFilter; - 800360c: 687b ldr r3, [r7, #4] - 800360e: 681b ldr r3, [r3, #0] - 8003610: 6819 ldr r1, [r3, #0] - 8003612: 687b ldr r3, [r7, #4] - 8003614: 681b ldr r3, [r3, #0] - 8003616: 683a ldr r2, [r7, #0] - 8003618: 430a orrs r2, r1 - 800361a: 601a str r2, [r3, #0] - - __HAL_I2C_ENABLE(hi2c); - 800361c: 687b ldr r3, [r7, #4] - 800361e: 681b ldr r3, [r3, #0] - 8003620: 681a ldr r2, [r3, #0] - 8003622: 687b ldr r3, [r7, #4] - 8003624: 681b ldr r3, [r3, #0] - 8003626: 2101 movs r1, #1 - 8003628: 430a orrs r2, r1 - 800362a: 601a str r2, [r3, #0] - hi2c->State = HAL_I2C_STATE_READY; - 800362c: 687b ldr r3, [r7, #4] - 800362e: 2241 movs r2, #65 ; 0x41 - 8003630: 2120 movs r1, #32 - 8003632: 5499 strb r1, [r3, r2] + 800360c: 687b ldr r3, [r7, #4] + 800360e: 2241 movs r2, #65 ; 0x41 + 8003610: 2120 movs r1, #32 + 8003612: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8003634: 687b ldr r3, [r7, #4] - 8003636: 2240 movs r2, #64 ; 0x40 - 8003638: 2100 movs r1, #0 - 800363a: 5499 strb r1, [r3, r2] + 8003614: 687b ldr r3, [r7, #4] + 8003616: 2240 movs r2, #64 ; 0x40 + 8003618: 2100 movs r1, #0 + 800361a: 5499 strb r1, [r3, r2] return HAL_OK; - 800363c: 2300 movs r3, #0 - 800363e: e000 b.n 8003642 + 800361c: 2300 movs r3, #0 + 800361e: e000 b.n 8003622 } else { return HAL_BUSY; - 8003640: 2302 movs r3, #2 + 8003620: 2302 movs r3, #2 } } - 8003642: 0018 movs r0, r3 - 8003644: 46bd mov sp, r7 - 8003646: b002 add sp, #8 - 8003648: bd80 pop {r7, pc} - 800364a: 46c0 nop ; (mov r8, r8) - 800364c: ffffefff .word 0xffffefff + 8003622: 0018 movs r0, r3 + 8003624: 46bd mov sp, r7 + 8003626: b002 add sp, #8 + 8003628: bd80 pop {r7, pc} + 800362a: 46c0 nop ; (mov r8, r8) + 800362c: ffffefff .word 0xffffefff -08003650 : +08003630 : * the configuration information for the specified I2Cx peripheral. * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F. * @retval HAL status */ HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) { - 8003650: b580 push {r7, lr} - 8003652: b084 sub sp, #16 - 8003654: af00 add r7, sp, #0 - 8003656: 6078 str r0, [r7, #4] - 8003658: 6039 str r1, [r7, #0] + 8003630: b580 push {r7, lr} + 8003632: b084 sub sp, #16 + 8003634: af00 add r7, sp, #0 + 8003636: 6078 str r0, [r7, #4] + 8003638: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); if (hi2c->State == HAL_I2C_STATE_READY) - 800365a: 687b ldr r3, [r7, #4] - 800365c: 2241 movs r2, #65 ; 0x41 - 800365e: 5c9b ldrb r3, [r3, r2] - 8003660: b2db uxtb r3, r3 - 8003662: 2b20 cmp r3, #32 - 8003664: d139 bne.n 80036da + 800363a: 687b ldr r3, [r7, #4] + 800363c: 2241 movs r2, #65 ; 0x41 + 800363e: 5c9b ldrb r3, [r3, r2] + 8003640: b2db uxtb r3, r3 + 8003642: 2b20 cmp r3, #32 + 8003644: d139 bne.n 80036ba { /* Process Locked */ __HAL_LOCK(hi2c); - 8003666: 687b ldr r3, [r7, #4] - 8003668: 2240 movs r2, #64 ; 0x40 - 800366a: 5c9b ldrb r3, [r3, r2] - 800366c: 2b01 cmp r3, #1 - 800366e: d101 bne.n 8003674 - 8003670: 2302 movs r3, #2 - 8003672: e033 b.n 80036dc - 8003674: 687b ldr r3, [r7, #4] - 8003676: 2240 movs r2, #64 ; 0x40 - 8003678: 2101 movs r1, #1 - 800367a: 5499 strb r1, [r3, r2] + 8003646: 687b ldr r3, [r7, #4] + 8003648: 2240 movs r2, #64 ; 0x40 + 800364a: 5c9b ldrb r3, [r3, r2] + 800364c: 2b01 cmp r3, #1 + 800364e: d101 bne.n 8003654 + 8003650: 2302 movs r3, #2 + 8003652: e033 b.n 80036bc + 8003654: 687b ldr r3, [r7, #4] + 8003656: 2240 movs r2, #64 ; 0x40 + 8003658: 2101 movs r1, #1 + 800365a: 5499 strb r1, [r3, r2] hi2c->State = HAL_I2C_STATE_BUSY; - 800367c: 687b ldr r3, [r7, #4] - 800367e: 2241 movs r2, #65 ; 0x41 - 8003680: 2124 movs r1, #36 ; 0x24 - 8003682: 5499 strb r1, [r3, r2] + 800365c: 687b ldr r3, [r7, #4] + 800365e: 2241 movs r2, #65 ; 0x41 + 8003660: 2124 movs r1, #36 ; 0x24 + 8003662: 5499 strb r1, [r3, r2] /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8003684: 687b ldr r3, [r7, #4] - 8003686: 681b ldr r3, [r3, #0] - 8003688: 681a ldr r2, [r3, #0] - 800368a: 687b ldr r3, [r7, #4] - 800368c: 681b ldr r3, [r3, #0] - 800368e: 2101 movs r1, #1 - 8003690: 438a bics r2, r1 - 8003692: 601a str r2, [r3, #0] + 8003664: 687b ldr r3, [r7, #4] + 8003666: 681b ldr r3, [r3, #0] + 8003668: 681a ldr r2, [r3, #0] + 800366a: 687b ldr r3, [r7, #4] + 800366c: 681b ldr r3, [r3, #0] + 800366e: 2101 movs r1, #1 + 8003670: 438a bics r2, r1 + 8003672: 601a str r2, [r3, #0] /* Get the old register value */ tmpreg = hi2c->Instance->CR1; - 8003694: 687b ldr r3, [r7, #4] - 8003696: 681b ldr r3, [r3, #0] - 8003698: 681b ldr r3, [r3, #0] - 800369a: 60fb str r3, [r7, #12] + 8003674: 687b ldr r3, [r7, #4] + 8003676: 681b ldr r3, [r3, #0] + 8003678: 681b ldr r3, [r3, #0] + 800367a: 60fb str r3, [r7, #12] /* Reset I2Cx DNF bits [11:8] */ tmpreg &= ~(I2C_CR1_DNF); - 800369c: 68fb ldr r3, [r7, #12] - 800369e: 4a11 ldr r2, [pc, #68] ; (80036e4 ) - 80036a0: 4013 ands r3, r2 - 80036a2: 60fb str r3, [r7, #12] + 800367c: 68fb ldr r3, [r7, #12] + 800367e: 4a11 ldr r2, [pc, #68] ; (80036c4 ) + 8003680: 4013 ands r3, r2 + 8003682: 60fb str r3, [r7, #12] /* Set I2Cx DNF coefficient */ tmpreg |= DigitalFilter << 8U; - 80036a4: 683b ldr r3, [r7, #0] - 80036a6: 021b lsls r3, r3, #8 - 80036a8: 68fa ldr r2, [r7, #12] - 80036aa: 4313 orrs r3, r2 - 80036ac: 60fb str r3, [r7, #12] + 8003684: 683b ldr r3, [r7, #0] + 8003686: 021b lsls r3, r3, #8 + 8003688: 68fa ldr r2, [r7, #12] + 800368a: 4313 orrs r3, r2 + 800368c: 60fb str r3, [r7, #12] /* Store the new register value */ hi2c->Instance->CR1 = tmpreg; - 80036ae: 687b ldr r3, [r7, #4] - 80036b0: 681b ldr r3, [r3, #0] - 80036b2: 68fa ldr r2, [r7, #12] - 80036b4: 601a str r2, [r3, #0] + 800368e: 687b ldr r3, [r7, #4] + 8003690: 681b ldr r3, [r3, #0] + 8003692: 68fa ldr r2, [r7, #12] + 8003694: 601a str r2, [r3, #0] __HAL_I2C_ENABLE(hi2c); - 80036b6: 687b ldr r3, [r7, #4] - 80036b8: 681b ldr r3, [r3, #0] - 80036ba: 681a ldr r2, [r3, #0] - 80036bc: 687b ldr r3, [r7, #4] - 80036be: 681b ldr r3, [r3, #0] - 80036c0: 2101 movs r1, #1 - 80036c2: 430a orrs r2, r1 - 80036c4: 601a str r2, [r3, #0] + 8003696: 687b ldr r3, [r7, #4] + 8003698: 681b ldr r3, [r3, #0] + 800369a: 681a ldr r2, [r3, #0] + 800369c: 687b ldr r3, [r7, #4] + 800369e: 681b ldr r3, [r3, #0] + 80036a0: 2101 movs r1, #1 + 80036a2: 430a orrs r2, r1 + 80036a4: 601a str r2, [r3, #0] hi2c->State = HAL_I2C_STATE_READY; - 80036c6: 687b ldr r3, [r7, #4] - 80036c8: 2241 movs r2, #65 ; 0x41 - 80036ca: 2120 movs r1, #32 - 80036cc: 5499 strb r1, [r3, r2] + 80036a6: 687b ldr r3, [r7, #4] + 80036a8: 2241 movs r2, #65 ; 0x41 + 80036aa: 2120 movs r1, #32 + 80036ac: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80036ce: 687b ldr r3, [r7, #4] - 80036d0: 2240 movs r2, #64 ; 0x40 - 80036d2: 2100 movs r1, #0 - 80036d4: 5499 strb r1, [r3, r2] + 80036ae: 687b ldr r3, [r7, #4] + 80036b0: 2240 movs r2, #64 ; 0x40 + 80036b2: 2100 movs r1, #0 + 80036b4: 5499 strb r1, [r3, r2] return HAL_OK; - 80036d6: 2300 movs r3, #0 - 80036d8: e000 b.n 80036dc + 80036b6: 2300 movs r3, #0 + 80036b8: e000 b.n 80036bc } else { return HAL_BUSY; - 80036da: 2302 movs r3, #2 + 80036ba: 2302 movs r3, #2 } } - 80036dc: 0018 movs r0, r3 - 80036de: 46bd mov sp, r7 - 80036e0: b004 add sp, #16 - 80036e2: bd80 pop {r7, pc} - 80036e4: fffff0ff .word 0xfffff0ff + 80036bc: 0018 movs r0, r3 + 80036be: 46bd mov sp, r7 + 80036c0: b004 add sp, #16 + 80036c2: bd80 pop {r7, pc} + 80036c4: fffff0ff .word 0xfffff0ff -080036e8 : +080036c8 : * cleared before returning the status. If the flag is not cleared within * 6 microseconds, HAL_TIMEOUT status is reported. * @retval HAL Status */ HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling) { - 80036e8: b580 push {r7, lr} - 80036ea: b084 sub sp, #16 - 80036ec: af00 add r7, sp, #0 - 80036ee: 6078 str r0, [r7, #4] + 80036c8: b580 push {r7, lr} + 80036ca: b084 sub sp, #16 + 80036cc: af00 add r7, sp, #0 + 80036ce: 6078 str r0, [r7, #4] uint32_t wait_loop_index; assert_param(IS_PWR_VOLTAGE_SCALING_RANGE(VoltageScaling)); /* Modify voltage scaling range */ MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling); - 80036f0: 4b19 ldr r3, [pc, #100] ; (8003758 ) - 80036f2: 681b ldr r3, [r3, #0] - 80036f4: 4a19 ldr r2, [pc, #100] ; (800375c ) - 80036f6: 4013 ands r3, r2 - 80036f8: 0019 movs r1, r3 - 80036fa: 4b17 ldr r3, [pc, #92] ; (8003758 ) - 80036fc: 687a ldr r2, [r7, #4] - 80036fe: 430a orrs r2, r1 - 8003700: 601a str r2, [r3, #0] + 80036d0: 4b19 ldr r3, [pc, #100] ; (8003738 ) + 80036d2: 681b ldr r3, [r3, #0] + 80036d4: 4a19 ldr r2, [pc, #100] ; (800373c ) + 80036d6: 4013 ands r3, r2 + 80036d8: 0019 movs r1, r3 + 80036da: 4b17 ldr r3, [pc, #92] ; (8003738 ) + 80036dc: 687a ldr r2, [r7, #4] + 80036de: 430a orrs r2, r1 + 80036e0: 601a str r2, [r3, #0] /* In case of Range 1 selected, we need to ensure that main regulator reaches new value */ if (VoltageScaling == PWR_REGULATOR_VOLTAGE_SCALE1) - 8003702: 687a ldr r2, [r7, #4] - 8003704: 2380 movs r3, #128 ; 0x80 - 8003706: 009b lsls r3, r3, #2 - 8003708: 429a cmp r2, r3 - 800370a: d11f bne.n 800374c + 80036e2: 687a ldr r2, [r7, #4] + 80036e4: 2380 movs r3, #128 ; 0x80 + 80036e6: 009b lsls r3, r3, #2 + 80036e8: 429a cmp r2, r3 + 80036ea: d11f bne.n 800372c { /* Set timeout value */ wait_loop_index = ((PWR_VOSF_SETTING_DELAY_6_US * SystemCoreClock) / 1000000U) + 1U; - 800370c: 4b14 ldr r3, [pc, #80] ; (8003760 ) - 800370e: 681a ldr r2, [r3, #0] - 8003710: 0013 movs r3, r2 - 8003712: 005b lsls r3, r3, #1 - 8003714: 189b adds r3, r3, r2 - 8003716: 005b lsls r3, r3, #1 - 8003718: 4912 ldr r1, [pc, #72] ; (8003764 ) - 800371a: 0018 movs r0, r3 - 800371c: f7fc fcf4 bl 8000108 <__udivsi3> - 8003720: 0003 movs r3, r0 - 8003722: 3301 adds r3, #1 - 8003724: 60fb str r3, [r7, #12] + 80036ec: 4b14 ldr r3, [pc, #80] ; (8003740 ) + 80036ee: 681a ldr r2, [r3, #0] + 80036f0: 0013 movs r3, r2 + 80036f2: 005b lsls r3, r3, #1 + 80036f4: 189b adds r3, r3, r2 + 80036f6: 005b lsls r3, r3, #1 + 80036f8: 4912 ldr r1, [pc, #72] ; (8003744 ) + 80036fa: 0018 movs r0, r3 + 80036fc: f7fc fd04 bl 8000108 <__udivsi3> + 8003700: 0003 movs r3, r0 + 8003702: 3301 adds r3, #1 + 8003704: 60fb str r3, [r7, #12] /* Wait until VOSF is reset */ while (HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) - 8003726: e008 b.n 800373a + 8003706: e008 b.n 800371a { if (wait_loop_index != 0U) - 8003728: 68fb ldr r3, [r7, #12] - 800372a: 2b00 cmp r3, #0 - 800372c: d003 beq.n 8003736 + 8003708: 68fb ldr r3, [r7, #12] + 800370a: 2b00 cmp r3, #0 + 800370c: d003 beq.n 8003716 { wait_loop_index--; - 800372e: 68fb ldr r3, [r7, #12] - 8003730: 3b01 subs r3, #1 - 8003732: 60fb str r3, [r7, #12] - 8003734: e001 b.n 800373a + 800370e: 68fb ldr r3, [r7, #12] + 8003710: 3b01 subs r3, #1 + 8003712: 60fb str r3, [r7, #12] + 8003714: e001 b.n 800371a } else { return HAL_TIMEOUT; - 8003736: 2303 movs r3, #3 - 8003738: e009 b.n 800374e + 8003716: 2303 movs r3, #3 + 8003718: e009 b.n 800372e while (HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) - 800373a: 4b07 ldr r3, [pc, #28] ; (8003758 ) - 800373c: 695a ldr r2, [r3, #20] - 800373e: 2380 movs r3, #128 ; 0x80 - 8003740: 00db lsls r3, r3, #3 - 8003742: 401a ands r2, r3 - 8003744: 2380 movs r3, #128 ; 0x80 - 8003746: 00db lsls r3, r3, #3 - 8003748: 429a cmp r2, r3 - 800374a: d0ed beq.n 8003728 + 800371a: 4b07 ldr r3, [pc, #28] ; (8003738 ) + 800371c: 695a ldr r2, [r3, #20] + 800371e: 2380 movs r3, #128 ; 0x80 + 8003720: 00db lsls r3, r3, #3 + 8003722: 401a ands r2, r3 + 8003724: 2380 movs r3, #128 ; 0x80 + 8003726: 00db lsls r3, r3, #3 + 8003728: 429a cmp r2, r3 + 800372a: d0ed beq.n 8003708 } } } return HAL_OK; - 800374c: 2300 movs r3, #0 + 800372c: 2300 movs r3, #0 } - 800374e: 0018 movs r0, r3 - 8003750: 46bd mov sp, r7 - 8003752: b004 add sp, #16 - 8003754: bd80 pop {r7, pc} - 8003756: 46c0 nop ; (mov r8, r8) - 8003758: 40007000 .word 0x40007000 - 800375c: fffff9ff .word 0xfffff9ff - 8003760: 20000004 .word 0x20000004 - 8003764: 000f4240 .word 0x000f4240 + 800372e: 0018 movs r0, r3 + 8003730: 46bd mov sp, r7 + 8003732: b004 add sp, #16 + 8003734: bd80 pop {r7, pc} + 8003736: 46c0 nop ; (mov r8, r8) + 8003738: 40007000 .word 0x40007000 + 800373c: fffff9ff .word 0xfffff9ff + 8003740: 20000004 .word 0x20000004 + 8003744: 000f4240 .word 0x000f4240 -08003768 : +08003748 : * supported by this function. User should request a transition to LSE Off * first and then to LSE On or LSE Bypass. * @retval HAL status */ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) { - 8003768: b580 push {r7, lr} - 800376a: b088 sub sp, #32 - 800376c: af00 add r7, sp, #0 - 800376e: 6078 str r0, [r7, #4] + 8003748: b580 push {r7, lr} + 800374a: b088 sub sp, #32 + 800374c: af00 add r7, sp, #0 + 800374e: 6078 str r0, [r7, #4] uint32_t tickstart; uint32_t temp_sysclksrc; uint32_t temp_pllckcfg; /* Check Null pointer */ if (RCC_OscInitStruct == NULL) - 8003770: 687b ldr r3, [r7, #4] - 8003772: 2b00 cmp r3, #0 - 8003774: d101 bne.n 800377a + 8003750: 687b ldr r3, [r7, #4] + 8003752: 2b00 cmp r3, #0 + 8003754: d101 bne.n 800375a { return HAL_ERROR; - 8003776: 2301 movs r3, #1 - 8003778: e2fe b.n 8003d78 + 8003756: 2301 movs r3, #1 + 8003758: e2fe b.n 8003d58 /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); /*------------------------------- HSE Configuration ------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 800377a: 687b ldr r3, [r7, #4] - 800377c: 681b ldr r3, [r3, #0] - 800377e: 2201 movs r2, #1 - 8003780: 4013 ands r3, r2 - 8003782: d100 bne.n 8003786 - 8003784: e07c b.n 8003880 + 800375a: 687b ldr r3, [r7, #4] + 800375c: 681b ldr r3, [r3, #0] + 800375e: 2201 movs r2, #1 + 8003760: 4013 ands r3, r2 + 8003762: d100 bne.n 8003766 + 8003764: e07c b.n 8003860 { /* Check the parameters */ assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); - 8003786: 4bc3 ldr r3, [pc, #780] ; (8003a94 ) - 8003788: 689b ldr r3, [r3, #8] - 800378a: 2238 movs r2, #56 ; 0x38 - 800378c: 4013 ands r3, r2 - 800378e: 61bb str r3, [r7, #24] + 8003766: 4bc3 ldr r3, [pc, #780] ; (8003a74 ) + 8003768: 689b ldr r3, [r3, #8] + 800376a: 2238 movs r2, #56 ; 0x38 + 800376c: 4013 ands r3, r2 + 800376e: 61bb str r3, [r7, #24] temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE(); - 8003790: 4bc0 ldr r3, [pc, #768] ; (8003a94 ) - 8003792: 68db ldr r3, [r3, #12] - 8003794: 2203 movs r2, #3 - 8003796: 4013 ands r3, r2 - 8003798: 617b str r3, [r7, #20] + 8003770: 4bc0 ldr r3, [pc, #768] ; (8003a74 ) + 8003772: 68db ldr r3, [r3, #12] + 8003774: 2203 movs r2, #3 + 8003776: 4013 ands r3, r2 + 8003778: 617b str r3, [r7, #20] /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ if (((temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (temp_pllckcfg == RCC_PLLSOURCE_HSE)) - 800379a: 69bb ldr r3, [r7, #24] - 800379c: 2b10 cmp r3, #16 - 800379e: d102 bne.n 80037a6 - 80037a0: 697b ldr r3, [r7, #20] - 80037a2: 2b03 cmp r3, #3 - 80037a4: d002 beq.n 80037ac + 800377a: 69bb ldr r3, [r7, #24] + 800377c: 2b10 cmp r3, #16 + 800377e: d102 bne.n 8003786 + 8003780: 697b ldr r3, [r7, #20] + 8003782: 2b03 cmp r3, #3 + 8003784: d002 beq.n 800378c || (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSE)) - 80037a6: 69bb ldr r3, [r7, #24] - 80037a8: 2b08 cmp r3, #8 - 80037aa: d10b bne.n 80037c4 + 8003786: 69bb ldr r3, [r7, #24] + 8003788: 2b08 cmp r3, #8 + 800378a: d10b bne.n 80037a4 { if ((READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 80037ac: 4bb9 ldr r3, [pc, #740] ; (8003a94 ) - 80037ae: 681a ldr r2, [r3, #0] - 80037b0: 2380 movs r3, #128 ; 0x80 - 80037b2: 029b lsls r3, r3, #10 - 80037b4: 4013 ands r3, r2 - 80037b6: d062 beq.n 800387e - 80037b8: 687b ldr r3, [r7, #4] - 80037ba: 685b ldr r3, [r3, #4] - 80037bc: 2b00 cmp r3, #0 - 80037be: d15e bne.n 800387e + 800378c: 4bb9 ldr r3, [pc, #740] ; (8003a74 ) + 800378e: 681a ldr r2, [r3, #0] + 8003790: 2380 movs r3, #128 ; 0x80 + 8003792: 029b lsls r3, r3, #10 + 8003794: 4013 ands r3, r2 + 8003796: d062 beq.n 800385e + 8003798: 687b ldr r3, [r7, #4] + 800379a: 685b ldr r3, [r3, #4] + 800379c: 2b00 cmp r3, #0 + 800379e: d15e bne.n 800385e { return HAL_ERROR; - 80037c0: 2301 movs r3, #1 - 80037c2: e2d9 b.n 8003d78 + 80037a0: 2301 movs r3, #1 + 80037a2: e2d9 b.n 8003d58 } } else { /* Set the new HSE configuration ---------------------------------------*/ __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 80037c4: 687b ldr r3, [r7, #4] - 80037c6: 685a ldr r2, [r3, #4] - 80037c8: 2380 movs r3, #128 ; 0x80 - 80037ca: 025b lsls r3, r3, #9 - 80037cc: 429a cmp r2, r3 - 80037ce: d107 bne.n 80037e0 - 80037d0: 4bb0 ldr r3, [pc, #704] ; (8003a94 ) - 80037d2: 681a ldr r2, [r3, #0] - 80037d4: 4baf ldr r3, [pc, #700] ; (8003a94 ) - 80037d6: 2180 movs r1, #128 ; 0x80 - 80037d8: 0249 lsls r1, r1, #9 - 80037da: 430a orrs r2, r1 - 80037dc: 601a str r2, [r3, #0] - 80037de: e020 b.n 8003822 - 80037e0: 687b ldr r3, [r7, #4] - 80037e2: 685a ldr r2, [r3, #4] - 80037e4: 23a0 movs r3, #160 ; 0xa0 - 80037e6: 02db lsls r3, r3, #11 - 80037e8: 429a cmp r2, r3 - 80037ea: d10e bne.n 800380a - 80037ec: 4ba9 ldr r3, [pc, #676] ; (8003a94 ) - 80037ee: 681a ldr r2, [r3, #0] - 80037f0: 4ba8 ldr r3, [pc, #672] ; (8003a94 ) - 80037f2: 2180 movs r1, #128 ; 0x80 - 80037f4: 02c9 lsls r1, r1, #11 - 80037f6: 430a orrs r2, r1 - 80037f8: 601a str r2, [r3, #0] - 80037fa: 4ba6 ldr r3, [pc, #664] ; (8003a94 ) - 80037fc: 681a ldr r2, [r3, #0] - 80037fe: 4ba5 ldr r3, [pc, #660] ; (8003a94 ) - 8003800: 2180 movs r1, #128 ; 0x80 - 8003802: 0249 lsls r1, r1, #9 - 8003804: 430a orrs r2, r1 - 8003806: 601a str r2, [r3, #0] - 8003808: e00b b.n 8003822 - 800380a: 4ba2 ldr r3, [pc, #648] ; (8003a94 ) - 800380c: 681a ldr r2, [r3, #0] - 800380e: 4ba1 ldr r3, [pc, #644] ; (8003a94 ) - 8003810: 49a1 ldr r1, [pc, #644] ; (8003a98 ) - 8003812: 400a ands r2, r1 - 8003814: 601a str r2, [r3, #0] - 8003816: 4b9f ldr r3, [pc, #636] ; (8003a94 ) - 8003818: 681a ldr r2, [r3, #0] - 800381a: 4b9e ldr r3, [pc, #632] ; (8003a94 ) - 800381c: 499f ldr r1, [pc, #636] ; (8003a9c ) - 800381e: 400a ands r2, r1 - 8003820: 601a str r2, [r3, #0] + 80037a4: 687b ldr r3, [r7, #4] + 80037a6: 685a ldr r2, [r3, #4] + 80037a8: 2380 movs r3, #128 ; 0x80 + 80037aa: 025b lsls r3, r3, #9 + 80037ac: 429a cmp r2, r3 + 80037ae: d107 bne.n 80037c0 + 80037b0: 4bb0 ldr r3, [pc, #704] ; (8003a74 ) + 80037b2: 681a ldr r2, [r3, #0] + 80037b4: 4baf ldr r3, [pc, #700] ; (8003a74 ) + 80037b6: 2180 movs r1, #128 ; 0x80 + 80037b8: 0249 lsls r1, r1, #9 + 80037ba: 430a orrs r2, r1 + 80037bc: 601a str r2, [r3, #0] + 80037be: e020 b.n 8003802 + 80037c0: 687b ldr r3, [r7, #4] + 80037c2: 685a ldr r2, [r3, #4] + 80037c4: 23a0 movs r3, #160 ; 0xa0 + 80037c6: 02db lsls r3, r3, #11 + 80037c8: 429a cmp r2, r3 + 80037ca: d10e bne.n 80037ea + 80037cc: 4ba9 ldr r3, [pc, #676] ; (8003a74 ) + 80037ce: 681a ldr r2, [r3, #0] + 80037d0: 4ba8 ldr r3, [pc, #672] ; (8003a74 ) + 80037d2: 2180 movs r1, #128 ; 0x80 + 80037d4: 02c9 lsls r1, r1, #11 + 80037d6: 430a orrs r2, r1 + 80037d8: 601a str r2, [r3, #0] + 80037da: 4ba6 ldr r3, [pc, #664] ; (8003a74 ) + 80037dc: 681a ldr r2, [r3, #0] + 80037de: 4ba5 ldr r3, [pc, #660] ; (8003a74 ) + 80037e0: 2180 movs r1, #128 ; 0x80 + 80037e2: 0249 lsls r1, r1, #9 + 80037e4: 430a orrs r2, r1 + 80037e6: 601a str r2, [r3, #0] + 80037e8: e00b b.n 8003802 + 80037ea: 4ba2 ldr r3, [pc, #648] ; (8003a74 ) + 80037ec: 681a ldr r2, [r3, #0] + 80037ee: 4ba1 ldr r3, [pc, #644] ; (8003a74 ) + 80037f0: 49a1 ldr r1, [pc, #644] ; (8003a78 ) + 80037f2: 400a ands r2, r1 + 80037f4: 601a str r2, [r3, #0] + 80037f6: 4b9f ldr r3, [pc, #636] ; (8003a74 ) + 80037f8: 681a ldr r2, [r3, #0] + 80037fa: 4b9e ldr r3, [pc, #632] ; (8003a74 ) + 80037fc: 499f ldr r1, [pc, #636] ; (8003a7c ) + 80037fe: 400a ands r2, r1 + 8003800: 601a str r2, [r3, #0] /* Check the HSE State */ if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) - 8003822: 687b ldr r3, [r7, #4] - 8003824: 685b ldr r3, [r3, #4] - 8003826: 2b00 cmp r3, #0 - 8003828: d014 beq.n 8003854 + 8003802: 687b ldr r3, [r7, #4] + 8003804: 685b ldr r3, [r3, #4] + 8003806: 2b00 cmp r3, #0 + 8003808: d014 beq.n 8003834 { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 800382a: f7fe faaf bl 8001d8c - 800382e: 0003 movs r3, r0 - 8003830: 613b str r3, [r7, #16] + 800380a: f7fe faaf bl 8001d6c + 800380e: 0003 movs r3, r0 + 8003810: 613b str r3, [r7, #16] /* Wait till HSE is ready */ while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 8003832: e008 b.n 8003846 + 8003812: e008 b.n 8003826 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 8003834: f7fe faaa bl 8001d8c - 8003838: 0002 movs r2, r0 - 800383a: 693b ldr r3, [r7, #16] - 800383c: 1ad3 subs r3, r2, r3 - 800383e: 2b64 cmp r3, #100 ; 0x64 - 8003840: d901 bls.n 8003846 + 8003814: f7fe faaa bl 8001d6c + 8003818: 0002 movs r2, r0 + 800381a: 693b ldr r3, [r7, #16] + 800381c: 1ad3 subs r3, r2, r3 + 800381e: 2b64 cmp r3, #100 ; 0x64 + 8003820: d901 bls.n 8003826 { return HAL_TIMEOUT; - 8003842: 2303 movs r3, #3 - 8003844: e298 b.n 8003d78 + 8003822: 2303 movs r3, #3 + 8003824: e298 b.n 8003d58 while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 8003846: 4b93 ldr r3, [pc, #588] ; (8003a94 ) - 8003848: 681a ldr r2, [r3, #0] - 800384a: 2380 movs r3, #128 ; 0x80 - 800384c: 029b lsls r3, r3, #10 - 800384e: 4013 ands r3, r2 - 8003850: d0f0 beq.n 8003834 - 8003852: e015 b.n 8003880 + 8003826: 4b93 ldr r3, [pc, #588] ; (8003a74 ) + 8003828: 681a ldr r2, [r3, #0] + 800382a: 2380 movs r3, #128 ; 0x80 + 800382c: 029b lsls r3, r3, #10 + 800382e: 4013 ands r3, r2 + 8003830: d0f0 beq.n 8003814 + 8003832: e015 b.n 8003860 } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003854: f7fe fa9a bl 8001d8c - 8003858: 0003 movs r3, r0 - 800385a: 613b str r3, [r7, #16] + 8003834: f7fe fa9a bl 8001d6c + 8003838: 0003 movs r3, r0 + 800383a: 613b str r3, [r7, #16] /* Wait till HSE is disabled */ while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) - 800385c: e008 b.n 8003870 + 800383c: e008 b.n 8003850 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 800385e: f7fe fa95 bl 8001d8c - 8003862: 0002 movs r2, r0 - 8003864: 693b ldr r3, [r7, #16] - 8003866: 1ad3 subs r3, r2, r3 - 8003868: 2b64 cmp r3, #100 ; 0x64 - 800386a: d901 bls.n 8003870 + 800383e: f7fe fa95 bl 8001d6c + 8003842: 0002 movs r2, r0 + 8003844: 693b ldr r3, [r7, #16] + 8003846: 1ad3 subs r3, r2, r3 + 8003848: 2b64 cmp r3, #100 ; 0x64 + 800384a: d901 bls.n 8003850 { return HAL_TIMEOUT; - 800386c: 2303 movs r3, #3 - 800386e: e283 b.n 8003d78 + 800384c: 2303 movs r3, #3 + 800384e: e283 b.n 8003d58 while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) - 8003870: 4b88 ldr r3, [pc, #544] ; (8003a94 ) - 8003872: 681a ldr r2, [r3, #0] - 8003874: 2380 movs r3, #128 ; 0x80 - 8003876: 029b lsls r3, r3, #10 - 8003878: 4013 ands r3, r2 - 800387a: d1f0 bne.n 800385e - 800387c: e000 b.n 8003880 + 8003850: 4b88 ldr r3, [pc, #544] ; (8003a74 ) + 8003852: 681a ldr r2, [r3, #0] + 8003854: 2380 movs r3, #128 ; 0x80 + 8003856: 029b lsls r3, r3, #10 + 8003858: 4013 ands r3, r2 + 800385a: d1f0 bne.n 800383e + 800385c: e000 b.n 8003860 if ((READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 800387e: 46c0 nop ; (mov r8, r8) + 800385e: 46c0 nop ; (mov r8, r8) } } } } /*----------------------------- HSI Configuration --------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 8003880: 687b ldr r3, [r7, #4] - 8003882: 681b ldr r3, [r3, #0] - 8003884: 2202 movs r2, #2 - 8003886: 4013 ands r3, r2 - 8003888: d100 bne.n 800388c - 800388a: e099 b.n 80039c0 + 8003860: 687b ldr r3, [r7, #4] + 8003862: 681b ldr r3, [r3, #0] + 8003864: 2202 movs r2, #2 + 8003866: 4013 ands r3, r2 + 8003868: d100 bne.n 800386c + 800386a: e099 b.n 80039a0 assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); assert_param(IS_RCC_HSI_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); assert_param(IS_RCC_HSIDIV(RCC_OscInitStruct->HSIDiv)); /* Check if HSI16 is used as system clock or as PLL source when PLL is selected as system clock */ temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); - 800388c: 4b81 ldr r3, [pc, #516] ; (8003a94 ) - 800388e: 689b ldr r3, [r3, #8] - 8003890: 2238 movs r2, #56 ; 0x38 - 8003892: 4013 ands r3, r2 - 8003894: 61bb str r3, [r7, #24] + 800386c: 4b81 ldr r3, [pc, #516] ; (8003a74 ) + 800386e: 689b ldr r3, [r3, #8] + 8003870: 2238 movs r2, #56 ; 0x38 + 8003872: 4013 ands r3, r2 + 8003874: 61bb str r3, [r7, #24] temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE(); - 8003896: 4b7f ldr r3, [pc, #508] ; (8003a94 ) - 8003898: 68db ldr r3, [r3, #12] - 800389a: 2203 movs r2, #3 - 800389c: 4013 ands r3, r2 - 800389e: 617b str r3, [r7, #20] + 8003876: 4b7f ldr r3, [pc, #508] ; (8003a74 ) + 8003878: 68db ldr r3, [r3, #12] + 800387a: 2203 movs r2, #3 + 800387c: 4013 ands r3, r2 + 800387e: 617b str r3, [r7, #20] if (((temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (temp_pllckcfg == RCC_PLLSOURCE_HSI)) - 80038a0: 69bb ldr r3, [r7, #24] - 80038a2: 2b10 cmp r3, #16 - 80038a4: d102 bne.n 80038ac - 80038a6: 697b ldr r3, [r7, #20] - 80038a8: 2b02 cmp r3, #2 - 80038aa: d002 beq.n 80038b2 + 8003880: 69bb ldr r3, [r7, #24] + 8003882: 2b10 cmp r3, #16 + 8003884: d102 bne.n 800388c + 8003886: 697b ldr r3, [r7, #20] + 8003888: 2b02 cmp r3, #2 + 800388a: d002 beq.n 8003892 || (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSI)) - 80038ac: 69bb ldr r3, [r7, #24] - 80038ae: 2b00 cmp r3, #0 - 80038b0: d135 bne.n 800391e + 800388c: 69bb ldr r3, [r7, #24] + 800388e: 2b00 cmp r3, #0 + 8003890: d135 bne.n 80038fe { /* When HSI is used as system clock or as PLL input clock it can not be disabled */ if ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 80038b2: 4b78 ldr r3, [pc, #480] ; (8003a94 ) - 80038b4: 681a ldr r2, [r3, #0] - 80038b6: 2380 movs r3, #128 ; 0x80 - 80038b8: 00db lsls r3, r3, #3 - 80038ba: 4013 ands r3, r2 - 80038bc: d005 beq.n 80038ca - 80038be: 687b ldr r3, [r7, #4] - 80038c0: 68db ldr r3, [r3, #12] - 80038c2: 2b00 cmp r3, #0 - 80038c4: d101 bne.n 80038ca + 8003892: 4b78 ldr r3, [pc, #480] ; (8003a74 ) + 8003894: 681a ldr r2, [r3, #0] + 8003896: 2380 movs r3, #128 ; 0x80 + 8003898: 00db lsls r3, r3, #3 + 800389a: 4013 ands r3, r2 + 800389c: d005 beq.n 80038aa + 800389e: 687b ldr r3, [r7, #4] + 80038a0: 68db ldr r3, [r3, #12] + 80038a2: 2b00 cmp r3, #0 + 80038a4: d101 bne.n 80038aa { return HAL_ERROR; - 80038c6: 2301 movs r3, #1 - 80038c8: e256 b.n 8003d78 + 80038a6: 2301 movs r3, #1 + 80038a8: e256 b.n 8003d58 } /* Otherwise, just the calibration is allowed */ else { /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 80038ca: 4b72 ldr r3, [pc, #456] ; (8003a94 ) - 80038cc: 685b ldr r3, [r3, #4] - 80038ce: 4a74 ldr r2, [pc, #464] ; (8003aa0 ) - 80038d0: 4013 ands r3, r2 - 80038d2: 0019 movs r1, r3 - 80038d4: 687b ldr r3, [r7, #4] - 80038d6: 695b ldr r3, [r3, #20] - 80038d8: 021a lsls r2, r3, #8 - 80038da: 4b6e ldr r3, [pc, #440] ; (8003a94 ) - 80038dc: 430a orrs r2, r1 - 80038de: 605a str r2, [r3, #4] + 80038aa: 4b72 ldr r3, [pc, #456] ; (8003a74 ) + 80038ac: 685b ldr r3, [r3, #4] + 80038ae: 4a74 ldr r2, [pc, #464] ; (8003a80 ) + 80038b0: 4013 ands r3, r2 + 80038b2: 0019 movs r1, r3 + 80038b4: 687b ldr r3, [r7, #4] + 80038b6: 695b ldr r3, [r3, #20] + 80038b8: 021a lsls r2, r3, #8 + 80038ba: 4b6e ldr r3, [pc, #440] ; (8003a74 ) + 80038bc: 430a orrs r2, r1 + 80038be: 605a str r2, [r3, #4] if (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSI) - 80038e0: 69bb ldr r3, [r7, #24] - 80038e2: 2b00 cmp r3, #0 - 80038e4: d112 bne.n 800390c + 80038c0: 69bb ldr r3, [r7, #24] + 80038c2: 2b00 cmp r3, #0 + 80038c4: d112 bne.n 80038ec { /* Adjust the HSI16 division factor */ __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIDiv); - 80038e6: 4b6b ldr r3, [pc, #428] ; (8003a94 ) - 80038e8: 681b ldr r3, [r3, #0] - 80038ea: 4a6e ldr r2, [pc, #440] ; (8003aa4 ) - 80038ec: 4013 ands r3, r2 - 80038ee: 0019 movs r1, r3 - 80038f0: 687b ldr r3, [r7, #4] - 80038f2: 691a ldr r2, [r3, #16] - 80038f4: 4b67 ldr r3, [pc, #412] ; (8003a94 ) - 80038f6: 430a orrs r2, r1 - 80038f8: 601a str r2, [r3, #0] + 80038c6: 4b6b ldr r3, [pc, #428] ; (8003a74 ) + 80038c8: 681b ldr r3, [r3, #0] + 80038ca: 4a6e ldr r2, [pc, #440] ; (8003a84 ) + 80038cc: 4013 ands r3, r2 + 80038ce: 0019 movs r1, r3 + 80038d0: 687b ldr r3, [r7, #4] + 80038d2: 691a ldr r2, [r3, #16] + 80038d4: 4b67 ldr r3, [pc, #412] ; (8003a74 ) + 80038d6: 430a orrs r2, r1 + 80038d8: 601a str r2, [r3, #0] /* Update the SystemCoreClock global variable with HSISYS value */ SystemCoreClock = (HSI_VALUE / (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV)) >> RCC_CR_HSIDIV_Pos))); - 80038fa: 4b66 ldr r3, [pc, #408] ; (8003a94 ) - 80038fc: 681b ldr r3, [r3, #0] - 80038fe: 0adb lsrs r3, r3, #11 - 8003900: 2207 movs r2, #7 - 8003902: 4013 ands r3, r2 - 8003904: 4a68 ldr r2, [pc, #416] ; (8003aa8 ) - 8003906: 40da lsrs r2, r3 - 8003908: 4b68 ldr r3, [pc, #416] ; (8003aac ) - 800390a: 601a str r2, [r3, #0] + 80038da: 4b66 ldr r3, [pc, #408] ; (8003a74 ) + 80038dc: 681b ldr r3, [r3, #0] + 80038de: 0adb lsrs r3, r3, #11 + 80038e0: 2207 movs r2, #7 + 80038e2: 4013 ands r3, r2 + 80038e4: 4a68 ldr r2, [pc, #416] ; (8003a88 ) + 80038e6: 40da lsrs r2, r3 + 80038e8: 4b68 ldr r3, [pc, #416] ; (8003a8c ) + 80038ea: 601a str r2, [r3, #0] } /* Adapt Systick interrupt period */ if (HAL_InitTick(uwTickPrio) != HAL_OK) - 800390c: 4b68 ldr r3, [pc, #416] ; (8003ab0 ) - 800390e: 681b ldr r3, [r3, #0] - 8003910: 0018 movs r0, r3 - 8003912: f7fe f9df bl 8001cd4 - 8003916: 1e03 subs r3, r0, #0 - 8003918: d051 beq.n 80039be + 80038ec: 4b68 ldr r3, [pc, #416] ; (8003a90 ) + 80038ee: 681b ldr r3, [r3, #0] + 80038f0: 0018 movs r0, r3 + 80038f2: f7fe f9df bl 8001cb4 + 80038f6: 1e03 subs r3, r0, #0 + 80038f8: d051 beq.n 800399e { return HAL_ERROR; - 800391a: 2301 movs r3, #1 - 800391c: e22c b.n 8003d78 + 80038fa: 2301 movs r3, #1 + 80038fc: e22c b.n 8003d58 } } else { /* Check the HSI State */ if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) - 800391e: 687b ldr r3, [r7, #4] - 8003920: 68db ldr r3, [r3, #12] - 8003922: 2b00 cmp r3, #0 - 8003924: d030 beq.n 8003988 + 80038fe: 687b ldr r3, [r7, #4] + 8003900: 68db ldr r3, [r3, #12] + 8003902: 2b00 cmp r3, #0 + 8003904: d030 beq.n 8003968 { /* Configure the HSI16 division factor */ __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIDiv); - 8003926: 4b5b ldr r3, [pc, #364] ; (8003a94 ) - 8003928: 681b ldr r3, [r3, #0] - 800392a: 4a5e ldr r2, [pc, #376] ; (8003aa4 ) - 800392c: 4013 ands r3, r2 - 800392e: 0019 movs r1, r3 - 8003930: 687b ldr r3, [r7, #4] - 8003932: 691a ldr r2, [r3, #16] - 8003934: 4b57 ldr r3, [pc, #348] ; (8003a94 ) - 8003936: 430a orrs r2, r1 - 8003938: 601a str r2, [r3, #0] + 8003906: 4b5b ldr r3, [pc, #364] ; (8003a74 ) + 8003908: 681b ldr r3, [r3, #0] + 800390a: 4a5e ldr r2, [pc, #376] ; (8003a84 ) + 800390c: 4013 ands r3, r2 + 800390e: 0019 movs r1, r3 + 8003910: 687b ldr r3, [r7, #4] + 8003912: 691a ldr r2, [r3, #16] + 8003914: 4b57 ldr r3, [pc, #348] ; (8003a74 ) + 8003916: 430a orrs r2, r1 + 8003918: 601a str r2, [r3, #0] /* Enable the Internal High Speed oscillator (HSI16). */ __HAL_RCC_HSI_ENABLE(); - 800393a: 4b56 ldr r3, [pc, #344] ; (8003a94 ) - 800393c: 681a ldr r2, [r3, #0] - 800393e: 4b55 ldr r3, [pc, #340] ; (8003a94 ) - 8003940: 2180 movs r1, #128 ; 0x80 - 8003942: 0049 lsls r1, r1, #1 - 8003944: 430a orrs r2, r1 - 8003946: 601a str r2, [r3, #0] + 800391a: 4b56 ldr r3, [pc, #344] ; (8003a74 ) + 800391c: 681a ldr r2, [r3, #0] + 800391e: 4b55 ldr r3, [pc, #340] ; (8003a74 ) + 8003920: 2180 movs r1, #128 ; 0x80 + 8003922: 0049 lsls r1, r1, #1 + 8003924: 430a orrs r2, r1 + 8003926: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003948: f7fe fa20 bl 8001d8c - 800394c: 0003 movs r3, r0 - 800394e: 613b str r3, [r7, #16] + 8003928: f7fe fa20 bl 8001d6c + 800392c: 0003 movs r3, r0 + 800392e: 613b str r3, [r7, #16] /* Wait till HSI is ready */ while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8003950: e008 b.n 8003964 + 8003930: e008 b.n 8003944 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8003952: f7fe fa1b bl 8001d8c - 8003956: 0002 movs r2, r0 - 8003958: 693b ldr r3, [r7, #16] - 800395a: 1ad3 subs r3, r2, r3 - 800395c: 2b02 cmp r3, #2 - 800395e: d901 bls.n 8003964 + 8003932: f7fe fa1b bl 8001d6c + 8003936: 0002 movs r2, r0 + 8003938: 693b ldr r3, [r7, #16] + 800393a: 1ad3 subs r3, r2, r3 + 800393c: 2b02 cmp r3, #2 + 800393e: d901 bls.n 8003944 { return HAL_TIMEOUT; - 8003960: 2303 movs r3, #3 - 8003962: e209 b.n 8003d78 + 8003940: 2303 movs r3, #3 + 8003942: e209 b.n 8003d58 while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8003964: 4b4b ldr r3, [pc, #300] ; (8003a94 ) - 8003966: 681a ldr r2, [r3, #0] - 8003968: 2380 movs r3, #128 ; 0x80 - 800396a: 00db lsls r3, r3, #3 - 800396c: 4013 ands r3, r2 - 800396e: d0f0 beq.n 8003952 + 8003944: 4b4b ldr r3, [pc, #300] ; (8003a74 ) + 8003946: 681a ldr r2, [r3, #0] + 8003948: 2380 movs r3, #128 ; 0x80 + 800394a: 00db lsls r3, r3, #3 + 800394c: 4013 ands r3, r2 + 800394e: d0f0 beq.n 8003932 } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8003970: 4b48 ldr r3, [pc, #288] ; (8003a94 ) - 8003972: 685b ldr r3, [r3, #4] - 8003974: 4a4a ldr r2, [pc, #296] ; (8003aa0 ) - 8003976: 4013 ands r3, r2 - 8003978: 0019 movs r1, r3 - 800397a: 687b ldr r3, [r7, #4] - 800397c: 695b ldr r3, [r3, #20] - 800397e: 021a lsls r2, r3, #8 - 8003980: 4b44 ldr r3, [pc, #272] ; (8003a94 ) - 8003982: 430a orrs r2, r1 - 8003984: 605a str r2, [r3, #4] - 8003986: e01b b.n 80039c0 + 8003950: 4b48 ldr r3, [pc, #288] ; (8003a74 ) + 8003952: 685b ldr r3, [r3, #4] + 8003954: 4a4a ldr r2, [pc, #296] ; (8003a80 ) + 8003956: 4013 ands r3, r2 + 8003958: 0019 movs r1, r3 + 800395a: 687b ldr r3, [r7, #4] + 800395c: 695b ldr r3, [r3, #20] + 800395e: 021a lsls r2, r3, #8 + 8003960: 4b44 ldr r3, [pc, #272] ; (8003a74 ) + 8003962: 430a orrs r2, r1 + 8003964: 605a str r2, [r3, #4] + 8003966: e01b b.n 80039a0 } else { /* Disable the Internal High Speed oscillator (HSI16). */ __HAL_RCC_HSI_DISABLE(); - 8003988: 4b42 ldr r3, [pc, #264] ; (8003a94 ) - 800398a: 681a ldr r2, [r3, #0] - 800398c: 4b41 ldr r3, [pc, #260] ; (8003a94 ) - 800398e: 4949 ldr r1, [pc, #292] ; (8003ab4 ) - 8003990: 400a ands r2, r1 - 8003992: 601a str r2, [r3, #0] + 8003968: 4b42 ldr r3, [pc, #264] ; (8003a74 ) + 800396a: 681a ldr r2, [r3, #0] + 800396c: 4b41 ldr r3, [pc, #260] ; (8003a74 ) + 800396e: 4949 ldr r1, [pc, #292] ; (8003a94 ) + 8003970: 400a ands r2, r1 + 8003972: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003994: f7fe f9fa bl 8001d8c - 8003998: 0003 movs r3, r0 - 800399a: 613b str r3, [r7, #16] + 8003974: f7fe f9fa bl 8001d6c + 8003978: 0003 movs r3, r0 + 800397a: 613b str r3, [r7, #16] /* Wait till HSI is disabled */ while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) - 800399c: e008 b.n 80039b0 + 800397c: e008 b.n 8003990 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 800399e: f7fe f9f5 bl 8001d8c - 80039a2: 0002 movs r2, r0 - 80039a4: 693b ldr r3, [r7, #16] - 80039a6: 1ad3 subs r3, r2, r3 - 80039a8: 2b02 cmp r3, #2 - 80039aa: d901 bls.n 80039b0 + 800397e: f7fe f9f5 bl 8001d6c + 8003982: 0002 movs r2, r0 + 8003984: 693b ldr r3, [r7, #16] + 8003986: 1ad3 subs r3, r2, r3 + 8003988: 2b02 cmp r3, #2 + 800398a: d901 bls.n 8003990 { return HAL_TIMEOUT; - 80039ac: 2303 movs r3, #3 - 80039ae: e1e3 b.n 8003d78 + 800398c: 2303 movs r3, #3 + 800398e: e1e3 b.n 8003d58 while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) - 80039b0: 4b38 ldr r3, [pc, #224] ; (8003a94 ) - 80039b2: 681a ldr r2, [r3, #0] - 80039b4: 2380 movs r3, #128 ; 0x80 - 80039b6: 00db lsls r3, r3, #3 - 80039b8: 4013 ands r3, r2 - 80039ba: d1f0 bne.n 800399e - 80039bc: e000 b.n 80039c0 + 8003990: 4b38 ldr r3, [pc, #224] ; (8003a74 ) + 8003992: 681a ldr r2, [r3, #0] + 8003994: 2380 movs r3, #128 ; 0x80 + 8003996: 00db lsls r3, r3, #3 + 8003998: 4013 ands r3, r2 + 800399a: d1f0 bne.n 800397e + 800399c: e000 b.n 80039a0 if ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 80039be: 46c0 nop ; (mov r8, r8) + 800399e: 46c0 nop ; (mov r8, r8) } } } } /*------------------------------ LSI Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 80039c0: 687b ldr r3, [r7, #4] - 80039c2: 681b ldr r3, [r3, #0] - 80039c4: 2208 movs r2, #8 - 80039c6: 4013 ands r3, r2 - 80039c8: d047 beq.n 8003a5a + 80039a0: 687b ldr r3, [r7, #4] + 80039a2: 681b ldr r3, [r3, #0] + 80039a4: 2208 movs r2, #8 + 80039a6: 4013 ands r3, r2 + 80039a8: d047 beq.n 8003a3a { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); /* Check if LSI is used as system clock */ if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSI) - 80039ca: 4b32 ldr r3, [pc, #200] ; (8003a94 ) - 80039cc: 689b ldr r3, [r3, #8] - 80039ce: 2238 movs r2, #56 ; 0x38 - 80039d0: 4013 ands r3, r2 - 80039d2: 2b18 cmp r3, #24 - 80039d4: d10a bne.n 80039ec + 80039aa: 4b32 ldr r3, [pc, #200] ; (8003a74 ) + 80039ac: 689b ldr r3, [r3, #8] + 80039ae: 2238 movs r2, #56 ; 0x38 + 80039b0: 4013 ands r3, r2 + 80039b2: 2b18 cmp r3, #24 + 80039b4: d10a bne.n 80039cc { /* When LSI is used as system clock it will not be disabled */ if ((((RCC->CSR) & RCC_CSR_LSIRDY) != 0U) && (RCC_OscInitStruct->LSIState == RCC_LSI_OFF)) - 80039d6: 4b2f ldr r3, [pc, #188] ; (8003a94 ) - 80039d8: 6e1b ldr r3, [r3, #96] ; 0x60 - 80039da: 2202 movs r2, #2 - 80039dc: 4013 ands r3, r2 - 80039de: d03c beq.n 8003a5a - 80039e0: 687b ldr r3, [r7, #4] - 80039e2: 699b ldr r3, [r3, #24] - 80039e4: 2b00 cmp r3, #0 - 80039e6: d138 bne.n 8003a5a + 80039b6: 4b2f ldr r3, [pc, #188] ; (8003a74 ) + 80039b8: 6e1b ldr r3, [r3, #96] ; 0x60 + 80039ba: 2202 movs r2, #2 + 80039bc: 4013 ands r3, r2 + 80039be: d03c beq.n 8003a3a + 80039c0: 687b ldr r3, [r7, #4] + 80039c2: 699b ldr r3, [r3, #24] + 80039c4: 2b00 cmp r3, #0 + 80039c6: d138 bne.n 8003a3a { return HAL_ERROR; - 80039e8: 2301 movs r3, #1 - 80039ea: e1c5 b.n 8003d78 + 80039c8: 2301 movs r3, #1 + 80039ca: e1c5 b.n 8003d58 } } else { /* Check the LSI State */ if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) - 80039ec: 687b ldr r3, [r7, #4] - 80039ee: 699b ldr r3, [r3, #24] - 80039f0: 2b00 cmp r3, #0 - 80039f2: d019 beq.n 8003a28 + 80039cc: 687b ldr r3, [r7, #4] + 80039ce: 699b ldr r3, [r3, #24] + 80039d0: 2b00 cmp r3, #0 + 80039d2: d019 beq.n 8003a08 { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); - 80039f4: 4b27 ldr r3, [pc, #156] ; (8003a94 ) - 80039f6: 6e1a ldr r2, [r3, #96] ; 0x60 - 80039f8: 4b26 ldr r3, [pc, #152] ; (8003a94 ) - 80039fa: 2101 movs r1, #1 - 80039fc: 430a orrs r2, r1 - 80039fe: 661a str r2, [r3, #96] ; 0x60 + 80039d4: 4b27 ldr r3, [pc, #156] ; (8003a74 ) + 80039d6: 6e1a ldr r2, [r3, #96] ; 0x60 + 80039d8: 4b26 ldr r3, [pc, #152] ; (8003a74 ) + 80039da: 2101 movs r1, #1 + 80039dc: 430a orrs r2, r1 + 80039de: 661a str r2, [r3, #96] ; 0x60 /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003a00: f7fe f9c4 bl 8001d8c - 8003a04: 0003 movs r3, r0 - 8003a06: 613b str r3, [r7, #16] + 80039e0: f7fe f9c4 bl 8001d6c + 80039e4: 0003 movs r3, r0 + 80039e6: 613b str r3, [r7, #16] /* Wait till LSI is ready */ while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 8003a08: e008 b.n 8003a1c + 80039e8: e008 b.n 80039fc { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8003a0a: f7fe f9bf bl 8001d8c - 8003a0e: 0002 movs r2, r0 - 8003a10: 693b ldr r3, [r7, #16] - 8003a12: 1ad3 subs r3, r2, r3 - 8003a14: 2b02 cmp r3, #2 - 8003a16: d901 bls.n 8003a1c + 80039ea: f7fe f9bf bl 8001d6c + 80039ee: 0002 movs r2, r0 + 80039f0: 693b ldr r3, [r7, #16] + 80039f2: 1ad3 subs r3, r2, r3 + 80039f4: 2b02 cmp r3, #2 + 80039f6: d901 bls.n 80039fc { return HAL_TIMEOUT; - 8003a18: 2303 movs r3, #3 - 8003a1a: e1ad b.n 8003d78 + 80039f8: 2303 movs r3, #3 + 80039fa: e1ad b.n 8003d58 while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 8003a1c: 4b1d ldr r3, [pc, #116] ; (8003a94 ) - 8003a1e: 6e1b ldr r3, [r3, #96] ; 0x60 - 8003a20: 2202 movs r2, #2 - 8003a22: 4013 ands r3, r2 - 8003a24: d0f1 beq.n 8003a0a - 8003a26: e018 b.n 8003a5a + 80039fc: 4b1d ldr r3, [pc, #116] ; (8003a74 ) + 80039fe: 6e1b ldr r3, [r3, #96] ; 0x60 + 8003a00: 2202 movs r2, #2 + 8003a02: 4013 ands r3, r2 + 8003a04: d0f1 beq.n 80039ea + 8003a06: e018 b.n 8003a3a } } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); - 8003a28: 4b1a ldr r3, [pc, #104] ; (8003a94 ) - 8003a2a: 6e1a ldr r2, [r3, #96] ; 0x60 - 8003a2c: 4b19 ldr r3, [pc, #100] ; (8003a94 ) - 8003a2e: 2101 movs r1, #1 - 8003a30: 438a bics r2, r1 - 8003a32: 661a str r2, [r3, #96] ; 0x60 + 8003a08: 4b1a ldr r3, [pc, #104] ; (8003a74 ) + 8003a0a: 6e1a ldr r2, [r3, #96] ; 0x60 + 8003a0c: 4b19 ldr r3, [pc, #100] ; (8003a74 ) + 8003a0e: 2101 movs r1, #1 + 8003a10: 438a bics r2, r1 + 8003a12: 661a str r2, [r3, #96] ; 0x60 /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003a34: f7fe f9aa bl 8001d8c - 8003a38: 0003 movs r3, r0 - 8003a3a: 613b str r3, [r7, #16] + 8003a14: f7fe f9aa bl 8001d6c + 8003a18: 0003 movs r3, r0 + 8003a1a: 613b str r3, [r7, #16] /* Wait till LSI is disabled */ while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U) - 8003a3c: e008 b.n 8003a50 + 8003a1c: e008 b.n 8003a30 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8003a3e: f7fe f9a5 bl 8001d8c - 8003a42: 0002 movs r2, r0 - 8003a44: 693b ldr r3, [r7, #16] - 8003a46: 1ad3 subs r3, r2, r3 - 8003a48: 2b02 cmp r3, #2 - 8003a4a: d901 bls.n 8003a50 + 8003a1e: f7fe f9a5 bl 8001d6c + 8003a22: 0002 movs r2, r0 + 8003a24: 693b ldr r3, [r7, #16] + 8003a26: 1ad3 subs r3, r2, r3 + 8003a28: 2b02 cmp r3, #2 + 8003a2a: d901 bls.n 8003a30 { return HAL_TIMEOUT; - 8003a4c: 2303 movs r3, #3 - 8003a4e: e193 b.n 8003d78 + 8003a2c: 2303 movs r3, #3 + 8003a2e: e193 b.n 8003d58 while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U) - 8003a50: 4b10 ldr r3, [pc, #64] ; (8003a94 ) - 8003a52: 6e1b ldr r3, [r3, #96] ; 0x60 - 8003a54: 2202 movs r2, #2 - 8003a56: 4013 ands r3, r2 - 8003a58: d1f1 bne.n 8003a3e + 8003a30: 4b10 ldr r3, [pc, #64] ; (8003a74 ) + 8003a32: 6e1b ldr r3, [r3, #96] ; 0x60 + 8003a34: 2202 movs r2, #2 + 8003a36: 4013 ands r3, r2 + 8003a38: d1f1 bne.n 8003a1e } } } } /*------------------------------ LSE Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 8003a5a: 687b ldr r3, [r7, #4] - 8003a5c: 681b ldr r3, [r3, #0] - 8003a5e: 2204 movs r2, #4 - 8003a60: 4013 ands r3, r2 - 8003a62: d100 bne.n 8003a66 - 8003a64: e0c6 b.n 8003bf4 + 8003a3a: 687b ldr r3, [r7, #4] + 8003a3c: 681b ldr r3, [r3, #0] + 8003a3e: 2204 movs r2, #4 + 8003a40: 4013 ands r3, r2 + 8003a42: d100 bne.n 8003a46 + 8003a44: e0c6 b.n 8003bd4 { FlagStatus pwrclkchanged = RESET; - 8003a66: 231f movs r3, #31 - 8003a68: 18fb adds r3, r7, r3 - 8003a6a: 2200 movs r2, #0 - 8003a6c: 701a strb r2, [r3, #0] + 8003a46: 231f movs r3, #31 + 8003a48: 18fb adds r3, r7, r3 + 8003a4a: 2200 movs r2, #0 + 8003a4c: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); /* When the LSE is used as system clock, it is not allowed disable it */ if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSE) - 8003a6e: 4b09 ldr r3, [pc, #36] ; (8003a94 ) - 8003a70: 689b ldr r3, [r3, #8] - 8003a72: 2238 movs r2, #56 ; 0x38 - 8003a74: 4013 ands r3, r2 - 8003a76: 2b20 cmp r3, #32 - 8003a78: d11e bne.n 8003ab8 + 8003a4e: 4b09 ldr r3, [pc, #36] ; (8003a74 ) + 8003a50: 689b ldr r3, [r3, #8] + 8003a52: 2238 movs r2, #56 ; 0x38 + 8003a54: 4013 ands r3, r2 + 8003a56: 2b20 cmp r3, #32 + 8003a58: d11e bne.n 8003a98 { if ((((RCC->BDCR) & RCC_BDCR_LSERDY) != 0U) && (RCC_OscInitStruct->LSEState == RCC_LSE_OFF)) - 8003a7a: 4b06 ldr r3, [pc, #24] ; (8003a94 ) - 8003a7c: 6ddb ldr r3, [r3, #92] ; 0x5c - 8003a7e: 2202 movs r2, #2 - 8003a80: 4013 ands r3, r2 - 8003a82: d100 bne.n 8003a86 - 8003a84: e0b6 b.n 8003bf4 - 8003a86: 687b ldr r3, [r7, #4] - 8003a88: 689b ldr r3, [r3, #8] - 8003a8a: 2b00 cmp r3, #0 - 8003a8c: d000 beq.n 8003a90 - 8003a8e: e0b1 b.n 8003bf4 + 8003a5a: 4b06 ldr r3, [pc, #24] ; (8003a74 ) + 8003a5c: 6ddb ldr r3, [r3, #92] ; 0x5c + 8003a5e: 2202 movs r2, #2 + 8003a60: 4013 ands r3, r2 + 8003a62: d100 bne.n 8003a66 + 8003a64: e0b6 b.n 8003bd4 + 8003a66: 687b ldr r3, [r7, #4] + 8003a68: 689b ldr r3, [r3, #8] + 8003a6a: 2b00 cmp r3, #0 + 8003a6c: d000 beq.n 8003a70 + 8003a6e: e0b1 b.n 8003bd4 { return HAL_ERROR; - 8003a90: 2301 movs r3, #1 - 8003a92: e171 b.n 8003d78 - 8003a94: 40021000 .word 0x40021000 - 8003a98: fffeffff .word 0xfffeffff - 8003a9c: fffbffff .word 0xfffbffff - 8003aa0: ffff80ff .word 0xffff80ff - 8003aa4: ffffc7ff .word 0xffffc7ff - 8003aa8: 00f42400 .word 0x00f42400 - 8003aac: 20000004 .word 0x20000004 - 8003ab0: 20000008 .word 0x20000008 - 8003ab4: fffffeff .word 0xfffffeff + 8003a70: 2301 movs r3, #1 + 8003a72: e171 b.n 8003d58 + 8003a74: 40021000 .word 0x40021000 + 8003a78: fffeffff .word 0xfffeffff + 8003a7c: fffbffff .word 0xfffbffff + 8003a80: ffff80ff .word 0xffff80ff + 8003a84: ffffc7ff .word 0xffffc7ff + 8003a88: 00f42400 .word 0x00f42400 + 8003a8c: 20000004 .word 0x20000004 + 8003a90: 20000008 .word 0x20000008 + 8003a94: fffffeff .word 0xfffffeff } else { /* Update LSE configuration in Backup Domain control register */ /* Requires to enable write access to Backup Domain of necessary */ if (__HAL_RCC_PWR_IS_CLK_DISABLED() != 0U) - 8003ab8: 4bb1 ldr r3, [pc, #708] ; (8003d80 ) - 8003aba: 6bda ldr r2, [r3, #60] ; 0x3c - 8003abc: 2380 movs r3, #128 ; 0x80 - 8003abe: 055b lsls r3, r3, #21 - 8003ac0: 4013 ands r3, r2 - 8003ac2: d101 bne.n 8003ac8 - 8003ac4: 2301 movs r3, #1 - 8003ac6: e000 b.n 8003aca - 8003ac8: 2300 movs r3, #0 - 8003aca: 2b00 cmp r3, #0 - 8003acc: d011 beq.n 8003af2 + 8003a98: 4bb1 ldr r3, [pc, #708] ; (8003d60 ) + 8003a9a: 6bda ldr r2, [r3, #60] ; 0x3c + 8003a9c: 2380 movs r3, #128 ; 0x80 + 8003a9e: 055b lsls r3, r3, #21 + 8003aa0: 4013 ands r3, r2 + 8003aa2: d101 bne.n 8003aa8 + 8003aa4: 2301 movs r3, #1 + 8003aa6: e000 b.n 8003aaa + 8003aa8: 2300 movs r3, #0 + 8003aaa: 2b00 cmp r3, #0 + 8003aac: d011 beq.n 8003ad2 { __HAL_RCC_PWR_CLK_ENABLE(); - 8003ace: 4bac ldr r3, [pc, #688] ; (8003d80 ) - 8003ad0: 6bda ldr r2, [r3, #60] ; 0x3c - 8003ad2: 4bab ldr r3, [pc, #684] ; (8003d80 ) - 8003ad4: 2180 movs r1, #128 ; 0x80 - 8003ad6: 0549 lsls r1, r1, #21 - 8003ad8: 430a orrs r2, r1 - 8003ada: 63da str r2, [r3, #60] ; 0x3c - 8003adc: 4ba8 ldr r3, [pc, #672] ; (8003d80 ) - 8003ade: 6bda ldr r2, [r3, #60] ; 0x3c - 8003ae0: 2380 movs r3, #128 ; 0x80 - 8003ae2: 055b lsls r3, r3, #21 - 8003ae4: 4013 ands r3, r2 - 8003ae6: 60fb str r3, [r7, #12] - 8003ae8: 68fb ldr r3, [r7, #12] + 8003aae: 4bac ldr r3, [pc, #688] ; (8003d60 ) + 8003ab0: 6bda ldr r2, [r3, #60] ; 0x3c + 8003ab2: 4bab ldr r3, [pc, #684] ; (8003d60 ) + 8003ab4: 2180 movs r1, #128 ; 0x80 + 8003ab6: 0549 lsls r1, r1, #21 + 8003ab8: 430a orrs r2, r1 + 8003aba: 63da str r2, [r3, #60] ; 0x3c + 8003abc: 4ba8 ldr r3, [pc, #672] ; (8003d60 ) + 8003abe: 6bda ldr r2, [r3, #60] ; 0x3c + 8003ac0: 2380 movs r3, #128 ; 0x80 + 8003ac2: 055b lsls r3, r3, #21 + 8003ac4: 4013 ands r3, r2 + 8003ac6: 60fb str r3, [r7, #12] + 8003ac8: 68fb ldr r3, [r7, #12] pwrclkchanged = SET; - 8003aea: 231f movs r3, #31 - 8003aec: 18fb adds r3, r7, r3 - 8003aee: 2201 movs r2, #1 - 8003af0: 701a strb r2, [r3, #0] + 8003aca: 231f movs r3, #31 + 8003acc: 18fb adds r3, r7, r3 + 8003ace: 2201 movs r2, #1 + 8003ad0: 701a strb r2, [r3, #0] } if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 8003af2: 4ba4 ldr r3, [pc, #656] ; (8003d84 ) - 8003af4: 681a ldr r2, [r3, #0] - 8003af6: 2380 movs r3, #128 ; 0x80 - 8003af8: 005b lsls r3, r3, #1 - 8003afa: 4013 ands r3, r2 - 8003afc: d11a bne.n 8003b34 + 8003ad2: 4ba4 ldr r3, [pc, #656] ; (8003d64 ) + 8003ad4: 681a ldr r2, [r3, #0] + 8003ad6: 2380 movs r3, #128 ; 0x80 + 8003ad8: 005b lsls r3, r3, #1 + 8003ada: 4013 ands r3, r2 + 8003adc: d11a bne.n 8003b14 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR1, PWR_CR1_DBP); - 8003afe: 4ba1 ldr r3, [pc, #644] ; (8003d84 ) - 8003b00: 681a ldr r2, [r3, #0] - 8003b02: 4ba0 ldr r3, [pc, #640] ; (8003d84 ) - 8003b04: 2180 movs r1, #128 ; 0x80 - 8003b06: 0049 lsls r1, r1, #1 - 8003b08: 430a orrs r2, r1 - 8003b0a: 601a str r2, [r3, #0] + 8003ade: 4ba1 ldr r3, [pc, #644] ; (8003d64 ) + 8003ae0: 681a ldr r2, [r3, #0] + 8003ae2: 4ba0 ldr r3, [pc, #640] ; (8003d64 ) + 8003ae4: 2180 movs r1, #128 ; 0x80 + 8003ae6: 0049 lsls r1, r1, #1 + 8003ae8: 430a orrs r2, r1 + 8003aea: 601a str r2, [r3, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 8003b0c: f7fe f93e bl 8001d8c - 8003b10: 0003 movs r3, r0 - 8003b12: 613b str r3, [r7, #16] + 8003aec: f7fe f93e bl 8001d6c + 8003af0: 0003 movs r3, r0 + 8003af2: 613b str r3, [r7, #16] while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 8003b14: e008 b.n 8003b28 + 8003af4: e008 b.n 8003b08 { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8003b16: f7fe f939 bl 8001d8c - 8003b1a: 0002 movs r2, r0 - 8003b1c: 693b ldr r3, [r7, #16] - 8003b1e: 1ad3 subs r3, r2, r3 - 8003b20: 2b02 cmp r3, #2 - 8003b22: d901 bls.n 8003b28 + 8003af6: f7fe f939 bl 8001d6c + 8003afa: 0002 movs r2, r0 + 8003afc: 693b ldr r3, [r7, #16] + 8003afe: 1ad3 subs r3, r2, r3 + 8003b00: 2b02 cmp r3, #2 + 8003b02: d901 bls.n 8003b08 { return HAL_TIMEOUT; - 8003b24: 2303 movs r3, #3 - 8003b26: e127 b.n 8003d78 + 8003b04: 2303 movs r3, #3 + 8003b06: e127 b.n 8003d58 while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 8003b28: 4b96 ldr r3, [pc, #600] ; (8003d84 ) - 8003b2a: 681a ldr r2, [r3, #0] - 8003b2c: 2380 movs r3, #128 ; 0x80 - 8003b2e: 005b lsls r3, r3, #1 - 8003b30: 4013 ands r3, r2 - 8003b32: d0f0 beq.n 8003b16 + 8003b08: 4b96 ldr r3, [pc, #600] ; (8003d64 ) + 8003b0a: 681a ldr r2, [r3, #0] + 8003b0c: 2380 movs r3, #128 ; 0x80 + 8003b0e: 005b lsls r3, r3, #1 + 8003b10: 4013 ands r3, r2 + 8003b12: d0f0 beq.n 8003af6 } } } /* Set the new LSE configuration -----------------------------------------*/ __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 8003b34: 687b ldr r3, [r7, #4] - 8003b36: 689b ldr r3, [r3, #8] - 8003b38: 2b01 cmp r3, #1 - 8003b3a: d106 bne.n 8003b4a - 8003b3c: 4b90 ldr r3, [pc, #576] ; (8003d80 ) - 8003b3e: 6dda ldr r2, [r3, #92] ; 0x5c - 8003b40: 4b8f ldr r3, [pc, #572] ; (8003d80 ) - 8003b42: 2101 movs r1, #1 - 8003b44: 430a orrs r2, r1 - 8003b46: 65da str r2, [r3, #92] ; 0x5c - 8003b48: e01c b.n 8003b84 - 8003b4a: 687b ldr r3, [r7, #4] - 8003b4c: 689b ldr r3, [r3, #8] - 8003b4e: 2b05 cmp r3, #5 - 8003b50: d10c bne.n 8003b6c - 8003b52: 4b8b ldr r3, [pc, #556] ; (8003d80 ) - 8003b54: 6dda ldr r2, [r3, #92] ; 0x5c - 8003b56: 4b8a ldr r3, [pc, #552] ; (8003d80 ) - 8003b58: 2104 movs r1, #4 - 8003b5a: 430a orrs r2, r1 - 8003b5c: 65da str r2, [r3, #92] ; 0x5c - 8003b5e: 4b88 ldr r3, [pc, #544] ; (8003d80 ) - 8003b60: 6dda ldr r2, [r3, #92] ; 0x5c - 8003b62: 4b87 ldr r3, [pc, #540] ; (8003d80 ) - 8003b64: 2101 movs r1, #1 - 8003b66: 430a orrs r2, r1 - 8003b68: 65da str r2, [r3, #92] ; 0x5c - 8003b6a: e00b b.n 8003b84 - 8003b6c: 4b84 ldr r3, [pc, #528] ; (8003d80 ) - 8003b6e: 6dda ldr r2, [r3, #92] ; 0x5c - 8003b70: 4b83 ldr r3, [pc, #524] ; (8003d80 ) - 8003b72: 2101 movs r1, #1 - 8003b74: 438a bics r2, r1 - 8003b76: 65da str r2, [r3, #92] ; 0x5c - 8003b78: 4b81 ldr r3, [pc, #516] ; (8003d80 ) - 8003b7a: 6dda ldr r2, [r3, #92] ; 0x5c - 8003b7c: 4b80 ldr r3, [pc, #512] ; (8003d80 ) - 8003b7e: 2104 movs r1, #4 - 8003b80: 438a bics r2, r1 - 8003b82: 65da str r2, [r3, #92] ; 0x5c + 8003b14: 687b ldr r3, [r7, #4] + 8003b16: 689b ldr r3, [r3, #8] + 8003b18: 2b01 cmp r3, #1 + 8003b1a: d106 bne.n 8003b2a + 8003b1c: 4b90 ldr r3, [pc, #576] ; (8003d60 ) + 8003b1e: 6dda ldr r2, [r3, #92] ; 0x5c + 8003b20: 4b8f ldr r3, [pc, #572] ; (8003d60 ) + 8003b22: 2101 movs r1, #1 + 8003b24: 430a orrs r2, r1 + 8003b26: 65da str r2, [r3, #92] ; 0x5c + 8003b28: e01c b.n 8003b64 + 8003b2a: 687b ldr r3, [r7, #4] + 8003b2c: 689b ldr r3, [r3, #8] + 8003b2e: 2b05 cmp r3, #5 + 8003b30: d10c bne.n 8003b4c + 8003b32: 4b8b ldr r3, [pc, #556] ; (8003d60 ) + 8003b34: 6dda ldr r2, [r3, #92] ; 0x5c + 8003b36: 4b8a ldr r3, [pc, #552] ; (8003d60 ) + 8003b38: 2104 movs r1, #4 + 8003b3a: 430a orrs r2, r1 + 8003b3c: 65da str r2, [r3, #92] ; 0x5c + 8003b3e: 4b88 ldr r3, [pc, #544] ; (8003d60 ) + 8003b40: 6dda ldr r2, [r3, #92] ; 0x5c + 8003b42: 4b87 ldr r3, [pc, #540] ; (8003d60 ) + 8003b44: 2101 movs r1, #1 + 8003b46: 430a orrs r2, r1 + 8003b48: 65da str r2, [r3, #92] ; 0x5c + 8003b4a: e00b b.n 8003b64 + 8003b4c: 4b84 ldr r3, [pc, #528] ; (8003d60 ) + 8003b4e: 6dda ldr r2, [r3, #92] ; 0x5c + 8003b50: 4b83 ldr r3, [pc, #524] ; (8003d60 ) + 8003b52: 2101 movs r1, #1 + 8003b54: 438a bics r2, r1 + 8003b56: 65da str r2, [r3, #92] ; 0x5c + 8003b58: 4b81 ldr r3, [pc, #516] ; (8003d60 ) + 8003b5a: 6dda ldr r2, [r3, #92] ; 0x5c + 8003b5c: 4b80 ldr r3, [pc, #512] ; (8003d60 ) + 8003b5e: 2104 movs r1, #4 + 8003b60: 438a bics r2, r1 + 8003b62: 65da str r2, [r3, #92] ; 0x5c /* Check the LSE State */ if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) - 8003b84: 687b ldr r3, [r7, #4] - 8003b86: 689b ldr r3, [r3, #8] - 8003b88: 2b00 cmp r3, #0 - 8003b8a: d014 beq.n 8003bb6 + 8003b64: 687b ldr r3, [r7, #4] + 8003b66: 689b ldr r3, [r3, #8] + 8003b68: 2b00 cmp r3, #0 + 8003b6a: d014 beq.n 8003b96 { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003b8c: f7fe f8fe bl 8001d8c - 8003b90: 0003 movs r3, r0 - 8003b92: 613b str r3, [r7, #16] + 8003b6c: f7fe f8fe bl 8001d6c + 8003b70: 0003 movs r3, r0 + 8003b72: 613b str r3, [r7, #16] /* Wait till LSE is ready */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8003b94: e009 b.n 8003baa + 8003b74: e009 b.n 8003b8a { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8003b96: f7fe f8f9 bl 8001d8c - 8003b9a: 0002 movs r2, r0 - 8003b9c: 693b ldr r3, [r7, #16] - 8003b9e: 1ad3 subs r3, r2, r3 - 8003ba0: 4a79 ldr r2, [pc, #484] ; (8003d88 ) - 8003ba2: 4293 cmp r3, r2 - 8003ba4: d901 bls.n 8003baa + 8003b76: f7fe f8f9 bl 8001d6c + 8003b7a: 0002 movs r2, r0 + 8003b7c: 693b ldr r3, [r7, #16] + 8003b7e: 1ad3 subs r3, r2, r3 + 8003b80: 4a79 ldr r2, [pc, #484] ; (8003d68 ) + 8003b82: 4293 cmp r3, r2 + 8003b84: d901 bls.n 8003b8a { return HAL_TIMEOUT; - 8003ba6: 2303 movs r3, #3 - 8003ba8: e0e6 b.n 8003d78 + 8003b86: 2303 movs r3, #3 + 8003b88: e0e6 b.n 8003d58 while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8003baa: 4b75 ldr r3, [pc, #468] ; (8003d80 ) - 8003bac: 6ddb ldr r3, [r3, #92] ; 0x5c - 8003bae: 2202 movs r2, #2 - 8003bb0: 4013 ands r3, r2 - 8003bb2: d0f0 beq.n 8003b96 - 8003bb4: e013 b.n 8003bde + 8003b8a: 4b75 ldr r3, [pc, #468] ; (8003d60 ) + 8003b8c: 6ddb ldr r3, [r3, #92] ; 0x5c + 8003b8e: 2202 movs r2, #2 + 8003b90: 4013 ands r3, r2 + 8003b92: d0f0 beq.n 8003b76 + 8003b94: e013 b.n 8003bbe } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003bb6: f7fe f8e9 bl 8001d8c - 8003bba: 0003 movs r3, r0 - 8003bbc: 613b str r3, [r7, #16] + 8003b96: f7fe f8e9 bl 8001d6c + 8003b9a: 0003 movs r3, r0 + 8003b9c: 613b str r3, [r7, #16] /* Wait till LSE is disabled */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U) - 8003bbe: e009 b.n 8003bd4 + 8003b9e: e009 b.n 8003bb4 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8003bc0: f7fe f8e4 bl 8001d8c - 8003bc4: 0002 movs r2, r0 - 8003bc6: 693b ldr r3, [r7, #16] - 8003bc8: 1ad3 subs r3, r2, r3 - 8003bca: 4a6f ldr r2, [pc, #444] ; (8003d88 ) - 8003bcc: 4293 cmp r3, r2 - 8003bce: d901 bls.n 8003bd4 + 8003ba0: f7fe f8e4 bl 8001d6c + 8003ba4: 0002 movs r2, r0 + 8003ba6: 693b ldr r3, [r7, #16] + 8003ba8: 1ad3 subs r3, r2, r3 + 8003baa: 4a6f ldr r2, [pc, #444] ; (8003d68 ) + 8003bac: 4293 cmp r3, r2 + 8003bae: d901 bls.n 8003bb4 { return HAL_TIMEOUT; - 8003bd0: 2303 movs r3, #3 - 8003bd2: e0d1 b.n 8003d78 + 8003bb0: 2303 movs r3, #3 + 8003bb2: e0d1 b.n 8003d58 while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U) - 8003bd4: 4b6a ldr r3, [pc, #424] ; (8003d80 ) - 8003bd6: 6ddb ldr r3, [r3, #92] ; 0x5c - 8003bd8: 2202 movs r2, #2 - 8003bda: 4013 ands r3, r2 - 8003bdc: d1f0 bne.n 8003bc0 + 8003bb4: 4b6a ldr r3, [pc, #424] ; (8003d60 ) + 8003bb6: 6ddb ldr r3, [r3, #92] ; 0x5c + 8003bb8: 2202 movs r2, #2 + 8003bba: 4013 ands r3, r2 + 8003bbc: d1f0 bne.n 8003ba0 } } } /* Restore clock configuration if changed */ if (pwrclkchanged == SET) - 8003bde: 231f movs r3, #31 - 8003be0: 18fb adds r3, r7, r3 - 8003be2: 781b ldrb r3, [r3, #0] - 8003be4: 2b01 cmp r3, #1 - 8003be6: d105 bne.n 8003bf4 + 8003bbe: 231f movs r3, #31 + 8003bc0: 18fb adds r3, r7, r3 + 8003bc2: 781b ldrb r3, [r3, #0] + 8003bc4: 2b01 cmp r3, #1 + 8003bc6: d105 bne.n 8003bd4 { __HAL_RCC_PWR_CLK_DISABLE(); - 8003be8: 4b65 ldr r3, [pc, #404] ; (8003d80 ) - 8003bea: 6bda ldr r2, [r3, #60] ; 0x3c - 8003bec: 4b64 ldr r3, [pc, #400] ; (8003d80 ) - 8003bee: 4967 ldr r1, [pc, #412] ; (8003d8c ) - 8003bf0: 400a ands r2, r1 - 8003bf2: 63da str r2, [r3, #60] ; 0x3c + 8003bc8: 4b65 ldr r3, [pc, #404] ; (8003d60 ) + 8003bca: 6bda ldr r2, [r3, #60] ; 0x3c + 8003bcc: 4b64 ldr r3, [pc, #400] ; (8003d60 ) + 8003bce: 4967 ldr r1, [pc, #412] ; (8003d6c ) + 8003bd0: 400a ands r2, r1 + 8003bd2: 63da str r2, [r3, #60] ; 0x3c #endif /* RCC_HSI48_SUPPORT */ /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); if (RCC_OscInitStruct->PLL.PLLState != RCC_PLL_NONE) - 8003bf4: 687b ldr r3, [r7, #4] - 8003bf6: 69db ldr r3, [r3, #28] - 8003bf8: 2b00 cmp r3, #0 - 8003bfa: d100 bne.n 8003bfe - 8003bfc: e0bb b.n 8003d76 + 8003bd4: 687b ldr r3, [r7, #4] + 8003bd6: 69db ldr r3, [r3, #28] + 8003bd8: 2b00 cmp r3, #0 + 8003bda: d100 bne.n 8003bde + 8003bdc: e0bb b.n 8003d56 { /* Check if the PLL is used as system clock or not */ if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 8003bfe: 4b60 ldr r3, [pc, #384] ; (8003d80 ) - 8003c00: 689b ldr r3, [r3, #8] - 8003c02: 2238 movs r2, #56 ; 0x38 - 8003c04: 4013 ands r3, r2 - 8003c06: 2b10 cmp r3, #16 - 8003c08: d100 bne.n 8003c0c - 8003c0a: e07b b.n 8003d04 + 8003bde: 4b60 ldr r3, [pc, #384] ; (8003d60 ) + 8003be0: 689b ldr r3, [r3, #8] + 8003be2: 2238 movs r2, #56 ; 0x38 + 8003be4: 4013 ands r3, r2 + 8003be6: 2b10 cmp r3, #16 + 8003be8: d100 bne.n 8003bec + 8003bea: e07b b.n 8003ce4 { if (RCC_OscInitStruct->PLL.PLLState == RCC_PLL_ON) - 8003c0c: 687b ldr r3, [r7, #4] - 8003c0e: 69db ldr r3, [r3, #28] - 8003c10: 2b02 cmp r3, #2 - 8003c12: d156 bne.n 8003cc2 + 8003bec: 687b ldr r3, [r7, #4] + 8003bee: 69db ldr r3, [r3, #28] + 8003bf0: 2b02 cmp r3, #2 + 8003bf2: d156 bne.n 8003ca2 assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); #endif /* RCC_PLLQ_SUPPORT */ assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR)); /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8003c14: 4b5a ldr r3, [pc, #360] ; (8003d80 ) - 8003c16: 681a ldr r2, [r3, #0] - 8003c18: 4b59 ldr r3, [pc, #356] ; (8003d80 ) - 8003c1a: 495d ldr r1, [pc, #372] ; (8003d90 ) - 8003c1c: 400a ands r2, r1 - 8003c1e: 601a str r2, [r3, #0] + 8003bf4: 4b5a ldr r3, [pc, #360] ; (8003d60 ) + 8003bf6: 681a ldr r2, [r3, #0] + 8003bf8: 4b59 ldr r3, [pc, #356] ; (8003d60 ) + 8003bfa: 495d ldr r1, [pc, #372] ; (8003d70 ) + 8003bfc: 400a ands r2, r1 + 8003bfe: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003c20: f7fe f8b4 bl 8001d8c - 8003c24: 0003 movs r3, r0 - 8003c26: 613b str r3, [r7, #16] + 8003c00: f7fe f8b4 bl 8001d6c + 8003c04: 0003 movs r3, r0 + 8003c06: 613b str r3, [r7, #16] /* Wait till PLL is ready */ while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8003c28: e008 b.n 8003c3c + 8003c08: e008 b.n 8003c1c { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8003c2a: f7fe f8af bl 8001d8c - 8003c2e: 0002 movs r2, r0 - 8003c30: 693b ldr r3, [r7, #16] - 8003c32: 1ad3 subs r3, r2, r3 - 8003c34: 2b02 cmp r3, #2 - 8003c36: d901 bls.n 8003c3c + 8003c0a: f7fe f8af bl 8001d6c + 8003c0e: 0002 movs r2, r0 + 8003c10: 693b ldr r3, [r7, #16] + 8003c12: 1ad3 subs r3, r2, r3 + 8003c14: 2b02 cmp r3, #2 + 8003c16: d901 bls.n 8003c1c { return HAL_TIMEOUT; - 8003c38: 2303 movs r3, #3 - 8003c3a: e09d b.n 8003d78 + 8003c18: 2303 movs r3, #3 + 8003c1a: e09d b.n 8003d58 while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8003c3c: 4b50 ldr r3, [pc, #320] ; (8003d80 ) - 8003c3e: 681a ldr r2, [r3, #0] - 8003c40: 2380 movs r3, #128 ; 0x80 - 8003c42: 049b lsls r3, r3, #18 - 8003c44: 4013 ands r3, r2 - 8003c46: d1f0 bne.n 8003c2a + 8003c1c: 4b50 ldr r3, [pc, #320] ; (8003d60 ) + 8003c1e: 681a ldr r2, [r3, #0] + 8003c20: 2380 movs r3, #128 ; 0x80 + 8003c22: 049b lsls r3, r3, #18 + 8003c24: 4013 ands r3, r2 + 8003c26: d1f0 bne.n 8003c0a } } /* Configure the main PLL clock source, multiplication and division factors. */ #if defined(RCC_PLLQ_SUPPORT) __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, - 8003c48: 4b4d ldr r3, [pc, #308] ; (8003d80 ) - 8003c4a: 68db ldr r3, [r3, #12] - 8003c4c: 4a51 ldr r2, [pc, #324] ; (8003d94 ) - 8003c4e: 4013 ands r3, r2 - 8003c50: 0019 movs r1, r3 - 8003c52: 687b ldr r3, [r7, #4] - 8003c54: 6a1a ldr r2, [r3, #32] - 8003c56: 687b ldr r3, [r7, #4] - 8003c58: 6a5b ldr r3, [r3, #36] ; 0x24 - 8003c5a: 431a orrs r2, r3 - 8003c5c: 687b ldr r3, [r7, #4] - 8003c5e: 6a9b ldr r3, [r3, #40] ; 0x28 - 8003c60: 021b lsls r3, r3, #8 - 8003c62: 431a orrs r2, r3 - 8003c64: 687b ldr r3, [r7, #4] - 8003c66: 6adb ldr r3, [r3, #44] ; 0x2c - 8003c68: 431a orrs r2, r3 - 8003c6a: 687b ldr r3, [r7, #4] - 8003c6c: 6b1b ldr r3, [r3, #48] ; 0x30 - 8003c6e: 431a orrs r2, r3 - 8003c70: 687b ldr r3, [r7, #4] - 8003c72: 6b5b ldr r3, [r3, #52] ; 0x34 - 8003c74: 431a orrs r2, r3 - 8003c76: 4b42 ldr r3, [pc, #264] ; (8003d80 ) - 8003c78: 430a orrs r2, r1 - 8003c7a: 60da str r2, [r3, #12] + 8003c28: 4b4d ldr r3, [pc, #308] ; (8003d60 ) + 8003c2a: 68db ldr r3, [r3, #12] + 8003c2c: 4a51 ldr r2, [pc, #324] ; (8003d74 ) + 8003c2e: 4013 ands r3, r2 + 8003c30: 0019 movs r1, r3 + 8003c32: 687b ldr r3, [r7, #4] + 8003c34: 6a1a ldr r2, [r3, #32] + 8003c36: 687b ldr r3, [r7, #4] + 8003c38: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003c3a: 431a orrs r2, r3 + 8003c3c: 687b ldr r3, [r7, #4] + 8003c3e: 6a9b ldr r3, [r3, #40] ; 0x28 + 8003c40: 021b lsls r3, r3, #8 + 8003c42: 431a orrs r2, r3 + 8003c44: 687b ldr r3, [r7, #4] + 8003c46: 6adb ldr r3, [r3, #44] ; 0x2c + 8003c48: 431a orrs r2, r3 + 8003c4a: 687b ldr r3, [r7, #4] + 8003c4c: 6b1b ldr r3, [r3, #48] ; 0x30 + 8003c4e: 431a orrs r2, r3 + 8003c50: 687b ldr r3, [r7, #4] + 8003c52: 6b5b ldr r3, [r3, #52] ; 0x34 + 8003c54: 431a orrs r2, r3 + 8003c56: 4b42 ldr r3, [pc, #264] ; (8003d60 ) + 8003c58: 430a orrs r2, r1 + 8003c5a: 60da str r2, [r3, #12] RCC_OscInitStruct->PLL.PLLP, RCC_OscInitStruct->PLL.PLLR); #endif /* RCC_PLLQ_SUPPORT */ /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); - 8003c7c: 4b40 ldr r3, [pc, #256] ; (8003d80 ) - 8003c7e: 681a ldr r2, [r3, #0] - 8003c80: 4b3f ldr r3, [pc, #252] ; (8003d80 ) - 8003c82: 2180 movs r1, #128 ; 0x80 - 8003c84: 0449 lsls r1, r1, #17 - 8003c86: 430a orrs r2, r1 - 8003c88: 601a str r2, [r3, #0] + 8003c5c: 4b40 ldr r3, [pc, #256] ; (8003d60 ) + 8003c5e: 681a ldr r2, [r3, #0] + 8003c60: 4b3f ldr r3, [pc, #252] ; (8003d60 ) + 8003c62: 2180 movs r1, #128 ; 0x80 + 8003c64: 0449 lsls r1, r1, #17 + 8003c66: 430a orrs r2, r1 + 8003c68: 601a str r2, [r3, #0] /* Enable PLLR Clock output. */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLRCLK); - 8003c8a: 4b3d ldr r3, [pc, #244] ; (8003d80 ) - 8003c8c: 68da ldr r2, [r3, #12] - 8003c8e: 4b3c ldr r3, [pc, #240] ; (8003d80 ) - 8003c90: 2180 movs r1, #128 ; 0x80 - 8003c92: 0549 lsls r1, r1, #21 - 8003c94: 430a orrs r2, r1 - 8003c96: 60da str r2, [r3, #12] + 8003c6a: 4b3d ldr r3, [pc, #244] ; (8003d60 ) + 8003c6c: 68da ldr r2, [r3, #12] + 8003c6e: 4b3c ldr r3, [pc, #240] ; (8003d60 ) + 8003c70: 2180 movs r1, #128 ; 0x80 + 8003c72: 0549 lsls r1, r1, #21 + 8003c74: 430a orrs r2, r1 + 8003c76: 60da str r2, [r3, #12] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003c98: f7fe f878 bl 8001d8c - 8003c9c: 0003 movs r3, r0 - 8003c9e: 613b str r3, [r7, #16] + 8003c78: f7fe f878 bl 8001d6c + 8003c7c: 0003 movs r3, r0 + 8003c7e: 613b str r3, [r7, #16] /* Wait till PLL is ready */ while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 8003ca0: e008 b.n 8003cb4 + 8003c80: e008 b.n 8003c94 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8003ca2: f7fe f873 bl 8001d8c - 8003ca6: 0002 movs r2, r0 - 8003ca8: 693b ldr r3, [r7, #16] - 8003caa: 1ad3 subs r3, r2, r3 - 8003cac: 2b02 cmp r3, #2 - 8003cae: d901 bls.n 8003cb4 + 8003c82: f7fe f873 bl 8001d6c + 8003c86: 0002 movs r2, r0 + 8003c88: 693b ldr r3, [r7, #16] + 8003c8a: 1ad3 subs r3, r2, r3 + 8003c8c: 2b02 cmp r3, #2 + 8003c8e: d901 bls.n 8003c94 { return HAL_TIMEOUT; - 8003cb0: 2303 movs r3, #3 - 8003cb2: e061 b.n 8003d78 + 8003c90: 2303 movs r3, #3 + 8003c92: e061 b.n 8003d58 while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 8003cb4: 4b32 ldr r3, [pc, #200] ; (8003d80 ) - 8003cb6: 681a ldr r2, [r3, #0] - 8003cb8: 2380 movs r3, #128 ; 0x80 - 8003cba: 049b lsls r3, r3, #18 - 8003cbc: 4013 ands r3, r2 - 8003cbe: d0f0 beq.n 8003ca2 - 8003cc0: e059 b.n 8003d76 + 8003c94: 4b32 ldr r3, [pc, #200] ; (8003d60 ) + 8003c96: 681a ldr r2, [r3, #0] + 8003c98: 2380 movs r3, #128 ; 0x80 + 8003c9a: 049b lsls r3, r3, #18 + 8003c9c: 4013 ands r3, r2 + 8003c9e: d0f0 beq.n 8003c82 + 8003ca0: e059 b.n 8003d56 } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8003cc2: 4b2f ldr r3, [pc, #188] ; (8003d80 ) - 8003cc4: 681a ldr r2, [r3, #0] - 8003cc6: 4b2e ldr r3, [pc, #184] ; (8003d80 ) - 8003cc8: 4931 ldr r1, [pc, #196] ; (8003d90 ) - 8003cca: 400a ands r2, r1 - 8003ccc: 601a str r2, [r3, #0] + 8003ca2: 4b2f ldr r3, [pc, #188] ; (8003d60 ) + 8003ca4: 681a ldr r2, [r3, #0] + 8003ca6: 4b2e ldr r3, [pc, #184] ; (8003d60 ) + 8003ca8: 4931 ldr r1, [pc, #196] ; (8003d70 ) + 8003caa: 400a ands r2, r1 + 8003cac: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003cce: f7fe f85d bl 8001d8c - 8003cd2: 0003 movs r3, r0 - 8003cd4: 613b str r3, [r7, #16] + 8003cae: f7fe f85d bl 8001d6c + 8003cb2: 0003 movs r3, r0 + 8003cb4: 613b str r3, [r7, #16] /* Wait till PLL is disabled */ while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8003cd6: e008 b.n 8003cea + 8003cb6: e008 b.n 8003cca { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8003cd8: f7fe f858 bl 8001d8c - 8003cdc: 0002 movs r2, r0 - 8003cde: 693b ldr r3, [r7, #16] - 8003ce0: 1ad3 subs r3, r2, r3 - 8003ce2: 2b02 cmp r3, #2 - 8003ce4: d901 bls.n 8003cea + 8003cb8: f7fe f858 bl 8001d6c + 8003cbc: 0002 movs r2, r0 + 8003cbe: 693b ldr r3, [r7, #16] + 8003cc0: 1ad3 subs r3, r2, r3 + 8003cc2: 2b02 cmp r3, #2 + 8003cc4: d901 bls.n 8003cca { return HAL_TIMEOUT; - 8003ce6: 2303 movs r3, #3 - 8003ce8: e046 b.n 8003d78 + 8003cc6: 2303 movs r3, #3 + 8003cc8: e046 b.n 8003d58 while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8003cea: 4b25 ldr r3, [pc, #148] ; (8003d80 ) - 8003cec: 681a ldr r2, [r3, #0] - 8003cee: 2380 movs r3, #128 ; 0x80 - 8003cf0: 049b lsls r3, r3, #18 - 8003cf2: 4013 ands r3, r2 - 8003cf4: d1f0 bne.n 8003cd8 + 8003cca: 4b25 ldr r3, [pc, #148] ; (8003d60 ) + 8003ccc: 681a ldr r2, [r3, #0] + 8003cce: 2380 movs r3, #128 ; 0x80 + 8003cd0: 049b lsls r3, r3, #18 + 8003cd2: 4013 ands r3, r2 + 8003cd4: d1f0 bne.n 8003cb8 } } /* Unselect main PLL clock source and disable main PLL outputs to save power */ #if defined(RCC_PLLQ_SUPPORT) RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLPEN | RCC_PLLCFGR_PLLQEN | RCC_PLLCFGR_PLLREN); - 8003cf6: 4b22 ldr r3, [pc, #136] ; (8003d80 ) - 8003cf8: 68da ldr r2, [r3, #12] - 8003cfa: 4b21 ldr r3, [pc, #132] ; (8003d80 ) - 8003cfc: 4926 ldr r1, [pc, #152] ; (8003d98 ) - 8003cfe: 400a ands r2, r1 - 8003d00: 60da str r2, [r3, #12] - 8003d02: e038 b.n 8003d76 + 8003cd6: 4b22 ldr r3, [pc, #136] ; (8003d60 ) + 8003cd8: 68da ldr r2, [r3, #12] + 8003cda: 4b21 ldr r3, [pc, #132] ; (8003d60 ) + 8003cdc: 4926 ldr r1, [pc, #152] ; (8003d78 ) + 8003cde: 400a ands r2, r1 + 8003ce0: 60da str r2, [r3, #12] + 8003ce2: e038 b.n 8003d56 } } else { /* Check if there is a request to disable the PLL used as System clock source */ if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 8003d04: 687b ldr r3, [r7, #4] - 8003d06: 69db ldr r3, [r3, #28] - 8003d08: 2b01 cmp r3, #1 - 8003d0a: d101 bne.n 8003d10 + 8003ce4: 687b ldr r3, [r7, #4] + 8003ce6: 69db ldr r3, [r3, #28] + 8003ce8: 2b01 cmp r3, #1 + 8003cea: d101 bne.n 8003cf0 { return HAL_ERROR; - 8003d0c: 2301 movs r3, #1 - 8003d0e: e033 b.n 8003d78 + 8003cec: 2301 movs r3, #1 + 8003cee: e033 b.n 8003d58 } else { /* Do not return HAL_ERROR if request repeats the current configuration */ temp_pllckcfg = RCC->PLLCFGR; - 8003d10: 4b1b ldr r3, [pc, #108] ; (8003d80 ) - 8003d12: 68db ldr r3, [r3, #12] - 8003d14: 617b str r3, [r7, #20] + 8003cf0: 4b1b ldr r3, [pc, #108] ; (8003d60 ) + 8003cf2: 68db ldr r3, [r3, #12] + 8003cf4: 617b str r3, [r7, #20] if ((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8003d16: 697b ldr r3, [r7, #20] - 8003d18: 2203 movs r2, #3 - 8003d1a: 401a ands r2, r3 - 8003d1c: 687b ldr r3, [r7, #4] - 8003d1e: 6a1b ldr r3, [r3, #32] + 8003cf6: 697b ldr r3, [r7, #20] + 8003cf8: 2203 movs r2, #3 + 8003cfa: 401a ands r2, r3 + 8003cfc: 687b ldr r3, [r7, #4] + 8003cfe: 6a1b ldr r3, [r3, #32] + 8003d00: 429a cmp r2, r3 + 8003d02: d126 bne.n 8003d52 + (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || + 8003d04: 697b ldr r3, [r7, #20] + 8003d06: 2270 movs r2, #112 ; 0x70 + 8003d08: 401a ands r2, r3 + 8003d0a: 687b ldr r3, [r7, #4] + 8003d0c: 6a5b ldr r3, [r3, #36] ; 0x24 + if ((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8003d0e: 429a cmp r2, r3 + 8003d10: d11f bne.n 8003d52 + (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || + 8003d12: 697a ldr r2, [r7, #20] + 8003d14: 23fe movs r3, #254 ; 0xfe + 8003d16: 01db lsls r3, r3, #7 + 8003d18: 401a ands r2, r3 + 8003d1a: 687b ldr r3, [r7, #4] + 8003d1c: 6a9b ldr r3, [r3, #40] ; 0x28 + 8003d1e: 021b lsls r3, r3, #8 + (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || 8003d20: 429a cmp r2, r3 - 8003d22: d126 bne.n 8003d72 - (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || - 8003d24: 697b ldr r3, [r7, #20] - 8003d26: 2270 movs r2, #112 ; 0x70 - 8003d28: 401a ands r2, r3 - 8003d2a: 687b ldr r3, [r7, #4] - 8003d2c: 6a5b ldr r3, [r3, #36] ; 0x24 - if ((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8003d2e: 429a cmp r2, r3 - 8003d30: d11f bne.n 8003d72 - (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || - 8003d32: 697a ldr r2, [r7, #20] - 8003d34: 23fe movs r3, #254 ; 0xfe - 8003d36: 01db lsls r3, r3, #7 - 8003d38: 401a ands r2, r3 - 8003d3a: 687b ldr r3, [r7, #4] - 8003d3c: 6a9b ldr r3, [r3, #40] ; 0x28 - 8003d3e: 021b lsls r3, r3, #8 - (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || - 8003d40: 429a cmp r2, r3 - 8003d42: d116 bne.n 8003d72 + 8003d22: d116 bne.n 8003d52 (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) || - 8003d44: 697a ldr r2, [r7, #20] - 8003d46: 23f8 movs r3, #248 ; 0xf8 - 8003d48: 039b lsls r3, r3, #14 - 8003d4a: 401a ands r2, r3 - 8003d4c: 687b ldr r3, [r7, #4] - 8003d4e: 6adb ldr r3, [r3, #44] ; 0x2c + 8003d24: 697a ldr r2, [r7, #20] + 8003d26: 23f8 movs r3, #248 ; 0xf8 + 8003d28: 039b lsls r3, r3, #14 + 8003d2a: 401a ands r2, r3 + 8003d2c: 687b ldr r3, [r7, #4] + 8003d2e: 6adb ldr r3, [r3, #44] ; 0x2c (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || - 8003d50: 429a cmp r2, r3 - 8003d52: d10e bne.n 8003d72 + 8003d30: 429a cmp r2, r3 + 8003d32: d10e bne.n 8003d52 #if defined (RCC_PLLQ_SUPPORT) (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLQ) != RCC_OscInitStruct->PLL.PLLQ) || - 8003d54: 697a ldr r2, [r7, #20] - 8003d56: 23e0 movs r3, #224 ; 0xe0 - 8003d58: 051b lsls r3, r3, #20 - 8003d5a: 401a ands r2, r3 - 8003d5c: 687b ldr r3, [r7, #4] - 8003d5e: 6b1b ldr r3, [r3, #48] ; 0x30 + 8003d34: 697a ldr r2, [r7, #20] + 8003d36: 23e0 movs r3, #224 ; 0xe0 + 8003d38: 051b lsls r3, r3, #20 + 8003d3a: 401a ands r2, r3 + 8003d3c: 687b ldr r3, [r7, #4] + 8003d3e: 6b1b ldr r3, [r3, #48] ; 0x30 (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) || - 8003d60: 429a cmp r2, r3 - 8003d62: d106 bne.n 8003d72 + 8003d40: 429a cmp r2, r3 + 8003d42: d106 bne.n 8003d52 #endif /* RCC_PLLQ_SUPPORT */ (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLR) != RCC_OscInitStruct->PLL.PLLR)) - 8003d64: 697b ldr r3, [r7, #20] - 8003d66: 0f5b lsrs r3, r3, #29 - 8003d68: 075a lsls r2, r3, #29 - 8003d6a: 687b ldr r3, [r7, #4] - 8003d6c: 6b5b ldr r3, [r3, #52] ; 0x34 + 8003d44: 697b ldr r3, [r7, #20] + 8003d46: 0f5b lsrs r3, r3, #29 + 8003d48: 075a lsls r2, r3, #29 + 8003d4a: 687b ldr r3, [r7, #4] + 8003d4c: 6b5b ldr r3, [r3, #52] ; 0x34 (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLQ) != RCC_OscInitStruct->PLL.PLLQ) || - 8003d6e: 429a cmp r2, r3 - 8003d70: d001 beq.n 8003d76 + 8003d4e: 429a cmp r2, r3 + 8003d50: d001 beq.n 8003d56 { return HAL_ERROR; - 8003d72: 2301 movs r3, #1 - 8003d74: e000 b.n 8003d78 + 8003d52: 2301 movs r3, #1 + 8003d54: e000 b.n 8003d58 } } } } return HAL_OK; - 8003d76: 2300 movs r3, #0 + 8003d56: 2300 movs r3, #0 } - 8003d78: 0018 movs r0, r3 - 8003d7a: 46bd mov sp, r7 - 8003d7c: b008 add sp, #32 - 8003d7e: bd80 pop {r7, pc} - 8003d80: 40021000 .word 0x40021000 - 8003d84: 40007000 .word 0x40007000 - 8003d88: 00001388 .word 0x00001388 - 8003d8c: efffffff .word 0xefffffff - 8003d90: feffffff .word 0xfeffffff - 8003d94: 11c1808c .word 0x11c1808c - 8003d98: eefefffc .word 0xeefefffc + 8003d58: 0018 movs r0, r3 + 8003d5a: 46bd mov sp, r7 + 8003d5c: b008 add sp, #32 + 8003d5e: bd80 pop {r7, pc} + 8003d60: 40021000 .word 0x40021000 + 8003d64: 40007000 .word 0x40007000 + 8003d68: 00001388 .word 0x00001388 + 8003d6c: efffffff .word 0xefffffff + 8003d70: feffffff .word 0xfeffffff + 8003d74: 11c1808c .word 0x11c1808c + 8003d78: eefefffc .word 0xeefefffc -08003d9c : +08003d7c : * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency * (for more details refer to section above "Initialization/de-initialization functions") * @retval None */ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) { - 8003d9c: b580 push {r7, lr} - 8003d9e: b084 sub sp, #16 - 8003da0: af00 add r7, sp, #0 - 8003da2: 6078 str r0, [r7, #4] - 8003da4: 6039 str r1, [r7, #0] + 8003d7c: b580 push {r7, lr} + 8003d7e: b084 sub sp, #16 + 8003d80: af00 add r7, sp, #0 + 8003d82: 6078 str r0, [r7, #4] + 8003d84: 6039 str r1, [r7, #0] uint32_t tickstart; /* Check Null pointer */ if (RCC_ClkInitStruct == NULL) - 8003da6: 687b ldr r3, [r7, #4] - 8003da8: 2b00 cmp r3, #0 - 8003daa: d101 bne.n 8003db0 + 8003d86: 687b ldr r3, [r7, #4] + 8003d88: 2b00 cmp r3, #0 + 8003d8a: d101 bne.n 8003d90 { return HAL_ERROR; - 8003dac: 2301 movs r3, #1 - 8003dae: e0e9 b.n 8003f84 + 8003d8c: 2301 movs r3, #1 + 8003d8e: e0e9 b.n 8003f64 /* To correctly read data from FLASH memory, the number of wait states (LATENCY) must be correctly programmed according to the frequency of the FLASH clock (HCLK) and the supply voltage of the device. */ /* Increasing the number of wait states because of higher CPU frequency */ if (FLatency > __HAL_FLASH_GET_LATENCY()) - 8003db0: 4b76 ldr r3, [pc, #472] ; (8003f8c ) - 8003db2: 681b ldr r3, [r3, #0] - 8003db4: 2207 movs r2, #7 - 8003db6: 4013 ands r3, r2 - 8003db8: 683a ldr r2, [r7, #0] - 8003dba: 429a cmp r2, r3 - 8003dbc: d91e bls.n 8003dfc + 8003d90: 4b76 ldr r3, [pc, #472] ; (8003f6c ) + 8003d92: 681b ldr r3, [r3, #0] + 8003d94: 2207 movs r2, #7 + 8003d96: 4013 ands r3, r2 + 8003d98: 683a ldr r2, [r7, #0] + 8003d9a: 429a cmp r2, r3 + 8003d9c: d91e bls.n 8003ddc { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8003dbe: 4b73 ldr r3, [pc, #460] ; (8003f8c ) - 8003dc0: 681b ldr r3, [r3, #0] - 8003dc2: 2207 movs r2, #7 - 8003dc4: 4393 bics r3, r2 - 8003dc6: 0019 movs r1, r3 - 8003dc8: 4b70 ldr r3, [pc, #448] ; (8003f8c ) - 8003dca: 683a ldr r2, [r7, #0] - 8003dcc: 430a orrs r2, r1 - 8003dce: 601a str r2, [r3, #0] + 8003d9e: 4b73 ldr r3, [pc, #460] ; (8003f6c ) + 8003da0: 681b ldr r3, [r3, #0] + 8003da2: 2207 movs r2, #7 + 8003da4: 4393 bics r3, r2 + 8003da6: 0019 movs r1, r3 + 8003da8: 4b70 ldr r3, [pc, #448] ; (8003f6c ) + 8003daa: 683a ldr r2, [r7, #0] + 8003dac: 430a orrs r2, r1 + 8003dae: 601a str r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by polling the FLASH_ACR register */ tickstart = HAL_GetTick(); - 8003dd0: f7fd ffdc bl 8001d8c - 8003dd4: 0003 movs r3, r0 - 8003dd6: 60fb str r3, [r7, #12] + 8003db0: f7fd ffdc bl 8001d6c + 8003db4: 0003 movs r3, r0 + 8003db6: 60fb str r3, [r7, #12] while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003dd8: e009 b.n 8003dee + 8003db8: e009 b.n 8003dce { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8003dda: f7fd ffd7 bl 8001d8c - 8003dde: 0002 movs r2, r0 - 8003de0: 68fb ldr r3, [r7, #12] - 8003de2: 1ad3 subs r3, r2, r3 - 8003de4: 4a6a ldr r2, [pc, #424] ; (8003f90 ) - 8003de6: 4293 cmp r3, r2 - 8003de8: d901 bls.n 8003dee + 8003dba: f7fd ffd7 bl 8001d6c + 8003dbe: 0002 movs r2, r0 + 8003dc0: 68fb ldr r3, [r7, #12] + 8003dc2: 1ad3 subs r3, r2, r3 + 8003dc4: 4a6a ldr r2, [pc, #424] ; (8003f70 ) + 8003dc6: 4293 cmp r3, r2 + 8003dc8: d901 bls.n 8003dce { return HAL_TIMEOUT; - 8003dea: 2303 movs r3, #3 - 8003dec: e0ca b.n 8003f84 + 8003dca: 2303 movs r3, #3 + 8003dcc: e0ca b.n 8003f64 while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003dee: 4b67 ldr r3, [pc, #412] ; (8003f8c ) - 8003df0: 681b ldr r3, [r3, #0] - 8003df2: 2207 movs r2, #7 - 8003df4: 4013 ands r3, r2 - 8003df6: 683a ldr r2, [r7, #0] - 8003df8: 429a cmp r2, r3 - 8003dfa: d1ee bne.n 8003dda + 8003dce: 4b67 ldr r3, [pc, #412] ; (8003f6c ) + 8003dd0: 681b ldr r3, [r3, #0] + 8003dd2: 2207 movs r2, #7 + 8003dd4: 4013 ands r3, r2 + 8003dd6: 683a ldr r2, [r7, #0] + 8003dd8: 429a cmp r2, r3 + 8003dda: d1ee bne.n 8003dba } } } /*-------------------------- HCLK Configuration --------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8003dfc: 687b ldr r3, [r7, #4] - 8003dfe: 681b ldr r3, [r3, #0] - 8003e00: 2202 movs r2, #2 - 8003e02: 4013 ands r3, r2 - 8003e04: d015 beq.n 8003e32 + 8003ddc: 687b ldr r3, [r7, #4] + 8003dde: 681b ldr r3, [r3, #0] + 8003de0: 2202 movs r2, #2 + 8003de2: 4013 ands r3, r2 + 8003de4: d015 beq.n 8003e12 { /* Set the highest APB divider in order to ensure that we do not go through a non-spec phase whatever we decrease or increase HCLK. */ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8003e06: 687b ldr r3, [r7, #4] - 8003e08: 681b ldr r3, [r3, #0] - 8003e0a: 2204 movs r2, #4 - 8003e0c: 4013 ands r3, r2 - 8003e0e: d006 beq.n 8003e1e + 8003de6: 687b ldr r3, [r7, #4] + 8003de8: 681b ldr r3, [r3, #0] + 8003dea: 2204 movs r2, #4 + 8003dec: 4013 ands r3, r2 + 8003dee: d006 beq.n 8003dfe { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE, RCC_HCLK_DIV16); - 8003e10: 4b60 ldr r3, [pc, #384] ; (8003f94 ) - 8003e12: 689a ldr r2, [r3, #8] - 8003e14: 4b5f ldr r3, [pc, #380] ; (8003f94 ) - 8003e16: 21e0 movs r1, #224 ; 0xe0 - 8003e18: 01c9 lsls r1, r1, #7 - 8003e1a: 430a orrs r2, r1 - 8003e1c: 609a str r2, [r3, #8] + 8003df0: 4b60 ldr r3, [pc, #384] ; (8003f74 ) + 8003df2: 689a ldr r2, [r3, #8] + 8003df4: 4b5f ldr r3, [pc, #380] ; (8003f74 ) + 8003df6: 21e0 movs r1, #224 ; 0xe0 + 8003df8: 01c9 lsls r1, r1, #7 + 8003dfa: 430a orrs r2, r1 + 8003dfc: 609a str r2, [r3, #8] } /* Set the new HCLK clock divider */ assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8003e1e: 4b5d ldr r3, [pc, #372] ; (8003f94 ) - 8003e20: 689b ldr r3, [r3, #8] - 8003e22: 4a5d ldr r2, [pc, #372] ; (8003f98 ) - 8003e24: 4013 ands r3, r2 - 8003e26: 0019 movs r1, r3 - 8003e28: 687b ldr r3, [r7, #4] - 8003e2a: 689a ldr r2, [r3, #8] - 8003e2c: 4b59 ldr r3, [pc, #356] ; (8003f94 ) - 8003e2e: 430a orrs r2, r1 - 8003e30: 609a str r2, [r3, #8] + 8003dfe: 4b5d ldr r3, [pc, #372] ; (8003f74 ) + 8003e00: 689b ldr r3, [r3, #8] + 8003e02: 4a5d ldr r2, [pc, #372] ; (8003f78 ) + 8003e04: 4013 ands r3, r2 + 8003e06: 0019 movs r1, r3 + 8003e08: 687b ldr r3, [r7, #4] + 8003e0a: 689a ldr r2, [r3, #8] + 8003e0c: 4b59 ldr r3, [pc, #356] ; (8003f74 ) + 8003e0e: 430a orrs r2, r1 + 8003e10: 609a str r2, [r3, #8] } /*------------------------- SYSCLK Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8003e32: 687b ldr r3, [r7, #4] - 8003e34: 681b ldr r3, [r3, #0] - 8003e36: 2201 movs r2, #1 - 8003e38: 4013 ands r3, r2 - 8003e3a: d057 beq.n 8003eec + 8003e12: 687b ldr r3, [r7, #4] + 8003e14: 681b ldr r3, [r3, #0] + 8003e16: 2201 movs r2, #1 + 8003e18: 4013 ands r3, r2 + 8003e1a: d057 beq.n 8003ecc { assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); /* HSE is selected as System Clock Source */ if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8003e3c: 687b ldr r3, [r7, #4] - 8003e3e: 685b ldr r3, [r3, #4] - 8003e40: 2b01 cmp r3, #1 - 8003e42: d107 bne.n 8003e54 + 8003e1c: 687b ldr r3, [r7, #4] + 8003e1e: 685b ldr r3, [r3, #4] + 8003e20: 2b01 cmp r3, #1 + 8003e22: d107 bne.n 8003e34 { /* Check the HSE ready flag */ if (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 8003e44: 4b53 ldr r3, [pc, #332] ; (8003f94 ) - 8003e46: 681a ldr r2, [r3, #0] - 8003e48: 2380 movs r3, #128 ; 0x80 - 8003e4a: 029b lsls r3, r3, #10 - 8003e4c: 4013 ands r3, r2 - 8003e4e: d12b bne.n 8003ea8 + 8003e24: 4b53 ldr r3, [pc, #332] ; (8003f74 ) + 8003e26: 681a ldr r2, [r3, #0] + 8003e28: 2380 movs r3, #128 ; 0x80 + 8003e2a: 029b lsls r3, r3, #10 + 8003e2c: 4013 ands r3, r2 + 8003e2e: d12b bne.n 8003e88 { return HAL_ERROR; - 8003e50: 2301 movs r3, #1 - 8003e52: e097 b.n 8003f84 + 8003e30: 2301 movs r3, #1 + 8003e32: e097 b.n 8003f64 } } /* PLL is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) - 8003e54: 687b ldr r3, [r7, #4] - 8003e56: 685b ldr r3, [r3, #4] - 8003e58: 2b02 cmp r3, #2 - 8003e5a: d107 bne.n 8003e6c + 8003e34: 687b ldr r3, [r7, #4] + 8003e36: 685b ldr r3, [r3, #4] + 8003e38: 2b02 cmp r3, #2 + 8003e3a: d107 bne.n 8003e4c { /* Check the PLL ready flag */ if (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 8003e5c: 4b4d ldr r3, [pc, #308] ; (8003f94 ) - 8003e5e: 681a ldr r2, [r3, #0] - 8003e60: 2380 movs r3, #128 ; 0x80 - 8003e62: 049b lsls r3, r3, #18 - 8003e64: 4013 ands r3, r2 - 8003e66: d11f bne.n 8003ea8 + 8003e3c: 4b4d ldr r3, [pc, #308] ; (8003f74 ) + 8003e3e: 681a ldr r2, [r3, #0] + 8003e40: 2380 movs r3, #128 ; 0x80 + 8003e42: 049b lsls r3, r3, #18 + 8003e44: 4013 ands r3, r2 + 8003e46: d11f bne.n 8003e88 { return HAL_ERROR; - 8003e68: 2301 movs r3, #1 - 8003e6a: e08b b.n 8003f84 + 8003e48: 2301 movs r3, #1 + 8003e4a: e08b b.n 8003f64 } } /* HSI is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) - 8003e6c: 687b ldr r3, [r7, #4] - 8003e6e: 685b ldr r3, [r3, #4] - 8003e70: 2b00 cmp r3, #0 - 8003e72: d107 bne.n 8003e84 + 8003e4c: 687b ldr r3, [r7, #4] + 8003e4e: 685b ldr r3, [r3, #4] + 8003e50: 2b00 cmp r3, #0 + 8003e52: d107 bne.n 8003e64 { /* Check the HSI ready flag */ if (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8003e74: 4b47 ldr r3, [pc, #284] ; (8003f94 ) - 8003e76: 681a ldr r2, [r3, #0] - 8003e78: 2380 movs r3, #128 ; 0x80 - 8003e7a: 00db lsls r3, r3, #3 - 8003e7c: 4013 ands r3, r2 - 8003e7e: d113 bne.n 8003ea8 + 8003e54: 4b47 ldr r3, [pc, #284] ; (8003f74 ) + 8003e56: 681a ldr r2, [r3, #0] + 8003e58: 2380 movs r3, #128 ; 0x80 + 8003e5a: 00db lsls r3, r3, #3 + 8003e5c: 4013 ands r3, r2 + 8003e5e: d113 bne.n 8003e88 { return HAL_ERROR; - 8003e80: 2301 movs r3, #1 - 8003e82: e07f b.n 8003f84 + 8003e60: 2301 movs r3, #1 + 8003e62: e07f b.n 8003f64 } } /* LSI is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_LSI) - 8003e84: 687b ldr r3, [r7, #4] - 8003e86: 685b ldr r3, [r3, #4] - 8003e88: 2b03 cmp r3, #3 - 8003e8a: d106 bne.n 8003e9a + 8003e64: 687b ldr r3, [r7, #4] + 8003e66: 685b ldr r3, [r3, #4] + 8003e68: 2b03 cmp r3, #3 + 8003e6a: d106 bne.n 8003e7a { /* Check the LSI ready flag */ if (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 8003e8c: 4b41 ldr r3, [pc, #260] ; (8003f94 ) - 8003e8e: 6e1b ldr r3, [r3, #96] ; 0x60 - 8003e90: 2202 movs r2, #2 - 8003e92: 4013 ands r3, r2 - 8003e94: d108 bne.n 8003ea8 + 8003e6c: 4b41 ldr r3, [pc, #260] ; (8003f74 ) + 8003e6e: 6e1b ldr r3, [r3, #96] ; 0x60 + 8003e70: 2202 movs r2, #2 + 8003e72: 4013 ands r3, r2 + 8003e74: d108 bne.n 8003e88 { return HAL_ERROR; - 8003e96: 2301 movs r3, #1 - 8003e98: e074 b.n 8003f84 + 8003e76: 2301 movs r3, #1 + 8003e78: e074 b.n 8003f64 } /* LSE is selected as System Clock Source */ else { /* Check the LSE ready flag */ if (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8003e9a: 4b3e ldr r3, [pc, #248] ; (8003f94 ) - 8003e9c: 6ddb ldr r3, [r3, #92] ; 0x5c - 8003e9e: 2202 movs r2, #2 - 8003ea0: 4013 ands r3, r2 - 8003ea2: d101 bne.n 8003ea8 + 8003e7a: 4b3e ldr r3, [pc, #248] ; (8003f74 ) + 8003e7c: 6ddb ldr r3, [r3, #92] ; 0x5c + 8003e7e: 2202 movs r2, #2 + 8003e80: 4013 ands r3, r2 + 8003e82: d101 bne.n 8003e88 { return HAL_ERROR; - 8003ea4: 2301 movs r3, #1 - 8003ea6: e06d b.n 8003f84 + 8003e84: 2301 movs r3, #1 + 8003e86: e06d b.n 8003f64 } } MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_ClkInitStruct->SYSCLKSource); - 8003ea8: 4b3a ldr r3, [pc, #232] ; (8003f94 ) - 8003eaa: 689b ldr r3, [r3, #8] - 8003eac: 2207 movs r2, #7 - 8003eae: 4393 bics r3, r2 - 8003eb0: 0019 movs r1, r3 - 8003eb2: 687b ldr r3, [r7, #4] - 8003eb4: 685a ldr r2, [r3, #4] - 8003eb6: 4b37 ldr r3, [pc, #220] ; (8003f94 ) - 8003eb8: 430a orrs r2, r1 - 8003eba: 609a str r2, [r3, #8] + 8003e88: 4b3a ldr r3, [pc, #232] ; (8003f74 ) + 8003e8a: 689b ldr r3, [r3, #8] + 8003e8c: 2207 movs r2, #7 + 8003e8e: 4393 bics r3, r2 + 8003e90: 0019 movs r1, r3 + 8003e92: 687b ldr r3, [r7, #4] + 8003e94: 685a ldr r2, [r3, #4] + 8003e96: 4b37 ldr r3, [pc, #220] ; (8003f74 ) + 8003e98: 430a orrs r2, r1 + 8003e9a: 609a str r2, [r3, #8] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003ebc: f7fd ff66 bl 8001d8c - 8003ec0: 0003 movs r3, r0 - 8003ec2: 60fb str r3, [r7, #12] + 8003e9c: f7fd ff66 bl 8001d6c + 8003ea0: 0003 movs r3, r0 + 8003ea2: 60fb str r3, [r7, #12] while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8003ec4: e009 b.n 8003eda + 8003ea4: e009 b.n 8003eba { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8003ec6: f7fd ff61 bl 8001d8c - 8003eca: 0002 movs r2, r0 - 8003ecc: 68fb ldr r3, [r7, #12] - 8003ece: 1ad3 subs r3, r2, r3 - 8003ed0: 4a2f ldr r2, [pc, #188] ; (8003f90 ) - 8003ed2: 4293 cmp r3, r2 - 8003ed4: d901 bls.n 8003eda + 8003ea6: f7fd ff61 bl 8001d6c + 8003eaa: 0002 movs r2, r0 + 8003eac: 68fb ldr r3, [r7, #12] + 8003eae: 1ad3 subs r3, r2, r3 + 8003eb0: 4a2f ldr r2, [pc, #188] ; (8003f70 ) + 8003eb2: 4293 cmp r3, r2 + 8003eb4: d901 bls.n 8003eba { return HAL_TIMEOUT; - 8003ed6: 2303 movs r3, #3 - 8003ed8: e054 b.n 8003f84 + 8003eb6: 2303 movs r3, #3 + 8003eb8: e054 b.n 8003f64 while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8003eda: 4b2e ldr r3, [pc, #184] ; (8003f94 ) - 8003edc: 689b ldr r3, [r3, #8] - 8003ede: 2238 movs r2, #56 ; 0x38 - 8003ee0: 401a ands r2, r3 - 8003ee2: 687b ldr r3, [r7, #4] - 8003ee4: 685b ldr r3, [r3, #4] - 8003ee6: 00db lsls r3, r3, #3 - 8003ee8: 429a cmp r2, r3 - 8003eea: d1ec bne.n 8003ec6 + 8003eba: 4b2e ldr r3, [pc, #184] ; (8003f74 ) + 8003ebc: 689b ldr r3, [r3, #8] + 8003ebe: 2238 movs r2, #56 ; 0x38 + 8003ec0: 401a ands r2, r3 + 8003ec2: 687b ldr r3, [r7, #4] + 8003ec4: 685b ldr r3, [r3, #4] + 8003ec6: 00db lsls r3, r3, #3 + 8003ec8: 429a cmp r2, r3 + 8003eca: d1ec bne.n 8003ea6 } } } /* Decreasing the number of wait states because of lower CPU frequency */ if (FLatency < __HAL_FLASH_GET_LATENCY()) - 8003eec: 4b27 ldr r3, [pc, #156] ; (8003f8c ) - 8003eee: 681b ldr r3, [r3, #0] - 8003ef0: 2207 movs r2, #7 - 8003ef2: 4013 ands r3, r2 - 8003ef4: 683a ldr r2, [r7, #0] - 8003ef6: 429a cmp r2, r3 - 8003ef8: d21e bcs.n 8003f38 + 8003ecc: 4b27 ldr r3, [pc, #156] ; (8003f6c ) + 8003ece: 681b ldr r3, [r3, #0] + 8003ed0: 2207 movs r2, #7 + 8003ed2: 4013 ands r3, r2 + 8003ed4: 683a ldr r2, [r7, #0] + 8003ed6: 429a cmp r2, r3 + 8003ed8: d21e bcs.n 8003f18 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8003efa: 4b24 ldr r3, [pc, #144] ; (8003f8c ) - 8003efc: 681b ldr r3, [r3, #0] - 8003efe: 2207 movs r2, #7 - 8003f00: 4393 bics r3, r2 - 8003f02: 0019 movs r1, r3 - 8003f04: 4b21 ldr r3, [pc, #132] ; (8003f8c ) - 8003f06: 683a ldr r2, [r7, #0] - 8003f08: 430a orrs r2, r1 - 8003f0a: 601a str r2, [r3, #0] + 8003eda: 4b24 ldr r3, [pc, #144] ; (8003f6c ) + 8003edc: 681b ldr r3, [r3, #0] + 8003ede: 2207 movs r2, #7 + 8003ee0: 4393 bics r3, r2 + 8003ee2: 0019 movs r1, r3 + 8003ee4: 4b21 ldr r3, [pc, #132] ; (8003f6c ) + 8003ee6: 683a ldr r2, [r7, #0] + 8003ee8: 430a orrs r2, r1 + 8003eea: 601a str r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by polling the FLASH_ACR register */ tickstart = HAL_GetTick(); - 8003f0c: f7fd ff3e bl 8001d8c - 8003f10: 0003 movs r3, r0 - 8003f12: 60fb str r3, [r7, #12] + 8003eec: f7fd ff3e bl 8001d6c + 8003ef0: 0003 movs r3, r0 + 8003ef2: 60fb str r3, [r7, #12] while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003f14: e009 b.n 8003f2a + 8003ef4: e009 b.n 8003f0a { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8003f16: f7fd ff39 bl 8001d8c - 8003f1a: 0002 movs r2, r0 - 8003f1c: 68fb ldr r3, [r7, #12] - 8003f1e: 1ad3 subs r3, r2, r3 - 8003f20: 4a1b ldr r2, [pc, #108] ; (8003f90 ) - 8003f22: 4293 cmp r3, r2 - 8003f24: d901 bls.n 8003f2a + 8003ef6: f7fd ff39 bl 8001d6c + 8003efa: 0002 movs r2, r0 + 8003efc: 68fb ldr r3, [r7, #12] + 8003efe: 1ad3 subs r3, r2, r3 + 8003f00: 4a1b ldr r2, [pc, #108] ; (8003f70 ) + 8003f02: 4293 cmp r3, r2 + 8003f04: d901 bls.n 8003f0a { return HAL_TIMEOUT; - 8003f26: 2303 movs r3, #3 - 8003f28: e02c b.n 8003f84 + 8003f06: 2303 movs r3, #3 + 8003f08: e02c b.n 8003f64 while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003f2a: 4b18 ldr r3, [pc, #96] ; (8003f8c ) - 8003f2c: 681b ldr r3, [r3, #0] - 8003f2e: 2207 movs r2, #7 - 8003f30: 4013 ands r3, r2 - 8003f32: 683a ldr r2, [r7, #0] - 8003f34: 429a cmp r2, r3 - 8003f36: d1ee bne.n 8003f16 + 8003f0a: 4b18 ldr r3, [pc, #96] ; (8003f6c ) + 8003f0c: 681b ldr r3, [r3, #0] + 8003f0e: 2207 movs r2, #7 + 8003f10: 4013 ands r3, r2 + 8003f12: 683a ldr r2, [r7, #0] + 8003f14: 429a cmp r2, r3 + 8003f16: d1ee bne.n 8003ef6 } } } /*-------------------------- PCLK1 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8003f38: 687b ldr r3, [r7, #4] - 8003f3a: 681b ldr r3, [r3, #0] - 8003f3c: 2204 movs r2, #4 - 8003f3e: 4013 ands r3, r2 - 8003f40: d009 beq.n 8003f56 + 8003f18: 687b ldr r3, [r7, #4] + 8003f1a: 681b ldr r3, [r3, #0] + 8003f1c: 2204 movs r2, #4 + 8003f1e: 4013 ands r3, r2 + 8003f20: d009 beq.n 8003f36 { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE, RCC_ClkInitStruct->APB1CLKDivider); - 8003f42: 4b14 ldr r3, [pc, #80] ; (8003f94 ) - 8003f44: 689b ldr r3, [r3, #8] - 8003f46: 4a15 ldr r2, [pc, #84] ; (8003f9c ) - 8003f48: 4013 ands r3, r2 - 8003f4a: 0019 movs r1, r3 - 8003f4c: 687b ldr r3, [r7, #4] - 8003f4e: 68da ldr r2, [r3, #12] - 8003f50: 4b10 ldr r3, [pc, #64] ; (8003f94 ) - 8003f52: 430a orrs r2, r1 - 8003f54: 609a str r2, [r3, #8] + 8003f22: 4b14 ldr r3, [pc, #80] ; (8003f74 ) + 8003f24: 689b ldr r3, [r3, #8] + 8003f26: 4a15 ldr r2, [pc, #84] ; (8003f7c ) + 8003f28: 4013 ands r3, r2 + 8003f2a: 0019 movs r1, r3 + 8003f2c: 687b ldr r3, [r7, #4] + 8003f2e: 68da ldr r2, [r3, #12] + 8003f30: 4b10 ldr r3, [pc, #64] ; (8003f74 ) + 8003f32: 430a orrs r2, r1 + 8003f34: 609a str r2, [r3, #8] } /* Update the SystemCoreClock global variable */ SystemCoreClock = (HAL_RCC_GetSysClockFreq() >> ((AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]) & 0x1FU)); - 8003f56: f000 f829 bl 8003fac - 8003f5a: 0001 movs r1, r0 - 8003f5c: 4b0d ldr r3, [pc, #52] ; (8003f94 ) - 8003f5e: 689b ldr r3, [r3, #8] - 8003f60: 0a1b lsrs r3, r3, #8 - 8003f62: 220f movs r2, #15 - 8003f64: 401a ands r2, r3 - 8003f66: 4b0e ldr r3, [pc, #56] ; (8003fa0 ) - 8003f68: 0092 lsls r2, r2, #2 - 8003f6a: 58d3 ldr r3, [r2, r3] - 8003f6c: 221f movs r2, #31 - 8003f6e: 4013 ands r3, r2 - 8003f70: 000a movs r2, r1 - 8003f72: 40da lsrs r2, r3 - 8003f74: 4b0b ldr r3, [pc, #44] ; (8003fa4 ) - 8003f76: 601a str r2, [r3, #0] + 8003f36: f000 f829 bl 8003f8c + 8003f3a: 0001 movs r1, r0 + 8003f3c: 4b0d ldr r3, [pc, #52] ; (8003f74 ) + 8003f3e: 689b ldr r3, [r3, #8] + 8003f40: 0a1b lsrs r3, r3, #8 + 8003f42: 220f movs r2, #15 + 8003f44: 401a ands r2, r3 + 8003f46: 4b0e ldr r3, [pc, #56] ; (8003f80 ) + 8003f48: 0092 lsls r2, r2, #2 + 8003f4a: 58d3 ldr r3, [r2, r3] + 8003f4c: 221f movs r2, #31 + 8003f4e: 4013 ands r3, r2 + 8003f50: 000a movs r2, r1 + 8003f52: 40da lsrs r2, r3 + 8003f54: 4b0b ldr r3, [pc, #44] ; (8003f84 ) + 8003f56: 601a str r2, [r3, #0] /* Configure the source of time base considering new system clocks settings*/ return HAL_InitTick(uwTickPrio); - 8003f78: 4b0b ldr r3, [pc, #44] ; (8003fa8 ) - 8003f7a: 681b ldr r3, [r3, #0] - 8003f7c: 0018 movs r0, r3 - 8003f7e: f7fd fea9 bl 8001cd4 - 8003f82: 0003 movs r3, r0 + 8003f58: 4b0b ldr r3, [pc, #44] ; (8003f88 ) + 8003f5a: 681b ldr r3, [r3, #0] + 8003f5c: 0018 movs r0, r3 + 8003f5e: f7fd fea9 bl 8001cb4 + 8003f62: 0003 movs r3, r0 } - 8003f84: 0018 movs r0, r3 - 8003f86: 46bd mov sp, r7 - 8003f88: b004 add sp, #16 - 8003f8a: bd80 pop {r7, pc} - 8003f8c: 40022000 .word 0x40022000 - 8003f90: 00001388 .word 0x00001388 - 8003f94: 40021000 .word 0x40021000 - 8003f98: fffff0ff .word 0xfffff0ff - 8003f9c: ffff8fff .word 0xffff8fff - 8003fa0: 080067e8 .word 0x080067e8 - 8003fa4: 20000004 .word 0x20000004 - 8003fa8: 20000008 .word 0x20000008 + 8003f64: 0018 movs r0, r3 + 8003f66: 46bd mov sp, r7 + 8003f68: b004 add sp, #16 + 8003f6a: bd80 pop {r7, pc} + 8003f6c: 40022000 .word 0x40022000 + 8003f70: 00001388 .word 0x00001388 + 8003f74: 40021000 .word 0x40021000 + 8003f78: fffff0ff .word 0xfffff0ff + 8003f7c: ffff8fff .word 0xffff8fff + 8003f80: 080067e8 .word 0x080067e8 + 8003f84: 20000004 .word 0x20000004 + 8003f88: 20000008 .word 0x20000008 -08003fac : +08003f8c : * * * @retval SYSCLK frequency */ uint32_t HAL_RCC_GetSysClockFreq(void) { - 8003fac: b580 push {r7, lr} - 8003fae: b086 sub sp, #24 - 8003fb0: af00 add r7, sp, #0 + 8003f8c: b580 push {r7, lr} + 8003f8e: b086 sub sp, #24 + 8003f90: af00 add r7, sp, #0 uint32_t pllvco, pllsource, pllr, pllm, hsidiv; uint32_t sysclockfreq; if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) - 8003fb2: 4b3c ldr r3, [pc, #240] ; (80040a4 ) - 8003fb4: 689b ldr r3, [r3, #8] - 8003fb6: 2238 movs r2, #56 ; 0x38 - 8003fb8: 4013 ands r3, r2 - 8003fba: d10f bne.n 8003fdc + 8003f92: 4b3c ldr r3, [pc, #240] ; (8004084 ) + 8003f94: 689b ldr r3, [r3, #8] + 8003f96: 2238 movs r2, #56 ; 0x38 + 8003f98: 4013 ands r3, r2 + 8003f9a: d10f bne.n 8003fbc { /* HSISYS can be derived for HSI16 */ hsidiv = (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV)) >> RCC_CR_HSIDIV_Pos)); - 8003fbc: 4b39 ldr r3, [pc, #228] ; (80040a4 ) - 8003fbe: 681b ldr r3, [r3, #0] - 8003fc0: 0adb lsrs r3, r3, #11 - 8003fc2: 2207 movs r2, #7 - 8003fc4: 4013 ands r3, r2 - 8003fc6: 2201 movs r2, #1 - 8003fc8: 409a lsls r2, r3 - 8003fca: 0013 movs r3, r2 - 8003fcc: 603b str r3, [r7, #0] + 8003f9c: 4b39 ldr r3, [pc, #228] ; (8004084 ) + 8003f9e: 681b ldr r3, [r3, #0] + 8003fa0: 0adb lsrs r3, r3, #11 + 8003fa2: 2207 movs r2, #7 + 8003fa4: 4013 ands r3, r2 + 8003fa6: 2201 movs r2, #1 + 8003fa8: 409a lsls r2, r3 + 8003faa: 0013 movs r3, r2 + 8003fac: 603b str r3, [r7, #0] /* HSI used as system clock source */ sysclockfreq = (HSI_VALUE / hsidiv); - 8003fce: 6839 ldr r1, [r7, #0] - 8003fd0: 4835 ldr r0, [pc, #212] ; (80040a8 ) - 8003fd2: f7fc f899 bl 8000108 <__udivsi3> - 8003fd6: 0003 movs r3, r0 - 8003fd8: 613b str r3, [r7, #16] - 8003fda: e05d b.n 8004098 + 8003fae: 6839 ldr r1, [r7, #0] + 8003fb0: 4835 ldr r0, [pc, #212] ; (8004088 ) + 8003fb2: f7fc f8a9 bl 8000108 <__udivsi3> + 8003fb6: 0003 movs r3, r0 + 8003fb8: 613b str r3, [r7, #16] + 8003fba: e05d b.n 8004078 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) - 8003fdc: 4b31 ldr r3, [pc, #196] ; (80040a4 ) - 8003fde: 689b ldr r3, [r3, #8] - 8003fe0: 2238 movs r2, #56 ; 0x38 - 8003fe2: 4013 ands r3, r2 - 8003fe4: 2b08 cmp r3, #8 - 8003fe6: d102 bne.n 8003fee + 8003fbc: 4b31 ldr r3, [pc, #196] ; (8004084 ) + 8003fbe: 689b ldr r3, [r3, #8] + 8003fc0: 2238 movs r2, #56 ; 0x38 + 8003fc2: 4013 ands r3, r2 + 8003fc4: 2b08 cmp r3, #8 + 8003fc6: d102 bne.n 8003fce { /* HSE used as system clock source */ sysclockfreq = HSE_VALUE; - 8003fe8: 4b30 ldr r3, [pc, #192] ; (80040ac ) - 8003fea: 613b str r3, [r7, #16] - 8003fec: e054 b.n 8004098 + 8003fc8: 4b30 ldr r3, [pc, #192] ; (800408c ) + 8003fca: 613b str r3, [r7, #16] + 8003fcc: e054 b.n 8004078 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 8003fee: 4b2d ldr r3, [pc, #180] ; (80040a4 ) - 8003ff0: 689b ldr r3, [r3, #8] - 8003ff2: 2238 movs r2, #56 ; 0x38 - 8003ff4: 4013 ands r3, r2 - 8003ff6: 2b10 cmp r3, #16 - 8003ff8: d138 bne.n 800406c + 8003fce: 4b2d ldr r3, [pc, #180] ; (8004084 ) + 8003fd0: 689b ldr r3, [r3, #8] + 8003fd2: 2238 movs r2, #56 ; 0x38 + 8003fd4: 4013 ands r3, r2 + 8003fd6: 2b10 cmp r3, #16 + 8003fd8: d138 bne.n 800404c /* PLL used as system clock source */ /* PLL_VCO = ((HSE_VALUE or HSI_VALUE)/ PLLM) * PLLN SYSCLK = PLL_VCO / PLLR */ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); - 8003ffa: 4b2a ldr r3, [pc, #168] ; (80040a4 ) - 8003ffc: 68db ldr r3, [r3, #12] - 8003ffe: 2203 movs r2, #3 - 8004000: 4013 ands r3, r2 - 8004002: 60fb str r3, [r7, #12] + 8003fda: 4b2a ldr r3, [pc, #168] ; (8004084 ) + 8003fdc: 68db ldr r3, [r3, #12] + 8003fde: 2203 movs r2, #3 + 8003fe0: 4013 ands r3, r2 + 8003fe2: 60fb str r3, [r7, #12] pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ; - 8004004: 4b27 ldr r3, [pc, #156] ; (80040a4 ) - 8004006: 68db ldr r3, [r3, #12] - 8004008: 091b lsrs r3, r3, #4 - 800400a: 2207 movs r2, #7 - 800400c: 4013 ands r3, r2 - 800400e: 3301 adds r3, #1 - 8004010: 60bb str r3, [r7, #8] + 8003fe4: 4b27 ldr r3, [pc, #156] ; (8004084 ) + 8003fe6: 68db ldr r3, [r3, #12] + 8003fe8: 091b lsrs r3, r3, #4 + 8003fea: 2207 movs r2, #7 + 8003fec: 4013 ands r3, r2 + 8003fee: 3301 adds r3, #1 + 8003ff0: 60bb str r3, [r7, #8] switch (pllsource) - 8004012: 68fb ldr r3, [r7, #12] - 8004014: 2b03 cmp r3, #3 - 8004016: d10d bne.n 8004034 + 8003ff2: 68fb ldr r3, [r7, #12] + 8003ff4: 2b03 cmp r3, #3 + 8003ff6: d10d bne.n 8004014 { case RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); - 8004018: 68b9 ldr r1, [r7, #8] - 800401a: 4824 ldr r0, [pc, #144] ; (80040ac ) - 800401c: f7fc f874 bl 8000108 <__udivsi3> - 8004020: 0003 movs r3, r0 - 8004022: 0019 movs r1, r3 - 8004024: 4b1f ldr r3, [pc, #124] ; (80040a4 ) - 8004026: 68db ldr r3, [r3, #12] - 8004028: 0a1b lsrs r3, r3, #8 - 800402a: 227f movs r2, #127 ; 0x7f - 800402c: 4013 ands r3, r2 - 800402e: 434b muls r3, r1 - 8004030: 617b str r3, [r7, #20] + 8003ff8: 68b9 ldr r1, [r7, #8] + 8003ffa: 4824 ldr r0, [pc, #144] ; (800408c ) + 8003ffc: f7fc f884 bl 8000108 <__udivsi3> + 8004000: 0003 movs r3, r0 + 8004002: 0019 movs r1, r3 + 8004004: 4b1f ldr r3, [pc, #124] ; (8004084 ) + 8004006: 68db ldr r3, [r3, #12] + 8004008: 0a1b lsrs r3, r3, #8 + 800400a: 227f movs r2, #127 ; 0x7f + 800400c: 4013 ands r3, r2 + 800400e: 434b muls r3, r1 + 8004010: 617b str r3, [r7, #20] break; - 8004032: e00d b.n 8004050 + 8004012: e00d b.n 8004030 case RCC_PLLSOURCE_HSI: /* HSI16 used as PLL clock source */ default: /* HSI16 used as PLL clock source */ pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos) ; - 8004034: 68b9 ldr r1, [r7, #8] - 8004036: 481c ldr r0, [pc, #112] ; (80040a8 ) - 8004038: f7fc f866 bl 8000108 <__udivsi3> - 800403c: 0003 movs r3, r0 - 800403e: 0019 movs r1, r3 - 8004040: 4b18 ldr r3, [pc, #96] ; (80040a4 ) - 8004042: 68db ldr r3, [r3, #12] - 8004044: 0a1b lsrs r3, r3, #8 - 8004046: 227f movs r2, #127 ; 0x7f - 8004048: 4013 ands r3, r2 - 800404a: 434b muls r3, r1 - 800404c: 617b str r3, [r7, #20] + 8004014: 68b9 ldr r1, [r7, #8] + 8004016: 481c ldr r0, [pc, #112] ; (8004088 ) + 8004018: f7fc f876 bl 8000108 <__udivsi3> + 800401c: 0003 movs r3, r0 + 800401e: 0019 movs r1, r3 + 8004020: 4b18 ldr r3, [pc, #96] ; (8004084 ) + 8004022: 68db ldr r3, [r3, #12] + 8004024: 0a1b lsrs r3, r3, #8 + 8004026: 227f movs r2, #127 ; 0x7f + 8004028: 4013 ands r3, r2 + 800402a: 434b muls r3, r1 + 800402c: 617b str r3, [r7, #20] break; - 800404e: 46c0 nop ; (mov r8, r8) + 800402e: 46c0 nop ; (mov r8, r8) } pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U); - 8004050: 4b14 ldr r3, [pc, #80] ; (80040a4 ) - 8004052: 68db ldr r3, [r3, #12] - 8004054: 0f5b lsrs r3, r3, #29 - 8004056: 2207 movs r2, #7 - 8004058: 4013 ands r3, r2 - 800405a: 3301 adds r3, #1 - 800405c: 607b str r3, [r7, #4] + 8004030: 4b14 ldr r3, [pc, #80] ; (8004084 ) + 8004032: 68db ldr r3, [r3, #12] + 8004034: 0f5b lsrs r3, r3, #29 + 8004036: 2207 movs r2, #7 + 8004038: 4013 ands r3, r2 + 800403a: 3301 adds r3, #1 + 800403c: 607b str r3, [r7, #4] sysclockfreq = pllvco / pllr; - 800405e: 6879 ldr r1, [r7, #4] - 8004060: 6978 ldr r0, [r7, #20] - 8004062: f7fc f851 bl 8000108 <__udivsi3> - 8004066: 0003 movs r3, r0 - 8004068: 613b str r3, [r7, #16] - 800406a: e015 b.n 8004098 + 800403e: 6879 ldr r1, [r7, #4] + 8004040: 6978 ldr r0, [r7, #20] + 8004042: f7fc f861 bl 8000108 <__udivsi3> + 8004046: 0003 movs r3, r0 + 8004048: 613b str r3, [r7, #16] + 800404a: e015 b.n 8004078 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSE) - 800406c: 4b0d ldr r3, [pc, #52] ; (80040a4 ) - 800406e: 689b ldr r3, [r3, #8] - 8004070: 2238 movs r2, #56 ; 0x38 - 8004072: 4013 ands r3, r2 - 8004074: 2b20 cmp r3, #32 - 8004076: d103 bne.n 8004080 + 800404c: 4b0d ldr r3, [pc, #52] ; (8004084 ) + 800404e: 689b ldr r3, [r3, #8] + 8004050: 2238 movs r2, #56 ; 0x38 + 8004052: 4013 ands r3, r2 + 8004054: 2b20 cmp r3, #32 + 8004056: d103 bne.n 8004060 { /* LSE used as system clock source */ sysclockfreq = LSE_VALUE; - 8004078: 2380 movs r3, #128 ; 0x80 - 800407a: 021b lsls r3, r3, #8 - 800407c: 613b str r3, [r7, #16] - 800407e: e00b b.n 8004098 + 8004058: 2380 movs r3, #128 ; 0x80 + 800405a: 021b lsls r3, r3, #8 + 800405c: 613b str r3, [r7, #16] + 800405e: e00b b.n 8004078 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSI) - 8004080: 4b08 ldr r3, [pc, #32] ; (80040a4 ) - 8004082: 689b ldr r3, [r3, #8] - 8004084: 2238 movs r2, #56 ; 0x38 - 8004086: 4013 ands r3, r2 - 8004088: 2b18 cmp r3, #24 - 800408a: d103 bne.n 8004094 + 8004060: 4b08 ldr r3, [pc, #32] ; (8004084 ) + 8004062: 689b ldr r3, [r3, #8] + 8004064: 2238 movs r2, #56 ; 0x38 + 8004066: 4013 ands r3, r2 + 8004068: 2b18 cmp r3, #24 + 800406a: d103 bne.n 8004074 { /* LSI used as system clock source */ sysclockfreq = LSI_VALUE; - 800408c: 23fa movs r3, #250 ; 0xfa - 800408e: 01db lsls r3, r3, #7 - 8004090: 613b str r3, [r7, #16] - 8004092: e001 b.n 8004098 + 800406c: 23fa movs r3, #250 ; 0xfa + 800406e: 01db lsls r3, r3, #7 + 8004070: 613b str r3, [r7, #16] + 8004072: e001 b.n 8004078 } else { sysclockfreq = 0U; - 8004094: 2300 movs r3, #0 - 8004096: 613b str r3, [r7, #16] + 8004074: 2300 movs r3, #0 + 8004076: 613b str r3, [r7, #16] } return sysclockfreq; - 8004098: 693b ldr r3, [r7, #16] + 8004078: 693b ldr r3, [r7, #16] } - 800409a: 0018 movs r0, r3 - 800409c: 46bd mov sp, r7 - 800409e: b006 add sp, #24 - 80040a0: bd80 pop {r7, pc} - 80040a2: 46c0 nop ; (mov r8, r8) - 80040a4: 40021000 .word 0x40021000 - 80040a8: 00f42400 .word 0x00f42400 - 80040ac: 007a1200 .word 0x007a1200 + 800407a: 0018 movs r0, r3 + 800407c: 46bd mov sp, r7 + 800407e: b006 add sp, #24 + 8004080: bd80 pop {r7, pc} + 8004082: 46c0 nop ; (mov r8, r8) + 8004084: 40021000 .word 0x40021000 + 8004088: 00f42400 .word 0x00f42400 + 800408c: 007a1200 .word 0x007a1200 -080040b0 : +08004090 : * the RTC clock source: in this case the access to Backup domain is enabled. * * @retval HAL status */ HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) { - 80040b0: b580 push {r7, lr} - 80040b2: b086 sub sp, #24 - 80040b4: af00 add r7, sp, #0 - 80040b6: 6078 str r0, [r7, #4] + 8004090: b580 push {r7, lr} + 8004092: b086 sub sp, #24 + 8004094: af00 add r7, sp, #0 + 8004096: 6078 str r0, [r7, #4] uint32_t tmpregister; uint32_t tickstart; HAL_StatusTypeDef ret = HAL_OK; /* Intermediate status */ - 80040b8: 2313 movs r3, #19 - 80040ba: 18fb adds r3, r7, r3 - 80040bc: 2200 movs r2, #0 - 80040be: 701a strb r2, [r3, #0] + 8004098: 2313 movs r3, #19 + 800409a: 18fb adds r3, r7, r3 + 800409c: 2200 movs r2, #0 + 800409e: 701a strb r2, [r3, #0] HAL_StatusTypeDef status = HAL_OK; /* Final status */ - 80040c0: 2312 movs r3, #18 - 80040c2: 18fb adds r3, r7, r3 - 80040c4: 2200 movs r2, #0 - 80040c6: 701a strb r2, [r3, #0] + 80040a0: 2312 movs r3, #18 + 80040a2: 18fb adds r3, r7, r3 + 80040a4: 2200 movs r2, #0 + 80040a6: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); /*-------------------------- RTC clock source configuration ----------------------*/ if ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) - 80040c8: 687b ldr r3, [r7, #4] - 80040ca: 681a ldr r2, [r3, #0] - 80040cc: 2380 movs r3, #128 ; 0x80 - 80040ce: 029b lsls r3, r3, #10 - 80040d0: 4013 ands r3, r2 - 80040d2: d100 bne.n 80040d6 - 80040d4: e0a3 b.n 800421e + 80040a8: 687b ldr r3, [r7, #4] + 80040aa: 681a ldr r2, [r3, #0] + 80040ac: 2380 movs r3, #128 ; 0x80 + 80040ae: 029b lsls r3, r3, #10 + 80040b0: 4013 ands r3, r2 + 80040b2: d100 bne.n 80040b6 + 80040b4: e0a3 b.n 80041fe { FlagStatus pwrclkchanged = RESET; - 80040d6: 2011 movs r0, #17 - 80040d8: 183b adds r3, r7, r0 - 80040da: 2200 movs r2, #0 - 80040dc: 701a strb r2, [r3, #0] + 80040b6: 2011 movs r0, #17 + 80040b8: 183b adds r3, r7, r0 + 80040ba: 2200 movs r2, #0 + 80040bc: 701a strb r2, [r3, #0] /* Check for RTC Parameters used to output RTCCLK */ assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); /* Enable Power Clock */ if (__HAL_RCC_PWR_IS_CLK_DISABLED()) - 80040de: 4ba5 ldr r3, [pc, #660] ; (8004374 ) - 80040e0: 6bda ldr r2, [r3, #60] ; 0x3c - 80040e2: 2380 movs r3, #128 ; 0x80 - 80040e4: 055b lsls r3, r3, #21 - 80040e6: 4013 ands r3, r2 - 80040e8: d110 bne.n 800410c + 80040be: 4ba5 ldr r3, [pc, #660] ; (8004354 ) + 80040c0: 6bda ldr r2, [r3, #60] ; 0x3c + 80040c2: 2380 movs r3, #128 ; 0x80 + 80040c4: 055b lsls r3, r3, #21 + 80040c6: 4013 ands r3, r2 + 80040c8: d110 bne.n 80040ec { __HAL_RCC_PWR_CLK_ENABLE(); - 80040ea: 4ba2 ldr r3, [pc, #648] ; (8004374 ) - 80040ec: 6bda ldr r2, [r3, #60] ; 0x3c - 80040ee: 4ba1 ldr r3, [pc, #644] ; (8004374 ) - 80040f0: 2180 movs r1, #128 ; 0x80 - 80040f2: 0549 lsls r1, r1, #21 - 80040f4: 430a orrs r2, r1 - 80040f6: 63da str r2, [r3, #60] ; 0x3c - 80040f8: 4b9e ldr r3, [pc, #632] ; (8004374 ) - 80040fa: 6bda ldr r2, [r3, #60] ; 0x3c - 80040fc: 2380 movs r3, #128 ; 0x80 - 80040fe: 055b lsls r3, r3, #21 - 8004100: 4013 ands r3, r2 - 8004102: 60bb str r3, [r7, #8] - 8004104: 68bb ldr r3, [r7, #8] + 80040ca: 4ba2 ldr r3, [pc, #648] ; (8004354 ) + 80040cc: 6bda ldr r2, [r3, #60] ; 0x3c + 80040ce: 4ba1 ldr r3, [pc, #644] ; (8004354 ) + 80040d0: 2180 movs r1, #128 ; 0x80 + 80040d2: 0549 lsls r1, r1, #21 + 80040d4: 430a orrs r2, r1 + 80040d6: 63da str r2, [r3, #60] ; 0x3c + 80040d8: 4b9e ldr r3, [pc, #632] ; (8004354 ) + 80040da: 6bda ldr r2, [r3, #60] ; 0x3c + 80040dc: 2380 movs r3, #128 ; 0x80 + 80040de: 055b lsls r3, r3, #21 + 80040e0: 4013 ands r3, r2 + 80040e2: 60bb str r3, [r7, #8] + 80040e4: 68bb ldr r3, [r7, #8] pwrclkchanged = SET; - 8004106: 183b adds r3, r7, r0 - 8004108: 2201 movs r2, #1 - 800410a: 701a strb r2, [r3, #0] + 80040e6: 183b adds r3, r7, r0 + 80040e8: 2201 movs r2, #1 + 80040ea: 701a strb r2, [r3, #0] } /* Enable write access to Backup domain */ SET_BIT(PWR->CR1, PWR_CR1_DBP); - 800410c: 4b9a ldr r3, [pc, #616] ; (8004378 ) - 800410e: 681a ldr r2, [r3, #0] - 8004110: 4b99 ldr r3, [pc, #612] ; (8004378 ) - 8004112: 2180 movs r1, #128 ; 0x80 - 8004114: 0049 lsls r1, r1, #1 - 8004116: 430a orrs r2, r1 - 8004118: 601a str r2, [r3, #0] + 80040ec: 4b9a ldr r3, [pc, #616] ; (8004358 ) + 80040ee: 681a ldr r2, [r3, #0] + 80040f0: 4b99 ldr r3, [pc, #612] ; (8004358 ) + 80040f2: 2180 movs r1, #128 ; 0x80 + 80040f4: 0049 lsls r1, r1, #1 + 80040f6: 430a orrs r2, r1 + 80040f8: 601a str r2, [r3, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 800411a: f7fd fe37 bl 8001d8c - 800411e: 0003 movs r3, r0 - 8004120: 60fb str r3, [r7, #12] + 80040fa: f7fd fe37 bl 8001d6c + 80040fe: 0003 movs r3, r0 + 8004100: 60fb str r3, [r7, #12] while ((PWR->CR1 & PWR_CR1_DBP) == 0U) - 8004122: e00b b.n 800413c + 8004102: e00b b.n 800411c { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8004124: f7fd fe32 bl 8001d8c - 8004128: 0002 movs r2, r0 - 800412a: 68fb ldr r3, [r7, #12] - 800412c: 1ad3 subs r3, r2, r3 - 800412e: 2b02 cmp r3, #2 - 8004130: d904 bls.n 800413c + 8004104: f7fd fe32 bl 8001d6c + 8004108: 0002 movs r2, r0 + 800410a: 68fb ldr r3, [r7, #12] + 800410c: 1ad3 subs r3, r2, r3 + 800410e: 2b02 cmp r3, #2 + 8004110: d904 bls.n 800411c { ret = HAL_TIMEOUT; - 8004132: 2313 movs r3, #19 - 8004134: 18fb adds r3, r7, r3 - 8004136: 2203 movs r2, #3 - 8004138: 701a strb r2, [r3, #0] + 8004112: 2313 movs r3, #19 + 8004114: 18fb adds r3, r7, r3 + 8004116: 2203 movs r2, #3 + 8004118: 701a strb r2, [r3, #0] break; - 800413a: e005 b.n 8004148 + 800411a: e005 b.n 8004128 while ((PWR->CR1 & PWR_CR1_DBP) == 0U) - 800413c: 4b8e ldr r3, [pc, #568] ; (8004378 ) - 800413e: 681a ldr r2, [r3, #0] - 8004140: 2380 movs r3, #128 ; 0x80 - 8004142: 005b lsls r3, r3, #1 - 8004144: 4013 ands r3, r2 - 8004146: d0ed beq.n 8004124 + 800411c: 4b8e ldr r3, [pc, #568] ; (8004358 ) + 800411e: 681a ldr r2, [r3, #0] + 8004120: 2380 movs r3, #128 ; 0x80 + 8004122: 005b lsls r3, r3, #1 + 8004124: 4013 ands r3, r2 + 8004126: d0ed beq.n 8004104 } } if (ret == HAL_OK) - 8004148: 2313 movs r3, #19 - 800414a: 18fb adds r3, r7, r3 - 800414c: 781b ldrb r3, [r3, #0] - 800414e: 2b00 cmp r3, #0 - 8004150: d154 bne.n 80041fc + 8004128: 2313 movs r3, #19 + 800412a: 18fb adds r3, r7, r3 + 800412c: 781b ldrb r3, [r3, #0] + 800412e: 2b00 cmp r3, #0 + 8004130: d154 bne.n 80041dc { /* Reset the Backup domain only if the RTC Clock source selection is modified from default */ tmpregister = READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL); - 8004152: 4b88 ldr r3, [pc, #544] ; (8004374 ) - 8004154: 6dda ldr r2, [r3, #92] ; 0x5c - 8004156: 23c0 movs r3, #192 ; 0xc0 - 8004158: 009b lsls r3, r3, #2 - 800415a: 4013 ands r3, r2 - 800415c: 617b str r3, [r7, #20] + 8004132: 4b88 ldr r3, [pc, #544] ; (8004354 ) + 8004134: 6dda ldr r2, [r3, #92] ; 0x5c + 8004136: 23c0 movs r3, #192 ; 0xc0 + 8004138: 009b lsls r3, r3, #2 + 800413a: 4013 ands r3, r2 + 800413c: 617b str r3, [r7, #20] /* Reset the Backup domain only if the RTC Clock source selection is modified */ if ((tmpregister != RCC_RTCCLKSOURCE_NONE) && (tmpregister != PeriphClkInit->RTCClockSelection)) - 800415e: 697b ldr r3, [r7, #20] - 8004160: 2b00 cmp r3, #0 - 8004162: d019 beq.n 8004198 - 8004164: 687b ldr r3, [r7, #4] - 8004166: 6a5b ldr r3, [r3, #36] ; 0x24 - 8004168: 697a ldr r2, [r7, #20] - 800416a: 429a cmp r2, r3 - 800416c: d014 beq.n 8004198 + 800413e: 697b ldr r3, [r7, #20] + 8004140: 2b00 cmp r3, #0 + 8004142: d019 beq.n 8004178 + 8004144: 687b ldr r3, [r7, #4] + 8004146: 6a5b ldr r3, [r3, #36] ; 0x24 + 8004148: 697a ldr r2, [r7, #20] + 800414a: 429a cmp r2, r3 + 800414c: d014 beq.n 8004178 { /* Store the content of BDCR register before the reset of Backup Domain */ tmpregister = READ_BIT(RCC->BDCR, ~(RCC_BDCR_RTCSEL)); - 800416e: 4b81 ldr r3, [pc, #516] ; (8004374 ) - 8004170: 6ddb ldr r3, [r3, #92] ; 0x5c - 8004172: 4a82 ldr r2, [pc, #520] ; (800437c ) - 8004174: 4013 ands r3, r2 - 8004176: 617b str r3, [r7, #20] + 800414e: 4b81 ldr r3, [pc, #516] ; (8004354 ) + 8004150: 6ddb ldr r3, [r3, #92] ; 0x5c + 8004152: 4a82 ldr r2, [pc, #520] ; (800435c ) + 8004154: 4013 ands r3, r2 + 8004156: 617b str r3, [r7, #20] /* RTC Clock selection can be changed only if the Backup Domain is reset */ __HAL_RCC_BACKUPRESET_FORCE(); - 8004178: 4b7e ldr r3, [pc, #504] ; (8004374 ) - 800417a: 6dda ldr r2, [r3, #92] ; 0x5c - 800417c: 4b7d ldr r3, [pc, #500] ; (8004374 ) - 800417e: 2180 movs r1, #128 ; 0x80 - 8004180: 0249 lsls r1, r1, #9 - 8004182: 430a orrs r2, r1 - 8004184: 65da str r2, [r3, #92] ; 0x5c + 8004158: 4b7e ldr r3, [pc, #504] ; (8004354 ) + 800415a: 6dda ldr r2, [r3, #92] ; 0x5c + 800415c: 4b7d ldr r3, [pc, #500] ; (8004354 ) + 800415e: 2180 movs r1, #128 ; 0x80 + 8004160: 0249 lsls r1, r1, #9 + 8004162: 430a orrs r2, r1 + 8004164: 65da str r2, [r3, #92] ; 0x5c __HAL_RCC_BACKUPRESET_RELEASE(); - 8004186: 4b7b ldr r3, [pc, #492] ; (8004374 ) - 8004188: 6dda ldr r2, [r3, #92] ; 0x5c - 800418a: 4b7a ldr r3, [pc, #488] ; (8004374 ) - 800418c: 497c ldr r1, [pc, #496] ; (8004380 ) - 800418e: 400a ands r2, r1 - 8004190: 65da str r2, [r3, #92] ; 0x5c + 8004166: 4b7b ldr r3, [pc, #492] ; (8004354 ) + 8004168: 6dda ldr r2, [r3, #92] ; 0x5c + 800416a: 4b7a ldr r3, [pc, #488] ; (8004354 ) + 800416c: 497c ldr r1, [pc, #496] ; (8004360 ) + 800416e: 400a ands r2, r1 + 8004170: 65da str r2, [r3, #92] ; 0x5c /* Restore the Content of BDCR register */ RCC->BDCR = tmpregister; - 8004192: 4b78 ldr r3, [pc, #480] ; (8004374 ) - 8004194: 697a ldr r2, [r7, #20] - 8004196: 65da str r2, [r3, #92] ; 0x5c + 8004172: 4b78 ldr r3, [pc, #480] ; (8004354 ) + 8004174: 697a ldr r2, [r7, #20] + 8004176: 65da str r2, [r3, #92] ; 0x5c } /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */ if (HAL_IS_BIT_SET(tmpregister, RCC_BDCR_LSEON)) - 8004198: 697b ldr r3, [r7, #20] - 800419a: 2201 movs r2, #1 - 800419c: 4013 ands r3, r2 - 800419e: d016 beq.n 80041ce + 8004178: 697b ldr r3, [r7, #20] + 800417a: 2201 movs r2, #1 + 800417c: 4013 ands r3, r2 + 800417e: d016 beq.n 80041ae { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80041a0: f7fd fdf4 bl 8001d8c - 80041a4: 0003 movs r3, r0 - 80041a6: 60fb str r3, [r7, #12] + 8004180: f7fd fdf4 bl 8001d6c + 8004184: 0003 movs r3, r0 + 8004186: 60fb str r3, [r7, #12] /* Wait till LSE is ready */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 80041a8: e00c b.n 80041c4 + 8004188: e00c b.n 80041a4 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 80041aa: f7fd fdef bl 8001d8c - 80041ae: 0002 movs r2, r0 - 80041b0: 68fb ldr r3, [r7, #12] - 80041b2: 1ad3 subs r3, r2, r3 - 80041b4: 4a73 ldr r2, [pc, #460] ; (8004384 ) - 80041b6: 4293 cmp r3, r2 - 80041b8: d904 bls.n 80041c4 + 800418a: f7fd fdef bl 8001d6c + 800418e: 0002 movs r2, r0 + 8004190: 68fb ldr r3, [r7, #12] + 8004192: 1ad3 subs r3, r2, r3 + 8004194: 4a73 ldr r2, [pc, #460] ; (8004364 ) + 8004196: 4293 cmp r3, r2 + 8004198: d904 bls.n 80041a4 { ret = HAL_TIMEOUT; - 80041ba: 2313 movs r3, #19 - 80041bc: 18fb adds r3, r7, r3 - 80041be: 2203 movs r2, #3 - 80041c0: 701a strb r2, [r3, #0] + 800419a: 2313 movs r3, #19 + 800419c: 18fb adds r3, r7, r3 + 800419e: 2203 movs r2, #3 + 80041a0: 701a strb r2, [r3, #0] break; - 80041c2: e004 b.n 80041ce + 80041a2: e004 b.n 80041ae while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 80041c4: 4b6b ldr r3, [pc, #428] ; (8004374 ) - 80041c6: 6ddb ldr r3, [r3, #92] ; 0x5c - 80041c8: 2202 movs r2, #2 - 80041ca: 4013 ands r3, r2 - 80041cc: d0ed beq.n 80041aa + 80041a4: 4b6b ldr r3, [pc, #428] ; (8004354 ) + 80041a6: 6ddb ldr r3, [r3, #92] ; 0x5c + 80041a8: 2202 movs r2, #2 + 80041aa: 4013 ands r3, r2 + 80041ac: d0ed beq.n 800418a } } } if (ret == HAL_OK) - 80041ce: 2313 movs r3, #19 - 80041d0: 18fb adds r3, r7, r3 - 80041d2: 781b ldrb r3, [r3, #0] - 80041d4: 2b00 cmp r3, #0 - 80041d6: d10a bne.n 80041ee + 80041ae: 2313 movs r3, #19 + 80041b0: 18fb adds r3, r7, r3 + 80041b2: 781b ldrb r3, [r3, #0] + 80041b4: 2b00 cmp r3, #0 + 80041b6: d10a bne.n 80041ce { /* Apply new RTC clock source selection */ __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); - 80041d8: 4b66 ldr r3, [pc, #408] ; (8004374 ) - 80041da: 6ddb ldr r3, [r3, #92] ; 0x5c - 80041dc: 4a67 ldr r2, [pc, #412] ; (800437c ) - 80041de: 4013 ands r3, r2 - 80041e0: 0019 movs r1, r3 - 80041e2: 687b ldr r3, [r7, #4] - 80041e4: 6a5a ldr r2, [r3, #36] ; 0x24 - 80041e6: 4b63 ldr r3, [pc, #396] ; (8004374 ) - 80041e8: 430a orrs r2, r1 - 80041ea: 65da str r2, [r3, #92] ; 0x5c - 80041ec: e00c b.n 8004208 + 80041b8: 4b66 ldr r3, [pc, #408] ; (8004354 ) + 80041ba: 6ddb ldr r3, [r3, #92] ; 0x5c + 80041bc: 4a67 ldr r2, [pc, #412] ; (800435c ) + 80041be: 4013 ands r3, r2 + 80041c0: 0019 movs r1, r3 + 80041c2: 687b ldr r3, [r7, #4] + 80041c4: 6a5a ldr r2, [r3, #36] ; 0x24 + 80041c6: 4b63 ldr r3, [pc, #396] ; (8004354 ) + 80041c8: 430a orrs r2, r1 + 80041ca: 65da str r2, [r3, #92] ; 0x5c + 80041cc: e00c b.n 80041e8 } else { /* set overall return value */ status = ret; - 80041ee: 2312 movs r3, #18 - 80041f0: 18fb adds r3, r7, r3 - 80041f2: 2213 movs r2, #19 - 80041f4: 18ba adds r2, r7, r2 - 80041f6: 7812 ldrb r2, [r2, #0] - 80041f8: 701a strb r2, [r3, #0] - 80041fa: e005 b.n 8004208 + 80041ce: 2312 movs r3, #18 + 80041d0: 18fb adds r3, r7, r3 + 80041d2: 2213 movs r2, #19 + 80041d4: 18ba adds r2, r7, r2 + 80041d6: 7812 ldrb r2, [r2, #0] + 80041d8: 701a strb r2, [r3, #0] + 80041da: e005 b.n 80041e8 } } else { /* set overall return value */ status = ret; - 80041fc: 2312 movs r3, #18 - 80041fe: 18fb adds r3, r7, r3 - 8004200: 2213 movs r2, #19 - 8004202: 18ba adds r2, r7, r2 - 8004204: 7812 ldrb r2, [r2, #0] - 8004206: 701a strb r2, [r3, #0] + 80041dc: 2312 movs r3, #18 + 80041de: 18fb adds r3, r7, r3 + 80041e0: 2213 movs r2, #19 + 80041e2: 18ba adds r2, r7, r2 + 80041e4: 7812 ldrb r2, [r2, #0] + 80041e6: 701a strb r2, [r3, #0] } /* Restore clock configuration if changed */ if (pwrclkchanged == SET) - 8004208: 2311 movs r3, #17 - 800420a: 18fb adds r3, r7, r3 - 800420c: 781b ldrb r3, [r3, #0] - 800420e: 2b01 cmp r3, #1 - 8004210: d105 bne.n 800421e + 80041e8: 2311 movs r3, #17 + 80041ea: 18fb adds r3, r7, r3 + 80041ec: 781b ldrb r3, [r3, #0] + 80041ee: 2b01 cmp r3, #1 + 80041f0: d105 bne.n 80041fe { __HAL_RCC_PWR_CLK_DISABLE(); - 8004212: 4b58 ldr r3, [pc, #352] ; (8004374 ) - 8004214: 6bda ldr r2, [r3, #60] ; 0x3c - 8004216: 4b57 ldr r3, [pc, #348] ; (8004374 ) - 8004218: 495b ldr r1, [pc, #364] ; (8004388 ) - 800421a: 400a ands r2, r1 - 800421c: 63da str r2, [r3, #60] ; 0x3c + 80041f2: 4b58 ldr r3, [pc, #352] ; (8004354 ) + 80041f4: 6bda ldr r2, [r3, #60] ; 0x3c + 80041f6: 4b57 ldr r3, [pc, #348] ; (8004354 ) + 80041f8: 495b ldr r1, [pc, #364] ; (8004368 ) + 80041fa: 400a ands r2, r1 + 80041fc: 63da str r2, [r3, #60] ; 0x3c } } /*-------------------------- USART1 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) - 800421e: 687b ldr r3, [r7, #4] - 8004220: 681b ldr r3, [r3, #0] - 8004222: 2201 movs r2, #1 - 8004224: 4013 ands r3, r2 - 8004226: d009 beq.n 800423c + 80041fe: 687b ldr r3, [r7, #4] + 8004200: 681b ldr r3, [r3, #0] + 8004202: 2201 movs r2, #1 + 8004204: 4013 ands r3, r2 + 8004206: d009 beq.n 800421c { /* Check the parameters */ assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); /* Configure the USART1 clock source */ __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); - 8004228: 4b52 ldr r3, [pc, #328] ; (8004374 ) - 800422a: 6d5b ldr r3, [r3, #84] ; 0x54 - 800422c: 2203 movs r2, #3 - 800422e: 4393 bics r3, r2 - 8004230: 0019 movs r1, r3 - 8004232: 687b ldr r3, [r7, #4] - 8004234: 685a ldr r2, [r3, #4] - 8004236: 4b4f ldr r3, [pc, #316] ; (8004374 ) - 8004238: 430a orrs r2, r1 - 800423a: 655a str r2, [r3, #84] ; 0x54 + 8004208: 4b52 ldr r3, [pc, #328] ; (8004354 ) + 800420a: 6d5b ldr r3, [r3, #84] ; 0x54 + 800420c: 2203 movs r2, #3 + 800420e: 4393 bics r3, r2 + 8004210: 0019 movs r1, r3 + 8004212: 687b ldr r3, [r7, #4] + 8004214: 685a ldr r2, [r3, #4] + 8004216: 4b4f ldr r3, [pc, #316] ; (8004354 ) + 8004218: 430a orrs r2, r1 + 800421a: 655a str r2, [r3, #84] ; 0x54 } #endif /* RCC_CCIPR_USART3SEL */ #if defined(LPUART1) /*-------------------------- LPUART1 clock source configuration ------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) - 800423c: 687b ldr r3, [r7, #4] - 800423e: 681b ldr r3, [r3, #0] - 8004240: 2210 movs r2, #16 - 8004242: 4013 ands r3, r2 - 8004244: d009 beq.n 800425a + 800421c: 687b ldr r3, [r7, #4] + 800421e: 681b ldr r3, [r3, #0] + 8004220: 2210 movs r2, #16 + 8004222: 4013 ands r3, r2 + 8004224: d009 beq.n 800423a { /* Check the parameters */ assert_param(IS_RCC_LPUART1CLKSOURCE(PeriphClkInit->Lpuart1ClockSelection)); /* Configure the LPUART1 clock source */ __HAL_RCC_LPUART1_CONFIG(PeriphClkInit->Lpuart1ClockSelection); - 8004246: 4b4b ldr r3, [pc, #300] ; (8004374 ) - 8004248: 6d5b ldr r3, [r3, #84] ; 0x54 - 800424a: 4a50 ldr r2, [pc, #320] ; (800438c ) - 800424c: 4013 ands r3, r2 - 800424e: 0019 movs r1, r3 - 8004250: 687b ldr r3, [r7, #4] - 8004252: 689a ldr r2, [r3, #8] - 8004254: 4b47 ldr r3, [pc, #284] ; (8004374 ) - 8004256: 430a orrs r2, r1 - 8004258: 655a str r2, [r3, #84] ; 0x54 + 8004226: 4b4b ldr r3, [pc, #300] ; (8004354 ) + 8004228: 6d5b ldr r3, [r3, #84] ; 0x54 + 800422a: 4a50 ldr r2, [pc, #320] ; (800436c ) + 800422c: 4013 ands r3, r2 + 800422e: 0019 movs r1, r3 + 8004230: 687b ldr r3, [r7, #4] + 8004232: 689a ldr r2, [r3, #8] + 8004234: 4b47 ldr r3, [pc, #284] ; (8004354 ) + 8004236: 430a orrs r2, r1 + 8004238: 655a str r2, [r3, #84] ; 0x54 } #endif /* LPUART2 */ #if defined(RCC_CCIPR_LPTIM1SEL) /*-------------------------- LPTIM1 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == (RCC_PERIPHCLK_LPTIM1)) - 800425a: 687b ldr r3, [r7, #4] - 800425c: 681a ldr r2, [r3, #0] - 800425e: 2380 movs r3, #128 ; 0x80 - 8004260: 009b lsls r3, r3, #2 - 8004262: 4013 ands r3, r2 - 8004264: d009 beq.n 800427a + 800423a: 687b ldr r3, [r7, #4] + 800423c: 681a ldr r2, [r3, #0] + 800423e: 2380 movs r3, #128 ; 0x80 + 8004240: 009b lsls r3, r3, #2 + 8004242: 4013 ands r3, r2 + 8004244: d009 beq.n 800425a { assert_param(IS_RCC_LPTIM1CLKSOURCE(PeriphClkInit->Lptim1ClockSelection)); __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection); - 8004266: 4b43 ldr r3, [pc, #268] ; (8004374 ) - 8004268: 6d5b ldr r3, [r3, #84] ; 0x54 - 800426a: 4a49 ldr r2, [pc, #292] ; (8004390 ) - 800426c: 4013 ands r3, r2 - 800426e: 0019 movs r1, r3 - 8004270: 687b ldr r3, [r7, #4] - 8004272: 695a ldr r2, [r3, #20] - 8004274: 4b3f ldr r3, [pc, #252] ; (8004374 ) - 8004276: 430a orrs r2, r1 - 8004278: 655a str r2, [r3, #84] ; 0x54 + 8004246: 4b43 ldr r3, [pc, #268] ; (8004354 ) + 8004248: 6d5b ldr r3, [r3, #84] ; 0x54 + 800424a: 4a49 ldr r2, [pc, #292] ; (8004370 ) + 800424c: 4013 ands r3, r2 + 800424e: 0019 movs r1, r3 + 8004250: 687b ldr r3, [r7, #4] + 8004252: 695a ldr r2, [r3, #20] + 8004254: 4b3f ldr r3, [pc, #252] ; (8004354 ) + 8004256: 430a orrs r2, r1 + 8004258: 655a str r2, [r3, #84] ; 0x54 } #endif /* RCC_CCIPR_LPTIM1SEL */ #if defined(RCC_CCIPR_LPTIM2SEL) /*-------------------------- LPTIM2 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM2) == (RCC_PERIPHCLK_LPTIM2)) - 800427a: 687b ldr r3, [r7, #4] - 800427c: 681a ldr r2, [r3, #0] - 800427e: 2380 movs r3, #128 ; 0x80 - 8004280: 00db lsls r3, r3, #3 - 8004282: 4013 ands r3, r2 - 8004284: d009 beq.n 800429a + 800425a: 687b ldr r3, [r7, #4] + 800425c: 681a ldr r2, [r3, #0] + 800425e: 2380 movs r3, #128 ; 0x80 + 8004260: 00db lsls r3, r3, #3 + 8004262: 4013 ands r3, r2 + 8004264: d009 beq.n 800427a { assert_param(IS_RCC_LPTIM2CLKSOURCE(PeriphClkInit->Lptim2ClockSelection)); __HAL_RCC_LPTIM2_CONFIG(PeriphClkInit->Lptim2ClockSelection); - 8004286: 4b3b ldr r3, [pc, #236] ; (8004374 ) - 8004288: 6d5b ldr r3, [r3, #84] ; 0x54 - 800428a: 4a42 ldr r2, [pc, #264] ; (8004394 ) - 800428c: 4013 ands r3, r2 - 800428e: 0019 movs r1, r3 - 8004290: 687b ldr r3, [r7, #4] - 8004292: 699a ldr r2, [r3, #24] - 8004294: 4b37 ldr r3, [pc, #220] ; (8004374 ) - 8004296: 430a orrs r2, r1 - 8004298: 655a str r2, [r3, #84] ; 0x54 + 8004266: 4b3b ldr r3, [pc, #236] ; (8004354 ) + 8004268: 6d5b ldr r3, [r3, #84] ; 0x54 + 800426a: 4a42 ldr r2, [pc, #264] ; (8004374 ) + 800426c: 4013 ands r3, r2 + 800426e: 0019 movs r1, r3 + 8004270: 687b ldr r3, [r7, #4] + 8004272: 699a ldr r2, [r3, #24] + 8004274: 4b37 ldr r3, [pc, #220] ; (8004354 ) + 8004276: 430a orrs r2, r1 + 8004278: 655a str r2, [r3, #84] ; 0x54 } #endif /* RCC_CCIPR_LPTIM2SEL */ /*-------------------------- I2C1 clock source configuration ---------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) - 800429a: 687b ldr r3, [r7, #4] - 800429c: 681b ldr r3, [r3, #0] - 800429e: 2220 movs r2, #32 - 80042a0: 4013 ands r3, r2 - 80042a2: d009 beq.n 80042b8 + 800427a: 687b ldr r3, [r7, #4] + 800427c: 681b ldr r3, [r3, #0] + 800427e: 2220 movs r2, #32 + 8004280: 4013 ands r3, r2 + 8004282: d009 beq.n 8004298 { /* Check the parameters */ assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); /* Configure the I2C1 clock source */ __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); - 80042a4: 4b33 ldr r3, [pc, #204] ; (8004374 ) - 80042a6: 6d5b ldr r3, [r3, #84] ; 0x54 - 80042a8: 4a3b ldr r2, [pc, #236] ; (8004398 ) - 80042aa: 4013 ands r3, r2 - 80042ac: 0019 movs r1, r3 - 80042ae: 687b ldr r3, [r7, #4] - 80042b0: 68da ldr r2, [r3, #12] - 80042b2: 4b30 ldr r3, [pc, #192] ; (8004374 ) - 80042b4: 430a orrs r2, r1 - 80042b6: 655a str r2, [r3, #84] ; 0x54 + 8004284: 4b33 ldr r3, [pc, #204] ; (8004354 ) + 8004286: 6d5b ldr r3, [r3, #84] ; 0x54 + 8004288: 4a3b ldr r2, [pc, #236] ; (8004378 ) + 800428a: 4013 ands r3, r2 + 800428c: 0019 movs r1, r3 + 800428e: 687b ldr r3, [r7, #4] + 8004290: 68da ldr r2, [r3, #12] + 8004292: 4b30 ldr r3, [pc, #192] ; (8004354 ) + 8004294: 430a orrs r2, r1 + 8004296: 655a str r2, [r3, #84] ; 0x54 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); } } #endif /* RNG */ /*-------------------------- ADC clock source configuration ----------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) - 80042b8: 687b ldr r3, [r7, #4] - 80042ba: 681a ldr r2, [r3, #0] - 80042bc: 2380 movs r3, #128 ; 0x80 - 80042be: 01db lsls r3, r3, #7 - 80042c0: 4013 ands r3, r2 - 80042c2: d015 beq.n 80042f0 + 8004298: 687b ldr r3, [r7, #4] + 800429a: 681a ldr r2, [r3, #0] + 800429c: 2380 movs r3, #128 ; 0x80 + 800429e: 01db lsls r3, r3, #7 + 80042a0: 4013 ands r3, r2 + 80042a2: d015 beq.n 80042d0 { /* Check the parameters */ assert_param(IS_RCC_ADCCLKSOURCE(PeriphClkInit->AdcClockSelection)); /* Configure the ADC interface clock source */ __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); - 80042c4: 4b2b ldr r3, [pc, #172] ; (8004374 ) - 80042c6: 6d5b ldr r3, [r3, #84] ; 0x54 - 80042c8: 009b lsls r3, r3, #2 - 80042ca: 0899 lsrs r1, r3, #2 - 80042cc: 687b ldr r3, [r7, #4] - 80042ce: 69da ldr r2, [r3, #28] - 80042d0: 4b28 ldr r3, [pc, #160] ; (8004374 ) - 80042d2: 430a orrs r2, r1 - 80042d4: 655a str r2, [r3, #84] ; 0x54 + 80042a4: 4b2b ldr r3, [pc, #172] ; (8004354 ) + 80042a6: 6d5b ldr r3, [r3, #84] ; 0x54 + 80042a8: 009b lsls r3, r3, #2 + 80042aa: 0899 lsrs r1, r3, #2 + 80042ac: 687b ldr r3, [r7, #4] + 80042ae: 69da ldr r2, [r3, #28] + 80042b0: 4b28 ldr r3, [pc, #160] ; (8004354 ) + 80042b2: 430a orrs r2, r1 + 80042b4: 655a str r2, [r3, #84] ; 0x54 if (PeriphClkInit->AdcClockSelection == RCC_ADCCLKSOURCE_PLLADC) - 80042d6: 687b ldr r3, [r7, #4] - 80042d8: 69da ldr r2, [r3, #28] - 80042da: 2380 movs r3, #128 ; 0x80 - 80042dc: 05db lsls r3, r3, #23 - 80042de: 429a cmp r2, r3 - 80042e0: d106 bne.n 80042f0 + 80042b6: 687b ldr r3, [r7, #4] + 80042b8: 69da ldr r2, [r3, #28] + 80042ba: 2380 movs r3, #128 ; 0x80 + 80042bc: 05db lsls r3, r3, #23 + 80042be: 429a cmp r2, r3 + 80042c0: d106 bne.n 80042d0 { /* Enable PLLPCLK output */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLPCLK); - 80042e2: 4b24 ldr r3, [pc, #144] ; (8004374 ) - 80042e4: 68da ldr r2, [r3, #12] - 80042e6: 4b23 ldr r3, [pc, #140] ; (8004374 ) - 80042e8: 2180 movs r1, #128 ; 0x80 - 80042ea: 0249 lsls r1, r1, #9 - 80042ec: 430a orrs r2, r1 - 80042ee: 60da str r2, [r3, #12] + 80042c2: 4b24 ldr r3, [pc, #144] ; (8004354 ) + 80042c4: 68da ldr r2, [r3, #12] + 80042c6: 4b23 ldr r3, [pc, #140] ; (8004354 ) + 80042c8: 2180 movs r1, #128 ; 0x80 + 80042ca: 0249 lsls r1, r1, #9 + 80042cc: 430a orrs r2, r1 + 80042ce: 60da str r2, [r3, #12] } #endif /* CEC */ #if defined(RCC_CCIPR_TIM1SEL) /*-------------------------- TIM1 clock source configuration ---------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM1) == RCC_PERIPHCLK_TIM1) - 80042f0: 687b ldr r3, [r7, #4] - 80042f2: 681a ldr r2, [r3, #0] - 80042f4: 2380 movs r3, #128 ; 0x80 - 80042f6: 039b lsls r3, r3, #14 - 80042f8: 4013 ands r3, r2 - 80042fa: d016 beq.n 800432a + 80042d0: 687b ldr r3, [r7, #4] + 80042d2: 681a ldr r2, [r3, #0] + 80042d4: 2380 movs r3, #128 ; 0x80 + 80042d6: 039b lsls r3, r3, #14 + 80042d8: 4013 ands r3, r2 + 80042da: d016 beq.n 800430a { /* Check the parameters */ assert_param(IS_RCC_TIM1CLKSOURCE(PeriphClkInit->Tim1ClockSelection)); /* Configure the TIM1 clock source */ __HAL_RCC_TIM1_CONFIG(PeriphClkInit->Tim1ClockSelection); - 80042fc: 4b1d ldr r3, [pc, #116] ; (8004374 ) - 80042fe: 6d5b ldr r3, [r3, #84] ; 0x54 - 8004300: 4a26 ldr r2, [pc, #152] ; (800439c ) - 8004302: 4013 ands r3, r2 - 8004304: 0019 movs r1, r3 - 8004306: 687b ldr r3, [r7, #4] - 8004308: 6a1a ldr r2, [r3, #32] - 800430a: 4b1a ldr r3, [pc, #104] ; (8004374 ) - 800430c: 430a orrs r2, r1 - 800430e: 655a str r2, [r3, #84] ; 0x54 + 80042dc: 4b1d ldr r3, [pc, #116] ; (8004354 ) + 80042de: 6d5b ldr r3, [r3, #84] ; 0x54 + 80042e0: 4a26 ldr r2, [pc, #152] ; (800437c ) + 80042e2: 4013 ands r3, r2 + 80042e4: 0019 movs r1, r3 + 80042e6: 687b ldr r3, [r7, #4] + 80042e8: 6a1a ldr r2, [r3, #32] + 80042ea: 4b1a ldr r3, [pc, #104] ; (8004354 ) + 80042ec: 430a orrs r2, r1 + 80042ee: 655a str r2, [r3, #84] ; 0x54 if (PeriphClkInit->Tim1ClockSelection == RCC_TIM1CLKSOURCE_PLL) - 8004310: 687b ldr r3, [r7, #4] - 8004312: 6a1a ldr r2, [r3, #32] - 8004314: 2380 movs r3, #128 ; 0x80 - 8004316: 03db lsls r3, r3, #15 - 8004318: 429a cmp r2, r3 - 800431a: d106 bne.n 800432a + 80042f0: 687b ldr r3, [r7, #4] + 80042f2: 6a1a ldr r2, [r3, #32] + 80042f4: 2380 movs r3, #128 ; 0x80 + 80042f6: 03db lsls r3, r3, #15 + 80042f8: 429a cmp r2, r3 + 80042fa: d106 bne.n 800430a { /* Enable PLLQCLK output */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); - 800431c: 4b15 ldr r3, [pc, #84] ; (8004374 ) - 800431e: 68da ldr r2, [r3, #12] - 8004320: 4b14 ldr r3, [pc, #80] ; (8004374 ) - 8004322: 2180 movs r1, #128 ; 0x80 - 8004324: 0449 lsls r1, r1, #17 - 8004326: 430a orrs r2, r1 - 8004328: 60da str r2, [r3, #12] + 80042fc: 4b15 ldr r3, [pc, #84] ; (8004354 ) + 80042fe: 68da ldr r2, [r3, #12] + 8004300: 4b14 ldr r3, [pc, #80] ; (8004354 ) + 8004302: 2180 movs r1, #128 ; 0x80 + 8004304: 0449 lsls r1, r1, #17 + 8004306: 430a orrs r2, r1 + 8004308: 60da str r2, [r3, #12] } } #endif /* RCC_CCIPR_TIM15SEL */ /*-------------------------- I2S1 clock source configuration ---------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) - 800432a: 687b ldr r3, [r7, #4] - 800432c: 681a ldr r2, [r3, #0] - 800432e: 2380 movs r3, #128 ; 0x80 - 8004330: 011b lsls r3, r3, #4 - 8004332: 4013 ands r3, r2 - 8004334: d016 beq.n 8004364 + 800430a: 687b ldr r3, [r7, #4] + 800430c: 681a ldr r2, [r3, #0] + 800430e: 2380 movs r3, #128 ; 0x80 + 8004310: 011b lsls r3, r3, #4 + 8004312: 4013 ands r3, r2 + 8004314: d016 beq.n 8004344 { /* Check the parameters */ assert_param(IS_RCC_I2S1CLKSOURCE(PeriphClkInit->I2s1ClockSelection)); /* Configure the I2S1 clock source */ __HAL_RCC_I2S1_CONFIG(PeriphClkInit->I2s1ClockSelection); - 8004336: 4b0f ldr r3, [pc, #60] ; (8004374 ) - 8004338: 6d5b ldr r3, [r3, #84] ; 0x54 - 800433a: 4a19 ldr r2, [pc, #100] ; (80043a0 ) - 800433c: 4013 ands r3, r2 - 800433e: 0019 movs r1, r3 - 8004340: 687b ldr r3, [r7, #4] - 8004342: 691a ldr r2, [r3, #16] - 8004344: 4b0b ldr r3, [pc, #44] ; (8004374 ) - 8004346: 430a orrs r2, r1 - 8004348: 655a str r2, [r3, #84] ; 0x54 + 8004316: 4b0f ldr r3, [pc, #60] ; (8004354 ) + 8004318: 6d5b ldr r3, [r3, #84] ; 0x54 + 800431a: 4a19 ldr r2, [pc, #100] ; (8004380 ) + 800431c: 4013 ands r3, r2 + 800431e: 0019 movs r1, r3 + 8004320: 687b ldr r3, [r7, #4] + 8004322: 691a ldr r2, [r3, #16] + 8004324: 4b0b ldr r3, [pc, #44] ; (8004354 ) + 8004326: 430a orrs r2, r1 + 8004328: 655a str r2, [r3, #84] ; 0x54 if (PeriphClkInit->I2s1ClockSelection == RCC_I2S1CLKSOURCE_PLL) - 800434a: 687b ldr r3, [r7, #4] - 800434c: 691a ldr r2, [r3, #16] - 800434e: 2380 movs r3, #128 ; 0x80 - 8004350: 01db lsls r3, r3, #7 - 8004352: 429a cmp r2, r3 - 8004354: d106 bne.n 8004364 + 800432a: 687b ldr r3, [r7, #4] + 800432c: 691a ldr r2, [r3, #16] + 800432e: 2380 movs r3, #128 ; 0x80 + 8004330: 01db lsls r3, r3, #7 + 8004332: 429a cmp r2, r3 + 8004334: d106 bne.n 8004344 { /* Enable PLLPCLK output */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLPCLK); - 8004356: 4b07 ldr r3, [pc, #28] ; (8004374 ) - 8004358: 68da ldr r2, [r3, #12] - 800435a: 4b06 ldr r3, [pc, #24] ; (8004374 ) - 800435c: 2180 movs r1, #128 ; 0x80 - 800435e: 0249 lsls r1, r1, #9 - 8004360: 430a orrs r2, r1 - 8004362: 60da str r2, [r3, #12] + 8004336: 4b07 ldr r3, [pc, #28] ; (8004354 ) + 8004338: 68da ldr r2, [r3, #12] + 800433a: 4b06 ldr r3, [pc, #24] ; (8004354 ) + 800433c: 2180 movs r1, #128 ; 0x80 + 800433e: 0249 lsls r1, r1, #9 + 8004340: 430a orrs r2, r1 + 8004342: 60da str r2, [r3, #12] __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); } } #endif /* FDCAN1 || FDCAN2 */ return status; - 8004364: 2312 movs r3, #18 - 8004366: 18fb adds r3, r7, r3 - 8004368: 781b ldrb r3, [r3, #0] + 8004344: 2312 movs r3, #18 + 8004346: 18fb adds r3, r7, r3 + 8004348: 781b ldrb r3, [r3, #0] } - 800436a: 0018 movs r0, r3 - 800436c: 46bd mov sp, r7 - 800436e: b006 add sp, #24 - 8004370: bd80 pop {r7, pc} - 8004372: 46c0 nop ; (mov r8, r8) - 8004374: 40021000 .word 0x40021000 - 8004378: 40007000 .word 0x40007000 - 800437c: fffffcff .word 0xfffffcff - 8004380: fffeffff .word 0xfffeffff - 8004384: 00001388 .word 0x00001388 - 8004388: efffffff .word 0xefffffff - 800438c: fffff3ff .word 0xfffff3ff - 8004390: fff3ffff .word 0xfff3ffff - 8004394: ffcfffff .word 0xffcfffff - 8004398: ffffcfff .word 0xffffcfff - 800439c: ffbfffff .word 0xffbfffff - 80043a0: ffff3fff .word 0xffff3fff + 800434a: 0018 movs r0, r3 + 800434c: 46bd mov sp, r7 + 800434e: b006 add sp, #24 + 8004350: bd80 pop {r7, pc} + 8004352: 46c0 nop ; (mov r8, r8) + 8004354: 40021000 .word 0x40021000 + 8004358: 40007000 .word 0x40007000 + 800435c: fffffcff .word 0xfffffcff + 8004360: fffeffff .word 0xfffeffff + 8004364: 00001388 .word 0x00001388 + 8004368: efffffff .word 0xefffffff + 800436c: fffff3ff .word 0xfffff3ff + 8004370: fff3ffff .word 0xfff3ffff + 8004374: ffcfffff .word 0xffcfffff + 8004378: ffffcfff .word 0xffffcfff + 800437c: ffbfffff .word 0xffbfffff + 8004380: ffff3fff .word 0xffff3fff -080043a4 : +08004384 : * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() * @param htim TIM Base handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) { - 80043a4: b580 push {r7, lr} - 80043a6: b082 sub sp, #8 - 80043a8: af00 add r7, sp, #0 - 80043aa: 6078 str r0, [r7, #4] + 8004384: b580 push {r7, lr} + 8004386: b082 sub sp, #8 + 8004388: af00 add r7, sp, #0 + 800438a: 6078 str r0, [r7, #4] /* Check the TIM handle allocation */ if (htim == NULL) - 80043ac: 687b ldr r3, [r7, #4] - 80043ae: 2b00 cmp r3, #0 - 80043b0: d101 bne.n 80043b6 + 800438c: 687b ldr r3, [r7, #4] + 800438e: 2b00 cmp r3, #0 + 8004390: d101 bne.n 8004396 { return HAL_ERROR; - 80043b2: 2301 movs r3, #1 - 80043b4: e04a b.n 800444c + 8004392: 2301 movs r3, #1 + 8004394: e04a b.n 800442c assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); if (htim->State == HAL_TIM_STATE_RESET) - 80043b6: 687b ldr r3, [r7, #4] - 80043b8: 223d movs r2, #61 ; 0x3d - 80043ba: 5c9b ldrb r3, [r3, r2] - 80043bc: b2db uxtb r3, r3 - 80043be: 2b00 cmp r3, #0 - 80043c0: d107 bne.n 80043d2 + 8004396: 687b ldr r3, [r7, #4] + 8004398: 223d movs r2, #61 ; 0x3d + 800439a: 5c9b ldrb r3, [r3, r2] + 800439c: b2db uxtb r3, r3 + 800439e: 2b00 cmp r3, #0 + 80043a0: d107 bne.n 80043b2 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; - 80043c2: 687b ldr r3, [r7, #4] - 80043c4: 223c movs r2, #60 ; 0x3c - 80043c6: 2100 movs r1, #0 - 80043c8: 5499 strb r1, [r3, r2] + 80043a2: 687b ldr r3, [r7, #4] + 80043a4: 223c movs r2, #60 ; 0x3c + 80043a6: 2100 movs r1, #0 + 80043a8: 5499 strb r1, [r3, r2] } /* Init the low level hardware : GPIO, CLOCK, NVIC */ htim->Base_MspInitCallback(htim); #else /* Init the low level hardware : GPIO, CLOCK, NVIC */ HAL_TIM_Base_MspInit(htim); - 80043ca: 687b ldr r3, [r7, #4] - 80043cc: 0018 movs r0, r3 - 80043ce: f7fd fb59 bl 8001a84 + 80043aa: 687b ldr r3, [r7, #4] + 80043ac: 0018 movs r0, r3 + 80043ae: f7fd fb59 bl 8001a64 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 80043d2: 687b ldr r3, [r7, #4] - 80043d4: 223d movs r2, #61 ; 0x3d - 80043d6: 2102 movs r1, #2 - 80043d8: 5499 strb r1, [r3, r2] + 80043b2: 687b ldr r3, [r7, #4] + 80043b4: 223d movs r2, #61 ; 0x3d + 80043b6: 2102 movs r1, #2 + 80043b8: 5499 strb r1, [r3, r2] /* Set the Time Base configuration */ TIM_Base_SetConfig(htim->Instance, &htim->Init); - 80043da: 687b ldr r3, [r7, #4] - 80043dc: 681a ldr r2, [r3, #0] - 80043de: 687b ldr r3, [r7, #4] - 80043e0: 3304 adds r3, #4 - 80043e2: 0019 movs r1, r3 - 80043e4: 0010 movs r0, r2 - 80043e6: f000 fd1d bl 8004e24 + 80043ba: 687b ldr r3, [r7, #4] + 80043bc: 681a ldr r2, [r3, #0] + 80043be: 687b ldr r3, [r7, #4] + 80043c0: 3304 adds r3, #4 + 80043c2: 0019 movs r1, r3 + 80043c4: 0010 movs r0, r2 + 80043c6: f000 fd1d bl 8004e04 /* Initialize the DMA burst operation state */ htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 80043ea: 687b ldr r3, [r7, #4] - 80043ec: 2248 movs r2, #72 ; 0x48 - 80043ee: 2101 movs r1, #1 - 80043f0: 5499 strb r1, [r3, r2] + 80043ca: 687b ldr r3, [r7, #4] + 80043cc: 2248 movs r2, #72 ; 0x48 + 80043ce: 2101 movs r1, #1 + 80043d0: 5499 strb r1, [r3, r2] /* Initialize the TIM channels state */ TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 80043d2: 687b ldr r3, [r7, #4] + 80043d4: 223e movs r2, #62 ; 0x3e + 80043d6: 2101 movs r1, #1 + 80043d8: 5499 strb r1, [r3, r2] + 80043da: 687b ldr r3, [r7, #4] + 80043dc: 223f movs r2, #63 ; 0x3f + 80043de: 2101 movs r1, #1 + 80043e0: 5499 strb r1, [r3, r2] + 80043e2: 687b ldr r3, [r7, #4] + 80043e4: 2240 movs r2, #64 ; 0x40 + 80043e6: 2101 movs r1, #1 + 80043e8: 5499 strb r1, [r3, r2] + 80043ea: 687b ldr r3, [r7, #4] + 80043ec: 2241 movs r2, #65 ; 0x41 + 80043ee: 2101 movs r1, #1 + 80043f0: 5499 strb r1, [r3, r2] 80043f2: 687b ldr r3, [r7, #4] - 80043f4: 223e movs r2, #62 ; 0x3e + 80043f4: 2242 movs r2, #66 ; 0x42 80043f6: 2101 movs r1, #1 80043f8: 5499 strb r1, [r3, r2] 80043fa: 687b ldr r3, [r7, #4] - 80043fc: 223f movs r2, #63 ; 0x3f + 80043fc: 2243 movs r2, #67 ; 0x43 80043fe: 2101 movs r1, #1 8004400: 5499 strb r1, [r3, r2] + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); 8004402: 687b ldr r3, [r7, #4] - 8004404: 2240 movs r2, #64 ; 0x40 + 8004404: 2244 movs r2, #68 ; 0x44 8004406: 2101 movs r1, #1 8004408: 5499 strb r1, [r3, r2] 800440a: 687b ldr r3, [r7, #4] - 800440c: 2241 movs r2, #65 ; 0x41 + 800440c: 2245 movs r2, #69 ; 0x45 800440e: 2101 movs r1, #1 8004410: 5499 strb r1, [r3, r2] 8004412: 687b ldr r3, [r7, #4] - 8004414: 2242 movs r2, #66 ; 0x42 + 8004414: 2246 movs r2, #70 ; 0x46 8004416: 2101 movs r1, #1 8004418: 5499 strb r1, [r3, r2] 800441a: 687b ldr r3, [r7, #4] - 800441c: 2243 movs r2, #67 ; 0x43 + 800441c: 2247 movs r2, #71 ; 0x47 800441e: 2101 movs r1, #1 8004420: 5499 strb r1, [r3, r2] - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8004422: 687b ldr r3, [r7, #4] - 8004424: 2244 movs r2, #68 ; 0x44 - 8004426: 2101 movs r1, #1 - 8004428: 5499 strb r1, [r3, r2] - 800442a: 687b ldr r3, [r7, #4] - 800442c: 2245 movs r2, #69 ; 0x45 - 800442e: 2101 movs r1, #1 - 8004430: 5499 strb r1, [r3, r2] - 8004432: 687b ldr r3, [r7, #4] - 8004434: 2246 movs r2, #70 ; 0x46 - 8004436: 2101 movs r1, #1 - 8004438: 5499 strb r1, [r3, r2] - 800443a: 687b ldr r3, [r7, #4] - 800443c: 2247 movs r2, #71 ; 0x47 - 800443e: 2101 movs r1, #1 - 8004440: 5499 strb r1, [r3, r2] /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; - 8004442: 687b ldr r3, [r7, #4] - 8004444: 223d movs r2, #61 ; 0x3d - 8004446: 2101 movs r1, #1 - 8004448: 5499 strb r1, [r3, r2] + 8004422: 687b ldr r3, [r7, #4] + 8004424: 223d movs r2, #61 ; 0x3d + 8004426: 2101 movs r1, #1 + 8004428: 5499 strb r1, [r3, r2] return HAL_OK; - 800444a: 2300 movs r3, #0 + 800442a: 2300 movs r3, #0 } - 800444c: 0018 movs r0, r3 - 800444e: 46bd mov sp, r7 - 8004450: b002 add sp, #8 - 8004452: bd80 pop {r7, pc} + 800442c: 0018 movs r0, r3 + 800442e: 46bd mov sp, r7 + 8004430: b002 add sp, #8 + 8004432: bd80 pop {r7, pc} -08004454 : +08004434 : * @brief Starts the TIM Base generation in interrupt mode. * @param htim TIM Base handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim) { - 8004454: b580 push {r7, lr} - 8004456: b084 sub sp, #16 - 8004458: af00 add r7, sp, #0 - 800445a: 6078 str r0, [r7, #4] + 8004434: b580 push {r7, lr} + 8004436: b084 sub sp, #16 + 8004438: af00 add r7, sp, #0 + 800443a: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_TIM_INSTANCE(htim->Instance)); /* Check the TIM state */ if (htim->State != HAL_TIM_STATE_READY) - 800445c: 687b ldr r3, [r7, #4] - 800445e: 223d movs r2, #61 ; 0x3d - 8004460: 5c9b ldrb r3, [r3, r2] - 8004462: b2db uxtb r3, r3 - 8004464: 2b01 cmp r3, #1 - 8004466: d001 beq.n 800446c + 800443c: 687b ldr r3, [r7, #4] + 800443e: 223d movs r2, #61 ; 0x3d + 8004440: 5c9b ldrb r3, [r3, r2] + 8004442: b2db uxtb r3, r3 + 8004444: 2b01 cmp r3, #1 + 8004446: d001 beq.n 800444c { return HAL_ERROR; - 8004468: 2301 movs r3, #1 - 800446a: e03d b.n 80044e8 + 8004448: 2301 movs r3, #1 + 800444a: e03d b.n 80044c8 } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 800446c: 687b ldr r3, [r7, #4] - 800446e: 223d movs r2, #61 ; 0x3d - 8004470: 2102 movs r1, #2 - 8004472: 5499 strb r1, [r3, r2] + 800444c: 687b ldr r3, [r7, #4] + 800444e: 223d movs r2, #61 ; 0x3d + 8004450: 2102 movs r1, #2 + 8004452: 5499 strb r1, [r3, r2] /* Enable the TIM Update interrupt */ __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); - 8004474: 687b ldr r3, [r7, #4] - 8004476: 681b ldr r3, [r3, #0] - 8004478: 68da ldr r2, [r3, #12] - 800447a: 687b ldr r3, [r7, #4] - 800447c: 681b ldr r3, [r3, #0] - 800447e: 2101 movs r1, #1 - 8004480: 430a orrs r2, r1 - 8004482: 60da str r2, [r3, #12] + 8004454: 687b ldr r3, [r7, #4] + 8004456: 681b ldr r3, [r3, #0] + 8004458: 68da ldr r2, [r3, #12] + 800445a: 687b ldr r3, [r7, #4] + 800445c: 681b ldr r3, [r3, #0] + 800445e: 2101 movs r1, #1 + 8004460: 430a orrs r2, r1 + 8004462: 60da str r2, [r3, #12] /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 8004484: 687b ldr r3, [r7, #4] - 8004486: 681b ldr r3, [r3, #0] - 8004488: 4a19 ldr r2, [pc, #100] ; (80044f0 ) - 800448a: 4293 cmp r3, r2 - 800448c: d00a beq.n 80044a4 - 800448e: 687b ldr r3, [r7, #4] - 8004490: 681a ldr r2, [r3, #0] - 8004492: 2380 movs r3, #128 ; 0x80 - 8004494: 05db lsls r3, r3, #23 - 8004496: 429a cmp r2, r3 - 8004498: d004 beq.n 80044a4 - 800449a: 687b ldr r3, [r7, #4] - 800449c: 681b ldr r3, [r3, #0] - 800449e: 4a15 ldr r2, [pc, #84] ; (80044f4 ) - 80044a0: 4293 cmp r3, r2 - 80044a2: d116 bne.n 80044d2 + 8004464: 687b ldr r3, [r7, #4] + 8004466: 681b ldr r3, [r3, #0] + 8004468: 4a19 ldr r2, [pc, #100] ; (80044d0 ) + 800446a: 4293 cmp r3, r2 + 800446c: d00a beq.n 8004484 + 800446e: 687b ldr r3, [r7, #4] + 8004470: 681a ldr r2, [r3, #0] + 8004472: 2380 movs r3, #128 ; 0x80 + 8004474: 05db lsls r3, r3, #23 + 8004476: 429a cmp r2, r3 + 8004478: d004 beq.n 8004484 + 800447a: 687b ldr r3, [r7, #4] + 800447c: 681b ldr r3, [r3, #0] + 800447e: 4a15 ldr r2, [pc, #84] ; (80044d4 ) + 8004480: 4293 cmp r3, r2 + 8004482: d116 bne.n 80044b2 { tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 80044a4: 687b ldr r3, [r7, #4] - 80044a6: 681b ldr r3, [r3, #0] - 80044a8: 689b ldr r3, [r3, #8] - 80044aa: 4a13 ldr r2, [pc, #76] ; (80044f8 ) - 80044ac: 4013 ands r3, r2 - 80044ae: 60fb str r3, [r7, #12] + 8004484: 687b ldr r3, [r7, #4] + 8004486: 681b ldr r3, [r3, #0] + 8004488: 689b ldr r3, [r3, #8] + 800448a: 4a13 ldr r2, [pc, #76] ; (80044d8 ) + 800448c: 4013 ands r3, r2 + 800448e: 60fb str r3, [r7, #12] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80044b0: 68fb ldr r3, [r7, #12] - 80044b2: 2b06 cmp r3, #6 - 80044b4: d016 beq.n 80044e4 - 80044b6: 68fa ldr r2, [r7, #12] - 80044b8: 2380 movs r3, #128 ; 0x80 - 80044ba: 025b lsls r3, r3, #9 - 80044bc: 429a cmp r2, r3 - 80044be: d011 beq.n 80044e4 + 8004490: 68fb ldr r3, [r7, #12] + 8004492: 2b06 cmp r3, #6 + 8004494: d016 beq.n 80044c4 + 8004496: 68fa ldr r2, [r7, #12] + 8004498: 2380 movs r3, #128 ; 0x80 + 800449a: 025b lsls r3, r3, #9 + 800449c: 429a cmp r2, r3 + 800449e: d011 beq.n 80044c4 { __HAL_TIM_ENABLE(htim); - 80044c0: 687b ldr r3, [r7, #4] - 80044c2: 681b ldr r3, [r3, #0] - 80044c4: 681a ldr r2, [r3, #0] - 80044c6: 687b ldr r3, [r7, #4] - 80044c8: 681b ldr r3, [r3, #0] - 80044ca: 2101 movs r1, #1 - 80044cc: 430a orrs r2, r1 - 80044ce: 601a str r2, [r3, #0] + 80044a0: 687b ldr r3, [r7, #4] + 80044a2: 681b ldr r3, [r3, #0] + 80044a4: 681a ldr r2, [r3, #0] + 80044a6: 687b ldr r3, [r7, #4] + 80044a8: 681b ldr r3, [r3, #0] + 80044aa: 2101 movs r1, #1 + 80044ac: 430a orrs r2, r1 + 80044ae: 601a str r2, [r3, #0] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80044d0: e008 b.n 80044e4 + 80044b0: e008 b.n 80044c4 } } else { __HAL_TIM_ENABLE(htim); - 80044d2: 687b ldr r3, [r7, #4] - 80044d4: 681b ldr r3, [r3, #0] - 80044d6: 681a ldr r2, [r3, #0] - 80044d8: 687b ldr r3, [r7, #4] - 80044da: 681b ldr r3, [r3, #0] - 80044dc: 2101 movs r1, #1 - 80044de: 430a orrs r2, r1 - 80044e0: 601a str r2, [r3, #0] - 80044e2: e000 b.n 80044e6 + 80044b2: 687b ldr r3, [r7, #4] + 80044b4: 681b ldr r3, [r3, #0] + 80044b6: 681a ldr r2, [r3, #0] + 80044b8: 687b ldr r3, [r7, #4] + 80044ba: 681b ldr r3, [r3, #0] + 80044bc: 2101 movs r1, #1 + 80044be: 430a orrs r2, r1 + 80044c0: 601a str r2, [r3, #0] + 80044c2: e000 b.n 80044c6 if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80044e4: 46c0 nop ; (mov r8, r8) + 80044c4: 46c0 nop ; (mov r8, r8) } /* Return function status */ return HAL_OK; - 80044e6: 2300 movs r3, #0 + 80044c6: 2300 movs r3, #0 } - 80044e8: 0018 movs r0, r3 - 80044ea: 46bd mov sp, r7 - 80044ec: b004 add sp, #16 - 80044ee: bd80 pop {r7, pc} - 80044f0: 40012c00 .word 0x40012c00 - 80044f4: 40000400 .word 0x40000400 - 80044f8: 00010007 .word 0x00010007 + 80044c8: 0018 movs r0, r3 + 80044ca: 46bd mov sp, r7 + 80044cc: b004 add sp, #16 + 80044ce: bd80 pop {r7, pc} + 80044d0: 40012c00 .word 0x40012c00 + 80044d4: 40000400 .word 0x40000400 + 80044d8: 00010007 .word 0x00010007 -080044fc : +080044dc : * @brief Stops the TIM Base generation in interrupt mode. * @param htim TIM Base handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim) { - 80044fc: b580 push {r7, lr} - 80044fe: b082 sub sp, #8 - 8004500: af00 add r7, sp, #0 - 8004502: 6078 str r0, [r7, #4] + 80044dc: b580 push {r7, lr} + 80044de: b082 sub sp, #8 + 80044e0: af00 add r7, sp, #0 + 80044e2: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_TIM_INSTANCE(htim->Instance)); /* Disable the TIM Update interrupt */ __HAL_TIM_DISABLE_IT(htim, TIM_IT_UPDATE); - 8004504: 687b ldr r3, [r7, #4] - 8004506: 681b ldr r3, [r3, #0] - 8004508: 68da ldr r2, [r3, #12] - 800450a: 687b ldr r3, [r7, #4] - 800450c: 681b ldr r3, [r3, #0] - 800450e: 2101 movs r1, #1 - 8004510: 438a bics r2, r1 - 8004512: 60da str r2, [r3, #12] + 80044e4: 687b ldr r3, [r7, #4] + 80044e6: 681b ldr r3, [r3, #0] + 80044e8: 68da ldr r2, [r3, #12] + 80044ea: 687b ldr r3, [r7, #4] + 80044ec: 681b ldr r3, [r3, #0] + 80044ee: 2101 movs r1, #1 + 80044f0: 438a bics r2, r1 + 80044f2: 60da str r2, [r3, #12] /* Disable the Peripheral */ __HAL_TIM_DISABLE(htim); - 8004514: 687b ldr r3, [r7, #4] - 8004516: 681b ldr r3, [r3, #0] - 8004518: 6a1b ldr r3, [r3, #32] - 800451a: 4a0d ldr r2, [pc, #52] ; (8004550 ) - 800451c: 4013 ands r3, r2 - 800451e: d10d bne.n 800453c - 8004520: 687b ldr r3, [r7, #4] - 8004522: 681b ldr r3, [r3, #0] - 8004524: 6a1b ldr r3, [r3, #32] - 8004526: 4a0b ldr r2, [pc, #44] ; (8004554 ) - 8004528: 4013 ands r3, r2 - 800452a: d107 bne.n 800453c - 800452c: 687b ldr r3, [r7, #4] - 800452e: 681b ldr r3, [r3, #0] - 8004530: 681a ldr r2, [r3, #0] - 8004532: 687b ldr r3, [r7, #4] - 8004534: 681b ldr r3, [r3, #0] - 8004536: 2101 movs r1, #1 - 8004538: 438a bics r2, r1 - 800453a: 601a str r2, [r3, #0] + 80044f4: 687b ldr r3, [r7, #4] + 80044f6: 681b ldr r3, [r3, #0] + 80044f8: 6a1b ldr r3, [r3, #32] + 80044fa: 4a0d ldr r2, [pc, #52] ; (8004530 ) + 80044fc: 4013 ands r3, r2 + 80044fe: d10d bne.n 800451c + 8004500: 687b ldr r3, [r7, #4] + 8004502: 681b ldr r3, [r3, #0] + 8004504: 6a1b ldr r3, [r3, #32] + 8004506: 4a0b ldr r2, [pc, #44] ; (8004534 ) + 8004508: 4013 ands r3, r2 + 800450a: d107 bne.n 800451c + 800450c: 687b ldr r3, [r7, #4] + 800450e: 681b ldr r3, [r3, #0] + 8004510: 681a ldr r2, [r3, #0] + 8004512: 687b ldr r3, [r7, #4] + 8004514: 681b ldr r3, [r3, #0] + 8004516: 2101 movs r1, #1 + 8004518: 438a bics r2, r1 + 800451a: 601a str r2, [r3, #0] /* Set the TIM state */ htim->State = HAL_TIM_STATE_READY; - 800453c: 687b ldr r3, [r7, #4] - 800453e: 223d movs r2, #61 ; 0x3d - 8004540: 2101 movs r1, #1 - 8004542: 5499 strb r1, [r3, r2] + 800451c: 687b ldr r3, [r7, #4] + 800451e: 223d movs r2, #61 ; 0x3d + 8004520: 2101 movs r1, #1 + 8004522: 5499 strb r1, [r3, r2] /* Return function status */ return HAL_OK; - 8004544: 2300 movs r3, #0 + 8004524: 2300 movs r3, #0 } - 8004546: 0018 movs r0, r3 - 8004548: 46bd mov sp, r7 - 800454a: b002 add sp, #8 - 800454c: bd80 pop {r7, pc} - 800454e: 46c0 nop ; (mov r8, r8) - 8004550: 00001111 .word 0x00001111 - 8004554: 00000444 .word 0x00000444 + 8004526: 0018 movs r0, r3 + 8004528: 46bd mov sp, r7 + 800452a: b002 add sp, #8 + 800452c: bd80 pop {r7, pc} + 800452e: 46c0 nop ; (mov r8, r8) + 8004530: 00001111 .word 0x00001111 + 8004534: 00000444 .word 0x00000444 -08004558 : +08004538 : * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() * @param htim TIM PWM handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) { - 8004558: b580 push {r7, lr} - 800455a: b082 sub sp, #8 - 800455c: af00 add r7, sp, #0 - 800455e: 6078 str r0, [r7, #4] + 8004538: b580 push {r7, lr} + 800453a: b082 sub sp, #8 + 800453c: af00 add r7, sp, #0 + 800453e: 6078 str r0, [r7, #4] /* Check the TIM handle allocation */ if (htim == NULL) - 8004560: 687b ldr r3, [r7, #4] - 8004562: 2b00 cmp r3, #0 - 8004564: d101 bne.n 800456a + 8004540: 687b ldr r3, [r7, #4] + 8004542: 2b00 cmp r3, #0 + 8004544: d101 bne.n 800454a { return HAL_ERROR; - 8004566: 2301 movs r3, #1 - 8004568: e04a b.n 8004600 + 8004546: 2301 movs r3, #1 + 8004548: e04a b.n 80045e0 assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); if (htim->State == HAL_TIM_STATE_RESET) - 800456a: 687b ldr r3, [r7, #4] - 800456c: 223d movs r2, #61 ; 0x3d - 800456e: 5c9b ldrb r3, [r3, r2] - 8004570: b2db uxtb r3, r3 - 8004572: 2b00 cmp r3, #0 - 8004574: d107 bne.n 8004586 + 800454a: 687b ldr r3, [r7, #4] + 800454c: 223d movs r2, #61 ; 0x3d + 800454e: 5c9b ldrb r3, [r3, r2] + 8004550: b2db uxtb r3, r3 + 8004552: 2b00 cmp r3, #0 + 8004554: d107 bne.n 8004566 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; - 8004576: 687b ldr r3, [r7, #4] - 8004578: 223c movs r2, #60 ; 0x3c - 800457a: 2100 movs r1, #0 - 800457c: 5499 strb r1, [r3, r2] + 8004556: 687b ldr r3, [r7, #4] + 8004558: 223c movs r2, #60 ; 0x3c + 800455a: 2100 movs r1, #0 + 800455c: 5499 strb r1, [r3, r2] } /* Init the low level hardware : GPIO, CLOCK, NVIC */ htim->PWM_MspInitCallback(htim); #else /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ HAL_TIM_PWM_MspInit(htim); - 800457e: 687b ldr r3, [r7, #4] - 8004580: 0018 movs r0, r3 - 8004582: f000 f841 bl 8004608 + 800455e: 687b ldr r3, [r7, #4] + 8004560: 0018 movs r0, r3 + 8004562: f000 f841 bl 80045e8 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 8004586: 687b ldr r3, [r7, #4] - 8004588: 223d movs r2, #61 ; 0x3d - 800458a: 2102 movs r1, #2 - 800458c: 5499 strb r1, [r3, r2] + 8004566: 687b ldr r3, [r7, #4] + 8004568: 223d movs r2, #61 ; 0x3d + 800456a: 2102 movs r1, #2 + 800456c: 5499 strb r1, [r3, r2] /* Init the base time for the PWM */ TIM_Base_SetConfig(htim->Instance, &htim->Init); - 800458e: 687b ldr r3, [r7, #4] - 8004590: 681a ldr r2, [r3, #0] - 8004592: 687b ldr r3, [r7, #4] - 8004594: 3304 adds r3, #4 - 8004596: 0019 movs r1, r3 - 8004598: 0010 movs r0, r2 - 800459a: f000 fc43 bl 8004e24 + 800456e: 687b ldr r3, [r7, #4] + 8004570: 681a ldr r2, [r3, #0] + 8004572: 687b ldr r3, [r7, #4] + 8004574: 3304 adds r3, #4 + 8004576: 0019 movs r1, r3 + 8004578: 0010 movs r0, r2 + 800457a: f000 fc43 bl 8004e04 /* Initialize the DMA burst operation state */ htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 800459e: 687b ldr r3, [r7, #4] - 80045a0: 2248 movs r2, #72 ; 0x48 - 80045a2: 2101 movs r1, #1 - 80045a4: 5499 strb r1, [r3, r2] + 800457e: 687b ldr r3, [r7, #4] + 8004580: 2248 movs r2, #72 ; 0x48 + 8004582: 2101 movs r1, #1 + 8004584: 5499 strb r1, [r3, r2] /* Initialize the TIM channels state */ TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8004586: 687b ldr r3, [r7, #4] + 8004588: 223e movs r2, #62 ; 0x3e + 800458a: 2101 movs r1, #1 + 800458c: 5499 strb r1, [r3, r2] + 800458e: 687b ldr r3, [r7, #4] + 8004590: 223f movs r2, #63 ; 0x3f + 8004592: 2101 movs r1, #1 + 8004594: 5499 strb r1, [r3, r2] + 8004596: 687b ldr r3, [r7, #4] + 8004598: 2240 movs r2, #64 ; 0x40 + 800459a: 2101 movs r1, #1 + 800459c: 5499 strb r1, [r3, r2] + 800459e: 687b ldr r3, [r7, #4] + 80045a0: 2241 movs r2, #65 ; 0x41 + 80045a2: 2101 movs r1, #1 + 80045a4: 5499 strb r1, [r3, r2] 80045a6: 687b ldr r3, [r7, #4] - 80045a8: 223e movs r2, #62 ; 0x3e + 80045a8: 2242 movs r2, #66 ; 0x42 80045aa: 2101 movs r1, #1 80045ac: 5499 strb r1, [r3, r2] 80045ae: 687b ldr r3, [r7, #4] - 80045b0: 223f movs r2, #63 ; 0x3f + 80045b0: 2243 movs r2, #67 ; 0x43 80045b2: 2101 movs r1, #1 80045b4: 5499 strb r1, [r3, r2] + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); 80045b6: 687b ldr r3, [r7, #4] - 80045b8: 2240 movs r2, #64 ; 0x40 + 80045b8: 2244 movs r2, #68 ; 0x44 80045ba: 2101 movs r1, #1 80045bc: 5499 strb r1, [r3, r2] 80045be: 687b ldr r3, [r7, #4] - 80045c0: 2241 movs r2, #65 ; 0x41 + 80045c0: 2245 movs r2, #69 ; 0x45 80045c2: 2101 movs r1, #1 80045c4: 5499 strb r1, [r3, r2] 80045c6: 687b ldr r3, [r7, #4] - 80045c8: 2242 movs r2, #66 ; 0x42 + 80045c8: 2246 movs r2, #70 ; 0x46 80045ca: 2101 movs r1, #1 80045cc: 5499 strb r1, [r3, r2] 80045ce: 687b ldr r3, [r7, #4] - 80045d0: 2243 movs r2, #67 ; 0x43 + 80045d0: 2247 movs r2, #71 ; 0x47 80045d2: 2101 movs r1, #1 80045d4: 5499 strb r1, [r3, r2] - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 80045d6: 687b ldr r3, [r7, #4] - 80045d8: 2244 movs r2, #68 ; 0x44 - 80045da: 2101 movs r1, #1 - 80045dc: 5499 strb r1, [r3, r2] - 80045de: 687b ldr r3, [r7, #4] - 80045e0: 2245 movs r2, #69 ; 0x45 - 80045e2: 2101 movs r1, #1 - 80045e4: 5499 strb r1, [r3, r2] - 80045e6: 687b ldr r3, [r7, #4] - 80045e8: 2246 movs r2, #70 ; 0x46 - 80045ea: 2101 movs r1, #1 - 80045ec: 5499 strb r1, [r3, r2] - 80045ee: 687b ldr r3, [r7, #4] - 80045f0: 2247 movs r2, #71 ; 0x47 - 80045f2: 2101 movs r1, #1 - 80045f4: 5499 strb r1, [r3, r2] /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; - 80045f6: 687b ldr r3, [r7, #4] - 80045f8: 223d movs r2, #61 ; 0x3d - 80045fa: 2101 movs r1, #1 - 80045fc: 5499 strb r1, [r3, r2] + 80045d6: 687b ldr r3, [r7, #4] + 80045d8: 223d movs r2, #61 ; 0x3d + 80045da: 2101 movs r1, #1 + 80045dc: 5499 strb r1, [r3, r2] return HAL_OK; - 80045fe: 2300 movs r3, #0 + 80045de: 2300 movs r3, #0 } - 8004600: 0018 movs r0, r3 - 8004602: 46bd mov sp, r7 - 8004604: b002 add sp, #8 - 8004606: bd80 pop {r7, pc} + 80045e0: 0018 movs r0, r3 + 80045e2: 46bd mov sp, r7 + 80045e4: b002 add sp, #8 + 80045e6: bd80 pop {r7, pc} -08004608 : +080045e8 : * @brief Initializes the TIM PWM MSP. * @param htim TIM PWM handle * @retval None */ __weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) { - 8004608: b580 push {r7, lr} - 800460a: b082 sub sp, #8 - 800460c: af00 add r7, sp, #0 - 800460e: 6078 str r0, [r7, #4] + 80045e8: b580 push {r7, lr} + 80045ea: b082 sub sp, #8 + 80045ec: af00 add r7, sp, #0 + 80045ee: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_PWM_MspInit could be implemented in the user file */ } - 8004610: 46c0 nop ; (mov r8, r8) - 8004612: 46bd mov sp, r7 - 8004614: b002 add sp, #8 - 8004616: bd80 pop {r7, pc} + 80045f0: 46c0 nop ; (mov r8, r8) + 80045f2: 46bd mov sp, r7 + 80045f4: b002 add sp, #8 + 80045f6: bd80 pop {r7, pc} -08004618 : +080045f8 : * @arg TIM_CHANNEL_5: TIM Channel 5 selected * @arg TIM_CHANNEL_6: TIM Channel 6 selected * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) { - 8004618: b580 push {r7, lr} - 800461a: b084 sub sp, #16 - 800461c: af00 add r7, sp, #0 - 800461e: 6078 str r0, [r7, #4] - 8004620: 6039 str r1, [r7, #0] + 80045f8: b580 push {r7, lr} + 80045fa: b084 sub sp, #16 + 80045fc: af00 add r7, sp, #0 + 80045fe: 6078 str r0, [r7, #4] + 8004600: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); /* Check the TIM channel state */ if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) - 8004622: 683b ldr r3, [r7, #0] - 8004624: 2b00 cmp r3, #0 - 8004626: d108 bne.n 800463a - 8004628: 687b ldr r3, [r7, #4] - 800462a: 223e movs r2, #62 ; 0x3e - 800462c: 5c9b ldrb r3, [r3, r2] + 8004602: 683b ldr r3, [r7, #0] + 8004604: 2b00 cmp r3, #0 + 8004606: d108 bne.n 800461a + 8004608: 687b ldr r3, [r7, #4] + 800460a: 223e movs r2, #62 ; 0x3e + 800460c: 5c9b ldrb r3, [r3, r2] + 800460e: b2db uxtb r3, r3 + 8004610: 3b01 subs r3, #1 + 8004612: 1e5a subs r2, r3, #1 + 8004614: 4193 sbcs r3, r2 + 8004616: b2db uxtb r3, r3 + 8004618: e037 b.n 800468a + 800461a: 683b ldr r3, [r7, #0] + 800461c: 2b04 cmp r3, #4 + 800461e: d108 bne.n 8004632 + 8004620: 687b ldr r3, [r7, #4] + 8004622: 223f movs r2, #63 ; 0x3f + 8004624: 5c9b ldrb r3, [r3, r2] + 8004626: b2db uxtb r3, r3 + 8004628: 3b01 subs r3, #1 + 800462a: 1e5a subs r2, r3, #1 + 800462c: 4193 sbcs r3, r2 800462e: b2db uxtb r3, r3 - 8004630: 3b01 subs r3, #1 - 8004632: 1e5a subs r2, r3, #1 - 8004634: 4193 sbcs r3, r2 - 8004636: b2db uxtb r3, r3 - 8004638: e037 b.n 80046aa - 800463a: 683b ldr r3, [r7, #0] - 800463c: 2b04 cmp r3, #4 - 800463e: d108 bne.n 8004652 - 8004640: 687b ldr r3, [r7, #4] - 8004642: 223f movs r2, #63 ; 0x3f - 8004644: 5c9b ldrb r3, [r3, r2] + 8004630: e02b b.n 800468a + 8004632: 683b ldr r3, [r7, #0] + 8004634: 2b08 cmp r3, #8 + 8004636: d108 bne.n 800464a + 8004638: 687b ldr r3, [r7, #4] + 800463a: 2240 movs r2, #64 ; 0x40 + 800463c: 5c9b ldrb r3, [r3, r2] + 800463e: b2db uxtb r3, r3 + 8004640: 3b01 subs r3, #1 + 8004642: 1e5a subs r2, r3, #1 + 8004644: 4193 sbcs r3, r2 8004646: b2db uxtb r3, r3 - 8004648: 3b01 subs r3, #1 - 800464a: 1e5a subs r2, r3, #1 - 800464c: 4193 sbcs r3, r2 - 800464e: b2db uxtb r3, r3 - 8004650: e02b b.n 80046aa - 8004652: 683b ldr r3, [r7, #0] - 8004654: 2b08 cmp r3, #8 - 8004656: d108 bne.n 800466a - 8004658: 687b ldr r3, [r7, #4] - 800465a: 2240 movs r2, #64 ; 0x40 - 800465c: 5c9b ldrb r3, [r3, r2] + 8004648: e01f b.n 800468a + 800464a: 683b ldr r3, [r7, #0] + 800464c: 2b0c cmp r3, #12 + 800464e: d108 bne.n 8004662 + 8004650: 687b ldr r3, [r7, #4] + 8004652: 2241 movs r2, #65 ; 0x41 + 8004654: 5c9b ldrb r3, [r3, r2] + 8004656: b2db uxtb r3, r3 + 8004658: 3b01 subs r3, #1 + 800465a: 1e5a subs r2, r3, #1 + 800465c: 4193 sbcs r3, r2 800465e: b2db uxtb r3, r3 - 8004660: 3b01 subs r3, #1 - 8004662: 1e5a subs r2, r3, #1 - 8004664: 4193 sbcs r3, r2 - 8004666: b2db uxtb r3, r3 - 8004668: e01f b.n 80046aa - 800466a: 683b ldr r3, [r7, #0] - 800466c: 2b0c cmp r3, #12 - 800466e: d108 bne.n 8004682 - 8004670: 687b ldr r3, [r7, #4] - 8004672: 2241 movs r2, #65 ; 0x41 - 8004674: 5c9b ldrb r3, [r3, r2] + 8004660: e013 b.n 800468a + 8004662: 683b ldr r3, [r7, #0] + 8004664: 2b10 cmp r3, #16 + 8004666: d108 bne.n 800467a + 8004668: 687b ldr r3, [r7, #4] + 800466a: 2242 movs r2, #66 ; 0x42 + 800466c: 5c9b ldrb r3, [r3, r2] + 800466e: b2db uxtb r3, r3 + 8004670: 3b01 subs r3, #1 + 8004672: 1e5a subs r2, r3, #1 + 8004674: 4193 sbcs r3, r2 8004676: b2db uxtb r3, r3 - 8004678: 3b01 subs r3, #1 - 800467a: 1e5a subs r2, r3, #1 - 800467c: 4193 sbcs r3, r2 - 800467e: b2db uxtb r3, r3 - 8004680: e013 b.n 80046aa - 8004682: 683b ldr r3, [r7, #0] - 8004684: 2b10 cmp r3, #16 - 8004686: d108 bne.n 800469a - 8004688: 687b ldr r3, [r7, #4] - 800468a: 2242 movs r2, #66 ; 0x42 - 800468c: 5c9b ldrb r3, [r3, r2] - 800468e: b2db uxtb r3, r3 - 8004690: 3b01 subs r3, #1 - 8004692: 1e5a subs r2, r3, #1 - 8004694: 4193 sbcs r3, r2 - 8004696: b2db uxtb r3, r3 - 8004698: e007 b.n 80046aa - 800469a: 687b ldr r3, [r7, #4] - 800469c: 2243 movs r2, #67 ; 0x43 - 800469e: 5c9b ldrb r3, [r3, r2] - 80046a0: b2db uxtb r3, r3 - 80046a2: 3b01 subs r3, #1 - 80046a4: 1e5a subs r2, r3, #1 - 80046a6: 4193 sbcs r3, r2 - 80046a8: b2db uxtb r3, r3 - 80046aa: 2b00 cmp r3, #0 - 80046ac: d001 beq.n 80046b2 + 8004678: e007 b.n 800468a + 800467a: 687b ldr r3, [r7, #4] + 800467c: 2243 movs r2, #67 ; 0x43 + 800467e: 5c9b ldrb r3, [r3, r2] + 8004680: b2db uxtb r3, r3 + 8004682: 3b01 subs r3, #1 + 8004684: 1e5a subs r2, r3, #1 + 8004686: 4193 sbcs r3, r2 + 8004688: b2db uxtb r3, r3 + 800468a: 2b00 cmp r3, #0 + 800468c: d001 beq.n 8004692 { return HAL_ERROR; - 80046ae: 2301 movs r3, #1 - 80046b0: e081 b.n 80047b6 + 800468e: 2301 movs r3, #1 + 8004690: e081 b.n 8004796 } /* Set the TIM channel state */ TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 8004692: 683b ldr r3, [r7, #0] + 8004694: 2b00 cmp r3, #0 + 8004696: d104 bne.n 80046a2 + 8004698: 687b ldr r3, [r7, #4] + 800469a: 223e movs r2, #62 ; 0x3e + 800469c: 2102 movs r1, #2 + 800469e: 5499 strb r1, [r3, r2] + 80046a0: e023 b.n 80046ea + 80046a2: 683b ldr r3, [r7, #0] + 80046a4: 2b04 cmp r3, #4 + 80046a6: d104 bne.n 80046b2 + 80046a8: 687b ldr r3, [r7, #4] + 80046aa: 223f movs r2, #63 ; 0x3f + 80046ac: 2102 movs r1, #2 + 80046ae: 5499 strb r1, [r3, r2] + 80046b0: e01b b.n 80046ea 80046b2: 683b ldr r3, [r7, #0] - 80046b4: 2b00 cmp r3, #0 - 80046b6: d104 bne.n 80046c2 + 80046b4: 2b08 cmp r3, #8 + 80046b6: d104 bne.n 80046c2 80046b8: 687b ldr r3, [r7, #4] - 80046ba: 223e movs r2, #62 ; 0x3e + 80046ba: 2240 movs r2, #64 ; 0x40 80046bc: 2102 movs r1, #2 80046be: 5499 strb r1, [r3, r2] - 80046c0: e023 b.n 800470a + 80046c0: e013 b.n 80046ea 80046c2: 683b ldr r3, [r7, #0] - 80046c4: 2b04 cmp r3, #4 - 80046c6: d104 bne.n 80046d2 + 80046c4: 2b0c cmp r3, #12 + 80046c6: d104 bne.n 80046d2 80046c8: 687b ldr r3, [r7, #4] - 80046ca: 223f movs r2, #63 ; 0x3f + 80046ca: 2241 movs r2, #65 ; 0x41 80046cc: 2102 movs r1, #2 80046ce: 5499 strb r1, [r3, r2] - 80046d0: e01b b.n 800470a + 80046d0: e00b b.n 80046ea 80046d2: 683b ldr r3, [r7, #0] - 80046d4: 2b08 cmp r3, #8 - 80046d6: d104 bne.n 80046e2 + 80046d4: 2b10 cmp r3, #16 + 80046d6: d104 bne.n 80046e2 80046d8: 687b ldr r3, [r7, #4] - 80046da: 2240 movs r2, #64 ; 0x40 + 80046da: 2242 movs r2, #66 ; 0x42 80046dc: 2102 movs r1, #2 80046de: 5499 strb r1, [r3, r2] - 80046e0: e013 b.n 800470a - 80046e2: 683b ldr r3, [r7, #0] - 80046e4: 2b0c cmp r3, #12 - 80046e6: d104 bne.n 80046f2 - 80046e8: 687b ldr r3, [r7, #4] - 80046ea: 2241 movs r2, #65 ; 0x41 - 80046ec: 2102 movs r1, #2 - 80046ee: 5499 strb r1, [r3, r2] - 80046f0: e00b b.n 800470a - 80046f2: 683b ldr r3, [r7, #0] - 80046f4: 2b10 cmp r3, #16 - 80046f6: d104 bne.n 8004702 - 80046f8: 687b ldr r3, [r7, #4] - 80046fa: 2242 movs r2, #66 ; 0x42 - 80046fc: 2102 movs r1, #2 - 80046fe: 5499 strb r1, [r3, r2] - 8004700: e003 b.n 800470a - 8004702: 687b ldr r3, [r7, #4] - 8004704: 2243 movs r2, #67 ; 0x43 - 8004706: 2102 movs r1, #2 - 8004708: 5499 strb r1, [r3, r2] + 80046e0: e003 b.n 80046ea + 80046e2: 687b ldr r3, [r7, #4] + 80046e4: 2243 movs r2, #67 ; 0x43 + 80046e6: 2102 movs r1, #2 + 80046e8: 5499 strb r1, [r3, r2] /* Enable the Capture compare channel */ TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); - 800470a: 687b ldr r3, [r7, #4] - 800470c: 681b ldr r3, [r3, #0] - 800470e: 6839 ldr r1, [r7, #0] - 8004710: 2201 movs r2, #1 - 8004712: 0018 movs r0, r3 - 8004714: f000 ff34 bl 8005580 + 80046ea: 687b ldr r3, [r7, #4] + 80046ec: 681b ldr r3, [r3, #0] + 80046ee: 6839 ldr r1, [r7, #0] + 80046f0: 2201 movs r2, #1 + 80046f2: 0018 movs r0, r3 + 80046f4: f000 ff34 bl 8005560 if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) - 8004718: 687b ldr r3, [r7, #4] - 800471a: 681b ldr r3, [r3, #0] - 800471c: 4a28 ldr r2, [pc, #160] ; (80047c0 ) - 800471e: 4293 cmp r3, r2 - 8004720: d009 beq.n 8004736 - 8004722: 687b ldr r3, [r7, #4] - 8004724: 681b ldr r3, [r3, #0] - 8004726: 4a27 ldr r2, [pc, #156] ; (80047c4 ) - 8004728: 4293 cmp r3, r2 - 800472a: d004 beq.n 8004736 - 800472c: 687b ldr r3, [r7, #4] - 800472e: 681b ldr r3, [r3, #0] - 8004730: 4a25 ldr r2, [pc, #148] ; (80047c8 ) - 8004732: 4293 cmp r3, r2 - 8004734: d101 bne.n 800473a - 8004736: 2301 movs r3, #1 - 8004738: e000 b.n 800473c - 800473a: 2300 movs r3, #0 - 800473c: 2b00 cmp r3, #0 - 800473e: d008 beq.n 8004752 + 80046f8: 687b ldr r3, [r7, #4] + 80046fa: 681b ldr r3, [r3, #0] + 80046fc: 4a28 ldr r2, [pc, #160] ; (80047a0 ) + 80046fe: 4293 cmp r3, r2 + 8004700: d009 beq.n 8004716 + 8004702: 687b ldr r3, [r7, #4] + 8004704: 681b ldr r3, [r3, #0] + 8004706: 4a27 ldr r2, [pc, #156] ; (80047a4 ) + 8004708: 4293 cmp r3, r2 + 800470a: d004 beq.n 8004716 + 800470c: 687b ldr r3, [r7, #4] + 800470e: 681b ldr r3, [r3, #0] + 8004710: 4a25 ldr r2, [pc, #148] ; (80047a8 ) + 8004712: 4293 cmp r3, r2 + 8004714: d101 bne.n 800471a + 8004716: 2301 movs r3, #1 + 8004718: e000 b.n 800471c + 800471a: 2300 movs r3, #0 + 800471c: 2b00 cmp r3, #0 + 800471e: d008 beq.n 8004732 { /* Enable the main output */ __HAL_TIM_MOE_ENABLE(htim); - 8004740: 687b ldr r3, [r7, #4] - 8004742: 681b ldr r3, [r3, #0] - 8004744: 6c5a ldr r2, [r3, #68] ; 0x44 - 8004746: 687b ldr r3, [r7, #4] - 8004748: 681b ldr r3, [r3, #0] - 800474a: 2180 movs r1, #128 ; 0x80 - 800474c: 0209 lsls r1, r1, #8 - 800474e: 430a orrs r2, r1 - 8004750: 645a str r2, [r3, #68] ; 0x44 + 8004720: 687b ldr r3, [r7, #4] + 8004722: 681b ldr r3, [r3, #0] + 8004724: 6c5a ldr r2, [r3, #68] ; 0x44 + 8004726: 687b ldr r3, [r7, #4] + 8004728: 681b ldr r3, [r3, #0] + 800472a: 2180 movs r1, #128 ; 0x80 + 800472c: 0209 lsls r1, r1, #8 + 800472e: 430a orrs r2, r1 + 8004730: 645a str r2, [r3, #68] ; 0x44 } /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 8004752: 687b ldr r3, [r7, #4] - 8004754: 681b ldr r3, [r3, #0] - 8004756: 4a1a ldr r2, [pc, #104] ; (80047c0 ) - 8004758: 4293 cmp r3, r2 - 800475a: d00a beq.n 8004772 - 800475c: 687b ldr r3, [r7, #4] - 800475e: 681a ldr r2, [r3, #0] - 8004760: 2380 movs r3, #128 ; 0x80 - 8004762: 05db lsls r3, r3, #23 - 8004764: 429a cmp r2, r3 - 8004766: d004 beq.n 8004772 - 8004768: 687b ldr r3, [r7, #4] - 800476a: 681b ldr r3, [r3, #0] - 800476c: 4a17 ldr r2, [pc, #92] ; (80047cc ) - 800476e: 4293 cmp r3, r2 - 8004770: d116 bne.n 80047a0 + 8004732: 687b ldr r3, [r7, #4] + 8004734: 681b ldr r3, [r3, #0] + 8004736: 4a1a ldr r2, [pc, #104] ; (80047a0 ) + 8004738: 4293 cmp r3, r2 + 800473a: d00a beq.n 8004752 + 800473c: 687b ldr r3, [r7, #4] + 800473e: 681a ldr r2, [r3, #0] + 8004740: 2380 movs r3, #128 ; 0x80 + 8004742: 05db lsls r3, r3, #23 + 8004744: 429a cmp r2, r3 + 8004746: d004 beq.n 8004752 + 8004748: 687b ldr r3, [r7, #4] + 800474a: 681b ldr r3, [r3, #0] + 800474c: 4a17 ldr r2, [pc, #92] ; (80047ac ) + 800474e: 4293 cmp r3, r2 + 8004750: d116 bne.n 8004780 { tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 8004772: 687b ldr r3, [r7, #4] - 8004774: 681b ldr r3, [r3, #0] - 8004776: 689b ldr r3, [r3, #8] - 8004778: 4a15 ldr r2, [pc, #84] ; (80047d0 ) - 800477a: 4013 ands r3, r2 - 800477c: 60fb str r3, [r7, #12] + 8004752: 687b ldr r3, [r7, #4] + 8004754: 681b ldr r3, [r3, #0] + 8004756: 689b ldr r3, [r3, #8] + 8004758: 4a15 ldr r2, [pc, #84] ; (80047b0 ) + 800475a: 4013 ands r3, r2 + 800475c: 60fb str r3, [r7, #12] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 800477e: 68fb ldr r3, [r7, #12] - 8004780: 2b06 cmp r3, #6 - 8004782: d016 beq.n 80047b2 - 8004784: 68fa ldr r2, [r7, #12] - 8004786: 2380 movs r3, #128 ; 0x80 - 8004788: 025b lsls r3, r3, #9 - 800478a: 429a cmp r2, r3 - 800478c: d011 beq.n 80047b2 + 800475e: 68fb ldr r3, [r7, #12] + 8004760: 2b06 cmp r3, #6 + 8004762: d016 beq.n 8004792 + 8004764: 68fa ldr r2, [r7, #12] + 8004766: 2380 movs r3, #128 ; 0x80 + 8004768: 025b lsls r3, r3, #9 + 800476a: 429a cmp r2, r3 + 800476c: d011 beq.n 8004792 { __HAL_TIM_ENABLE(htim); - 800478e: 687b ldr r3, [r7, #4] - 8004790: 681b ldr r3, [r3, #0] - 8004792: 681a ldr r2, [r3, #0] - 8004794: 687b ldr r3, [r7, #4] - 8004796: 681b ldr r3, [r3, #0] - 8004798: 2101 movs r1, #1 - 800479a: 430a orrs r2, r1 - 800479c: 601a str r2, [r3, #0] + 800476e: 687b ldr r3, [r7, #4] + 8004770: 681b ldr r3, [r3, #0] + 8004772: 681a ldr r2, [r3, #0] + 8004774: 687b ldr r3, [r7, #4] + 8004776: 681b ldr r3, [r3, #0] + 8004778: 2101 movs r1, #1 + 800477a: 430a orrs r2, r1 + 800477c: 601a str r2, [r3, #0] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 800479e: e008 b.n 80047b2 + 800477e: e008 b.n 8004792 } } else { __HAL_TIM_ENABLE(htim); - 80047a0: 687b ldr r3, [r7, #4] - 80047a2: 681b ldr r3, [r3, #0] - 80047a4: 681a ldr r2, [r3, #0] - 80047a6: 687b ldr r3, [r7, #4] - 80047a8: 681b ldr r3, [r3, #0] - 80047aa: 2101 movs r1, #1 - 80047ac: 430a orrs r2, r1 - 80047ae: 601a str r2, [r3, #0] - 80047b0: e000 b.n 80047b4 + 8004780: 687b ldr r3, [r7, #4] + 8004782: 681b ldr r3, [r3, #0] + 8004784: 681a ldr r2, [r3, #0] + 8004786: 687b ldr r3, [r7, #4] + 8004788: 681b ldr r3, [r3, #0] + 800478a: 2101 movs r1, #1 + 800478c: 430a orrs r2, r1 + 800478e: 601a str r2, [r3, #0] + 8004790: e000 b.n 8004794 if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80047b2: 46c0 nop ; (mov r8, r8) + 8004792: 46c0 nop ; (mov r8, r8) } /* Return function status */ return HAL_OK; - 80047b4: 2300 movs r3, #0 + 8004794: 2300 movs r3, #0 } - 80047b6: 0018 movs r0, r3 - 80047b8: 46bd mov sp, r7 - 80047ba: b004 add sp, #16 - 80047bc: bd80 pop {r7, pc} - 80047be: 46c0 nop ; (mov r8, r8) - 80047c0: 40012c00 .word 0x40012c00 - 80047c4: 40014400 .word 0x40014400 - 80047c8: 40014800 .word 0x40014800 - 80047cc: 40000400 .word 0x40000400 - 80047d0: 00010007 .word 0x00010007 + 8004796: 0018 movs r0, r3 + 8004798: 46bd mov sp, r7 + 800479a: b004 add sp, #16 + 800479c: bd80 pop {r7, pc} + 800479e: 46c0 nop ; (mov r8, r8) + 80047a0: 40012c00 .word 0x40012c00 + 80047a4: 40014400 .word 0x40014400 + 80047a8: 40014800 .word 0x40014800 + 80047ac: 40000400 .word 0x40000400 + 80047b0: 00010007 .word 0x00010007 -080047d4 : +080047b4 : * @brief This function handles TIM interrupts requests. * @param htim TIM handle * @retval None */ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) { - 80047d4: b580 push {r7, lr} - 80047d6: b082 sub sp, #8 - 80047d8: af00 add r7, sp, #0 - 80047da: 6078 str r0, [r7, #4] + 80047b4: b580 push {r7, lr} + 80047b6: b082 sub sp, #8 + 80047b8: af00 add r7, sp, #0 + 80047ba: 6078 str r0, [r7, #4] /* Capture compare 1 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET) - 80047dc: 687b ldr r3, [r7, #4] - 80047de: 681b ldr r3, [r3, #0] - 80047e0: 691b ldr r3, [r3, #16] - 80047e2: 2202 movs r2, #2 - 80047e4: 4013 ands r3, r2 - 80047e6: 2b02 cmp r3, #2 - 80047e8: d124 bne.n 8004834 + 80047bc: 687b ldr r3, [r7, #4] + 80047be: 681b ldr r3, [r3, #0] + 80047c0: 691b ldr r3, [r3, #16] + 80047c2: 2202 movs r2, #2 + 80047c4: 4013 ands r3, r2 + 80047c6: 2b02 cmp r3, #2 + 80047c8: d124 bne.n 8004814 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET) - 80047ea: 687b ldr r3, [r7, #4] - 80047ec: 681b ldr r3, [r3, #0] - 80047ee: 68db ldr r3, [r3, #12] - 80047f0: 2202 movs r2, #2 - 80047f2: 4013 ands r3, r2 - 80047f4: 2b02 cmp r3, #2 - 80047f6: d11d bne.n 8004834 + 80047ca: 687b ldr r3, [r7, #4] + 80047cc: 681b ldr r3, [r3, #0] + 80047ce: 68db ldr r3, [r3, #12] + 80047d0: 2202 movs r2, #2 + 80047d2: 4013 ands r3, r2 + 80047d4: 2b02 cmp r3, #2 + 80047d6: d11d bne.n 8004814 { { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1); - 80047f8: 687b ldr r3, [r7, #4] - 80047fa: 681b ldr r3, [r3, #0] - 80047fc: 2203 movs r2, #3 - 80047fe: 4252 negs r2, r2 - 8004800: 611a str r2, [r3, #16] + 80047d8: 687b ldr r3, [r7, #4] + 80047da: 681b ldr r3, [r3, #0] + 80047dc: 2203 movs r2, #3 + 80047de: 4252 negs r2, r2 + 80047e0: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; - 8004802: 687b ldr r3, [r7, #4] - 8004804: 2201 movs r2, #1 - 8004806: 771a strb r2, [r3, #28] + 80047e2: 687b ldr r3, [r7, #4] + 80047e4: 2201 movs r2, #1 + 80047e6: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) - 8004808: 687b ldr r3, [r7, #4] - 800480a: 681b ldr r3, [r3, #0] - 800480c: 699b ldr r3, [r3, #24] - 800480e: 2203 movs r2, #3 - 8004810: 4013 ands r3, r2 - 8004812: d004 beq.n 800481e + 80047e8: 687b ldr r3, [r7, #4] + 80047ea: 681b ldr r3, [r3, #0] + 80047ec: 699b ldr r3, [r3, #24] + 80047ee: 2203 movs r2, #3 + 80047f0: 4013 ands r3, r2 + 80047f2: d004 beq.n 80047fe { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8004814: 687b ldr r3, [r7, #4] - 8004816: 0018 movs r0, r3 - 8004818: f000 faec bl 8004df4 - 800481c: e007 b.n 800482e + 80047f4: 687b ldr r3, [r7, #4] + 80047f6: 0018 movs r0, r3 + 80047f8: f000 faec bl 8004dd4 + 80047fc: e007 b.n 800480e { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 800481e: 687b ldr r3, [r7, #4] - 8004820: 0018 movs r0, r3 - 8004822: f000 fadf bl 8004de4 + 80047fe: 687b ldr r3, [r7, #4] + 8004800: 0018 movs r0, r3 + 8004802: f000 fadf bl 8004dc4 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8004826: 687b ldr r3, [r7, #4] - 8004828: 0018 movs r0, r3 - 800482a: f000 faeb bl 8004e04 + 8004806: 687b ldr r3, [r7, #4] + 8004808: 0018 movs r0, r3 + 800480a: f000 faeb bl 8004de4 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 800482e: 687b ldr r3, [r7, #4] - 8004830: 2200 movs r2, #0 - 8004832: 771a strb r2, [r3, #28] + 800480e: 687b ldr r3, [r7, #4] + 8004810: 2200 movs r2, #0 + 8004812: 771a strb r2, [r3, #28] } } } /* Capture compare 2 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) - 8004834: 687b ldr r3, [r7, #4] - 8004836: 681b ldr r3, [r3, #0] - 8004838: 691b ldr r3, [r3, #16] - 800483a: 2204 movs r2, #4 - 800483c: 4013 ands r3, r2 - 800483e: 2b04 cmp r3, #4 - 8004840: d125 bne.n 800488e + 8004814: 687b ldr r3, [r7, #4] + 8004816: 681b ldr r3, [r3, #0] + 8004818: 691b ldr r3, [r3, #16] + 800481a: 2204 movs r2, #4 + 800481c: 4013 ands r3, r2 + 800481e: 2b04 cmp r3, #4 + 8004820: d125 bne.n 800486e { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET) - 8004842: 687b ldr r3, [r7, #4] - 8004844: 681b ldr r3, [r3, #0] - 8004846: 68db ldr r3, [r3, #12] - 8004848: 2204 movs r2, #4 - 800484a: 4013 ands r3, r2 - 800484c: 2b04 cmp r3, #4 - 800484e: d11e bne.n 800488e + 8004822: 687b ldr r3, [r7, #4] + 8004824: 681b ldr r3, [r3, #0] + 8004826: 68db ldr r3, [r3, #12] + 8004828: 2204 movs r2, #4 + 800482a: 4013 ands r3, r2 + 800482c: 2b04 cmp r3, #4 + 800482e: d11e bne.n 800486e { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2); - 8004850: 687b ldr r3, [r7, #4] - 8004852: 681b ldr r3, [r3, #0] - 8004854: 2205 movs r2, #5 - 8004856: 4252 negs r2, r2 - 8004858: 611a str r2, [r3, #16] + 8004830: 687b ldr r3, [r7, #4] + 8004832: 681b ldr r3, [r3, #0] + 8004834: 2205 movs r2, #5 + 8004836: 4252 negs r2, r2 + 8004838: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; - 800485a: 687b ldr r3, [r7, #4] - 800485c: 2202 movs r2, #2 - 800485e: 771a strb r2, [r3, #28] + 800483a: 687b ldr r3, [r7, #4] + 800483c: 2202 movs r2, #2 + 800483e: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) - 8004860: 687b ldr r3, [r7, #4] - 8004862: 681b ldr r3, [r3, #0] - 8004864: 699a ldr r2, [r3, #24] - 8004866: 23c0 movs r3, #192 ; 0xc0 - 8004868: 009b lsls r3, r3, #2 - 800486a: 4013 ands r3, r2 - 800486c: d004 beq.n 8004878 + 8004840: 687b ldr r3, [r7, #4] + 8004842: 681b ldr r3, [r3, #0] + 8004844: 699a ldr r2, [r3, #24] + 8004846: 23c0 movs r3, #192 ; 0xc0 + 8004848: 009b lsls r3, r3, #2 + 800484a: 4013 ands r3, r2 + 800484c: d004 beq.n 8004858 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 800486e: 687b ldr r3, [r7, #4] - 8004870: 0018 movs r0, r3 - 8004872: f000 fabf bl 8004df4 - 8004876: e007 b.n 8004888 + 800484e: 687b ldr r3, [r7, #4] + 8004850: 0018 movs r0, r3 + 8004852: f000 fabf bl 8004dd4 + 8004856: e007 b.n 8004868 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8004878: 687b ldr r3, [r7, #4] - 800487a: 0018 movs r0, r3 - 800487c: f000 fab2 bl 8004de4 + 8004858: 687b ldr r3, [r7, #4] + 800485a: 0018 movs r0, r3 + 800485c: f000 fab2 bl 8004dc4 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8004880: 687b ldr r3, [r7, #4] - 8004882: 0018 movs r0, r3 - 8004884: f000 fabe bl 8004e04 + 8004860: 687b ldr r3, [r7, #4] + 8004862: 0018 movs r0, r3 + 8004864: f000 fabe bl 8004de4 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8004888: 687b ldr r3, [r7, #4] - 800488a: 2200 movs r2, #0 - 800488c: 771a strb r2, [r3, #28] + 8004868: 687b ldr r3, [r7, #4] + 800486a: 2200 movs r2, #0 + 800486c: 771a strb r2, [r3, #28] } } /* Capture compare 3 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET) - 800488e: 687b ldr r3, [r7, #4] - 8004890: 681b ldr r3, [r3, #0] - 8004892: 691b ldr r3, [r3, #16] - 8004894: 2208 movs r2, #8 - 8004896: 4013 ands r3, r2 - 8004898: 2b08 cmp r3, #8 - 800489a: d124 bne.n 80048e6 + 800486e: 687b ldr r3, [r7, #4] + 8004870: 681b ldr r3, [r3, #0] + 8004872: 691b ldr r3, [r3, #16] + 8004874: 2208 movs r2, #8 + 8004876: 4013 ands r3, r2 + 8004878: 2b08 cmp r3, #8 + 800487a: d124 bne.n 80048c6 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET) - 800489c: 687b ldr r3, [r7, #4] - 800489e: 681b ldr r3, [r3, #0] - 80048a0: 68db ldr r3, [r3, #12] - 80048a2: 2208 movs r2, #8 - 80048a4: 4013 ands r3, r2 - 80048a6: 2b08 cmp r3, #8 - 80048a8: d11d bne.n 80048e6 + 800487c: 687b ldr r3, [r7, #4] + 800487e: 681b ldr r3, [r3, #0] + 8004880: 68db ldr r3, [r3, #12] + 8004882: 2208 movs r2, #8 + 8004884: 4013 ands r3, r2 + 8004886: 2b08 cmp r3, #8 + 8004888: d11d bne.n 80048c6 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3); - 80048aa: 687b ldr r3, [r7, #4] - 80048ac: 681b ldr r3, [r3, #0] - 80048ae: 2209 movs r2, #9 - 80048b0: 4252 negs r2, r2 - 80048b2: 611a str r2, [r3, #16] + 800488a: 687b ldr r3, [r7, #4] + 800488c: 681b ldr r3, [r3, #0] + 800488e: 2209 movs r2, #9 + 8004890: 4252 negs r2, r2 + 8004892: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; - 80048b4: 687b ldr r3, [r7, #4] - 80048b6: 2204 movs r2, #4 - 80048b8: 771a strb r2, [r3, #28] + 8004894: 687b ldr r3, [r7, #4] + 8004896: 2204 movs r2, #4 + 8004898: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) - 80048ba: 687b ldr r3, [r7, #4] - 80048bc: 681b ldr r3, [r3, #0] - 80048be: 69db ldr r3, [r3, #28] - 80048c0: 2203 movs r2, #3 - 80048c2: 4013 ands r3, r2 - 80048c4: d004 beq.n 80048d0 + 800489a: 687b ldr r3, [r7, #4] + 800489c: 681b ldr r3, [r3, #0] + 800489e: 69db ldr r3, [r3, #28] + 80048a0: 2203 movs r2, #3 + 80048a2: 4013 ands r3, r2 + 80048a4: d004 beq.n 80048b0 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 80048c6: 687b ldr r3, [r7, #4] - 80048c8: 0018 movs r0, r3 - 80048ca: f000 fa93 bl 8004df4 - 80048ce: e007 b.n 80048e0 + 80048a6: 687b ldr r3, [r7, #4] + 80048a8: 0018 movs r0, r3 + 80048aa: f000 fa93 bl 8004dd4 + 80048ae: e007 b.n 80048c0 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 80048d0: 687b ldr r3, [r7, #4] - 80048d2: 0018 movs r0, r3 - 80048d4: f000 fa86 bl 8004de4 + 80048b0: 687b ldr r3, [r7, #4] + 80048b2: 0018 movs r0, r3 + 80048b4: f000 fa86 bl 8004dc4 HAL_TIM_PWM_PulseFinishedCallback(htim); - 80048d8: 687b ldr r3, [r7, #4] - 80048da: 0018 movs r0, r3 - 80048dc: f000 fa92 bl 8004e04 + 80048b8: 687b ldr r3, [r7, #4] + 80048ba: 0018 movs r0, r3 + 80048bc: f000 fa92 bl 8004de4 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 80048e0: 687b ldr r3, [r7, #4] - 80048e2: 2200 movs r2, #0 - 80048e4: 771a strb r2, [r3, #28] + 80048c0: 687b ldr r3, [r7, #4] + 80048c2: 2200 movs r2, #0 + 80048c4: 771a strb r2, [r3, #28] } } /* Capture compare 4 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET) - 80048e6: 687b ldr r3, [r7, #4] - 80048e8: 681b ldr r3, [r3, #0] - 80048ea: 691b ldr r3, [r3, #16] - 80048ec: 2210 movs r2, #16 - 80048ee: 4013 ands r3, r2 - 80048f0: 2b10 cmp r3, #16 - 80048f2: d125 bne.n 8004940 + 80048c6: 687b ldr r3, [r7, #4] + 80048c8: 681b ldr r3, [r3, #0] + 80048ca: 691b ldr r3, [r3, #16] + 80048cc: 2210 movs r2, #16 + 80048ce: 4013 ands r3, r2 + 80048d0: 2b10 cmp r3, #16 + 80048d2: d125 bne.n 8004920 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET) - 80048f4: 687b ldr r3, [r7, #4] - 80048f6: 681b ldr r3, [r3, #0] - 80048f8: 68db ldr r3, [r3, #12] - 80048fa: 2210 movs r2, #16 - 80048fc: 4013 ands r3, r2 - 80048fe: 2b10 cmp r3, #16 - 8004900: d11e bne.n 8004940 + 80048d4: 687b ldr r3, [r7, #4] + 80048d6: 681b ldr r3, [r3, #0] + 80048d8: 68db ldr r3, [r3, #12] + 80048da: 2210 movs r2, #16 + 80048dc: 4013 ands r3, r2 + 80048de: 2b10 cmp r3, #16 + 80048e0: d11e bne.n 8004920 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4); - 8004902: 687b ldr r3, [r7, #4] - 8004904: 681b ldr r3, [r3, #0] - 8004906: 2211 movs r2, #17 - 8004908: 4252 negs r2, r2 - 800490a: 611a str r2, [r3, #16] + 80048e2: 687b ldr r3, [r7, #4] + 80048e4: 681b ldr r3, [r3, #0] + 80048e6: 2211 movs r2, #17 + 80048e8: 4252 negs r2, r2 + 80048ea: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; - 800490c: 687b ldr r3, [r7, #4] - 800490e: 2208 movs r2, #8 - 8004910: 771a strb r2, [r3, #28] + 80048ec: 687b ldr r3, [r7, #4] + 80048ee: 2208 movs r2, #8 + 80048f0: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) - 8004912: 687b ldr r3, [r7, #4] - 8004914: 681b ldr r3, [r3, #0] - 8004916: 69da ldr r2, [r3, #28] - 8004918: 23c0 movs r3, #192 ; 0xc0 - 800491a: 009b lsls r3, r3, #2 - 800491c: 4013 ands r3, r2 - 800491e: d004 beq.n 800492a + 80048f2: 687b ldr r3, [r7, #4] + 80048f4: 681b ldr r3, [r3, #0] + 80048f6: 69da ldr r2, [r3, #28] + 80048f8: 23c0 movs r3, #192 ; 0xc0 + 80048fa: 009b lsls r3, r3, #2 + 80048fc: 4013 ands r3, r2 + 80048fe: d004 beq.n 800490a { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8004920: 687b ldr r3, [r7, #4] - 8004922: 0018 movs r0, r3 - 8004924: f000 fa66 bl 8004df4 - 8004928: e007 b.n 800493a + 8004900: 687b ldr r3, [r7, #4] + 8004902: 0018 movs r0, r3 + 8004904: f000 fa66 bl 8004dd4 + 8004908: e007 b.n 800491a { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 800492a: 687b ldr r3, [r7, #4] - 800492c: 0018 movs r0, r3 - 800492e: f000 fa59 bl 8004de4 + 800490a: 687b ldr r3, [r7, #4] + 800490c: 0018 movs r0, r3 + 800490e: f000 fa59 bl 8004dc4 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8004932: 687b ldr r3, [r7, #4] - 8004934: 0018 movs r0, r3 - 8004936: f000 fa65 bl 8004e04 + 8004912: 687b ldr r3, [r7, #4] + 8004914: 0018 movs r0, r3 + 8004916: f000 fa65 bl 8004de4 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 800493a: 687b ldr r3, [r7, #4] - 800493c: 2200 movs r2, #0 - 800493e: 771a strb r2, [r3, #28] + 800491a: 687b ldr r3, [r7, #4] + 800491c: 2200 movs r2, #0 + 800491e: 771a strb r2, [r3, #28] } } /* TIM Update event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET) - 8004940: 687b ldr r3, [r7, #4] - 8004942: 681b ldr r3, [r3, #0] - 8004944: 691b ldr r3, [r3, #16] - 8004946: 2201 movs r2, #1 - 8004948: 4013 ands r3, r2 - 800494a: 2b01 cmp r3, #1 - 800494c: d10f bne.n 800496e + 8004920: 687b ldr r3, [r7, #4] + 8004922: 681b ldr r3, [r3, #0] + 8004924: 691b ldr r3, [r3, #16] + 8004926: 2201 movs r2, #1 + 8004928: 4013 ands r3, r2 + 800492a: 2b01 cmp r3, #1 + 800492c: d10f bne.n 800494e { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET) - 800494e: 687b ldr r3, [r7, #4] - 8004950: 681b ldr r3, [r3, #0] - 8004952: 68db ldr r3, [r3, #12] - 8004954: 2201 movs r2, #1 - 8004956: 4013 ands r3, r2 - 8004958: 2b01 cmp r3, #1 - 800495a: d108 bne.n 800496e + 800492e: 687b ldr r3, [r7, #4] + 8004930: 681b ldr r3, [r3, #0] + 8004932: 68db ldr r3, [r3, #12] + 8004934: 2201 movs r2, #1 + 8004936: 4013 ands r3, r2 + 8004938: 2b01 cmp r3, #1 + 800493a: d108 bne.n 800494e { __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); - 800495c: 687b ldr r3, [r7, #4] - 800495e: 681b ldr r3, [r3, #0] - 8004960: 2202 movs r2, #2 - 8004962: 4252 negs r2, r2 - 8004964: 611a str r2, [r3, #16] + 800493c: 687b ldr r3, [r7, #4] + 800493e: 681b ldr r3, [r3, #0] + 8004940: 2202 movs r2, #2 + 8004942: 4252 negs r2, r2 + 8004944: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->PeriodElapsedCallback(htim); #else HAL_TIM_PeriodElapsedCallback(htim); - 8004966: 687b ldr r3, [r7, #4] - 8004968: 0018 movs r0, r3 - 800496a: f7fc ff8f bl 800188c + 8004946: 687b ldr r3, [r7, #4] + 8004948: 0018 movs r0, r3 + 800494a: f7fc ff8f bl 800186c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Break input event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET) - 800496e: 687b ldr r3, [r7, #4] - 8004970: 681b ldr r3, [r3, #0] - 8004972: 691b ldr r3, [r3, #16] - 8004974: 2280 movs r2, #128 ; 0x80 - 8004976: 4013 ands r3, r2 - 8004978: 2b80 cmp r3, #128 ; 0x80 - 800497a: d10f bne.n 800499c + 800494e: 687b ldr r3, [r7, #4] + 8004950: 681b ldr r3, [r3, #0] + 8004952: 691b ldr r3, [r3, #16] + 8004954: 2280 movs r2, #128 ; 0x80 + 8004956: 4013 ands r3, r2 + 8004958: 2b80 cmp r3, #128 ; 0x80 + 800495a: d10f bne.n 800497c { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET) - 800497c: 687b ldr r3, [r7, #4] - 800497e: 681b ldr r3, [r3, #0] - 8004980: 68db ldr r3, [r3, #12] - 8004982: 2280 movs r2, #128 ; 0x80 - 8004984: 4013 ands r3, r2 - 8004986: 2b80 cmp r3, #128 ; 0x80 - 8004988: d108 bne.n 800499c + 800495c: 687b ldr r3, [r7, #4] + 800495e: 681b ldr r3, [r3, #0] + 8004960: 68db ldr r3, [r3, #12] + 8004962: 2280 movs r2, #128 ; 0x80 + 8004964: 4013 ands r3, r2 + 8004966: 2b80 cmp r3, #128 ; 0x80 + 8004968: d108 bne.n 800497c { __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK); - 800498a: 687b ldr r3, [r7, #4] - 800498c: 681b ldr r3, [r3, #0] - 800498e: 2281 movs r2, #129 ; 0x81 - 8004990: 4252 negs r2, r2 - 8004992: 611a str r2, [r3, #16] + 800496a: 687b ldr r3, [r7, #4] + 800496c: 681b ldr r3, [r3, #0] + 800496e: 2281 movs r2, #129 ; 0x81 + 8004970: 4252 negs r2, r2 + 8004972: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->BreakCallback(htim); #else HAL_TIMEx_BreakCallback(htim); - 8004994: 687b ldr r3, [r7, #4] - 8004996: 0018 movs r0, r3 - 8004998: f000 fe86 bl 80056a8 + 8004974: 687b ldr r3, [r7, #4] + 8004976: 0018 movs r0, r3 + 8004978: f000 fe86 bl 8005688 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Break2 input event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK2) != RESET) - 800499c: 687b ldr r3, [r7, #4] - 800499e: 681b ldr r3, [r3, #0] - 80049a0: 691a ldr r2, [r3, #16] - 80049a2: 2380 movs r3, #128 ; 0x80 - 80049a4: 005b lsls r3, r3, #1 - 80049a6: 401a ands r2, r3 - 80049a8: 2380 movs r3, #128 ; 0x80 - 80049aa: 005b lsls r3, r3, #1 - 80049ac: 429a cmp r2, r3 - 80049ae: d10e bne.n 80049ce + 800497c: 687b ldr r3, [r7, #4] + 800497e: 681b ldr r3, [r3, #0] + 8004980: 691a ldr r2, [r3, #16] + 8004982: 2380 movs r3, #128 ; 0x80 + 8004984: 005b lsls r3, r3, #1 + 8004986: 401a ands r2, r3 + 8004988: 2380 movs r3, #128 ; 0x80 + 800498a: 005b lsls r3, r3, #1 + 800498c: 429a cmp r2, r3 + 800498e: d10e bne.n 80049ae { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET) - 80049b0: 687b ldr r3, [r7, #4] - 80049b2: 681b ldr r3, [r3, #0] - 80049b4: 68db ldr r3, [r3, #12] - 80049b6: 2280 movs r2, #128 ; 0x80 - 80049b8: 4013 ands r3, r2 - 80049ba: 2b80 cmp r3, #128 ; 0x80 - 80049bc: d107 bne.n 80049ce + 8004990: 687b ldr r3, [r7, #4] + 8004992: 681b ldr r3, [r3, #0] + 8004994: 68db ldr r3, [r3, #12] + 8004996: 2280 movs r2, #128 ; 0x80 + 8004998: 4013 ands r3, r2 + 800499a: 2b80 cmp r3, #128 ; 0x80 + 800499c: d107 bne.n 80049ae { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK2); - 80049be: 687b ldr r3, [r7, #4] - 80049c0: 681b ldr r3, [r3, #0] - 80049c2: 4a1c ldr r2, [pc, #112] ; (8004a34 ) - 80049c4: 611a str r2, [r3, #16] + 800499e: 687b ldr r3, [r7, #4] + 80049a0: 681b ldr r3, [r3, #0] + 80049a2: 4a1c ldr r2, [pc, #112] ; (8004a14 ) + 80049a4: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->Break2Callback(htim); #else HAL_TIMEx_Break2Callback(htim); - 80049c6: 687b ldr r3, [r7, #4] - 80049c8: 0018 movs r0, r3 - 80049ca: f000 fe75 bl 80056b8 + 80049a6: 687b ldr r3, [r7, #4] + 80049a8: 0018 movs r0, r3 + 80049aa: f000 fe75 bl 8005698 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Trigger detection event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET) - 80049ce: 687b ldr r3, [r7, #4] - 80049d0: 681b ldr r3, [r3, #0] - 80049d2: 691b ldr r3, [r3, #16] - 80049d4: 2240 movs r2, #64 ; 0x40 - 80049d6: 4013 ands r3, r2 - 80049d8: 2b40 cmp r3, #64 ; 0x40 - 80049da: d10f bne.n 80049fc + 80049ae: 687b ldr r3, [r7, #4] + 80049b0: 681b ldr r3, [r3, #0] + 80049b2: 691b ldr r3, [r3, #16] + 80049b4: 2240 movs r2, #64 ; 0x40 + 80049b6: 4013 ands r3, r2 + 80049b8: 2b40 cmp r3, #64 ; 0x40 + 80049ba: d10f bne.n 80049dc { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET) - 80049dc: 687b ldr r3, [r7, #4] - 80049de: 681b ldr r3, [r3, #0] - 80049e0: 68db ldr r3, [r3, #12] - 80049e2: 2240 movs r2, #64 ; 0x40 - 80049e4: 4013 ands r3, r2 - 80049e6: 2b40 cmp r3, #64 ; 0x40 - 80049e8: d108 bne.n 80049fc + 80049bc: 687b ldr r3, [r7, #4] + 80049be: 681b ldr r3, [r3, #0] + 80049c0: 68db ldr r3, [r3, #12] + 80049c2: 2240 movs r2, #64 ; 0x40 + 80049c4: 4013 ands r3, r2 + 80049c6: 2b40 cmp r3, #64 ; 0x40 + 80049c8: d108 bne.n 80049dc { __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER); - 80049ea: 687b ldr r3, [r7, #4] - 80049ec: 681b ldr r3, [r3, #0] - 80049ee: 2241 movs r2, #65 ; 0x41 - 80049f0: 4252 negs r2, r2 - 80049f2: 611a str r2, [r3, #16] + 80049ca: 687b ldr r3, [r7, #4] + 80049cc: 681b ldr r3, [r3, #0] + 80049ce: 2241 movs r2, #65 ; 0x41 + 80049d0: 4252 negs r2, r2 + 80049d2: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->TriggerCallback(htim); #else HAL_TIM_TriggerCallback(htim); - 80049f4: 687b ldr r3, [r7, #4] - 80049f6: 0018 movs r0, r3 - 80049f8: f000 fa0c bl 8004e14 + 80049d4: 687b ldr r3, [r7, #4] + 80049d6: 0018 movs r0, r3 + 80049d8: f000 fa0c bl 8004df4 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM commutation event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET) - 80049fc: 687b ldr r3, [r7, #4] - 80049fe: 681b ldr r3, [r3, #0] - 8004a00: 691b ldr r3, [r3, #16] - 8004a02: 2220 movs r2, #32 - 8004a04: 4013 ands r3, r2 - 8004a06: 2b20 cmp r3, #32 - 8004a08: d10f bne.n 8004a2a + 80049dc: 687b ldr r3, [r7, #4] + 80049de: 681b ldr r3, [r3, #0] + 80049e0: 691b ldr r3, [r3, #16] + 80049e2: 2220 movs r2, #32 + 80049e4: 4013 ands r3, r2 + 80049e6: 2b20 cmp r3, #32 + 80049e8: d10f bne.n 8004a0a { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET) - 8004a0a: 687b ldr r3, [r7, #4] - 8004a0c: 681b ldr r3, [r3, #0] - 8004a0e: 68db ldr r3, [r3, #12] - 8004a10: 2220 movs r2, #32 - 8004a12: 4013 ands r3, r2 - 8004a14: 2b20 cmp r3, #32 - 8004a16: d108 bne.n 8004a2a + 80049ea: 687b ldr r3, [r7, #4] + 80049ec: 681b ldr r3, [r3, #0] + 80049ee: 68db ldr r3, [r3, #12] + 80049f0: 2220 movs r2, #32 + 80049f2: 4013 ands r3, r2 + 80049f4: 2b20 cmp r3, #32 + 80049f6: d108 bne.n 8004a0a { __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM); - 8004a18: 687b ldr r3, [r7, #4] - 8004a1a: 681b ldr r3, [r3, #0] - 8004a1c: 2221 movs r2, #33 ; 0x21 - 8004a1e: 4252 negs r2, r2 - 8004a20: 611a str r2, [r3, #16] + 80049f8: 687b ldr r3, [r7, #4] + 80049fa: 681b ldr r3, [r3, #0] + 80049fc: 2221 movs r2, #33 ; 0x21 + 80049fe: 4252 negs r2, r2 + 8004a00: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->CommutationCallback(htim); #else HAL_TIMEx_CommutCallback(htim); - 8004a22: 687b ldr r3, [r7, #4] - 8004a24: 0018 movs r0, r3 - 8004a26: f000 fe37 bl 8005698 + 8004a02: 687b ldr r3, [r7, #4] + 8004a04: 0018 movs r0, r3 + 8004a06: f000 fe37 bl 8005678 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } } - 8004a2a: 46c0 nop ; (mov r8, r8) - 8004a2c: 46bd mov sp, r7 - 8004a2e: b002 add sp, #8 - 8004a30: bd80 pop {r7, pc} - 8004a32: 46c0 nop ; (mov r8, r8) - 8004a34: fffffeff .word 0xfffffeff + 8004a0a: 46c0 nop ; (mov r8, r8) + 8004a0c: 46bd mov sp, r7 + 8004a0e: b002 add sp, #8 + 8004a10: bd80 pop {r7, pc} + 8004a12: 46c0 nop ; (mov r8, r8) + 8004a14: fffffeff .word 0xfffffeff -08004a38 : +08004a18 : * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_OC_InitTypeDef *sConfig, uint32_t Channel) { - 8004a38: b580 push {r7, lr} - 8004a3a: b086 sub sp, #24 - 8004a3c: af00 add r7, sp, #0 - 8004a3e: 60f8 str r0, [r7, #12] - 8004a40: 60b9 str r1, [r7, #8] - 8004a42: 607a str r2, [r7, #4] + 8004a18: b580 push {r7, lr} + 8004a1a: b086 sub sp, #24 + 8004a1c: af00 add r7, sp, #0 + 8004a1e: 60f8 str r0, [r7, #12] + 8004a20: 60b9 str r1, [r7, #8] + 8004a22: 607a str r2, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 8004a44: 2317 movs r3, #23 - 8004a46: 18fb adds r3, r7, r3 - 8004a48: 2200 movs r2, #0 - 8004a4a: 701a strb r2, [r3, #0] + 8004a24: 2317 movs r3, #23 + 8004a26: 18fb adds r3, r7, r3 + 8004a28: 2200 movs r2, #0 + 8004a2a: 701a strb r2, [r3, #0] assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); /* Process Locked */ __HAL_LOCK(htim); - 8004a4c: 68fb ldr r3, [r7, #12] - 8004a4e: 223c movs r2, #60 ; 0x3c - 8004a50: 5c9b ldrb r3, [r3, r2] - 8004a52: 2b01 cmp r3, #1 - 8004a54: d101 bne.n 8004a5a - 8004a56: 2302 movs r3, #2 - 8004a58: e0e5 b.n 8004c26 - 8004a5a: 68fb ldr r3, [r7, #12] - 8004a5c: 223c movs r2, #60 ; 0x3c - 8004a5e: 2101 movs r1, #1 - 8004a60: 5499 strb r1, [r3, r2] + 8004a2c: 68fb ldr r3, [r7, #12] + 8004a2e: 223c movs r2, #60 ; 0x3c + 8004a30: 5c9b ldrb r3, [r3, r2] + 8004a32: 2b01 cmp r3, #1 + 8004a34: d101 bne.n 8004a3a + 8004a36: 2302 movs r3, #2 + 8004a38: e0e5 b.n 8004c06 + 8004a3a: 68fb ldr r3, [r7, #12] + 8004a3c: 223c movs r2, #60 ; 0x3c + 8004a3e: 2101 movs r1, #1 + 8004a40: 5499 strb r1, [r3, r2] switch (Channel) - 8004a62: 687b ldr r3, [r7, #4] - 8004a64: 2b14 cmp r3, #20 - 8004a66: d900 bls.n 8004a6a - 8004a68: e0d1 b.n 8004c0e - 8004a6a: 687b ldr r3, [r7, #4] - 8004a6c: 009a lsls r2, r3, #2 - 8004a6e: 4b70 ldr r3, [pc, #448] ; (8004c30 ) - 8004a70: 18d3 adds r3, r2, r3 - 8004a72: 681b ldr r3, [r3, #0] - 8004a74: 469f mov pc, r3 + 8004a42: 687b ldr r3, [r7, #4] + 8004a44: 2b14 cmp r3, #20 + 8004a46: d900 bls.n 8004a4a + 8004a48: e0d1 b.n 8004bee + 8004a4a: 687b ldr r3, [r7, #4] + 8004a4c: 009a lsls r2, r3, #2 + 8004a4e: 4b70 ldr r3, [pc, #448] ; (8004c10 ) + 8004a50: 18d3 adds r3, r2, r3 + 8004a52: 681b ldr r3, [r3, #0] + 8004a54: 469f mov pc, r3 { /* Check the parameters */ assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); /* Configure the Channel 1 in PWM mode */ TIM_OC1_SetConfig(htim->Instance, sConfig); - 8004a76: 68fb ldr r3, [r7, #12] - 8004a78: 681b ldr r3, [r3, #0] - 8004a7a: 68ba ldr r2, [r7, #8] - 8004a7c: 0011 movs r1, r2 - 8004a7e: 0018 movs r0, r3 - 8004a80: f000 fa46 bl 8004f10 + 8004a56: 68fb ldr r3, [r7, #12] + 8004a58: 681b ldr r3, [r3, #0] + 8004a5a: 68ba ldr r2, [r7, #8] + 8004a5c: 0011 movs r1, r2 + 8004a5e: 0018 movs r0, r3 + 8004a60: f000 fa46 bl 8004ef0 /* Set the Preload enable bit for channel1 */ htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; - 8004a84: 68fb ldr r3, [r7, #12] - 8004a86: 681b ldr r3, [r3, #0] - 8004a88: 699a ldr r2, [r3, #24] - 8004a8a: 68fb ldr r3, [r7, #12] - 8004a8c: 681b ldr r3, [r3, #0] - 8004a8e: 2108 movs r1, #8 - 8004a90: 430a orrs r2, r1 - 8004a92: 619a str r2, [r3, #24] + 8004a64: 68fb ldr r3, [r7, #12] + 8004a66: 681b ldr r3, [r3, #0] + 8004a68: 699a ldr r2, [r3, #24] + 8004a6a: 68fb ldr r3, [r7, #12] + 8004a6c: 681b ldr r3, [r3, #0] + 8004a6e: 2108 movs r1, #8 + 8004a70: 430a orrs r2, r1 + 8004a72: 619a str r2, [r3, #24] /* Configure the Output Fast mode */ htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; - 8004a94: 68fb ldr r3, [r7, #12] - 8004a96: 681b ldr r3, [r3, #0] - 8004a98: 699a ldr r2, [r3, #24] - 8004a9a: 68fb ldr r3, [r7, #12] - 8004a9c: 681b ldr r3, [r3, #0] - 8004a9e: 2104 movs r1, #4 - 8004aa0: 438a bics r2, r1 - 8004aa2: 619a str r2, [r3, #24] + 8004a74: 68fb ldr r3, [r7, #12] + 8004a76: 681b ldr r3, [r3, #0] + 8004a78: 699a ldr r2, [r3, #24] + 8004a7a: 68fb ldr r3, [r7, #12] + 8004a7c: 681b ldr r3, [r3, #0] + 8004a7e: 2104 movs r1, #4 + 8004a80: 438a bics r2, r1 + 8004a82: 619a str r2, [r3, #24] htim->Instance->CCMR1 |= sConfig->OCFastMode; - 8004aa4: 68fb ldr r3, [r7, #12] - 8004aa6: 681b ldr r3, [r3, #0] - 8004aa8: 6999 ldr r1, [r3, #24] - 8004aaa: 68bb ldr r3, [r7, #8] - 8004aac: 691a ldr r2, [r3, #16] - 8004aae: 68fb ldr r3, [r7, #12] - 8004ab0: 681b ldr r3, [r3, #0] - 8004ab2: 430a orrs r2, r1 - 8004ab4: 619a str r2, [r3, #24] + 8004a84: 68fb ldr r3, [r7, #12] + 8004a86: 681b ldr r3, [r3, #0] + 8004a88: 6999 ldr r1, [r3, #24] + 8004a8a: 68bb ldr r3, [r7, #8] + 8004a8c: 691a ldr r2, [r3, #16] + 8004a8e: 68fb ldr r3, [r7, #12] + 8004a90: 681b ldr r3, [r3, #0] + 8004a92: 430a orrs r2, r1 + 8004a94: 619a str r2, [r3, #24] break; - 8004ab6: e0af b.n 8004c18 + 8004a96: e0af b.n 8004bf8 { /* Check the parameters */ assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); /* Configure the Channel 2 in PWM mode */ TIM_OC2_SetConfig(htim->Instance, sConfig); - 8004ab8: 68fb ldr r3, [r7, #12] - 8004aba: 681b ldr r3, [r3, #0] - 8004abc: 68ba ldr r2, [r7, #8] - 8004abe: 0011 movs r1, r2 - 8004ac0: 0018 movs r0, r3 - 8004ac2: f000 faa5 bl 8005010 + 8004a98: 68fb ldr r3, [r7, #12] + 8004a9a: 681b ldr r3, [r3, #0] + 8004a9c: 68ba ldr r2, [r7, #8] + 8004a9e: 0011 movs r1, r2 + 8004aa0: 0018 movs r0, r3 + 8004aa2: f000 faa5 bl 8004ff0 /* Set the Preload enable bit for channel2 */ htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; - 8004ac6: 68fb ldr r3, [r7, #12] - 8004ac8: 681b ldr r3, [r3, #0] - 8004aca: 699a ldr r2, [r3, #24] - 8004acc: 68fb ldr r3, [r7, #12] - 8004ace: 681b ldr r3, [r3, #0] - 8004ad0: 2180 movs r1, #128 ; 0x80 - 8004ad2: 0109 lsls r1, r1, #4 - 8004ad4: 430a orrs r2, r1 - 8004ad6: 619a str r2, [r3, #24] + 8004aa6: 68fb ldr r3, [r7, #12] + 8004aa8: 681b ldr r3, [r3, #0] + 8004aaa: 699a ldr r2, [r3, #24] + 8004aac: 68fb ldr r3, [r7, #12] + 8004aae: 681b ldr r3, [r3, #0] + 8004ab0: 2180 movs r1, #128 ; 0x80 + 8004ab2: 0109 lsls r1, r1, #4 + 8004ab4: 430a orrs r2, r1 + 8004ab6: 619a str r2, [r3, #24] /* Configure the Output Fast mode */ htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; - 8004ad8: 68fb ldr r3, [r7, #12] - 8004ada: 681b ldr r3, [r3, #0] - 8004adc: 699a ldr r2, [r3, #24] - 8004ade: 68fb ldr r3, [r7, #12] - 8004ae0: 681b ldr r3, [r3, #0] - 8004ae2: 4954 ldr r1, [pc, #336] ; (8004c34 ) - 8004ae4: 400a ands r2, r1 - 8004ae6: 619a str r2, [r3, #24] + 8004ab8: 68fb ldr r3, [r7, #12] + 8004aba: 681b ldr r3, [r3, #0] + 8004abc: 699a ldr r2, [r3, #24] + 8004abe: 68fb ldr r3, [r7, #12] + 8004ac0: 681b ldr r3, [r3, #0] + 8004ac2: 4954 ldr r1, [pc, #336] ; (8004c14 ) + 8004ac4: 400a ands r2, r1 + 8004ac6: 619a str r2, [r3, #24] htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; - 8004ae8: 68fb ldr r3, [r7, #12] - 8004aea: 681b ldr r3, [r3, #0] - 8004aec: 6999 ldr r1, [r3, #24] - 8004aee: 68bb ldr r3, [r7, #8] - 8004af0: 691b ldr r3, [r3, #16] - 8004af2: 021a lsls r2, r3, #8 - 8004af4: 68fb ldr r3, [r7, #12] - 8004af6: 681b ldr r3, [r3, #0] - 8004af8: 430a orrs r2, r1 - 8004afa: 619a str r2, [r3, #24] + 8004ac8: 68fb ldr r3, [r7, #12] + 8004aca: 681b ldr r3, [r3, #0] + 8004acc: 6999 ldr r1, [r3, #24] + 8004ace: 68bb ldr r3, [r7, #8] + 8004ad0: 691b ldr r3, [r3, #16] + 8004ad2: 021a lsls r2, r3, #8 + 8004ad4: 68fb ldr r3, [r7, #12] + 8004ad6: 681b ldr r3, [r3, #0] + 8004ad8: 430a orrs r2, r1 + 8004ada: 619a str r2, [r3, #24] break; - 8004afc: e08c b.n 8004c18 + 8004adc: e08c b.n 8004bf8 { /* Check the parameters */ assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); /* Configure the Channel 3 in PWM mode */ TIM_OC3_SetConfig(htim->Instance, sConfig); - 8004afe: 68fb ldr r3, [r7, #12] - 8004b00: 681b ldr r3, [r3, #0] - 8004b02: 68ba ldr r2, [r7, #8] - 8004b04: 0011 movs r1, r2 - 8004b06: 0018 movs r0, r3 - 8004b08: f000 fb00 bl 800510c + 8004ade: 68fb ldr r3, [r7, #12] + 8004ae0: 681b ldr r3, [r3, #0] + 8004ae2: 68ba ldr r2, [r7, #8] + 8004ae4: 0011 movs r1, r2 + 8004ae6: 0018 movs r0, r3 + 8004ae8: f000 fb00 bl 80050ec /* Set the Preload enable bit for channel3 */ htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; - 8004b0c: 68fb ldr r3, [r7, #12] - 8004b0e: 681b ldr r3, [r3, #0] - 8004b10: 69da ldr r2, [r3, #28] - 8004b12: 68fb ldr r3, [r7, #12] - 8004b14: 681b ldr r3, [r3, #0] - 8004b16: 2108 movs r1, #8 - 8004b18: 430a orrs r2, r1 - 8004b1a: 61da str r2, [r3, #28] + 8004aec: 68fb ldr r3, [r7, #12] + 8004aee: 681b ldr r3, [r3, #0] + 8004af0: 69da ldr r2, [r3, #28] + 8004af2: 68fb ldr r3, [r7, #12] + 8004af4: 681b ldr r3, [r3, #0] + 8004af6: 2108 movs r1, #8 + 8004af8: 430a orrs r2, r1 + 8004afa: 61da str r2, [r3, #28] /* Configure the Output Fast mode */ htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; - 8004b1c: 68fb ldr r3, [r7, #12] - 8004b1e: 681b ldr r3, [r3, #0] - 8004b20: 69da ldr r2, [r3, #28] - 8004b22: 68fb ldr r3, [r7, #12] - 8004b24: 681b ldr r3, [r3, #0] - 8004b26: 2104 movs r1, #4 - 8004b28: 438a bics r2, r1 - 8004b2a: 61da str r2, [r3, #28] + 8004afc: 68fb ldr r3, [r7, #12] + 8004afe: 681b ldr r3, [r3, #0] + 8004b00: 69da ldr r2, [r3, #28] + 8004b02: 68fb ldr r3, [r7, #12] + 8004b04: 681b ldr r3, [r3, #0] + 8004b06: 2104 movs r1, #4 + 8004b08: 438a bics r2, r1 + 8004b0a: 61da str r2, [r3, #28] htim->Instance->CCMR2 |= sConfig->OCFastMode; - 8004b2c: 68fb ldr r3, [r7, #12] - 8004b2e: 681b ldr r3, [r3, #0] - 8004b30: 69d9 ldr r1, [r3, #28] - 8004b32: 68bb ldr r3, [r7, #8] - 8004b34: 691a ldr r2, [r3, #16] - 8004b36: 68fb ldr r3, [r7, #12] - 8004b38: 681b ldr r3, [r3, #0] - 8004b3a: 430a orrs r2, r1 - 8004b3c: 61da str r2, [r3, #28] + 8004b0c: 68fb ldr r3, [r7, #12] + 8004b0e: 681b ldr r3, [r3, #0] + 8004b10: 69d9 ldr r1, [r3, #28] + 8004b12: 68bb ldr r3, [r7, #8] + 8004b14: 691a ldr r2, [r3, #16] + 8004b16: 68fb ldr r3, [r7, #12] + 8004b18: 681b ldr r3, [r3, #0] + 8004b1a: 430a orrs r2, r1 + 8004b1c: 61da str r2, [r3, #28] break; - 8004b3e: e06b b.n 8004c18 + 8004b1e: e06b b.n 8004bf8 { /* Check the parameters */ assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); /* Configure the Channel 4 in PWM mode */ TIM_OC4_SetConfig(htim->Instance, sConfig); - 8004b40: 68fb ldr r3, [r7, #12] - 8004b42: 681b ldr r3, [r3, #0] - 8004b44: 68ba ldr r2, [r7, #8] - 8004b46: 0011 movs r1, r2 - 8004b48: 0018 movs r0, r3 - 8004b4a: f000 fb61 bl 8005210 + 8004b20: 68fb ldr r3, [r7, #12] + 8004b22: 681b ldr r3, [r3, #0] + 8004b24: 68ba ldr r2, [r7, #8] + 8004b26: 0011 movs r1, r2 + 8004b28: 0018 movs r0, r3 + 8004b2a: f000 fb61 bl 80051f0 /* Set the Preload enable bit for channel4 */ htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; - 8004b4e: 68fb ldr r3, [r7, #12] - 8004b50: 681b ldr r3, [r3, #0] - 8004b52: 69da ldr r2, [r3, #28] - 8004b54: 68fb ldr r3, [r7, #12] - 8004b56: 681b ldr r3, [r3, #0] - 8004b58: 2180 movs r1, #128 ; 0x80 - 8004b5a: 0109 lsls r1, r1, #4 - 8004b5c: 430a orrs r2, r1 - 8004b5e: 61da str r2, [r3, #28] + 8004b2e: 68fb ldr r3, [r7, #12] + 8004b30: 681b ldr r3, [r3, #0] + 8004b32: 69da ldr r2, [r3, #28] + 8004b34: 68fb ldr r3, [r7, #12] + 8004b36: 681b ldr r3, [r3, #0] + 8004b38: 2180 movs r1, #128 ; 0x80 + 8004b3a: 0109 lsls r1, r1, #4 + 8004b3c: 430a orrs r2, r1 + 8004b3e: 61da str r2, [r3, #28] /* Configure the Output Fast mode */ htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; - 8004b60: 68fb ldr r3, [r7, #12] - 8004b62: 681b ldr r3, [r3, #0] - 8004b64: 69da ldr r2, [r3, #28] - 8004b66: 68fb ldr r3, [r7, #12] - 8004b68: 681b ldr r3, [r3, #0] - 8004b6a: 4932 ldr r1, [pc, #200] ; (8004c34 ) - 8004b6c: 400a ands r2, r1 - 8004b6e: 61da str r2, [r3, #28] + 8004b40: 68fb ldr r3, [r7, #12] + 8004b42: 681b ldr r3, [r3, #0] + 8004b44: 69da ldr r2, [r3, #28] + 8004b46: 68fb ldr r3, [r7, #12] + 8004b48: 681b ldr r3, [r3, #0] + 8004b4a: 4932 ldr r1, [pc, #200] ; (8004c14 ) + 8004b4c: 400a ands r2, r1 + 8004b4e: 61da str r2, [r3, #28] htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; - 8004b70: 68fb ldr r3, [r7, #12] - 8004b72: 681b ldr r3, [r3, #0] - 8004b74: 69d9 ldr r1, [r3, #28] - 8004b76: 68bb ldr r3, [r7, #8] - 8004b78: 691b ldr r3, [r3, #16] - 8004b7a: 021a lsls r2, r3, #8 - 8004b7c: 68fb ldr r3, [r7, #12] - 8004b7e: 681b ldr r3, [r3, #0] - 8004b80: 430a orrs r2, r1 - 8004b82: 61da str r2, [r3, #28] + 8004b50: 68fb ldr r3, [r7, #12] + 8004b52: 681b ldr r3, [r3, #0] + 8004b54: 69d9 ldr r1, [r3, #28] + 8004b56: 68bb ldr r3, [r7, #8] + 8004b58: 691b ldr r3, [r3, #16] + 8004b5a: 021a lsls r2, r3, #8 + 8004b5c: 68fb ldr r3, [r7, #12] + 8004b5e: 681b ldr r3, [r3, #0] + 8004b60: 430a orrs r2, r1 + 8004b62: 61da str r2, [r3, #28] break; - 8004b84: e048 b.n 8004c18 + 8004b64: e048 b.n 8004bf8 { /* Check the parameters */ assert_param(IS_TIM_CC5_INSTANCE(htim->Instance)); /* Configure the Channel 5 in PWM mode */ TIM_OC5_SetConfig(htim->Instance, sConfig); - 8004b86: 68fb ldr r3, [r7, #12] - 8004b88: 681b ldr r3, [r3, #0] - 8004b8a: 68ba ldr r2, [r7, #8] - 8004b8c: 0011 movs r1, r2 - 8004b8e: 0018 movs r0, r3 - 8004b90: f000 fba2 bl 80052d8 + 8004b66: 68fb ldr r3, [r7, #12] + 8004b68: 681b ldr r3, [r3, #0] + 8004b6a: 68ba ldr r2, [r7, #8] + 8004b6c: 0011 movs r1, r2 + 8004b6e: 0018 movs r0, r3 + 8004b70: f000 fba2 bl 80052b8 /* Set the Preload enable bit for channel5*/ htim->Instance->CCMR3 |= TIM_CCMR3_OC5PE; - 8004b94: 68fb ldr r3, [r7, #12] - 8004b96: 681b ldr r3, [r3, #0] - 8004b98: 6d5a ldr r2, [r3, #84] ; 0x54 - 8004b9a: 68fb ldr r3, [r7, #12] - 8004b9c: 681b ldr r3, [r3, #0] - 8004b9e: 2108 movs r1, #8 - 8004ba0: 430a orrs r2, r1 - 8004ba2: 655a str r2, [r3, #84] ; 0x54 + 8004b74: 68fb ldr r3, [r7, #12] + 8004b76: 681b ldr r3, [r3, #0] + 8004b78: 6d5a ldr r2, [r3, #84] ; 0x54 + 8004b7a: 68fb ldr r3, [r7, #12] + 8004b7c: 681b ldr r3, [r3, #0] + 8004b7e: 2108 movs r1, #8 + 8004b80: 430a orrs r2, r1 + 8004b82: 655a str r2, [r3, #84] ; 0x54 /* Configure the Output Fast mode */ htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE; - 8004ba4: 68fb ldr r3, [r7, #12] - 8004ba6: 681b ldr r3, [r3, #0] - 8004ba8: 6d5a ldr r2, [r3, #84] ; 0x54 - 8004baa: 68fb ldr r3, [r7, #12] - 8004bac: 681b ldr r3, [r3, #0] - 8004bae: 2104 movs r1, #4 - 8004bb0: 438a bics r2, r1 - 8004bb2: 655a str r2, [r3, #84] ; 0x54 + 8004b84: 68fb ldr r3, [r7, #12] + 8004b86: 681b ldr r3, [r3, #0] + 8004b88: 6d5a ldr r2, [r3, #84] ; 0x54 + 8004b8a: 68fb ldr r3, [r7, #12] + 8004b8c: 681b ldr r3, [r3, #0] + 8004b8e: 2104 movs r1, #4 + 8004b90: 438a bics r2, r1 + 8004b92: 655a str r2, [r3, #84] ; 0x54 htim->Instance->CCMR3 |= sConfig->OCFastMode; - 8004bb4: 68fb ldr r3, [r7, #12] - 8004bb6: 681b ldr r3, [r3, #0] - 8004bb8: 6d59 ldr r1, [r3, #84] ; 0x54 - 8004bba: 68bb ldr r3, [r7, #8] - 8004bbc: 691a ldr r2, [r3, #16] - 8004bbe: 68fb ldr r3, [r7, #12] - 8004bc0: 681b ldr r3, [r3, #0] - 8004bc2: 430a orrs r2, r1 - 8004bc4: 655a str r2, [r3, #84] ; 0x54 + 8004b94: 68fb ldr r3, [r7, #12] + 8004b96: 681b ldr r3, [r3, #0] + 8004b98: 6d59 ldr r1, [r3, #84] ; 0x54 + 8004b9a: 68bb ldr r3, [r7, #8] + 8004b9c: 691a ldr r2, [r3, #16] + 8004b9e: 68fb ldr r3, [r7, #12] + 8004ba0: 681b ldr r3, [r3, #0] + 8004ba2: 430a orrs r2, r1 + 8004ba4: 655a str r2, [r3, #84] ; 0x54 break; - 8004bc6: e027 b.n 8004c18 + 8004ba6: e027 b.n 8004bf8 { /* Check the parameters */ assert_param(IS_TIM_CC6_INSTANCE(htim->Instance)); /* Configure the Channel 6 in PWM mode */ TIM_OC6_SetConfig(htim->Instance, sConfig); - 8004bc8: 68fb ldr r3, [r7, #12] - 8004bca: 681b ldr r3, [r3, #0] - 8004bcc: 68ba ldr r2, [r7, #8] - 8004bce: 0011 movs r1, r2 - 8004bd0: 0018 movs r0, r3 - 8004bd2: f000 fbdb bl 800538c + 8004ba8: 68fb ldr r3, [r7, #12] + 8004baa: 681b ldr r3, [r3, #0] + 8004bac: 68ba ldr r2, [r7, #8] + 8004bae: 0011 movs r1, r2 + 8004bb0: 0018 movs r0, r3 + 8004bb2: f000 fbdb bl 800536c /* Set the Preload enable bit for channel6 */ htim->Instance->CCMR3 |= TIM_CCMR3_OC6PE; - 8004bd6: 68fb ldr r3, [r7, #12] - 8004bd8: 681b ldr r3, [r3, #0] - 8004bda: 6d5a ldr r2, [r3, #84] ; 0x54 - 8004bdc: 68fb ldr r3, [r7, #12] - 8004bde: 681b ldr r3, [r3, #0] - 8004be0: 2180 movs r1, #128 ; 0x80 - 8004be2: 0109 lsls r1, r1, #4 - 8004be4: 430a orrs r2, r1 - 8004be6: 655a str r2, [r3, #84] ; 0x54 + 8004bb6: 68fb ldr r3, [r7, #12] + 8004bb8: 681b ldr r3, [r3, #0] + 8004bba: 6d5a ldr r2, [r3, #84] ; 0x54 + 8004bbc: 68fb ldr r3, [r7, #12] + 8004bbe: 681b ldr r3, [r3, #0] + 8004bc0: 2180 movs r1, #128 ; 0x80 + 8004bc2: 0109 lsls r1, r1, #4 + 8004bc4: 430a orrs r2, r1 + 8004bc6: 655a str r2, [r3, #84] ; 0x54 /* Configure the Output Fast mode */ htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE; - 8004be8: 68fb ldr r3, [r7, #12] - 8004bea: 681b ldr r3, [r3, #0] - 8004bec: 6d5a ldr r2, [r3, #84] ; 0x54 - 8004bee: 68fb ldr r3, [r7, #12] - 8004bf0: 681b ldr r3, [r3, #0] - 8004bf2: 4910 ldr r1, [pc, #64] ; (8004c34 ) - 8004bf4: 400a ands r2, r1 - 8004bf6: 655a str r2, [r3, #84] ; 0x54 + 8004bc8: 68fb ldr r3, [r7, #12] + 8004bca: 681b ldr r3, [r3, #0] + 8004bcc: 6d5a ldr r2, [r3, #84] ; 0x54 + 8004bce: 68fb ldr r3, [r7, #12] + 8004bd0: 681b ldr r3, [r3, #0] + 8004bd2: 4910 ldr r1, [pc, #64] ; (8004c14 ) + 8004bd4: 400a ands r2, r1 + 8004bd6: 655a str r2, [r3, #84] ; 0x54 htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U; - 8004bf8: 68fb ldr r3, [r7, #12] - 8004bfa: 681b ldr r3, [r3, #0] - 8004bfc: 6d59 ldr r1, [r3, #84] ; 0x54 - 8004bfe: 68bb ldr r3, [r7, #8] - 8004c00: 691b ldr r3, [r3, #16] - 8004c02: 021a lsls r2, r3, #8 - 8004c04: 68fb ldr r3, [r7, #12] - 8004c06: 681b ldr r3, [r3, #0] - 8004c08: 430a orrs r2, r1 - 8004c0a: 655a str r2, [r3, #84] ; 0x54 + 8004bd8: 68fb ldr r3, [r7, #12] + 8004bda: 681b ldr r3, [r3, #0] + 8004bdc: 6d59 ldr r1, [r3, #84] ; 0x54 + 8004bde: 68bb ldr r3, [r7, #8] + 8004be0: 691b ldr r3, [r3, #16] + 8004be2: 021a lsls r2, r3, #8 + 8004be4: 68fb ldr r3, [r7, #12] + 8004be6: 681b ldr r3, [r3, #0] + 8004be8: 430a orrs r2, r1 + 8004bea: 655a str r2, [r3, #84] ; 0x54 break; - 8004c0c: e004 b.n 8004c18 + 8004bec: e004 b.n 8004bf8 } default: status = HAL_ERROR; - 8004c0e: 2317 movs r3, #23 - 8004c10: 18fb adds r3, r7, r3 - 8004c12: 2201 movs r2, #1 - 8004c14: 701a strb r2, [r3, #0] + 8004bee: 2317 movs r3, #23 + 8004bf0: 18fb adds r3, r7, r3 + 8004bf2: 2201 movs r2, #1 + 8004bf4: 701a strb r2, [r3, #0] break; - 8004c16: 46c0 nop ; (mov r8, r8) + 8004bf6: 46c0 nop ; (mov r8, r8) } __HAL_UNLOCK(htim); - 8004c18: 68fb ldr r3, [r7, #12] - 8004c1a: 223c movs r2, #60 ; 0x3c - 8004c1c: 2100 movs r1, #0 - 8004c1e: 5499 strb r1, [r3, r2] + 8004bf8: 68fb ldr r3, [r7, #12] + 8004bfa: 223c movs r2, #60 ; 0x3c + 8004bfc: 2100 movs r1, #0 + 8004bfe: 5499 strb r1, [r3, r2] return status; - 8004c20: 2317 movs r3, #23 - 8004c22: 18fb adds r3, r7, r3 - 8004c24: 781b ldrb r3, [r3, #0] + 8004c00: 2317 movs r3, #23 + 8004c02: 18fb adds r3, r7, r3 + 8004c04: 781b ldrb r3, [r3, #0] } - 8004c26: 0018 movs r0, r3 - 8004c28: 46bd mov sp, r7 - 8004c2a: b006 add sp, #24 - 8004c2c: bd80 pop {r7, pc} - 8004c2e: 46c0 nop ; (mov r8, r8) - 8004c30: 08006828 .word 0x08006828 - 8004c34: fffffbff .word 0xfffffbff + 8004c06: 0018 movs r0, r3 + 8004c08: 46bd mov sp, r7 + 8004c0a: b006 add sp, #24 + 8004c0c: bd80 pop {r7, pc} + 8004c0e: 46c0 nop ; (mov r8, r8) + 8004c10: 08006828 .word 0x08006828 + 8004c14: fffffbff .word 0xfffffbff -08004c38 : +08004c18 : * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that * contains the clock source information for the TIM peripheral. * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig) { - 8004c38: b580 push {r7, lr} - 8004c3a: b084 sub sp, #16 - 8004c3c: af00 add r7, sp, #0 - 8004c3e: 6078 str r0, [r7, #4] - 8004c40: 6039 str r1, [r7, #0] + 8004c18: b580 push {r7, lr} + 8004c1a: b084 sub sp, #16 + 8004c1c: af00 add r7, sp, #0 + 8004c1e: 6078 str r0, [r7, #4] + 8004c20: 6039 str r1, [r7, #0] HAL_StatusTypeDef status = HAL_OK; - 8004c42: 230f movs r3, #15 - 8004c44: 18fb adds r3, r7, r3 - 8004c46: 2200 movs r2, #0 - 8004c48: 701a strb r2, [r3, #0] + 8004c22: 230f movs r3, #15 + 8004c24: 18fb adds r3, r7, r3 + 8004c26: 2200 movs r2, #0 + 8004c28: 701a strb r2, [r3, #0] uint32_t tmpsmcr; /* Process Locked */ __HAL_LOCK(htim); - 8004c4a: 687b ldr r3, [r7, #4] - 8004c4c: 223c movs r2, #60 ; 0x3c - 8004c4e: 5c9b ldrb r3, [r3, r2] - 8004c50: 2b01 cmp r3, #1 - 8004c52: d101 bne.n 8004c58 - 8004c54: 2302 movs r3, #2 - 8004c56: e0bc b.n 8004dd2 - 8004c58: 687b ldr r3, [r7, #4] - 8004c5a: 223c movs r2, #60 ; 0x3c - 8004c5c: 2101 movs r1, #1 - 8004c5e: 5499 strb r1, [r3, r2] + 8004c2a: 687b ldr r3, [r7, #4] + 8004c2c: 223c movs r2, #60 ; 0x3c + 8004c2e: 5c9b ldrb r3, [r3, r2] + 8004c30: 2b01 cmp r3, #1 + 8004c32: d101 bne.n 8004c38 + 8004c34: 2302 movs r3, #2 + 8004c36: e0bc b.n 8004db2 + 8004c38: 687b ldr r3, [r7, #4] + 8004c3a: 223c movs r2, #60 ; 0x3c + 8004c3c: 2101 movs r1, #1 + 8004c3e: 5499 strb r1, [r3, r2] htim->State = HAL_TIM_STATE_BUSY; - 8004c60: 687b ldr r3, [r7, #4] - 8004c62: 223d movs r2, #61 ; 0x3d - 8004c64: 2102 movs r1, #2 - 8004c66: 5499 strb r1, [r3, r2] + 8004c40: 687b ldr r3, [r7, #4] + 8004c42: 223d movs r2, #61 ; 0x3d + 8004c44: 2102 movs r1, #2 + 8004c46: 5499 strb r1, [r3, r2] /* Check the parameters */ assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ tmpsmcr = htim->Instance->SMCR; - 8004c68: 687b ldr r3, [r7, #4] - 8004c6a: 681b ldr r3, [r3, #0] - 8004c6c: 689b ldr r3, [r3, #8] - 8004c6e: 60bb str r3, [r7, #8] + 8004c48: 687b ldr r3, [r7, #4] + 8004c4a: 681b ldr r3, [r3, #0] + 8004c4c: 689b ldr r3, [r3, #8] + 8004c4e: 60bb str r3, [r7, #8] tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); - 8004c70: 68bb ldr r3, [r7, #8] - 8004c72: 4a5a ldr r2, [pc, #360] ; (8004ddc ) - 8004c74: 4013 ands r3, r2 - 8004c76: 60bb str r3, [r7, #8] + 8004c50: 68bb ldr r3, [r7, #8] + 8004c52: 4a5a ldr r2, [pc, #360] ; (8004dbc ) + 8004c54: 4013 ands r3, r2 + 8004c56: 60bb str r3, [r7, #8] tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8004c78: 68bb ldr r3, [r7, #8] - 8004c7a: 4a59 ldr r2, [pc, #356] ; (8004de0 ) - 8004c7c: 4013 ands r3, r2 - 8004c7e: 60bb str r3, [r7, #8] + 8004c58: 68bb ldr r3, [r7, #8] + 8004c5a: 4a59 ldr r2, [pc, #356] ; (8004dc0 ) + 8004c5c: 4013 ands r3, r2 + 8004c5e: 60bb str r3, [r7, #8] htim->Instance->SMCR = tmpsmcr; - 8004c80: 687b ldr r3, [r7, #4] - 8004c82: 681b ldr r3, [r3, #0] - 8004c84: 68ba ldr r2, [r7, #8] - 8004c86: 609a str r2, [r3, #8] + 8004c60: 687b ldr r3, [r7, #4] + 8004c62: 681b ldr r3, [r3, #0] + 8004c64: 68ba ldr r2, [r7, #8] + 8004c66: 609a str r2, [r3, #8] switch (sClockSourceConfig->ClockSource) - 8004c88: 683b ldr r3, [r7, #0] - 8004c8a: 681b ldr r3, [r3, #0] - 8004c8c: 2280 movs r2, #128 ; 0x80 - 8004c8e: 0192 lsls r2, r2, #6 - 8004c90: 4293 cmp r3, r2 - 8004c92: d040 beq.n 8004d16 - 8004c94: 2280 movs r2, #128 ; 0x80 - 8004c96: 0192 lsls r2, r2, #6 - 8004c98: 4293 cmp r3, r2 - 8004c9a: d900 bls.n 8004c9e - 8004c9c: e088 b.n 8004db0 - 8004c9e: 2280 movs r2, #128 ; 0x80 - 8004ca0: 0152 lsls r2, r2, #5 - 8004ca2: 4293 cmp r3, r2 - 8004ca4: d100 bne.n 8004ca8 - 8004ca6: e088 b.n 8004dba - 8004ca8: 2280 movs r2, #128 ; 0x80 - 8004caa: 0152 lsls r2, r2, #5 - 8004cac: 4293 cmp r3, r2 - 8004cae: d900 bls.n 8004cb2 - 8004cb0: e07e b.n 8004db0 - 8004cb2: 2b70 cmp r3, #112 ; 0x70 - 8004cb4: d018 beq.n 8004ce8 - 8004cb6: d900 bls.n 8004cba - 8004cb8: e07a b.n 8004db0 - 8004cba: 2b60 cmp r3, #96 ; 0x60 - 8004cbc: d04f beq.n 8004d5e - 8004cbe: d900 bls.n 8004cc2 - 8004cc0: e076 b.n 8004db0 - 8004cc2: 2b50 cmp r3, #80 ; 0x50 - 8004cc4: d03b beq.n 8004d3e - 8004cc6: d900 bls.n 8004cca - 8004cc8: e072 b.n 8004db0 - 8004cca: 2b40 cmp r3, #64 ; 0x40 - 8004ccc: d057 beq.n 8004d7e - 8004cce: d900 bls.n 8004cd2 - 8004cd0: e06e b.n 8004db0 - 8004cd2: 2b30 cmp r3, #48 ; 0x30 - 8004cd4: d063 beq.n 8004d9e - 8004cd6: d86b bhi.n 8004db0 - 8004cd8: 2b20 cmp r3, #32 - 8004cda: d060 beq.n 8004d9e - 8004cdc: d868 bhi.n 8004db0 - 8004cde: 2b00 cmp r3, #0 - 8004ce0: d05d beq.n 8004d9e - 8004ce2: 2b10 cmp r3, #16 - 8004ce4: d05b beq.n 8004d9e - 8004ce6: e063 b.n 8004db0 + 8004c68: 683b ldr r3, [r7, #0] + 8004c6a: 681b ldr r3, [r3, #0] + 8004c6c: 2280 movs r2, #128 ; 0x80 + 8004c6e: 0192 lsls r2, r2, #6 + 8004c70: 4293 cmp r3, r2 + 8004c72: d040 beq.n 8004cf6 + 8004c74: 2280 movs r2, #128 ; 0x80 + 8004c76: 0192 lsls r2, r2, #6 + 8004c78: 4293 cmp r3, r2 + 8004c7a: d900 bls.n 8004c7e + 8004c7c: e088 b.n 8004d90 + 8004c7e: 2280 movs r2, #128 ; 0x80 + 8004c80: 0152 lsls r2, r2, #5 + 8004c82: 4293 cmp r3, r2 + 8004c84: d100 bne.n 8004c88 + 8004c86: e088 b.n 8004d9a + 8004c88: 2280 movs r2, #128 ; 0x80 + 8004c8a: 0152 lsls r2, r2, #5 + 8004c8c: 4293 cmp r3, r2 + 8004c8e: d900 bls.n 8004c92 + 8004c90: e07e b.n 8004d90 + 8004c92: 2b70 cmp r3, #112 ; 0x70 + 8004c94: d018 beq.n 8004cc8 + 8004c96: d900 bls.n 8004c9a + 8004c98: e07a b.n 8004d90 + 8004c9a: 2b60 cmp r3, #96 ; 0x60 + 8004c9c: d04f beq.n 8004d3e + 8004c9e: d900 bls.n 8004ca2 + 8004ca0: e076 b.n 8004d90 + 8004ca2: 2b50 cmp r3, #80 ; 0x50 + 8004ca4: d03b beq.n 8004d1e + 8004ca6: d900 bls.n 8004caa + 8004ca8: e072 b.n 8004d90 + 8004caa: 2b40 cmp r3, #64 ; 0x40 + 8004cac: d057 beq.n 8004d5e + 8004cae: d900 bls.n 8004cb2 + 8004cb0: e06e b.n 8004d90 + 8004cb2: 2b30 cmp r3, #48 ; 0x30 + 8004cb4: d063 beq.n 8004d7e + 8004cb6: d86b bhi.n 8004d90 + 8004cb8: 2b20 cmp r3, #32 + 8004cba: d060 beq.n 8004d7e + 8004cbc: d868 bhi.n 8004d90 + 8004cbe: 2b00 cmp r3, #0 + 8004cc0: d05d beq.n 8004d7e + 8004cc2: 2b10 cmp r3, #16 + 8004cc4: d05b beq.n 8004d7e + 8004cc6: e063 b.n 8004d90 assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); /* Configure the ETR Clock source */ TIM_ETR_SetConfig(htim->Instance, - 8004ce8: 687b ldr r3, [r7, #4] - 8004cea: 6818 ldr r0, [r3, #0] - 8004cec: 683b ldr r3, [r7, #0] - 8004cee: 6899 ldr r1, [r3, #8] - 8004cf0: 683b ldr r3, [r7, #0] - 8004cf2: 685a ldr r2, [r3, #4] - 8004cf4: 683b ldr r3, [r7, #0] - 8004cf6: 68db ldr r3, [r3, #12] - 8004cf8: f000 fc22 bl 8005540 + 8004cc8: 687b ldr r3, [r7, #4] + 8004cca: 6818 ldr r0, [r3, #0] + 8004ccc: 683b ldr r3, [r7, #0] + 8004cce: 6899 ldr r1, [r3, #8] + 8004cd0: 683b ldr r3, [r7, #0] + 8004cd2: 685a ldr r2, [r3, #4] + 8004cd4: 683b ldr r3, [r7, #0] + 8004cd6: 68db ldr r3, [r3, #12] + 8004cd8: f000 fc22 bl 8005520 sClockSourceConfig->ClockPrescaler, sClockSourceConfig->ClockPolarity, sClockSourceConfig->ClockFilter); /* Select the External clock mode1 and the ETRF trigger */ tmpsmcr = htim->Instance->SMCR; - 8004cfc: 687b ldr r3, [r7, #4] - 8004cfe: 681b ldr r3, [r3, #0] - 8004d00: 689b ldr r3, [r3, #8] - 8004d02: 60bb str r3, [r7, #8] + 8004cdc: 687b ldr r3, [r7, #4] + 8004cde: 681b ldr r3, [r3, #0] + 8004ce0: 689b ldr r3, [r3, #8] + 8004ce2: 60bb str r3, [r7, #8] tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); - 8004d04: 68bb ldr r3, [r7, #8] - 8004d06: 2277 movs r2, #119 ; 0x77 - 8004d08: 4313 orrs r3, r2 - 8004d0a: 60bb str r3, [r7, #8] + 8004ce4: 68bb ldr r3, [r7, #8] + 8004ce6: 2277 movs r2, #119 ; 0x77 + 8004ce8: 4313 orrs r3, r2 + 8004cea: 60bb str r3, [r7, #8] /* Write to TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; - 8004d0c: 687b ldr r3, [r7, #4] - 8004d0e: 681b ldr r3, [r3, #0] - 8004d10: 68ba ldr r2, [r7, #8] - 8004d12: 609a str r2, [r3, #8] + 8004cec: 687b ldr r3, [r7, #4] + 8004cee: 681b ldr r3, [r3, #0] + 8004cf0: 68ba ldr r2, [r7, #8] + 8004cf2: 609a str r2, [r3, #8] break; - 8004d14: e052 b.n 8004dbc + 8004cf4: e052 b.n 8004d9c assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); /* Configure the ETR Clock source */ TIM_ETR_SetConfig(htim->Instance, - 8004d16: 687b ldr r3, [r7, #4] - 8004d18: 6818 ldr r0, [r3, #0] - 8004d1a: 683b ldr r3, [r7, #0] - 8004d1c: 6899 ldr r1, [r3, #8] - 8004d1e: 683b ldr r3, [r7, #0] - 8004d20: 685a ldr r2, [r3, #4] - 8004d22: 683b ldr r3, [r7, #0] - 8004d24: 68db ldr r3, [r3, #12] - 8004d26: f000 fc0b bl 8005540 + 8004cf6: 687b ldr r3, [r7, #4] + 8004cf8: 6818 ldr r0, [r3, #0] + 8004cfa: 683b ldr r3, [r7, #0] + 8004cfc: 6899 ldr r1, [r3, #8] + 8004cfe: 683b ldr r3, [r7, #0] + 8004d00: 685a ldr r2, [r3, #4] + 8004d02: 683b ldr r3, [r7, #0] + 8004d04: 68db ldr r3, [r3, #12] + 8004d06: f000 fc0b bl 8005520 sClockSourceConfig->ClockPrescaler, sClockSourceConfig->ClockPolarity, sClockSourceConfig->ClockFilter); /* Enable the External clock mode2 */ htim->Instance->SMCR |= TIM_SMCR_ECE; - 8004d2a: 687b ldr r3, [r7, #4] - 8004d2c: 681b ldr r3, [r3, #0] - 8004d2e: 689a ldr r2, [r3, #8] - 8004d30: 687b ldr r3, [r7, #4] - 8004d32: 681b ldr r3, [r3, #0] - 8004d34: 2180 movs r1, #128 ; 0x80 - 8004d36: 01c9 lsls r1, r1, #7 - 8004d38: 430a orrs r2, r1 - 8004d3a: 609a str r2, [r3, #8] + 8004d0a: 687b ldr r3, [r7, #4] + 8004d0c: 681b ldr r3, [r3, #0] + 8004d0e: 689a ldr r2, [r3, #8] + 8004d10: 687b ldr r3, [r7, #4] + 8004d12: 681b ldr r3, [r3, #0] + 8004d14: 2180 movs r1, #128 ; 0x80 + 8004d16: 01c9 lsls r1, r1, #7 + 8004d18: 430a orrs r2, r1 + 8004d1a: 609a str r2, [r3, #8] break; - 8004d3c: e03e b.n 8004dbc + 8004d1c: e03e b.n 8004d9c /* Check TI1 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); TIM_TI1_ConfigInputStage(htim->Instance, + 8004d1e: 687b ldr r3, [r7, #4] + 8004d20: 6818 ldr r0, [r3, #0] + 8004d22: 683b ldr r3, [r7, #0] + 8004d24: 6859 ldr r1, [r3, #4] + 8004d26: 683b ldr r3, [r7, #0] + 8004d28: 68db ldr r3, [r3, #12] + 8004d2a: 001a movs r2, r3 + 8004d2c: f000 fb7c bl 8005428 + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + 8004d30: 687b ldr r3, [r7, #4] + 8004d32: 681b ldr r3, [r3, #0] + 8004d34: 2150 movs r1, #80 ; 0x50 + 8004d36: 0018 movs r0, r3 + 8004d38: f000 fbd6 bl 80054e8 + break; + 8004d3c: e02e b.n 8004d9c + + /* Check TI2 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI2_ConfigInputStage(htim->Instance, 8004d3e: 687b ldr r3, [r7, #4] 8004d40: 6818 ldr r0, [r3, #0] 8004d42: 683b ldr r3, [r7, #0] @@ -13546,23 +13561,23 @@ HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_C 8004d46: 683b ldr r3, [r7, #0] 8004d48: 68db ldr r3, [r3, #12] 8004d4a: 001a movs r2, r3 - 8004d4c: f000 fb7c bl 8005448 + 8004d4c: f000 fb9a bl 8005484 sClockSourceConfig->ClockPolarity, sClockSourceConfig->ClockFilter); - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); 8004d50: 687b ldr r3, [r7, #4] 8004d52: 681b ldr r3, [r3, #0] - 8004d54: 2150 movs r1, #80 ; 0x50 + 8004d54: 2160 movs r1, #96 ; 0x60 8004d56: 0018 movs r0, r3 - 8004d58: f000 fbd6 bl 8005508 + 8004d58: f000 fbc6 bl 80054e8 break; - 8004d5c: e02e b.n 8004dbc + 8004d5c: e01e b.n 8004d9c - /* Check TI2 input conditioning related parameters */ + /* Check TI1 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - TIM_TI2_ConfigInputStage(htim->Instance, + TIM_TI1_ConfigInputStage(htim->Instance, 8004d5e: 687b ldr r3, [r7, #4] 8004d60: 6818 ldr r0, [r3, #0] 8004d62: 683b ldr r3, [r7, #0] @@ -13570,100 +13585,120 @@ HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_C 8004d66: 683b ldr r3, [r7, #0] 8004d68: 68db ldr r3, [r3, #12] 8004d6a: 001a movs r2, r3 - 8004d6c: f000 fb9a bl 80054a4 - sClockSourceConfig->ClockPolarity, - sClockSourceConfig->ClockFilter); - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); - 8004d70: 687b ldr r3, [r7, #4] - 8004d72: 681b ldr r3, [r3, #0] - 8004d74: 2160 movs r1, #96 ; 0x60 - 8004d76: 0018 movs r0, r3 - 8004d78: f000 fbc6 bl 8005508 - break; - 8004d7c: e01e b.n 8004dbc - - /* Check TI1 input conditioning related parameters */ - assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - - TIM_TI1_ConfigInputStage(htim->Instance, - 8004d7e: 687b ldr r3, [r7, #4] - 8004d80: 6818 ldr r0, [r3, #0] - 8004d82: 683b ldr r3, [r7, #0] - 8004d84: 6859 ldr r1, [r3, #4] - 8004d86: 683b ldr r3, [r7, #0] - 8004d88: 68db ldr r3, [r3, #12] - 8004d8a: 001a movs r2, r3 - 8004d8c: f000 fb5c bl 8005448 + 8004d6c: f000 fb5c bl 8005428 sClockSourceConfig->ClockPolarity, sClockSourceConfig->ClockFilter); TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); - 8004d90: 687b ldr r3, [r7, #4] - 8004d92: 681b ldr r3, [r3, #0] - 8004d94: 2140 movs r1, #64 ; 0x40 - 8004d96: 0018 movs r0, r3 - 8004d98: f000 fbb6 bl 8005508 + 8004d70: 687b ldr r3, [r7, #4] + 8004d72: 681b ldr r3, [r3, #0] + 8004d74: 2140 movs r1, #64 ; 0x40 + 8004d76: 0018 movs r0, r3 + 8004d78: f000 fbb6 bl 80054e8 break; - 8004d9c: e00e b.n 8004dbc + 8004d7c: e00e b.n 8004d9c case TIM_CLOCKSOURCE_ITR3: { /* Check whether or not the timer instance supports internal trigger input */ assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); - 8004d9e: 687b ldr r3, [r7, #4] - 8004da0: 681a ldr r2, [r3, #0] - 8004da2: 683b ldr r3, [r7, #0] - 8004da4: 681b ldr r3, [r3, #0] - 8004da6: 0019 movs r1, r3 - 8004da8: 0010 movs r0, r2 - 8004daa: f000 fbad bl 8005508 + 8004d7e: 687b ldr r3, [r7, #4] + 8004d80: 681a ldr r2, [r3, #0] + 8004d82: 683b ldr r3, [r7, #0] + 8004d84: 681b ldr r3, [r3, #0] + 8004d86: 0019 movs r1, r3 + 8004d88: 0010 movs r0, r2 + 8004d8a: f000 fbad bl 80054e8 break; - 8004dae: e005 b.n 8004dbc + 8004d8e: e005 b.n 8004d9c } default: status = HAL_ERROR; - 8004db0: 230f movs r3, #15 - 8004db2: 18fb adds r3, r7, r3 - 8004db4: 2201 movs r2, #1 - 8004db6: 701a strb r2, [r3, #0] + 8004d90: 230f movs r3, #15 + 8004d92: 18fb adds r3, r7, r3 + 8004d94: 2201 movs r2, #1 + 8004d96: 701a strb r2, [r3, #0] break; - 8004db8: e000 b.n 8004dbc + 8004d98: e000 b.n 8004d9c break; - 8004dba: 46c0 nop ; (mov r8, r8) + 8004d9a: 46c0 nop ; (mov r8, r8) } htim->State = HAL_TIM_STATE_READY; - 8004dbc: 687b ldr r3, [r7, #4] - 8004dbe: 223d movs r2, #61 ; 0x3d - 8004dc0: 2101 movs r1, #1 - 8004dc2: 5499 strb r1, [r3, r2] + 8004d9c: 687b ldr r3, [r7, #4] + 8004d9e: 223d movs r2, #61 ; 0x3d + 8004da0: 2101 movs r1, #1 + 8004da2: 5499 strb r1, [r3, r2] __HAL_UNLOCK(htim); - 8004dc4: 687b ldr r3, [r7, #4] - 8004dc6: 223c movs r2, #60 ; 0x3c - 8004dc8: 2100 movs r1, #0 - 8004dca: 5499 strb r1, [r3, r2] + 8004da4: 687b ldr r3, [r7, #4] + 8004da6: 223c movs r2, #60 ; 0x3c + 8004da8: 2100 movs r1, #0 + 8004daa: 5499 strb r1, [r3, r2] return status; - 8004dcc: 230f movs r3, #15 - 8004dce: 18fb adds r3, r7, r3 - 8004dd0: 781b ldrb r3, [r3, #0] + 8004dac: 230f movs r3, #15 + 8004dae: 18fb adds r3, r7, r3 + 8004db0: 781b ldrb r3, [r3, #0] } - 8004dd2: 0018 movs r0, r3 - 8004dd4: 46bd mov sp, r7 - 8004dd6: b004 add sp, #16 - 8004dd8: bd80 pop {r7, pc} - 8004dda: 46c0 nop ; (mov r8, r8) - 8004ddc: ffceff88 .word 0xffceff88 - 8004de0: ffff00ff .word 0xffff00ff + 8004db2: 0018 movs r0, r3 + 8004db4: 46bd mov sp, r7 + 8004db6: b004 add sp, #16 + 8004db8: bd80 pop {r7, pc} + 8004dba: 46c0 nop ; (mov r8, r8) + 8004dbc: ffceff88 .word 0xffceff88 + 8004dc0: ffff00ff .word 0xffff00ff -08004de4 : +08004dc4 : * @brief Output Compare callback in non-blocking mode * @param htim TIM OC handle * @retval None */ __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) +{ + 8004dc4: b580 push {r7, lr} + 8004dc6: b082 sub sp, #8 + 8004dc8: af00 add r7, sp, #0 + 8004dca: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file + */ +} + 8004dcc: 46c0 nop ; (mov r8, r8) + 8004dce: 46bd mov sp, r7 + 8004dd0: b002 add sp, #8 + 8004dd2: bd80 pop {r7, pc} + +08004dd4 : + * @brief Input Capture callback in non-blocking mode + * @param htim TIM IC handle + * @retval None + */ +__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) +{ + 8004dd4: b580 push {r7, lr} + 8004dd6: b082 sub sp, #8 + 8004dd8: af00 add r7, sp, #0 + 8004dda: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_CaptureCallback could be implemented in the user file + */ +} + 8004ddc: 46c0 nop ; (mov r8, r8) + 8004dde: 46bd mov sp, r7 + 8004de0: b002 add sp, #8 + 8004de2: bd80 pop {r7, pc} + +08004de4 : + * @brief PWM Pulse finished callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { 8004de4: b580 push {r7, lr} 8004de6: b082 sub sp, #8 @@ -13672,7 +13707,7 @@ __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file + the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file */ } 8004dec: 46c0 nop ; (mov r8, r8) @@ -13680,12 +13715,12 @@ __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) 8004df0: b002 add sp, #8 8004df2: bd80 pop {r7, pc} -08004df4 : - * @brief Input Capture callback in non-blocking mode - * @param htim TIM IC handle +08004df4 : + * @brief Hall Trigger detection callback in non-blocking mode + * @param htim TIM handle * @retval None */ -__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) +__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) { 8004df4: b580 push {r7, lr} 8004df6: b082 sub sp, #8 @@ -13694,7 +13729,7 @@ __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_IC_CaptureCallback could be implemented in the user file + the HAL_TIM_TriggerCallback could be implemented in the user file */ } 8004dfc: 46c0 nop ; (mov r8, r8) @@ -13702,1689 +13737,1689 @@ __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) 8004e00: b002 add sp, #8 8004e02: bd80 pop {r7, pc} -08004e04 : - * @brief PWM Pulse finished callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) -{ - 8004e04: b580 push {r7, lr} - 8004e06: b082 sub sp, #8 - 8004e08: af00 add r7, sp, #0 - 8004e0a: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file - */ -} - 8004e0c: 46c0 nop ; (mov r8, r8) - 8004e0e: 46bd mov sp, r7 - 8004e10: b002 add sp, #8 - 8004e12: bd80 pop {r7, pc} - -08004e14 : - * @brief Hall Trigger detection callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) -{ - 8004e14: b580 push {r7, lr} - 8004e16: b082 sub sp, #8 - 8004e18: af00 add r7, sp, #0 - 8004e1a: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_TriggerCallback could be implemented in the user file - */ -} - 8004e1c: 46c0 nop ; (mov r8, r8) - 8004e1e: 46bd mov sp, r7 - 8004e20: b002 add sp, #8 - 8004e22: bd80 pop {r7, pc} - -08004e24 : +08004e04 : * @param TIMx TIM peripheral * @param Structure TIM Base configuration structure * @retval None */ void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) { - 8004e24: b580 push {r7, lr} - 8004e26: b084 sub sp, #16 - 8004e28: af00 add r7, sp, #0 - 8004e2a: 6078 str r0, [r7, #4] - 8004e2c: 6039 str r1, [r7, #0] + 8004e04: b580 push {r7, lr} + 8004e06: b084 sub sp, #16 + 8004e08: af00 add r7, sp, #0 + 8004e0a: 6078 str r0, [r7, #4] + 8004e0c: 6039 str r1, [r7, #0] uint32_t tmpcr1; tmpcr1 = TIMx->CR1; - 8004e2e: 687b ldr r3, [r7, #4] - 8004e30: 681b ldr r3, [r3, #0] - 8004e32: 60fb str r3, [r7, #12] + 8004e0e: 687b ldr r3, [r7, #4] + 8004e10: 681b ldr r3, [r3, #0] + 8004e12: 60fb str r3, [r7, #12] /* Set TIM Time Base Unit parameters ---------------------------------------*/ if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) - 8004e34: 687b ldr r3, [r7, #4] - 8004e36: 4a30 ldr r2, [pc, #192] ; (8004ef8 ) - 8004e38: 4293 cmp r3, r2 - 8004e3a: d008 beq.n 8004e4e - 8004e3c: 687a ldr r2, [r7, #4] - 8004e3e: 2380 movs r3, #128 ; 0x80 - 8004e40: 05db lsls r3, r3, #23 - 8004e42: 429a cmp r2, r3 - 8004e44: d003 beq.n 8004e4e - 8004e46: 687b ldr r3, [r7, #4] - 8004e48: 4a2c ldr r2, [pc, #176] ; (8004efc ) - 8004e4a: 4293 cmp r3, r2 - 8004e4c: d108 bne.n 8004e60 + 8004e14: 687b ldr r3, [r7, #4] + 8004e16: 4a30 ldr r2, [pc, #192] ; (8004ed8 ) + 8004e18: 4293 cmp r3, r2 + 8004e1a: d008 beq.n 8004e2e + 8004e1c: 687a ldr r2, [r7, #4] + 8004e1e: 2380 movs r3, #128 ; 0x80 + 8004e20: 05db lsls r3, r3, #23 + 8004e22: 429a cmp r2, r3 + 8004e24: d003 beq.n 8004e2e + 8004e26: 687b ldr r3, [r7, #4] + 8004e28: 4a2c ldr r2, [pc, #176] ; (8004edc ) + 8004e2a: 4293 cmp r3, r2 + 8004e2c: d108 bne.n 8004e40 { /* Select the Counter Mode */ tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); - 8004e4e: 68fb ldr r3, [r7, #12] - 8004e50: 2270 movs r2, #112 ; 0x70 - 8004e52: 4393 bics r3, r2 - 8004e54: 60fb str r3, [r7, #12] + 8004e2e: 68fb ldr r3, [r7, #12] + 8004e30: 2270 movs r2, #112 ; 0x70 + 8004e32: 4393 bics r3, r2 + 8004e34: 60fb str r3, [r7, #12] tmpcr1 |= Structure->CounterMode; - 8004e56: 683b ldr r3, [r7, #0] - 8004e58: 685b ldr r3, [r3, #4] - 8004e5a: 68fa ldr r2, [r7, #12] - 8004e5c: 4313 orrs r3, r2 - 8004e5e: 60fb str r3, [r7, #12] + 8004e36: 683b ldr r3, [r7, #0] + 8004e38: 685b ldr r3, [r3, #4] + 8004e3a: 68fa ldr r2, [r7, #12] + 8004e3c: 4313 orrs r3, r2 + 8004e3e: 60fb str r3, [r7, #12] } if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) - 8004e60: 687b ldr r3, [r7, #4] - 8004e62: 4a25 ldr r2, [pc, #148] ; (8004ef8 ) - 8004e64: 4293 cmp r3, r2 - 8004e66: d014 beq.n 8004e92 - 8004e68: 687a ldr r2, [r7, #4] - 8004e6a: 2380 movs r3, #128 ; 0x80 - 8004e6c: 05db lsls r3, r3, #23 - 8004e6e: 429a cmp r2, r3 - 8004e70: d00f beq.n 8004e92 - 8004e72: 687b ldr r3, [r7, #4] - 8004e74: 4a21 ldr r2, [pc, #132] ; (8004efc ) - 8004e76: 4293 cmp r3, r2 - 8004e78: d00b beq.n 8004e92 - 8004e7a: 687b ldr r3, [r7, #4] - 8004e7c: 4a20 ldr r2, [pc, #128] ; (8004f00 ) - 8004e7e: 4293 cmp r3, r2 - 8004e80: d007 beq.n 8004e92 - 8004e82: 687b ldr r3, [r7, #4] - 8004e84: 4a1f ldr r2, [pc, #124] ; (8004f04 ) - 8004e86: 4293 cmp r3, r2 - 8004e88: d003 beq.n 8004e92 - 8004e8a: 687b ldr r3, [r7, #4] - 8004e8c: 4a1e ldr r2, [pc, #120] ; (8004f08 ) - 8004e8e: 4293 cmp r3, r2 - 8004e90: d108 bne.n 8004ea4 + 8004e40: 687b ldr r3, [r7, #4] + 8004e42: 4a25 ldr r2, [pc, #148] ; (8004ed8 ) + 8004e44: 4293 cmp r3, r2 + 8004e46: d014 beq.n 8004e72 + 8004e48: 687a ldr r2, [r7, #4] + 8004e4a: 2380 movs r3, #128 ; 0x80 + 8004e4c: 05db lsls r3, r3, #23 + 8004e4e: 429a cmp r2, r3 + 8004e50: d00f beq.n 8004e72 + 8004e52: 687b ldr r3, [r7, #4] + 8004e54: 4a21 ldr r2, [pc, #132] ; (8004edc ) + 8004e56: 4293 cmp r3, r2 + 8004e58: d00b beq.n 8004e72 + 8004e5a: 687b ldr r3, [r7, #4] + 8004e5c: 4a20 ldr r2, [pc, #128] ; (8004ee0 ) + 8004e5e: 4293 cmp r3, r2 + 8004e60: d007 beq.n 8004e72 + 8004e62: 687b ldr r3, [r7, #4] + 8004e64: 4a1f ldr r2, [pc, #124] ; (8004ee4 ) + 8004e66: 4293 cmp r3, r2 + 8004e68: d003 beq.n 8004e72 + 8004e6a: 687b ldr r3, [r7, #4] + 8004e6c: 4a1e ldr r2, [pc, #120] ; (8004ee8 ) + 8004e6e: 4293 cmp r3, r2 + 8004e70: d108 bne.n 8004e84 { /* Set the clock division */ tmpcr1 &= ~TIM_CR1_CKD; - 8004e92: 68fb ldr r3, [r7, #12] - 8004e94: 4a1d ldr r2, [pc, #116] ; (8004f0c ) - 8004e96: 4013 ands r3, r2 - 8004e98: 60fb str r3, [r7, #12] + 8004e72: 68fb ldr r3, [r7, #12] + 8004e74: 4a1d ldr r2, [pc, #116] ; (8004eec ) + 8004e76: 4013 ands r3, r2 + 8004e78: 60fb str r3, [r7, #12] tmpcr1 |= (uint32_t)Structure->ClockDivision; - 8004e9a: 683b ldr r3, [r7, #0] - 8004e9c: 68db ldr r3, [r3, #12] - 8004e9e: 68fa ldr r2, [r7, #12] - 8004ea0: 4313 orrs r3, r2 - 8004ea2: 60fb str r3, [r7, #12] + 8004e7a: 683b ldr r3, [r7, #0] + 8004e7c: 68db ldr r3, [r3, #12] + 8004e7e: 68fa ldr r2, [r7, #12] + 8004e80: 4313 orrs r3, r2 + 8004e82: 60fb str r3, [r7, #12] } /* Set the auto-reload preload */ MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); - 8004ea4: 68fb ldr r3, [r7, #12] - 8004ea6: 2280 movs r2, #128 ; 0x80 - 8004ea8: 4393 bics r3, r2 - 8004eaa: 001a movs r2, r3 - 8004eac: 683b ldr r3, [r7, #0] - 8004eae: 695b ldr r3, [r3, #20] - 8004eb0: 4313 orrs r3, r2 - 8004eb2: 60fb str r3, [r7, #12] + 8004e84: 68fb ldr r3, [r7, #12] + 8004e86: 2280 movs r2, #128 ; 0x80 + 8004e88: 4393 bics r3, r2 + 8004e8a: 001a movs r2, r3 + 8004e8c: 683b ldr r3, [r7, #0] + 8004e8e: 695b ldr r3, [r3, #20] + 8004e90: 4313 orrs r3, r2 + 8004e92: 60fb str r3, [r7, #12] TIMx->CR1 = tmpcr1; - 8004eb4: 687b ldr r3, [r7, #4] - 8004eb6: 68fa ldr r2, [r7, #12] - 8004eb8: 601a str r2, [r3, #0] + 8004e94: 687b ldr r3, [r7, #4] + 8004e96: 68fa ldr r2, [r7, #12] + 8004e98: 601a str r2, [r3, #0] /* Set the Autoreload value */ TIMx->ARR = (uint32_t)Structure->Period ; - 8004eba: 683b ldr r3, [r7, #0] - 8004ebc: 689a ldr r2, [r3, #8] - 8004ebe: 687b ldr r3, [r7, #4] - 8004ec0: 62da str r2, [r3, #44] ; 0x2c + 8004e9a: 683b ldr r3, [r7, #0] + 8004e9c: 689a ldr r2, [r3, #8] + 8004e9e: 687b ldr r3, [r7, #4] + 8004ea0: 62da str r2, [r3, #44] ; 0x2c /* Set the Prescaler value */ TIMx->PSC = Structure->Prescaler; - 8004ec2: 683b ldr r3, [r7, #0] - 8004ec4: 681a ldr r2, [r3, #0] - 8004ec6: 687b ldr r3, [r7, #4] - 8004ec8: 629a str r2, [r3, #40] ; 0x28 + 8004ea2: 683b ldr r3, [r7, #0] + 8004ea4: 681a ldr r2, [r3, #0] + 8004ea6: 687b ldr r3, [r7, #4] + 8004ea8: 629a str r2, [r3, #40] ; 0x28 if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) - 8004eca: 687b ldr r3, [r7, #4] - 8004ecc: 4a0a ldr r2, [pc, #40] ; (8004ef8 ) - 8004ece: 4293 cmp r3, r2 - 8004ed0: d007 beq.n 8004ee2 - 8004ed2: 687b ldr r3, [r7, #4] - 8004ed4: 4a0b ldr r2, [pc, #44] ; (8004f04 ) - 8004ed6: 4293 cmp r3, r2 - 8004ed8: d003 beq.n 8004ee2 - 8004eda: 687b ldr r3, [r7, #4] - 8004edc: 4a0a ldr r2, [pc, #40] ; (8004f08 ) - 8004ede: 4293 cmp r3, r2 - 8004ee0: d103 bne.n 8004eea + 8004eaa: 687b ldr r3, [r7, #4] + 8004eac: 4a0a ldr r2, [pc, #40] ; (8004ed8 ) + 8004eae: 4293 cmp r3, r2 + 8004eb0: d007 beq.n 8004ec2 + 8004eb2: 687b ldr r3, [r7, #4] + 8004eb4: 4a0b ldr r2, [pc, #44] ; (8004ee4 ) + 8004eb6: 4293 cmp r3, r2 + 8004eb8: d003 beq.n 8004ec2 + 8004eba: 687b ldr r3, [r7, #4] + 8004ebc: 4a0a ldr r2, [pc, #40] ; (8004ee8 ) + 8004ebe: 4293 cmp r3, r2 + 8004ec0: d103 bne.n 8004eca { /* Set the Repetition Counter value */ TIMx->RCR = Structure->RepetitionCounter; - 8004ee2: 683b ldr r3, [r7, #0] - 8004ee4: 691a ldr r2, [r3, #16] - 8004ee6: 687b ldr r3, [r7, #4] - 8004ee8: 631a str r2, [r3, #48] ; 0x30 + 8004ec2: 683b ldr r3, [r7, #0] + 8004ec4: 691a ldr r2, [r3, #16] + 8004ec6: 687b ldr r3, [r7, #4] + 8004ec8: 631a str r2, [r3, #48] ; 0x30 } /* Generate an update event to reload the Prescaler and the repetition counter (only for advanced timer) value immediately */ TIMx->EGR = TIM_EGR_UG; - 8004eea: 687b ldr r3, [r7, #4] - 8004eec: 2201 movs r2, #1 - 8004eee: 615a str r2, [r3, #20] + 8004eca: 687b ldr r3, [r7, #4] + 8004ecc: 2201 movs r2, #1 + 8004ece: 615a str r2, [r3, #20] } - 8004ef0: 46c0 nop ; (mov r8, r8) - 8004ef2: 46bd mov sp, r7 - 8004ef4: b004 add sp, #16 - 8004ef6: bd80 pop {r7, pc} - 8004ef8: 40012c00 .word 0x40012c00 - 8004efc: 40000400 .word 0x40000400 - 8004f00: 40002000 .word 0x40002000 - 8004f04: 40014400 .word 0x40014400 - 8004f08: 40014800 .word 0x40014800 - 8004f0c: fffffcff .word 0xfffffcff + 8004ed0: 46c0 nop ; (mov r8, r8) + 8004ed2: 46bd mov sp, r7 + 8004ed4: b004 add sp, #16 + 8004ed6: bd80 pop {r7, pc} + 8004ed8: 40012c00 .word 0x40012c00 + 8004edc: 40000400 .word 0x40000400 + 8004ee0: 40002000 .word 0x40002000 + 8004ee4: 40014400 .word 0x40014400 + 8004ee8: 40014800 .word 0x40014800 + 8004eec: fffffcff .word 0xfffffcff -08004f10 : +08004ef0 : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) { - 8004f10: b580 push {r7, lr} - 8004f12: b086 sub sp, #24 - 8004f14: af00 add r7, sp, #0 - 8004f16: 6078 str r0, [r7, #4] - 8004f18: 6039 str r1, [r7, #0] + 8004ef0: b580 push {r7, lr} + 8004ef2: b086 sub sp, #24 + 8004ef4: af00 add r7, sp, #0 + 8004ef6: 6078 str r0, [r7, #4] + 8004ef8: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the Channel 1: Reset the CC1E Bit */ TIMx->CCER &= ~TIM_CCER_CC1E; - 8004f1a: 687b ldr r3, [r7, #4] - 8004f1c: 6a1b ldr r3, [r3, #32] - 8004f1e: 2201 movs r2, #1 - 8004f20: 4393 bics r3, r2 - 8004f22: 001a movs r2, r3 - 8004f24: 687b ldr r3, [r7, #4] - 8004f26: 621a str r2, [r3, #32] + 8004efa: 687b ldr r3, [r7, #4] + 8004efc: 6a1b ldr r3, [r3, #32] + 8004efe: 2201 movs r2, #1 + 8004f00: 4393 bics r3, r2 + 8004f02: 001a movs r2, r3 + 8004f04: 687b ldr r3, [r7, #4] + 8004f06: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 8004f28: 687b ldr r3, [r7, #4] - 8004f2a: 6a1b ldr r3, [r3, #32] - 8004f2c: 617b str r3, [r7, #20] + 8004f08: 687b ldr r3, [r7, #4] + 8004f0a: 6a1b ldr r3, [r3, #32] + 8004f0c: 617b str r3, [r7, #20] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 8004f2e: 687b ldr r3, [r7, #4] - 8004f30: 685b ldr r3, [r3, #4] - 8004f32: 613b str r3, [r7, #16] + 8004f0e: 687b ldr r3, [r7, #4] + 8004f10: 685b ldr r3, [r3, #4] + 8004f12: 613b str r3, [r7, #16] /* Get the TIMx CCMR1 register value */ tmpccmrx = TIMx->CCMR1; - 8004f34: 687b ldr r3, [r7, #4] - 8004f36: 699b ldr r3, [r3, #24] - 8004f38: 60fb str r3, [r7, #12] + 8004f14: 687b ldr r3, [r7, #4] + 8004f16: 699b ldr r3, [r3, #24] + 8004f18: 60fb str r3, [r7, #12] /* Reset the Output Compare Mode Bits */ tmpccmrx &= ~TIM_CCMR1_OC1M; - 8004f3a: 68fb ldr r3, [r7, #12] - 8004f3c: 4a2e ldr r2, [pc, #184] ; (8004ff8 ) - 8004f3e: 4013 ands r3, r2 - 8004f40: 60fb str r3, [r7, #12] + 8004f1a: 68fb ldr r3, [r7, #12] + 8004f1c: 4a2e ldr r2, [pc, #184] ; (8004fd8 ) + 8004f1e: 4013 ands r3, r2 + 8004f20: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR1_CC1S; - 8004f42: 68fb ldr r3, [r7, #12] - 8004f44: 2203 movs r2, #3 - 8004f46: 4393 bics r3, r2 - 8004f48: 60fb str r3, [r7, #12] + 8004f22: 68fb ldr r3, [r7, #12] + 8004f24: 2203 movs r2, #3 + 8004f26: 4393 bics r3, r2 + 8004f28: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= OC_Config->OCMode; - 8004f4a: 683b ldr r3, [r7, #0] - 8004f4c: 681b ldr r3, [r3, #0] - 8004f4e: 68fa ldr r2, [r7, #12] - 8004f50: 4313 orrs r3, r2 - 8004f52: 60fb str r3, [r7, #12] + 8004f2a: 683b ldr r3, [r7, #0] + 8004f2c: 681b ldr r3, [r3, #0] + 8004f2e: 68fa ldr r2, [r7, #12] + 8004f30: 4313 orrs r3, r2 + 8004f32: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC1P; - 8004f54: 697b ldr r3, [r7, #20] - 8004f56: 2202 movs r2, #2 - 8004f58: 4393 bics r3, r2 - 8004f5a: 617b str r3, [r7, #20] + 8004f34: 697b ldr r3, [r7, #20] + 8004f36: 2202 movs r2, #2 + 8004f38: 4393 bics r3, r2 + 8004f3a: 617b str r3, [r7, #20] /* Set the Output Compare Polarity */ tmpccer |= OC_Config->OCPolarity; - 8004f5c: 683b ldr r3, [r7, #0] - 8004f5e: 689b ldr r3, [r3, #8] - 8004f60: 697a ldr r2, [r7, #20] - 8004f62: 4313 orrs r3, r2 - 8004f64: 617b str r3, [r7, #20] + 8004f3c: 683b ldr r3, [r7, #0] + 8004f3e: 689b ldr r3, [r3, #8] + 8004f40: 697a ldr r2, [r7, #20] + 8004f42: 4313 orrs r3, r2 + 8004f44: 617b str r3, [r7, #20] if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1)) - 8004f66: 687b ldr r3, [r7, #4] - 8004f68: 4a24 ldr r2, [pc, #144] ; (8004ffc ) - 8004f6a: 4293 cmp r3, r2 - 8004f6c: d007 beq.n 8004f7e - 8004f6e: 687b ldr r3, [r7, #4] - 8004f70: 4a23 ldr r2, [pc, #140] ; (8005000 ) - 8004f72: 4293 cmp r3, r2 - 8004f74: d003 beq.n 8004f7e - 8004f76: 687b ldr r3, [r7, #4] - 8004f78: 4a22 ldr r2, [pc, #136] ; (8005004 ) - 8004f7a: 4293 cmp r3, r2 - 8004f7c: d10c bne.n 8004f98 + 8004f46: 687b ldr r3, [r7, #4] + 8004f48: 4a24 ldr r2, [pc, #144] ; (8004fdc ) + 8004f4a: 4293 cmp r3, r2 + 8004f4c: d007 beq.n 8004f5e + 8004f4e: 687b ldr r3, [r7, #4] + 8004f50: 4a23 ldr r2, [pc, #140] ; (8004fe0 ) + 8004f52: 4293 cmp r3, r2 + 8004f54: d003 beq.n 8004f5e + 8004f56: 687b ldr r3, [r7, #4] + 8004f58: 4a22 ldr r2, [pc, #136] ; (8004fe4 ) + 8004f5a: 4293 cmp r3, r2 + 8004f5c: d10c bne.n 8004f78 { /* Check parameters */ assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); /* Reset the Output N Polarity level */ tmpccer &= ~TIM_CCER_CC1NP; - 8004f7e: 697b ldr r3, [r7, #20] - 8004f80: 2208 movs r2, #8 - 8004f82: 4393 bics r3, r2 - 8004f84: 617b str r3, [r7, #20] + 8004f5e: 697b ldr r3, [r7, #20] + 8004f60: 2208 movs r2, #8 + 8004f62: 4393 bics r3, r2 + 8004f64: 617b str r3, [r7, #20] /* Set the Output N Polarity */ tmpccer |= OC_Config->OCNPolarity; - 8004f86: 683b ldr r3, [r7, #0] - 8004f88: 68db ldr r3, [r3, #12] - 8004f8a: 697a ldr r2, [r7, #20] - 8004f8c: 4313 orrs r3, r2 - 8004f8e: 617b str r3, [r7, #20] + 8004f66: 683b ldr r3, [r7, #0] + 8004f68: 68db ldr r3, [r3, #12] + 8004f6a: 697a ldr r2, [r7, #20] + 8004f6c: 4313 orrs r3, r2 + 8004f6e: 617b str r3, [r7, #20] /* Reset the Output N State */ tmpccer &= ~TIM_CCER_CC1NE; - 8004f90: 697b ldr r3, [r7, #20] - 8004f92: 2204 movs r2, #4 - 8004f94: 4393 bics r3, r2 - 8004f96: 617b str r3, [r7, #20] + 8004f70: 697b ldr r3, [r7, #20] + 8004f72: 2204 movs r2, #4 + 8004f74: 4393 bics r3, r2 + 8004f76: 617b str r3, [r7, #20] } if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8004f98: 687b ldr r3, [r7, #4] - 8004f9a: 4a18 ldr r2, [pc, #96] ; (8004ffc ) - 8004f9c: 4293 cmp r3, r2 - 8004f9e: d007 beq.n 8004fb0 - 8004fa0: 687b ldr r3, [r7, #4] - 8004fa2: 4a17 ldr r2, [pc, #92] ; (8005000 ) - 8004fa4: 4293 cmp r3, r2 - 8004fa6: d003 beq.n 8004fb0 - 8004fa8: 687b ldr r3, [r7, #4] - 8004faa: 4a16 ldr r2, [pc, #88] ; (8005004 ) - 8004fac: 4293 cmp r3, r2 - 8004fae: d111 bne.n 8004fd4 + 8004f78: 687b ldr r3, [r7, #4] + 8004f7a: 4a18 ldr r2, [pc, #96] ; (8004fdc ) + 8004f7c: 4293 cmp r3, r2 + 8004f7e: d007 beq.n 8004f90 + 8004f80: 687b ldr r3, [r7, #4] + 8004f82: 4a17 ldr r2, [pc, #92] ; (8004fe0 ) + 8004f84: 4293 cmp r3, r2 + 8004f86: d003 beq.n 8004f90 + 8004f88: 687b ldr r3, [r7, #4] + 8004f8a: 4a16 ldr r2, [pc, #88] ; (8004fe4 ) + 8004f8c: 4293 cmp r3, r2 + 8004f8e: d111 bne.n 8004fb4 /* Check parameters */ assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); /* Reset the Output Compare and Output Compare N IDLE State */ tmpcr2 &= ~TIM_CR2_OIS1; - 8004fb0: 693b ldr r3, [r7, #16] - 8004fb2: 4a15 ldr r2, [pc, #84] ; (8005008 ) - 8004fb4: 4013 ands r3, r2 - 8004fb6: 613b str r3, [r7, #16] + 8004f90: 693b ldr r3, [r7, #16] + 8004f92: 4a15 ldr r2, [pc, #84] ; (8004fe8 ) + 8004f94: 4013 ands r3, r2 + 8004f96: 613b str r3, [r7, #16] tmpcr2 &= ~TIM_CR2_OIS1N; - 8004fb8: 693b ldr r3, [r7, #16] - 8004fba: 4a14 ldr r2, [pc, #80] ; (800500c ) - 8004fbc: 4013 ands r3, r2 - 8004fbe: 613b str r3, [r7, #16] + 8004f98: 693b ldr r3, [r7, #16] + 8004f9a: 4a14 ldr r2, [pc, #80] ; (8004fec ) + 8004f9c: 4013 ands r3, r2 + 8004f9e: 613b str r3, [r7, #16] /* Set the Output Idle state */ tmpcr2 |= OC_Config->OCIdleState; - 8004fc0: 683b ldr r3, [r7, #0] - 8004fc2: 695b ldr r3, [r3, #20] - 8004fc4: 693a ldr r2, [r7, #16] - 8004fc6: 4313 orrs r3, r2 - 8004fc8: 613b str r3, [r7, #16] + 8004fa0: 683b ldr r3, [r7, #0] + 8004fa2: 695b ldr r3, [r3, #20] + 8004fa4: 693a ldr r2, [r7, #16] + 8004fa6: 4313 orrs r3, r2 + 8004fa8: 613b str r3, [r7, #16] /* Set the Output N Idle state */ tmpcr2 |= OC_Config->OCNIdleState; - 8004fca: 683b ldr r3, [r7, #0] - 8004fcc: 699b ldr r3, [r3, #24] - 8004fce: 693a ldr r2, [r7, #16] - 8004fd0: 4313 orrs r3, r2 - 8004fd2: 613b str r3, [r7, #16] + 8004faa: 683b ldr r3, [r7, #0] + 8004fac: 699b ldr r3, [r3, #24] + 8004fae: 693a ldr r2, [r7, #16] + 8004fb0: 4313 orrs r3, r2 + 8004fb2: 613b str r3, [r7, #16] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 8004fd4: 687b ldr r3, [r7, #4] - 8004fd6: 693a ldr r2, [r7, #16] - 8004fd8: 605a str r2, [r3, #4] + 8004fb4: 687b ldr r3, [r7, #4] + 8004fb6: 693a ldr r2, [r7, #16] + 8004fb8: 605a str r2, [r3, #4] /* Write to TIMx CCMR1 */ TIMx->CCMR1 = tmpccmrx; - 8004fda: 687b ldr r3, [r7, #4] - 8004fdc: 68fa ldr r2, [r7, #12] - 8004fde: 619a str r2, [r3, #24] + 8004fba: 687b ldr r3, [r7, #4] + 8004fbc: 68fa ldr r2, [r7, #12] + 8004fbe: 619a str r2, [r3, #24] /* Set the Capture Compare Register value */ TIMx->CCR1 = OC_Config->Pulse; - 8004fe0: 683b ldr r3, [r7, #0] - 8004fe2: 685a ldr r2, [r3, #4] - 8004fe4: 687b ldr r3, [r7, #4] - 8004fe6: 635a str r2, [r3, #52] ; 0x34 + 8004fc0: 683b ldr r3, [r7, #0] + 8004fc2: 685a ldr r2, [r3, #4] + 8004fc4: 687b ldr r3, [r7, #4] + 8004fc6: 635a str r2, [r3, #52] ; 0x34 /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 8004fe8: 687b ldr r3, [r7, #4] - 8004fea: 697a ldr r2, [r7, #20] - 8004fec: 621a str r2, [r3, #32] + 8004fc8: 687b ldr r3, [r7, #4] + 8004fca: 697a ldr r2, [r7, #20] + 8004fcc: 621a str r2, [r3, #32] } - 8004fee: 46c0 nop ; (mov r8, r8) - 8004ff0: 46bd mov sp, r7 - 8004ff2: b006 add sp, #24 - 8004ff4: bd80 pop {r7, pc} - 8004ff6: 46c0 nop ; (mov r8, r8) - 8004ff8: fffeff8f .word 0xfffeff8f - 8004ffc: 40012c00 .word 0x40012c00 - 8005000: 40014400 .word 0x40014400 - 8005004: 40014800 .word 0x40014800 - 8005008: fffffeff .word 0xfffffeff - 800500c: fffffdff .word 0xfffffdff + 8004fce: 46c0 nop ; (mov r8, r8) + 8004fd0: 46bd mov sp, r7 + 8004fd2: b006 add sp, #24 + 8004fd4: bd80 pop {r7, pc} + 8004fd6: 46c0 nop ; (mov r8, r8) + 8004fd8: fffeff8f .word 0xfffeff8f + 8004fdc: 40012c00 .word 0x40012c00 + 8004fe0: 40014400 .word 0x40014400 + 8004fe4: 40014800 .word 0x40014800 + 8004fe8: fffffeff .word 0xfffffeff + 8004fec: fffffdff .word 0xfffffdff -08005010 : +08004ff0 : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) { - 8005010: b580 push {r7, lr} - 8005012: b086 sub sp, #24 - 8005014: af00 add r7, sp, #0 - 8005016: 6078 str r0, [r7, #4] - 8005018: 6039 str r1, [r7, #0] + 8004ff0: b580 push {r7, lr} + 8004ff2: b086 sub sp, #24 + 8004ff4: af00 add r7, sp, #0 + 8004ff6: 6078 str r0, [r7, #4] + 8004ff8: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the Channel 2: Reset the CC2E Bit */ TIMx->CCER &= ~TIM_CCER_CC2E; - 800501a: 687b ldr r3, [r7, #4] - 800501c: 6a1b ldr r3, [r3, #32] - 800501e: 2210 movs r2, #16 - 8005020: 4393 bics r3, r2 - 8005022: 001a movs r2, r3 - 8005024: 687b ldr r3, [r7, #4] - 8005026: 621a str r2, [r3, #32] + 8004ffa: 687b ldr r3, [r7, #4] + 8004ffc: 6a1b ldr r3, [r3, #32] + 8004ffe: 2210 movs r2, #16 + 8005000: 4393 bics r3, r2 + 8005002: 001a movs r2, r3 + 8005004: 687b ldr r3, [r7, #4] + 8005006: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 8005028: 687b ldr r3, [r7, #4] - 800502a: 6a1b ldr r3, [r3, #32] - 800502c: 617b str r3, [r7, #20] + 8005008: 687b ldr r3, [r7, #4] + 800500a: 6a1b ldr r3, [r3, #32] + 800500c: 617b str r3, [r7, #20] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 800502e: 687b ldr r3, [r7, #4] - 8005030: 685b ldr r3, [r3, #4] - 8005032: 613b str r3, [r7, #16] + 800500e: 687b ldr r3, [r7, #4] + 8005010: 685b ldr r3, [r3, #4] + 8005012: 613b str r3, [r7, #16] /* Get the TIMx CCMR1 register value */ tmpccmrx = TIMx->CCMR1; - 8005034: 687b ldr r3, [r7, #4] - 8005036: 699b ldr r3, [r3, #24] - 8005038: 60fb str r3, [r7, #12] + 8005014: 687b ldr r3, [r7, #4] + 8005016: 699b ldr r3, [r3, #24] + 8005018: 60fb str r3, [r7, #12] /* Reset the Output Compare mode and Capture/Compare selection Bits */ tmpccmrx &= ~TIM_CCMR1_OC2M; - 800503a: 68fb ldr r3, [r7, #12] - 800503c: 4a2c ldr r2, [pc, #176] ; (80050f0 ) - 800503e: 4013 ands r3, r2 - 8005040: 60fb str r3, [r7, #12] + 800501a: 68fb ldr r3, [r7, #12] + 800501c: 4a2c ldr r2, [pc, #176] ; (80050d0 ) + 800501e: 4013 ands r3, r2 + 8005020: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR1_CC2S; - 8005042: 68fb ldr r3, [r7, #12] - 8005044: 4a2b ldr r2, [pc, #172] ; (80050f4 ) - 8005046: 4013 ands r3, r2 - 8005048: 60fb str r3, [r7, #12] + 8005022: 68fb ldr r3, [r7, #12] + 8005024: 4a2b ldr r2, [pc, #172] ; (80050d4 ) + 8005026: 4013 ands r3, r2 + 8005028: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= (OC_Config->OCMode << 8U); - 800504a: 683b ldr r3, [r7, #0] - 800504c: 681b ldr r3, [r3, #0] - 800504e: 021b lsls r3, r3, #8 - 8005050: 68fa ldr r2, [r7, #12] - 8005052: 4313 orrs r3, r2 - 8005054: 60fb str r3, [r7, #12] + 800502a: 683b ldr r3, [r7, #0] + 800502c: 681b ldr r3, [r3, #0] + 800502e: 021b lsls r3, r3, #8 + 8005030: 68fa ldr r2, [r7, #12] + 8005032: 4313 orrs r3, r2 + 8005034: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC2P; - 8005056: 697b ldr r3, [r7, #20] - 8005058: 2220 movs r2, #32 - 800505a: 4393 bics r3, r2 - 800505c: 617b str r3, [r7, #20] + 8005036: 697b ldr r3, [r7, #20] + 8005038: 2220 movs r2, #32 + 800503a: 4393 bics r3, r2 + 800503c: 617b str r3, [r7, #20] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 4U); - 800505e: 683b ldr r3, [r7, #0] - 8005060: 689b ldr r3, [r3, #8] - 8005062: 011b lsls r3, r3, #4 - 8005064: 697a ldr r2, [r7, #20] - 8005066: 4313 orrs r3, r2 - 8005068: 617b str r3, [r7, #20] + 800503e: 683b ldr r3, [r7, #0] + 8005040: 689b ldr r3, [r3, #8] + 8005042: 011b lsls r3, r3, #4 + 8005044: 697a ldr r2, [r7, #20] + 8005046: 4313 orrs r3, r2 + 8005048: 617b str r3, [r7, #20] if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2)) - 800506a: 687b ldr r3, [r7, #4] - 800506c: 4a22 ldr r2, [pc, #136] ; (80050f8 ) - 800506e: 4293 cmp r3, r2 - 8005070: d10d bne.n 800508e + 800504a: 687b ldr r3, [r7, #4] + 800504c: 4a22 ldr r2, [pc, #136] ; (80050d8 ) + 800504e: 4293 cmp r3, r2 + 8005050: d10d bne.n 800506e { assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); /* Reset the Output N Polarity level */ tmpccer &= ~TIM_CCER_CC2NP; - 8005072: 697b ldr r3, [r7, #20] - 8005074: 2280 movs r2, #128 ; 0x80 - 8005076: 4393 bics r3, r2 - 8005078: 617b str r3, [r7, #20] + 8005052: 697b ldr r3, [r7, #20] + 8005054: 2280 movs r2, #128 ; 0x80 + 8005056: 4393 bics r3, r2 + 8005058: 617b str r3, [r7, #20] /* Set the Output N Polarity */ tmpccer |= (OC_Config->OCNPolarity << 4U); - 800507a: 683b ldr r3, [r7, #0] - 800507c: 68db ldr r3, [r3, #12] - 800507e: 011b lsls r3, r3, #4 - 8005080: 697a ldr r2, [r7, #20] - 8005082: 4313 orrs r3, r2 - 8005084: 617b str r3, [r7, #20] + 800505a: 683b ldr r3, [r7, #0] + 800505c: 68db ldr r3, [r3, #12] + 800505e: 011b lsls r3, r3, #4 + 8005060: 697a ldr r2, [r7, #20] + 8005062: 4313 orrs r3, r2 + 8005064: 617b str r3, [r7, #20] /* Reset the Output N State */ tmpccer &= ~TIM_CCER_CC2NE; - 8005086: 697b ldr r3, [r7, #20] - 8005088: 2240 movs r2, #64 ; 0x40 - 800508a: 4393 bics r3, r2 - 800508c: 617b str r3, [r7, #20] + 8005066: 697b ldr r3, [r7, #20] + 8005068: 2240 movs r2, #64 ; 0x40 + 800506a: 4393 bics r3, r2 + 800506c: 617b str r3, [r7, #20] } if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800508e: 687b ldr r3, [r7, #4] - 8005090: 4a19 ldr r2, [pc, #100] ; (80050f8 ) - 8005092: 4293 cmp r3, r2 - 8005094: d007 beq.n 80050a6 - 8005096: 687b ldr r3, [r7, #4] - 8005098: 4a18 ldr r2, [pc, #96] ; (80050fc ) - 800509a: 4293 cmp r3, r2 - 800509c: d003 beq.n 80050a6 - 800509e: 687b ldr r3, [r7, #4] - 80050a0: 4a17 ldr r2, [pc, #92] ; (8005100 ) - 80050a2: 4293 cmp r3, r2 - 80050a4: d113 bne.n 80050ce + 800506e: 687b ldr r3, [r7, #4] + 8005070: 4a19 ldr r2, [pc, #100] ; (80050d8 ) + 8005072: 4293 cmp r3, r2 + 8005074: d007 beq.n 8005086 + 8005076: 687b ldr r3, [r7, #4] + 8005078: 4a18 ldr r2, [pc, #96] ; (80050dc ) + 800507a: 4293 cmp r3, r2 + 800507c: d003 beq.n 8005086 + 800507e: 687b ldr r3, [r7, #4] + 8005080: 4a17 ldr r2, [pc, #92] ; (80050e0 ) + 8005082: 4293 cmp r3, r2 + 8005084: d113 bne.n 80050ae /* Check parameters */ assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); /* Reset the Output Compare and Output Compare N IDLE State */ tmpcr2 &= ~TIM_CR2_OIS2; - 80050a6: 693b ldr r3, [r7, #16] - 80050a8: 4a16 ldr r2, [pc, #88] ; (8005104 ) - 80050aa: 4013 ands r3, r2 - 80050ac: 613b str r3, [r7, #16] + 8005086: 693b ldr r3, [r7, #16] + 8005088: 4a16 ldr r2, [pc, #88] ; (80050e4 ) + 800508a: 4013 ands r3, r2 + 800508c: 613b str r3, [r7, #16] tmpcr2 &= ~TIM_CR2_OIS2N; - 80050ae: 693b ldr r3, [r7, #16] - 80050b0: 4a15 ldr r2, [pc, #84] ; (8005108 ) - 80050b2: 4013 ands r3, r2 - 80050b4: 613b str r3, [r7, #16] + 800508e: 693b ldr r3, [r7, #16] + 8005090: 4a15 ldr r2, [pc, #84] ; (80050e8 ) + 8005092: 4013 ands r3, r2 + 8005094: 613b str r3, [r7, #16] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 2U); - 80050b6: 683b ldr r3, [r7, #0] - 80050b8: 695b ldr r3, [r3, #20] - 80050ba: 009b lsls r3, r3, #2 - 80050bc: 693a ldr r2, [r7, #16] - 80050be: 4313 orrs r3, r2 - 80050c0: 613b str r3, [r7, #16] + 8005096: 683b ldr r3, [r7, #0] + 8005098: 695b ldr r3, [r3, #20] + 800509a: 009b lsls r3, r3, #2 + 800509c: 693a ldr r2, [r7, #16] + 800509e: 4313 orrs r3, r2 + 80050a0: 613b str r3, [r7, #16] /* Set the Output N Idle state */ tmpcr2 |= (OC_Config->OCNIdleState << 2U); - 80050c2: 683b ldr r3, [r7, #0] - 80050c4: 699b ldr r3, [r3, #24] - 80050c6: 009b lsls r3, r3, #2 - 80050c8: 693a ldr r2, [r7, #16] - 80050ca: 4313 orrs r3, r2 - 80050cc: 613b str r3, [r7, #16] + 80050a2: 683b ldr r3, [r7, #0] + 80050a4: 699b ldr r3, [r3, #24] + 80050a6: 009b lsls r3, r3, #2 + 80050a8: 693a ldr r2, [r7, #16] + 80050aa: 4313 orrs r3, r2 + 80050ac: 613b str r3, [r7, #16] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 80050ce: 687b ldr r3, [r7, #4] - 80050d0: 693a ldr r2, [r7, #16] - 80050d2: 605a str r2, [r3, #4] + 80050ae: 687b ldr r3, [r7, #4] + 80050b0: 693a ldr r2, [r7, #16] + 80050b2: 605a str r2, [r3, #4] /* Write to TIMx CCMR1 */ TIMx->CCMR1 = tmpccmrx; - 80050d4: 687b ldr r3, [r7, #4] - 80050d6: 68fa ldr r2, [r7, #12] - 80050d8: 619a str r2, [r3, #24] + 80050b4: 687b ldr r3, [r7, #4] + 80050b6: 68fa ldr r2, [r7, #12] + 80050b8: 619a str r2, [r3, #24] /* Set the Capture Compare Register value */ TIMx->CCR2 = OC_Config->Pulse; - 80050da: 683b ldr r3, [r7, #0] - 80050dc: 685a ldr r2, [r3, #4] - 80050de: 687b ldr r3, [r7, #4] - 80050e0: 639a str r2, [r3, #56] ; 0x38 + 80050ba: 683b ldr r3, [r7, #0] + 80050bc: 685a ldr r2, [r3, #4] + 80050be: 687b ldr r3, [r7, #4] + 80050c0: 639a str r2, [r3, #56] ; 0x38 /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 80050e2: 687b ldr r3, [r7, #4] - 80050e4: 697a ldr r2, [r7, #20] - 80050e6: 621a str r2, [r3, #32] + 80050c2: 687b ldr r3, [r7, #4] + 80050c4: 697a ldr r2, [r7, #20] + 80050c6: 621a str r2, [r3, #32] } - 80050e8: 46c0 nop ; (mov r8, r8) - 80050ea: 46bd mov sp, r7 - 80050ec: b006 add sp, #24 - 80050ee: bd80 pop {r7, pc} - 80050f0: feff8fff .word 0xfeff8fff - 80050f4: fffffcff .word 0xfffffcff - 80050f8: 40012c00 .word 0x40012c00 - 80050fc: 40014400 .word 0x40014400 - 8005100: 40014800 .word 0x40014800 - 8005104: fffffbff .word 0xfffffbff - 8005108: fffff7ff .word 0xfffff7ff + 80050c8: 46c0 nop ; (mov r8, r8) + 80050ca: 46bd mov sp, r7 + 80050cc: b006 add sp, #24 + 80050ce: bd80 pop {r7, pc} + 80050d0: feff8fff .word 0xfeff8fff + 80050d4: fffffcff .word 0xfffffcff + 80050d8: 40012c00 .word 0x40012c00 + 80050dc: 40014400 .word 0x40014400 + 80050e0: 40014800 .word 0x40014800 + 80050e4: fffffbff .word 0xfffffbff + 80050e8: fffff7ff .word 0xfffff7ff -0800510c : +080050ec : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) { - 800510c: b580 push {r7, lr} - 800510e: b086 sub sp, #24 - 8005110: af00 add r7, sp, #0 - 8005112: 6078 str r0, [r7, #4] - 8005114: 6039 str r1, [r7, #0] + 80050ec: b580 push {r7, lr} + 80050ee: b086 sub sp, #24 + 80050f0: af00 add r7, sp, #0 + 80050f2: 6078 str r0, [r7, #4] + 80050f4: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the Channel 3: Reset the CC2E Bit */ TIMx->CCER &= ~TIM_CCER_CC3E; - 8005116: 687b ldr r3, [r7, #4] - 8005118: 6a1b ldr r3, [r3, #32] - 800511a: 4a33 ldr r2, [pc, #204] ; (80051e8 ) - 800511c: 401a ands r2, r3 - 800511e: 687b ldr r3, [r7, #4] - 8005120: 621a str r2, [r3, #32] + 80050f6: 687b ldr r3, [r7, #4] + 80050f8: 6a1b ldr r3, [r3, #32] + 80050fa: 4a33 ldr r2, [pc, #204] ; (80051c8 ) + 80050fc: 401a ands r2, r3 + 80050fe: 687b ldr r3, [r7, #4] + 8005100: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 8005122: 687b ldr r3, [r7, #4] - 8005124: 6a1b ldr r3, [r3, #32] - 8005126: 617b str r3, [r7, #20] + 8005102: 687b ldr r3, [r7, #4] + 8005104: 6a1b ldr r3, [r3, #32] + 8005106: 617b str r3, [r7, #20] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 8005128: 687b ldr r3, [r7, #4] - 800512a: 685b ldr r3, [r3, #4] - 800512c: 613b str r3, [r7, #16] + 8005108: 687b ldr r3, [r7, #4] + 800510a: 685b ldr r3, [r3, #4] + 800510c: 613b str r3, [r7, #16] /* Get the TIMx CCMR2 register value */ tmpccmrx = TIMx->CCMR2; - 800512e: 687b ldr r3, [r7, #4] - 8005130: 69db ldr r3, [r3, #28] - 8005132: 60fb str r3, [r7, #12] + 800510e: 687b ldr r3, [r7, #4] + 8005110: 69db ldr r3, [r3, #28] + 8005112: 60fb str r3, [r7, #12] /* Reset the Output Compare mode and Capture/Compare selection Bits */ tmpccmrx &= ~TIM_CCMR2_OC3M; - 8005134: 68fb ldr r3, [r7, #12] - 8005136: 4a2d ldr r2, [pc, #180] ; (80051ec ) - 8005138: 4013 ands r3, r2 - 800513a: 60fb str r3, [r7, #12] + 8005114: 68fb ldr r3, [r7, #12] + 8005116: 4a2d ldr r2, [pc, #180] ; (80051cc ) + 8005118: 4013 ands r3, r2 + 800511a: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR2_CC3S; - 800513c: 68fb ldr r3, [r7, #12] - 800513e: 2203 movs r2, #3 - 8005140: 4393 bics r3, r2 - 8005142: 60fb str r3, [r7, #12] + 800511c: 68fb ldr r3, [r7, #12] + 800511e: 2203 movs r2, #3 + 8005120: 4393 bics r3, r2 + 8005122: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= OC_Config->OCMode; - 8005144: 683b ldr r3, [r7, #0] - 8005146: 681b ldr r3, [r3, #0] - 8005148: 68fa ldr r2, [r7, #12] - 800514a: 4313 orrs r3, r2 - 800514c: 60fb str r3, [r7, #12] + 8005124: 683b ldr r3, [r7, #0] + 8005126: 681b ldr r3, [r3, #0] + 8005128: 68fa ldr r2, [r7, #12] + 800512a: 4313 orrs r3, r2 + 800512c: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC3P; - 800514e: 697b ldr r3, [r7, #20] - 8005150: 4a27 ldr r2, [pc, #156] ; (80051f0 ) - 8005152: 4013 ands r3, r2 - 8005154: 617b str r3, [r7, #20] + 800512e: 697b ldr r3, [r7, #20] + 8005130: 4a27 ldr r2, [pc, #156] ; (80051d0 ) + 8005132: 4013 ands r3, r2 + 8005134: 617b str r3, [r7, #20] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 8U); - 8005156: 683b ldr r3, [r7, #0] - 8005158: 689b ldr r3, [r3, #8] - 800515a: 021b lsls r3, r3, #8 - 800515c: 697a ldr r2, [r7, #20] - 800515e: 4313 orrs r3, r2 - 8005160: 617b str r3, [r7, #20] + 8005136: 683b ldr r3, [r7, #0] + 8005138: 689b ldr r3, [r3, #8] + 800513a: 021b lsls r3, r3, #8 + 800513c: 697a ldr r2, [r7, #20] + 800513e: 4313 orrs r3, r2 + 8005140: 617b str r3, [r7, #20] if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3)) - 8005162: 687b ldr r3, [r7, #4] - 8005164: 4a23 ldr r2, [pc, #140] ; (80051f4 ) - 8005166: 4293 cmp r3, r2 - 8005168: d10d bne.n 8005186 + 8005142: 687b ldr r3, [r7, #4] + 8005144: 4a23 ldr r2, [pc, #140] ; (80051d4 ) + 8005146: 4293 cmp r3, r2 + 8005148: d10d bne.n 8005166 { assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); /* Reset the Output N Polarity level */ tmpccer &= ~TIM_CCER_CC3NP; - 800516a: 697b ldr r3, [r7, #20] - 800516c: 4a22 ldr r2, [pc, #136] ; (80051f8 ) - 800516e: 4013 ands r3, r2 - 8005170: 617b str r3, [r7, #20] + 800514a: 697b ldr r3, [r7, #20] + 800514c: 4a22 ldr r2, [pc, #136] ; (80051d8 ) + 800514e: 4013 ands r3, r2 + 8005150: 617b str r3, [r7, #20] /* Set the Output N Polarity */ tmpccer |= (OC_Config->OCNPolarity << 8U); - 8005172: 683b ldr r3, [r7, #0] - 8005174: 68db ldr r3, [r3, #12] - 8005176: 021b lsls r3, r3, #8 - 8005178: 697a ldr r2, [r7, #20] - 800517a: 4313 orrs r3, r2 - 800517c: 617b str r3, [r7, #20] + 8005152: 683b ldr r3, [r7, #0] + 8005154: 68db ldr r3, [r3, #12] + 8005156: 021b lsls r3, r3, #8 + 8005158: 697a ldr r2, [r7, #20] + 800515a: 4313 orrs r3, r2 + 800515c: 617b str r3, [r7, #20] /* Reset the Output N State */ tmpccer &= ~TIM_CCER_CC3NE; - 800517e: 697b ldr r3, [r7, #20] - 8005180: 4a1e ldr r2, [pc, #120] ; (80051fc ) - 8005182: 4013 ands r3, r2 - 8005184: 617b str r3, [r7, #20] + 800515e: 697b ldr r3, [r7, #20] + 8005160: 4a1e ldr r2, [pc, #120] ; (80051dc ) + 8005162: 4013 ands r3, r2 + 8005164: 617b str r3, [r7, #20] } if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8005186: 687b ldr r3, [r7, #4] - 8005188: 4a1a ldr r2, [pc, #104] ; (80051f4 ) - 800518a: 4293 cmp r3, r2 - 800518c: d007 beq.n 800519e - 800518e: 687b ldr r3, [r7, #4] - 8005190: 4a1b ldr r2, [pc, #108] ; (8005200 ) - 8005192: 4293 cmp r3, r2 - 8005194: d003 beq.n 800519e - 8005196: 687b ldr r3, [r7, #4] - 8005198: 4a1a ldr r2, [pc, #104] ; (8005204 ) - 800519a: 4293 cmp r3, r2 - 800519c: d113 bne.n 80051c6 + 8005166: 687b ldr r3, [r7, #4] + 8005168: 4a1a ldr r2, [pc, #104] ; (80051d4 ) + 800516a: 4293 cmp r3, r2 + 800516c: d007 beq.n 800517e + 800516e: 687b ldr r3, [r7, #4] + 8005170: 4a1b ldr r2, [pc, #108] ; (80051e0 ) + 8005172: 4293 cmp r3, r2 + 8005174: d003 beq.n 800517e + 8005176: 687b ldr r3, [r7, #4] + 8005178: 4a1a ldr r2, [pc, #104] ; (80051e4 ) + 800517a: 4293 cmp r3, r2 + 800517c: d113 bne.n 80051a6 /* Check parameters */ assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); /* Reset the Output Compare and Output Compare N IDLE State */ tmpcr2 &= ~TIM_CR2_OIS3; - 800519e: 693b ldr r3, [r7, #16] - 80051a0: 4a19 ldr r2, [pc, #100] ; (8005208 ) - 80051a2: 4013 ands r3, r2 - 80051a4: 613b str r3, [r7, #16] + 800517e: 693b ldr r3, [r7, #16] + 8005180: 4a19 ldr r2, [pc, #100] ; (80051e8 ) + 8005182: 4013 ands r3, r2 + 8005184: 613b str r3, [r7, #16] tmpcr2 &= ~TIM_CR2_OIS3N; - 80051a6: 693b ldr r3, [r7, #16] - 80051a8: 4a18 ldr r2, [pc, #96] ; (800520c ) - 80051aa: 4013 ands r3, r2 - 80051ac: 613b str r3, [r7, #16] + 8005186: 693b ldr r3, [r7, #16] + 8005188: 4a18 ldr r2, [pc, #96] ; (80051ec ) + 800518a: 4013 ands r3, r2 + 800518c: 613b str r3, [r7, #16] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 4U); - 80051ae: 683b ldr r3, [r7, #0] - 80051b0: 695b ldr r3, [r3, #20] - 80051b2: 011b lsls r3, r3, #4 - 80051b4: 693a ldr r2, [r7, #16] - 80051b6: 4313 orrs r3, r2 - 80051b8: 613b str r3, [r7, #16] + 800518e: 683b ldr r3, [r7, #0] + 8005190: 695b ldr r3, [r3, #20] + 8005192: 011b lsls r3, r3, #4 + 8005194: 693a ldr r2, [r7, #16] + 8005196: 4313 orrs r3, r2 + 8005198: 613b str r3, [r7, #16] /* Set the Output N Idle state */ tmpcr2 |= (OC_Config->OCNIdleState << 4U); - 80051ba: 683b ldr r3, [r7, #0] - 80051bc: 699b ldr r3, [r3, #24] - 80051be: 011b lsls r3, r3, #4 - 80051c0: 693a ldr r2, [r7, #16] - 80051c2: 4313 orrs r3, r2 - 80051c4: 613b str r3, [r7, #16] + 800519a: 683b ldr r3, [r7, #0] + 800519c: 699b ldr r3, [r3, #24] + 800519e: 011b lsls r3, r3, #4 + 80051a0: 693a ldr r2, [r7, #16] + 80051a2: 4313 orrs r3, r2 + 80051a4: 613b str r3, [r7, #16] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 80051c6: 687b ldr r3, [r7, #4] - 80051c8: 693a ldr r2, [r7, #16] - 80051ca: 605a str r2, [r3, #4] + 80051a6: 687b ldr r3, [r7, #4] + 80051a8: 693a ldr r2, [r7, #16] + 80051aa: 605a str r2, [r3, #4] /* Write to TIMx CCMR2 */ TIMx->CCMR2 = tmpccmrx; - 80051cc: 687b ldr r3, [r7, #4] - 80051ce: 68fa ldr r2, [r7, #12] - 80051d0: 61da str r2, [r3, #28] + 80051ac: 687b ldr r3, [r7, #4] + 80051ae: 68fa ldr r2, [r7, #12] + 80051b0: 61da str r2, [r3, #28] /* Set the Capture Compare Register value */ TIMx->CCR3 = OC_Config->Pulse; - 80051d2: 683b ldr r3, [r7, #0] - 80051d4: 685a ldr r2, [r3, #4] - 80051d6: 687b ldr r3, [r7, #4] - 80051d8: 63da str r2, [r3, #60] ; 0x3c + 80051b2: 683b ldr r3, [r7, #0] + 80051b4: 685a ldr r2, [r3, #4] + 80051b6: 687b ldr r3, [r7, #4] + 80051b8: 63da str r2, [r3, #60] ; 0x3c /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 80051da: 687b ldr r3, [r7, #4] - 80051dc: 697a ldr r2, [r7, #20] - 80051de: 621a str r2, [r3, #32] + 80051ba: 687b ldr r3, [r7, #4] + 80051bc: 697a ldr r2, [r7, #20] + 80051be: 621a str r2, [r3, #32] } - 80051e0: 46c0 nop ; (mov r8, r8) - 80051e2: 46bd mov sp, r7 - 80051e4: b006 add sp, #24 - 80051e6: bd80 pop {r7, pc} - 80051e8: fffffeff .word 0xfffffeff - 80051ec: fffeff8f .word 0xfffeff8f - 80051f0: fffffdff .word 0xfffffdff - 80051f4: 40012c00 .word 0x40012c00 - 80051f8: fffff7ff .word 0xfffff7ff - 80051fc: fffffbff .word 0xfffffbff - 8005200: 40014400 .word 0x40014400 - 8005204: 40014800 .word 0x40014800 - 8005208: ffffefff .word 0xffffefff - 800520c: ffffdfff .word 0xffffdfff + 80051c0: 46c0 nop ; (mov r8, r8) + 80051c2: 46bd mov sp, r7 + 80051c4: b006 add sp, #24 + 80051c6: bd80 pop {r7, pc} + 80051c8: fffffeff .word 0xfffffeff + 80051cc: fffeff8f .word 0xfffeff8f + 80051d0: fffffdff .word 0xfffffdff + 80051d4: 40012c00 .word 0x40012c00 + 80051d8: fffff7ff .word 0xfffff7ff + 80051dc: fffffbff .word 0xfffffbff + 80051e0: 40014400 .word 0x40014400 + 80051e4: 40014800 .word 0x40014800 + 80051e8: ffffefff .word 0xffffefff + 80051ec: ffffdfff .word 0xffffdfff -08005210 : +080051f0 : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) { - 8005210: b580 push {r7, lr} - 8005212: b086 sub sp, #24 - 8005214: af00 add r7, sp, #0 - 8005216: 6078 str r0, [r7, #4] - 8005218: 6039 str r1, [r7, #0] + 80051f0: b580 push {r7, lr} + 80051f2: b086 sub sp, #24 + 80051f4: af00 add r7, sp, #0 + 80051f6: 6078 str r0, [r7, #4] + 80051f8: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the Channel 4: Reset the CC4E Bit */ TIMx->CCER &= ~TIM_CCER_CC4E; - 800521a: 687b ldr r3, [r7, #4] - 800521c: 6a1b ldr r3, [r3, #32] - 800521e: 4a26 ldr r2, [pc, #152] ; (80052b8 ) - 8005220: 401a ands r2, r3 - 8005222: 687b ldr r3, [r7, #4] - 8005224: 621a str r2, [r3, #32] + 80051fa: 687b ldr r3, [r7, #4] + 80051fc: 6a1b ldr r3, [r3, #32] + 80051fe: 4a26 ldr r2, [pc, #152] ; (8005298 ) + 8005200: 401a ands r2, r3 + 8005202: 687b ldr r3, [r7, #4] + 8005204: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 8005226: 687b ldr r3, [r7, #4] - 8005228: 6a1b ldr r3, [r3, #32] - 800522a: 613b str r3, [r7, #16] + 8005206: 687b ldr r3, [r7, #4] + 8005208: 6a1b ldr r3, [r3, #32] + 800520a: 613b str r3, [r7, #16] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 800522c: 687b ldr r3, [r7, #4] - 800522e: 685b ldr r3, [r3, #4] - 8005230: 617b str r3, [r7, #20] + 800520c: 687b ldr r3, [r7, #4] + 800520e: 685b ldr r3, [r3, #4] + 8005210: 617b str r3, [r7, #20] /* Get the TIMx CCMR2 register value */ tmpccmrx = TIMx->CCMR2; - 8005232: 687b ldr r3, [r7, #4] - 8005234: 69db ldr r3, [r3, #28] - 8005236: 60fb str r3, [r7, #12] + 8005212: 687b ldr r3, [r7, #4] + 8005214: 69db ldr r3, [r3, #28] + 8005216: 60fb str r3, [r7, #12] /* Reset the Output Compare mode and Capture/Compare selection Bits */ tmpccmrx &= ~TIM_CCMR2_OC4M; - 8005238: 68fb ldr r3, [r7, #12] - 800523a: 4a20 ldr r2, [pc, #128] ; (80052bc ) - 800523c: 4013 ands r3, r2 - 800523e: 60fb str r3, [r7, #12] + 8005218: 68fb ldr r3, [r7, #12] + 800521a: 4a20 ldr r2, [pc, #128] ; (800529c ) + 800521c: 4013 ands r3, r2 + 800521e: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR2_CC4S; - 8005240: 68fb ldr r3, [r7, #12] - 8005242: 4a1f ldr r2, [pc, #124] ; (80052c0 ) - 8005244: 4013 ands r3, r2 - 8005246: 60fb str r3, [r7, #12] + 8005220: 68fb ldr r3, [r7, #12] + 8005222: 4a1f ldr r2, [pc, #124] ; (80052a0 ) + 8005224: 4013 ands r3, r2 + 8005226: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= (OC_Config->OCMode << 8U); - 8005248: 683b ldr r3, [r7, #0] - 800524a: 681b ldr r3, [r3, #0] - 800524c: 021b lsls r3, r3, #8 - 800524e: 68fa ldr r2, [r7, #12] - 8005250: 4313 orrs r3, r2 - 8005252: 60fb str r3, [r7, #12] + 8005228: 683b ldr r3, [r7, #0] + 800522a: 681b ldr r3, [r3, #0] + 800522c: 021b lsls r3, r3, #8 + 800522e: 68fa ldr r2, [r7, #12] + 8005230: 4313 orrs r3, r2 + 8005232: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC4P; - 8005254: 693b ldr r3, [r7, #16] - 8005256: 4a1b ldr r2, [pc, #108] ; (80052c4 ) - 8005258: 4013 ands r3, r2 - 800525a: 613b str r3, [r7, #16] + 8005234: 693b ldr r3, [r7, #16] + 8005236: 4a1b ldr r2, [pc, #108] ; (80052a4 ) + 8005238: 4013 ands r3, r2 + 800523a: 613b str r3, [r7, #16] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 12U); - 800525c: 683b ldr r3, [r7, #0] - 800525e: 689b ldr r3, [r3, #8] - 8005260: 031b lsls r3, r3, #12 - 8005262: 693a ldr r2, [r7, #16] - 8005264: 4313 orrs r3, r2 - 8005266: 613b str r3, [r7, #16] + 800523c: 683b ldr r3, [r7, #0] + 800523e: 689b ldr r3, [r3, #8] + 8005240: 031b lsls r3, r3, #12 + 8005242: 693a ldr r2, [r7, #16] + 8005244: 4313 orrs r3, r2 + 8005246: 613b str r3, [r7, #16] if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8005268: 687b ldr r3, [r7, #4] - 800526a: 4a17 ldr r2, [pc, #92] ; (80052c8 ) - 800526c: 4293 cmp r3, r2 - 800526e: d007 beq.n 8005280 - 8005270: 687b ldr r3, [r7, #4] - 8005272: 4a16 ldr r2, [pc, #88] ; (80052cc ) - 8005274: 4293 cmp r3, r2 - 8005276: d003 beq.n 8005280 - 8005278: 687b ldr r3, [r7, #4] - 800527a: 4a15 ldr r2, [pc, #84] ; (80052d0 ) - 800527c: 4293 cmp r3, r2 - 800527e: d109 bne.n 8005294 + 8005248: 687b ldr r3, [r7, #4] + 800524a: 4a17 ldr r2, [pc, #92] ; (80052a8 ) + 800524c: 4293 cmp r3, r2 + 800524e: d007 beq.n 8005260 + 8005250: 687b ldr r3, [r7, #4] + 8005252: 4a16 ldr r2, [pc, #88] ; (80052ac ) + 8005254: 4293 cmp r3, r2 + 8005256: d003 beq.n 8005260 + 8005258: 687b ldr r3, [r7, #4] + 800525a: 4a15 ldr r2, [pc, #84] ; (80052b0 ) + 800525c: 4293 cmp r3, r2 + 800525e: d109 bne.n 8005274 { /* Check parameters */ assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); /* Reset the Output Compare IDLE State */ tmpcr2 &= ~TIM_CR2_OIS4; - 8005280: 697b ldr r3, [r7, #20] - 8005282: 4a14 ldr r2, [pc, #80] ; (80052d4 ) - 8005284: 4013 ands r3, r2 - 8005286: 617b str r3, [r7, #20] + 8005260: 697b ldr r3, [r7, #20] + 8005262: 4a14 ldr r2, [pc, #80] ; (80052b4 ) + 8005264: 4013 ands r3, r2 + 8005266: 617b str r3, [r7, #20] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 6U); - 8005288: 683b ldr r3, [r7, #0] - 800528a: 695b ldr r3, [r3, #20] - 800528c: 019b lsls r3, r3, #6 - 800528e: 697a ldr r2, [r7, #20] - 8005290: 4313 orrs r3, r2 - 8005292: 617b str r3, [r7, #20] + 8005268: 683b ldr r3, [r7, #0] + 800526a: 695b ldr r3, [r3, #20] + 800526c: 019b lsls r3, r3, #6 + 800526e: 697a ldr r2, [r7, #20] + 8005270: 4313 orrs r3, r2 + 8005272: 617b str r3, [r7, #20] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 8005294: 687b ldr r3, [r7, #4] - 8005296: 697a ldr r2, [r7, #20] - 8005298: 605a str r2, [r3, #4] + 8005274: 687b ldr r3, [r7, #4] + 8005276: 697a ldr r2, [r7, #20] + 8005278: 605a str r2, [r3, #4] /* Write to TIMx CCMR2 */ TIMx->CCMR2 = tmpccmrx; - 800529a: 687b ldr r3, [r7, #4] - 800529c: 68fa ldr r2, [r7, #12] - 800529e: 61da str r2, [r3, #28] + 800527a: 687b ldr r3, [r7, #4] + 800527c: 68fa ldr r2, [r7, #12] + 800527e: 61da str r2, [r3, #28] /* Set the Capture Compare Register value */ TIMx->CCR4 = OC_Config->Pulse; - 80052a0: 683b ldr r3, [r7, #0] - 80052a2: 685a ldr r2, [r3, #4] - 80052a4: 687b ldr r3, [r7, #4] - 80052a6: 641a str r2, [r3, #64] ; 0x40 + 8005280: 683b ldr r3, [r7, #0] + 8005282: 685a ldr r2, [r3, #4] + 8005284: 687b ldr r3, [r7, #4] + 8005286: 641a str r2, [r3, #64] ; 0x40 /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 80052a8: 687b ldr r3, [r7, #4] - 80052aa: 693a ldr r2, [r7, #16] - 80052ac: 621a str r2, [r3, #32] + 8005288: 687b ldr r3, [r7, #4] + 800528a: 693a ldr r2, [r7, #16] + 800528c: 621a str r2, [r3, #32] } - 80052ae: 46c0 nop ; (mov r8, r8) - 80052b0: 46bd mov sp, r7 - 80052b2: b006 add sp, #24 - 80052b4: bd80 pop {r7, pc} - 80052b6: 46c0 nop ; (mov r8, r8) - 80052b8: ffffefff .word 0xffffefff - 80052bc: feff8fff .word 0xfeff8fff - 80052c0: fffffcff .word 0xfffffcff - 80052c4: ffffdfff .word 0xffffdfff - 80052c8: 40012c00 .word 0x40012c00 - 80052cc: 40014400 .word 0x40014400 - 80052d0: 40014800 .word 0x40014800 - 80052d4: ffffbfff .word 0xffffbfff + 800528e: 46c0 nop ; (mov r8, r8) + 8005290: 46bd mov sp, r7 + 8005292: b006 add sp, #24 + 8005294: bd80 pop {r7, pc} + 8005296: 46c0 nop ; (mov r8, r8) + 8005298: ffffefff .word 0xffffefff + 800529c: feff8fff .word 0xfeff8fff + 80052a0: fffffcff .word 0xfffffcff + 80052a4: ffffdfff .word 0xffffdfff + 80052a8: 40012c00 .word 0x40012c00 + 80052ac: 40014400 .word 0x40014400 + 80052b0: 40014800 .word 0x40014800 + 80052b4: ffffbfff .word 0xffffbfff -080052d8 : +080052b8 : * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) { - 80052d8: b580 push {r7, lr} - 80052da: b086 sub sp, #24 - 80052dc: af00 add r7, sp, #0 - 80052de: 6078 str r0, [r7, #4] - 80052e0: 6039 str r1, [r7, #0] + 80052b8: b580 push {r7, lr} + 80052ba: b086 sub sp, #24 + 80052bc: af00 add r7, sp, #0 + 80052be: 6078 str r0, [r7, #4] + 80052c0: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the output: Reset the CCxE Bit */ TIMx->CCER &= ~TIM_CCER_CC5E; - 80052e2: 687b ldr r3, [r7, #4] - 80052e4: 6a1b ldr r3, [r3, #32] - 80052e6: 4a23 ldr r2, [pc, #140] ; (8005374 ) - 80052e8: 401a ands r2, r3 - 80052ea: 687b ldr r3, [r7, #4] - 80052ec: 621a str r2, [r3, #32] + 80052c2: 687b ldr r3, [r7, #4] + 80052c4: 6a1b ldr r3, [r3, #32] + 80052c6: 4a23 ldr r2, [pc, #140] ; (8005354 ) + 80052c8: 401a ands r2, r3 + 80052ca: 687b ldr r3, [r7, #4] + 80052cc: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 80052ee: 687b ldr r3, [r7, #4] - 80052f0: 6a1b ldr r3, [r3, #32] - 80052f2: 613b str r3, [r7, #16] + 80052ce: 687b ldr r3, [r7, #4] + 80052d0: 6a1b ldr r3, [r3, #32] + 80052d2: 613b str r3, [r7, #16] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 80052f4: 687b ldr r3, [r7, #4] - 80052f6: 685b ldr r3, [r3, #4] - 80052f8: 617b str r3, [r7, #20] + 80052d4: 687b ldr r3, [r7, #4] + 80052d6: 685b ldr r3, [r3, #4] + 80052d8: 617b str r3, [r7, #20] /* Get the TIMx CCMR1 register value */ tmpccmrx = TIMx->CCMR3; - 80052fa: 687b ldr r3, [r7, #4] - 80052fc: 6d5b ldr r3, [r3, #84] ; 0x54 - 80052fe: 60fb str r3, [r7, #12] + 80052da: 687b ldr r3, [r7, #4] + 80052dc: 6d5b ldr r3, [r3, #84] ; 0x54 + 80052de: 60fb str r3, [r7, #12] /* Reset the Output Compare Mode Bits */ tmpccmrx &= ~(TIM_CCMR3_OC5M); - 8005300: 68fb ldr r3, [r7, #12] - 8005302: 4a1d ldr r2, [pc, #116] ; (8005378 ) - 8005304: 4013 ands r3, r2 - 8005306: 60fb str r3, [r7, #12] + 80052e0: 68fb ldr r3, [r7, #12] + 80052e2: 4a1d ldr r2, [pc, #116] ; (8005358 ) + 80052e4: 4013 ands r3, r2 + 80052e6: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= OC_Config->OCMode; - 8005308: 683b ldr r3, [r7, #0] - 800530a: 681b ldr r3, [r3, #0] - 800530c: 68fa ldr r2, [r7, #12] - 800530e: 4313 orrs r3, r2 - 8005310: 60fb str r3, [r7, #12] + 80052e8: 683b ldr r3, [r7, #0] + 80052ea: 681b ldr r3, [r3, #0] + 80052ec: 68fa ldr r2, [r7, #12] + 80052ee: 4313 orrs r3, r2 + 80052f0: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC5P; - 8005312: 693b ldr r3, [r7, #16] - 8005314: 4a19 ldr r2, [pc, #100] ; (800537c ) - 8005316: 4013 ands r3, r2 - 8005318: 613b str r3, [r7, #16] + 80052f2: 693b ldr r3, [r7, #16] + 80052f4: 4a19 ldr r2, [pc, #100] ; (800535c ) + 80052f6: 4013 ands r3, r2 + 80052f8: 613b str r3, [r7, #16] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 16U); - 800531a: 683b ldr r3, [r7, #0] - 800531c: 689b ldr r3, [r3, #8] - 800531e: 041b lsls r3, r3, #16 - 8005320: 693a ldr r2, [r7, #16] - 8005322: 4313 orrs r3, r2 - 8005324: 613b str r3, [r7, #16] + 80052fa: 683b ldr r3, [r7, #0] + 80052fc: 689b ldr r3, [r3, #8] + 80052fe: 041b lsls r3, r3, #16 + 8005300: 693a ldr r2, [r7, #16] + 8005302: 4313 orrs r3, r2 + 8005304: 613b str r3, [r7, #16] if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8005326: 687b ldr r3, [r7, #4] - 8005328: 4a15 ldr r2, [pc, #84] ; (8005380 ) - 800532a: 4293 cmp r3, r2 - 800532c: d007 beq.n 800533e - 800532e: 687b ldr r3, [r7, #4] - 8005330: 4a14 ldr r2, [pc, #80] ; (8005384 ) - 8005332: 4293 cmp r3, r2 - 8005334: d003 beq.n 800533e - 8005336: 687b ldr r3, [r7, #4] - 8005338: 4a13 ldr r2, [pc, #76] ; (8005388 ) - 800533a: 4293 cmp r3, r2 - 800533c: d109 bne.n 8005352 + 8005306: 687b ldr r3, [r7, #4] + 8005308: 4a15 ldr r2, [pc, #84] ; (8005360 ) + 800530a: 4293 cmp r3, r2 + 800530c: d007 beq.n 800531e + 800530e: 687b ldr r3, [r7, #4] + 8005310: 4a14 ldr r2, [pc, #80] ; (8005364 ) + 8005312: 4293 cmp r3, r2 + 8005314: d003 beq.n 800531e + 8005316: 687b ldr r3, [r7, #4] + 8005318: 4a13 ldr r2, [pc, #76] ; (8005368 ) + 800531a: 4293 cmp r3, r2 + 800531c: d109 bne.n 8005332 { /* Reset the Output Compare IDLE State */ tmpcr2 &= ~TIM_CR2_OIS5; - 800533e: 697b ldr r3, [r7, #20] - 8005340: 4a0c ldr r2, [pc, #48] ; (8005374 ) - 8005342: 4013 ands r3, r2 - 8005344: 617b str r3, [r7, #20] + 800531e: 697b ldr r3, [r7, #20] + 8005320: 4a0c ldr r2, [pc, #48] ; (8005354 ) + 8005322: 4013 ands r3, r2 + 8005324: 617b str r3, [r7, #20] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 8U); - 8005346: 683b ldr r3, [r7, #0] - 8005348: 695b ldr r3, [r3, #20] - 800534a: 021b lsls r3, r3, #8 - 800534c: 697a ldr r2, [r7, #20] - 800534e: 4313 orrs r3, r2 - 8005350: 617b str r3, [r7, #20] + 8005326: 683b ldr r3, [r7, #0] + 8005328: 695b ldr r3, [r3, #20] + 800532a: 021b lsls r3, r3, #8 + 800532c: 697a ldr r2, [r7, #20] + 800532e: 4313 orrs r3, r2 + 8005330: 617b str r3, [r7, #20] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 8005352: 687b ldr r3, [r7, #4] - 8005354: 697a ldr r2, [r7, #20] - 8005356: 605a str r2, [r3, #4] + 8005332: 687b ldr r3, [r7, #4] + 8005334: 697a ldr r2, [r7, #20] + 8005336: 605a str r2, [r3, #4] /* Write to TIMx CCMR3 */ TIMx->CCMR3 = tmpccmrx; - 8005358: 687b ldr r3, [r7, #4] - 800535a: 68fa ldr r2, [r7, #12] - 800535c: 655a str r2, [r3, #84] ; 0x54 + 8005338: 687b ldr r3, [r7, #4] + 800533a: 68fa ldr r2, [r7, #12] + 800533c: 655a str r2, [r3, #84] ; 0x54 /* Set the Capture Compare Register value */ TIMx->CCR5 = OC_Config->Pulse; - 800535e: 683b ldr r3, [r7, #0] - 8005360: 685a ldr r2, [r3, #4] - 8005362: 687b ldr r3, [r7, #4] - 8005364: 659a str r2, [r3, #88] ; 0x58 + 800533e: 683b ldr r3, [r7, #0] + 8005340: 685a ldr r2, [r3, #4] + 8005342: 687b ldr r3, [r7, #4] + 8005344: 659a str r2, [r3, #88] ; 0x58 /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 8005366: 687b ldr r3, [r7, #4] - 8005368: 693a ldr r2, [r7, #16] - 800536a: 621a str r2, [r3, #32] + 8005346: 687b ldr r3, [r7, #4] + 8005348: 693a ldr r2, [r7, #16] + 800534a: 621a str r2, [r3, #32] } - 800536c: 46c0 nop ; (mov r8, r8) - 800536e: 46bd mov sp, r7 - 8005370: b006 add sp, #24 - 8005372: bd80 pop {r7, pc} - 8005374: fffeffff .word 0xfffeffff - 8005378: fffeff8f .word 0xfffeff8f - 800537c: fffdffff .word 0xfffdffff - 8005380: 40012c00 .word 0x40012c00 - 8005384: 40014400 .word 0x40014400 - 8005388: 40014800 .word 0x40014800 + 800534c: 46c0 nop ; (mov r8, r8) + 800534e: 46bd mov sp, r7 + 8005350: b006 add sp, #24 + 8005352: bd80 pop {r7, pc} + 8005354: fffeffff .word 0xfffeffff + 8005358: fffeff8f .word 0xfffeff8f + 800535c: fffdffff .word 0xfffdffff + 8005360: 40012c00 .word 0x40012c00 + 8005364: 40014400 .word 0x40014400 + 8005368: 40014800 .word 0x40014800 -0800538c : +0800536c : * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) { - 800538c: b580 push {r7, lr} - 800538e: b086 sub sp, #24 - 8005390: af00 add r7, sp, #0 - 8005392: 6078 str r0, [r7, #4] - 8005394: 6039 str r1, [r7, #0] + 800536c: b580 push {r7, lr} + 800536e: b086 sub sp, #24 + 8005370: af00 add r7, sp, #0 + 8005372: 6078 str r0, [r7, #4] + 8005374: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the output: Reset the CCxE Bit */ TIMx->CCER &= ~TIM_CCER_CC6E; - 8005396: 687b ldr r3, [r7, #4] - 8005398: 6a1b ldr r3, [r3, #32] - 800539a: 4a24 ldr r2, [pc, #144] ; (800542c ) - 800539c: 401a ands r2, r3 - 800539e: 687b ldr r3, [r7, #4] - 80053a0: 621a str r2, [r3, #32] + 8005376: 687b ldr r3, [r7, #4] + 8005378: 6a1b ldr r3, [r3, #32] + 800537a: 4a24 ldr r2, [pc, #144] ; (800540c ) + 800537c: 401a ands r2, r3 + 800537e: 687b ldr r3, [r7, #4] + 8005380: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 80053a2: 687b ldr r3, [r7, #4] - 80053a4: 6a1b ldr r3, [r3, #32] - 80053a6: 613b str r3, [r7, #16] + 8005382: 687b ldr r3, [r7, #4] + 8005384: 6a1b ldr r3, [r3, #32] + 8005386: 613b str r3, [r7, #16] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 80053a8: 687b ldr r3, [r7, #4] - 80053aa: 685b ldr r3, [r3, #4] - 80053ac: 617b str r3, [r7, #20] + 8005388: 687b ldr r3, [r7, #4] + 800538a: 685b ldr r3, [r3, #4] + 800538c: 617b str r3, [r7, #20] /* Get the TIMx CCMR1 register value */ tmpccmrx = TIMx->CCMR3; - 80053ae: 687b ldr r3, [r7, #4] - 80053b0: 6d5b ldr r3, [r3, #84] ; 0x54 - 80053b2: 60fb str r3, [r7, #12] + 800538e: 687b ldr r3, [r7, #4] + 8005390: 6d5b ldr r3, [r3, #84] ; 0x54 + 8005392: 60fb str r3, [r7, #12] /* Reset the Output Compare Mode Bits */ tmpccmrx &= ~(TIM_CCMR3_OC6M); - 80053b4: 68fb ldr r3, [r7, #12] - 80053b6: 4a1e ldr r2, [pc, #120] ; (8005430 ) - 80053b8: 4013 ands r3, r2 - 80053ba: 60fb str r3, [r7, #12] + 8005394: 68fb ldr r3, [r7, #12] + 8005396: 4a1e ldr r2, [pc, #120] ; (8005410 ) + 8005398: 4013 ands r3, r2 + 800539a: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= (OC_Config->OCMode << 8U); - 80053bc: 683b ldr r3, [r7, #0] - 80053be: 681b ldr r3, [r3, #0] - 80053c0: 021b lsls r3, r3, #8 - 80053c2: 68fa ldr r2, [r7, #12] - 80053c4: 4313 orrs r3, r2 - 80053c6: 60fb str r3, [r7, #12] + 800539c: 683b ldr r3, [r7, #0] + 800539e: 681b ldr r3, [r3, #0] + 80053a0: 021b lsls r3, r3, #8 + 80053a2: 68fa ldr r2, [r7, #12] + 80053a4: 4313 orrs r3, r2 + 80053a6: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= (uint32_t)~TIM_CCER_CC6P; - 80053c8: 693b ldr r3, [r7, #16] - 80053ca: 4a1a ldr r2, [pc, #104] ; (8005434 ) - 80053cc: 4013 ands r3, r2 - 80053ce: 613b str r3, [r7, #16] + 80053a8: 693b ldr r3, [r7, #16] + 80053aa: 4a1a ldr r2, [pc, #104] ; (8005414 ) + 80053ac: 4013 ands r3, r2 + 80053ae: 613b str r3, [r7, #16] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 20U); - 80053d0: 683b ldr r3, [r7, #0] - 80053d2: 689b ldr r3, [r3, #8] - 80053d4: 051b lsls r3, r3, #20 - 80053d6: 693a ldr r2, [r7, #16] - 80053d8: 4313 orrs r3, r2 - 80053da: 613b str r3, [r7, #16] + 80053b0: 683b ldr r3, [r7, #0] + 80053b2: 689b ldr r3, [r3, #8] + 80053b4: 051b lsls r3, r3, #20 + 80053b6: 693a ldr r2, [r7, #16] + 80053b8: 4313 orrs r3, r2 + 80053ba: 613b str r3, [r7, #16] if (IS_TIM_BREAK_INSTANCE(TIMx)) - 80053dc: 687b ldr r3, [r7, #4] - 80053de: 4a16 ldr r2, [pc, #88] ; (8005438 ) - 80053e0: 4293 cmp r3, r2 - 80053e2: d007 beq.n 80053f4 - 80053e4: 687b ldr r3, [r7, #4] - 80053e6: 4a15 ldr r2, [pc, #84] ; (800543c ) - 80053e8: 4293 cmp r3, r2 - 80053ea: d003 beq.n 80053f4 - 80053ec: 687b ldr r3, [r7, #4] - 80053ee: 4a14 ldr r2, [pc, #80] ; (8005440 ) - 80053f0: 4293 cmp r3, r2 - 80053f2: d109 bne.n 8005408 + 80053bc: 687b ldr r3, [r7, #4] + 80053be: 4a16 ldr r2, [pc, #88] ; (8005418 ) + 80053c0: 4293 cmp r3, r2 + 80053c2: d007 beq.n 80053d4 + 80053c4: 687b ldr r3, [r7, #4] + 80053c6: 4a15 ldr r2, [pc, #84] ; (800541c ) + 80053c8: 4293 cmp r3, r2 + 80053ca: d003 beq.n 80053d4 + 80053cc: 687b ldr r3, [r7, #4] + 80053ce: 4a14 ldr r2, [pc, #80] ; (8005420 ) + 80053d0: 4293 cmp r3, r2 + 80053d2: d109 bne.n 80053e8 { /* Reset the Output Compare IDLE State */ tmpcr2 &= ~TIM_CR2_OIS6; - 80053f4: 697b ldr r3, [r7, #20] - 80053f6: 4a13 ldr r2, [pc, #76] ; (8005444 ) - 80053f8: 4013 ands r3, r2 - 80053fa: 617b str r3, [r7, #20] + 80053d4: 697b ldr r3, [r7, #20] + 80053d6: 4a13 ldr r2, [pc, #76] ; (8005424 ) + 80053d8: 4013 ands r3, r2 + 80053da: 617b str r3, [r7, #20] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 10U); - 80053fc: 683b ldr r3, [r7, #0] - 80053fe: 695b ldr r3, [r3, #20] - 8005400: 029b lsls r3, r3, #10 - 8005402: 697a ldr r2, [r7, #20] - 8005404: 4313 orrs r3, r2 - 8005406: 617b str r3, [r7, #20] + 80053dc: 683b ldr r3, [r7, #0] + 80053de: 695b ldr r3, [r3, #20] + 80053e0: 029b lsls r3, r3, #10 + 80053e2: 697a ldr r2, [r7, #20] + 80053e4: 4313 orrs r3, r2 + 80053e6: 617b str r3, [r7, #20] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 8005408: 687b ldr r3, [r7, #4] - 800540a: 697a ldr r2, [r7, #20] - 800540c: 605a str r2, [r3, #4] + 80053e8: 687b ldr r3, [r7, #4] + 80053ea: 697a ldr r2, [r7, #20] + 80053ec: 605a str r2, [r3, #4] /* Write to TIMx CCMR3 */ TIMx->CCMR3 = tmpccmrx; - 800540e: 687b ldr r3, [r7, #4] - 8005410: 68fa ldr r2, [r7, #12] - 8005412: 655a str r2, [r3, #84] ; 0x54 + 80053ee: 687b ldr r3, [r7, #4] + 80053f0: 68fa ldr r2, [r7, #12] + 80053f2: 655a str r2, [r3, #84] ; 0x54 /* Set the Capture Compare Register value */ TIMx->CCR6 = OC_Config->Pulse; - 8005414: 683b ldr r3, [r7, #0] - 8005416: 685a ldr r2, [r3, #4] - 8005418: 687b ldr r3, [r7, #4] - 800541a: 65da str r2, [r3, #92] ; 0x5c + 80053f4: 683b ldr r3, [r7, #0] + 80053f6: 685a ldr r2, [r3, #4] + 80053f8: 687b ldr r3, [r7, #4] + 80053fa: 65da str r2, [r3, #92] ; 0x5c /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 800541c: 687b ldr r3, [r7, #4] - 800541e: 693a ldr r2, [r7, #16] - 8005420: 621a str r2, [r3, #32] + 80053fc: 687b ldr r3, [r7, #4] + 80053fe: 693a ldr r2, [r7, #16] + 8005400: 621a str r2, [r3, #32] } - 8005422: 46c0 nop ; (mov r8, r8) - 8005424: 46bd mov sp, r7 - 8005426: b006 add sp, #24 - 8005428: bd80 pop {r7, pc} - 800542a: 46c0 nop ; (mov r8, r8) - 800542c: ffefffff .word 0xffefffff - 8005430: feff8fff .word 0xfeff8fff - 8005434: ffdfffff .word 0xffdfffff - 8005438: 40012c00 .word 0x40012c00 - 800543c: 40014400 .word 0x40014400 - 8005440: 40014800 .word 0x40014800 - 8005444: fffbffff .word 0xfffbffff + 8005402: 46c0 nop ; (mov r8, r8) + 8005404: 46bd mov sp, r7 + 8005406: b006 add sp, #24 + 8005408: bd80 pop {r7, pc} + 800540a: 46c0 nop ; (mov r8, r8) + 800540c: ffefffff .word 0xffefffff + 8005410: feff8fff .word 0xfeff8fff + 8005414: ffdfffff .word 0xffdfffff + 8005418: 40012c00 .word 0x40012c00 + 800541c: 40014400 .word 0x40014400 + 8005420: 40014800 .word 0x40014800 + 8005424: fffbffff .word 0xfffbffff -08005448 : +08005428 : * @param TIM_ICFilter Specifies the Input Capture Filter. * This parameter must be a value between 0x00 and 0x0F. * @retval None */ static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) { - 8005448: b580 push {r7, lr} - 800544a: b086 sub sp, #24 - 800544c: af00 add r7, sp, #0 - 800544e: 60f8 str r0, [r7, #12] - 8005450: 60b9 str r1, [r7, #8] - 8005452: 607a str r2, [r7, #4] + 8005428: b580 push {r7, lr} + 800542a: b086 sub sp, #24 + 800542c: af00 add r7, sp, #0 + 800542e: 60f8 str r0, [r7, #12] + 8005430: 60b9 str r1, [r7, #8] + 8005432: 607a str r2, [r7, #4] uint32_t tmpccmr1; uint32_t tmpccer; /* Disable the Channel 1: Reset the CC1E Bit */ tmpccer = TIMx->CCER; - 8005454: 68fb ldr r3, [r7, #12] - 8005456: 6a1b ldr r3, [r3, #32] - 8005458: 617b str r3, [r7, #20] + 8005434: 68fb ldr r3, [r7, #12] + 8005436: 6a1b ldr r3, [r3, #32] + 8005438: 617b str r3, [r7, #20] TIMx->CCER &= ~TIM_CCER_CC1E; - 800545a: 68fb ldr r3, [r7, #12] - 800545c: 6a1b ldr r3, [r3, #32] - 800545e: 2201 movs r2, #1 - 8005460: 4393 bics r3, r2 - 8005462: 001a movs r2, r3 - 8005464: 68fb ldr r3, [r7, #12] - 8005466: 621a str r2, [r3, #32] + 800543a: 68fb ldr r3, [r7, #12] + 800543c: 6a1b ldr r3, [r3, #32] + 800543e: 2201 movs r2, #1 + 8005440: 4393 bics r3, r2 + 8005442: 001a movs r2, r3 + 8005444: 68fb ldr r3, [r7, #12] + 8005446: 621a str r2, [r3, #32] tmpccmr1 = TIMx->CCMR1; - 8005468: 68fb ldr r3, [r7, #12] - 800546a: 699b ldr r3, [r3, #24] - 800546c: 613b str r3, [r7, #16] + 8005448: 68fb ldr r3, [r7, #12] + 800544a: 699b ldr r3, [r3, #24] + 800544c: 613b str r3, [r7, #16] /* Set the filter */ tmpccmr1 &= ~TIM_CCMR1_IC1F; - 800546e: 693b ldr r3, [r7, #16] - 8005470: 22f0 movs r2, #240 ; 0xf0 - 8005472: 4393 bics r3, r2 - 8005474: 613b str r3, [r7, #16] + 800544e: 693b ldr r3, [r7, #16] + 8005450: 22f0 movs r2, #240 ; 0xf0 + 8005452: 4393 bics r3, r2 + 8005454: 613b str r3, [r7, #16] tmpccmr1 |= (TIM_ICFilter << 4U); - 8005476: 687b ldr r3, [r7, #4] - 8005478: 011b lsls r3, r3, #4 - 800547a: 693a ldr r2, [r7, #16] - 800547c: 4313 orrs r3, r2 - 800547e: 613b str r3, [r7, #16] + 8005456: 687b ldr r3, [r7, #4] + 8005458: 011b lsls r3, r3, #4 + 800545a: 693a ldr r2, [r7, #16] + 800545c: 4313 orrs r3, r2 + 800545e: 613b str r3, [r7, #16] /* Select the Polarity and set the CC1E Bit */ tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); - 8005480: 697b ldr r3, [r7, #20] - 8005482: 220a movs r2, #10 - 8005484: 4393 bics r3, r2 - 8005486: 617b str r3, [r7, #20] + 8005460: 697b ldr r3, [r7, #20] + 8005462: 220a movs r2, #10 + 8005464: 4393 bics r3, r2 + 8005466: 617b str r3, [r7, #20] tmpccer |= TIM_ICPolarity; - 8005488: 697a ldr r2, [r7, #20] - 800548a: 68bb ldr r3, [r7, #8] - 800548c: 4313 orrs r3, r2 - 800548e: 617b str r3, [r7, #20] + 8005468: 697a ldr r2, [r7, #20] + 800546a: 68bb ldr r3, [r7, #8] + 800546c: 4313 orrs r3, r2 + 800546e: 617b str r3, [r7, #20] /* Write to TIMx CCMR1 and CCER registers */ TIMx->CCMR1 = tmpccmr1; - 8005490: 68fb ldr r3, [r7, #12] - 8005492: 693a ldr r2, [r7, #16] - 8005494: 619a str r2, [r3, #24] + 8005470: 68fb ldr r3, [r7, #12] + 8005472: 693a ldr r2, [r7, #16] + 8005474: 619a str r2, [r3, #24] TIMx->CCER = tmpccer; - 8005496: 68fb ldr r3, [r7, #12] - 8005498: 697a ldr r2, [r7, #20] - 800549a: 621a str r2, [r3, #32] + 8005476: 68fb ldr r3, [r7, #12] + 8005478: 697a ldr r2, [r7, #20] + 800547a: 621a str r2, [r3, #32] } - 800549c: 46c0 nop ; (mov r8, r8) - 800549e: 46bd mov sp, r7 - 80054a0: b006 add sp, #24 - 80054a2: bd80 pop {r7, pc} + 800547c: 46c0 nop ; (mov r8, r8) + 800547e: 46bd mov sp, r7 + 8005480: b006 add sp, #24 + 8005482: bd80 pop {r7, pc} -080054a4 : +08005484 : * @param TIM_ICFilter Specifies the Input Capture Filter. * This parameter must be a value between 0x00 and 0x0F. * @retval None */ static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) { - 80054a4: b580 push {r7, lr} - 80054a6: b086 sub sp, #24 - 80054a8: af00 add r7, sp, #0 - 80054aa: 60f8 str r0, [r7, #12] - 80054ac: 60b9 str r1, [r7, #8] - 80054ae: 607a str r2, [r7, #4] + 8005484: b580 push {r7, lr} + 8005486: b086 sub sp, #24 + 8005488: af00 add r7, sp, #0 + 800548a: 60f8 str r0, [r7, #12] + 800548c: 60b9 str r1, [r7, #8] + 800548e: 607a str r2, [r7, #4] uint32_t tmpccmr1; uint32_t tmpccer; /* Disable the Channel 2: Reset the CC2E Bit */ TIMx->CCER &= ~TIM_CCER_CC2E; - 80054b0: 68fb ldr r3, [r7, #12] - 80054b2: 6a1b ldr r3, [r3, #32] - 80054b4: 2210 movs r2, #16 - 80054b6: 4393 bics r3, r2 - 80054b8: 001a movs r2, r3 - 80054ba: 68fb ldr r3, [r7, #12] - 80054bc: 621a str r2, [r3, #32] + 8005490: 68fb ldr r3, [r7, #12] + 8005492: 6a1b ldr r3, [r3, #32] + 8005494: 2210 movs r2, #16 + 8005496: 4393 bics r3, r2 + 8005498: 001a movs r2, r3 + 800549a: 68fb ldr r3, [r7, #12] + 800549c: 621a str r2, [r3, #32] tmpccmr1 = TIMx->CCMR1; - 80054be: 68fb ldr r3, [r7, #12] - 80054c0: 699b ldr r3, [r3, #24] - 80054c2: 617b str r3, [r7, #20] + 800549e: 68fb ldr r3, [r7, #12] + 80054a0: 699b ldr r3, [r3, #24] + 80054a2: 617b str r3, [r7, #20] tmpccer = TIMx->CCER; - 80054c4: 68fb ldr r3, [r7, #12] - 80054c6: 6a1b ldr r3, [r3, #32] - 80054c8: 613b str r3, [r7, #16] + 80054a4: 68fb ldr r3, [r7, #12] + 80054a6: 6a1b ldr r3, [r3, #32] + 80054a8: 613b str r3, [r7, #16] /* Set the filter */ tmpccmr1 &= ~TIM_CCMR1_IC2F; - 80054ca: 697b ldr r3, [r7, #20] - 80054cc: 4a0d ldr r2, [pc, #52] ; (8005504 ) - 80054ce: 4013 ands r3, r2 - 80054d0: 617b str r3, [r7, #20] + 80054aa: 697b ldr r3, [r7, #20] + 80054ac: 4a0d ldr r2, [pc, #52] ; (80054e4 ) + 80054ae: 4013 ands r3, r2 + 80054b0: 617b str r3, [r7, #20] tmpccmr1 |= (TIM_ICFilter << 12U); - 80054d2: 687b ldr r3, [r7, #4] - 80054d4: 031b lsls r3, r3, #12 - 80054d6: 697a ldr r2, [r7, #20] - 80054d8: 4313 orrs r3, r2 - 80054da: 617b str r3, [r7, #20] + 80054b2: 687b ldr r3, [r7, #4] + 80054b4: 031b lsls r3, r3, #12 + 80054b6: 697a ldr r2, [r7, #20] + 80054b8: 4313 orrs r3, r2 + 80054ba: 617b str r3, [r7, #20] /* Select the Polarity and set the CC2E Bit */ tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); - 80054dc: 693b ldr r3, [r7, #16] - 80054de: 22a0 movs r2, #160 ; 0xa0 - 80054e0: 4393 bics r3, r2 - 80054e2: 613b str r3, [r7, #16] + 80054bc: 693b ldr r3, [r7, #16] + 80054be: 22a0 movs r2, #160 ; 0xa0 + 80054c0: 4393 bics r3, r2 + 80054c2: 613b str r3, [r7, #16] tmpccer |= (TIM_ICPolarity << 4U); - 80054e4: 68bb ldr r3, [r7, #8] - 80054e6: 011b lsls r3, r3, #4 - 80054e8: 693a ldr r2, [r7, #16] - 80054ea: 4313 orrs r3, r2 - 80054ec: 613b str r3, [r7, #16] + 80054c4: 68bb ldr r3, [r7, #8] + 80054c6: 011b lsls r3, r3, #4 + 80054c8: 693a ldr r2, [r7, #16] + 80054ca: 4313 orrs r3, r2 + 80054cc: 613b str r3, [r7, #16] /* Write to TIMx CCMR1 and CCER registers */ TIMx->CCMR1 = tmpccmr1 ; - 80054ee: 68fb ldr r3, [r7, #12] - 80054f0: 697a ldr r2, [r7, #20] - 80054f2: 619a str r2, [r3, #24] + 80054ce: 68fb ldr r3, [r7, #12] + 80054d0: 697a ldr r2, [r7, #20] + 80054d2: 619a str r2, [r3, #24] TIMx->CCER = tmpccer; - 80054f4: 68fb ldr r3, [r7, #12] - 80054f6: 693a ldr r2, [r7, #16] - 80054f8: 621a str r2, [r3, #32] + 80054d4: 68fb ldr r3, [r7, #12] + 80054d6: 693a ldr r2, [r7, #16] + 80054d8: 621a str r2, [r3, #32] } - 80054fa: 46c0 nop ; (mov r8, r8) - 80054fc: 46bd mov sp, r7 - 80054fe: b006 add sp, #24 - 8005500: bd80 pop {r7, pc} - 8005502: 46c0 nop ; (mov r8, r8) - 8005504: ffff0fff .word 0xffff0fff + 80054da: 46c0 nop ; (mov r8, r8) + 80054dc: 46bd mov sp, r7 + 80054de: b006 add sp, #24 + 80054e0: bd80 pop {r7, pc} + 80054e2: 46c0 nop ; (mov r8, r8) + 80054e4: ffff0fff .word 0xffff0fff -08005508 : +080054e8 : * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 * @arg TIM_TS_ETRF: External Trigger input * @retval None */ static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) { - 8005508: b580 push {r7, lr} - 800550a: b084 sub sp, #16 - 800550c: af00 add r7, sp, #0 - 800550e: 6078 str r0, [r7, #4] - 8005510: 6039 str r1, [r7, #0] + 80054e8: b580 push {r7, lr} + 80054ea: b084 sub sp, #16 + 80054ec: af00 add r7, sp, #0 + 80054ee: 6078 str r0, [r7, #4] + 80054f0: 6039 str r1, [r7, #0] uint32_t tmpsmcr; /* Get the TIMx SMCR register value */ tmpsmcr = TIMx->SMCR; - 8005512: 687b ldr r3, [r7, #4] - 8005514: 689b ldr r3, [r3, #8] - 8005516: 60fb str r3, [r7, #12] + 80054f2: 687b ldr r3, [r7, #4] + 80054f4: 689b ldr r3, [r3, #8] + 80054f6: 60fb str r3, [r7, #12] /* Reset the TS Bits */ tmpsmcr &= ~TIM_SMCR_TS; - 8005518: 68fb ldr r3, [r7, #12] - 800551a: 4a08 ldr r2, [pc, #32] ; (800553c ) - 800551c: 4013 ands r3, r2 - 800551e: 60fb str r3, [r7, #12] + 80054f8: 68fb ldr r3, [r7, #12] + 80054fa: 4a08 ldr r2, [pc, #32] ; (800551c ) + 80054fc: 4013 ands r3, r2 + 80054fe: 60fb str r3, [r7, #12] /* Set the Input Trigger source and the slave mode*/ tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); - 8005520: 683a ldr r2, [r7, #0] - 8005522: 68fb ldr r3, [r7, #12] - 8005524: 4313 orrs r3, r2 - 8005526: 2207 movs r2, #7 - 8005528: 4313 orrs r3, r2 - 800552a: 60fb str r3, [r7, #12] + 8005500: 683a ldr r2, [r7, #0] + 8005502: 68fb ldr r3, [r7, #12] + 8005504: 4313 orrs r3, r2 + 8005506: 2207 movs r2, #7 + 8005508: 4313 orrs r3, r2 + 800550a: 60fb str r3, [r7, #12] /* Write to TIMx SMCR */ TIMx->SMCR = tmpsmcr; - 800552c: 687b ldr r3, [r7, #4] - 800552e: 68fa ldr r2, [r7, #12] - 8005530: 609a str r2, [r3, #8] + 800550c: 687b ldr r3, [r7, #4] + 800550e: 68fa ldr r2, [r7, #12] + 8005510: 609a str r2, [r3, #8] } - 8005532: 46c0 nop ; (mov r8, r8) - 8005534: 46bd mov sp, r7 - 8005536: b004 add sp, #16 - 8005538: bd80 pop {r7, pc} - 800553a: 46c0 nop ; (mov r8, r8) - 800553c: ffcfff8f .word 0xffcfff8f + 8005512: 46c0 nop ; (mov r8, r8) + 8005514: 46bd mov sp, r7 + 8005516: b004 add sp, #16 + 8005518: bd80 pop {r7, pc} + 800551a: 46c0 nop ; (mov r8, r8) + 800551c: ffcfff8f .word 0xffcfff8f -08005540 : +08005520 : * This parameter must be a value between 0x00 and 0x0F * @retval None */ void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) { - 8005540: b580 push {r7, lr} - 8005542: b086 sub sp, #24 - 8005544: af00 add r7, sp, #0 - 8005546: 60f8 str r0, [r7, #12] - 8005548: 60b9 str r1, [r7, #8] - 800554a: 607a str r2, [r7, #4] - 800554c: 603b str r3, [r7, #0] + 8005520: b580 push {r7, lr} + 8005522: b086 sub sp, #24 + 8005524: af00 add r7, sp, #0 + 8005526: 60f8 str r0, [r7, #12] + 8005528: 60b9 str r1, [r7, #8] + 800552a: 607a str r2, [r7, #4] + 800552c: 603b str r3, [r7, #0] uint32_t tmpsmcr; tmpsmcr = TIMx->SMCR; - 800554e: 68fb ldr r3, [r7, #12] - 8005550: 689b ldr r3, [r3, #8] - 8005552: 617b str r3, [r7, #20] + 800552e: 68fb ldr r3, [r7, #12] + 8005530: 689b ldr r3, [r3, #8] + 8005532: 617b str r3, [r7, #20] /* Reset the ETR Bits */ tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8005554: 697b ldr r3, [r7, #20] - 8005556: 4a09 ldr r2, [pc, #36] ; (800557c ) - 8005558: 4013 ands r3, r2 - 800555a: 617b str r3, [r7, #20] + 8005534: 697b ldr r3, [r7, #20] + 8005536: 4a09 ldr r2, [pc, #36] ; (800555c ) + 8005538: 4013 ands r3, r2 + 800553a: 617b str r3, [r7, #20] /* Set the Prescaler, the Filter value and the Polarity */ tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); - 800555c: 683b ldr r3, [r7, #0] - 800555e: 021a lsls r2, r3, #8 - 8005560: 687b ldr r3, [r7, #4] - 8005562: 431a orrs r2, r3 - 8005564: 68bb ldr r3, [r7, #8] - 8005566: 4313 orrs r3, r2 - 8005568: 697a ldr r2, [r7, #20] - 800556a: 4313 orrs r3, r2 - 800556c: 617b str r3, [r7, #20] + 800553c: 683b ldr r3, [r7, #0] + 800553e: 021a lsls r2, r3, #8 + 8005540: 687b ldr r3, [r7, #4] + 8005542: 431a orrs r2, r3 + 8005544: 68bb ldr r3, [r7, #8] + 8005546: 4313 orrs r3, r2 + 8005548: 697a ldr r2, [r7, #20] + 800554a: 4313 orrs r3, r2 + 800554c: 617b str r3, [r7, #20] /* Write to TIMx SMCR */ TIMx->SMCR = tmpsmcr; - 800556e: 68fb ldr r3, [r7, #12] - 8005570: 697a ldr r2, [r7, #20] - 8005572: 609a str r2, [r3, #8] + 800554e: 68fb ldr r3, [r7, #12] + 8005550: 697a ldr r2, [r7, #20] + 8005552: 609a str r2, [r3, #8] } - 8005574: 46c0 nop ; (mov r8, r8) - 8005576: 46bd mov sp, r7 - 8005578: b006 add sp, #24 - 800557a: bd80 pop {r7, pc} - 800557c: ffff00ff .word 0xffff00ff + 8005554: 46c0 nop ; (mov r8, r8) + 8005556: 46bd mov sp, r7 + 8005558: b006 add sp, #24 + 800555a: bd80 pop {r7, pc} + 800555c: ffff00ff .word 0xffff00ff -08005580 : +08005560 : * @param ChannelState specifies the TIM Channel CCxE bit new state. * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. * @retval None */ void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) { - 8005580: b580 push {r7, lr} - 8005582: b086 sub sp, #24 - 8005584: af00 add r7, sp, #0 - 8005586: 60f8 str r0, [r7, #12] - 8005588: 60b9 str r1, [r7, #8] - 800558a: 607a str r2, [r7, #4] + 8005560: b580 push {r7, lr} + 8005562: b086 sub sp, #24 + 8005564: af00 add r7, sp, #0 + 8005566: 60f8 str r0, [r7, #12] + 8005568: 60b9 str r1, [r7, #8] + 800556a: 607a str r2, [r7, #4] /* Check the parameters */ assert_param(IS_TIM_CC1_INSTANCE(TIMx)); assert_param(IS_TIM_CHANNELS(Channel)); tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ - 800558c: 68bb ldr r3, [r7, #8] - 800558e: 221f movs r2, #31 - 8005590: 4013 ands r3, r2 - 8005592: 2201 movs r2, #1 - 8005594: 409a lsls r2, r3 - 8005596: 0013 movs r3, r2 - 8005598: 617b str r3, [r7, #20] + 800556c: 68bb ldr r3, [r7, #8] + 800556e: 221f movs r2, #31 + 8005570: 4013 ands r3, r2 + 8005572: 2201 movs r2, #1 + 8005574: 409a lsls r2, r3 + 8005576: 0013 movs r3, r2 + 8005578: 617b str r3, [r7, #20] /* Reset the CCxE Bit */ TIMx->CCER &= ~tmp; - 800559a: 68fb ldr r3, [r7, #12] - 800559c: 6a1b ldr r3, [r3, #32] - 800559e: 697a ldr r2, [r7, #20] - 80055a0: 43d2 mvns r2, r2 - 80055a2: 401a ands r2, r3 - 80055a4: 68fb ldr r3, [r7, #12] - 80055a6: 621a str r2, [r3, #32] + 800557a: 68fb ldr r3, [r7, #12] + 800557c: 6a1b ldr r3, [r3, #32] + 800557e: 697a ldr r2, [r7, #20] + 8005580: 43d2 mvns r2, r2 + 8005582: 401a ands r2, r3 + 8005584: 68fb ldr r3, [r7, #12] + 8005586: 621a str r2, [r3, #32] /* Set or reset the CCxE Bit */ TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ - 80055a8: 68fb ldr r3, [r7, #12] - 80055aa: 6a1a ldr r2, [r3, #32] - 80055ac: 68bb ldr r3, [r7, #8] - 80055ae: 211f movs r1, #31 - 80055b0: 400b ands r3, r1 - 80055b2: 6879 ldr r1, [r7, #4] - 80055b4: 4099 lsls r1, r3 - 80055b6: 000b movs r3, r1 - 80055b8: 431a orrs r2, r3 - 80055ba: 68fb ldr r3, [r7, #12] - 80055bc: 621a str r2, [r3, #32] + 8005588: 68fb ldr r3, [r7, #12] + 800558a: 6a1a ldr r2, [r3, #32] + 800558c: 68bb ldr r3, [r7, #8] + 800558e: 211f movs r1, #31 + 8005590: 400b ands r3, r1 + 8005592: 6879 ldr r1, [r7, #4] + 8005594: 4099 lsls r1, r3 + 8005596: 000b movs r3, r1 + 8005598: 431a orrs r2, r3 + 800559a: 68fb ldr r3, [r7, #12] + 800559c: 621a str r2, [r3, #32] } - 80055be: 46c0 nop ; (mov r8, r8) - 80055c0: 46bd mov sp, r7 - 80055c2: b006 add sp, #24 - 80055c4: bd80 pop {r7, pc} + 800559e: 46c0 nop ; (mov r8, r8) + 80055a0: 46bd mov sp, r7 + 80055a2: b006 add sp, #24 + 80055a4: bd80 pop {r7, pc} ... -080055c8 : +080055a8 : * mode. * @retval HAL status */ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, const TIM_MasterConfigTypeDef *sMasterConfig) { - 80055c8: b580 push {r7, lr} - 80055ca: b084 sub sp, #16 - 80055cc: af00 add r7, sp, #0 - 80055ce: 6078 str r0, [r7, #4] - 80055d0: 6039 str r1, [r7, #0] + 80055a8: b580 push {r7, lr} + 80055aa: b084 sub sp, #16 + 80055ac: af00 add r7, sp, #0 + 80055ae: 6078 str r0, [r7, #4] + 80055b0: 6039 str r1, [r7, #0] assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); /* Check input state */ __HAL_LOCK(htim); - 80055d2: 687b ldr r3, [r7, #4] - 80055d4: 223c movs r2, #60 ; 0x3c - 80055d6: 5c9b ldrb r3, [r3, r2] - 80055d8: 2b01 cmp r3, #1 - 80055da: d101 bne.n 80055e0 - 80055dc: 2302 movs r3, #2 - 80055de: e050 b.n 8005682 - 80055e0: 687b ldr r3, [r7, #4] - 80055e2: 223c movs r2, #60 ; 0x3c - 80055e4: 2101 movs r1, #1 - 80055e6: 5499 strb r1, [r3, r2] + 80055b2: 687b ldr r3, [r7, #4] + 80055b4: 223c movs r2, #60 ; 0x3c + 80055b6: 5c9b ldrb r3, [r3, r2] + 80055b8: 2b01 cmp r3, #1 + 80055ba: d101 bne.n 80055c0 + 80055bc: 2302 movs r3, #2 + 80055be: e050 b.n 8005662 + 80055c0: 687b ldr r3, [r7, #4] + 80055c2: 223c movs r2, #60 ; 0x3c + 80055c4: 2101 movs r1, #1 + 80055c6: 5499 strb r1, [r3, r2] /* Change the handler state */ htim->State = HAL_TIM_STATE_BUSY; - 80055e8: 687b ldr r3, [r7, #4] - 80055ea: 223d movs r2, #61 ; 0x3d - 80055ec: 2102 movs r1, #2 - 80055ee: 5499 strb r1, [r3, r2] + 80055c8: 687b ldr r3, [r7, #4] + 80055ca: 223d movs r2, #61 ; 0x3d + 80055cc: 2102 movs r1, #2 + 80055ce: 5499 strb r1, [r3, r2] /* Get the TIMx CR2 register value */ tmpcr2 = htim->Instance->CR2; - 80055f0: 687b ldr r3, [r7, #4] - 80055f2: 681b ldr r3, [r3, #0] - 80055f4: 685b ldr r3, [r3, #4] - 80055f6: 60fb str r3, [r7, #12] + 80055d0: 687b ldr r3, [r7, #4] + 80055d2: 681b ldr r3, [r3, #0] + 80055d4: 685b ldr r3, [r3, #4] + 80055d6: 60fb str r3, [r7, #12] /* Get the TIMx SMCR register value */ tmpsmcr = htim->Instance->SMCR; - 80055f8: 687b ldr r3, [r7, #4] - 80055fa: 681b ldr r3, [r3, #0] - 80055fc: 689b ldr r3, [r3, #8] - 80055fe: 60bb str r3, [r7, #8] + 80055d8: 687b ldr r3, [r7, #4] + 80055da: 681b ldr r3, [r3, #0] + 80055dc: 689b ldr r3, [r3, #8] + 80055de: 60bb str r3, [r7, #8] /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */ if (IS_TIM_TRGO2_INSTANCE(htim->Instance)) - 8005600: 687b ldr r3, [r7, #4] - 8005602: 681b ldr r3, [r3, #0] - 8005604: 4a21 ldr r2, [pc, #132] ; (800568c ) - 8005606: 4293 cmp r3, r2 - 8005608: d108 bne.n 800561c + 80055e0: 687b ldr r3, [r7, #4] + 80055e2: 681b ldr r3, [r3, #0] + 80055e4: 4a21 ldr r2, [pc, #132] ; (800566c ) + 80055e6: 4293 cmp r3, r2 + 80055e8: d108 bne.n 80055fc { /* Check the parameters */ assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2)); /* Clear the MMS2 bits */ tmpcr2 &= ~TIM_CR2_MMS2; - 800560a: 68fb ldr r3, [r7, #12] - 800560c: 4a20 ldr r2, [pc, #128] ; (8005690 ) - 800560e: 4013 ands r3, r2 - 8005610: 60fb str r3, [r7, #12] + 80055ea: 68fb ldr r3, [r7, #12] + 80055ec: 4a20 ldr r2, [pc, #128] ; (8005670 ) + 80055ee: 4013 ands r3, r2 + 80055f0: 60fb str r3, [r7, #12] /* Select the TRGO2 source*/ tmpcr2 |= sMasterConfig->MasterOutputTrigger2; - 8005612: 683b ldr r3, [r7, #0] - 8005614: 685b ldr r3, [r3, #4] - 8005616: 68fa ldr r2, [r7, #12] - 8005618: 4313 orrs r3, r2 - 800561a: 60fb str r3, [r7, #12] + 80055f2: 683b ldr r3, [r7, #0] + 80055f4: 685b ldr r3, [r3, #4] + 80055f6: 68fa ldr r2, [r7, #12] + 80055f8: 4313 orrs r3, r2 + 80055fa: 60fb str r3, [r7, #12] } /* Reset the MMS Bits */ tmpcr2 &= ~TIM_CR2_MMS; - 800561c: 68fb ldr r3, [r7, #12] - 800561e: 2270 movs r2, #112 ; 0x70 - 8005620: 4393 bics r3, r2 - 8005622: 60fb str r3, [r7, #12] + 80055fc: 68fb ldr r3, [r7, #12] + 80055fe: 2270 movs r2, #112 ; 0x70 + 8005600: 4393 bics r3, r2 + 8005602: 60fb str r3, [r7, #12] /* Select the TRGO source */ tmpcr2 |= sMasterConfig->MasterOutputTrigger; - 8005624: 683b ldr r3, [r7, #0] - 8005626: 681b ldr r3, [r3, #0] - 8005628: 68fa ldr r2, [r7, #12] - 800562a: 4313 orrs r3, r2 - 800562c: 60fb str r3, [r7, #12] + 8005604: 683b ldr r3, [r7, #0] + 8005606: 681b ldr r3, [r3, #0] + 8005608: 68fa ldr r2, [r7, #12] + 800560a: 4313 orrs r3, r2 + 800560c: 60fb str r3, [r7, #12] /* Update TIMx CR2 */ htim->Instance->CR2 = tmpcr2; - 800562e: 687b ldr r3, [r7, #4] - 8005630: 681b ldr r3, [r3, #0] - 8005632: 68fa ldr r2, [r7, #12] - 8005634: 605a str r2, [r3, #4] + 800560e: 687b ldr r3, [r7, #4] + 8005610: 681b ldr r3, [r3, #0] + 8005612: 68fa ldr r2, [r7, #12] + 8005614: 605a str r2, [r3, #4] if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 8005636: 687b ldr r3, [r7, #4] - 8005638: 681b ldr r3, [r3, #0] - 800563a: 4a14 ldr r2, [pc, #80] ; (800568c ) - 800563c: 4293 cmp r3, r2 - 800563e: d00a beq.n 8005656 - 8005640: 687b ldr r3, [r7, #4] - 8005642: 681a ldr r2, [r3, #0] - 8005644: 2380 movs r3, #128 ; 0x80 - 8005646: 05db lsls r3, r3, #23 - 8005648: 429a cmp r2, r3 - 800564a: d004 beq.n 8005656 - 800564c: 687b ldr r3, [r7, #4] - 800564e: 681b ldr r3, [r3, #0] - 8005650: 4a10 ldr r2, [pc, #64] ; (8005694 ) - 8005652: 4293 cmp r3, r2 - 8005654: d10c bne.n 8005670 + 8005616: 687b ldr r3, [r7, #4] + 8005618: 681b ldr r3, [r3, #0] + 800561a: 4a14 ldr r2, [pc, #80] ; (800566c ) + 800561c: 4293 cmp r3, r2 + 800561e: d00a beq.n 8005636 + 8005620: 687b ldr r3, [r7, #4] + 8005622: 681a ldr r2, [r3, #0] + 8005624: 2380 movs r3, #128 ; 0x80 + 8005626: 05db lsls r3, r3, #23 + 8005628: 429a cmp r2, r3 + 800562a: d004 beq.n 8005636 + 800562c: 687b ldr r3, [r7, #4] + 800562e: 681b ldr r3, [r3, #0] + 8005630: 4a10 ldr r2, [pc, #64] ; (8005674 ) + 8005632: 4293 cmp r3, r2 + 8005634: d10c bne.n 8005650 { /* Reset the MSM Bit */ tmpsmcr &= ~TIM_SMCR_MSM; - 8005656: 68bb ldr r3, [r7, #8] - 8005658: 2280 movs r2, #128 ; 0x80 - 800565a: 4393 bics r3, r2 - 800565c: 60bb str r3, [r7, #8] + 8005636: 68bb ldr r3, [r7, #8] + 8005638: 2280 movs r2, #128 ; 0x80 + 800563a: 4393 bics r3, r2 + 800563c: 60bb str r3, [r7, #8] /* Set master mode */ tmpsmcr |= sMasterConfig->MasterSlaveMode; - 800565e: 683b ldr r3, [r7, #0] - 8005660: 689b ldr r3, [r3, #8] - 8005662: 68ba ldr r2, [r7, #8] - 8005664: 4313 orrs r3, r2 - 8005666: 60bb str r3, [r7, #8] + 800563e: 683b ldr r3, [r7, #0] + 8005640: 689b ldr r3, [r3, #8] + 8005642: 68ba ldr r2, [r7, #8] + 8005644: 4313 orrs r3, r2 + 8005646: 60bb str r3, [r7, #8] /* Update TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; - 8005668: 687b ldr r3, [r7, #4] - 800566a: 681b ldr r3, [r3, #0] - 800566c: 68ba ldr r2, [r7, #8] - 800566e: 609a str r2, [r3, #8] + 8005648: 687b ldr r3, [r7, #4] + 800564a: 681b ldr r3, [r3, #0] + 800564c: 68ba ldr r2, [r7, #8] + 800564e: 609a str r2, [r3, #8] } /* Change the htim state */ htim->State = HAL_TIM_STATE_READY; - 8005670: 687b ldr r3, [r7, #4] - 8005672: 223d movs r2, #61 ; 0x3d - 8005674: 2101 movs r1, #1 - 8005676: 5499 strb r1, [r3, r2] + 8005650: 687b ldr r3, [r7, #4] + 8005652: 223d movs r2, #61 ; 0x3d + 8005654: 2101 movs r1, #1 + 8005656: 5499 strb r1, [r3, r2] __HAL_UNLOCK(htim); - 8005678: 687b ldr r3, [r7, #4] - 800567a: 223c movs r2, #60 ; 0x3c - 800567c: 2100 movs r1, #0 - 800567e: 5499 strb r1, [r3, r2] + 8005658: 687b ldr r3, [r7, #4] + 800565a: 223c movs r2, #60 ; 0x3c + 800565c: 2100 movs r1, #0 + 800565e: 5499 strb r1, [r3, r2] return HAL_OK; - 8005680: 2300 movs r3, #0 + 8005660: 2300 movs r3, #0 } - 8005682: 0018 movs r0, r3 - 8005684: 46bd mov sp, r7 - 8005686: b004 add sp, #16 - 8005688: bd80 pop {r7, pc} - 800568a: 46c0 nop ; (mov r8, r8) - 800568c: 40012c00 .word 0x40012c00 - 8005690: ff0fffff .word 0xff0fffff - 8005694: 40000400 .word 0x40000400 + 8005662: 0018 movs r0, r3 + 8005664: 46bd mov sp, r7 + 8005666: b004 add sp, #16 + 8005668: bd80 pop {r7, pc} + 800566a: 46c0 nop ; (mov r8, r8) + 800566c: 40012c00 .word 0x40012c00 + 8005670: ff0fffff .word 0xff0fffff + 8005674: 40000400 .word 0x40000400 -08005698 : +08005678 : * @brief Hall commutation changed callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) +{ + 8005678: b580 push {r7, lr} + 800567a: b082 sub sp, #8 + 800567c: af00 add r7, sp, #0 + 800567e: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIMEx_CommutCallback could be implemented in the user file + */ +} + 8005680: 46c0 nop ; (mov r8, r8) + 8005682: 46bd mov sp, r7 + 8005684: b002 add sp, #8 + 8005686: bd80 pop {r7, pc} + +08005688 : + * @brief Hall Break detection callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) +{ + 8005688: b580 push {r7, lr} + 800568a: b082 sub sp, #8 + 800568c: af00 add r7, sp, #0 + 800568e: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIMEx_BreakCallback could be implemented in the user file + */ +} + 8005690: 46c0 nop ; (mov r8, r8) + 8005692: 46bd mov sp, r7 + 8005694: b002 add sp, #8 + 8005696: bd80 pop {r7, pc} + +08005698 : + * @brief Hall Break2 detection callback in non blocking mode + * @param htim: TIM handle + * @retval None + */ +__weak void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim) { 8005698: b580 push {r7, lr} 800569a: b082 sub sp, #8 @@ -15392,8 +15427,8 @@ __weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) 800569e: 6078 str r0, [r7, #4] UNUSED(htim); - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIMEx_CommutCallback could be implemented in the user file + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_TIMEx_Break2Callback could be implemented in the user file */ } 80056a0: 46c0 nop ; (mov r8, r8) @@ -15401,1955 +15436,1936 @@ __weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) 80056a4: b002 add sp, #8 80056a6: bd80 pop {r7, pc} -080056a8 : - * @brief Hall Break detection callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) -{ - 80056a8: b580 push {r7, lr} - 80056aa: b082 sub sp, #8 - 80056ac: af00 add r7, sp, #0 - 80056ae: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIMEx_BreakCallback could be implemented in the user file - */ -} - 80056b0: 46c0 nop ; (mov r8, r8) - 80056b2: 46bd mov sp, r7 - 80056b4: b002 add sp, #8 - 80056b6: bd80 pop {r7, pc} - -080056b8 : - * @brief Hall Break2 detection callback in non blocking mode - * @param htim: TIM handle - * @retval None - */ -__weak void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim) -{ - 80056b8: b580 push {r7, lr} - 80056ba: b082 sub sp, #8 - 80056bc: af00 add r7, sp, #0 - 80056be: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function Should not be modified, when the callback is needed, - the HAL_TIMEx_Break2Callback could be implemented in the user file - */ -} - 80056c0: 46c0 nop ; (mov r8, r8) - 80056c2: 46bd mov sp, r7 - 80056c4: b002 add sp, #8 - 80056c6: bd80 pop {r7, pc} - -080056c8 : +080056a8 : //--------------------------------------------------------- // I2C communication Functions //--------------------------------------------------------- // Write an 8-bit register void writeReg(uint8_t reg, uint8_t value) { - 80056c8: b580 push {r7, lr} - 80056ca: b086 sub sp, #24 - 80056cc: af04 add r7, sp, #16 - 80056ce: 0002 movs r2, r0 - 80056d0: 1dfb adds r3, r7, #7 - 80056d2: 701a strb r2, [r3, #0] - 80056d4: 1dbb adds r3, r7, #6 - 80056d6: 1c0a adds r2, r1, #0 - 80056d8: 701a strb r2, [r3, #0] + 80056a8: b580 push {r7, lr} + 80056aa: b086 sub sp, #24 + 80056ac: af04 add r7, sp, #16 + 80056ae: 0002 movs r2, r0 + 80056b0: 1dfb adds r3, r7, #7 + 80056b2: 701a strb r2, [r3, #0] + 80056b4: 1dbb adds r3, r7, #6 + 80056b6: 1c0a adds r2, r1, #0 + 80056b8: 701a strb r2, [r3, #0] HAL_I2C_Mem_Write(&TOF_I2C, g_i2cAddr, reg, I2C_MEMADD_SIZE_8BIT, &value, 1, HAL_MAX_DELAY); - 80056da: 4b0a ldr r3, [pc, #40] ; (8005704 ) - 80056dc: 781b ldrb r3, [r3, #0] - 80056de: b299 uxth r1, r3 - 80056e0: 1dfb adds r3, r7, #7 - 80056e2: 781b ldrb r3, [r3, #0] - 80056e4: b29a uxth r2, r3 - 80056e6: 4808 ldr r0, [pc, #32] ; (8005708 ) - 80056e8: 2301 movs r3, #1 - 80056ea: 425b negs r3, r3 - 80056ec: 9302 str r3, [sp, #8] - 80056ee: 2301 movs r3, #1 - 80056f0: 9301 str r3, [sp, #4] - 80056f2: 1dbb adds r3, r7, #6 - 80056f4: 9300 str r3, [sp, #0] - 80056f6: 2301 movs r3, #1 - 80056f8: f7fd fa20 bl 8002b3c + 80056ba: 4b0a ldr r3, [pc, #40] ; (80056e4 ) + 80056bc: 781b ldrb r3, [r3, #0] + 80056be: b299 uxth r1, r3 + 80056c0: 1dfb adds r3, r7, #7 + 80056c2: 781b ldrb r3, [r3, #0] + 80056c4: b29a uxth r2, r3 + 80056c6: 4808 ldr r0, [pc, #32] ; (80056e8 ) + 80056c8: 2301 movs r3, #1 + 80056ca: 425b negs r3, r3 + 80056cc: 9302 str r3, [sp, #8] + 80056ce: 2301 movs r3, #1 + 80056d0: 9301 str r3, [sp, #4] + 80056d2: 1dbb adds r3, r7, #6 + 80056d4: 9300 str r3, [sp, #0] + 80056d6: 2301 movs r3, #1 + 80056d8: f7fd fa20 bl 8002b1c } - 80056fc: 46c0 nop ; (mov r8, r8) - 80056fe: 46bd mov sp, r7 - 8005700: b002 add sp, #8 - 8005702: bd80 pop {r7, pc} - 8005704: 2000000d .word 0x2000000d - 8005708: 200000d8 .word 0x200000d8 + 80056dc: 46c0 nop ; (mov r8, r8) + 80056de: 46bd mov sp, r7 + 80056e0: b002 add sp, #8 + 80056e2: bd80 pop {r7, pc} + 80056e4: 2000000d .word 0x2000000d + 80056e8: 200000d8 .word 0x200000d8 -0800570c : +080056ec : // Write a 16-bit register void writeReg16Bit(uint8_t reg, uint16_t value) { - 800570c: b590 push {r4, r7, lr} - 800570e: b089 sub sp, #36 ; 0x24 - 8005710: af04 add r7, sp, #16 - 8005712: 0002 movs r2, r0 - 8005714: 1dfb adds r3, r7, #7 - 8005716: 701a strb r2, [r3, #0] - 8005718: 1d3b adds r3, r7, #4 - 800571a: 1c0a adds r2, r1, #0 - 800571c: 801a strh r2, [r3, #0] + 80056ec: b590 push {r4, r7, lr} + 80056ee: b089 sub sp, #36 ; 0x24 + 80056f0: af04 add r7, sp, #16 + 80056f2: 0002 movs r2, r0 + 80056f4: 1dfb adds r3, r7, #7 + 80056f6: 701a strb r2, [r3, #0] + 80056f8: 1d3b adds r3, r7, #4 + 80056fa: 1c0a adds r2, r1, #0 + 80056fc: 801a strh r2, [r3, #0] uint8_t data[2]; data[0] = (value >> 8) & 0xFF; - 800571e: 1d3b adds r3, r7, #4 - 8005720: 881b ldrh r3, [r3, #0] - 8005722: 0a1b lsrs r3, r3, #8 - 8005724: b29b uxth r3, r3 - 8005726: b2da uxtb r2, r3 - 8005728: 240c movs r4, #12 - 800572a: 193b adds r3, r7, r4 - 800572c: 701a strb r2, [r3, #0] + 80056fe: 1d3b adds r3, r7, #4 + 8005700: 881b ldrh r3, [r3, #0] + 8005702: 0a1b lsrs r3, r3, #8 + 8005704: b29b uxth r3, r3 + 8005706: b2da uxtb r2, r3 + 8005708: 240c movs r4, #12 + 800570a: 193b adds r3, r7, r4 + 800570c: 701a strb r2, [r3, #0] data[1] = (value ) & 0xFF; - 800572e: 1d3b adds r3, r7, #4 - 8005730: 881b ldrh r3, [r3, #0] - 8005732: b2da uxtb r2, r3 - 8005734: 193b adds r3, r7, r4 - 8005736: 705a strb r2, [r3, #1] + 800570e: 1d3b adds r3, r7, #4 + 8005710: 881b ldrh r3, [r3, #0] + 8005712: b2da uxtb r2, r3 + 8005714: 193b adds r3, r7, r4 + 8005716: 705a strb r2, [r3, #1] HAL_I2C_Mem_Write(&TOF_I2C, g_i2cAddr, reg, I2C_MEMADD_SIZE_8BIT, data, 2, HAL_MAX_DELAY); - 8005738: 4b0a ldr r3, [pc, #40] ; (8005764 ) - 800573a: 781b ldrb r3, [r3, #0] - 800573c: b299 uxth r1, r3 - 800573e: 1dfb adds r3, r7, #7 - 8005740: 781b ldrb r3, [r3, #0] - 8005742: b29a uxth r2, r3 - 8005744: 4808 ldr r0, [pc, #32] ; (8005768 ) - 8005746: 2301 movs r3, #1 - 8005748: 425b negs r3, r3 - 800574a: 9302 str r3, [sp, #8] - 800574c: 2302 movs r3, #2 - 800574e: 9301 str r3, [sp, #4] - 8005750: 193b adds r3, r7, r4 - 8005752: 9300 str r3, [sp, #0] - 8005754: 2301 movs r3, #1 - 8005756: f7fd f9f1 bl 8002b3c + 8005718: 4b0a ldr r3, [pc, #40] ; (8005744 ) + 800571a: 781b ldrb r3, [r3, #0] + 800571c: b299 uxth r1, r3 + 800571e: 1dfb adds r3, r7, #7 + 8005720: 781b ldrb r3, [r3, #0] + 8005722: b29a uxth r2, r3 + 8005724: 4808 ldr r0, [pc, #32] ; (8005748 ) + 8005726: 2301 movs r3, #1 + 8005728: 425b negs r3, r3 + 800572a: 9302 str r3, [sp, #8] + 800572c: 2302 movs r3, #2 + 800572e: 9301 str r3, [sp, #4] + 8005730: 193b adds r3, r7, r4 + 8005732: 9300 str r3, [sp, #0] + 8005734: 2301 movs r3, #1 + 8005736: f7fd f9f1 bl 8002b1c } - 800575a: 46c0 nop ; (mov r8, r8) - 800575c: 46bd mov sp, r7 - 800575e: b005 add sp, #20 - 8005760: bd90 pop {r4, r7, pc} - 8005762: 46c0 nop ; (mov r8, r8) - 8005764: 2000000d .word 0x2000000d - 8005768: 200000d8 .word 0x200000d8 + 800573a: 46c0 nop ; (mov r8, r8) + 800573c: 46bd mov sp, r7 + 800573e: b005 add sp, #20 + 8005740: bd90 pop {r4, r7, pc} + 8005742: 46c0 nop ; (mov r8, r8) + 8005744: 2000000d .word 0x2000000d + 8005748: 200000d8 .word 0x200000d8 -0800576c : +0800574c : // Write a 32-bit register void writeReg32Bit(uint8_t reg, uint32_t value) { - 800576c: b590 push {r4, r7, lr} - 800576e: b089 sub sp, #36 ; 0x24 - 8005770: af04 add r7, sp, #16 - 8005772: 0002 movs r2, r0 - 8005774: 6039 str r1, [r7, #0] - 8005776: 1dfb adds r3, r7, #7 - 8005778: 701a strb r2, [r3, #0] + 800574c: b590 push {r4, r7, lr} + 800574e: b089 sub sp, #36 ; 0x24 + 8005750: af04 add r7, sp, #16 + 8005752: 0002 movs r2, r0 + 8005754: 6039 str r1, [r7, #0] + 8005756: 1dfb adds r3, r7, #7 + 8005758: 701a strb r2, [r3, #0] uint8_t data[4]; data[0] = (value >> 24) & 0xFF; - 800577a: 683b ldr r3, [r7, #0] - 800577c: 0e1b lsrs r3, r3, #24 - 800577e: b2da uxtb r2, r3 - 8005780: 240c movs r4, #12 - 8005782: 193b adds r3, r7, r4 - 8005784: 701a strb r2, [r3, #0] + 800575a: 683b ldr r3, [r7, #0] + 800575c: 0e1b lsrs r3, r3, #24 + 800575e: b2da uxtb r2, r3 + 8005760: 240c movs r4, #12 + 8005762: 193b adds r3, r7, r4 + 8005764: 701a strb r2, [r3, #0] data[1] = (value >> 16) & 0xFF; - 8005786: 683b ldr r3, [r7, #0] - 8005788: 0c1b lsrs r3, r3, #16 - 800578a: b2da uxtb r2, r3 - 800578c: 193b adds r3, r7, r4 - 800578e: 705a strb r2, [r3, #1] + 8005766: 683b ldr r3, [r7, #0] + 8005768: 0c1b lsrs r3, r3, #16 + 800576a: b2da uxtb r2, r3 + 800576c: 193b adds r3, r7, r4 + 800576e: 705a strb r2, [r3, #1] data[2] = (value >> 8) & 0xFF; - 8005790: 683b ldr r3, [r7, #0] - 8005792: 0a1b lsrs r3, r3, #8 - 8005794: b2da uxtb r2, r3 - 8005796: 193b adds r3, r7, r4 - 8005798: 709a strb r2, [r3, #2] + 8005770: 683b ldr r3, [r7, #0] + 8005772: 0a1b lsrs r3, r3, #8 + 8005774: b2da uxtb r2, r3 + 8005776: 193b adds r3, r7, r4 + 8005778: 709a strb r2, [r3, #2] data[3] = (value ) & 0xFF; - 800579a: 683b ldr r3, [r7, #0] - 800579c: b2da uxtb r2, r3 - 800579e: 193b adds r3, r7, r4 - 80057a0: 70da strb r2, [r3, #3] + 800577a: 683b ldr r3, [r7, #0] + 800577c: b2da uxtb r2, r3 + 800577e: 193b adds r3, r7, r4 + 8005780: 70da strb r2, [r3, #3] HAL_I2C_Mem_Write(&TOF_I2C, g_i2cAddr, reg, I2C_MEMADD_SIZE_8BIT, data, 4, HAL_MAX_DELAY); - 80057a2: 4b0a ldr r3, [pc, #40] ; (80057cc ) - 80057a4: 781b ldrb r3, [r3, #0] - 80057a6: b299 uxth r1, r3 - 80057a8: 1dfb adds r3, r7, #7 - 80057aa: 781b ldrb r3, [r3, #0] - 80057ac: b29a uxth r2, r3 - 80057ae: 4808 ldr r0, [pc, #32] ; (80057d0 ) - 80057b0: 2301 movs r3, #1 - 80057b2: 425b negs r3, r3 - 80057b4: 9302 str r3, [sp, #8] - 80057b6: 2304 movs r3, #4 - 80057b8: 9301 str r3, [sp, #4] - 80057ba: 193b adds r3, r7, r4 - 80057bc: 9300 str r3, [sp, #0] - 80057be: 2301 movs r3, #1 - 80057c0: f7fd f9bc bl 8002b3c + 8005782: 4b0a ldr r3, [pc, #40] ; (80057ac ) + 8005784: 781b ldrb r3, [r3, #0] + 8005786: b299 uxth r1, r3 + 8005788: 1dfb adds r3, r7, #7 + 800578a: 781b ldrb r3, [r3, #0] + 800578c: b29a uxth r2, r3 + 800578e: 4808 ldr r0, [pc, #32] ; (80057b0 ) + 8005790: 2301 movs r3, #1 + 8005792: 425b negs r3, r3 + 8005794: 9302 str r3, [sp, #8] + 8005796: 2304 movs r3, #4 + 8005798: 9301 str r3, [sp, #4] + 800579a: 193b adds r3, r7, r4 + 800579c: 9300 str r3, [sp, #0] + 800579e: 2301 movs r3, #1 + 80057a0: f7fd f9bc bl 8002b1c } - 80057c4: 46c0 nop ; (mov r8, r8) - 80057c6: 46bd mov sp, r7 - 80057c8: b005 add sp, #20 - 80057ca: bd90 pop {r4, r7, pc} - 80057cc: 2000000d .word 0x2000000d - 80057d0: 200000d8 .word 0x200000d8 + 80057a4: 46c0 nop ; (mov r8, r8) + 80057a6: 46bd mov sp, r7 + 80057a8: b005 add sp, #20 + 80057aa: bd90 pop {r4, r7, pc} + 80057ac: 2000000d .word 0x2000000d + 80057b0: 200000d8 .word 0x200000d8 -080057d4 : +080057b4 : // Read an 8-bit register uint8_t readReg(uint8_t reg) { - 80057d4: b590 push {r4, r7, lr} - 80057d6: b089 sub sp, #36 ; 0x24 - 80057d8: af04 add r7, sp, #16 - 80057da: 0002 movs r2, r0 - 80057dc: 1dfb adds r3, r7, #7 - 80057de: 701a strb r2, [r3, #0] + 80057b4: b590 push {r4, r7, lr} + 80057b6: b089 sub sp, #36 ; 0x24 + 80057b8: af04 add r7, sp, #16 + 80057ba: 0002 movs r2, r0 + 80057bc: 1dfb adds r3, r7, #7 + 80057be: 701a strb r2, [r3, #0] uint8_t data; HAL_I2C_Mem_Read(&TOF_I2C, g_i2cAddr, reg, I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY); - 80057e0: 4b0b ldr r3, [pc, #44] ; (8005810 ) - 80057e2: 781b ldrb r3, [r3, #0] - 80057e4: b299 uxth r1, r3 - 80057e6: 1dfb adds r3, r7, #7 - 80057e8: 781b ldrb r3, [r3, #0] - 80057ea: b29a uxth r2, r3 - 80057ec: 4809 ldr r0, [pc, #36] ; (8005814 ) - 80057ee: 2301 movs r3, #1 - 80057f0: 425b negs r3, r3 - 80057f2: 9302 str r3, [sp, #8] - 80057f4: 2301 movs r3, #1 - 80057f6: 9301 str r3, [sp, #4] - 80057f8: 240f movs r4, #15 - 80057fa: 193b adds r3, r7, r4 - 80057fc: 9300 str r3, [sp, #0] - 80057fe: 2301 movs r3, #1 - 8005800: f7fd faca bl 8002d98 + 80057c0: 4b0b ldr r3, [pc, #44] ; (80057f0 ) + 80057c2: 781b ldrb r3, [r3, #0] + 80057c4: b299 uxth r1, r3 + 80057c6: 1dfb adds r3, r7, #7 + 80057c8: 781b ldrb r3, [r3, #0] + 80057ca: b29a uxth r2, r3 + 80057cc: 4809 ldr r0, [pc, #36] ; (80057f4 ) + 80057ce: 2301 movs r3, #1 + 80057d0: 425b negs r3, r3 + 80057d2: 9302 str r3, [sp, #8] + 80057d4: 2301 movs r3, #1 + 80057d6: 9301 str r3, [sp, #4] + 80057d8: 240f movs r4, #15 + 80057da: 193b adds r3, r7, r4 + 80057dc: 9300 str r3, [sp, #0] + 80057de: 2301 movs r3, #1 + 80057e0: f7fd faca bl 8002d78 return data; - 8005804: 193b adds r3, r7, r4 - 8005806: 781b ldrb r3, [r3, #0] + 80057e4: 193b adds r3, r7, r4 + 80057e6: 781b ldrb r3, [r3, #0] } - 8005808: 0018 movs r0, r3 - 800580a: 46bd mov sp, r7 - 800580c: b005 add sp, #20 - 800580e: bd90 pop {r4, r7, pc} - 8005810: 2000000d .word 0x2000000d - 8005814: 200000d8 .word 0x200000d8 + 80057e8: 0018 movs r0, r3 + 80057ea: 46bd mov sp, r7 + 80057ec: b005 add sp, #20 + 80057ee: bd90 pop {r4, r7, pc} + 80057f0: 2000000d .word 0x2000000d + 80057f4: 200000d8 .word 0x200000d8 -08005818 : +080057f8 : // Read a 16-bit register uint16_t readReg16Bit(uint8_t reg) { - 8005818: b590 push {r4, r7, lr} - 800581a: b089 sub sp, #36 ; 0x24 - 800581c: af04 add r7, sp, #16 - 800581e: 0002 movs r2, r0 - 8005820: 1dfb adds r3, r7, #7 - 8005822: 701a strb r2, [r3, #0] + 80057f8: b590 push {r4, r7, lr} + 80057fa: b089 sub sp, #36 ; 0x24 + 80057fc: af04 add r7, sp, #16 + 80057fe: 0002 movs r2, r0 + 8005800: 1dfb adds r3, r7, #7 + 8005802: 701a strb r2, [r3, #0] uint16_t value; uint8_t data[2]; HAL_I2C_Mem_Read(&TOF_I2C, g_i2cAddr, reg, I2C_MEMADD_SIZE_8BIT, data, 2, HAL_MAX_DELAY); - 8005824: 4b13 ldr r3, [pc, #76] ; (8005874 ) - 8005826: 781b ldrb r3, [r3, #0] - 8005828: b299 uxth r1, r3 - 800582a: 1dfb adds r3, r7, #7 + 8005804: 4b13 ldr r3, [pc, #76] ; (8005854 ) + 8005806: 781b ldrb r3, [r3, #0] + 8005808: b299 uxth r1, r3 + 800580a: 1dfb adds r3, r7, #7 + 800580c: 781b ldrb r3, [r3, #0] + 800580e: b29a uxth r2, r3 + 8005810: 4811 ldr r0, [pc, #68] ; (8005858 ) + 8005812: 2301 movs r3, #1 + 8005814: 425b negs r3, r3 + 8005816: 9302 str r3, [sp, #8] + 8005818: 2302 movs r3, #2 + 800581a: 9301 str r3, [sp, #4] + 800581c: 240c movs r4, #12 + 800581e: 193b adds r3, r7, r4 + 8005820: 9300 str r3, [sp, #0] + 8005822: 2301 movs r3, #1 + 8005824: f7fd faa8 bl 8002d78 + value = data[0] << 8; + 8005828: 0021 movs r1, r4 + 800582a: 187b adds r3, r7, r1 800582c: 781b ldrb r3, [r3, #0] 800582e: b29a uxth r2, r3 - 8005830: 4811 ldr r0, [pc, #68] ; (8005878 ) - 8005832: 2301 movs r3, #1 - 8005834: 425b negs r3, r3 - 8005836: 9302 str r3, [sp, #8] - 8005838: 2302 movs r3, #2 - 800583a: 9301 str r3, [sp, #4] - 800583c: 240c movs r4, #12 - 800583e: 193b adds r3, r7, r4 - 8005840: 9300 str r3, [sp, #0] - 8005842: 2301 movs r3, #1 - 8005844: f7fd faa8 bl 8002d98 - value = data[0] << 8; - 8005848: 0021 movs r1, r4 - 800584a: 187b adds r3, r7, r1 - 800584c: 781b ldrb r3, [r3, #0] - 800584e: b29a uxth r2, r3 - 8005850: 200e movs r0, #14 - 8005852: 183b adds r3, r7, r0 - 8005854: 0212 lsls r2, r2, #8 - 8005856: 801a strh r2, [r3, #0] + 8005830: 200e movs r0, #14 + 8005832: 183b adds r3, r7, r0 + 8005834: 0212 lsls r2, r2, #8 + 8005836: 801a strh r2, [r3, #0] value |= data[1]; - 8005858: 187b adds r3, r7, r1 - 800585a: 785b ldrb r3, [r3, #1] - 800585c: b299 uxth r1, r3 - 800585e: 183b adds r3, r7, r0 - 8005860: 183a adds r2, r7, r0 - 8005862: 8812 ldrh r2, [r2, #0] - 8005864: 430a orrs r2, r1 - 8005866: 801a strh r2, [r3, #0] + 8005838: 187b adds r3, r7, r1 + 800583a: 785b ldrb r3, [r3, #1] + 800583c: b299 uxth r1, r3 + 800583e: 183b adds r3, r7, r0 + 8005840: 183a adds r2, r7, r0 + 8005842: 8812 ldrh r2, [r2, #0] + 8005844: 430a orrs r2, r1 + 8005846: 801a strh r2, [r3, #0] return value; - 8005868: 183b adds r3, r7, r0 - 800586a: 881b ldrh r3, [r3, #0] + 8005848: 183b adds r3, r7, r0 + 800584a: 881b ldrh r3, [r3, #0] } - 800586c: 0018 movs r0, r3 - 800586e: 46bd mov sp, r7 - 8005870: b005 add sp, #20 - 8005872: bd90 pop {r4, r7, pc} - 8005874: 2000000d .word 0x2000000d - 8005878: 200000d8 .word 0x200000d8 + 800584c: 0018 movs r0, r3 + 800584e: 46bd mov sp, r7 + 8005850: b005 add sp, #20 + 8005852: bd90 pop {r4, r7, pc} + 8005854: 2000000d .word 0x2000000d + 8005858: 200000d8 .word 0x200000d8 -0800587c : +0800585c : return value; } // Write an arbitrary number of bytes from the given array to the sensor, // starting at the given register void writeMulti(uint8_t reg, uint8_t *src, uint8_t count) { - 800587c: b590 push {r4, r7, lr} - 800587e: b087 sub sp, #28 - 8005880: af04 add r7, sp, #16 - 8005882: 6039 str r1, [r7, #0] - 8005884: 0011 movs r1, r2 - 8005886: 1dfb adds r3, r7, #7 - 8005888: 1c02 adds r2, r0, #0 - 800588a: 701a strb r2, [r3, #0] - 800588c: 1dbb adds r3, r7, #6 - 800588e: 1c0a adds r2, r1, #0 - 8005890: 701a strb r2, [r3, #0] + 800585c: b590 push {r4, r7, lr} + 800585e: b087 sub sp, #28 + 8005860: af04 add r7, sp, #16 + 8005862: 6039 str r1, [r7, #0] + 8005864: 0011 movs r1, r2 + 8005866: 1dfb adds r3, r7, #7 + 8005868: 1c02 adds r2, r0, #0 + 800586a: 701a strb r2, [r3, #0] + 800586c: 1dbb adds r3, r7, #6 + 800586e: 1c0a adds r2, r1, #0 + 8005870: 701a strb r2, [r3, #0] HAL_I2C_Mem_Write(&TOF_I2C, g_i2cAddr, reg, I2C_MEMADD_SIZE_8BIT, src, count, HAL_MAX_DELAY); - 8005892: 4b0c ldr r3, [pc, #48] ; (80058c4 ) - 8005894: 781b ldrb r3, [r3, #0] - 8005896: b299 uxth r1, r3 - 8005898: 1dfb adds r3, r7, #7 - 800589a: 781b ldrb r3, [r3, #0] - 800589c: b29c uxth r4, r3 - 800589e: 1dbb adds r3, r7, #6 - 80058a0: 781b ldrb r3, [r3, #0] - 80058a2: b29b uxth r3, r3 - 80058a4: 4808 ldr r0, [pc, #32] ; (80058c8 ) - 80058a6: 2201 movs r2, #1 - 80058a8: 4252 negs r2, r2 - 80058aa: 9202 str r2, [sp, #8] - 80058ac: 9301 str r3, [sp, #4] - 80058ae: 683b ldr r3, [r7, #0] - 80058b0: 9300 str r3, [sp, #0] - 80058b2: 2301 movs r3, #1 - 80058b4: 0022 movs r2, r4 - 80058b6: f7fd f941 bl 8002b3c + 8005872: 4b0c ldr r3, [pc, #48] ; (80058a4 ) + 8005874: 781b ldrb r3, [r3, #0] + 8005876: b299 uxth r1, r3 + 8005878: 1dfb adds r3, r7, #7 + 800587a: 781b ldrb r3, [r3, #0] + 800587c: b29c uxth r4, r3 + 800587e: 1dbb adds r3, r7, #6 + 8005880: 781b ldrb r3, [r3, #0] + 8005882: b29b uxth r3, r3 + 8005884: 4808 ldr r0, [pc, #32] ; (80058a8 ) + 8005886: 2201 movs r2, #1 + 8005888: 4252 negs r2, r2 + 800588a: 9202 str r2, [sp, #8] + 800588c: 9301 str r3, [sp, #4] + 800588e: 683b ldr r3, [r7, #0] + 8005890: 9300 str r3, [sp, #0] + 8005892: 2301 movs r3, #1 + 8005894: 0022 movs r2, r4 + 8005896: f7fd f941 bl 8002b1c } - 80058ba: 46c0 nop ; (mov r8, r8) - 80058bc: 46bd mov sp, r7 - 80058be: b003 add sp, #12 - 80058c0: bd90 pop {r4, r7, pc} - 80058c2: 46c0 nop ; (mov r8, r8) - 80058c4: 2000000d .word 0x2000000d - 80058c8: 200000d8 .word 0x200000d8 + 800589a: 46c0 nop ; (mov r8, r8) + 800589c: 46bd mov sp, r7 + 800589e: b003 add sp, #12 + 80058a0: bd90 pop {r4, r7, pc} + 80058a2: 46c0 nop ; (mov r8, r8) + 80058a4: 2000000d .word 0x2000000d + 80058a8: 200000d8 .word 0x200000d8 -080058cc : +080058ac : // Read an arbitrary number of bytes from the sensor, starting at the given // register, into the given array void readMulti(uint8_t reg, uint8_t * dst, uint8_t count) { - 80058cc: b590 push {r4, r7, lr} - 80058ce: b087 sub sp, #28 - 80058d0: af04 add r7, sp, #16 - 80058d2: 6039 str r1, [r7, #0] - 80058d4: 0011 movs r1, r2 - 80058d6: 1dfb adds r3, r7, #7 - 80058d8: 1c02 adds r2, r0, #0 - 80058da: 701a strb r2, [r3, #0] - 80058dc: 1dbb adds r3, r7, #6 - 80058de: 1c0a adds r2, r1, #0 - 80058e0: 701a strb r2, [r3, #0] + 80058ac: b590 push {r4, r7, lr} + 80058ae: b087 sub sp, #28 + 80058b0: af04 add r7, sp, #16 + 80058b2: 6039 str r1, [r7, #0] + 80058b4: 0011 movs r1, r2 + 80058b6: 1dfb adds r3, r7, #7 + 80058b8: 1c02 adds r2, r0, #0 + 80058ba: 701a strb r2, [r3, #0] + 80058bc: 1dbb adds r3, r7, #6 + 80058be: 1c0a adds r2, r1, #0 + 80058c0: 701a strb r2, [r3, #0] HAL_I2C_Mem_Read(&TOF_I2C, g_i2cAddr, reg, I2C_MEMADD_SIZE_8BIT, dst, count, HAL_MAX_DELAY); - 80058e2: 4b0c ldr r3, [pc, #48] ; (8005914 ) - 80058e4: 781b ldrb r3, [r3, #0] - 80058e6: b299 uxth r1, r3 - 80058e8: 1dfb adds r3, r7, #7 - 80058ea: 781b ldrb r3, [r3, #0] - 80058ec: b29c uxth r4, r3 - 80058ee: 1dbb adds r3, r7, #6 - 80058f0: 781b ldrb r3, [r3, #0] - 80058f2: b29b uxth r3, r3 - 80058f4: 4808 ldr r0, [pc, #32] ; (8005918 ) - 80058f6: 2201 movs r2, #1 - 80058f8: 4252 negs r2, r2 - 80058fa: 9202 str r2, [sp, #8] - 80058fc: 9301 str r3, [sp, #4] - 80058fe: 683b ldr r3, [r7, #0] - 8005900: 9300 str r3, [sp, #0] - 8005902: 2301 movs r3, #1 - 8005904: 0022 movs r2, r4 - 8005906: f7fd fa47 bl 8002d98 + 80058c2: 4b0c ldr r3, [pc, #48] ; (80058f4 ) + 80058c4: 781b ldrb r3, [r3, #0] + 80058c6: b299 uxth r1, r3 + 80058c8: 1dfb adds r3, r7, #7 + 80058ca: 781b ldrb r3, [r3, #0] + 80058cc: b29c uxth r4, r3 + 80058ce: 1dbb adds r3, r7, #6 + 80058d0: 781b ldrb r3, [r3, #0] + 80058d2: b29b uxth r3, r3 + 80058d4: 4808 ldr r0, [pc, #32] ; (80058f8 ) + 80058d6: 2201 movs r2, #1 + 80058d8: 4252 negs r2, r2 + 80058da: 9202 str r2, [sp, #8] + 80058dc: 9301 str r3, [sp, #4] + 80058de: 683b ldr r3, [r7, #0] + 80058e0: 9300 str r3, [sp, #0] + 80058e2: 2301 movs r3, #1 + 80058e4: 0022 movs r2, r4 + 80058e6: f7fd fa47 bl 8002d78 } - 800590a: 46c0 nop ; (mov r8, r8) - 800590c: 46bd mov sp, r7 - 800590e: b003 add sp, #12 - 8005910: bd90 pop {r4, r7, pc} - 8005912: 46c0 nop ; (mov r8, r8) - 8005914: 2000000d .word 0x2000000d - 8005918: 200000d8 .word 0x200000d8 + 80058ea: 46c0 nop ; (mov r8, r8) + 80058ec: 46bd mov sp, r7 + 80058ee: b003 add sp, #12 + 80058f0: bd90 pop {r4, r7, pc} + 80058f2: 46c0 nop ; (mov r8, r8) + 80058f4: 2000000d .word 0x2000000d + 80058f8: 200000d8 .word 0x200000d8 -0800591c : +080058fc : // (VL53L0X_PerformRefSpadManagement()), since the API user manual says that it // is performed by ST on the bare modules; it seems like that should work well // enough unless a cover glass is added. // If io_2v8 (optional) is true or not given, the sensor is configured for 2V8 // mode. bool initVL53L0X( bool io_2v8 ){ - 800591c: b590 push {r4, r7, lr} - 800591e: b087 sub sp, #28 - 8005920: af00 add r7, sp, #0 - 8005922: 0002 movs r2, r0 - 8005924: 1dfb adds r3, r7, #7 - 8005926: 701a strb r2, [r3, #0] + 80058fc: b590 push {r4, r7, lr} + 80058fe: b087 sub sp, #28 + 8005900: af00 add r7, sp, #0 + 8005902: 0002 movs r2, r0 + 8005904: 1dfb adds r3, r7, #7 + 8005906: 701a strb r2, [r3, #0] // VL53L0X_DataInit() begin // sensor uses 1V8 mode for I/O by default; switch to 2V8 mode if necessary if (io_2v8) - 8005928: 1dfb adds r3, r7, #7 - 800592a: 781b ldrb r3, [r3, #0] - 800592c: 2b00 cmp r3, #0 - 800592e: d00b beq.n 8005948 + 8005908: 1dfb adds r3, r7, #7 + 800590a: 781b ldrb r3, [r3, #0] + 800590c: 2b00 cmp r3, #0 + 800590e: d00b beq.n 8005928 { writeReg(VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV, readReg(VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV) | 0x01); // set bit 0 - 8005930: 2089 movs r0, #137 ; 0x89 - 8005932: f7ff ff4f bl 80057d4 - 8005936: 0003 movs r3, r0 - 8005938: 001a movs r2, r3 + 8005910: 2089 movs r0, #137 ; 0x89 + 8005912: f7ff ff4f bl 80057b4 + 8005916: 0003 movs r3, r0 + 8005918: 001a movs r2, r3 writeReg(VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV, - 800593a: 2301 movs r3, #1 - 800593c: 4313 orrs r3, r2 - 800593e: b2db uxtb r3, r3 - 8005940: 0019 movs r1, r3 - 8005942: 2089 movs r0, #137 ; 0x89 - 8005944: f7ff fec0 bl 80056c8 + 800591a: 2301 movs r3, #1 + 800591c: 4313 orrs r3, r2 + 800591e: b2db uxtb r3, r3 + 8005920: 0019 movs r1, r3 + 8005922: 2089 movs r0, #137 ; 0x89 + 8005924: f7ff fec0 bl 80056a8 } // "Set I2C standard mode" writeReg(0x88, 0x00); - 8005948: 2100 movs r1, #0 - 800594a: 2088 movs r0, #136 ; 0x88 - 800594c: f7ff febc bl 80056c8 + 8005928: 2100 movs r1, #0 + 800592a: 2088 movs r0, #136 ; 0x88 + 800592c: f7ff febc bl 80056a8 writeReg(0x80, 0x01); - 8005950: 2101 movs r1, #1 - 8005952: 2080 movs r0, #128 ; 0x80 - 8005954: f7ff feb8 bl 80056c8 + 8005930: 2101 movs r1, #1 + 8005932: 2080 movs r0, #128 ; 0x80 + 8005934: f7ff feb8 bl 80056a8 writeReg(0xFF, 0x01); - 8005958: 2101 movs r1, #1 - 800595a: 20ff movs r0, #255 ; 0xff - 800595c: f7ff feb4 bl 80056c8 + 8005938: 2101 movs r1, #1 + 800593a: 20ff movs r0, #255 ; 0xff + 800593c: f7ff feb4 bl 80056a8 writeReg(0x00, 0x00); - 8005960: 2100 movs r1, #0 - 8005962: 2000 movs r0, #0 - 8005964: f7ff feb0 bl 80056c8 + 8005940: 2100 movs r1, #0 + 8005942: 2000 movs r0, #0 + 8005944: f7ff feb0 bl 80056a8 g_stopVariable = readReg(0x91); - 8005968: 2091 movs r0, #145 ; 0x91 - 800596a: f7ff ff33 bl 80057d4 - 800596e: 0003 movs r3, r0 - 8005970: 001a movs r2, r3 - 8005972: 4b44 ldr r3, [pc, #272] ; (8005a84 ) - 8005974: 701a strb r2, [r3, #0] + 8005948: 2091 movs r0, #145 ; 0x91 + 800594a: f7ff ff33 bl 80057b4 + 800594e: 0003 movs r3, r0 + 8005950: 001a movs r2, r3 + 8005952: 4b44 ldr r3, [pc, #272] ; (8005a64 ) + 8005954: 701a strb r2, [r3, #0] writeReg(0x00, 0x01); - 8005976: 2101 movs r1, #1 - 8005978: 2000 movs r0, #0 - 800597a: f7ff fea5 bl 80056c8 + 8005956: 2101 movs r1, #1 + 8005958: 2000 movs r0, #0 + 800595a: f7ff fea5 bl 80056a8 writeReg(0xFF, 0x00); - 800597e: 2100 movs r1, #0 - 8005980: 20ff movs r0, #255 ; 0xff - 8005982: f7ff fea1 bl 80056c8 + 800595e: 2100 movs r1, #0 + 8005960: 20ff movs r0, #255 ; 0xff + 8005962: f7ff fea1 bl 80056a8 writeReg(0x80, 0x00); - 8005986: 2100 movs r1, #0 - 8005988: 2080 movs r0, #128 ; 0x80 - 800598a: f7ff fe9d bl 80056c8 + 8005966: 2100 movs r1, #0 + 8005968: 2080 movs r0, #128 ; 0x80 + 800596a: f7ff fe9d bl 80056a8 // disable SIGNAL_RATE_MSRC (bit 1) and SIGNAL_RATE_PRE_RANGE (bit 4) limit checks writeReg(MSRC_CONFIG_CONTROL, readReg(MSRC_CONFIG_CONTROL) | 0x12); - 800598e: 2060 movs r0, #96 ; 0x60 - 8005990: f7ff ff20 bl 80057d4 - 8005994: 0003 movs r3, r0 - 8005996: 001a movs r2, r3 - 8005998: 2312 movs r3, #18 - 800599a: 4313 orrs r3, r2 - 800599c: b2db uxtb r3, r3 - 800599e: 0019 movs r1, r3 - 80059a0: 2060 movs r0, #96 ; 0x60 - 80059a2: f7ff fe91 bl 80056c8 + 800596e: 2060 movs r0, #96 ; 0x60 + 8005970: f7ff ff20 bl 80057b4 + 8005974: 0003 movs r3, r0 + 8005976: 001a movs r2, r3 + 8005978: 2312 movs r3, #18 + 800597a: 4313 orrs r3, r2 + 800597c: b2db uxtb r3, r3 + 800597e: 0019 movs r1, r3 + 8005980: 2060 movs r0, #96 ; 0x60 + 8005982: f7ff fe91 bl 80056a8 // set final range signal rate limit to 0.25 MCPS (million counts per second) setSignalRateLimit(0.25); - 80059a6: 23fa movs r3, #250 ; 0xfa - 80059a8: 059b lsls r3, r3, #22 - 80059aa: 1c18 adds r0, r3, #0 - 80059ac: f000 fa1c bl 8005de8 + 8005986: 23fa movs r3, #250 ; 0xfa + 8005988: 059b lsls r3, r3, #22 + 800598a: 1c18 adds r0, r3, #0 + 800598c: f000 fa1c bl 8005dc8 writeReg(SYSTEM_SEQUENCE_CONFIG, 0xFF); - 80059b0: 21ff movs r1, #255 ; 0xff - 80059b2: 2001 movs r0, #1 - 80059b4: f7ff fe88 bl 80056c8 + 8005990: 21ff movs r1, #255 ; 0xff + 8005992: 2001 movs r0, #1 + 8005994: f7ff fe88 bl 80056a8 // VL53L0X_StaticInit() begin uint8_t spad_count; bool spad_type_is_aperture; if (!getSpadInfo(&spad_count, &spad_type_is_aperture)) { return false; } - 80059b8: 2313 movs r3, #19 - 80059ba: 18fa adds r2, r7, r3 - 80059bc: 2314 movs r3, #20 - 80059be: 18fb adds r3, r7, r3 - 80059c0: 0011 movs r1, r2 - 80059c2: 0018 movs r0, r3 - 80059c4: f000 fc8a bl 80062dc - 80059c8: 1e03 subs r3, r0, #0 - 80059ca: d101 bne.n 80059d0 - 80059cc: 2300 movs r3, #0 - 80059ce: e204 b.n 8005dda + 8005998: 2313 movs r3, #19 + 800599a: 18fa adds r2, r7, r3 + 800599c: 2314 movs r3, #20 + 800599e: 18fb adds r3, r7, r3 + 80059a0: 0011 movs r1, r2 + 80059a2: 0018 movs r0, r3 + 80059a4: f000 fc9a bl 80062dc + 80059a8: 1e03 subs r3, r0, #0 + 80059aa: d101 bne.n 80059b0 + 80059ac: 2300 movs r3, #0 + 80059ae: e204 b.n 8005dba // The SPAD map (RefGoodSpadMap) is read by VL53L0X_get_info_from_device() in // the API, but the same data seems to be more easily readable from // GLOBAL_CONFIG_SPAD_ENABLES_REF_0 through _6, so read it from there uint8_t ref_spad_map[6]; readMulti(GLOBAL_CONFIG_SPAD_ENABLES_REF_0, ref_spad_map, 6); - 80059d0: 230c movs r3, #12 - 80059d2: 18fb adds r3, r7, r3 - 80059d4: 2206 movs r2, #6 - 80059d6: 0019 movs r1, r3 - 80059d8: 20b0 movs r0, #176 ; 0xb0 - 80059da: f7ff ff77 bl 80058cc + 80059b0: 230c movs r3, #12 + 80059b2: 18fb adds r3, r7, r3 + 80059b4: 2206 movs r2, #6 + 80059b6: 0019 movs r1, r3 + 80059b8: 20b0 movs r0, #176 ; 0xb0 + 80059ba: f7ff ff77 bl 80058ac // -- VL53L0X_set_reference_spads() begin (assume NVM values are valid) writeReg(0xFF, 0x01); - 80059de: 2101 movs r1, #1 - 80059e0: 20ff movs r0, #255 ; 0xff - 80059e2: f7ff fe71 bl 80056c8 + 80059be: 2101 movs r1, #1 + 80059c0: 20ff movs r0, #255 ; 0xff + 80059c2: f7ff fe71 bl 80056a8 writeReg(DYNAMIC_SPAD_REF_EN_START_OFFSET, 0x00); - 80059e6: 2100 movs r1, #0 - 80059e8: 204f movs r0, #79 ; 0x4f - 80059ea: f7ff fe6d bl 80056c8 + 80059c6: 2100 movs r1, #0 + 80059c8: 204f movs r0, #79 ; 0x4f + 80059ca: f7ff fe6d bl 80056a8 writeReg(DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD, 0x2C); - 80059ee: 212c movs r1, #44 ; 0x2c - 80059f0: 204e movs r0, #78 ; 0x4e - 80059f2: f7ff fe69 bl 80056c8 + 80059ce: 212c movs r1, #44 ; 0x2c + 80059d0: 204e movs r0, #78 ; 0x4e + 80059d2: f7ff fe69 bl 80056a8 writeReg(0xFF, 0x00); - 80059f6: 2100 movs r1, #0 - 80059f8: 20ff movs r0, #255 ; 0xff - 80059fa: f7ff fe65 bl 80056c8 + 80059d6: 2100 movs r1, #0 + 80059d8: 20ff movs r0, #255 ; 0xff + 80059da: f7ff fe65 bl 80056a8 writeReg(GLOBAL_CONFIG_REF_EN_START_SELECT, 0xB4); - 80059fe: 21b4 movs r1, #180 ; 0xb4 - 8005a00: 20b6 movs r0, #182 ; 0xb6 - 8005a02: f7ff fe61 bl 80056c8 + 80059de: 21b4 movs r1, #180 ; 0xb4 + 80059e0: 20b6 movs r0, #182 ; 0xb6 + 80059e2: f7ff fe61 bl 80056a8 uint8_t first_spad_to_enable = spad_type_is_aperture ? 12 : 0; // 12 is the first aperture spad - 8005a06: 2313 movs r3, #19 - 8005a08: 18fb adds r3, r7, r3 - 8005a0a: 781b ldrb r3, [r3, #0] - 8005a0c: 2b00 cmp r3, #0 - 8005a0e: d001 beq.n 8005a14 - 8005a10: 220c movs r2, #12 - 8005a12: e000 b.n 8005a16 - 8005a14: 2200 movs r2, #0 - 8005a16: 2315 movs r3, #21 - 8005a18: 18fb adds r3, r7, r3 - 8005a1a: 701a strb r2, [r3, #0] + 80059e6: 2313 movs r3, #19 + 80059e8: 18fb adds r3, r7, r3 + 80059ea: 781b ldrb r3, [r3, #0] + 80059ec: 2b00 cmp r3, #0 + 80059ee: d001 beq.n 80059f4 + 80059f0: 220c movs r2, #12 + 80059f2: e000 b.n 80059f6 + 80059f4: 2200 movs r2, #0 + 80059f6: 2315 movs r3, #21 + 80059f8: 18fb adds r3, r7, r3 + 80059fa: 701a strb r2, [r3, #0] uint8_t spads_enabled = 0; - 8005a1c: 2317 movs r3, #23 - 8005a1e: 18fb adds r3, r7, r3 - 8005a20: 2200 movs r2, #0 - 8005a22: 701a strb r2, [r3, #0] + 80059fc: 2317 movs r3, #23 + 80059fe: 18fb adds r3, r7, r3 + 8005a00: 2200 movs r2, #0 + 8005a02: 701a strb r2, [r3, #0] for (uint8_t i = 0; i < 48; i++) - 8005a24: 2316 movs r3, #22 - 8005a26: 18fb adds r3, r7, r3 - 8005a28: 2200 movs r2, #0 - 8005a2a: 701a strb r2, [r3, #0] - 8005a2c: e04b b.n 8005ac6 + 8005a04: 2316 movs r3, #22 + 8005a06: 18fb adds r3, r7, r3 + 8005a08: 2200 movs r2, #0 + 8005a0a: 701a strb r2, [r3, #0] + 8005a0c: e04b b.n 8005aa6 { if (i < first_spad_to_enable || spads_enabled == spad_count) - 8005a2e: 2316 movs r3, #22 - 8005a30: 18fa adds r2, r7, r3 - 8005a32: 2315 movs r3, #21 - 8005a34: 18fb adds r3, r7, r3 - 8005a36: 7812 ldrb r2, [r2, #0] - 8005a38: 781b ldrb r3, [r3, #0] - 8005a3a: 429a cmp r2, r3 - 8005a3c: d307 bcc.n 8005a4e - 8005a3e: 2314 movs r3, #20 - 8005a40: 18fb adds r3, r7, r3 - 8005a42: 781b ldrb r3, [r3, #0] - 8005a44: 2217 movs r2, #23 - 8005a46: 18ba adds r2, r7, r2 - 8005a48: 7812 ldrb r2, [r2, #0] - 8005a4a: 429a cmp r2, r3 - 8005a4c: d11c bne.n 8005a88 + 8005a0e: 2316 movs r3, #22 + 8005a10: 18fa adds r2, r7, r3 + 8005a12: 2315 movs r3, #21 + 8005a14: 18fb adds r3, r7, r3 + 8005a16: 7812 ldrb r2, [r2, #0] + 8005a18: 781b ldrb r3, [r3, #0] + 8005a1a: 429a cmp r2, r3 + 8005a1c: d307 bcc.n 8005a2e + 8005a1e: 2314 movs r3, #20 + 8005a20: 18fb adds r3, r7, r3 + 8005a22: 781b ldrb r3, [r3, #0] + 8005a24: 2217 movs r2, #23 + 8005a26: 18ba adds r2, r7, r2 + 8005a28: 7812 ldrb r2, [r2, #0] + 8005a2a: 429a cmp r2, r3 + 8005a2c: d11c bne.n 8005a68 { // This bit is lower than the first one that should be enabled, or // (reference_spad_count) bits have already been enabled, so zero this bit ref_spad_map[i / 8] &= ~(1 << (i % 8)); - 8005a4e: 2116 movs r1, #22 - 8005a50: 187b adds r3, r7, r1 - 8005a52: 781b ldrb r3, [r3, #0] - 8005a54: 08db lsrs r3, r3, #3 - 8005a56: b2d8 uxtb r0, r3 - 8005a58: 0002 movs r2, r0 - 8005a5a: 240c movs r4, #12 - 8005a5c: 193b adds r3, r7, r4 - 8005a5e: 5c9b ldrb r3, [r3, r2] - 8005a60: b25b sxtb r3, r3 - 8005a62: 187a adds r2, r7, r1 - 8005a64: 7812 ldrb r2, [r2, #0] - 8005a66: 2107 movs r1, #7 - 8005a68: 400a ands r2, r1 - 8005a6a: 2101 movs r1, #1 - 8005a6c: 4091 lsls r1, r2 - 8005a6e: 000a movs r2, r1 - 8005a70: b252 sxtb r2, r2 - 8005a72: 43d2 mvns r2, r2 - 8005a74: b252 sxtb r2, r2 - 8005a76: 4013 ands r3, r2 - 8005a78: b25b sxtb r3, r3 - 8005a7a: 0002 movs r2, r0 - 8005a7c: b2d9 uxtb r1, r3 - 8005a7e: 193b adds r3, r7, r4 - 8005a80: 5499 strb r1, [r3, r2] - 8005a82: e01a b.n 8005aba - 8005a84: 2000025e .word 0x2000025e + 8005a2e: 2116 movs r1, #22 + 8005a30: 187b adds r3, r7, r1 + 8005a32: 781b ldrb r3, [r3, #0] + 8005a34: 08db lsrs r3, r3, #3 + 8005a36: b2d8 uxtb r0, r3 + 8005a38: 0002 movs r2, r0 + 8005a3a: 240c movs r4, #12 + 8005a3c: 193b adds r3, r7, r4 + 8005a3e: 5c9b ldrb r3, [r3, r2] + 8005a40: b25b sxtb r3, r3 + 8005a42: 187a adds r2, r7, r1 + 8005a44: 7812 ldrb r2, [r2, #0] + 8005a46: 2107 movs r1, #7 + 8005a48: 400a ands r2, r1 + 8005a4a: 2101 movs r1, #1 + 8005a4c: 4091 lsls r1, r2 + 8005a4e: 000a movs r2, r1 + 8005a50: b252 sxtb r2, r2 + 8005a52: 43d2 mvns r2, r2 + 8005a54: b252 sxtb r2, r2 + 8005a56: 4013 ands r3, r2 + 8005a58: b25b sxtb r3, r3 + 8005a5a: 0002 movs r2, r0 + 8005a5c: b2d9 uxtb r1, r3 + 8005a5e: 193b adds r3, r7, r4 + 8005a60: 5499 strb r1, [r3, r2] + 8005a62: e01a b.n 8005a9a + 8005a64: 2000025e .word 0x2000025e } else if ((ref_spad_map[i / 8] >> (i % 8)) & 0x1) - 8005a88: 2016 movs r0, #22 - 8005a8a: 183b adds r3, r7, r0 - 8005a8c: 781b ldrb r3, [r3, #0] - 8005a8e: 08db lsrs r3, r3, #3 - 8005a90: b2db uxtb r3, r3 - 8005a92: 001a movs r2, r3 - 8005a94: 230c movs r3, #12 - 8005a96: 18fb adds r3, r7, r3 - 8005a98: 5c9b ldrb r3, [r3, r2] - 8005a9a: 0019 movs r1, r3 - 8005a9c: 183b adds r3, r7, r0 - 8005a9e: 781b ldrb r3, [r3, #0] - 8005aa0: 2207 movs r2, #7 - 8005aa2: 4013 ands r3, r2 - 8005aa4: 4119 asrs r1, r3 - 8005aa6: 000b movs r3, r1 - 8005aa8: 2201 movs r2, #1 - 8005aaa: 4013 ands r3, r2 - 8005aac: d005 beq.n 8005aba + 8005a68: 2016 movs r0, #22 + 8005a6a: 183b adds r3, r7, r0 + 8005a6c: 781b ldrb r3, [r3, #0] + 8005a6e: 08db lsrs r3, r3, #3 + 8005a70: b2db uxtb r3, r3 + 8005a72: 001a movs r2, r3 + 8005a74: 230c movs r3, #12 + 8005a76: 18fb adds r3, r7, r3 + 8005a78: 5c9b ldrb r3, [r3, r2] + 8005a7a: 0019 movs r1, r3 + 8005a7c: 183b adds r3, r7, r0 + 8005a7e: 781b ldrb r3, [r3, #0] + 8005a80: 2207 movs r2, #7 + 8005a82: 4013 ands r3, r2 + 8005a84: 4119 asrs r1, r3 + 8005a86: 000b movs r3, r1 + 8005a88: 2201 movs r2, #1 + 8005a8a: 4013 ands r3, r2 + 8005a8c: d005 beq.n 8005a9a { spads_enabled++; - 8005aae: 2117 movs r1, #23 - 8005ab0: 187b adds r3, r7, r1 - 8005ab2: 781a ldrb r2, [r3, #0] - 8005ab4: 187b adds r3, r7, r1 - 8005ab6: 3201 adds r2, #1 - 8005ab8: 701a strb r2, [r3, #0] + 8005a8e: 2117 movs r1, #23 + 8005a90: 187b adds r3, r7, r1 + 8005a92: 781a ldrb r2, [r3, #0] + 8005a94: 187b adds r3, r7, r1 + 8005a96: 3201 adds r2, #1 + 8005a98: 701a strb r2, [r3, #0] for (uint8_t i = 0; i < 48; i++) - 8005aba: 2116 movs r1, #22 - 8005abc: 187b adds r3, r7, r1 - 8005abe: 781a ldrb r2, [r3, #0] - 8005ac0: 187b adds r3, r7, r1 - 8005ac2: 3201 adds r2, #1 - 8005ac4: 701a strb r2, [r3, #0] - 8005ac6: 2316 movs r3, #22 - 8005ac8: 18fb adds r3, r7, r3 - 8005aca: 781b ldrb r3, [r3, #0] - 8005acc: 2b2f cmp r3, #47 ; 0x2f - 8005ace: d9ae bls.n 8005a2e + 8005a9a: 2116 movs r1, #22 + 8005a9c: 187b adds r3, r7, r1 + 8005a9e: 781a ldrb r2, [r3, #0] + 8005aa0: 187b adds r3, r7, r1 + 8005aa2: 3201 adds r2, #1 + 8005aa4: 701a strb r2, [r3, #0] + 8005aa6: 2316 movs r3, #22 + 8005aa8: 18fb adds r3, r7, r3 + 8005aaa: 781b ldrb r3, [r3, #0] + 8005aac: 2b2f cmp r3, #47 ; 0x2f + 8005aae: d9ae bls.n 8005a0e } } writeMulti(GLOBAL_CONFIG_SPAD_ENABLES_REF_0, ref_spad_map, 6); - 8005ad0: 230c movs r3, #12 - 8005ad2: 18fb adds r3, r7, r3 - 8005ad4: 2206 movs r2, #6 - 8005ad6: 0019 movs r1, r3 - 8005ad8: 20b0 movs r0, #176 ; 0xb0 - 8005ada: f7ff fecf bl 800587c + 8005ab0: 230c movs r3, #12 + 8005ab2: 18fb adds r3, r7, r3 + 8005ab4: 2206 movs r2, #6 + 8005ab6: 0019 movs r1, r3 + 8005ab8: 20b0 movs r0, #176 ; 0xb0 + 8005aba: f7ff fecf bl 800585c // -- VL53L0X_set_reference_spads() end // -- VL53L0X_load_tuning_settings() begin // DefaultTuningSettings from vl53l0x_tuning.h writeReg(0xFF, 0x01); - 8005ade: 2101 movs r1, #1 - 8005ae0: 20ff movs r0, #255 ; 0xff - 8005ae2: f7ff fdf1 bl 80056c8 + 8005abe: 2101 movs r1, #1 + 8005ac0: 20ff movs r0, #255 ; 0xff + 8005ac2: f7ff fdf1 bl 80056a8 writeReg(0x00, 0x00); - 8005ae6: 2100 movs r1, #0 - 8005ae8: 2000 movs r0, #0 - 8005aea: f7ff fded bl 80056c8 + 8005ac6: 2100 movs r1, #0 + 8005ac8: 2000 movs r0, #0 + 8005aca: f7ff fded bl 80056a8 writeReg(0xFF, 0x00); - 8005aee: 2100 movs r1, #0 - 8005af0: 20ff movs r0, #255 ; 0xff - 8005af2: f7ff fde9 bl 80056c8 + 8005ace: 2100 movs r1, #0 + 8005ad0: 20ff movs r0, #255 ; 0xff + 8005ad2: f7ff fde9 bl 80056a8 writeReg(0x09, 0x00); - 8005af6: 2100 movs r1, #0 - 8005af8: 2009 movs r0, #9 - 8005afa: f7ff fde5 bl 80056c8 + 8005ad6: 2100 movs r1, #0 + 8005ad8: 2009 movs r0, #9 + 8005ada: f7ff fde5 bl 80056a8 writeReg(0x10, 0x00); - 8005afe: 2100 movs r1, #0 - 8005b00: 2010 movs r0, #16 - 8005b02: f7ff fde1 bl 80056c8 + 8005ade: 2100 movs r1, #0 + 8005ae0: 2010 movs r0, #16 + 8005ae2: f7ff fde1 bl 80056a8 writeReg(0x11, 0x00); - 8005b06: 2100 movs r1, #0 - 8005b08: 2011 movs r0, #17 - 8005b0a: f7ff fddd bl 80056c8 + 8005ae6: 2100 movs r1, #0 + 8005ae8: 2011 movs r0, #17 + 8005aea: f7ff fddd bl 80056a8 writeReg(0x24, 0x01); - 8005b0e: 2101 movs r1, #1 - 8005b10: 2024 movs r0, #36 ; 0x24 - 8005b12: f7ff fdd9 bl 80056c8 + 8005aee: 2101 movs r1, #1 + 8005af0: 2024 movs r0, #36 ; 0x24 + 8005af2: f7ff fdd9 bl 80056a8 writeReg(0x25, 0xFF); - 8005b16: 21ff movs r1, #255 ; 0xff - 8005b18: 2025 movs r0, #37 ; 0x25 - 8005b1a: f7ff fdd5 bl 80056c8 + 8005af6: 21ff movs r1, #255 ; 0xff + 8005af8: 2025 movs r0, #37 ; 0x25 + 8005afa: f7ff fdd5 bl 80056a8 writeReg(0x75, 0x00); - 8005b1e: 2100 movs r1, #0 - 8005b20: 2075 movs r0, #117 ; 0x75 - 8005b22: f7ff fdd1 bl 80056c8 + 8005afe: 2100 movs r1, #0 + 8005b00: 2075 movs r0, #117 ; 0x75 + 8005b02: f7ff fdd1 bl 80056a8 writeReg(0xFF, 0x01); - 8005b26: 2101 movs r1, #1 - 8005b28: 20ff movs r0, #255 ; 0xff - 8005b2a: f7ff fdcd bl 80056c8 + 8005b06: 2101 movs r1, #1 + 8005b08: 20ff movs r0, #255 ; 0xff + 8005b0a: f7ff fdcd bl 80056a8 writeReg(0x4E, 0x2C); - 8005b2e: 212c movs r1, #44 ; 0x2c - 8005b30: 204e movs r0, #78 ; 0x4e - 8005b32: f7ff fdc9 bl 80056c8 + 8005b0e: 212c movs r1, #44 ; 0x2c + 8005b10: 204e movs r0, #78 ; 0x4e + 8005b12: f7ff fdc9 bl 80056a8 writeReg(0x48, 0x00); - 8005b36: 2100 movs r1, #0 - 8005b38: 2048 movs r0, #72 ; 0x48 - 8005b3a: f7ff fdc5 bl 80056c8 + 8005b16: 2100 movs r1, #0 + 8005b18: 2048 movs r0, #72 ; 0x48 + 8005b1a: f7ff fdc5 bl 80056a8 writeReg(0x30, 0x20); - 8005b3e: 2120 movs r1, #32 - 8005b40: 2030 movs r0, #48 ; 0x30 - 8005b42: f7ff fdc1 bl 80056c8 + 8005b1e: 2120 movs r1, #32 + 8005b20: 2030 movs r0, #48 ; 0x30 + 8005b22: f7ff fdc1 bl 80056a8 writeReg(0xFF, 0x00); - 8005b46: 2100 movs r1, #0 - 8005b48: 20ff movs r0, #255 ; 0xff - 8005b4a: f7ff fdbd bl 80056c8 + 8005b26: 2100 movs r1, #0 + 8005b28: 20ff movs r0, #255 ; 0xff + 8005b2a: f7ff fdbd bl 80056a8 writeReg(0x30, 0x09); - 8005b4e: 2109 movs r1, #9 - 8005b50: 2030 movs r0, #48 ; 0x30 - 8005b52: f7ff fdb9 bl 80056c8 + 8005b2e: 2109 movs r1, #9 + 8005b30: 2030 movs r0, #48 ; 0x30 + 8005b32: f7ff fdb9 bl 80056a8 writeReg(0x54, 0x00); - 8005b56: 2100 movs r1, #0 - 8005b58: 2054 movs r0, #84 ; 0x54 - 8005b5a: f7ff fdb5 bl 80056c8 + 8005b36: 2100 movs r1, #0 + 8005b38: 2054 movs r0, #84 ; 0x54 + 8005b3a: f7ff fdb5 bl 80056a8 writeReg(0x31, 0x04); - 8005b5e: 2104 movs r1, #4 - 8005b60: 2031 movs r0, #49 ; 0x31 - 8005b62: f7ff fdb1 bl 80056c8 + 8005b3e: 2104 movs r1, #4 + 8005b40: 2031 movs r0, #49 ; 0x31 + 8005b42: f7ff fdb1 bl 80056a8 writeReg(0x32, 0x03); - 8005b66: 2103 movs r1, #3 - 8005b68: 2032 movs r0, #50 ; 0x32 - 8005b6a: f7ff fdad bl 80056c8 + 8005b46: 2103 movs r1, #3 + 8005b48: 2032 movs r0, #50 ; 0x32 + 8005b4a: f7ff fdad bl 80056a8 writeReg(0x40, 0x83); - 8005b6e: 2183 movs r1, #131 ; 0x83 - 8005b70: 2040 movs r0, #64 ; 0x40 - 8005b72: f7ff fda9 bl 80056c8 + 8005b4e: 2183 movs r1, #131 ; 0x83 + 8005b50: 2040 movs r0, #64 ; 0x40 + 8005b52: f7ff fda9 bl 80056a8 writeReg(0x46, 0x25); - 8005b76: 2125 movs r1, #37 ; 0x25 - 8005b78: 2046 movs r0, #70 ; 0x46 - 8005b7a: f7ff fda5 bl 80056c8 + 8005b56: 2125 movs r1, #37 ; 0x25 + 8005b58: 2046 movs r0, #70 ; 0x46 + 8005b5a: f7ff fda5 bl 80056a8 writeReg(0x60, 0x00); - 8005b7e: 2100 movs r1, #0 - 8005b80: 2060 movs r0, #96 ; 0x60 - 8005b82: f7ff fda1 bl 80056c8 + 8005b5e: 2100 movs r1, #0 + 8005b60: 2060 movs r0, #96 ; 0x60 + 8005b62: f7ff fda1 bl 80056a8 writeReg(0x27, 0x00); - 8005b86: 2100 movs r1, #0 - 8005b88: 2027 movs r0, #39 ; 0x27 - 8005b8a: f7ff fd9d bl 80056c8 + 8005b66: 2100 movs r1, #0 + 8005b68: 2027 movs r0, #39 ; 0x27 + 8005b6a: f7ff fd9d bl 80056a8 writeReg(0x50, 0x06); - 8005b8e: 2106 movs r1, #6 - 8005b90: 2050 movs r0, #80 ; 0x50 - 8005b92: f7ff fd99 bl 80056c8 + 8005b6e: 2106 movs r1, #6 + 8005b70: 2050 movs r0, #80 ; 0x50 + 8005b72: f7ff fd99 bl 80056a8 writeReg(0x51, 0x00); - 8005b96: 2100 movs r1, #0 - 8005b98: 2051 movs r0, #81 ; 0x51 - 8005b9a: f7ff fd95 bl 80056c8 + 8005b76: 2100 movs r1, #0 + 8005b78: 2051 movs r0, #81 ; 0x51 + 8005b7a: f7ff fd95 bl 80056a8 writeReg(0x52, 0x96); - 8005b9e: 2196 movs r1, #150 ; 0x96 - 8005ba0: 2052 movs r0, #82 ; 0x52 - 8005ba2: f7ff fd91 bl 80056c8 + 8005b7e: 2196 movs r1, #150 ; 0x96 + 8005b80: 2052 movs r0, #82 ; 0x52 + 8005b82: f7ff fd91 bl 80056a8 writeReg(0x56, 0x08); - 8005ba6: 2108 movs r1, #8 - 8005ba8: 2056 movs r0, #86 ; 0x56 - 8005baa: f7ff fd8d bl 80056c8 + 8005b86: 2108 movs r1, #8 + 8005b88: 2056 movs r0, #86 ; 0x56 + 8005b8a: f7ff fd8d bl 80056a8 writeReg(0x57, 0x30); - 8005bae: 2130 movs r1, #48 ; 0x30 - 8005bb0: 2057 movs r0, #87 ; 0x57 - 8005bb2: f7ff fd89 bl 80056c8 + 8005b8e: 2130 movs r1, #48 ; 0x30 + 8005b90: 2057 movs r0, #87 ; 0x57 + 8005b92: f7ff fd89 bl 80056a8 writeReg(0x61, 0x00); - 8005bb6: 2100 movs r1, #0 - 8005bb8: 2061 movs r0, #97 ; 0x61 - 8005bba: f7ff fd85 bl 80056c8 + 8005b96: 2100 movs r1, #0 + 8005b98: 2061 movs r0, #97 ; 0x61 + 8005b9a: f7ff fd85 bl 80056a8 writeReg(0x62, 0x00); - 8005bbe: 2100 movs r1, #0 - 8005bc0: 2062 movs r0, #98 ; 0x62 - 8005bc2: f7ff fd81 bl 80056c8 + 8005b9e: 2100 movs r1, #0 + 8005ba0: 2062 movs r0, #98 ; 0x62 + 8005ba2: f7ff fd81 bl 80056a8 writeReg(0x64, 0x00); - 8005bc6: 2100 movs r1, #0 - 8005bc8: 2064 movs r0, #100 ; 0x64 - 8005bca: f7ff fd7d bl 80056c8 + 8005ba6: 2100 movs r1, #0 + 8005ba8: 2064 movs r0, #100 ; 0x64 + 8005baa: f7ff fd7d bl 80056a8 writeReg(0x65, 0x00); - 8005bce: 2100 movs r1, #0 - 8005bd0: 2065 movs r0, #101 ; 0x65 - 8005bd2: f7ff fd79 bl 80056c8 + 8005bae: 2100 movs r1, #0 + 8005bb0: 2065 movs r0, #101 ; 0x65 + 8005bb2: f7ff fd79 bl 80056a8 writeReg(0x66, 0xA0); - 8005bd6: 21a0 movs r1, #160 ; 0xa0 - 8005bd8: 2066 movs r0, #102 ; 0x66 - 8005bda: f7ff fd75 bl 80056c8 + 8005bb6: 21a0 movs r1, #160 ; 0xa0 + 8005bb8: 2066 movs r0, #102 ; 0x66 + 8005bba: f7ff fd75 bl 80056a8 writeReg(0xFF, 0x01); - 8005bde: 2101 movs r1, #1 - 8005be0: 20ff movs r0, #255 ; 0xff - 8005be2: f7ff fd71 bl 80056c8 + 8005bbe: 2101 movs r1, #1 + 8005bc0: 20ff movs r0, #255 ; 0xff + 8005bc2: f7ff fd71 bl 80056a8 writeReg(0x22, 0x32); - 8005be6: 2132 movs r1, #50 ; 0x32 - 8005be8: 2022 movs r0, #34 ; 0x22 - 8005bea: f7ff fd6d bl 80056c8 + 8005bc6: 2132 movs r1, #50 ; 0x32 + 8005bc8: 2022 movs r0, #34 ; 0x22 + 8005bca: f7ff fd6d bl 80056a8 writeReg(0x47, 0x14); - 8005bee: 2114 movs r1, #20 - 8005bf0: 2047 movs r0, #71 ; 0x47 - 8005bf2: f7ff fd69 bl 80056c8 + 8005bce: 2114 movs r1, #20 + 8005bd0: 2047 movs r0, #71 ; 0x47 + 8005bd2: f7ff fd69 bl 80056a8 writeReg(0x49, 0xFF); - 8005bf6: 21ff movs r1, #255 ; 0xff - 8005bf8: 2049 movs r0, #73 ; 0x49 - 8005bfa: f7ff fd65 bl 80056c8 + 8005bd6: 21ff movs r1, #255 ; 0xff + 8005bd8: 2049 movs r0, #73 ; 0x49 + 8005bda: f7ff fd65 bl 80056a8 writeReg(0x4A, 0x00); - 8005bfe: 2100 movs r1, #0 - 8005c00: 204a movs r0, #74 ; 0x4a - 8005c02: f7ff fd61 bl 80056c8 + 8005bde: 2100 movs r1, #0 + 8005be0: 204a movs r0, #74 ; 0x4a + 8005be2: f7ff fd61 bl 80056a8 writeReg(0xFF, 0x00); - 8005c06: 2100 movs r1, #0 - 8005c08: 20ff movs r0, #255 ; 0xff - 8005c0a: f7ff fd5d bl 80056c8 + 8005be6: 2100 movs r1, #0 + 8005be8: 20ff movs r0, #255 ; 0xff + 8005bea: f7ff fd5d bl 80056a8 writeReg(0x7A, 0x0A); - 8005c0e: 210a movs r1, #10 - 8005c10: 207a movs r0, #122 ; 0x7a - 8005c12: f7ff fd59 bl 80056c8 + 8005bee: 210a movs r1, #10 + 8005bf0: 207a movs r0, #122 ; 0x7a + 8005bf2: f7ff fd59 bl 80056a8 writeReg(0x7B, 0x00); - 8005c16: 2100 movs r1, #0 - 8005c18: 207b movs r0, #123 ; 0x7b - 8005c1a: f7ff fd55 bl 80056c8 + 8005bf6: 2100 movs r1, #0 + 8005bf8: 207b movs r0, #123 ; 0x7b + 8005bfa: f7ff fd55 bl 80056a8 writeReg(0x78, 0x21); - 8005c1e: 2121 movs r1, #33 ; 0x21 - 8005c20: 2078 movs r0, #120 ; 0x78 - 8005c22: f7ff fd51 bl 80056c8 + 8005bfe: 2121 movs r1, #33 ; 0x21 + 8005c00: 2078 movs r0, #120 ; 0x78 + 8005c02: f7ff fd51 bl 80056a8 writeReg(0xFF, 0x01); - 8005c26: 2101 movs r1, #1 - 8005c28: 20ff movs r0, #255 ; 0xff - 8005c2a: f7ff fd4d bl 80056c8 + 8005c06: 2101 movs r1, #1 + 8005c08: 20ff movs r0, #255 ; 0xff + 8005c0a: f7ff fd4d bl 80056a8 writeReg(0x23, 0x34); - 8005c2e: 2134 movs r1, #52 ; 0x34 - 8005c30: 2023 movs r0, #35 ; 0x23 - 8005c32: f7ff fd49 bl 80056c8 + 8005c0e: 2134 movs r1, #52 ; 0x34 + 8005c10: 2023 movs r0, #35 ; 0x23 + 8005c12: f7ff fd49 bl 80056a8 writeReg(0x42, 0x00); - 8005c36: 2100 movs r1, #0 - 8005c38: 2042 movs r0, #66 ; 0x42 - 8005c3a: f7ff fd45 bl 80056c8 + 8005c16: 2100 movs r1, #0 + 8005c18: 2042 movs r0, #66 ; 0x42 + 8005c1a: f7ff fd45 bl 80056a8 writeReg(0x44, 0xFF); - 8005c3e: 21ff movs r1, #255 ; 0xff - 8005c40: 2044 movs r0, #68 ; 0x44 - 8005c42: f7ff fd41 bl 80056c8 + 8005c1e: 21ff movs r1, #255 ; 0xff + 8005c20: 2044 movs r0, #68 ; 0x44 + 8005c22: f7ff fd41 bl 80056a8 writeReg(0x45, 0x26); - 8005c46: 2126 movs r1, #38 ; 0x26 - 8005c48: 2045 movs r0, #69 ; 0x45 - 8005c4a: f7ff fd3d bl 80056c8 + 8005c26: 2126 movs r1, #38 ; 0x26 + 8005c28: 2045 movs r0, #69 ; 0x45 + 8005c2a: f7ff fd3d bl 80056a8 writeReg(0x46, 0x05); - 8005c4e: 2105 movs r1, #5 - 8005c50: 2046 movs r0, #70 ; 0x46 - 8005c52: f7ff fd39 bl 80056c8 + 8005c2e: 2105 movs r1, #5 + 8005c30: 2046 movs r0, #70 ; 0x46 + 8005c32: f7ff fd39 bl 80056a8 writeReg(0x40, 0x40); - 8005c56: 2140 movs r1, #64 ; 0x40 - 8005c58: 2040 movs r0, #64 ; 0x40 - 8005c5a: f7ff fd35 bl 80056c8 + 8005c36: 2140 movs r1, #64 ; 0x40 + 8005c38: 2040 movs r0, #64 ; 0x40 + 8005c3a: f7ff fd35 bl 80056a8 writeReg(0x0E, 0x06); - 8005c5e: 2106 movs r1, #6 - 8005c60: 200e movs r0, #14 - 8005c62: f7ff fd31 bl 80056c8 + 8005c3e: 2106 movs r1, #6 + 8005c40: 200e movs r0, #14 + 8005c42: f7ff fd31 bl 80056a8 writeReg(0x20, 0x1A); - 8005c66: 211a movs r1, #26 - 8005c68: 2020 movs r0, #32 - 8005c6a: f7ff fd2d bl 80056c8 + 8005c46: 211a movs r1, #26 + 8005c48: 2020 movs r0, #32 + 8005c4a: f7ff fd2d bl 80056a8 writeReg(0x43, 0x40); - 8005c6e: 2140 movs r1, #64 ; 0x40 - 8005c70: 2043 movs r0, #67 ; 0x43 - 8005c72: f7ff fd29 bl 80056c8 + 8005c4e: 2140 movs r1, #64 ; 0x40 + 8005c50: 2043 movs r0, #67 ; 0x43 + 8005c52: f7ff fd29 bl 80056a8 writeReg(0xFF, 0x00); - 8005c76: 2100 movs r1, #0 - 8005c78: 20ff movs r0, #255 ; 0xff - 8005c7a: f7ff fd25 bl 80056c8 + 8005c56: 2100 movs r1, #0 + 8005c58: 20ff movs r0, #255 ; 0xff + 8005c5a: f7ff fd25 bl 80056a8 writeReg(0x34, 0x03); - 8005c7e: 2103 movs r1, #3 - 8005c80: 2034 movs r0, #52 ; 0x34 - 8005c82: f7ff fd21 bl 80056c8 + 8005c5e: 2103 movs r1, #3 + 8005c60: 2034 movs r0, #52 ; 0x34 + 8005c62: f7ff fd21 bl 80056a8 writeReg(0x35, 0x44); - 8005c86: 2144 movs r1, #68 ; 0x44 - 8005c88: 2035 movs r0, #53 ; 0x35 - 8005c8a: f7ff fd1d bl 80056c8 + 8005c66: 2144 movs r1, #68 ; 0x44 + 8005c68: 2035 movs r0, #53 ; 0x35 + 8005c6a: f7ff fd1d bl 80056a8 writeReg(0xFF, 0x01); - 8005c8e: 2101 movs r1, #1 - 8005c90: 20ff movs r0, #255 ; 0xff - 8005c92: f7ff fd19 bl 80056c8 + 8005c6e: 2101 movs r1, #1 + 8005c70: 20ff movs r0, #255 ; 0xff + 8005c72: f7ff fd19 bl 80056a8 writeReg(0x31, 0x04); - 8005c96: 2104 movs r1, #4 - 8005c98: 2031 movs r0, #49 ; 0x31 - 8005c9a: f7ff fd15 bl 80056c8 + 8005c76: 2104 movs r1, #4 + 8005c78: 2031 movs r0, #49 ; 0x31 + 8005c7a: f7ff fd15 bl 80056a8 writeReg(0x4B, 0x09); - 8005c9e: 2109 movs r1, #9 - 8005ca0: 204b movs r0, #75 ; 0x4b - 8005ca2: f7ff fd11 bl 80056c8 + 8005c7e: 2109 movs r1, #9 + 8005c80: 204b movs r0, #75 ; 0x4b + 8005c82: f7ff fd11 bl 80056a8 writeReg(0x4C, 0x05); - 8005ca6: 2105 movs r1, #5 - 8005ca8: 204c movs r0, #76 ; 0x4c - 8005caa: f7ff fd0d bl 80056c8 + 8005c86: 2105 movs r1, #5 + 8005c88: 204c movs r0, #76 ; 0x4c + 8005c8a: f7ff fd0d bl 80056a8 writeReg(0x4D, 0x04); - 8005cae: 2104 movs r1, #4 - 8005cb0: 204d movs r0, #77 ; 0x4d - 8005cb2: f7ff fd09 bl 80056c8 + 8005c8e: 2104 movs r1, #4 + 8005c90: 204d movs r0, #77 ; 0x4d + 8005c92: f7ff fd09 bl 80056a8 writeReg(0xFF, 0x00); - 8005cb6: 2100 movs r1, #0 - 8005cb8: 20ff movs r0, #255 ; 0xff - 8005cba: f7ff fd05 bl 80056c8 + 8005c96: 2100 movs r1, #0 + 8005c98: 20ff movs r0, #255 ; 0xff + 8005c9a: f7ff fd05 bl 80056a8 writeReg(0x44, 0x00); - 8005cbe: 2100 movs r1, #0 - 8005cc0: 2044 movs r0, #68 ; 0x44 - 8005cc2: f7ff fd01 bl 80056c8 + 8005c9e: 2100 movs r1, #0 + 8005ca0: 2044 movs r0, #68 ; 0x44 + 8005ca2: f7ff fd01 bl 80056a8 writeReg(0x45, 0x20); - 8005cc6: 2120 movs r1, #32 - 8005cc8: 2045 movs r0, #69 ; 0x45 - 8005cca: f7ff fcfd bl 80056c8 + 8005ca6: 2120 movs r1, #32 + 8005ca8: 2045 movs r0, #69 ; 0x45 + 8005caa: f7ff fcfd bl 80056a8 writeReg(0x47, 0x08); - 8005cce: 2108 movs r1, #8 - 8005cd0: 2047 movs r0, #71 ; 0x47 - 8005cd2: f7ff fcf9 bl 80056c8 + 8005cae: 2108 movs r1, #8 + 8005cb0: 2047 movs r0, #71 ; 0x47 + 8005cb2: f7ff fcf9 bl 80056a8 writeReg(0x48, 0x28); - 8005cd6: 2128 movs r1, #40 ; 0x28 - 8005cd8: 2048 movs r0, #72 ; 0x48 - 8005cda: f7ff fcf5 bl 80056c8 + 8005cb6: 2128 movs r1, #40 ; 0x28 + 8005cb8: 2048 movs r0, #72 ; 0x48 + 8005cba: f7ff fcf5 bl 80056a8 writeReg(0x67, 0x00); - 8005cde: 2100 movs r1, #0 - 8005ce0: 2067 movs r0, #103 ; 0x67 - 8005ce2: f7ff fcf1 bl 80056c8 + 8005cbe: 2100 movs r1, #0 + 8005cc0: 2067 movs r0, #103 ; 0x67 + 8005cc2: f7ff fcf1 bl 80056a8 writeReg(0x70, 0x04); - 8005ce6: 2104 movs r1, #4 - 8005ce8: 2070 movs r0, #112 ; 0x70 - 8005cea: f7ff fced bl 80056c8 + 8005cc6: 2104 movs r1, #4 + 8005cc8: 2070 movs r0, #112 ; 0x70 + 8005cca: f7ff fced bl 80056a8 writeReg(0x71, 0x01); - 8005cee: 2101 movs r1, #1 - 8005cf0: 2071 movs r0, #113 ; 0x71 - 8005cf2: f7ff fce9 bl 80056c8 + 8005cce: 2101 movs r1, #1 + 8005cd0: 2071 movs r0, #113 ; 0x71 + 8005cd2: f7ff fce9 bl 80056a8 writeReg(0x72, 0xFE); - 8005cf6: 21fe movs r1, #254 ; 0xfe - 8005cf8: 2072 movs r0, #114 ; 0x72 - 8005cfa: f7ff fce5 bl 80056c8 + 8005cd6: 21fe movs r1, #254 ; 0xfe + 8005cd8: 2072 movs r0, #114 ; 0x72 + 8005cda: f7ff fce5 bl 80056a8 writeReg(0x76, 0x00); - 8005cfe: 2100 movs r1, #0 - 8005d00: 2076 movs r0, #118 ; 0x76 - 8005d02: f7ff fce1 bl 80056c8 + 8005cde: 2100 movs r1, #0 + 8005ce0: 2076 movs r0, #118 ; 0x76 + 8005ce2: f7ff fce1 bl 80056a8 writeReg(0x77, 0x00); - 8005d06: 2100 movs r1, #0 - 8005d08: 2077 movs r0, #119 ; 0x77 - 8005d0a: f7ff fcdd bl 80056c8 + 8005ce6: 2100 movs r1, #0 + 8005ce8: 2077 movs r0, #119 ; 0x77 + 8005cea: f7ff fcdd bl 80056a8 writeReg(0xFF, 0x01); - 8005d0e: 2101 movs r1, #1 - 8005d10: 20ff movs r0, #255 ; 0xff - 8005d12: f7ff fcd9 bl 80056c8 + 8005cee: 2101 movs r1, #1 + 8005cf0: 20ff movs r0, #255 ; 0xff + 8005cf2: f7ff fcd9 bl 80056a8 writeReg(0x0D, 0x01); - 8005d16: 2101 movs r1, #1 - 8005d18: 200d movs r0, #13 - 8005d1a: f7ff fcd5 bl 80056c8 + 8005cf6: 2101 movs r1, #1 + 8005cf8: 200d movs r0, #13 + 8005cfa: f7ff fcd5 bl 80056a8 writeReg(0xFF, 0x00); - 8005d1e: 2100 movs r1, #0 - 8005d20: 20ff movs r0, #255 ; 0xff - 8005d22: f7ff fcd1 bl 80056c8 + 8005cfe: 2100 movs r1, #0 + 8005d00: 20ff movs r0, #255 ; 0xff + 8005d02: f7ff fcd1 bl 80056a8 writeReg(0x80, 0x01); - 8005d26: 2101 movs r1, #1 - 8005d28: 2080 movs r0, #128 ; 0x80 - 8005d2a: f7ff fccd bl 80056c8 + 8005d06: 2101 movs r1, #1 + 8005d08: 2080 movs r0, #128 ; 0x80 + 8005d0a: f7ff fccd bl 80056a8 writeReg(0x01, 0xF8); - 8005d2e: 21f8 movs r1, #248 ; 0xf8 - 8005d30: 2001 movs r0, #1 - 8005d32: f7ff fcc9 bl 80056c8 + 8005d0e: 21f8 movs r1, #248 ; 0xf8 + 8005d10: 2001 movs r0, #1 + 8005d12: f7ff fcc9 bl 80056a8 writeReg(0xFF, 0x01); - 8005d36: 2101 movs r1, #1 - 8005d38: 20ff movs r0, #255 ; 0xff - 8005d3a: f7ff fcc5 bl 80056c8 + 8005d16: 2101 movs r1, #1 + 8005d18: 20ff movs r0, #255 ; 0xff + 8005d1a: f7ff fcc5 bl 80056a8 writeReg(0x8E, 0x01); - 8005d3e: 2101 movs r1, #1 - 8005d40: 208e movs r0, #142 ; 0x8e - 8005d42: f7ff fcc1 bl 80056c8 + 8005d1e: 2101 movs r1, #1 + 8005d20: 208e movs r0, #142 ; 0x8e + 8005d22: f7ff fcc1 bl 80056a8 writeReg(0x00, 0x01); - 8005d46: 2101 movs r1, #1 - 8005d48: 2000 movs r0, #0 - 8005d4a: f7ff fcbd bl 80056c8 + 8005d26: 2101 movs r1, #1 + 8005d28: 2000 movs r0, #0 + 8005d2a: f7ff fcbd bl 80056a8 writeReg(0xFF, 0x00); - 8005d4e: 2100 movs r1, #0 - 8005d50: 20ff movs r0, #255 ; 0xff - 8005d52: f7ff fcb9 bl 80056c8 + 8005d2e: 2100 movs r1, #0 + 8005d30: 20ff movs r0, #255 ; 0xff + 8005d32: f7ff fcb9 bl 80056a8 writeReg(0x80, 0x00); - 8005d56: 2100 movs r1, #0 - 8005d58: 2080 movs r0, #128 ; 0x80 - 8005d5a: f7ff fcb5 bl 80056c8 + 8005d36: 2100 movs r1, #0 + 8005d38: 2080 movs r0, #128 ; 0x80 + 8005d3a: f7ff fcb5 bl 80056a8 // -- VL53L0X_load_tuning_settings() end // "Set interrupt config to new sample ready" // -- VL53L0X_SetGpioConfig() begin writeReg(SYSTEM_INTERRUPT_CONFIG_GPIO, 0x04); - 8005d5e: 2104 movs r1, #4 - 8005d60: 200a movs r0, #10 - 8005d62: f7ff fcb1 bl 80056c8 + 8005d3e: 2104 movs r1, #4 + 8005d40: 200a movs r0, #10 + 8005d42: f7ff fcb1 bl 80056a8 writeReg(GPIO_HV_MUX_ACTIVE_HIGH, readReg(GPIO_HV_MUX_ACTIVE_HIGH) & ~0x10); // active low - 8005d66: 2084 movs r0, #132 ; 0x84 - 8005d68: f7ff fd34 bl 80057d4 - 8005d6c: 0003 movs r3, r0 - 8005d6e: 001a movs r2, r3 - 8005d70: 2310 movs r3, #16 - 8005d72: 439a bics r2, r3 - 8005d74: 0013 movs r3, r2 - 8005d76: b2db uxtb r3, r3 - 8005d78: 0019 movs r1, r3 - 8005d7a: 2084 movs r0, #132 ; 0x84 - 8005d7c: f7ff fca4 bl 80056c8 + 8005d46: 2084 movs r0, #132 ; 0x84 + 8005d48: f7ff fd34 bl 80057b4 + 8005d4c: 0003 movs r3, r0 + 8005d4e: 001a movs r2, r3 + 8005d50: 2310 movs r3, #16 + 8005d52: 439a bics r2, r3 + 8005d54: 0013 movs r3, r2 + 8005d56: b2db uxtb r3, r3 + 8005d58: 0019 movs r1, r3 + 8005d5a: 2084 movs r0, #132 ; 0x84 + 8005d5c: f7ff fca4 bl 80056a8 writeReg(SYSTEM_INTERRUPT_CLEAR, 0x01); - 8005d80: 2101 movs r1, #1 - 8005d82: 200b movs r0, #11 - 8005d84: f7ff fca0 bl 80056c8 + 8005d60: 2101 movs r1, #1 + 8005d62: 200b movs r0, #11 + 8005d64: f7ff fca0 bl 80056a8 // -- VL53L0X_SetGpioConfig() end g_measTimBudUs = getMeasurementTimingBudget(); - 8005d88: f000 f924 bl 8005fd4 - 8005d8c: 0002 movs r2, r0 - 8005d8e: 4b15 ldr r3, [pc, #84] ; (8005de4 ) - 8005d90: 601a str r2, [r3, #0] + 8005d68: f000 f924 bl 8005fb4 + 8005d6c: 0002 movs r2, r0 + 8005d6e: 4b15 ldr r3, [pc, #84] ; (8005dc4 ) + 8005d70: 601a str r2, [r3, #0] // "Disable MSRC and TCC by default" // MSRC = Minimum Signal Rate Check // TCC = Target CentreCheck // -- VL53L0X_SetSequenceStepEnable() begin writeReg(SYSTEM_SEQUENCE_CONFIG, 0xE8); - 8005d92: 21e8 movs r1, #232 ; 0xe8 - 8005d94: 2001 movs r0, #1 - 8005d96: f7ff fc97 bl 80056c8 + 8005d72: 21e8 movs r1, #232 ; 0xe8 + 8005d74: 2001 movs r0, #1 + 8005d76: f7ff fc97 bl 80056a8 // -- VL53L0X_SetSequenceStepEnable() end // "Recalculate timing budget" setMeasurementTimingBudget(g_measTimBudUs); - 8005d9a: 4b12 ldr r3, [pc, #72] ; (8005de4 ) - 8005d9c: 681b ldr r3, [r3, #0] - 8005d9e: 0018 movs r0, r3 - 8005da0: f000 f850 bl 8005e44 + 8005d7a: 4b12 ldr r3, [pc, #72] ; (8005dc4 ) + 8005d7c: 681b ldr r3, [r3, #0] + 8005d7e: 0018 movs r0, r3 + 8005d80: f000 f850 bl 8005e24 // VL53L0X_PerformRefCalibration() begin (VL53L0X_perform_ref_calibration()) // -- VL53L0X_perform_vhv_calibration() begin writeReg(SYSTEM_SEQUENCE_CONFIG, 0x01); - 8005da4: 2101 movs r1, #1 - 8005da6: 2001 movs r0, #1 - 8005da8: f7ff fc8e bl 80056c8 + 8005d84: 2101 movs r1, #1 + 8005d86: 2001 movs r0, #1 + 8005d88: f7ff fc8e bl 80056a8 if (!performSingleRefCalibration(0x40)) { return false; } - 8005dac: 2040 movs r0, #64 ; 0x40 - 8005dae: f000 fc79 bl 80066a4 - 8005db2: 1e03 subs r3, r0, #0 - 8005db4: d101 bne.n 8005dba - 8005db6: 2300 movs r3, #0 - 8005db8: e00f b.n 8005dda + 8005d8c: 2040 movs r0, #64 ; 0x40 + 8005d8e: f000 fc89 bl 80066a4 + 8005d92: 1e03 subs r3, r0, #0 + 8005d94: d101 bne.n 8005d9a + 8005d96: 2300 movs r3, #0 + 8005d98: e00f b.n 8005dba // -- VL53L0X_perform_vhv_calibration() end // -- VL53L0X_perform_phase_calibration() begin writeReg(SYSTEM_SEQUENCE_CONFIG, 0x02); - 8005dba: 2102 movs r1, #2 - 8005dbc: 2001 movs r0, #1 - 8005dbe: f7ff fc83 bl 80056c8 + 8005d9a: 2102 movs r1, #2 + 8005d9c: 2001 movs r0, #1 + 8005d9e: f7ff fc83 bl 80056a8 if (!performSingleRefCalibration(0x00)) { return false; } - 8005dc2: 2000 movs r0, #0 - 8005dc4: f000 fc6e bl 80066a4 - 8005dc8: 1e03 subs r3, r0, #0 - 8005dca: d101 bne.n 8005dd0 - 8005dcc: 2300 movs r3, #0 - 8005dce: e004 b.n 8005dda + 8005da2: 2000 movs r0, #0 + 8005da4: f000 fc7e bl 80066a4 + 8005da8: 1e03 subs r3, r0, #0 + 8005daa: d101 bne.n 8005db0 + 8005dac: 2300 movs r3, #0 + 8005dae: e004 b.n 8005dba // -- VL53L0X_perform_phase_calibration() end // "restore the previous Sequence Config" writeReg(SYSTEM_SEQUENCE_CONFIG, 0xE8); - 8005dd0: 21e8 movs r1, #232 ; 0xe8 - 8005dd2: 2001 movs r0, #1 - 8005dd4: f7ff fc78 bl 80056c8 + 8005db0: 21e8 movs r1, #232 ; 0xe8 + 8005db2: 2001 movs r0, #1 + 8005db4: f7ff fc78 bl 80056a8 // VL53L0X_PerformRefCalibration() end return true; - 8005dd8: 2301 movs r3, #1 + 8005db8: 2301 movs r3, #1 } - 8005dda: 0018 movs r0, r3 - 8005ddc: 46bd mov sp, r7 - 8005dde: b007 add sp, #28 - 8005de0: bd90 pop {r4, r7, pc} - 8005de2: 46c0 nop ; (mov r8, r8) - 8005de4: 20000260 .word 0x20000260 + 8005dba: 0018 movs r0, r3 + 8005dbc: 46bd mov sp, r7 + 8005dbe: b007 add sp, #28 + 8005dc0: bd90 pop {r4, r7, pc} + 8005dc2: 46c0 nop ; (mov r8, r8) + 8005dc4: 20000260 .word 0x20000260 -08005de8 : +08005dc8 : // Setting a lower limit increases the potential range of the sensor but also // seems to increase the likelihood of getting an inaccurate reading because of // unwanted reflections from objects other than the intended target. // Defaults to 0.25 MCPS as initialized by the ST API and this library. bool setSignalRateLimit(float limit_Mcps) { - 8005de8: b580 push {r7, lr} - 8005dea: b082 sub sp, #8 - 8005dec: af00 add r7, sp, #0 - 8005dee: 6078 str r0, [r7, #4] + 8005dc8: b580 push {r7, lr} + 8005dca: b082 sub sp, #8 + 8005dcc: af00 add r7, sp, #0 + 8005dce: 6078 str r0, [r7, #4] if (limit_Mcps < 0 || limit_Mcps > 511.99) { return false; } - 8005df0: 2100 movs r1, #0 - 8005df2: 6878 ldr r0, [r7, #4] - 8005df4: f7fa fb4e bl 8000494 <__aeabi_fcmplt> - 8005df8: 1e03 subs r3, r0, #0 - 8005dfa: d108 bne.n 8005e0e - 8005dfc: 6878 ldr r0, [r7, #4] - 8005dfe: f7fb f839 bl 8000e74 <__aeabi_f2d> - 8005e02: 4a0e ldr r2, [pc, #56] ; (8005e3c ) - 8005e04: 4b0e ldr r3, [pc, #56] ; (8005e40 ) - 8005e06: f7fa fb1f bl 8000448 <__aeabi_dcmpgt> - 8005e0a: 1e03 subs r3, r0, #0 - 8005e0c: d001 beq.n 8005e12 - 8005e0e: 2300 movs r3, #0 - 8005e10: e00f b.n 8005e32 + 8005dd0: 2100 movs r1, #0 + 8005dd2: 6878 ldr r0, [r7, #4] + 8005dd4: f7fa fb5e bl 8000494 <__aeabi_fcmplt> + 8005dd8: 1e03 subs r3, r0, #0 + 8005dda: d108 bne.n 8005dee + 8005ddc: 6878 ldr r0, [r7, #4] + 8005dde: f7fb f849 bl 8000e74 <__aeabi_f2d> + 8005de2: 4a0e ldr r2, [pc, #56] ; (8005e1c ) + 8005de4: 4b0e ldr r3, [pc, #56] ; (8005e20 ) + 8005de6: f7fa fb2f bl 8000448 <__aeabi_dcmpgt> + 8005dea: 1e03 subs r3, r0, #0 + 8005dec: d001 beq.n 8005df2 + 8005dee: 2300 movs r3, #0 + 8005df0: e00f b.n 8005e12 // Q9.7 fixed point format (9 integer bits, 7 fractional bits) writeReg16Bit(FINAL_RANGE_CONFIG_MIN_COUNT_RATE_RTN_LIMIT, limit_Mcps * (1 << 7)); - 8005e12: 2186 movs r1, #134 ; 0x86 - 8005e14: 05c9 lsls r1, r1, #23 - 8005e16: 6878 ldr r0, [r7, #4] - 8005e18: f7fa fc2c bl 8000674 <__aeabi_fmul> - 8005e1c: 1c03 adds r3, r0, #0 - 8005e1e: 1c18 adds r0, r3, #0 - 8005e20: f7fa fb60 bl 80004e4 <__aeabi_f2uiz> - 8005e24: 0003 movs r3, r0 - 8005e26: b29b uxth r3, r3 - 8005e28: 0019 movs r1, r3 - 8005e2a: 2044 movs r0, #68 ; 0x44 - 8005e2c: f7ff fc6e bl 800570c + 8005df2: 2186 movs r1, #134 ; 0x86 + 8005df4: 05c9 lsls r1, r1, #23 + 8005df6: 6878 ldr r0, [r7, #4] + 8005df8: f7fa fc3c bl 8000674 <__aeabi_fmul> + 8005dfc: 1c03 adds r3, r0, #0 + 8005dfe: 1c18 adds r0, r3, #0 + 8005e00: f7fa fb70 bl 80004e4 <__aeabi_f2uiz> + 8005e04: 0003 movs r3, r0 + 8005e06: b29b uxth r3, r3 + 8005e08: 0019 movs r1, r3 + 8005e0a: 2044 movs r0, #68 ; 0x44 + 8005e0c: f7ff fc6e bl 80056ec return true; - 8005e30: 2301 movs r3, #1 + 8005e10: 2301 movs r3, #1 } - 8005e32: 0018 movs r0, r3 - 8005e34: 46bd mov sp, r7 - 8005e36: b002 add sp, #8 - 8005e38: bd80 pop {r7, pc} - 8005e3a: 46c0 nop ; (mov r8, r8) - 8005e3c: 0a3d70a4 .word 0x0a3d70a4 - 8005e40: 407fffd7 .word 0x407fffd7 + 8005e12: 0018 movs r0, r3 + 8005e14: 46bd mov sp, r7 + 8005e16: b002 add sp, #8 + 8005e18: bd80 pop {r7, pc} + 8005e1a: 46c0 nop ; (mov r8, r8) + 8005e1c: 0a3d70a4 .word 0x0a3d70a4 + 8005e20: 407fffd7 .word 0x407fffd7 -08005e44 : +08005e24 : // budget allows for more accurate measurements. Increasing the budget by a // factor of N decreases the range measurement standard deviation by a factor of // sqrt(N). Defaults to about 33 milliseconds; the minimum is 20 ms. // based on VL53L0X_set_measurement_timing_budget_micro_seconds() bool setMeasurementTimingBudget(uint32_t budget_us) { - 8005e44: b5b0 push {r4, r5, r7, lr} - 8005e46: b092 sub sp, #72 ; 0x48 - 8005e48: af00 add r7, sp, #0 - 8005e4a: 6078 str r0, [r7, #4] + 8005e24: b5b0 push {r4, r5, r7, lr} + 8005e26: b092 sub sp, #72 ; 0x48 + 8005e28: af00 add r7, sp, #0 + 8005e2a: 6078 str r0, [r7, #4] SequenceStepEnables enables; SequenceStepTimeouts timeouts; uint16_t const StartOverhead = 1320; // note that this is different than the value in get_ - 8005e4c: 2340 movs r3, #64 ; 0x40 - 8005e4e: 18fb adds r3, r7, r3 - 8005e50: 22a5 movs r2, #165 ; 0xa5 - 8005e52: 00d2 lsls r2, r2, #3 - 8005e54: 801a strh r2, [r3, #0] + 8005e2c: 2340 movs r3, #64 ; 0x40 + 8005e2e: 18fb adds r3, r7, r3 + 8005e30: 22a5 movs r2, #165 ; 0xa5 + 8005e32: 00d2 lsls r2, r2, #3 + 8005e34: 801a strh r2, [r3, #0] uint16_t const EndOverhead = 960; - 8005e56: 233e movs r3, #62 ; 0x3e - 8005e58: 18fb adds r3, r7, r3 - 8005e5a: 22f0 movs r2, #240 ; 0xf0 - 8005e5c: 0092 lsls r2, r2, #2 - 8005e5e: 801a strh r2, [r3, #0] + 8005e36: 233e movs r3, #62 ; 0x3e + 8005e38: 18fb adds r3, r7, r3 + 8005e3a: 22f0 movs r2, #240 ; 0xf0 + 8005e3c: 0092 lsls r2, r2, #2 + 8005e3e: 801a strh r2, [r3, #0] uint16_t const MsrcOverhead = 660; - 8005e60: 233c movs r3, #60 ; 0x3c - 8005e62: 18fb adds r3, r7, r3 - 8005e64: 22a5 movs r2, #165 ; 0xa5 - 8005e66: 0092 lsls r2, r2, #2 - 8005e68: 801a strh r2, [r3, #0] + 8005e40: 233c movs r3, #60 ; 0x3c + 8005e42: 18fb adds r3, r7, r3 + 8005e44: 22a5 movs r2, #165 ; 0xa5 + 8005e46: 0092 lsls r2, r2, #2 + 8005e48: 801a strh r2, [r3, #0] uint16_t const TccOverhead = 590; - 8005e6a: 233a movs r3, #58 ; 0x3a - 8005e6c: 18fb adds r3, r7, r3 - 8005e6e: 4a54 ldr r2, [pc, #336] ; (8005fc0 ) - 8005e70: 801a strh r2, [r3, #0] + 8005e4a: 233a movs r3, #58 ; 0x3a + 8005e4c: 18fb adds r3, r7, r3 + 8005e4e: 4a54 ldr r2, [pc, #336] ; (8005fa0 ) + 8005e50: 801a strh r2, [r3, #0] uint16_t const DssOverhead = 690; - 8005e72: 2338 movs r3, #56 ; 0x38 - 8005e74: 18fb adds r3, r7, r3 - 8005e76: 4a53 ldr r2, [pc, #332] ; (8005fc4 ) - 8005e78: 801a strh r2, [r3, #0] + 8005e52: 2338 movs r3, #56 ; 0x38 + 8005e54: 18fb adds r3, r7, r3 + 8005e56: 4a53 ldr r2, [pc, #332] ; (8005fa4 ) + 8005e58: 801a strh r2, [r3, #0] uint16_t const PreRangeOverhead = 660; - 8005e7a: 2336 movs r3, #54 ; 0x36 - 8005e7c: 18fb adds r3, r7, r3 - 8005e7e: 22a5 movs r2, #165 ; 0xa5 - 8005e80: 0092 lsls r2, r2, #2 - 8005e82: 801a strh r2, [r3, #0] + 8005e5a: 2336 movs r3, #54 ; 0x36 + 8005e5c: 18fb adds r3, r7, r3 + 8005e5e: 22a5 movs r2, #165 ; 0xa5 + 8005e60: 0092 lsls r2, r2, #2 + 8005e62: 801a strh r2, [r3, #0] uint16_t const FinalRangeOverhead = 550; - 8005e84: 2334 movs r3, #52 ; 0x34 - 8005e86: 18fb adds r3, r7, r3 - 8005e88: 4a4f ldr r2, [pc, #316] ; (8005fc8 ) - 8005e8a: 801a strh r2, [r3, #0] + 8005e64: 2334 movs r3, #52 ; 0x34 + 8005e66: 18fb adds r3, r7, r3 + 8005e68: 4a4f ldr r2, [pc, #316] ; (8005fa8 ) + 8005e6a: 801a strh r2, [r3, #0] uint32_t const MinTimingBudget = 20000; - 8005e8c: 4b4f ldr r3, [pc, #316] ; (8005fcc ) - 8005e8e: 633b str r3, [r7, #48] ; 0x30 + 8005e6c: 4b4f ldr r3, [pc, #316] ; (8005fac ) + 8005e6e: 633b str r3, [r7, #48] ; 0x30 if (budget_us < MinTimingBudget) { return false; } - 8005e90: 687a ldr r2, [r7, #4] - 8005e92: 6b3b ldr r3, [r7, #48] ; 0x30 - 8005e94: 429a cmp r2, r3 - 8005e96: d201 bcs.n 8005e9c - 8005e98: 2300 movs r3, #0 - 8005e9a: e08c b.n 8005fb6 + 8005e70: 687a ldr r2, [r7, #4] + 8005e72: 6b3b ldr r3, [r7, #48] ; 0x30 + 8005e74: 429a cmp r2, r3 + 8005e76: d201 bcs.n 8005e7c + 8005e78: 2300 movs r3, #0 + 8005e7a: e08c b.n 8005f96 uint32_t used_budget_us = StartOverhead + EndOverhead; - 8005e9c: 2340 movs r3, #64 ; 0x40 - 8005e9e: 18fb adds r3, r7, r3 - 8005ea0: 881a ldrh r2, [r3, #0] - 8005ea2: 233e movs r3, #62 ; 0x3e - 8005ea4: 18fb adds r3, r7, r3 - 8005ea6: 881b ldrh r3, [r3, #0] - 8005ea8: 18d3 adds r3, r2, r3 - 8005eaa: 647b str r3, [r7, #68] ; 0x44 + 8005e7c: 2340 movs r3, #64 ; 0x40 + 8005e7e: 18fb adds r3, r7, r3 + 8005e80: 881a ldrh r2, [r3, #0] + 8005e82: 233e movs r3, #62 ; 0x3e + 8005e84: 18fb adds r3, r7, r3 + 8005e86: 881b ldrh r3, [r3, #0] + 8005e88: 18d3 adds r3, r2, r3 + 8005e8a: 647b str r3, [r7, #68] ; 0x44 getSequenceStepEnables(&enables); - 8005eac: 2424 movs r4, #36 ; 0x24 - 8005eae: 193b adds r3, r7, r4 - 8005eb0: 0018 movs r0, r3 - 8005eb2: f000 faad bl 8006410 + 8005e8c: 2424 movs r4, #36 ; 0x24 + 8005e8e: 193b adds r3, r7, r4 + 8005e90: 0018 movs r0, r3 + 8005e92: f000 fabd bl 8006410 getSequenceStepTimeouts(&enables, &timeouts); - 8005eb6: 250c movs r5, #12 - 8005eb8: 197a adds r2, r7, r5 - 8005eba: 193b adds r3, r7, r4 - 8005ebc: 0011 movs r1, r2 - 8005ebe: 0018 movs r0, r3 - 8005ec0: f000 fae0 bl 8006484 + 8005e96: 250c movs r5, #12 + 8005e98: 197a adds r2, r7, r5 + 8005e9a: 193b adds r3, r7, r4 + 8005e9c: 0011 movs r1, r2 + 8005e9e: 0018 movs r0, r3 + 8005ea0: f000 faf0 bl 8006484 if (enables.tcc) - 8005ec4: 193b adds r3, r7, r4 - 8005ec6: 781b ldrb r3, [r3, #0] - 8005ec8: 2b00 cmp r3, #0 - 8005eca: d008 beq.n 8005ede + 8005ea4: 193b adds r3, r7, r4 + 8005ea6: 781b ldrb r3, [r3, #0] + 8005ea8: 2b00 cmp r3, #0 + 8005eaa: d008 beq.n 8005ebe { used_budget_us += (timeouts.msrc_dss_tcc_us + TccOverhead); - 8005ecc: 197b adds r3, r7, r5 - 8005ece: 68da ldr r2, [r3, #12] - 8005ed0: 233a movs r3, #58 ; 0x3a - 8005ed2: 18fb adds r3, r7, r3 - 8005ed4: 881b ldrh r3, [r3, #0] - 8005ed6: 18d3 adds r3, r2, r3 - 8005ed8: 6c7a ldr r2, [r7, #68] ; 0x44 - 8005eda: 18d3 adds r3, r2, r3 - 8005edc: 647b str r3, [r7, #68] ; 0x44 + 8005eac: 197b adds r3, r7, r5 + 8005eae: 68da ldr r2, [r3, #12] + 8005eb0: 233a movs r3, #58 ; 0x3a + 8005eb2: 18fb adds r3, r7, r3 + 8005eb4: 881b ldrh r3, [r3, #0] + 8005eb6: 18d3 adds r3, r2, r3 + 8005eb8: 6c7a ldr r2, [r7, #68] ; 0x44 + 8005eba: 18d3 adds r3, r2, r3 + 8005ebc: 647b str r3, [r7, #68] ; 0x44 } if (enables.dss) - 8005ede: 2324 movs r3, #36 ; 0x24 - 8005ee0: 18fb adds r3, r7, r3 - 8005ee2: 789b ldrb r3, [r3, #2] - 8005ee4: 2b00 cmp r3, #0 - 8005ee6: d00b beq.n 8005f00 + 8005ebe: 2324 movs r3, #36 ; 0x24 + 8005ec0: 18fb adds r3, r7, r3 + 8005ec2: 789b ldrb r3, [r3, #2] + 8005ec4: 2b00 cmp r3, #0 + 8005ec6: d00b beq.n 8005ee0 { used_budget_us += 2 * (timeouts.msrc_dss_tcc_us + DssOverhead); - 8005ee8: 230c movs r3, #12 - 8005eea: 18fb adds r3, r7, r3 - 8005eec: 68da ldr r2, [r3, #12] - 8005eee: 2338 movs r3, #56 ; 0x38 - 8005ef0: 18fb adds r3, r7, r3 - 8005ef2: 881b ldrh r3, [r3, #0] - 8005ef4: 18d3 adds r3, r2, r3 - 8005ef6: 005b lsls r3, r3, #1 + 8005ec8: 230c movs r3, #12 + 8005eca: 18fb adds r3, r7, r3 + 8005ecc: 68da ldr r2, [r3, #12] + 8005ece: 2338 movs r3, #56 ; 0x38 + 8005ed0: 18fb adds r3, r7, r3 + 8005ed2: 881b ldrh r3, [r3, #0] + 8005ed4: 18d3 adds r3, r2, r3 + 8005ed6: 005b lsls r3, r3, #1 + 8005ed8: 6c7a ldr r2, [r7, #68] ; 0x44 + 8005eda: 18d3 adds r3, r2, r3 + 8005edc: 647b str r3, [r7, #68] ; 0x44 + 8005ede: e00e b.n 8005efe + } + else if (enables.msrc) + 8005ee0: 2324 movs r3, #36 ; 0x24 + 8005ee2: 18fb adds r3, r7, r3 + 8005ee4: 785b ldrb r3, [r3, #1] + 8005ee6: 2b00 cmp r3, #0 + 8005ee8: d009 beq.n 8005efe + { + used_budget_us += (timeouts.msrc_dss_tcc_us + MsrcOverhead); + 8005eea: 230c movs r3, #12 + 8005eec: 18fb adds r3, r7, r3 + 8005eee: 68da ldr r2, [r3, #12] + 8005ef0: 233c movs r3, #60 ; 0x3c + 8005ef2: 18fb adds r3, r7, r3 + 8005ef4: 881b ldrh r3, [r3, #0] + 8005ef6: 18d3 adds r3, r2, r3 8005ef8: 6c7a ldr r2, [r7, #68] ; 0x44 8005efa: 18d3 adds r3, r2, r3 8005efc: 647b str r3, [r7, #68] ; 0x44 - 8005efe: e00e b.n 8005f1e - } - else if (enables.msrc) - 8005f00: 2324 movs r3, #36 ; 0x24 - 8005f02: 18fb adds r3, r7, r3 - 8005f04: 785b ldrb r3, [r3, #1] - 8005f06: 2b00 cmp r3, #0 - 8005f08: d009 beq.n 8005f1e - { - used_budget_us += (timeouts.msrc_dss_tcc_us + MsrcOverhead); - 8005f0a: 230c movs r3, #12 - 8005f0c: 18fb adds r3, r7, r3 - 8005f0e: 68da ldr r2, [r3, #12] - 8005f10: 233c movs r3, #60 ; 0x3c - 8005f12: 18fb adds r3, r7, r3 - 8005f14: 881b ldrh r3, [r3, #0] - 8005f16: 18d3 adds r3, r2, r3 - 8005f18: 6c7a ldr r2, [r7, #68] ; 0x44 - 8005f1a: 18d3 adds r3, r2, r3 - 8005f1c: 647b str r3, [r7, #68] ; 0x44 } if (enables.pre_range) - 8005f1e: 2324 movs r3, #36 ; 0x24 - 8005f20: 18fb adds r3, r7, r3 - 8005f22: 78db ldrb r3, [r3, #3] - 8005f24: 2b00 cmp r3, #0 - 8005f26: d009 beq.n 8005f3c + 8005efe: 2324 movs r3, #36 ; 0x24 + 8005f00: 18fb adds r3, r7, r3 + 8005f02: 78db ldrb r3, [r3, #3] + 8005f04: 2b00 cmp r3, #0 + 8005f06: d009 beq.n 8005f1c { used_budget_us += (timeouts.pre_range_us + PreRangeOverhead); - 8005f28: 230c movs r3, #12 - 8005f2a: 18fb adds r3, r7, r3 - 8005f2c: 691a ldr r2, [r3, #16] - 8005f2e: 2336 movs r3, #54 ; 0x36 - 8005f30: 18fb adds r3, r7, r3 - 8005f32: 881b ldrh r3, [r3, #0] - 8005f34: 18d3 adds r3, r2, r3 - 8005f36: 6c7a ldr r2, [r7, #68] ; 0x44 - 8005f38: 18d3 adds r3, r2, r3 - 8005f3a: 647b str r3, [r7, #68] ; 0x44 + 8005f08: 230c movs r3, #12 + 8005f0a: 18fb adds r3, r7, r3 + 8005f0c: 691a ldr r2, [r3, #16] + 8005f0e: 2336 movs r3, #54 ; 0x36 + 8005f10: 18fb adds r3, r7, r3 + 8005f12: 881b ldrh r3, [r3, #0] + 8005f14: 18d3 adds r3, r2, r3 + 8005f16: 6c7a ldr r2, [r7, #68] ; 0x44 + 8005f18: 18d3 adds r3, r2, r3 + 8005f1a: 647b str r3, [r7, #68] ; 0x44 } if (enables.final_range) - 8005f3c: 2324 movs r3, #36 ; 0x24 - 8005f3e: 18fb adds r3, r7, r3 - 8005f40: 791b ldrb r3, [r3, #4] - 8005f42: 2b00 cmp r3, #0 - 8005f44: d036 beq.n 8005fb4 + 8005f1c: 2324 movs r3, #36 ; 0x24 + 8005f1e: 18fb adds r3, r7, r3 + 8005f20: 791b ldrb r3, [r3, #4] + 8005f22: 2b00 cmp r3, #0 + 8005f24: d036 beq.n 8005f94 { used_budget_us += FinalRangeOverhead; - 8005f46: 2334 movs r3, #52 ; 0x34 - 8005f48: 18fb adds r3, r7, r3 - 8005f4a: 881b ldrh r3, [r3, #0] - 8005f4c: 6c7a ldr r2, [r7, #68] ; 0x44 - 8005f4e: 18d3 adds r3, r2, r3 - 8005f50: 647b str r3, [r7, #68] ; 0x44 + 8005f26: 2334 movs r3, #52 ; 0x34 + 8005f28: 18fb adds r3, r7, r3 + 8005f2a: 881b ldrh r3, [r3, #0] + 8005f2c: 6c7a ldr r2, [r7, #68] ; 0x44 + 8005f2e: 18d3 adds r3, r2, r3 + 8005f30: 647b str r3, [r7, #68] ; 0x44 // budget and the sum of all other timeouts within the sequence. // If there is no room for the final range timeout, then an error // will be set. Otherwise the remaining time will be applied to // the final range." if (used_budget_us > budget_us) - 8005f52: 6c7a ldr r2, [r7, #68] ; 0x44 - 8005f54: 687b ldr r3, [r7, #4] - 8005f56: 429a cmp r2, r3 - 8005f58: d901 bls.n 8005f5e + 8005f32: 6c7a ldr r2, [r7, #68] ; 0x44 + 8005f34: 687b ldr r3, [r7, #4] + 8005f36: 429a cmp r2, r3 + 8005f38: d901 bls.n 8005f3e { // "Requested timeout too big." return false; - 8005f5a: 2300 movs r3, #0 - 8005f5c: e02b b.n 8005fb6 + 8005f3a: 2300 movs r3, #0 + 8005f3c: e02b b.n 8005f96 } uint32_t final_range_timeout_us = budget_us - used_budget_us; - 8005f5e: 687a ldr r2, [r7, #4] - 8005f60: 6c7b ldr r3, [r7, #68] ; 0x44 - 8005f62: 1ad3 subs r3, r2, r3 - 8005f64: 62fb str r3, [r7, #44] ; 0x2c + 8005f3e: 687a ldr r2, [r7, #4] + 8005f40: 6c7b ldr r3, [r7, #68] ; 0x44 + 8005f42: 1ad3 subs r3, r2, r3 + 8005f44: 62fb str r3, [r7, #44] ; 0x2c // timeouts must be expressed in macro periods MClks // because they have different vcsel periods." uint16_t final_range_timeout_mclks = timeoutMicrosecondsToMclks(final_range_timeout_us, timeouts.final_range_vcsel_period_pclks); - 8005f66: 240c movs r4, #12 - 8005f68: 193b adds r3, r7, r4 - 8005f6a: 885b ldrh r3, [r3, #2] + 8005f46: 240c movs r4, #12 + 8005f48: 193b adds r3, r7, r4 + 8005f4a: 885b ldrh r3, [r3, #2] timeoutMicrosecondsToMclks(final_range_timeout_us, - 8005f6c: b2da uxtb r2, r3 - 8005f6e: 6afb ldr r3, [r7, #44] ; 0x2c - 8005f70: 0011 movs r1, r2 - 8005f72: 0018 movs r0, r3 - 8005f74: f000 fb65 bl 8006642 - 8005f78: 0002 movs r2, r0 + 8005f4c: b2da uxtb r2, r3 + 8005f4e: 6afb ldr r3, [r7, #44] ; 0x2c + 8005f50: 0011 movs r1, r2 + 8005f52: 0018 movs r0, r3 + 8005f54: f000 fb75 bl 8006642 + 8005f58: 0002 movs r2, r0 uint16_t final_range_timeout_mclks = - 8005f7a: 2042 movs r0, #66 ; 0x42 - 8005f7c: 183b adds r3, r7, r0 - 8005f7e: 801a strh r2, [r3, #0] + 8005f5a: 2042 movs r0, #66 ; 0x42 + 8005f5c: 183b adds r3, r7, r0 + 8005f5e: 801a strh r2, [r3, #0] if (enables.pre_range) - 8005f80: 2324 movs r3, #36 ; 0x24 - 8005f82: 18fb adds r3, r7, r3 - 8005f84: 78db ldrb r3, [r3, #3] - 8005f86: 2b00 cmp r3, #0 - 8005f88: d006 beq.n 8005f98 + 8005f60: 2324 movs r3, #36 ; 0x24 + 8005f62: 18fb adds r3, r7, r3 + 8005f64: 78db ldrb r3, [r3, #3] + 8005f66: 2b00 cmp r3, #0 + 8005f68: d006 beq.n 8005f78 { final_range_timeout_mclks += timeouts.pre_range_mclks; - 8005f8a: 193b adds r3, r7, r4 - 8005f8c: 88d9 ldrh r1, [r3, #6] - 8005f8e: 183b adds r3, r7, r0 - 8005f90: 183a adds r2, r7, r0 - 8005f92: 8812 ldrh r2, [r2, #0] - 8005f94: 188a adds r2, r1, r2 - 8005f96: 801a strh r2, [r3, #0] + 8005f6a: 193b adds r3, r7, r4 + 8005f6c: 88d9 ldrh r1, [r3, #6] + 8005f6e: 183b adds r3, r7, r0 + 8005f70: 183a adds r2, r7, r0 + 8005f72: 8812 ldrh r2, [r2, #0] + 8005f74: 188a adds r2, r1, r2 + 8005f76: 801a strh r2, [r3, #0] } writeReg16Bit(FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI, - 8005f98: 2342 movs r3, #66 ; 0x42 - 8005f9a: 18fb adds r3, r7, r3 - 8005f9c: 881b ldrh r3, [r3, #0] - 8005f9e: 0018 movs r0, r3 - 8005fa0: f000 faec bl 800657c - 8005fa4: 0003 movs r3, r0 - 8005fa6: 0019 movs r1, r3 - 8005fa8: 2071 movs r0, #113 ; 0x71 - 8005faa: f7ff fbaf bl 800570c + 8005f78: 2342 movs r3, #66 ; 0x42 + 8005f7a: 18fb adds r3, r7, r3 + 8005f7c: 881b ldrh r3, [r3, #0] + 8005f7e: 0018 movs r0, r3 + 8005f80: f000 fafc bl 800657c + 8005f84: 0003 movs r3, r0 + 8005f86: 0019 movs r1, r3 + 8005f88: 2071 movs r0, #113 ; 0x71 + 8005f8a: f7ff fbaf bl 80056ec encodeTimeout(final_range_timeout_mclks)); // set_sequence_step_timeout() end g_measTimBudUs = budget_us; // store for internal reuse - 8005fae: 4b08 ldr r3, [pc, #32] ; (8005fd0 ) - 8005fb0: 687a ldr r2, [r7, #4] - 8005fb2: 601a str r2, [r3, #0] + 8005f8e: 4b08 ldr r3, [pc, #32] ; (8005fb0 ) + 8005f90: 687a ldr r2, [r7, #4] + 8005f92: 601a str r2, [r3, #0] } return true; - 8005fb4: 2301 movs r3, #1 + 8005f94: 2301 movs r3, #1 } - 8005fb6: 0018 movs r0, r3 - 8005fb8: 46bd mov sp, r7 - 8005fba: b012 add sp, #72 ; 0x48 - 8005fbc: bdb0 pop {r4, r5, r7, pc} - 8005fbe: 46c0 nop ; (mov r8, r8) - 8005fc0: 0000024e .word 0x0000024e - 8005fc4: 000002b2 .word 0x000002b2 - 8005fc8: 00000226 .word 0x00000226 - 8005fcc: 00004e20 .word 0x00004e20 - 8005fd0: 20000260 .word 0x20000260 + 8005f96: 0018 movs r0, r3 + 8005f98: 46bd mov sp, r7 + 8005f9a: b012 add sp, #72 ; 0x48 + 8005f9c: bdb0 pop {r4, r5, r7, pc} + 8005f9e: 46c0 nop ; (mov r8, r8) + 8005fa0: 0000024e .word 0x0000024e + 8005fa4: 000002b2 .word 0x000002b2 + 8005fa8: 00000226 .word 0x00000226 + 8005fac: 00004e20 .word 0x00004e20 + 8005fb0: 20000260 .word 0x20000260 -08005fd4 : +08005fb4 : // Get the measurement timing budget in microseconds // based on VL53L0X_get_measurement_timing_budget_micro_seconds() // in us uint32_t getMeasurementTimingBudget(void) { - 8005fd4: b5b0 push {r4, r5, r7, lr} - 8005fd6: b08c sub sp, #48 ; 0x30 - 8005fd8: af00 add r7, sp, #0 + 8005fb4: b5b0 push {r4, r5, r7, lr} + 8005fb6: b08c sub sp, #48 ; 0x30 + 8005fb8: af00 add r7, sp, #0 SequenceStepEnables enables; SequenceStepTimeouts timeouts; uint16_t const StartOverhead = 1910; // note that this is different than the value in set_ - 8005fda: 212a movs r1, #42 ; 0x2a - 8005fdc: 187b adds r3, r7, r1 - 8005fde: 4a3e ldr r2, [pc, #248] ; (80060d8 ) - 8005fe0: 801a strh r2, [r3, #0] + 8005fba: 212a movs r1, #42 ; 0x2a + 8005fbc: 187b adds r3, r7, r1 + 8005fbe: 4a3e ldr r2, [pc, #248] ; (80060b8 ) + 8005fc0: 801a strh r2, [r3, #0] uint16_t const EndOverhead = 960; - 8005fe2: 2028 movs r0, #40 ; 0x28 - 8005fe4: 183b adds r3, r7, r0 - 8005fe6: 22f0 movs r2, #240 ; 0xf0 - 8005fe8: 0092 lsls r2, r2, #2 - 8005fea: 801a strh r2, [r3, #0] + 8005fc2: 2028 movs r0, #40 ; 0x28 + 8005fc4: 183b adds r3, r7, r0 + 8005fc6: 22f0 movs r2, #240 ; 0xf0 + 8005fc8: 0092 lsls r2, r2, #2 + 8005fca: 801a strh r2, [r3, #0] uint16_t const MsrcOverhead = 660; - 8005fec: 2326 movs r3, #38 ; 0x26 - 8005fee: 18fb adds r3, r7, r3 - 8005ff0: 22a5 movs r2, #165 ; 0xa5 - 8005ff2: 0092 lsls r2, r2, #2 - 8005ff4: 801a strh r2, [r3, #0] + 8005fcc: 2326 movs r3, #38 ; 0x26 + 8005fce: 18fb adds r3, r7, r3 + 8005fd0: 22a5 movs r2, #165 ; 0xa5 + 8005fd2: 0092 lsls r2, r2, #2 + 8005fd4: 801a strh r2, [r3, #0] uint16_t const TccOverhead = 590; - 8005ff6: 2524 movs r5, #36 ; 0x24 - 8005ff8: 197b adds r3, r7, r5 - 8005ffa: 4a38 ldr r2, [pc, #224] ; (80060dc ) - 8005ffc: 801a strh r2, [r3, #0] + 8005fd6: 2524 movs r5, #36 ; 0x24 + 8005fd8: 197b adds r3, r7, r5 + 8005fda: 4a38 ldr r2, [pc, #224] ; (80060bc ) + 8005fdc: 801a strh r2, [r3, #0] uint16_t const DssOverhead = 690; - 8005ffe: 2322 movs r3, #34 ; 0x22 - 8006000: 18fb adds r3, r7, r3 - 8006002: 4a37 ldr r2, [pc, #220] ; (80060e0 ) - 8006004: 801a strh r2, [r3, #0] + 8005fde: 2322 movs r3, #34 ; 0x22 + 8005fe0: 18fb adds r3, r7, r3 + 8005fe2: 4a37 ldr r2, [pc, #220] ; (80060c0 ) + 8005fe4: 801a strh r2, [r3, #0] uint16_t const PreRangeOverhead = 660; - 8006006: 2320 movs r3, #32 - 8006008: 18fb adds r3, r7, r3 - 800600a: 22a5 movs r2, #165 ; 0xa5 - 800600c: 0092 lsls r2, r2, #2 - 800600e: 801a strh r2, [r3, #0] + 8005fe6: 2320 movs r3, #32 + 8005fe8: 18fb adds r3, r7, r3 + 8005fea: 22a5 movs r2, #165 ; 0xa5 + 8005fec: 0092 lsls r2, r2, #2 + 8005fee: 801a strh r2, [r3, #0] uint16_t const FinalRangeOverhead = 550; - 8006010: 231e movs r3, #30 - 8006012: 18fb adds r3, r7, r3 - 8006014: 4a33 ldr r2, [pc, #204] ; (80060e4 ) - 8006016: 801a strh r2, [r3, #0] + 8005ff0: 231e movs r3, #30 + 8005ff2: 18fb adds r3, r7, r3 + 8005ff4: 4a33 ldr r2, [pc, #204] ; (80060c4 ) + 8005ff6: 801a strh r2, [r3, #0] // "Start and end overhead times always present" uint32_t budget_us = StartOverhead + EndOverhead; - 8006018: 187b adds r3, r7, r1 - 800601a: 881a ldrh r2, [r3, #0] - 800601c: 183b adds r3, r7, r0 - 800601e: 881b ldrh r3, [r3, #0] - 8006020: 18d3 adds r3, r2, r3 - 8006022: 62fb str r3, [r7, #44] ; 0x2c + 8005ff8: 187b adds r3, r7, r1 + 8005ffa: 881a ldrh r2, [r3, #0] + 8005ffc: 183b adds r3, r7, r0 + 8005ffe: 881b ldrh r3, [r3, #0] + 8006000: 18d3 adds r3, r2, r3 + 8006002: 62fb str r3, [r7, #44] ; 0x2c getSequenceStepEnables(&enables); - 8006024: 2418 movs r4, #24 - 8006026: 193b adds r3, r7, r4 - 8006028: 0018 movs r0, r3 - 800602a: f000 f9f1 bl 8006410 + 8006004: 2418 movs r4, #24 + 8006006: 193b adds r3, r7, r4 + 8006008: 0018 movs r0, r3 + 800600a: f000 fa01 bl 8006410 getSequenceStepTimeouts(&enables, &timeouts); - 800602e: 003a movs r2, r7 - 8006030: 193b adds r3, r7, r4 - 8006032: 0011 movs r1, r2 - 8006034: 0018 movs r0, r3 - 8006036: f000 fa25 bl 8006484 + 800600e: 003a movs r2, r7 + 8006010: 193b adds r3, r7, r4 + 8006012: 0011 movs r1, r2 + 8006014: 0018 movs r0, r3 + 8006016: f000 fa35 bl 8006484 if (enables.tcc) - 800603a: 193b adds r3, r7, r4 - 800603c: 781b ldrb r3, [r3, #0] - 800603e: 2b00 cmp r3, #0 - 8006040: d007 beq.n 8006052 + 800601a: 193b adds r3, r7, r4 + 800601c: 781b ldrb r3, [r3, #0] + 800601e: 2b00 cmp r3, #0 + 8006020: d007 beq.n 8006032 { budget_us += (timeouts.msrc_dss_tcc_us + TccOverhead); - 8006042: 003b movs r3, r7 - 8006044: 68da ldr r2, [r3, #12] - 8006046: 197b adds r3, r7, r5 - 8006048: 881b ldrh r3, [r3, #0] - 800604a: 18d3 adds r3, r2, r3 - 800604c: 6afa ldr r2, [r7, #44] ; 0x2c - 800604e: 18d3 adds r3, r2, r3 - 8006050: 62fb str r3, [r7, #44] ; 0x2c + 8006022: 003b movs r3, r7 + 8006024: 68da ldr r2, [r3, #12] + 8006026: 197b adds r3, r7, r5 + 8006028: 881b ldrh r3, [r3, #0] + 800602a: 18d3 adds r3, r2, r3 + 800602c: 6afa ldr r2, [r7, #44] ; 0x2c + 800602e: 18d3 adds r3, r2, r3 + 8006030: 62fb str r3, [r7, #44] ; 0x2c } if (enables.dss) - 8006052: 2318 movs r3, #24 - 8006054: 18fb adds r3, r7, r3 - 8006056: 789b ldrb r3, [r3, #2] - 8006058: 2b00 cmp r3, #0 - 800605a: d00a beq.n 8006072 + 8006032: 2318 movs r3, #24 + 8006034: 18fb adds r3, r7, r3 + 8006036: 789b ldrb r3, [r3, #2] + 8006038: 2b00 cmp r3, #0 + 800603a: d00a beq.n 8006052 { budget_us += 2 * (timeouts.msrc_dss_tcc_us + DssOverhead); + 800603c: 003b movs r3, r7 + 800603e: 68da ldr r2, [r3, #12] + 8006040: 2322 movs r3, #34 ; 0x22 + 8006042: 18fb adds r3, r7, r3 + 8006044: 881b ldrh r3, [r3, #0] + 8006046: 18d3 adds r3, r2, r3 + 8006048: 005b lsls r3, r3, #1 + 800604a: 6afa ldr r2, [r7, #44] ; 0x2c + 800604c: 18d3 adds r3, r2, r3 + 800604e: 62fb str r3, [r7, #44] ; 0x2c + 8006050: e00d b.n 800606e + } + else if (enables.msrc) + 8006052: 2318 movs r3, #24 + 8006054: 18fb adds r3, r7, r3 + 8006056: 785b ldrb r3, [r3, #1] + 8006058: 2b00 cmp r3, #0 + 800605a: d008 beq.n 800606e + { + budget_us += (timeouts.msrc_dss_tcc_us + MsrcOverhead); 800605c: 003b movs r3, r7 800605e: 68da ldr r2, [r3, #12] - 8006060: 2322 movs r3, #34 ; 0x22 + 8006060: 2326 movs r3, #38 ; 0x26 8006062: 18fb adds r3, r7, r3 8006064: 881b ldrh r3, [r3, #0] 8006066: 18d3 adds r3, r2, r3 - 8006068: 005b lsls r3, r3, #1 - 800606a: 6afa ldr r2, [r7, #44] ; 0x2c - 800606c: 18d3 adds r3, r2, r3 - 800606e: 62fb str r3, [r7, #44] ; 0x2c - 8006070: e00d b.n 800608e - } - else if (enables.msrc) - 8006072: 2318 movs r3, #24 - 8006074: 18fb adds r3, r7, r3 - 8006076: 785b ldrb r3, [r3, #1] - 8006078: 2b00 cmp r3, #0 - 800607a: d008 beq.n 800608e - { - budget_us += (timeouts.msrc_dss_tcc_us + MsrcOverhead); - 800607c: 003b movs r3, r7 - 800607e: 68da ldr r2, [r3, #12] - 8006080: 2326 movs r3, #38 ; 0x26 - 8006082: 18fb adds r3, r7, r3 - 8006084: 881b ldrh r3, [r3, #0] - 8006086: 18d3 adds r3, r2, r3 - 8006088: 6afa ldr r2, [r7, #44] ; 0x2c - 800608a: 18d3 adds r3, r2, r3 - 800608c: 62fb str r3, [r7, #44] ; 0x2c + 8006068: 6afa ldr r2, [r7, #44] ; 0x2c + 800606a: 18d3 adds r3, r2, r3 + 800606c: 62fb str r3, [r7, #44] ; 0x2c } if (enables.pre_range) - 800608e: 2318 movs r3, #24 - 8006090: 18fb adds r3, r7, r3 - 8006092: 78db ldrb r3, [r3, #3] - 8006094: 2b00 cmp r3, #0 - 8006096: d008 beq.n 80060aa + 800606e: 2318 movs r3, #24 + 8006070: 18fb adds r3, r7, r3 + 8006072: 78db ldrb r3, [r3, #3] + 8006074: 2b00 cmp r3, #0 + 8006076: d008 beq.n 800608a { budget_us += (timeouts.pre_range_us + PreRangeOverhead); - 8006098: 003b movs r3, r7 - 800609a: 691a ldr r2, [r3, #16] - 800609c: 2320 movs r3, #32 - 800609e: 18fb adds r3, r7, r3 - 80060a0: 881b ldrh r3, [r3, #0] - 80060a2: 18d3 adds r3, r2, r3 - 80060a4: 6afa ldr r2, [r7, #44] ; 0x2c - 80060a6: 18d3 adds r3, r2, r3 - 80060a8: 62fb str r3, [r7, #44] ; 0x2c + 8006078: 003b movs r3, r7 + 800607a: 691a ldr r2, [r3, #16] + 800607c: 2320 movs r3, #32 + 800607e: 18fb adds r3, r7, r3 + 8006080: 881b ldrh r3, [r3, #0] + 8006082: 18d3 adds r3, r2, r3 + 8006084: 6afa ldr r2, [r7, #44] ; 0x2c + 8006086: 18d3 adds r3, r2, r3 + 8006088: 62fb str r3, [r7, #44] ; 0x2c } if (enables.final_range) - 80060aa: 2318 movs r3, #24 - 80060ac: 18fb adds r3, r7, r3 - 80060ae: 791b ldrb r3, [r3, #4] - 80060b0: 2b00 cmp r3, #0 - 80060b2: d008 beq.n 80060c6 + 800608a: 2318 movs r3, #24 + 800608c: 18fb adds r3, r7, r3 + 800608e: 791b ldrb r3, [r3, #4] + 8006090: 2b00 cmp r3, #0 + 8006092: d008 beq.n 80060a6 { budget_us += (timeouts.final_range_us + FinalRangeOverhead); - 80060b4: 003b movs r3, r7 - 80060b6: 695a ldr r2, [r3, #20] - 80060b8: 231e movs r3, #30 - 80060ba: 18fb adds r3, r7, r3 - 80060bc: 881b ldrh r3, [r3, #0] - 80060be: 18d3 adds r3, r2, r3 - 80060c0: 6afa ldr r2, [r7, #44] ; 0x2c - 80060c2: 18d3 adds r3, r2, r3 - 80060c4: 62fb str r3, [r7, #44] ; 0x2c + 8006094: 003b movs r3, r7 + 8006096: 695a ldr r2, [r3, #20] + 8006098: 231e movs r3, #30 + 800609a: 18fb adds r3, r7, r3 + 800609c: 881b ldrh r3, [r3, #0] + 800609e: 18d3 adds r3, r2, r3 + 80060a0: 6afa ldr r2, [r7, #44] ; 0x2c + 80060a2: 18d3 adds r3, r2, r3 + 80060a4: 62fb str r3, [r7, #44] ; 0x2c } g_measTimBudUs = budget_us; // store for internal reuse - 80060c6: 4b08 ldr r3, [pc, #32] ; (80060e8 ) - 80060c8: 6afa ldr r2, [r7, #44] ; 0x2c - 80060ca: 601a str r2, [r3, #0] + 80060a6: 4b08 ldr r3, [pc, #32] ; (80060c8 ) + 80060a8: 6afa ldr r2, [r7, #44] ; 0x2c + 80060aa: 601a str r2, [r3, #0] return budget_us; - 80060cc: 6afb ldr r3, [r7, #44] ; 0x2c + 80060ac: 6afb ldr r3, [r7, #44] ; 0x2c } - 80060ce: 0018 movs r0, r3 - 80060d0: 46bd mov sp, r7 - 80060d2: b00c add sp, #48 ; 0x30 - 80060d4: bdb0 pop {r4, r5, r7, pc} - 80060d6: 46c0 nop ; (mov r8, r8) - 80060d8: 00000776 .word 0x00000776 - 80060dc: 0000024e .word 0x0000024e - 80060e0: 000002b2 .word 0x000002b2 - 80060e4: 00000226 .word 0x00000226 - 80060e8: 20000260 .word 0x20000260 + 80060ae: 0018 movs r0, r3 + 80060b0: 46bd mov sp, r7 + 80060b2: b00c add sp, #48 ; 0x30 + 80060b4: bdb0 pop {r4, r5, r7, pc} + 80060b6: 46c0 nop ; (mov r8, r8) + 80060b8: 00000776 .word 0x00000776 + 80060bc: 0000024e .word 0x0000024e + 80060c0: 000002b2 .word 0x000002b2 + 80060c4: 00000226 .word 0x00000226 + 80060c8: 20000260 .word 0x20000260 -080060ec : +080060cc : } // Get the VCSEL pulse period in PCLKs for the given period type. // based on VL53L0X_get_vcsel_pulse_period() uint8_t getVcselPulsePeriod(vcselPeriodType type) { - 80060ec: b580 push {r7, lr} - 80060ee: b082 sub sp, #8 - 80060f0: af00 add r7, sp, #0 - 80060f2: 0002 movs r2, r0 - 80060f4: 1dfb adds r3, r7, #7 - 80060f6: 701a strb r2, [r3, #0] + 80060cc: b580 push {r7, lr} + 80060ce: b082 sub sp, #8 + 80060d0: af00 add r7, sp, #0 + 80060d2: 0002 movs r2, r0 + 80060d4: 1dfb adds r3, r7, #7 + 80060d6: 701a strb r2, [r3, #0] if (type == VcselPeriodPreRange) - 80060f8: 1dfb adds r3, r7, #7 - 80060fa: 781b ldrb r3, [r3, #0] - 80060fc: 2b00 cmp r3, #0 - 80060fe: d108 bne.n 8006112 + 80060d8: 1dfb adds r3, r7, #7 + 80060da: 781b ldrb r3, [r3, #0] + 80060dc: 2b00 cmp r3, #0 + 80060de: d108 bne.n 80060f2 { return decodeVcselPeriod(readReg(PRE_RANGE_CONFIG_VCSEL_PERIOD)); - 8006100: 2050 movs r0, #80 ; 0x50 - 8006102: f7ff fb67 bl 80057d4 - 8006106: 0003 movs r3, r0 - 8006108: 3301 adds r3, #1 - 800610a: b2db uxtb r3, r3 - 800610c: 18db adds r3, r3, r3 - 800610e: b2db uxtb r3, r3 - 8006110: e00d b.n 800612e + 80060e0: 2050 movs r0, #80 ; 0x50 + 80060e2: f7ff fb67 bl 80057b4 + 80060e6: 0003 movs r3, r0 + 80060e8: 3301 adds r3, #1 + 80060ea: b2db uxtb r3, r3 + 80060ec: 18db adds r3, r3, r3 + 80060ee: b2db uxtb r3, r3 + 80060f0: e00d b.n 800610e } else if (type == VcselPeriodFinalRange) - 8006112: 1dfb adds r3, r7, #7 - 8006114: 781b ldrb r3, [r3, #0] - 8006116: 2b01 cmp r3, #1 - 8006118: d108 bne.n 800612c + 80060f2: 1dfb adds r3, r7, #7 + 80060f4: 781b ldrb r3, [r3, #0] + 80060f6: 2b01 cmp r3, #1 + 80060f8: d108 bne.n 800610c { return decodeVcselPeriod(readReg(FINAL_RANGE_CONFIG_VCSEL_PERIOD)); - 800611a: 2070 movs r0, #112 ; 0x70 - 800611c: f7ff fb5a bl 80057d4 - 8006120: 0003 movs r3, r0 - 8006122: 3301 adds r3, #1 - 8006124: b2db uxtb r3, r3 - 8006126: 18db adds r3, r3, r3 - 8006128: b2db uxtb r3, r3 - 800612a: e000 b.n 800612e + 80060fa: 2070 movs r0, #112 ; 0x70 + 80060fc: f7ff fb5a bl 80057b4 + 8006100: 0003 movs r3, r0 + 8006102: 3301 adds r3, #1 + 8006104: b2db uxtb r3, r3 + 8006106: 18db adds r3, r3, r3 + 8006108: b2db uxtb r3, r3 + 800610a: e000 b.n 800610e } else { return 255; } - 800612c: 23ff movs r3, #255 ; 0xff + 800610c: 23ff movs r3, #255 ; 0xff } - 800612e: 0018 movs r0, r3 - 8006130: 46bd mov sp, r7 - 8006132: b002 add sp, #8 - 8006134: bd80 pop {r7, pc} + 800610e: 0018 movs r0, r3 + 8006110: 46bd mov sp, r7 + 8006112: b002 add sp, #8 + 8006114: bd80 pop {r7, pc} ... -08006138 : +08006118 : // often as possible); otherwise, continuous timed mode is used, with the given // inter-measurement period in milliseconds determining how often the sensor // takes a measurement. // based on VL53L0X_StartMeasurement() void startContinuous(uint32_t period_ms) { - 8006138: b5b0 push {r4, r5, r7, lr} - 800613a: b084 sub sp, #16 - 800613c: af00 add r7, sp, #0 - 800613e: 6078 str r0, [r7, #4] + 8006118: b5b0 push {r4, r5, r7, lr} + 800611a: b084 sub sp, #16 + 800611c: af00 add r7, sp, #0 + 800611e: 6078 str r0, [r7, #4] writeReg(0x80, 0x01); - 8006140: 2101 movs r1, #1 - 8006142: 2080 movs r0, #128 ; 0x80 - 8006144: f7ff fac0 bl 80056c8 + 8006120: 2101 movs r1, #1 + 8006122: 2080 movs r0, #128 ; 0x80 + 8006124: f7ff fac0 bl 80056a8 writeReg(0xFF, 0x01); - 8006148: 2101 movs r1, #1 - 800614a: 20ff movs r0, #255 ; 0xff - 800614c: f7ff fabc bl 80056c8 + 8006128: 2101 movs r1, #1 + 800612a: 20ff movs r0, #255 ; 0xff + 800612c: f7ff fabc bl 80056a8 writeReg(0x00, 0x00); - 8006150: 2100 movs r1, #0 - 8006152: 2000 movs r0, #0 - 8006154: f7ff fab8 bl 80056c8 + 8006130: 2100 movs r1, #0 + 8006132: 2000 movs r0, #0 + 8006134: f7ff fab8 bl 80056a8 writeReg(0x91, g_stopVariable); - 8006158: 4b1b ldr r3, [pc, #108] ; (80061c8 ) - 800615a: 781b ldrb r3, [r3, #0] - 800615c: 0019 movs r1, r3 - 800615e: 2091 movs r0, #145 ; 0x91 - 8006160: f7ff fab2 bl 80056c8 + 8006138: 4b1b ldr r3, [pc, #108] ; (80061a8 ) + 800613a: 781b ldrb r3, [r3, #0] + 800613c: 0019 movs r1, r3 + 800613e: 2091 movs r0, #145 ; 0x91 + 8006140: f7ff fab2 bl 80056a8 writeReg(0x00, 0x01); - 8006164: 2101 movs r1, #1 - 8006166: 2000 movs r0, #0 - 8006168: f7ff faae bl 80056c8 + 8006144: 2101 movs r1, #1 + 8006146: 2000 movs r0, #0 + 8006148: f7ff faae bl 80056a8 writeReg(0xFF, 0x00); - 800616c: 2100 movs r1, #0 - 800616e: 20ff movs r0, #255 ; 0xff - 8006170: f7ff faaa bl 80056c8 + 800614c: 2100 movs r1, #0 + 800614e: 20ff movs r0, #255 ; 0xff + 8006150: f7ff faaa bl 80056a8 writeReg(0x80, 0x00); - 8006174: 2100 movs r1, #0 - 8006176: 2080 movs r0, #128 ; 0x80 - 8006178: f7ff faa6 bl 80056c8 + 8006154: 2100 movs r1, #0 + 8006156: 2080 movs r0, #128 ; 0x80 + 8006158: f7ff faa6 bl 80056a8 if (period_ms != 0) - 800617c: 687b ldr r3, [r7, #4] - 800617e: 2b00 cmp r3, #0 - 8006180: d019 beq.n 80061b6 + 800615c: 687b ldr r3, [r7, #4] + 800615e: 2b00 cmp r3, #0 + 8006160: d019 beq.n 8006196 { // continuous timed mode // VL53L0X_SetInterMeasurementPeriodMilliSeconds() begin uint16_t osc_calibrate_val = readReg16Bit(OSC_CALIBRATE_VAL); - 8006182: 250e movs r5, #14 - 8006184: 197c adds r4, r7, r5 - 8006186: 20f8 movs r0, #248 ; 0xf8 - 8006188: f7ff fb46 bl 8005818 - 800618c: 0003 movs r3, r0 - 800618e: 8023 strh r3, [r4, #0] + 8006162: 250e movs r5, #14 + 8006164: 197c adds r4, r7, r5 + 8006166: 20f8 movs r0, #248 ; 0xf8 + 8006168: f7ff fb46 bl 80057f8 + 800616c: 0003 movs r3, r0 + 800616e: 8023 strh r3, [r4, #0] if (osc_calibrate_val != 0) - 8006190: 197b adds r3, r7, r5 - 8006192: 881b ldrh r3, [r3, #0] - 8006194: 2b00 cmp r3, #0 - 8006196: d004 beq.n 80061a2 + 8006170: 197b adds r3, r7, r5 + 8006172: 881b ldrh r3, [r3, #0] + 8006174: 2b00 cmp r3, #0 + 8006176: d004 beq.n 8006182 { period_ms *= osc_calibrate_val; - 8006198: 197b adds r3, r7, r5 - 800619a: 881a ldrh r2, [r3, #0] - 800619c: 687b ldr r3, [r7, #4] - 800619e: 4353 muls r3, r2 - 80061a0: 607b str r3, [r7, #4] + 8006178: 197b adds r3, r7, r5 + 800617a: 881a ldrh r2, [r3, #0] + 800617c: 687b ldr r3, [r7, #4] + 800617e: 4353 muls r3, r2 + 8006180: 607b str r3, [r7, #4] } writeReg32Bit(SYSTEM_INTERMEASUREMENT_PERIOD, period_ms); - 80061a2: 687b ldr r3, [r7, #4] - 80061a4: 0019 movs r1, r3 - 80061a6: 2004 movs r0, #4 - 80061a8: f7ff fae0 bl 800576c + 8006182: 687b ldr r3, [r7, #4] + 8006184: 0019 movs r1, r3 + 8006186: 2004 movs r0, #4 + 8006188: f7ff fae0 bl 800574c // VL53L0X_SetInterMeasurementPeriodMilliSeconds() end writeReg(SYSRANGE_START, 0x04); // VL53L0X_REG_SYSRANGE_MODE_TIMED - 80061ac: 2104 movs r1, #4 - 80061ae: 2000 movs r0, #0 - 80061b0: f7ff fa8a bl 80056c8 + 800618c: 2104 movs r1, #4 + 800618e: 2000 movs r0, #0 + 8006190: f7ff fa8a bl 80056a8 else { // continuous back-to-back mode writeReg(SYSRANGE_START, 0x02); // VL53L0X_REG_SYSRANGE_MODE_BACKTOBACK } } - 80061b4: e003 b.n 80061be + 8006194: e003 b.n 800619e writeReg(SYSRANGE_START, 0x02); // VL53L0X_REG_SYSRANGE_MODE_BACKTOBACK - 80061b6: 2102 movs r1, #2 - 80061b8: 2000 movs r0, #0 - 80061ba: f7ff fa85 bl 80056c8 + 8006196: 2102 movs r1, #2 + 8006198: 2000 movs r0, #0 + 800619a: f7ff fa85 bl 80056a8 } - 80061be: 46c0 nop ; (mov r8, r8) - 80061c0: 46bd mov sp, r7 - 80061c2: b004 add sp, #16 - 80061c4: bdb0 pop {r4, r5, r7, pc} - 80061c6: 46c0 nop ; (mov r8, r8) - 80061c8: 2000025e .word 0x2000025e + 800619e: 46c0 nop ; (mov r8, r8) + 80061a0: 46bd mov sp, r7 + 80061a2: b004 add sp, #16 + 80061a4: bdb0 pop {r4, r5, r7, pc} + 80061a6: 46c0 nop ; (mov r8, r8) + 80061a8: 2000025e .word 0x2000025e -080061cc : +080061ac : // Returns a range reading in millimeters when continuous mode is active // (readRangeSingleMillimeters() also calls this function after starting a // single-shot range measurement) // extraStats provides additional info for this measurment. Set to 0 if not needed. uint16_t readRangeContinuousMillimeters( statInfo_t *extraStats ) { - 80061cc: b590 push {r4, r7, lr} - 80061ce: b087 sub sp, #28 - 80061d0: af00 add r7, sp, #0 - 80061d2: 6078 str r0, [r7, #4] + 80061ac: b590 push {r4, r7, lr} + 80061ae: b087 sub sp, #28 + 80061b0: af00 add r7, sp, #0 + 80061b2: 6078 str r0, [r7, #4] uint8_t tempBuffer[12]; uint16_t temp; startTimeout(); - 80061d4: f7fb fdda bl 8001d8c - 80061d8: 0003 movs r3, r0 - 80061da: b29a uxth r2, r3 - 80061dc: 4b3b ldr r3, [pc, #236] ; (80062cc ) - 80061de: 801a strh r2, [r3, #0] + 80061b4: f7fb fdda bl 8001d6c + 80061b8: 0003 movs r3, r0 + 80061ba: b29a uxth r2, r3 + 80061bc: 4b3b ldr r3, [pc, #236] ; (80062ac ) + 80061be: 801a strh r2, [r3, #0] while ((readReg(RESULT_INTERRUPT_STATUS) & 0x07) == 0) { - 80061e0: e014 b.n 800620c + 80061c0: e014 b.n 80061ec if (checkTimeoutExpired()) - 80061e2: 4b3b ldr r3, [pc, #236] ; (80062d0 ) - 80061e4: 881b ldrh r3, [r3, #0] - 80061e6: 2b00 cmp r3, #0 - 80061e8: d010 beq.n 800620c - 80061ea: f7fb fdcf bl 8001d8c - 80061ee: 0003 movs r3, r0 - 80061f0: b29b uxth r3, r3 - 80061f2: 001a movs r2, r3 - 80061f4: 4b35 ldr r3, [pc, #212] ; (80062cc ) - 80061f6: 881b ldrh r3, [r3, #0] - 80061f8: 1ad3 subs r3, r2, r3 - 80061fa: 4a35 ldr r2, [pc, #212] ; (80062d0 ) - 80061fc: 8812 ldrh r2, [r2, #0] - 80061fe: 4293 cmp r3, r2 - 8006200: dd04 ble.n 800620c + 80061c2: 4b3b ldr r3, [pc, #236] ; (80062b0 ) + 80061c4: 881b ldrh r3, [r3, #0] + 80061c6: 2b00 cmp r3, #0 + 80061c8: d010 beq.n 80061ec + 80061ca: f7fb fdcf bl 8001d6c + 80061ce: 0003 movs r3, r0 + 80061d0: b29b uxth r3, r3 + 80061d2: 001a movs r2, r3 + 80061d4: 4b35 ldr r3, [pc, #212] ; (80062ac ) + 80061d6: 881b ldrh r3, [r3, #0] + 80061d8: 1ad3 subs r3, r2, r3 + 80061da: 4a35 ldr r2, [pc, #212] ; (80062b0 ) + 80061dc: 8812 ldrh r2, [r2, #0] + 80061de: 4293 cmp r3, r2 + 80061e0: dd04 ble.n 80061ec { g_isTimeout = true; - 8006202: 4b34 ldr r3, [pc, #208] ; (80062d4 ) - 8006204: 2201 movs r2, #1 - 8006206: 701a strb r2, [r3, #0] + 80061e2: 4b34 ldr r3, [pc, #208] ; (80062b4 ) + 80061e4: 2201 movs r2, #1 + 80061e6: 701a strb r2, [r3, #0] return 65535; - 8006208: 4b33 ldr r3, [pc, #204] ; (80062d8 ) - 800620a: e05b b.n 80062c4 + 80061e8: 4b33 ldr r3, [pc, #204] ; (80062b8 ) + 80061ea: e05b b.n 80062a4 while ((readReg(RESULT_INTERRUPT_STATUS) & 0x07) == 0) { - 800620c: 2013 movs r0, #19 - 800620e: f7ff fae1 bl 80057d4 - 8006212: 0003 movs r3, r0 - 8006214: 001a movs r2, r3 - 8006216: 2307 movs r3, #7 - 8006218: 4013 ands r3, r2 - 800621a: d0e2 beq.n 80061e2 + 80061ec: 2013 movs r0, #19 + 80061ee: f7ff fae1 bl 80057b4 + 80061f2: 0003 movs r3, r0 + 80061f4: 001a movs r2, r3 + 80061f6: 2307 movs r3, #7 + 80061f8: 4013 ands r3, r2 + 80061fa: d0e2 beq.n 80061c2 } } if( extraStats == 0 ){ - 800621c: 687b ldr r3, [r7, #4] - 800621e: 2b00 cmp r3, #0 - 8006220: d107 bne.n 8006232 + 80061fc: 687b ldr r3, [r7, #4] + 80061fe: 2b00 cmp r3, #0 + 8006200: d107 bne.n 8006212 // assumptions: Linearity Corrective Gain is 1000 (default); // fractional ranging is not enabled temp = readReg16Bit(RESULT_RANGE_STATUS + 10); - 8006222: 2316 movs r3, #22 - 8006224: 18fc adds r4, r7, r3 - 8006226: 201e movs r0, #30 - 8006228: f7ff faf6 bl 8005818 - 800622c: 0003 movs r3, r0 - 800622e: 8023 strh r3, [r4, #0] - 8006230: e041 b.n 80062b6 + 8006202: 2316 movs r3, #22 + 8006204: 18fc adds r4, r7, r3 + 8006206: 201e movs r0, #30 + 8006208: f7ff faf6 bl 80057f8 + 800620c: 0003 movs r3, r0 + 800620e: 8023 strh r3, [r4, #0] + 8006210: e041 b.n 8006296 // 4: 0 ? // 5: ??? // 6,7: signal count rate [mcps], uint16_t, fixpoint9.7 // 9,8: AmbientRateRtnMegaCps [mcps], uint16_t, fixpoimt9.7 // A,B: uncorrected distance [mm], uint16_t readMulti(0x14, tempBuffer, 12); - 8006232: 2408 movs r4, #8 - 8006234: 193b adds r3, r7, r4 - 8006236: 220c movs r2, #12 - 8006238: 0019 movs r1, r3 - 800623a: 2014 movs r0, #20 - 800623c: f7ff fb46 bl 80058cc + 8006212: 2408 movs r4, #8 + 8006214: 193b adds r3, r7, r4 + 8006216: 220c movs r2, #12 + 8006218: 0019 movs r1, r3 + 800621a: 2014 movs r0, #20 + 800621c: f7ff fb46 bl 80058ac extraStats->rangeStatus = tempBuffer[0x00]>>3; - 8006240: 0021 movs r1, r4 - 8006242: 187b adds r3, r7, r1 - 8006244: 781b ldrb r3, [r3, #0] - 8006246: 08db lsrs r3, r3, #3 - 8006248: b2da uxtb r2, r3 - 800624a: 687b ldr r3, [r7, #4] - 800624c: 721a strb r2, [r3, #8] + 8006220: 0021 movs r1, r4 + 8006222: 187b adds r3, r7, r1 + 8006224: 781b ldrb r3, [r3, #0] + 8006226: 08db lsrs r3, r3, #3 + 8006228: b2da uxtb r2, r3 + 800622a: 687b ldr r3, [r7, #4] + 800622c: 721a strb r2, [r3, #8] extraStats->spadCnt = (tempBuffer[0x02]<<8) | tempBuffer[0x03]; - 800624e: 187b adds r3, r7, r1 - 8006250: 789b ldrb r3, [r3, #2] - 8006252: 021b lsls r3, r3, #8 - 8006254: b21a sxth r2, r3 - 8006256: 187b adds r3, r7, r1 - 8006258: 78db ldrb r3, [r3, #3] - 800625a: b21b sxth r3, r3 - 800625c: 4313 orrs r3, r2 - 800625e: b21b sxth r3, r3 - 8006260: b29a uxth r2, r3 - 8006262: 687b ldr r3, [r7, #4] - 8006264: 80da strh r2, [r3, #6] + 800622e: 187b adds r3, r7, r1 + 8006230: 789b ldrb r3, [r3, #2] + 8006232: 021b lsls r3, r3, #8 + 8006234: b21a sxth r2, r3 + 8006236: 187b adds r3, r7, r1 + 8006238: 78db ldrb r3, [r3, #3] + 800623a: b21b sxth r3, r3 + 800623c: 4313 orrs r3, r2 + 800623e: b21b sxth r3, r3 + 8006240: b29a uxth r2, r3 + 8006242: 687b ldr r3, [r7, #4] + 8006244: 80da strh r2, [r3, #6] extraStats->signalCnt = (tempBuffer[0x06]<<8) | tempBuffer[0x07]; - 8006266: 187b adds r3, r7, r1 - 8006268: 799b ldrb r3, [r3, #6] - 800626a: 021b lsls r3, r3, #8 - 800626c: b21a sxth r2, r3 - 800626e: 187b adds r3, r7, r1 - 8006270: 79db ldrb r3, [r3, #7] - 8006272: b21b sxth r3, r3 - 8006274: 4313 orrs r3, r2 - 8006276: b21b sxth r3, r3 - 8006278: b29a uxth r2, r3 - 800627a: 687b ldr r3, [r7, #4] - 800627c: 805a strh r2, [r3, #2] + 8006246: 187b adds r3, r7, r1 + 8006248: 799b ldrb r3, [r3, #6] + 800624a: 021b lsls r3, r3, #8 + 800624c: b21a sxth r2, r3 + 800624e: 187b adds r3, r7, r1 + 8006250: 79db ldrb r3, [r3, #7] + 8006252: b21b sxth r3, r3 + 8006254: 4313 orrs r3, r2 + 8006256: b21b sxth r3, r3 + 8006258: b29a uxth r2, r3 + 800625a: 687b ldr r3, [r7, #4] + 800625c: 805a strh r2, [r3, #2] extraStats->ambientCnt = (tempBuffer[0x08]<<8) | tempBuffer[0x09]; - 800627e: 187b adds r3, r7, r1 - 8006280: 7a1b ldrb r3, [r3, #8] - 8006282: 021b lsls r3, r3, #8 - 8006284: b21a sxth r2, r3 - 8006286: 187b adds r3, r7, r1 - 8006288: 7a5b ldrb r3, [r3, #9] - 800628a: b21b sxth r3, r3 - 800628c: 4313 orrs r3, r2 - 800628e: b21b sxth r3, r3 - 8006290: b29a uxth r2, r3 - 8006292: 687b ldr r3, [r7, #4] - 8006294: 809a strh r2, [r3, #4] + 800625e: 187b adds r3, r7, r1 + 8006260: 7a1b ldrb r3, [r3, #8] + 8006262: 021b lsls r3, r3, #8 + 8006264: b21a sxth r2, r3 + 8006266: 187b adds r3, r7, r1 + 8006268: 7a5b ldrb r3, [r3, #9] + 800626a: b21b sxth r3, r3 + 800626c: 4313 orrs r3, r2 + 800626e: b21b sxth r3, r3 + 8006270: b29a uxth r2, r3 + 8006272: 687b ldr r3, [r7, #4] + 8006274: 809a strh r2, [r3, #4] temp = (tempBuffer[0x0A]<<8) | tempBuffer[0x0B]; - 8006296: 187b adds r3, r7, r1 - 8006298: 7a9b ldrb r3, [r3, #10] - 800629a: 021b lsls r3, r3, #8 - 800629c: b21a sxth r2, r3 - 800629e: 187b adds r3, r7, r1 - 80062a0: 7adb ldrb r3, [r3, #11] - 80062a2: b21b sxth r3, r3 - 80062a4: 4313 orrs r3, r2 - 80062a6: b21a sxth r2, r3 - 80062a8: 2116 movs r1, #22 - 80062aa: 187b adds r3, r7, r1 - 80062ac: 801a strh r2, [r3, #0] + 8006276: 187b adds r3, r7, r1 + 8006278: 7a9b ldrb r3, [r3, #10] + 800627a: 021b lsls r3, r3, #8 + 800627c: b21a sxth r2, r3 + 800627e: 187b adds r3, r7, r1 + 8006280: 7adb ldrb r3, [r3, #11] + 8006282: b21b sxth r3, r3 + 8006284: 4313 orrs r3, r2 + 8006286: b21a sxth r2, r3 + 8006288: 2116 movs r1, #22 + 800628a: 187b adds r3, r7, r1 + 800628c: 801a strh r2, [r3, #0] extraStats->rawDistance = temp; - 80062ae: 687b ldr r3, [r7, #4] - 80062b0: 187a adds r2, r7, r1 - 80062b2: 8812 ldrh r2, [r2, #0] - 80062b4: 801a strh r2, [r3, #0] + 800628e: 687b ldr r3, [r7, #4] + 8006290: 187a adds r2, r7, r1 + 8006292: 8812 ldrh r2, [r2, #0] + 8006294: 801a strh r2, [r3, #0] } writeReg(SYSTEM_INTERRUPT_CLEAR, 0x01); - 80062b6: 2101 movs r1, #1 - 80062b8: 200b movs r0, #11 - 80062ba: f7ff fa05 bl 80056c8 + 8006296: 2101 movs r1, #1 + 8006298: 200b movs r0, #11 + 800629a: f7ff fa05 bl 80056a8 return temp; - 80062be: 2316 movs r3, #22 - 80062c0: 18fb adds r3, r7, r3 - 80062c2: 881b ldrh r3, [r3, #0] + 800629e: 2316 movs r3, #22 + 80062a0: 18fb adds r3, r7, r3 + 80062a2: 881b ldrh r3, [r3, #0] } - 80062c4: 0018 movs r0, r3 - 80062c6: 46bd mov sp, r7 - 80062c8: b007 add sp, #28 - 80062ca: bd90 pop {r4, r7, pc} - 80062cc: 2000025c .word 0x2000025c - 80062d0: 20000258 .word 0x20000258 - 80062d4: 2000025a .word 0x2000025a - 80062d8: 0000ffff .word 0x0000ffff + 80062a4: 0018 movs r0, r3 + 80062a6: 46bd mov sp, r7 + 80062a8: b007 add sp, #28 + 80062aa: bd90 pop {r4, r7, pc} + 80062ac: 2000025c .word 0x2000025c + 80062b0: 20000258 .word 0x20000258 + 80062b4: 2000025a .word 0x2000025a + 80062b8: 0000ffff .word 0x0000ffff + +080062bc : + bool tmp = g_isTimeout; + g_isTimeout = false; + return tmp; +} + +void setTimeout(uint16_t timeout){ + 80062bc: b580 push {r7, lr} + 80062be: b082 sub sp, #8 + 80062c0: af00 add r7, sp, #0 + 80062c2: 0002 movs r2, r0 + 80062c4: 1dbb adds r3, r7, #6 + 80062c6: 801a strh r2, [r3, #0] + g_ioTimeout = timeout; + 80062c8: 4b03 ldr r3, [pc, #12] ; (80062d8 ) + 80062ca: 1dba adds r2, r7, #6 + 80062cc: 8812 ldrh r2, [r2, #0] + 80062ce: 801a strh r2, [r3, #0] +} + 80062d0: 46c0 nop ; (mov r8, r8) + 80062d2: 46bd mov sp, r7 + 80062d4: b002 add sp, #8 + 80062d6: bd80 pop {r7, pc} + 80062d8: 20000258 .word 0x20000258 080062dc : @@ -17368,23 +17384,23 @@ bool getSpadInfo(uint8_t * count, bool * type_is_aperture) writeReg(0x80, 0x01); 80062e6: 2101 movs r1, #1 80062e8: 2080 movs r0, #128 ; 0x80 - 80062ea: f7ff f9ed bl 80056c8 + 80062ea: f7ff f9dd bl 80056a8 writeReg(0xFF, 0x01); 80062ee: 2101 movs r1, #1 80062f0: 20ff movs r0, #255 ; 0xff - 80062f2: f7ff f9e9 bl 80056c8 + 80062f2: f7ff f9d9 bl 80056a8 writeReg(0x00, 0x00); 80062f6: 2100 movs r1, #0 80062f8: 2000 movs r0, #0 - 80062fa: f7ff f9e5 bl 80056c8 + 80062fa: f7ff f9d5 bl 80056a8 writeReg(0xFF, 0x06); 80062fe: 2106 movs r1, #6 8006300: 20ff movs r0, #255 ; 0xff - 8006302: f7ff f9e1 bl 80056c8 + 8006302: f7ff f9d1 bl 80056a8 writeReg(0x83, readReg(0x83) | 0x04); 8006306: 2083 movs r0, #131 ; 0x83 - 8006308: f7ff fa64 bl 80057d4 + 8006308: f7ff fa54 bl 80057b4 800630c: 0003 movs r3, r0 800630e: 001a movs r2, r3 8006310: 2304 movs r3, #4 @@ -17392,31 +17408,31 @@ bool getSpadInfo(uint8_t * count, bool * type_is_aperture) 8006314: b2db uxtb r3, r3 8006316: 0019 movs r1, r3 8006318: 2083 movs r0, #131 ; 0x83 - 800631a: f7ff f9d5 bl 80056c8 + 800631a: f7ff f9c5 bl 80056a8 writeReg(0xFF, 0x07); 800631e: 2107 movs r1, #7 8006320: 20ff movs r0, #255 ; 0xff - 8006322: f7ff f9d1 bl 80056c8 + 8006322: f7ff f9c1 bl 80056a8 writeReg(0x81, 0x01); 8006326: 2101 movs r1, #1 8006328: 2081 movs r0, #129 ; 0x81 - 800632a: f7ff f9cd bl 80056c8 + 800632a: f7ff f9bd bl 80056a8 writeReg(0x80, 0x01); 800632e: 2101 movs r1, #1 8006330: 2080 movs r0, #128 ; 0x80 - 8006332: f7ff f9c9 bl 80056c8 + 8006332: f7ff f9b9 bl 80056a8 writeReg(0x94, 0x6b); 8006336: 216b movs r1, #107 ; 0x6b 8006338: 2094 movs r0, #148 ; 0x94 - 800633a: f7ff f9c5 bl 80056c8 + 800633a: f7ff f9b5 bl 80056a8 writeReg(0x83, 0x00); 800633e: 2100 movs r1, #0 8006340: 2083 movs r0, #131 ; 0x83 - 8006342: f7ff f9c1 bl 80056c8 + 8006342: f7ff f9b1 bl 80056a8 startTimeout(); - 8006346: f7fb fd21 bl 8001d8c + 8006346: f7fb fd11 bl 8001d6c 800634a: 0003 movs r3, r0 800634c: b29a uxth r2, r3 800634e: 4b2e ldr r3, [pc, #184] ; (8006408 ) @@ -17429,7 +17445,7 @@ bool getSpadInfo(uint8_t * count, bool * type_is_aperture) 8006356: 881b ldrh r3, [r3, #0] 8006358: 2b00 cmp r3, #0 800635a: d00d beq.n 8006378 - 800635c: f7fb fd16 bl 8001d8c + 800635c: f7fb fd06 bl 8001d6c 8006360: 0003 movs r3, r0 8006362: b29b uxth r3, r3 8006364: 001a movs r2, r3 @@ -17444,19 +17460,19 @@ bool getSpadInfo(uint8_t * count, bool * type_is_aperture) 8006376: e043 b.n 8006400 while (readReg(0x83) == 0x00) 8006378: 2083 movs r0, #131 ; 0x83 - 800637a: f7ff fa2b bl 80057d4 + 800637a: f7ff fa1b bl 80057b4 800637e: 1e03 subs r3, r0, #0 8006380: d0e8 beq.n 8006354 } writeReg(0x83, 0x01); 8006382: 2101 movs r1, #1 8006384: 2083 movs r0, #131 ; 0x83 - 8006386: f7ff f99f bl 80056c8 + 8006386: f7ff f98f bl 80056a8 tmp = readReg(0x92); 800638a: 250f movs r5, #15 800638c: 197c adds r4, r7, r5 800638e: 2092 movs r0, #146 ; 0x92 - 8006390: f7ff fa20 bl 80057d4 + 8006390: f7ff fa10 bl 80057b4 8006394: 0003 movs r3, r0 8006396: 7023 strb r3, [r4, #0] @@ -17480,14 +17496,14 @@ bool getSpadInfo(uint8_t * count, bool * type_is_aperture) writeReg(0x81, 0x00); 80063b4: 2100 movs r1, #0 80063b6: 2081 movs r0, #129 ; 0x81 - 80063b8: f7ff f986 bl 80056c8 + 80063b8: f7ff f976 bl 80056a8 writeReg(0xFF, 0x06); 80063bc: 2106 movs r1, #6 80063be: 20ff movs r0, #255 ; 0xff - 80063c0: f7ff f982 bl 80056c8 + 80063c0: f7ff f972 bl 80056a8 writeReg(0x83, readReg(0x83) & ~0x04); 80063c4: 2083 movs r0, #131 ; 0x83 - 80063c6: f7ff fa05 bl 80057d4 + 80063c6: f7ff f9f5 bl 80057b4 80063ca: 0003 movs r3, r0 80063cc: 001a movs r2, r3 80063ce: 2304 movs r3, #4 @@ -17496,24 +17512,24 @@ bool getSpadInfo(uint8_t * count, bool * type_is_aperture) 80063d4: b2db uxtb r3, r3 80063d6: 0019 movs r1, r3 80063d8: 2083 movs r0, #131 ; 0x83 - 80063da: f7ff f975 bl 80056c8 + 80063da: f7ff f965 bl 80056a8 writeReg(0xFF, 0x01); 80063de: 2101 movs r1, #1 80063e0: 20ff movs r0, #255 ; 0xff - 80063e2: f7ff f971 bl 80056c8 + 80063e2: f7ff f961 bl 80056a8 writeReg(0x00, 0x01); 80063e6: 2101 movs r1, #1 80063e8: 2000 movs r0, #0 - 80063ea: f7ff f96d bl 80056c8 + 80063ea: f7ff f95d bl 80056a8 writeReg(0xFF, 0x00); 80063ee: 2100 movs r1, #0 80063f0: 20ff movs r0, #255 ; 0xff - 80063f2: f7ff f969 bl 80056c8 + 80063f2: f7ff f959 bl 80056a8 writeReg(0x80, 0x00); 80063f6: 2100 movs r1, #0 80063f8: 2080 movs r0, #128 ; 0x80 - 80063fa: f7ff f965 bl 80056c8 + 80063fa: f7ff f955 bl 80056a8 return true; 80063fe: 2301 movs r3, #1 @@ -17539,7 +17555,7 @@ void getSequenceStepEnables(SequenceStepEnables * enables) 8006418: 250f movs r5, #15 800641a: 197c adds r4, r7, r5 800641c: 2001 movs r0, #1 - 800641e: f7ff f9d9 bl 80057d4 + 800641e: f7ff f9c9 bl 80057b4 8006422: 0003 movs r3, r0 8006424: 7023 strb r3, [r4, #0] @@ -17611,7 +17627,7 @@ void getSequenceStepTimeouts(SequenceStepEnables const * enables, SequenceStepTi 800648c: 6039 str r1, [r7, #0] timeouts->pre_range_vcsel_period_pclks = getVcselPulsePeriod(VcselPeriodPreRange); 800648e: 2000 movs r0, #0 - 8006490: f7ff fe2c bl 80060ec + 8006490: f7ff fe1c bl 80060cc 8006494: 0003 movs r3, r0 8006496: b29a uxth r2, r3 8006498: 683b ldr r3, [r7, #0] @@ -17619,7 +17635,7 @@ void getSequenceStepTimeouts(SequenceStepEnables const * enables, SequenceStepTi timeouts->msrc_dss_tcc_mclks = readReg(MSRC_CONFIG_TIMEOUT_MACROP) + 1; 800649c: 2046 movs r0, #70 ; 0x46 - 800649e: f7ff f999 bl 80057d4 + 800649e: f7ff f989 bl 80057b4 80064a2: 0003 movs r3, r0 80064a4: b29b uxth r3, r3 80064a6: 3301 adds r3, #1 @@ -17646,7 +17662,7 @@ void getSequenceStepTimeouts(SequenceStepEnables const * enables, SequenceStepTi timeouts->pre_range_mclks = decodeTimeout(readReg16Bit(PRE_RANGE_CONFIG_TIMEOUT_MACROP_HI)); 80064c6: 2051 movs r0, #81 ; 0x51 - 80064c8: f7ff f9a6 bl 8005818 + 80064c8: f7ff f996 bl 80057f8 80064cc: 0003 movs r3, r0 80064ce: 0018 movs r0, r3 80064d0: f000 f83e bl 8006550 @@ -17674,7 +17690,7 @@ void getSequenceStepTimeouts(SequenceStepEnables const * enables, SequenceStepTi timeouts->final_range_vcsel_period_pclks = getVcselPulsePeriod(VcselPeriodFinalRange); 80064f4: 2001 movs r0, #1 - 80064f6: f7ff fdf9 bl 80060ec + 80064f6: f7ff fde9 bl 80060cc 80064fa: 0003 movs r3, r0 80064fc: b29a uxth r2, r3 80064fe: 683b ldr r3, [r7, #0] @@ -17683,7 +17699,7 @@ void getSequenceStepTimeouts(SequenceStepEnables const * enables, SequenceStepTi timeouts->final_range_mclks = decodeTimeout(readReg16Bit(FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI)); 8006502: 2071 movs r0, #113 ; 0x71 - 8006504: f7ff f988 bl 8005818 + 8006504: f7ff f978 bl 80057f8 8006508: 0003 movs r3, r0 800650a: 0018 movs r0, r3 800650c: f000 f820 bl 8006550 @@ -17982,10 +17998,10 @@ bool performSingleRefCalibration(uint8_t vhv_init_byte) 80066b8: b2db uxtb r3, r3 80066ba: 0019 movs r1, r3 80066bc: 2000 movs r0, #0 - 80066be: f7ff f803 bl 80056c8 + 80066be: f7fe fff3 bl 80056a8 startTimeout(); - 80066c2: f7fb fb63 bl 8001d8c + 80066c2: f7fb fb53 bl 8001d6c 80066c6: 0003 movs r3, r0 80066c8: b29a uxth r2, r3 80066ca: 4b15 ldr r3, [pc, #84] ; (8006720 ) @@ -17998,7 +18014,7 @@ bool performSingleRefCalibration(uint8_t vhv_init_byte) 80066d2: 881b ldrh r3, [r3, #0] 80066d4: 2b00 cmp r3, #0 80066d6: d00d beq.n 80066f4 - 80066d8: f7fb fb58 bl 8001d8c + 80066d8: f7fb fb48 bl 8001d6c 80066dc: 0003 movs r3, r0 80066de: b29b uxth r3, r3 80066e0: 001a movs r2, r3 @@ -18013,7 +18029,7 @@ bool performSingleRefCalibration(uint8_t vhv_init_byte) 80066f2: e010 b.n 8006716 while ((readReg(RESULT_INTERRUPT_STATUS) & 0x07) == 0) 80066f4: 2013 movs r0, #19 - 80066f6: f7ff f86d bl 80057d4 + 80066f6: f7ff f85d bl 80057b4 80066fa: 0003 movs r3, r0 80066fc: 001a movs r2, r3 80066fe: 2307 movs r3, #7 @@ -18024,12 +18040,12 @@ bool performSingleRefCalibration(uint8_t vhv_init_byte) writeReg(SYSTEM_INTERRUPT_CLEAR, 0x01); 8006704: 2101 movs r1, #1 8006706: 200b movs r0, #11 - 8006708: f7fe ffde bl 80056c8 + 8006708: f7fe ffce bl 80056a8 writeReg(SYSRANGE_START, 0x00); 800670c: 2100 movs r1, #0 800670e: 2000 movs r0, #0 - 8006710: f7fe ffda bl 80056c8 + 8006710: f7fe ffca bl 80056a8 return true; 8006714: 2301 movs r3, #1 diff --git a/firmware/Debug/DiLight.map b/firmware/Debug/DiLight.map index 9e99652..11b2037 100644 --- a/firmware/Debug/DiLight.map +++ b/firmware/Debug/DiLight.map @@ -3281,8 +3281,6 @@ Discarded input sections 0x0000000000000000 0xbc ./Drivers/vl53l0x/VL53L0X.o .text.timeoutOccurred 0x0000000000000000 0x24 ./Drivers/vl53l0x/VL53L0X.o - .text.setTimeout - 0x0000000000000000 0x20 ./Drivers/vl53l0x/VL53L0X.o .text.getTimeout 0x0000000000000000 0x14 ./Drivers/vl53l0x/VL53L0X.o .debug_macro 0x0000000000000000 0xa4e ./Drivers/vl53l0x/VL53L0X.o @@ -3561,363 +3559,369 @@ LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.exte .text.saveConfig 0x0000000008000fc0 0x104 ./Core/Src/main.o 0x0000000008000fc0 saveConfig + .text.fastBlink + 0x00000000080010c4 0x58 ./Core/Src/main.o + 0x00000000080010c4 fastBlink .text.configure - 0x00000000080010c4 0x184 ./Core/Src/main.o - 0x00000000080010c4 configure - .text.main 0x0000000008001248 0x74 ./Core/Src/main.o - 0x0000000008001248 main + 0x000000000800111c 0xec ./Core/Src/main.o + 0x000000000800111c configure + .text.main 0x0000000008001208 0x94 ./Core/Src/main.o + 0x0000000008001208 main .text.SystemClock_Config - 0x00000000080012bc 0xbc ./Core/Src/main.o - 0x00000000080012bc SystemClock_Config + 0x000000000800129c 0xbc ./Core/Src/main.o + 0x000000000800129c SystemClock_Config .text.MX_CRC_Init - 0x0000000008001378 0x48 ./Core/Src/main.o + 0x0000000008001358 0x48 ./Core/Src/main.o .text.MX_I2C1_Init - 0x00000000080013c0 0x80 ./Core/Src/main.o + 0x00000000080013a0 0x80 ./Core/Src/main.o .text.MX_TIM3_Init - 0x0000000008001440 0xfc ./Core/Src/main.o + 0x0000000008001420 0xfc ./Core/Src/main.o .text.MX_TIM16_Init - 0x000000000800153c 0x54 ./Core/Src/main.o + 0x000000000800151c 0x54 ./Core/Src/main.o .text.MX_TIM17_Init - 0x0000000008001590 0x54 ./Core/Src/main.o + 0x0000000008001570 0x54 ./Core/Src/main.o .text.MX_GPIO_Init - 0x00000000080015e4 0x104 ./Core/Src/main.o + 0x00000000080015c4 0x104 ./Core/Src/main.o .text.setLightLevel - 0x00000000080016e8 0x3c ./Core/Src/main.o - 0x00000000080016e8 setLightLevel + 0x00000000080016c8 0x3c ./Core/Src/main.o + 0x00000000080016c8 setLightLevel .text.HAL_GPIO_EXTI_Rising_Callback - 0x0000000008001724 0x34 ./Core/Src/main.o - 0x0000000008001724 HAL_GPIO_EXTI_Rising_Callback + 0x0000000008001704 0x34 ./Core/Src/main.o + 0x0000000008001704 HAL_GPIO_EXTI_Rising_Callback .text.HAL_GPIO_EXTI_Falling_Callback - 0x0000000008001758 0x134 ./Core/Src/main.o - 0x0000000008001758 HAL_GPIO_EXTI_Falling_Callback + 0x0000000008001738 0x134 ./Core/Src/main.o + 0x0000000008001738 HAL_GPIO_EXTI_Falling_Callback .text.HAL_TIM_PeriodElapsedCallback - 0x000000000800188c 0xa0 ./Core/Src/main.o - 0x000000000800188c HAL_TIM_PeriodElapsedCallback + 0x000000000800186c 0xa0 ./Core/Src/main.o + 0x000000000800186c HAL_TIM_PeriodElapsedCallback .text.Error_Handler - 0x000000000800192c 0xa ./Core/Src/main.o - 0x000000000800192c Error_Handler - *fill* 0x0000000008001936 0x2 + 0x000000000800190c 0xa ./Core/Src/main.o + 0x000000000800190c Error_Handler + *fill* 0x0000000008001916 0x2 .text.HAL_MspInit - 0x0000000008001938 0x48 ./Core/Src/stm32g0xx_hal_msp.o - 0x0000000008001938 HAL_MspInit + 0x0000000008001918 0x48 ./Core/Src/stm32g0xx_hal_msp.o + 0x0000000008001918 HAL_MspInit .text.HAL_CRC_MspInit - 0x0000000008001980 0x40 ./Core/Src/stm32g0xx_hal_msp.o - 0x0000000008001980 HAL_CRC_MspInit + 0x0000000008001960 0x40 ./Core/Src/stm32g0xx_hal_msp.o + 0x0000000008001960 HAL_CRC_MspInit .text.HAL_I2C_MspInit - 0x00000000080019c0 0xc4 ./Core/Src/stm32g0xx_hal_msp.o - 0x00000000080019c0 HAL_I2C_MspInit + 0x00000000080019a0 0xc4 ./Core/Src/stm32g0xx_hal_msp.o + 0x00000000080019a0 HAL_I2C_MspInit .text.HAL_TIM_Base_MspInit - 0x0000000008001a84 0xb4 ./Core/Src/stm32g0xx_hal_msp.o - 0x0000000008001a84 HAL_TIM_Base_MspInit + 0x0000000008001a64 0xb4 ./Core/Src/stm32g0xx_hal_msp.o + 0x0000000008001a64 HAL_TIM_Base_MspInit .text.HAL_TIM_MspPostInit - 0x0000000008001b38 0x7c ./Core/Src/stm32g0xx_hal_msp.o - 0x0000000008001b38 HAL_TIM_MspPostInit + 0x0000000008001b18 0x7c ./Core/Src/stm32g0xx_hal_msp.o + 0x0000000008001b18 HAL_TIM_MspPostInit .text.NMI_Handler - 0x0000000008001bb4 0x6 ./Core/Src/stm32g0xx_it.o - 0x0000000008001bb4 NMI_Handler + 0x0000000008001b94 0x6 ./Core/Src/stm32g0xx_it.o + 0x0000000008001b94 NMI_Handler .text.HardFault_Handler - 0x0000000008001bba 0x6 ./Core/Src/stm32g0xx_it.o - 0x0000000008001bba HardFault_Handler + 0x0000000008001b9a 0x6 ./Core/Src/stm32g0xx_it.o + 0x0000000008001b9a HardFault_Handler .text.SVC_Handler - 0x0000000008001bc0 0xa ./Core/Src/stm32g0xx_it.o - 0x0000000008001bc0 SVC_Handler + 0x0000000008001ba0 0xa ./Core/Src/stm32g0xx_it.o + 0x0000000008001ba0 SVC_Handler .text.PendSV_Handler - 0x0000000008001bca 0xa ./Core/Src/stm32g0xx_it.o - 0x0000000008001bca PendSV_Handler + 0x0000000008001baa 0xa ./Core/Src/stm32g0xx_it.o + 0x0000000008001baa PendSV_Handler .text.SysTick_Handler - 0x0000000008001bd4 0xe ./Core/Src/stm32g0xx_it.o - 0x0000000008001bd4 SysTick_Handler + 0x0000000008001bb4 0xe ./Core/Src/stm32g0xx_it.o + 0x0000000008001bb4 SysTick_Handler .text.EXTI0_1_IRQHandler - 0x0000000008001be2 0x10 ./Core/Src/stm32g0xx_it.o - 0x0000000008001be2 EXTI0_1_IRQHandler + 0x0000000008001bc2 0x10 ./Core/Src/stm32g0xx_it.o + 0x0000000008001bc2 EXTI0_1_IRQHandler .text.EXTI4_15_IRQHandler - 0x0000000008001bf2 0x10 ./Core/Src/stm32g0xx_it.o - 0x0000000008001bf2 EXTI4_15_IRQHandler - *fill* 0x0000000008001c02 0x2 + 0x0000000008001bd2 0x10 ./Core/Src/stm32g0xx_it.o + 0x0000000008001bd2 EXTI4_15_IRQHandler + *fill* 0x0000000008001be2 0x2 .text.TIM16_IRQHandler - 0x0000000008001c04 0x18 ./Core/Src/stm32g0xx_it.o - 0x0000000008001c04 TIM16_IRQHandler + 0x0000000008001be4 0x18 ./Core/Src/stm32g0xx_it.o + 0x0000000008001be4 TIM16_IRQHandler .text.TIM17_IRQHandler - 0x0000000008001c1c 0x18 ./Core/Src/stm32g0xx_it.o - 0x0000000008001c1c TIM17_IRQHandler + 0x0000000008001bfc 0x18 ./Core/Src/stm32g0xx_it.o + 0x0000000008001bfc TIM17_IRQHandler .text.SystemInit - 0x0000000008001c34 0xa ./Core/Src/system_stm32g0xx.o - 0x0000000008001c34 SystemInit - *fill* 0x0000000008001c3e 0x2 + 0x0000000008001c14 0xa ./Core/Src/system_stm32g0xx.o + 0x0000000008001c14 SystemInit + *fill* 0x0000000008001c1e 0x2 .text.Reset_Handler - 0x0000000008001c40 0x50 ./Core/Startup/startup_stm32g031g8ux.o - 0x0000000008001c40 Reset_Handler + 0x0000000008001c20 0x50 ./Core/Startup/startup_stm32g031g8ux.o + 0x0000000008001c20 Reset_Handler .text.Default_Handler - 0x0000000008001c90 0x2 ./Core/Startup/startup_stm32g031g8ux.o - 0x0000000008001c90 TIM1_CC_IRQHandler - 0x0000000008001c90 PVD_IRQHandler - 0x0000000008001c90 I2C1_IRQHandler - 0x0000000008001c90 LPTIM2_IRQHandler - 0x0000000008001c90 RTC_TAMP_IRQHandler - 0x0000000008001c90 SPI1_IRQHandler - 0x0000000008001c90 DMA1_Ch4_5_DMAMUX1_OVR_IRQHandler - 0x0000000008001c90 EXTI2_3_IRQHandler - 0x0000000008001c90 ADC1_IRQHandler - 0x0000000008001c90 I2C2_IRQHandler - 0x0000000008001c90 TIM3_IRQHandler - 0x0000000008001c90 RCC_IRQHandler - 0x0000000008001c90 DMA1_Channel1_IRQHandler - 0x0000000008001c90 Default_Handler - 0x0000000008001c90 TIM14_IRQHandler - 0x0000000008001c90 SPI2_IRQHandler - 0x0000000008001c90 WWDG_IRQHandler - 0x0000000008001c90 LPUART1_IRQHandler - 0x0000000008001c90 TIM2_IRQHandler - 0x0000000008001c90 DMA1_Channel2_3_IRQHandler - 0x0000000008001c90 USART2_IRQHandler - 0x0000000008001c90 FLASH_IRQHandler - 0x0000000008001c90 USART1_IRQHandler - 0x0000000008001c90 TIM1_BRK_UP_TRG_COM_IRQHandler - 0x0000000008001c90 LPTIM1_IRQHandler - *fill* 0x0000000008001c92 0x2 + 0x0000000008001c70 0x2 ./Core/Startup/startup_stm32g031g8ux.o + 0x0000000008001c70 TIM1_CC_IRQHandler + 0x0000000008001c70 PVD_IRQHandler + 0x0000000008001c70 I2C1_IRQHandler + 0x0000000008001c70 LPTIM2_IRQHandler + 0x0000000008001c70 RTC_TAMP_IRQHandler + 0x0000000008001c70 SPI1_IRQHandler + 0x0000000008001c70 DMA1_Ch4_5_DMAMUX1_OVR_IRQHandler + 0x0000000008001c70 EXTI2_3_IRQHandler + 0x0000000008001c70 ADC1_IRQHandler + 0x0000000008001c70 I2C2_IRQHandler + 0x0000000008001c70 TIM3_IRQHandler + 0x0000000008001c70 RCC_IRQHandler + 0x0000000008001c70 DMA1_Channel1_IRQHandler + 0x0000000008001c70 Default_Handler + 0x0000000008001c70 TIM14_IRQHandler + 0x0000000008001c70 SPI2_IRQHandler + 0x0000000008001c70 WWDG_IRQHandler + 0x0000000008001c70 LPUART1_IRQHandler + 0x0000000008001c70 TIM2_IRQHandler + 0x0000000008001c70 DMA1_Channel2_3_IRQHandler + 0x0000000008001c70 USART2_IRQHandler + 0x0000000008001c70 FLASH_IRQHandler + 0x0000000008001c70 USART1_IRQHandler + 0x0000000008001c70 TIM1_BRK_UP_TRG_COM_IRQHandler + 0x0000000008001c70 LPTIM1_IRQHandler + *fill* 0x0000000008001c72 0x2 .text.HAL_Init - 0x0000000008001c94 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x0000000008001c94 HAL_Init + 0x0000000008001c74 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x0000000008001c74 HAL_Init .text.HAL_InitTick - 0x0000000008001cd4 0x94 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x0000000008001cd4 HAL_InitTick + 0x0000000008001cb4 0x94 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x0000000008001cb4 HAL_InitTick .text.HAL_IncTick - 0x0000000008001d68 0x24 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x0000000008001d68 HAL_IncTick + 0x0000000008001d48 0x24 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x0000000008001d48 HAL_IncTick .text.HAL_GetTick - 0x0000000008001d8c 0x14 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x0000000008001d8c HAL_GetTick + 0x0000000008001d6c 0x14 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x0000000008001d6c HAL_GetTick .text.HAL_Delay - 0x0000000008001da0 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x0000000008001da0 HAL_Delay + 0x0000000008001d80 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x0000000008001d80 HAL_Delay .text.__NVIC_EnableIRQ - 0x0000000008001de8 0x34 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x0000000008001dc8 0x34 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .text.__NVIC_SetPriority - 0x0000000008001e1c 0xdc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x0000000008001dfc 0xdc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .text.SysTick_Config - 0x0000000008001ef8 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x0000000008001ed8 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .text.HAL_NVIC_SetPriority - 0x0000000008001f40 0x2a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - 0x0000000008001f40 HAL_NVIC_SetPriority + 0x0000000008001f20 0x2a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x0000000008001f20 HAL_NVIC_SetPriority .text.HAL_NVIC_EnableIRQ - 0x0000000008001f6a 0x20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - 0x0000000008001f6a HAL_NVIC_EnableIRQ + 0x0000000008001f4a 0x20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x0000000008001f4a HAL_NVIC_EnableIRQ .text.HAL_SYSTICK_Config - 0x0000000008001f8a 0x1a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - 0x0000000008001f8a HAL_SYSTICK_Config + 0x0000000008001f6a 0x1a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x0000000008001f6a HAL_SYSTICK_Config .text.HAL_CRC_Init - 0x0000000008001fa4 0xcc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o - 0x0000000008001fa4 HAL_CRC_Init + 0x0000000008001f84 0xcc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o + 0x0000000008001f84 HAL_CRC_Init .text.HAL_CRC_Calculate - 0x0000000008002070 0x9e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o - 0x0000000008002070 HAL_CRC_Calculate + 0x0000000008002050 0x9e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o + 0x0000000008002050 HAL_CRC_Calculate .text.CRC_Handle_8 - 0x000000000800210e 0x122 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o + 0x00000000080020ee 0x122 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o .text.CRC_Handle_16 - 0x0000000008002230 0x6e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o + 0x0000000008002210 0x6e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o .text.HAL_CRCEx_Polynomial_Set - 0x000000000800229e 0xda ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o - 0x000000000800229e HAL_CRCEx_Polynomial_Set + 0x000000000800227e 0xda ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o + 0x000000000800227e HAL_CRCEx_Polynomial_Set .text.HAL_FLASH_Program - 0x0000000008002378 0x9c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o - 0x0000000008002378 HAL_FLASH_Program + 0x0000000008002358 0x9c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + 0x0000000008002358 HAL_FLASH_Program .text.HAL_FLASH_Unlock - 0x0000000008002414 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o - 0x0000000008002414 HAL_FLASH_Unlock + 0x00000000080023f4 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + 0x00000000080023f4 HAL_FLASH_Unlock .text.HAL_FLASH_Lock - 0x000000000800245c 0x38 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o - 0x000000000800245c HAL_FLASH_Lock + 0x000000000800243c 0x38 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + 0x000000000800243c HAL_FLASH_Lock .text.FLASH_WaitForLastOperation - 0x0000000008002494 0x9c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o - 0x0000000008002494 FLASH_WaitForLastOperation + 0x0000000008002474 0x9c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + 0x0000000008002474 FLASH_WaitForLastOperation .text.FLASH_Program_DoubleWord - 0x0000000008002530 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + 0x0000000008002510 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o .text.HAL_FLASHEx_Erase - 0x0000000008002570 0xe8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o - 0x0000000008002570 HAL_FLASHEx_Erase + 0x0000000008002550 0xe8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o + 0x0000000008002550 HAL_FLASHEx_Erase .text.FLASH_MassErase - 0x0000000008002658 0x28 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o + 0x0000000008002638 0x28 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o .text.FLASH_PageErase - 0x0000000008002680 0x38 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o - 0x0000000008002680 FLASH_PageErase + 0x0000000008002660 0x38 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o + 0x0000000008002660 FLASH_PageErase .text.HAL_GPIO_Init - 0x00000000080026b8 0x2c8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - 0x00000000080026b8 HAL_GPIO_Init + 0x0000000008002698 0x2c8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x0000000008002698 HAL_GPIO_Init .text.HAL_GPIO_WritePin - 0x0000000008002980 0x3a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - 0x0000000008002980 HAL_GPIO_WritePin - *fill* 0x00000000080029ba 0x2 + 0x0000000008002960 0x3a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x0000000008002960 HAL_GPIO_WritePin + *fill* 0x000000000800299a 0x2 .text.HAL_GPIO_EXTI_IRQHandler - 0x00000000080029bc 0x54 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - 0x00000000080029bc HAL_GPIO_EXTI_IRQHandler + 0x000000000800299c 0x54 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x000000000800299c HAL_GPIO_EXTI_IRQHandler .text.HAL_I2C_Init - 0x0000000008002a10 0x12c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x0000000008002a10 HAL_I2C_Init + 0x00000000080029f0 0x12c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x00000000080029f0 HAL_I2C_Init .text.HAL_I2C_Mem_Write - 0x0000000008002b3c 0x25c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x0000000008002b3c HAL_I2C_Mem_Write + 0x0000000008002b1c 0x25c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x0000000008002b1c HAL_I2C_Mem_Write .text.HAL_I2C_Mem_Read - 0x0000000008002d98 0x268 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x0000000008002d98 HAL_I2C_Mem_Read + 0x0000000008002d78 0x268 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x0000000008002d78 HAL_I2C_Mem_Read .text.I2C_RequestMemoryWrite - 0x0000000008003000 0xc8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x0000000008002fe0 0xc8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_RequestMemoryRead - 0x00000000080030c8 0xc4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x00000000080030a8 0xc4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_Flush_TXDR - 0x000000000800318c 0x44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x000000000800316c 0x44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_WaitOnFlagUntilTimeout - 0x00000000080031d0 0x7e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x00000000080031b0 0x7e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_WaitOnTXISFlagUntilTimeout - 0x000000000800324e 0x7e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x000000000800322e 0x7e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_WaitOnSTOPFlagUntilTimeout - 0x00000000080032cc 0x78 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x00000000080032ac 0x78 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_IsErrorOccurred - 0x0000000008003344 0x200 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x0000000008003324 0x200 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_TransferConfig - 0x0000000008003544 0x74 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x0000000008003524 0x74 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.HAL_I2CEx_ConfigAnalogFilter - 0x00000000080035b8 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - 0x00000000080035b8 HAL_I2CEx_ConfigAnalogFilter + 0x0000000008003598 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + 0x0000000008003598 HAL_I2CEx_ConfigAnalogFilter .text.HAL_I2CEx_ConfigDigitalFilter - 0x0000000008003650 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - 0x0000000008003650 HAL_I2CEx_ConfigDigitalFilter + 0x0000000008003630 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + 0x0000000008003630 HAL_I2CEx_ConfigDigitalFilter .text.HAL_PWREx_ControlVoltageScaling - 0x00000000080036e8 0x80 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - 0x00000000080036e8 HAL_PWREx_ControlVoltageScaling + 0x00000000080036c8 0x80 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + 0x00000000080036c8 HAL_PWREx_ControlVoltageScaling .text.HAL_RCC_OscConfig - 0x0000000008003768 0x634 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x0000000008003768 HAL_RCC_OscConfig + 0x0000000008003748 0x634 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x0000000008003748 HAL_RCC_OscConfig .text.HAL_RCC_ClockConfig - 0x0000000008003d9c 0x210 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x0000000008003d9c HAL_RCC_ClockConfig + 0x0000000008003d7c 0x210 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x0000000008003d7c HAL_RCC_ClockConfig .text.HAL_RCC_GetSysClockFreq - 0x0000000008003fac 0x104 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x0000000008003fac HAL_RCC_GetSysClockFreq + 0x0000000008003f8c 0x104 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x0000000008003f8c HAL_RCC_GetSysClockFreq .text.HAL_RCCEx_PeriphCLKConfig - 0x00000000080040b0 0x2f4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - 0x00000000080040b0 HAL_RCCEx_PeriphCLKConfig + 0x0000000008004090 0x2f4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + 0x0000000008004090 HAL_RCCEx_PeriphCLKConfig .text.HAL_TIM_Base_Init - 0x00000000080043a4 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x00000000080043a4 HAL_TIM_Base_Init + 0x0000000008004384 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004384 HAL_TIM_Base_Init .text.HAL_TIM_Base_Start_IT - 0x0000000008004454 0xa8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008004454 HAL_TIM_Base_Start_IT + 0x0000000008004434 0xa8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004434 HAL_TIM_Base_Start_IT .text.HAL_TIM_Base_Stop_IT - 0x00000000080044fc 0x5c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x00000000080044fc HAL_TIM_Base_Stop_IT + 0x00000000080044dc 0x5c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x00000000080044dc HAL_TIM_Base_Stop_IT .text.HAL_TIM_PWM_Init - 0x0000000008004558 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008004558 HAL_TIM_PWM_Init + 0x0000000008004538 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004538 HAL_TIM_PWM_Init .text.HAL_TIM_PWM_MspInit - 0x0000000008004608 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008004608 HAL_TIM_PWM_MspInit + 0x00000000080045e8 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x00000000080045e8 HAL_TIM_PWM_MspInit .text.HAL_TIM_PWM_Start - 0x0000000008004618 0x1bc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008004618 HAL_TIM_PWM_Start + 0x00000000080045f8 0x1bc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x00000000080045f8 HAL_TIM_PWM_Start .text.HAL_TIM_IRQHandler - 0x00000000080047d4 0x264 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x00000000080047d4 HAL_TIM_IRQHandler + 0x00000000080047b4 0x264 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x00000000080047b4 HAL_TIM_IRQHandler .text.HAL_TIM_PWM_ConfigChannel - 0x0000000008004a38 0x200 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008004a38 HAL_TIM_PWM_ConfigChannel + 0x0000000008004a18 0x200 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004a18 HAL_TIM_PWM_ConfigChannel .text.HAL_TIM_ConfigClockSource - 0x0000000008004c38 0x1ac ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008004c38 HAL_TIM_ConfigClockSource + 0x0000000008004c18 0x1ac ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004c18 HAL_TIM_ConfigClockSource .text.HAL_TIM_OC_DelayElapsedCallback - 0x0000000008004de4 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008004de4 HAL_TIM_OC_DelayElapsedCallback + 0x0000000008004dc4 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004dc4 HAL_TIM_OC_DelayElapsedCallback .text.HAL_TIM_IC_CaptureCallback - 0x0000000008004df4 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008004df4 HAL_TIM_IC_CaptureCallback + 0x0000000008004dd4 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004dd4 HAL_TIM_IC_CaptureCallback .text.HAL_TIM_PWM_PulseFinishedCallback - 0x0000000008004e04 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008004e04 HAL_TIM_PWM_PulseFinishedCallback + 0x0000000008004de4 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004de4 HAL_TIM_PWM_PulseFinishedCallback .text.HAL_TIM_TriggerCallback - 0x0000000008004e14 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008004e14 HAL_TIM_TriggerCallback + 0x0000000008004df4 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004df4 HAL_TIM_TriggerCallback .text.TIM_Base_SetConfig - 0x0000000008004e24 0xec ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008004e24 TIM_Base_SetConfig + 0x0000000008004e04 0xec ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004e04 TIM_Base_SetConfig .text.TIM_OC1_SetConfig - 0x0000000008004f10 0x100 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004ef0 0x100 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o .text.TIM_OC2_SetConfig - 0x0000000008005010 0xfc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008005010 TIM_OC2_SetConfig + 0x0000000008004ff0 0xfc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008004ff0 TIM_OC2_SetConfig .text.TIM_OC3_SetConfig - 0x000000000800510c 0x104 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x00000000080050ec 0x104 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o .text.TIM_OC4_SetConfig - 0x0000000008005210 0xc8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x00000000080051f0 0xc8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o .text.TIM_OC5_SetConfig - 0x00000000080052d8 0xb4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x00000000080052b8 0xb4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o .text.TIM_OC6_SetConfig - 0x000000000800538c 0xbc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x000000000800536c 0xbc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o .text.TIM_TI1_ConfigInputStage - 0x0000000008005448 0x5c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008005428 0x5c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o .text.TIM_TI2_ConfigInputStage - 0x00000000080054a4 0x64 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008005484 0x64 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o .text.TIM_ITRx_SetConfig - 0x0000000008005508 0x38 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x00000000080054e8 0x38 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o .text.TIM_ETR_SetConfig - 0x0000000008005540 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008005540 TIM_ETR_SetConfig + 0x0000000008005520 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008005520 TIM_ETR_SetConfig .text.TIM_CCxChannelCmd - 0x0000000008005580 0x46 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - 0x0000000008005580 TIM_CCxChannelCmd - *fill* 0x00000000080055c6 0x2 + 0x0000000008005560 0x46 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000008005560 TIM_CCxChannelCmd + *fill* 0x00000000080055a6 0x2 .text.HAL_TIMEx_MasterConfigSynchronization - 0x00000000080055c8 0xd0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o - 0x00000000080055c8 HAL_TIMEx_MasterConfigSynchronization + 0x00000000080055a8 0xd0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o + 0x00000000080055a8 HAL_TIMEx_MasterConfigSynchronization .text.HAL_TIMEx_CommutCallback - 0x0000000008005698 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o - 0x0000000008005698 HAL_TIMEx_CommutCallback + 0x0000000008005678 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o + 0x0000000008005678 HAL_TIMEx_CommutCallback .text.HAL_TIMEx_BreakCallback - 0x00000000080056a8 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o - 0x00000000080056a8 HAL_TIMEx_BreakCallback + 0x0000000008005688 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o + 0x0000000008005688 HAL_TIMEx_BreakCallback .text.HAL_TIMEx_Break2Callback - 0x00000000080056b8 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o - 0x00000000080056b8 HAL_TIMEx_Break2Callback + 0x0000000008005698 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o + 0x0000000008005698 HAL_TIMEx_Break2Callback .text.writeReg - 0x00000000080056c8 0x44 ./Drivers/vl53l0x/VL53L0X.o - 0x00000000080056c8 writeReg + 0x00000000080056a8 0x44 ./Drivers/vl53l0x/VL53L0X.o + 0x00000000080056a8 writeReg .text.writeReg16Bit - 0x000000000800570c 0x60 ./Drivers/vl53l0x/VL53L0X.o - 0x000000000800570c writeReg16Bit + 0x00000000080056ec 0x60 ./Drivers/vl53l0x/VL53L0X.o + 0x00000000080056ec writeReg16Bit .text.writeReg32Bit - 0x000000000800576c 0x68 ./Drivers/vl53l0x/VL53L0X.o - 0x000000000800576c writeReg32Bit - .text.readReg 0x00000000080057d4 0x44 ./Drivers/vl53l0x/VL53L0X.o - 0x00000000080057d4 readReg + 0x000000000800574c 0x68 ./Drivers/vl53l0x/VL53L0X.o + 0x000000000800574c writeReg32Bit + .text.readReg 0x00000000080057b4 0x44 ./Drivers/vl53l0x/VL53L0X.o + 0x00000000080057b4 readReg .text.readReg16Bit - 0x0000000008005818 0x64 ./Drivers/vl53l0x/VL53L0X.o - 0x0000000008005818 readReg16Bit + 0x00000000080057f8 0x64 ./Drivers/vl53l0x/VL53L0X.o + 0x00000000080057f8 readReg16Bit .text.writeMulti - 0x000000000800587c 0x50 ./Drivers/vl53l0x/VL53L0X.o - 0x000000000800587c writeMulti + 0x000000000800585c 0x50 ./Drivers/vl53l0x/VL53L0X.o + 0x000000000800585c writeMulti .text.readMulti - 0x00000000080058cc 0x50 ./Drivers/vl53l0x/VL53L0X.o - 0x00000000080058cc readMulti + 0x00000000080058ac 0x50 ./Drivers/vl53l0x/VL53L0X.o + 0x00000000080058ac readMulti .text.initVL53L0X - 0x000000000800591c 0x4cc ./Drivers/vl53l0x/VL53L0X.o - 0x000000000800591c initVL53L0X + 0x00000000080058fc 0x4cc ./Drivers/vl53l0x/VL53L0X.o + 0x00000000080058fc initVL53L0X .text.setSignalRateLimit - 0x0000000008005de8 0x5c ./Drivers/vl53l0x/VL53L0X.o - 0x0000000008005de8 setSignalRateLimit + 0x0000000008005dc8 0x5c ./Drivers/vl53l0x/VL53L0X.o + 0x0000000008005dc8 setSignalRateLimit .text.setMeasurementTimingBudget - 0x0000000008005e44 0x190 ./Drivers/vl53l0x/VL53L0X.o - 0x0000000008005e44 setMeasurementTimingBudget + 0x0000000008005e24 0x190 ./Drivers/vl53l0x/VL53L0X.o + 0x0000000008005e24 setMeasurementTimingBudget .text.getMeasurementTimingBudget - 0x0000000008005fd4 0x118 ./Drivers/vl53l0x/VL53L0X.o - 0x0000000008005fd4 getMeasurementTimingBudget + 0x0000000008005fb4 0x118 ./Drivers/vl53l0x/VL53L0X.o + 0x0000000008005fb4 getMeasurementTimingBudget .text.getVcselPulsePeriod - 0x00000000080060ec 0x4a ./Drivers/vl53l0x/VL53L0X.o - 0x00000000080060ec getVcselPulsePeriod - *fill* 0x0000000008006136 0x2 + 0x00000000080060cc 0x4a ./Drivers/vl53l0x/VL53L0X.o + 0x00000000080060cc getVcselPulsePeriod + *fill* 0x0000000008006116 0x2 .text.startContinuous - 0x0000000008006138 0x94 ./Drivers/vl53l0x/VL53L0X.o - 0x0000000008006138 startContinuous + 0x0000000008006118 0x94 ./Drivers/vl53l0x/VL53L0X.o + 0x0000000008006118 startContinuous .text.readRangeContinuousMillimeters - 0x00000000080061cc 0x110 ./Drivers/vl53l0x/VL53L0X.o - 0x00000000080061cc readRangeContinuousMillimeters + 0x00000000080061ac 0x110 ./Drivers/vl53l0x/VL53L0X.o + 0x00000000080061ac readRangeContinuousMillimeters + .text.setTimeout + 0x00000000080062bc 0x20 ./Drivers/vl53l0x/VL53L0X.o + 0x00000000080062bc setTimeout .text.getSpadInfo 0x00000000080062dc 0x134 ./Drivers/vl53l0x/VL53L0X.o 0x00000000080062dc getSpadInfo @@ -4231,113 +4235,113 @@ LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.exte LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libm.a LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a -.debug_info 0x0000000000000000 0x1128d - .debug_info 0x0000000000000000 0x1b30 ./Core/Src/main.o - .debug_info 0x0000000000001b30 0x1336 ./Core/Src/stm32g0xx_hal_msp.o - .debug_info 0x0000000000002e66 0x89a ./Core/Src/stm32g0xx_it.o - .debug_info 0x0000000000003700 0x34d ./Core/Src/system_stm32g0xx.o - .debug_info 0x0000000000003a4d 0x22 ./Core/Startup/startup_stm32g031g8ux.o - .debug_info 0x0000000000003a6f 0xa94 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_info 0x0000000000004503 0x8fb ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_info 0x0000000000004dfe 0x57f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o - .debug_info 0x000000000000537d 0x37a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o - .debug_info 0x00000000000056f7 0x6c0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o - .debug_info 0x0000000000005db7 0x99c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o - .debug_info 0x0000000000006753 0x5d7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_info 0x0000000000006d2a 0x235d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_info 0x0000000000009087 0xa7f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_info 0x0000000000009b06 0x7b9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_info 0x000000000000a2bf 0xb63 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_info 0x000000000000ae22 0x804 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_info 0x000000000000b626 0x2e15 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - .debug_info 0x000000000000e43b 0x1a19 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o - .debug_info 0x000000000000fe54 0x1439 ./Drivers/vl53l0x/VL53L0X.o +.debug_info 0x0000000000000000 0x112c0 + .debug_info 0x0000000000000000 0x1b63 ./Core/Src/main.o + .debug_info 0x0000000000001b63 0x1336 ./Core/Src/stm32g0xx_hal_msp.o + .debug_info 0x0000000000002e99 0x89a ./Core/Src/stm32g0xx_it.o + .debug_info 0x0000000000003733 0x34d ./Core/Src/system_stm32g0xx.o + .debug_info 0x0000000000003a80 0x22 ./Core/Startup/startup_stm32g031g8ux.o + .debug_info 0x0000000000003aa2 0xa94 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_info 0x0000000000004536 0x8fb ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_info 0x0000000000004e31 0x57f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o + .debug_info 0x00000000000053b0 0x37a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o + .debug_info 0x000000000000572a 0x6c0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + .debug_info 0x0000000000005dea 0x99c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o + .debug_info 0x0000000000006786 0x5d7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_info 0x0000000000006d5d 0x235d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_info 0x00000000000090ba 0xa7f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_info 0x0000000000009b39 0x7b9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_info 0x000000000000a2f2 0xb63 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_info 0x000000000000ae55 0x804 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_info 0x000000000000b659 0x2e15 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + .debug_info 0x000000000000e46e 0x1a19 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o + .debug_info 0x000000000000fe87 0x1439 ./Drivers/vl53l0x/VL53L0X.o -.debug_abbrev 0x0000000000000000 0x2b70 - .debug_abbrev 0x0000000000000000 0x31f ./Core/Src/main.o - .debug_abbrev 0x000000000000031f 0x25b ./Core/Src/stm32g0xx_hal_msp.o - .debug_abbrev 0x000000000000057a 0x1ad ./Core/Src/stm32g0xx_it.o - .debug_abbrev 0x0000000000000727 0x116 ./Core/Src/system_stm32g0xx.o - .debug_abbrev 0x000000000000083d 0x12 ./Core/Startup/startup_stm32g031g8ux.o - .debug_abbrev 0x000000000000084f 0x2a9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_abbrev 0x0000000000000af8 0x29f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_abbrev 0x0000000000000d97 0x1d3 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o - .debug_abbrev 0x0000000000000f6a 0x130 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o - .debug_abbrev 0x000000000000109a 0x2e8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o - .debug_abbrev 0x0000000000001382 0x254 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o - .debug_abbrev 0x00000000000015d6 0x1b9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_abbrev 0x000000000000178f 0x27e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_abbrev 0x0000000000001a0d 0x1d7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_abbrev 0x0000000000001be4 0x232 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_abbrev 0x0000000000001e16 0x2a3 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_abbrev 0x00000000000020b9 0x21a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_abbrev 0x00000000000022d3 0x286 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - .debug_abbrev 0x0000000000002559 0x292 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o - .debug_abbrev 0x00000000000027eb 0x385 ./Drivers/vl53l0x/VL53L0X.o +.debug_abbrev 0x0000000000000000 0x2b9b + .debug_abbrev 0x0000000000000000 0x34a ./Core/Src/main.o + .debug_abbrev 0x000000000000034a 0x25b ./Core/Src/stm32g0xx_hal_msp.o + .debug_abbrev 0x00000000000005a5 0x1ad ./Core/Src/stm32g0xx_it.o + .debug_abbrev 0x0000000000000752 0x116 ./Core/Src/system_stm32g0xx.o + .debug_abbrev 0x0000000000000868 0x12 ./Core/Startup/startup_stm32g031g8ux.o + .debug_abbrev 0x000000000000087a 0x2a9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_abbrev 0x0000000000000b23 0x29f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_abbrev 0x0000000000000dc2 0x1d3 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o + .debug_abbrev 0x0000000000000f95 0x130 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o + .debug_abbrev 0x00000000000010c5 0x2e8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + .debug_abbrev 0x00000000000013ad 0x254 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o + .debug_abbrev 0x0000000000001601 0x1b9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_abbrev 0x00000000000017ba 0x27e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_abbrev 0x0000000000001a38 0x1d7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_abbrev 0x0000000000001c0f 0x232 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_abbrev 0x0000000000001e41 0x2a3 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_abbrev 0x00000000000020e4 0x21a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_abbrev 0x00000000000022fe 0x286 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + .debug_abbrev 0x0000000000002584 0x292 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o + .debug_abbrev 0x0000000000002816 0x385 ./Drivers/vl53l0x/VL53L0X.o -.debug_aranges 0x0000000000000000 0x1130 +.debug_aranges 0x0000000000000000 0x1138 .debug_aranges - 0x0000000000000000 0x98 ./Core/Src/main.o + 0x0000000000000000 0xa0 ./Core/Src/main.o .debug_aranges - 0x0000000000000098 0x58 ./Core/Src/stm32g0xx_hal_msp.o + 0x00000000000000a0 0x58 ./Core/Src/stm32g0xx_hal_msp.o .debug_aranges - 0x00000000000000f0 0x60 ./Core/Src/stm32g0xx_it.o + 0x00000000000000f8 0x60 ./Core/Src/stm32g0xx_it.o .debug_aranges - 0x0000000000000150 0x28 ./Core/Src/system_stm32g0xx.o + 0x0000000000000158 0x28 ./Core/Src/system_stm32g0xx.o .debug_aranges - 0x0000000000000178 0x28 ./Core/Startup/startup_stm32g031g8ux.o + 0x0000000000000180 0x28 ./Core/Startup/startup_stm32g031g8ux.o .debug_aranges - 0x00000000000001a0 0x128 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x00000000000001a8 0x128 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o .debug_aranges - 0x00000000000002c8 0xd8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x00000000000002d0 0xd8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .debug_aranges - 0x00000000000003a0 0x60 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o + 0x00000000000003a8 0x60 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o .debug_aranges - 0x0000000000000400 0x30 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o + 0x0000000000000408 0x30 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o .debug_aranges - 0x0000000000000430 0x88 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + 0x0000000000000438 0x88 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o .debug_aranges - 0x00000000000004b8 0xd0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o + 0x00000000000004c0 0xd0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o .debug_aranges - 0x0000000000000588 0x60 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x0000000000000590 0x60 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o .debug_aranges - 0x00000000000005e8 0x2a0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x00000000000005f0 0x2a0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .debug_aranges - 0x0000000000000888 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + 0x0000000000000890 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o .debug_aranges - 0x00000000000008d0 0xf0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + 0x00000000000008d8 0xf0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o .debug_aranges - 0x00000000000009c0 0xa0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x00000000000009c8 0xa0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o .debug_aranges - 0x0000000000000a60 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + 0x0000000000000a68 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o .debug_aranges - 0x0000000000000aa0 0x3e0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + 0x0000000000000aa8 0x3e0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o .debug_aranges - 0x0000000000000e80 0x198 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o + 0x0000000000000e88 0x198 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o .debug_aranges - 0x0000000000001018 0x118 ./Drivers/vl53l0x/VL53L0X.o + 0x0000000000001020 0x118 ./Drivers/vl53l0x/VL53L0X.o -.debug_ranges 0x0000000000000000 0xff8 - .debug_ranges 0x0000000000000000 0x88 ./Core/Src/main.o - .debug_ranges 0x0000000000000088 0x48 ./Core/Src/stm32g0xx_hal_msp.o - .debug_ranges 0x00000000000000d0 0x50 ./Core/Src/stm32g0xx_it.o - .debug_ranges 0x0000000000000120 0x18 ./Core/Src/system_stm32g0xx.o - .debug_ranges 0x0000000000000138 0x20 ./Core/Startup/startup_stm32g031g8ux.o - .debug_ranges 0x0000000000000158 0x118 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_ranges 0x0000000000000270 0xc8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_ranges 0x0000000000000338 0x50 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o - .debug_ranges 0x0000000000000388 0x20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o - .debug_ranges 0x00000000000003a8 0x78 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o - .debug_ranges 0x0000000000000420 0xc0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o - .debug_ranges 0x00000000000004e0 0x50 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_ranges 0x0000000000000530 0x290 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_ranges 0x00000000000007c0 0x38 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_ranges 0x00000000000007f8 0xe0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_ranges 0x00000000000008d8 0x90 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_ranges 0x0000000000000968 0x30 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_ranges 0x0000000000000998 0x3d0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - .debug_ranges 0x0000000000000d68 0x188 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o - .debug_ranges 0x0000000000000ef0 0x108 ./Drivers/vl53l0x/VL53L0X.o +.debug_ranges 0x0000000000000000 0x1000 + .debug_ranges 0x0000000000000000 0x90 ./Core/Src/main.o + .debug_ranges 0x0000000000000090 0x48 ./Core/Src/stm32g0xx_hal_msp.o + .debug_ranges 0x00000000000000d8 0x50 ./Core/Src/stm32g0xx_it.o + .debug_ranges 0x0000000000000128 0x18 ./Core/Src/system_stm32g0xx.o + .debug_ranges 0x0000000000000140 0x20 ./Core/Startup/startup_stm32g031g8ux.o + .debug_ranges 0x0000000000000160 0x118 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_ranges 0x0000000000000278 0xc8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_ranges 0x0000000000000340 0x50 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o + .debug_ranges 0x0000000000000390 0x20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o + .debug_ranges 0x00000000000003b0 0x78 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + .debug_ranges 0x0000000000000428 0xc0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o + .debug_ranges 0x00000000000004e8 0x50 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_ranges 0x0000000000000538 0x290 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_ranges 0x00000000000007c8 0x38 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_ranges 0x0000000000000800 0xe0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_ranges 0x00000000000008e0 0x90 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_ranges 0x0000000000000970 0x30 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_ranges 0x00000000000009a0 0x3d0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + .debug_ranges 0x0000000000000d70 0x188 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o + .debug_ranges 0x0000000000000ef8 0x108 ./Drivers/vl53l0x/VL53L0X.o .debug_macro 0x0000000000000000 0x17358 .debug_macro 0x0000000000000000 0x3c3 ./Core/Src/main.o @@ -4437,68 +4441,68 @@ LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.exte .debug_macro 0x00000000000170f9 0x207 ./Drivers/vl53l0x/VL53L0X.o .debug_macro 0x0000000000017300 0x58 ./Drivers/vl53l0x/VL53L0X.o -.debug_line 0x0000000000000000 0x13e44 - .debug_line 0x0000000000000000 0xeac ./Core/Src/main.o - .debug_line 0x0000000000000eac 0x870 ./Core/Src/stm32g0xx_hal_msp.o - .debug_line 0x000000000000171c 0x7ee ./Core/Src/stm32g0xx_it.o - .debug_line 0x0000000000001f0a 0x79c ./Core/Src/system_stm32g0xx.o - .debug_line 0x00000000000026a6 0x89 ./Core/Startup/startup_stm32g031g8ux.o - .debug_line 0x000000000000272f 0xaea ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_line 0x0000000000003219 0xb53 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_line 0x0000000000003d6c 0xa6a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o - .debug_line 0x00000000000047d6 0x7de ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o - .debug_line 0x0000000000004fb4 0xa63 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o - .debug_line 0x0000000000005a17 0xc20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o - .debug_line 0x0000000000006637 0xb3f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_line 0x0000000000007176 0x36e5 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_line 0x000000000000a85b 0x947 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_line 0x000000000000b1a2 0xab7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_line 0x000000000000bc59 0xefd ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_line 0x000000000000cb56 0xc1c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_line 0x000000000000d772 0x3b62 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - .debug_line 0x00000000000112d4 0x1c20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o - .debug_line 0x0000000000012ef4 0xf50 ./Drivers/vl53l0x/VL53L0X.o +.debug_line 0x0000000000000000 0x13e1a + .debug_line 0x0000000000000000 0xe82 ./Core/Src/main.o + .debug_line 0x0000000000000e82 0x870 ./Core/Src/stm32g0xx_hal_msp.o + .debug_line 0x00000000000016f2 0x7ee ./Core/Src/stm32g0xx_it.o + .debug_line 0x0000000000001ee0 0x79c ./Core/Src/system_stm32g0xx.o + .debug_line 0x000000000000267c 0x89 ./Core/Startup/startup_stm32g031g8ux.o + .debug_line 0x0000000000002705 0xaea ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_line 0x00000000000031ef 0xb53 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_line 0x0000000000003d42 0xa6a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o + .debug_line 0x00000000000047ac 0x7de ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o + .debug_line 0x0000000000004f8a 0xa63 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + .debug_line 0x00000000000059ed 0xc20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o + .debug_line 0x000000000000660d 0xb3f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_line 0x000000000000714c 0x36e5 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_line 0x000000000000a831 0x947 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_line 0x000000000000b178 0xab7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_line 0x000000000000bc2f 0xefd ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_line 0x000000000000cb2c 0xc1c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_line 0x000000000000d748 0x3b62 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + .debug_line 0x00000000000112aa 0x1c20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o + .debug_line 0x0000000000012eca 0xf50 ./Drivers/vl53l0x/VL53L0X.o -.debug_str 0x0000000000000000 0x92472 - .debug_str 0x0000000000000000 0x8db63 ./Core/Src/main.o - 0x8e24c (size before relaxing) - .debug_str 0x000000000008db63 0x1d7 ./Core/Src/stm32g0xx_hal_msp.o +.debug_str 0x0000000000000000 0x9247c + .debug_str 0x0000000000000000 0x8db78 ./Core/Src/main.o + 0x8e267 (size before relaxing) + .debug_str 0x000000000008db78 0x1d7 ./Core/Src/stm32g0xx_hal_msp.o 0x89c52 (size before relaxing) - .debug_str 0x000000000008dd3a 0xf7 ./Core/Src/stm32g0xx_it.o + .debug_str 0x000000000008dd4f 0xf7 ./Core/Src/stm32g0xx_it.o 0x8940e (size before relaxing) - .debug_str 0x000000000008de31 0x8e ./Core/Src/system_stm32g0xx.o + .debug_str 0x000000000008de46 0x8e ./Core/Src/system_stm32g0xx.o 0x88d22 (size before relaxing) - .debug_str 0x000000000008debf 0x36 ./Core/Startup/startup_stm32g031g8ux.o + .debug_str 0x000000000008ded4 0x36 ./Core/Startup/startup_stm32g031g8ux.o 0x64 (size before relaxing) - .debug_str 0x000000000008def5 0x56e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_str 0x000000000008df0a 0x56e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o 0x894f8 (size before relaxing) - .debug_str 0x000000000008e463 0x261 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_str 0x000000000008e478 0x261 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o 0x89174 (size before relaxing) - .debug_str 0x000000000008e6c4 0xb1 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o + .debug_str 0x000000000008e6d9 0xb1 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o 0x88ebb (size before relaxing) - .debug_str 0x000000000008e775 0x69 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o + .debug_str 0x000000000008e78a 0x69 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o 0x88e61 (size before relaxing) - .debug_str 0x000000000008e7de 0x1f4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + .debug_str 0x000000000008e7f3 0x1f4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o 0x88f51 (size before relaxing) - .debug_str 0x000000000008e9d2 0x365 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o + .debug_str 0x000000000008e9e7 0x365 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o 0x890f6 (size before relaxing) - .debug_str 0x000000000008ed37 0xde ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_str 0x000000000008ed4c 0xde ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o 0x88e57 (size before relaxing) - .debug_str 0x000000000008ee15 0xddf ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_str 0x000000000008ee2a 0xddf ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o 0x8a0f1 (size before relaxing) - .debug_str 0x000000000008fbf4 0xb8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_str 0x000000000008fc09 0xb8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o 0x8938b (size before relaxing) - .debug_str 0x000000000008fcac 0x386 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_str 0x000000000008fcc1 0x386 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o 0x8919b (size before relaxing) - .debug_str 0x0000000000090032 0x345 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_str 0x0000000000090047 0x345 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o 0x89345 (size before relaxing) - .debug_str 0x0000000000090377 0x185 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_str 0x000000000009038c 0x185 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o 0x890b1 (size before relaxing) - .debug_str 0x00000000000904fc 0xd57 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + .debug_str 0x0000000000090511 0xd57 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o 0x8a254 (size before relaxing) - .debug_str 0x0000000000091253 0x5f9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o + .debug_str 0x0000000000091268 0x5f9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o 0x89bf2 (size before relaxing) - .debug_str 0x000000000009184c 0xc26 ./Drivers/vl53l0x/VL53L0X.o + .debug_str 0x0000000000091861 0xc1b ./Drivers/vl53l0x/VL53L0X.o 0x8a15b (size before relaxing) .comment 0x0000000000000000 0x50 @@ -4523,38 +4527,38 @@ LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.exte .comment 0x0000000000000050 0x51 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o .comment 0x0000000000000050 0x51 ./Drivers/vl53l0x/VL53L0X.o -.debug_frame 0x0000000000000000 0x401c - .debug_frame 0x0000000000000000 0x1fc ./Core/Src/main.o - .debug_frame 0x00000000000001fc 0x110 ./Core/Src/stm32g0xx_hal_msp.o - .debug_frame 0x000000000000030c 0x10c ./Core/Src/stm32g0xx_it.o - .debug_frame 0x0000000000000418 0x4c ./Core/Src/system_stm32g0xx.o - .debug_frame 0x0000000000000464 0x3fc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_frame 0x0000000000000860 0x2fc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_frame 0x0000000000000b5c 0x130 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o - .debug_frame 0x0000000000000c8c 0x70 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o - .debug_frame 0x0000000000000cfc 0x1d4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o - .debug_frame 0x0000000000000ed0 0x2ec ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o - .debug_frame 0x00000000000011bc 0x130 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_frame 0x00000000000012ec 0xa64 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_frame 0x0000000000001d50 0xd0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_frame 0x0000000000001e20 0x32c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_frame 0x000000000000214c 0x214 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_frame 0x0000000000002360 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_frame 0x0000000000002410 0xf40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o - .debug_frame 0x0000000000003350 0x620 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o - .debug_frame 0x0000000000003970 0x418 ./Drivers/vl53l0x/VL53L0X.o - .debug_frame 0x0000000000003d88 0x2c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(lib_a-init.o) - .debug_frame 0x0000000000003db4 0x20 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(lib_a-memset.o) - .debug_frame 0x0000000000003dd4 0x20 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(_udivsi3.o) - .debug_frame 0x0000000000003df4 0x20 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(_divsi3.o) - .debug_frame 0x0000000000003e14 0x28 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(_fixunssfsi.o) - .debug_frame 0x0000000000003e3c 0x2c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(eqsf2.o) - .debug_frame 0x0000000000003e68 0x2c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(gesf2.o) - .debug_frame 0x0000000000003e94 0x2c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(lesf2.o) - .debug_frame 0x0000000000003ec0 0x38 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(mulsf3.o) - .debug_frame 0x0000000000003ef8 0x38 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(subsf3.o) - .debug_frame 0x0000000000003f30 0x20 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(fixsfsi.o) - .debug_frame 0x0000000000003f50 0x38 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(eqdf2.o) - .debug_frame 0x0000000000003f88 0x34 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(gedf2.o) - .debug_frame 0x0000000000003fbc 0x34 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(ledf2.o) - .debug_frame 0x0000000000003ff0 0x2c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(extendsfdf2.o) +.debug_frame 0x0000000000000000 0x4038 + .debug_frame 0x0000000000000000 0x218 ./Core/Src/main.o + .debug_frame 0x0000000000000218 0x110 ./Core/Src/stm32g0xx_hal_msp.o + .debug_frame 0x0000000000000328 0x10c ./Core/Src/stm32g0xx_it.o + .debug_frame 0x0000000000000434 0x4c ./Core/Src/system_stm32g0xx.o + .debug_frame 0x0000000000000480 0x3fc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_frame 0x000000000000087c 0x2fc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_frame 0x0000000000000b78 0x130 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc.o + .debug_frame 0x0000000000000ca8 0x70 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_crc_ex.o + .debug_frame 0x0000000000000d18 0x1d4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o + .debug_frame 0x0000000000000eec 0x2ec ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o + .debug_frame 0x00000000000011d8 0x130 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_frame 0x0000000000001308 0xa64 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_frame 0x0000000000001d6c 0xd0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_frame 0x0000000000001e3c 0x32c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_frame 0x0000000000002168 0x214 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_frame 0x000000000000237c 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_frame 0x000000000000242c 0xf40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o + .debug_frame 0x000000000000336c 0x620 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o + .debug_frame 0x000000000000398c 0x418 ./Drivers/vl53l0x/VL53L0X.o + .debug_frame 0x0000000000003da4 0x2c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(lib_a-init.o) + .debug_frame 0x0000000000003dd0 0x20 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(lib_a-memset.o) + .debug_frame 0x0000000000003df0 0x20 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(_udivsi3.o) + .debug_frame 0x0000000000003e10 0x20 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(_divsi3.o) + .debug_frame 0x0000000000003e30 0x28 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(_fixunssfsi.o) + .debug_frame 0x0000000000003e58 0x2c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(eqsf2.o) + .debug_frame 0x0000000000003e84 0x2c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(gesf2.o) + .debug_frame 0x0000000000003eb0 0x2c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(lesf2.o) + .debug_frame 0x0000000000003edc 0x38 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(mulsf3.o) + .debug_frame 0x0000000000003f14 0x38 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(subsf3.o) + .debug_frame 0x0000000000003f4c 0x20 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(fixsfsi.o) + .debug_frame 0x0000000000003f6c 0x38 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(eqdf2.o) + .debug_frame 0x0000000000003fa4 0x34 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(gedf2.o) + .debug_frame 0x0000000000003fd8 0x34 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(ledf2.o) + .debug_frame 0x000000000000400c 0x2c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp\libgcc.a(extendsfdf2.o) diff --git a/firmware/Drivers/vl53l0x/VL53L0X.c b/firmware/Drivers/vl53l0x/VL53L0X.c index 5166823..ecf5725 100644 --- a/firmware/Drivers/vl53l0x/VL53L0X.c +++ b/firmware/Drivers/vl53l0x/VL53L0X.c @@ -10,10 +10,10 @@ // Local variables within this file (private) //--------------------------------------------------------- uint8_t g_i2cAddr = ADDRESS_DEFAULT; -uint16_t g_ioTimeout = 0; // no timeout +uint16_t g_ioTimeout = 0; // 0 = no timeout uint8_t g_isTimeout = 0; uint16_t g_timeoutStartMs; -uint8_t g_stopVariable; // read by init and used when starting measurement; is StopVariable field of VL53L0X_DevData_t structure in API +uint8_t g_stopVariable; // read by init and used when starting measurement; is StopVariable field of VL53L0X_DevData_t structure in API uint32_t g_measTimBudUs; //--------------------------------------------------------- diff --git a/kicad/rev.2.0/DiLight_2.0-backups/DiLight_2.0-2022-11-14_220909.zip b/kicad/rev.2.0/DiLight_2.0-backups/DiLight_2.0-2022-11-14_220909.zip new file mode 100644 index 0000000000000000000000000000000000000000..45be42fab026ec789b3f3fa1864b8c67002ebf08 GIT binary patch literal 98468 zcmV(^K-IrcO9KQH000080D(Y8RayewOF}dO0O>OY02KfL07Pj_X=iA3UotK*E^BFH zVPs!$V`A*RX>%M`mL>ST&H6utv1iPrF23N~7nzlfiKLiPc2Z)B%&eXnn}NNRM2lD& z08>YS}Bi?@RIqz;?{c@UPIl0Vf_SN6&)%EGc`Al*t z1Q+`2*;jAtdA*7^7gsa9abAD@`al1t|NNh3tLN|O-}vd~-D&>iyk1|=#N2*O4_EJ9 z#>;v&d-Sb-)II*{ef$lLEPsv99=(`9`|xOXefsu1zW;jpSc%!Ar$f&rJ^!}6tJjZa zAFkrLzQ<8{8O z^?dWqj=o^)y%&S;dHRBv@%opYb^`sv{&S7ldj9L%>-k^saP`gf@A>nq`0MHU+w1jL zYfRv?vzviepIw}t)$^O)tC-X8@`c!cm7Z>1Q{8KF@HM%44YT@Pd0Vk~H`hDe$GpCb zS8q?xcb<3C`t0iF|16tneRlET>gKn2RW{$;&Fa=`FNR+0CiO*3JB@U6y7$=d^wKi=XU40T|Rd^&)xF5-+Atr&qMF|>f~M5n-7=E z7cX(bZ!S*Gu&GY+`x>v}d9E|Q`kwgV<4OE@dVO+nb&3U=DKke`gq<6)dgblaX_@#K z!r}7$#myzY`D}T**N45nula_=3jfGC7rf<@w*0@Z*RPh->zL3pNQ;}Zn6ECbXDz$FCc60S%@Qv~}nu9X>CJt-7S-$)~E>b&v zUw7WP{@Yu8-RXILx7!bVa(PwrX(vqW=6U^?-+w5z;)HZlv-5>CgAEgiA-3JG{M%`~ zzBs1^-2LS2qSTq#8Y0$nxl}vvzPo(;{<5B*e>lUa`oFaN;QA7sgZSV3pq!#xH}pGZ z&b$BXE#1dqWqVBc@bnCedK%wy+|ZuUOGEMfvNiL}S}XZUaE$ZcNV>E7guNTra$#(r&m`{uRCv-tJC-IuixQ3^xwVC z@qOJKD6#wPGwh!m|;`|)5R15lK_WC5$;5%DG5}1J3|MvWc zpZd=XJ$v@2|JHwI2fxd2eU}@2Cv3grhx^U9UJ9#;UVOMUD#?exL2bPxhF{WKFUe&y zf8JkDsg|GpEcQRsJ74~nf!{ZS?`+Mz+?~_KJ8tWp-8o&hwKZRIcT$%xZTBb)zqHjQ zwL7`Xm$oKX?N09UrLDHuy;l+2)&9i6VNH^Cv@$7OYiqqcl%#3K9 zX{8*)kCAEXTJZsYTwWtCTE;oY0w_E8Y8KX5tW@xX*`qh_t}Z^jeK&h|0o-v7<#PJ= z-OcP0D*av8KltHDuepl-a0ij1=BBy_%9$_Z=e8C{E^SiO%IR|)nv{6Zbqc`tnkDk=Txyvmu z?QLQ@C(FDpg+&on3sp6j(xc6c-2g8whH*l}SbfkgPdbgg(fN=52pmpR%=p}5ikY0N zZi;*Bx!`9#Xx17w$u;d9Y?`mGPyZc?7Yeq|ZTTDr@$1d+tkzu%)ocl@>Qb4GC9xp1 zV@6gFI3;6_sjrNCeO_RZM{h1ZVDh>y^O>82zHN7wh|9fnwS+99){3>%6m87RqP7t~ zmgcOJrfE6S)dlDJ-~PX!zkBiB&)@y{?7RQ9>M(7c2kC89r8Mpf(>h^dB_=k;5Lm0p zr_=1{9Dt1A{q*+(2@ z;Ux1ZDdq!qug|p#$heW#yXM4Px@G&_&lbyjaO*xP7ff-iN`cljPb`I&Sq?=ft}P@^ z8*7~nHoyG&u;v4fVUj^IC$d5FMKCW*V=^n~ zJR~Kt&Vre$HJ06G9DS_4ERZ-VXvniXIqf?mKWf%%l{rIWV7D9k%R3fLlFVeOxoJEG zJu&Nmy>_n5X6Ty-+rqiG;d(1xYqmNl?Dq=zBA^x$ht!FV%WQmb3A$l?;Am^1Zdc7O zb?>gg8Sj7+fn;4|+!RO~o-p&G;p9glVs%CtTPFw4wuIeLgD;+Az)rJV9aIgDJ`2ei z2Kg=wN#R_^CEfN&*R3Bh^lD7XN=WQ@h*xbE%{yk3ghoaWT(#44zqjz~#W_Z2{W_0JU!~%SQTozh>?�g%gc<} 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 O;l3ro0{y-pfd2<8aSGo6 literal 0 HcmV?d00001 diff --git a/kicad/rev.2.0/DiLight_2.0-backups/DiLight_2.0-2022-11-23_153957.zip b/kicad/rev.2.0/DiLight_2.0-backups/DiLight_2.0-2022-11-23_153957.zip new file mode 100644 index 0000000000000000000000000000000000000000..f11e7b306a25b37cd72b4a3594c5d2bd68d85a8c GIT binary patch literal 98432 zcmV(^K-IrcO9KQH000080Q`J+Rj!Go`WrL>0PHgb02KfL07Pj_X=iA3UotK*E^BFH zVPs!$V`A*RX>%M`mL>ST&H6utv1iPrF23N~7nzlfiKLiPc2Z)B%&eXnn}NNRM2lD& z08>YS}Bi?@RIqz;?{c@UPIl0Vf_SN6&)%EGc`Al*t z1Q+`2*;jAtdA*7^7gsa9abAD@`al1t|NNh3tLN|O-}vd~-D&>iyk1|=#N2*O4_EJ9 z#>;v&d-Sb-)II*{ef$lLEPsv99=(`9`|xOXefsu1zW;jpSc%!Ar$f&rJ^!}6tJjZa zAFkrLzQ<8{8O z^?dWqj=o^)y%&S;dHRBv@%opYb^`sv{&S7ldj9L%>-k^saP`gf@A>nq`0MHU+w1jL zYfRv?vzviepIw}t)$^O)tC-X8@`c!cm7Z>1Q{8KF@HM%44YT@Pd0Vk~H`hDe$GpCb zS8q?xcb<3C`t0iF|16tneRlET>gKn2RW{$;&Fa=`FNR+0CiO*3JB@U6y7$=d^wKi=XU40T|Rd^&)xF5-+Atr&qMF|>f~M5n-7=E z7cX(bZ!S*Gu&GY+`x>v}d9E|Q`kwgV<4OE@dVO+nb&3U=DKke`gq<6)dgblaX_@#K z!r}7$#myzY`D}T**N45nula_=3jfGC7rf<@w*0@Z*RPh->zL3pNQ;}Zn6ECbXDz$FCc60S%@Qv~}nu9X>CJt-7S-$)~E>b&v zUw7WP{@Yu8-RXILx7!bVa(PwrX(vqW=6U^?-+w5z;)HZlv-5>CgAEgiA-3JG{M%`~ zzBs1^-2LS2qSTq#8Y0$nxl}vvzPo(;{<5B*e>lUa`oFaN;QA7sgZSV3pq!#xH}pGZ z&b$BXE#1dqWqVBc@bnCedK%wy+|ZuUOGEMfvNiL}S}XZUaE$ZcNV>E7guNTra$#(r&m`{uRCv-tJC-IuixQ3^xwVC z@qOJKD6#wPGwh!m|;`|)5R15lK_WC5$;5%DG5}1J3|MvWc zpZd=XJ$v@2|JHwI2fxd2eU}@2Cv3grhx^U9UJ9#;UVOMUD#?exL2bPxhF{WKFUe&y zf8JkDsg|GpEcQRsJ74~nf!{ZS?`+Mz+?~_KJ8tWp-8o&hwKZRIcT$%xZTBb)zqHjQ zwL7`Xm$oKX?N09UrLDHuy;l+2)&9i6VNH^Cv@$7OYiqqcl%#3K9 zX{8*)kCAEXTJZsYTwWtCTE;oY0w_E8Y8KX5tW@xX*`qh_t}Z^jeK&h|0o-v7<#PJ= z-OcP0D*av8KltHDuepl-a0ij1=BBy_%9$_Z=e8C{E^SiO%IR|)nv{6Zbqc`tnkDk=Txyvmu z?QLQ@C(FDpg+&on3sp6j(xc6c-2g8whH*l}SbfkgPdbgg(fN=52pmpR%=p}5ikY0N zZi;*Bx!`9#Xx17w$u;d9Y?`mGPyZc?7Yeq|ZTTDr@$1d+tkzu%)ocl@>Qb4GC9xp1 zV@6gFI3;6_sjrNCeO_RZM{h1ZVDh>y^O>82zHN7wh|9fnwS+99){3>%6m87RqP7t~ zmgcOJrfE6S)dlDJ-~PX!zkBiB&)@y{?7RQ9>M(7c2kC89r8Mpf(>h^dB_=k;5Lm0p zr_=1{9Dt1A{q*+(2@ z;Ux1ZDdq!qug|p#$heW#yXM4Px@G&_&lbyjaO*xP7ff-iN`cljPb`I&Sq?=ft}P@^ z8*7~nHoyG&u;v4fVUj^IC$d5FMKCW*V=^n~ zJR~Kt&Vre$HJ06G9DS_4ERZ-VXvniXIqf?mKWf%%l{rIWV7D9k%R3fLlFVeOxoJEG zJu&Nmy>_n5X6Ty-+rqiG;d(1xYqmNl?Dq=zBA^x$ht!FV%WQmb3A$l?;Am^1Zdc7O zb?>gg8Sj7+fn;4|+!RO~o-p&G;p9glVs%CtTPFw4wuIeLgD;+Az)rJV9aIgDJ`2ei z2Kg=wN#R_^CEfN&*R3Bh^lD7XN=WQ@h*xbE%{yk3ghoaWT(#44zqjz~#W_Z2{W_0JU!~%SQTozh>?�g%gc<} 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�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 Zq`rbQ1myp%2L64+f2)G&`F%e?{ts?42`c~q literal 0 HcmV?d00001 diff --git a/kicad/rev.2.0/DiLight_2.0.kicad_pcb b/kicad/rev.2.0/DiLight_2.0.kicad_pcb index fe1666a..d044d28 100644 --- a/kicad/rev.2.0/DiLight_2.0.kicad_pcb +++ b/kicad/rev.2.0/DiLight_2.0.kicad_pcb @@ -1275,11 +1275,11 @@ ) ) - (gr_line (start 40.005 38.1) (end 40.005 39.37) (layer "B.SilkS") (width 0.8) (tstamp 38224933-2802-473a-b22b-bfa2db445269)) - (gr_line (start 40.64 43.815) (end 39.37 43.815) (layer "B.SilkS") (width 0.8) (tstamp 52653e68-83ef-4bb7-84ca-67158f7f11ea)) + (gr_line (start 40.005 43.175) (end 40.005 44.445) (layer "B.SilkS") (width 0.8) (tstamp 38224933-2802-473a-b22b-bfa2db445269)) + (gr_line (start 40.695 38.81) (end 39.425 38.81) (layer "B.SilkS") (width 0.8) (tstamp 52653e68-83ef-4bb7-84ca-67158f7f11ea)) (gr_line (start 31.115 38.1) (end 31.115 39.37) (layer "B.SilkS") (width 0.8) (tstamp 612a4c37-b35c-45f6-8676-fb80ce63348c)) (gr_line (start 31.115 43.18) (end 31.115 44.45) (layer "B.SilkS") (width 0.8) (tstamp 81074666-2080-4ace-96c4-7b7e3ea6638f)) - (gr_line (start 40.005 43.18) (end 40.005 44.45) (layer "B.SilkS") (width 0.8) (tstamp 84026740-dcbe-4bce-b1b4-a8707e92993a)) + (gr_line (start 40.06 38.175) (end 40.06 39.445) (layer "B.SilkS") (width 0.8) (tstamp 84026740-dcbe-4bce-b1b4-a8707e92993a)) (gr_line (start 30.48 43.815) (end 31.75 43.815) (layer "B.SilkS") (width 0.8) (tstamp c2297378-adea-4989-85da-32442add44e5)) (gr_line (start 25.12 20.02) (end 46.02 20.02) (layer "B.SilkS") (width 0.15) (tstamp c2ed314c-5e11-46ba-bba7-375b8db26538)) (gr_line (start 20.52 35.22) (end 50.62 35.22) (layer "B.SilkS") (width 0.15) (tstamp f9d0fe73-394b-4434-b33d-d8f9042afa86)) @@ -1291,12 +1291,12 @@ (xy 46.82 30.52) (xy 47.62 30.22) ) (layer "F.SilkS") (width 0.15) (fill solid) (tstamp 8ba99d6e-3033-4527-ba9e-cba4f8661ae9)) - (gr_line (start 41.91 38.735) (end 43.18 38.735) (layer "F.SilkS") (width 0.8) (tstamp 980b6030-d3d1-4441-b0b3-6effbc6bd970)) + (gr_line (start 41.825 43.81) (end 43.095 43.81) (layer "F.SilkS") (width 0.8) (tstamp 980b6030-d3d1-4441-b0b3-6effbc6bd970)) (gr_circle (center 34.22 29.32) (end 34.32 29.32) (layer "F.SilkS") (width 0.15) (fill solid) (tstamp bbbddd74-8d1a-48fa-968d-8d6fba110e35)) - (gr_line (start 42.545 43.18) (end 42.545 44.45) (layer "F.SilkS") (width 0.8) (tstamp e6c51a50-25a8-4d13-b440-7ac0e98362c0)) + (gr_line (start 42.46 38.075) (end 42.46 39.345) (layer "F.SilkS") (width 0.8) (tstamp e6c51a50-25a8-4d13-b440-7ac0e98362c0)) (gr_line (start 27.94 38.735) (end 29.21 38.735) (layer "F.SilkS") (width 0.8) (tstamp f59e8307-d385-4a26-b6b6-b679f16cc482)) (gr_line (start 28.575 43.18) (end 28.575 44.45) (layer "F.SilkS") (width 0.8) (tstamp f5c97d0f-18bf-4d9c-bf7f-c555df937e8a)) - (gr_line (start 43.18 43.815) (end 41.91 43.815) (layer "F.SilkS") (width 0.8) (tstamp f6bd6a9f-3836-448e-8a33-d28af201439a)) + (gr_line (start 43.095 38.71) (end 41.825 38.71) (layer "F.SilkS") (width 0.8) (tstamp f6bd6a9f-3836-448e-8a33-d28af201439a)) (gr_arc (start 21.49 46.99) (mid 20.591974 46.618026) (end 20.22 45.72) (layer "Edge.Cuts") (width 0.1) (tstamp 04450dac-2b77-4df6-b7f0-a469623d2b60)) (gr_line (start 21.49 46.99) (end 49.65 46.99) (layer "Edge.Cuts") (width 0.1) (tstamp 0b7fe784-75ed-4d95-9b4c-04158824a904)) (gr_line (start 43.815 16.51) (end 50.92 26.67) (layer "Edge.Cuts") (width 0.1) (tstamp 20e6de26-9a75-46b1-a96c-33dadeb1468b)) @@ -1317,7 +1317,7 @@ (gr_text "LEDs" (at 46.355 34.29) (layer "B.SilkS") (tstamp 5694ecad-8370-47a7-a3c2-124ef8b8da38) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (gr_text "DiLight\nrev. 2.0" (at 35.56 33.655) (layer "B.SilkS") (tstamp 64cc8396-4474-4b60-8528-18d086a6ffed) + (gr_text "DiLight\nrev. 2.0a" (at 35.56 33.655) (layer "B.SilkS") (tstamp 64cc8396-4474-4b60-8528-18d086a6ffed) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) (gr_text "SDA" (at 34.29 20.955) (layer "B.SilkS") (tstamp 6fffc82e-10ef-43b0-be19-20749413a286) @@ -1357,7 +1357,7 @@ (pts (xy 27.305 16.51) (xy 25.12 20.02)) (height -16.51) (orientation 1) - (gr_text "3.5100 mm" (at 9.645 18.265 90) (layer "User.1") (tstamp ce290373-d30a-4e8a-9aff-ed38b8180ab0) + (gr_text "3.5100 mm" (at 9.645 18.265 90) (layer "User.1") (tstamp 34bbf4ff-f471-4e31-bc39-0b5c23e6435f) (effects (font (size 1 1) (thickness 0.15))) ) (format (units 3) (units_format 1) (precision 4)) @@ -1367,7 +1367,7 @@ (pts (xy 22.32 27.94) (xy 48.82 27.94)) (height -15.24) (orientation 0) - (gr_text "26.5000 mm" (at 35.57 11.55) (layer "User.1") (tstamp 3d3774b4-8a09-43b6-87a6-d55a7a1ee0a6) + (gr_text "26.5000 mm" (at 35.57 11.55) (layer "User.1") (tstamp eba4df2f-39f7-434e-ac49-04965eab9385) (effects (font (size 1 1) (thickness 0.15))) ) (format (units 3) (units_format 1) (precision 4)) @@ -1377,7 +1377,7 @@ (pts (xy 43.815 16.51) (xy 48.82 27.94)) (height 12.7) (orientation 1) - (gr_text "11.4300 mm" (at 55.365 22.225 90) (layer "User.1") (tstamp 81afd843-aaa3-4544-ad44-3344a90e8c2b) + (gr_text "11.4300 mm" (at 55.365 22.225 90) (layer "User.1") (tstamp f78f2074-c64e-4475-aa5b-9f2deb54e31a) (effects (font (size 1 1) (thickness 0.15))) ) (format (units 3) (units_format 1) (precision 4)) diff --git a/kicad/rev.2.0/DiLight_2.0.kicad_prl b/kicad/rev.2.0/DiLight_2.0.kicad_prl index fa5a42d..53e5840 100644 --- a/kicad/rev.2.0/DiLight_2.0.kicad_prl +++ b/kicad/rev.2.0/DiLight_2.0.kicad_prl @@ -1,6 +1,6 @@ { "board": { - "active_layer": 0, + "active_layer": 36, "active_layer_preset": "", "auto_track_width": true, "hidden_nets": [],