You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RTC.list 241KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386
  1. RTC.elf: file format elf32-littlearm
  2. Sections:
  3. Idx Name Size VMA LMA File off Algn
  4. 0 .isr_vector 0000013c 08000000 08000000 00010000 2**0
  5. CONTENTS, ALLOC, LOAD, READONLY, DATA
  6. 1 .text 000024a8 0800013c 0800013c 0001013c 2**2
  7. CONTENTS, ALLOC, LOAD, READONLY, CODE
  8. 2 .rodata 00000024 080025e4 080025e4 000125e4 2**2
  9. CONTENTS, ALLOC, LOAD, READONLY, DATA
  10. 3 .ARM.extab 00000000 08002608 08002608 0002000c 2**0
  11. CONTENTS
  12. 4 .ARM 00000008 08002608 08002608 00012608 2**2
  13. CONTENTS, ALLOC, LOAD, READONLY, DATA
  14. 5 .preinit_array 00000000 08002610 08002610 0002000c 2**0
  15. CONTENTS, ALLOC, LOAD, DATA
  16. 6 .init_array 00000004 08002610 08002610 00012610 2**2
  17. CONTENTS, ALLOC, LOAD, DATA
  18. 7 .fini_array 00000004 08002614 08002614 00012614 2**2
  19. CONTENTS, ALLOC, LOAD, DATA
  20. 8 .data 0000000c 20000000 08002618 00020000 2**2
  21. CONTENTS, ALLOC, LOAD, DATA
  22. 9 .bss 00000098 2000000c 08002624 0002000c 2**2
  23. ALLOC
  24. 10 ._user_heap_stack 00000604 200000a4 08002624 000200a4 2**0
  25. ALLOC
  26. 11 .ARM.attributes 00000029 00000000 00000000 0002000c 2**0
  27. CONTENTS, READONLY
  28. 12 .debug_info 00006999 00000000 00000000 00020035 2**0
  29. CONTENTS, READONLY, DEBUGGING
  30. 13 .debug_abbrev 00001431 00000000 00000000 000269ce 2**0
  31. CONTENTS, READONLY, DEBUGGING
  32. 14 .debug_aranges 000006f8 00000000 00000000 00027e00 2**3
  33. CONTENTS, READONLY, DEBUGGING
  34. 15 .debug_ranges 00000640 00000000 00000000 000284f8 2**3
  35. CONTENTS, READONLY, DEBUGGING
  36. 16 .debug_macro 00015151 00000000 00000000 00028b38 2**0
  37. CONTENTS, READONLY, DEBUGGING
  38. 17 .debug_line 000062c4 00000000 00000000 0003dc89 2**0
  39. CONTENTS, READONLY, DEBUGGING
  40. 18 .debug_str 000859c4 00000000 00000000 00043f4d 2**0
  41. CONTENTS, READONLY, DEBUGGING
  42. 19 .comment 0000007b 00000000 00000000 000c9911 2**0
  43. CONTENTS, READONLY
  44. 20 .debug_frame 00001b48 00000000 00000000 000c998c 2**2
  45. CONTENTS, READONLY, DEBUGGING
  46. Disassembly of section .text:
  47. 0800013c <__do_global_dtors_aux>:
  48. 800013c: b510 push {r4, lr}
  49. 800013e: 4c05 ldr r4, [pc, #20] ; (8000154 <__do_global_dtors_aux+0x18>)
  50. 8000140: 7823 ldrb r3, [r4, #0]
  51. 8000142: b933 cbnz r3, 8000152 <__do_global_dtors_aux+0x16>
  52. 8000144: 4b04 ldr r3, [pc, #16] ; (8000158 <__do_global_dtors_aux+0x1c>)
  53. 8000146: b113 cbz r3, 800014e <__do_global_dtors_aux+0x12>
  54. 8000148: 4804 ldr r0, [pc, #16] ; (800015c <__do_global_dtors_aux+0x20>)
  55. 800014a: f3af 8000 nop.w
  56. 800014e: 2301 movs r3, #1
  57. 8000150: 7023 strb r3, [r4, #0]
  58. 8000152: bd10 pop {r4, pc}
  59. 8000154: 2000000c .word 0x2000000c
  60. 8000158: 00000000 .word 0x00000000
  61. 800015c: 080025cc .word 0x080025cc
  62. 08000160 <frame_dummy>:
  63. 8000160: b508 push {r3, lr}
  64. 8000162: 4b03 ldr r3, [pc, #12] ; (8000170 <frame_dummy+0x10>)
  65. 8000164: b11b cbz r3, 800016e <frame_dummy+0xe>
  66. 8000166: 4903 ldr r1, [pc, #12] ; (8000174 <frame_dummy+0x14>)
  67. 8000168: 4803 ldr r0, [pc, #12] ; (8000178 <frame_dummy+0x18>)
  68. 800016a: f3af 8000 nop.w
  69. 800016e: bd08 pop {r3, pc}
  70. 8000170: 00000000 .word 0x00000000
  71. 8000174: 20000010 .word 0x20000010
  72. 8000178: 080025cc .word 0x080025cc
  73. 0800017c <__aeabi_uldivmod>:
  74. 800017c: b953 cbnz r3, 8000194 <__aeabi_uldivmod+0x18>
  75. 800017e: b94a cbnz r2, 8000194 <__aeabi_uldivmod+0x18>
  76. 8000180: 2900 cmp r1, #0
  77. 8000182: bf08 it eq
  78. 8000184: 2800 cmpeq r0, #0
  79. 8000186: bf1c itt ne
  80. 8000188: f04f 31ff movne.w r1, #4294967295
  81. 800018c: f04f 30ff movne.w r0, #4294967295
  82. 8000190: f000 b974 b.w 800047c <__aeabi_idiv0>
  83. 8000194: f1ad 0c08 sub.w ip, sp, #8
  84. 8000198: e96d ce04 strd ip, lr, [sp, #-16]!
  85. 800019c: f000 f806 bl 80001ac <__udivmoddi4>
  86. 80001a0: f8dd e004 ldr.w lr, [sp, #4]
  87. 80001a4: e9dd 2302 ldrd r2, r3, [sp, #8]
  88. 80001a8: b004 add sp, #16
  89. 80001aa: 4770 bx lr
  90. 080001ac <__udivmoddi4>:
  91. 80001ac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
  92. 80001b0: 468c mov ip, r1
  93. 80001b2: 4604 mov r4, r0
  94. 80001b4: 9e08 ldr r6, [sp, #32]
  95. 80001b6: 2b00 cmp r3, #0
  96. 80001b8: d14b bne.n 8000252 <__udivmoddi4+0xa6>
  97. 80001ba: 428a cmp r2, r1
  98. 80001bc: 4615 mov r5, r2
  99. 80001be: d967 bls.n 8000290 <__udivmoddi4+0xe4>
  100. 80001c0: fab2 f282 clz r2, r2
  101. 80001c4: b14a cbz r2, 80001da <__udivmoddi4+0x2e>
  102. 80001c6: f1c2 0720 rsb r7, r2, #32
  103. 80001ca: fa01 f302 lsl.w r3, r1, r2
  104. 80001ce: fa20 f707 lsr.w r7, r0, r7
  105. 80001d2: 4095 lsls r5, r2
  106. 80001d4: ea47 0c03 orr.w ip, r7, r3
  107. 80001d8: 4094 lsls r4, r2
  108. 80001da: ea4f 4e15 mov.w lr, r5, lsr #16
  109. 80001de: fbbc f7fe udiv r7, ip, lr
  110. 80001e2: fa1f f885 uxth.w r8, r5
  111. 80001e6: fb0e c317 mls r3, lr, r7, ip
  112. 80001ea: fb07 f908 mul.w r9, r7, r8
  113. 80001ee: 0c21 lsrs r1, r4, #16
  114. 80001f0: ea41 4303 orr.w r3, r1, r3, lsl #16
  115. 80001f4: 4599 cmp r9, r3
  116. 80001f6: d909 bls.n 800020c <__udivmoddi4+0x60>
  117. 80001f8: 18eb adds r3, r5, r3
  118. 80001fa: f107 31ff add.w r1, r7, #4294967295
  119. 80001fe: f080 811c bcs.w 800043a <__udivmoddi4+0x28e>
  120. 8000202: 4599 cmp r9, r3
  121. 8000204: f240 8119 bls.w 800043a <__udivmoddi4+0x28e>
  122. 8000208: 3f02 subs r7, #2
  123. 800020a: 442b add r3, r5
  124. 800020c: eba3 0309 sub.w r3, r3, r9
  125. 8000210: fbb3 f0fe udiv r0, r3, lr
  126. 8000214: fb0e 3310 mls r3, lr, r0, r3
  127. 8000218: fb00 f108 mul.w r1, r0, r8
  128. 800021c: b2a4 uxth r4, r4
  129. 800021e: ea44 4403 orr.w r4, r4, r3, lsl #16
  130. 8000222: 42a1 cmp r1, r4
  131. 8000224: d909 bls.n 800023a <__udivmoddi4+0x8e>
  132. 8000226: 192c adds r4, r5, r4
  133. 8000228: f100 33ff add.w r3, r0, #4294967295
  134. 800022c: f080 8107 bcs.w 800043e <__udivmoddi4+0x292>
  135. 8000230: 42a1 cmp r1, r4
  136. 8000232: f240 8104 bls.w 800043e <__udivmoddi4+0x292>
  137. 8000236: 3802 subs r0, #2
  138. 8000238: 442c add r4, r5
  139. 800023a: ea40 4007 orr.w r0, r0, r7, lsl #16
  140. 800023e: 2700 movs r7, #0
  141. 8000240: 1a64 subs r4, r4, r1
  142. 8000242: b11e cbz r6, 800024c <__udivmoddi4+0xa0>
  143. 8000244: 2300 movs r3, #0
  144. 8000246: 40d4 lsrs r4, r2
  145. 8000248: e9c6 4300 strd r4, r3, [r6]
  146. 800024c: 4639 mov r1, r7
  147. 800024e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  148. 8000252: 428b cmp r3, r1
  149. 8000254: d909 bls.n 800026a <__udivmoddi4+0xbe>
  150. 8000256: 2e00 cmp r6, #0
  151. 8000258: f000 80ec beq.w 8000434 <__udivmoddi4+0x288>
  152. 800025c: 2700 movs r7, #0
  153. 800025e: e9c6 0100 strd r0, r1, [r6]
  154. 8000262: 4638 mov r0, r7
  155. 8000264: 4639 mov r1, r7
  156. 8000266: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  157. 800026a: fab3 f783 clz r7, r3
  158. 800026e: 2f00 cmp r7, #0
  159. 8000270: d148 bne.n 8000304 <__udivmoddi4+0x158>
  160. 8000272: 428b cmp r3, r1
  161. 8000274: d302 bcc.n 800027c <__udivmoddi4+0xd0>
  162. 8000276: 4282 cmp r2, r0
  163. 8000278: f200 80fb bhi.w 8000472 <__udivmoddi4+0x2c6>
  164. 800027c: 1a84 subs r4, r0, r2
  165. 800027e: eb61 0303 sbc.w r3, r1, r3
  166. 8000282: 2001 movs r0, #1
  167. 8000284: 469c mov ip, r3
  168. 8000286: 2e00 cmp r6, #0
  169. 8000288: d0e0 beq.n 800024c <__udivmoddi4+0xa0>
  170. 800028a: e9c6 4c00 strd r4, ip, [r6]
  171. 800028e: e7dd b.n 800024c <__udivmoddi4+0xa0>
  172. 8000290: b902 cbnz r2, 8000294 <__udivmoddi4+0xe8>
  173. 8000292: deff udf #255 ; 0xff
  174. 8000294: fab2 f282 clz r2, r2
  175. 8000298: 2a00 cmp r2, #0
  176. 800029a: f040 808f bne.w 80003bc <__udivmoddi4+0x210>
  177. 800029e: 2701 movs r7, #1
  178. 80002a0: 1b49 subs r1, r1, r5
  179. 80002a2: ea4f 4815 mov.w r8, r5, lsr #16
  180. 80002a6: fa1f f985 uxth.w r9, r5
  181. 80002aa: fbb1 fef8 udiv lr, r1, r8
  182. 80002ae: fb08 111e mls r1, r8, lr, r1
  183. 80002b2: fb09 f00e mul.w r0, r9, lr
  184. 80002b6: ea4f 4c14 mov.w ip, r4, lsr #16
  185. 80002ba: ea4c 4301 orr.w r3, ip, r1, lsl #16
  186. 80002be: 4298 cmp r0, r3
  187. 80002c0: d907 bls.n 80002d2 <__udivmoddi4+0x126>
  188. 80002c2: 18eb adds r3, r5, r3
  189. 80002c4: f10e 31ff add.w r1, lr, #4294967295
  190. 80002c8: d202 bcs.n 80002d0 <__udivmoddi4+0x124>
  191. 80002ca: 4298 cmp r0, r3
  192. 80002cc: f200 80cd bhi.w 800046a <__udivmoddi4+0x2be>
  193. 80002d0: 468e mov lr, r1
  194. 80002d2: 1a1b subs r3, r3, r0
  195. 80002d4: fbb3 f0f8 udiv r0, r3, r8
  196. 80002d8: fb08 3310 mls r3, r8, r0, r3
  197. 80002dc: fb09 f900 mul.w r9, r9, r0
  198. 80002e0: b2a4 uxth r4, r4
  199. 80002e2: ea44 4403 orr.w r4, r4, r3, lsl #16
  200. 80002e6: 45a1 cmp r9, r4
  201. 80002e8: d907 bls.n 80002fa <__udivmoddi4+0x14e>
  202. 80002ea: 192c adds r4, r5, r4
  203. 80002ec: f100 33ff add.w r3, r0, #4294967295
  204. 80002f0: d202 bcs.n 80002f8 <__udivmoddi4+0x14c>
  205. 80002f2: 45a1 cmp r9, r4
  206. 80002f4: f200 80b6 bhi.w 8000464 <__udivmoddi4+0x2b8>
  207. 80002f8: 4618 mov r0, r3
  208. 80002fa: eba4 0409 sub.w r4, r4, r9
  209. 80002fe: ea40 400e orr.w r0, r0, lr, lsl #16
  210. 8000302: e79e b.n 8000242 <__udivmoddi4+0x96>
  211. 8000304: f1c7 0520 rsb r5, r7, #32
  212. 8000308: 40bb lsls r3, r7
  213. 800030a: fa22 fc05 lsr.w ip, r2, r5
  214. 800030e: ea4c 0c03 orr.w ip, ip, r3
  215. 8000312: fa21 f405 lsr.w r4, r1, r5
  216. 8000316: ea4f 4e1c mov.w lr, ip, lsr #16
  217. 800031a: fbb4 f9fe udiv r9, r4, lr
  218. 800031e: fa1f f88c uxth.w r8, ip
  219. 8000322: fb0e 4419 mls r4, lr, r9, r4
  220. 8000326: fa20 f305 lsr.w r3, r0, r5
  221. 800032a: 40b9 lsls r1, r7
  222. 800032c: fb09 fa08 mul.w sl, r9, r8
  223. 8000330: 4319 orrs r1, r3
  224. 8000332: 0c0b lsrs r3, r1, #16
  225. 8000334: ea43 4404 orr.w r4, r3, r4, lsl #16
  226. 8000338: 45a2 cmp sl, r4
  227. 800033a: fa02 f207 lsl.w r2, r2, r7
  228. 800033e: fa00 f307 lsl.w r3, r0, r7
  229. 8000342: d90b bls.n 800035c <__udivmoddi4+0x1b0>
  230. 8000344: eb1c 0404 adds.w r4, ip, r4
  231. 8000348: f109 30ff add.w r0, r9, #4294967295
  232. 800034c: f080 8088 bcs.w 8000460 <__udivmoddi4+0x2b4>
  233. 8000350: 45a2 cmp sl, r4
  234. 8000352: f240 8085 bls.w 8000460 <__udivmoddi4+0x2b4>
  235. 8000356: f1a9 0902 sub.w r9, r9, #2
  236. 800035a: 4464 add r4, ip
  237. 800035c: eba4 040a sub.w r4, r4, sl
  238. 8000360: fbb4 f0fe udiv r0, r4, lr
  239. 8000364: fb0e 4410 mls r4, lr, r0, r4
  240. 8000368: fb00 fa08 mul.w sl, r0, r8
  241. 800036c: b289 uxth r1, r1
  242. 800036e: ea41 4404 orr.w r4, r1, r4, lsl #16
  243. 8000372: 45a2 cmp sl, r4
  244. 8000374: d908 bls.n 8000388 <__udivmoddi4+0x1dc>
  245. 8000376: eb1c 0404 adds.w r4, ip, r4
  246. 800037a: f100 31ff add.w r1, r0, #4294967295
  247. 800037e: d26b bcs.n 8000458 <__udivmoddi4+0x2ac>
  248. 8000380: 45a2 cmp sl, r4
  249. 8000382: d969 bls.n 8000458 <__udivmoddi4+0x2ac>
  250. 8000384: 3802 subs r0, #2
  251. 8000386: 4464 add r4, ip
  252. 8000388: ea40 4009 orr.w r0, r0, r9, lsl #16
  253. 800038c: fba0 8902 umull r8, r9, r0, r2
  254. 8000390: eba4 040a sub.w r4, r4, sl
  255. 8000394: 454c cmp r4, r9
  256. 8000396: 4641 mov r1, r8
  257. 8000398: 46ce mov lr, r9
  258. 800039a: d354 bcc.n 8000446 <__udivmoddi4+0x29a>
  259. 800039c: d051 beq.n 8000442 <__udivmoddi4+0x296>
  260. 800039e: 2e00 cmp r6, #0
  261. 80003a0: d069 beq.n 8000476 <__udivmoddi4+0x2ca>
  262. 80003a2: 1a5a subs r2, r3, r1
  263. 80003a4: eb64 040e sbc.w r4, r4, lr
  264. 80003a8: fa04 f505 lsl.w r5, r4, r5
  265. 80003ac: fa22 f307 lsr.w r3, r2, r7
  266. 80003b0: 40fc lsrs r4, r7
  267. 80003b2: 431d orrs r5, r3
  268. 80003b4: e9c6 5400 strd r5, r4, [r6]
  269. 80003b8: 2700 movs r7, #0
  270. 80003ba: e747 b.n 800024c <__udivmoddi4+0xa0>
  271. 80003bc: 4095 lsls r5, r2
  272. 80003be: f1c2 0320 rsb r3, r2, #32
  273. 80003c2: fa21 f003 lsr.w r0, r1, r3
  274. 80003c6: ea4f 4815 mov.w r8, r5, lsr #16
  275. 80003ca: fbb0 f7f8 udiv r7, r0, r8
  276. 80003ce: fa1f f985 uxth.w r9, r5
  277. 80003d2: fb08 0017 mls r0, r8, r7, r0
  278. 80003d6: fa24 f303 lsr.w r3, r4, r3
  279. 80003da: 4091 lsls r1, r2
  280. 80003dc: fb07 fc09 mul.w ip, r7, r9
  281. 80003e0: 430b orrs r3, r1
  282. 80003e2: 0c19 lsrs r1, r3, #16
  283. 80003e4: ea41 4100 orr.w r1, r1, r0, lsl #16
  284. 80003e8: 458c cmp ip, r1
  285. 80003ea: fa04 f402 lsl.w r4, r4, r2
  286. 80003ee: d907 bls.n 8000400 <__udivmoddi4+0x254>
  287. 80003f0: 1869 adds r1, r5, r1
  288. 80003f2: f107 30ff add.w r0, r7, #4294967295
  289. 80003f6: d231 bcs.n 800045c <__udivmoddi4+0x2b0>
  290. 80003f8: 458c cmp ip, r1
  291. 80003fa: d92f bls.n 800045c <__udivmoddi4+0x2b0>
  292. 80003fc: 3f02 subs r7, #2
  293. 80003fe: 4429 add r1, r5
  294. 8000400: eba1 010c sub.w r1, r1, ip
  295. 8000404: fbb1 f0f8 udiv r0, r1, r8
  296. 8000408: fb08 1c10 mls ip, r8, r0, r1
  297. 800040c: fb00 fe09 mul.w lr, r0, r9
  298. 8000410: b299 uxth r1, r3
  299. 8000412: ea41 410c orr.w r1, r1, ip, lsl #16
  300. 8000416: 458e cmp lr, r1
  301. 8000418: d907 bls.n 800042a <__udivmoddi4+0x27e>
  302. 800041a: 1869 adds r1, r5, r1
  303. 800041c: f100 33ff add.w r3, r0, #4294967295
  304. 8000420: d218 bcs.n 8000454 <__udivmoddi4+0x2a8>
  305. 8000422: 458e cmp lr, r1
  306. 8000424: d916 bls.n 8000454 <__udivmoddi4+0x2a8>
  307. 8000426: 3802 subs r0, #2
  308. 8000428: 4429 add r1, r5
  309. 800042a: eba1 010e sub.w r1, r1, lr
  310. 800042e: ea40 4707 orr.w r7, r0, r7, lsl #16
  311. 8000432: e73a b.n 80002aa <__udivmoddi4+0xfe>
  312. 8000434: 4637 mov r7, r6
  313. 8000436: 4630 mov r0, r6
  314. 8000438: e708 b.n 800024c <__udivmoddi4+0xa0>
  315. 800043a: 460f mov r7, r1
  316. 800043c: e6e6 b.n 800020c <__udivmoddi4+0x60>
  317. 800043e: 4618 mov r0, r3
  318. 8000440: e6fb b.n 800023a <__udivmoddi4+0x8e>
  319. 8000442: 4543 cmp r3, r8
  320. 8000444: d2ab bcs.n 800039e <__udivmoddi4+0x1f2>
  321. 8000446: ebb8 0102 subs.w r1, r8, r2
  322. 800044a: eb69 020c sbc.w r2, r9, ip
  323. 800044e: 3801 subs r0, #1
  324. 8000450: 4696 mov lr, r2
  325. 8000452: e7a4 b.n 800039e <__udivmoddi4+0x1f2>
  326. 8000454: 4618 mov r0, r3
  327. 8000456: e7e8 b.n 800042a <__udivmoddi4+0x27e>
  328. 8000458: 4608 mov r0, r1
  329. 800045a: e795 b.n 8000388 <__udivmoddi4+0x1dc>
  330. 800045c: 4607 mov r7, r0
  331. 800045e: e7cf b.n 8000400 <__udivmoddi4+0x254>
  332. 8000460: 4681 mov r9, r0
  333. 8000462: e77b b.n 800035c <__udivmoddi4+0x1b0>
  334. 8000464: 3802 subs r0, #2
  335. 8000466: 442c add r4, r5
  336. 8000468: e747 b.n 80002fa <__udivmoddi4+0x14e>
  337. 800046a: f1ae 0e02 sub.w lr, lr, #2
  338. 800046e: 442b add r3, r5
  339. 8000470: e72f b.n 80002d2 <__udivmoddi4+0x126>
  340. 8000472: 4638 mov r0, r7
  341. 8000474: e707 b.n 8000286 <__udivmoddi4+0xda>
  342. 8000476: 4637 mov r7, r6
  343. 8000478: e6e8 b.n 800024c <__udivmoddi4+0xa0>
  344. 800047a: bf00 nop
  345. 0800047c <__aeabi_idiv0>:
  346. 800047c: 4770 bx lr
  347. 800047e: bf00 nop
  348. 08000480 <main>:
  349. /**
  350. * @brief The application entry point.
  351. * @retval int
  352. */
  353. int main(void)
  354. {
  355. 8000480: b580 push {r7, lr}
  356. 8000482: b082 sub sp, #8
  357. 8000484: af00 add r7, sp, #0
  358. /* USER CODE END 1 */
  359. /* MCU Configuration--------------------------------------------------------*/
  360. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  361. HAL_Init();
  362. 8000486: f000 fa7e bl 8000986 <HAL_Init>
  363. /* USER CODE BEGIN Init */
  364. /* USER CODE END Init */
  365. /* Configure the system clock */
  366. SystemClock_Config();
  367. 800048a: f000 f843 bl 8000514 <SystemClock_Config>
  368. /* USER CODE BEGIN SysInit */
  369. /* USER CODE END SysInit */
  370. /* Initialize all configured peripherals */
  371. MX_GPIO_Init();
  372. 800048e: f000 f927 bl 80006e0 <MX_GPIO_Init>
  373. MX_USART2_UART_Init();
  374. 8000492: f000 f8fb bl 800068c <MX_USART2_UART_Init>
  375. MX_RTC_Init();
  376. 8000496: f000 f8a1 bl 80005dc <MX_RTC_Init>
  377. /* USER CODE BEGIN 2 */
  378. uint8_t hours = 0;
  379. 800049a: 2300 movs r3, #0
  380. 800049c: 71fb strb r3, [r7, #7]
  381. uint8_t minutes = 0;
  382. 800049e: 2300 movs r3, #0
  383. 80004a0: 71bb strb r3, [r7, #6]
  384. uint8_t seconds = 0;
  385. 80004a2: 2300 movs r3, #0
  386. 80004a4: 717b strb r3, [r7, #5]
  387. uint8_t weekDay = 0;
  388. 80004a6: 2300 movs r3, #0
  389. 80004a8: 713b strb r3, [r7, #4]
  390. uint8_t month = 0;
  391. 80004aa: 2300 movs r3, #0
  392. 80004ac: 70fb strb r3, [r7, #3]
  393. uint8_t date = 0;
  394. 80004ae: 2300 movs r3, #0
  395. 80004b0: 70bb strb r3, [r7, #2]
  396. uint8_t year = 0;
  397. 80004b2: 2300 movs r3, #0
  398. 80004b4: 707b strb r3, [r7, #1]
  399. /* Infinite loop */
  400. /* USER CODE BEGIN WHILE */
  401. while (1)
  402. {
  403. /* USER CODE END WHILE */
  404. if (HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN) == HAL_OK)
  405. 80004b6: 2200 movs r2, #0
  406. 80004b8: 4913 ldr r1, [pc, #76] ; (8000508 <main+0x88>)
  407. 80004ba: 4814 ldr r0, [pc, #80] ; (800050c <main+0x8c>)
  408. 80004bc: f001 fd4f bl 8001f5e <HAL_RTC_GetTime>
  409. 80004c0: 4603 mov r3, r0
  410. 80004c2: 2b00 cmp r3, #0
  411. 80004c4: d108 bne.n 80004d8 <main+0x58>
  412. {
  413. hours = sTime.Hours;
  414. 80004c6: 4b10 ldr r3, [pc, #64] ; (8000508 <main+0x88>)
  415. 80004c8: 781b ldrb r3, [r3, #0]
  416. 80004ca: 71fb strb r3, [r7, #7]
  417. minutes = sTime.Minutes;
  418. 80004cc: 4b0e ldr r3, [pc, #56] ; (8000508 <main+0x88>)
  419. 80004ce: 785b ldrb r3, [r3, #1]
  420. 80004d0: 71bb strb r3, [r7, #6]
  421. seconds = sTime.Seconds;
  422. 80004d2: 4b0d ldr r3, [pc, #52] ; (8000508 <main+0x88>)
  423. 80004d4: 789b ldrb r3, [r3, #2]
  424. 80004d6: 717b strb r3, [r7, #5]
  425. }
  426. if (HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN) == HAL_OK)
  427. 80004d8: 2200 movs r2, #0
  428. 80004da: 490d ldr r1, [pc, #52] ; (8000510 <main+0x90>)
  429. 80004dc: 480b ldr r0, [pc, #44] ; (800050c <main+0x8c>)
  430. 80004de: f001 fe39 bl 8002154 <HAL_RTC_GetDate>
  431. 80004e2: 4603 mov r3, r0
  432. 80004e4: 2b00 cmp r3, #0
  433. 80004e6: d10b bne.n 8000500 <main+0x80>
  434. {
  435. weekDay = sDate.WeekDay;
  436. 80004e8: 4b09 ldr r3, [pc, #36] ; (8000510 <main+0x90>)
  437. 80004ea: 781b ldrb r3, [r3, #0]
  438. 80004ec: 713b strb r3, [r7, #4]
  439. month = sDate.Month;
  440. 80004ee: 4b08 ldr r3, [pc, #32] ; (8000510 <main+0x90>)
  441. 80004f0: 785b ldrb r3, [r3, #1]
  442. 80004f2: 70fb strb r3, [r7, #3]
  443. date = sDate.Date;
  444. 80004f4: 4b06 ldr r3, [pc, #24] ; (8000510 <main+0x90>)
  445. 80004f6: 789b ldrb r3, [r3, #2]
  446. 80004f8: 70bb strb r3, [r7, #2]
  447. year = sDate.Year;
  448. 80004fa: 4b05 ldr r3, [pc, #20] ; (8000510 <main+0x90>)
  449. 80004fc: 78db ldrb r3, [r3, #3]
  450. 80004fe: 707b strb r3, [r7, #1]
  451. }
  452. HAL_Delay(200);
  453. 8000500: 20c8 movs r0, #200 ; 0xc8
  454. 8000502: f000 faaf bl 8000a64 <HAL_Delay>
  455. if (HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN) == HAL_OK)
  456. 8000506: e7d6 b.n 80004b6 <main+0x36>
  457. 8000508: 20000028 .word 0x20000028
  458. 800050c: 20000040 .word 0x20000040
  459. 8000510: 2000003c .word 0x2000003c
  460. 08000514 <SystemClock_Config>:
  461. /**
  462. * @brief System Clock Configuration
  463. * @retval None
  464. */
  465. void SystemClock_Config(void)
  466. {
  467. 8000514: b580 push {r7, lr}
  468. 8000516: b096 sub sp, #88 ; 0x58
  469. 8000518: af00 add r7, sp, #0
  470. RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  471. 800051a: f107 0324 add.w r3, r7, #36 ; 0x24
  472. 800051e: 2234 movs r2, #52 ; 0x34
  473. 8000520: 2100 movs r1, #0
  474. 8000522: 4618 mov r0, r3
  475. 8000524: f002 f84a bl 80025bc <memset>
  476. RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  477. 8000528: f107 0310 add.w r3, r7, #16
  478. 800052c: 2200 movs r2, #0
  479. 800052e: 601a str r2, [r3, #0]
  480. 8000530: 605a str r2, [r3, #4]
  481. 8000532: 609a str r2, [r3, #8]
  482. 8000534: 60da str r2, [r3, #12]
  483. 8000536: 611a str r2, [r3, #16]
  484. RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
  485. 8000538: 1d3b adds r3, r7, #4
  486. 800053a: 2200 movs r2, #0
  487. 800053c: 601a str r2, [r3, #0]
  488. 800053e: 605a str r2, [r3, #4]
  489. 8000540: 609a str r2, [r3, #8]
  490. /** Configure the main internal regulator output voltage
  491. */
  492. __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
  493. 8000542: 4b25 ldr r3, [pc, #148] ; (80005d8 <SystemClock_Config+0xc4>)
  494. 8000544: 681b ldr r3, [r3, #0]
  495. 8000546: f423 53c0 bic.w r3, r3, #6144 ; 0x1800
  496. 800054a: 4a23 ldr r2, [pc, #140] ; (80005d8 <SystemClock_Config+0xc4>)
  497. 800054c: f443 6300 orr.w r3, r3, #2048 ; 0x800
  498. 8000550: 6013 str r3, [r2, #0]
  499. /** Initializes the RCC Oscillators according to the specified parameters
  500. * in the RCC_OscInitTypeDef structure.
  501. */
  502. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSE;
  503. 8000552: 2306 movs r3, #6
  504. 8000554: 627b str r3, [r7, #36] ; 0x24
  505. RCC_OscInitStruct.LSEState = RCC_LSE_ON;
  506. 8000556: 2301 movs r3, #1
  507. 8000558: 62fb str r3, [r7, #44] ; 0x2c
  508. RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  509. 800055a: 2301 movs r3, #1
  510. 800055c: 633b str r3, [r7, #48] ; 0x30
  511. RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  512. 800055e: 2310 movs r3, #16
  513. 8000560: 637b str r3, [r7, #52] ; 0x34
  514. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  515. 8000562: 2302 movs r3, #2
  516. 8000564: 64bb str r3, [r7, #72] ; 0x48
  517. RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
  518. 8000566: 2300 movs r3, #0
  519. 8000568: 64fb str r3, [r7, #76] ; 0x4c
  520. RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
  521. 800056a: f44f 2300 mov.w r3, #524288 ; 0x80000
  522. 800056e: 653b str r3, [r7, #80] ; 0x50
  523. RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV3;
  524. 8000570: f44f 0300 mov.w r3, #8388608 ; 0x800000
  525. 8000574: 657b str r3, [r7, #84] ; 0x54
  526. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  527. 8000576: f107 0324 add.w r3, r7, #36 ; 0x24
  528. 800057a: 4618 mov r0, r3
  529. 800057c: f000 fd1e bl 8000fbc <HAL_RCC_OscConfig>
  530. 8000580: 4603 mov r3, r0
  531. 8000582: 2b00 cmp r3, #0
  532. 8000584: d001 beq.n 800058a <SystemClock_Config+0x76>
  533. {
  534. Error_Handler();
  535. 8000586: f000 f913 bl 80007b0 <Error_Handler>
  536. }
  537. /** Initializes the CPU, AHB and APB buses clocks
  538. */
  539. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  540. 800058a: 230f movs r3, #15
  541. 800058c: 613b str r3, [r7, #16]
  542. |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  543. RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  544. 800058e: 2303 movs r3, #3
  545. 8000590: 617b str r3, [r7, #20]
  546. RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  547. 8000592: 2300 movs r3, #0
  548. 8000594: 61bb str r3, [r7, #24]
  549. RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  550. 8000596: 2300 movs r3, #0
  551. 8000598: 61fb str r3, [r7, #28]
  552. RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  553. 800059a: 2300 movs r3, #0
  554. 800059c: 623b str r3, [r7, #32]
  555. if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
  556. 800059e: f107 0310 add.w r3, r7, #16
  557. 80005a2: 2101 movs r1, #1
  558. 80005a4: 4618 mov r0, r3
  559. 80005a6: f001 f839 bl 800161c <HAL_RCC_ClockConfig>
  560. 80005aa: 4603 mov r3, r0
  561. 80005ac: 2b00 cmp r3, #0
  562. 80005ae: d001 beq.n 80005b4 <SystemClock_Config+0xa0>
  563. {
  564. Error_Handler();
  565. 80005b0: f000 f8fe bl 80007b0 <Error_Handler>
  566. }
  567. PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;
  568. 80005b4: 2301 movs r3, #1
  569. 80005b6: 607b str r3, [r7, #4]
  570. PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
  571. 80005b8: f44f 3380 mov.w r3, #65536 ; 0x10000
  572. 80005bc: 60bb str r3, [r7, #8]
  573. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  574. 80005be: 1d3b adds r3, r7, #4
  575. 80005c0: 4618 mov r0, r3
  576. 80005c2: f001 fabb bl 8001b3c <HAL_RCCEx_PeriphCLKConfig>
  577. 80005c6: 4603 mov r3, r0
  578. 80005c8: 2b00 cmp r3, #0
  579. 80005ca: d001 beq.n 80005d0 <SystemClock_Config+0xbc>
  580. {
  581. Error_Handler();
  582. 80005cc: f000 f8f0 bl 80007b0 <Error_Handler>
  583. }
  584. }
  585. 80005d0: bf00 nop
  586. 80005d2: 3758 adds r7, #88 ; 0x58
  587. 80005d4: 46bd mov sp, r7
  588. 80005d6: bd80 pop {r7, pc}
  589. 80005d8: 40007000 .word 0x40007000
  590. 080005dc <MX_RTC_Init>:
  591. * @brief RTC Initialization Function
  592. * @param None
  593. * @retval None
  594. */
  595. static void MX_RTC_Init(void)
  596. {
  597. 80005dc: b580 push {r7, lr}
  598. 80005de: af00 add r7, sp, #0
  599. /* USER CODE BEGIN RTC_Init 1 */
  600. /* USER CODE END RTC_Init 1 */
  601. /** Initialize RTC Only
  602. */
  603. hrtc.Instance = RTC;
  604. 80005e0: 4b26 ldr r3, [pc, #152] ; (800067c <MX_RTC_Init+0xa0>)
  605. 80005e2: 4a27 ldr r2, [pc, #156] ; (8000680 <MX_RTC_Init+0xa4>)
  606. 80005e4: 601a str r2, [r3, #0]
  607. hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  608. 80005e6: 4b25 ldr r3, [pc, #148] ; (800067c <MX_RTC_Init+0xa0>)
  609. 80005e8: 2200 movs r2, #0
  610. 80005ea: 605a str r2, [r3, #4]
  611. hrtc.Init.AsynchPrediv = 127;
  612. 80005ec: 4b23 ldr r3, [pc, #140] ; (800067c <MX_RTC_Init+0xa0>)
  613. 80005ee: 227f movs r2, #127 ; 0x7f
  614. 80005f0: 609a str r2, [r3, #8]
  615. hrtc.Init.SynchPrediv = 255;
  616. 80005f2: 4b22 ldr r3, [pc, #136] ; (800067c <MX_RTC_Init+0xa0>)
  617. 80005f4: 22ff movs r2, #255 ; 0xff
  618. 80005f6: 60da str r2, [r3, #12]
  619. hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  620. 80005f8: 4b20 ldr r3, [pc, #128] ; (800067c <MX_RTC_Init+0xa0>)
  621. 80005fa: 2200 movs r2, #0
  622. 80005fc: 611a str r2, [r3, #16]
  623. hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  624. 80005fe: 4b1f ldr r3, [pc, #124] ; (800067c <MX_RTC_Init+0xa0>)
  625. 8000600: 2200 movs r2, #0
  626. 8000602: 615a str r2, [r3, #20]
  627. hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  628. 8000604: 4b1d ldr r3, [pc, #116] ; (800067c <MX_RTC_Init+0xa0>)
  629. 8000606: 2200 movs r2, #0
  630. 8000608: 619a str r2, [r3, #24]
  631. if (HAL_RTC_Init(&hrtc) != HAL_OK)
  632. 800060a: 481c ldr r0, [pc, #112] ; (800067c <MX_RTC_Init+0xa0>)
  633. 800060c: f001 fb78 bl 8001d00 <HAL_RTC_Init>
  634. 8000610: 4603 mov r3, r0
  635. 8000612: 2b00 cmp r3, #0
  636. 8000614: d001 beq.n 800061a <MX_RTC_Init+0x3e>
  637. {
  638. Error_Handler();
  639. 8000616: f000 f8cb bl 80007b0 <Error_Handler>
  640. /* USER CODE END Check_RTC_BKUP */
  641. /** Initialize RTC and set the Time and Date
  642. */
  643. sTime.Hours = 23;
  644. 800061a: 4b1a ldr r3, [pc, #104] ; (8000684 <MX_RTC_Init+0xa8>)
  645. 800061c: 2217 movs r2, #23
  646. 800061e: 701a strb r2, [r3, #0]
  647. sTime.Minutes = 59;
  648. 8000620: 4b18 ldr r3, [pc, #96] ; (8000684 <MX_RTC_Init+0xa8>)
  649. 8000622: 223b movs r2, #59 ; 0x3b
  650. 8000624: 705a strb r2, [r3, #1]
  651. sTime.Seconds = 45;
  652. 8000626: 4b17 ldr r3, [pc, #92] ; (8000684 <MX_RTC_Init+0xa8>)
  653. 8000628: 222d movs r2, #45 ; 0x2d
  654. 800062a: 709a strb r2, [r3, #2]
  655. sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  656. 800062c: 4b15 ldr r3, [pc, #84] ; (8000684 <MX_RTC_Init+0xa8>)
  657. 800062e: 2200 movs r2, #0
  658. 8000630: 60da str r2, [r3, #12]
  659. sTime.StoreOperation = RTC_STOREOPERATION_RESET;
  660. 8000632: 4b14 ldr r3, [pc, #80] ; (8000684 <MX_RTC_Init+0xa8>)
  661. 8000634: 2200 movs r2, #0
  662. 8000636: 611a str r2, [r3, #16]
  663. if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
  664. 8000638: 2200 movs r2, #0
  665. 800063a: 4912 ldr r1, [pc, #72] ; (8000684 <MX_RTC_Init+0xa8>)
  666. 800063c: 480f ldr r0, [pc, #60] ; (800067c <MX_RTC_Init+0xa0>)
  667. 800063e: f001 fbda bl 8001df6 <HAL_RTC_SetTime>
  668. 8000642: 4603 mov r3, r0
  669. 8000644: 2b00 cmp r3, #0
  670. 8000646: d001 beq.n 800064c <MX_RTC_Init+0x70>
  671. {
  672. Error_Handler();
  673. 8000648: f000 f8b2 bl 80007b0 <Error_Handler>
  674. }
  675. sDate.WeekDay = RTC_WEEKDAY_SUNDAY;
  676. 800064c: 4b0e ldr r3, [pc, #56] ; (8000688 <MX_RTC_Init+0xac>)
  677. 800064e: 2207 movs r2, #7
  678. 8000650: 701a strb r2, [r3, #0]
  679. sDate.Month = RTC_MONTH_DECEMBER;
  680. 8000652: 4b0d ldr r3, [pc, #52] ; (8000688 <MX_RTC_Init+0xac>)
  681. 8000654: 2212 movs r2, #18
  682. 8000656: 705a strb r2, [r3, #1]
  683. sDate.Date = 31;
  684. 8000658: 4b0b ldr r3, [pc, #44] ; (8000688 <MX_RTC_Init+0xac>)
  685. 800065a: 221f movs r2, #31
  686. 800065c: 709a strb r2, [r3, #2]
  687. sDate.Year = 17;
  688. 800065e: 4b0a ldr r3, [pc, #40] ; (8000688 <MX_RTC_Init+0xac>)
  689. 8000660: 2211 movs r2, #17
  690. 8000662: 70da strb r2, [r3, #3]
  691. if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
  692. 8000664: 2200 movs r2, #0
  693. 8000666: 4908 ldr r1, [pc, #32] ; (8000688 <MX_RTC_Init+0xac>)
  694. 8000668: 4804 ldr r0, [pc, #16] ; (800067c <MX_RTC_Init+0xa0>)
  695. 800066a: f001 fcd5 bl 8002018 <HAL_RTC_SetDate>
  696. 800066e: 4603 mov r3, r0
  697. 8000670: 2b00 cmp r3, #0
  698. 8000672: d001 beq.n 8000678 <MX_RTC_Init+0x9c>
  699. {
  700. Error_Handler();
  701. 8000674: f000 f89c bl 80007b0 <Error_Handler>
  702. }
  703. /* USER CODE BEGIN RTC_Init 2 */
  704. /* USER CODE END RTC_Init 2 */
  705. }
  706. 8000678: bf00 nop
  707. 800067a: bd80 pop {r7, pc}
  708. 800067c: 20000040 .word 0x20000040
  709. 8000680: 40002800 .word 0x40002800
  710. 8000684: 20000028 .word 0x20000028
  711. 8000688: 2000003c .word 0x2000003c
  712. 0800068c <MX_USART2_UART_Init>:
  713. * @brief USART2 Initialization Function
  714. * @param None
  715. * @retval None
  716. */
  717. static void MX_USART2_UART_Init(void)
  718. {
  719. 800068c: b580 push {r7, lr}
  720. 800068e: af00 add r7, sp, #0
  721. /* USER CODE END USART2_Init 0 */
  722. /* USER CODE BEGIN USART2_Init 1 */
  723. /* USER CODE END USART2_Init 1 */
  724. huart2.Instance = USART2;
  725. 8000690: 4b11 ldr r3, [pc, #68] ; (80006d8 <MX_USART2_UART_Init+0x4c>)
  726. 8000692: 4a12 ldr r2, [pc, #72] ; (80006dc <MX_USART2_UART_Init+0x50>)
  727. 8000694: 601a str r2, [r3, #0]
  728. huart2.Init.BaudRate = 115200;
  729. 8000696: 4b10 ldr r3, [pc, #64] ; (80006d8 <MX_USART2_UART_Init+0x4c>)
  730. 8000698: f44f 32e1 mov.w r2, #115200 ; 0x1c200
  731. 800069c: 605a str r2, [r3, #4]
  732. huart2.Init.WordLength = UART_WORDLENGTH_8B;
  733. 800069e: 4b0e ldr r3, [pc, #56] ; (80006d8 <MX_USART2_UART_Init+0x4c>)
  734. 80006a0: 2200 movs r2, #0
  735. 80006a2: 609a str r2, [r3, #8]
  736. huart2.Init.StopBits = UART_STOPBITS_1;
  737. 80006a4: 4b0c ldr r3, [pc, #48] ; (80006d8 <MX_USART2_UART_Init+0x4c>)
  738. 80006a6: 2200 movs r2, #0
  739. 80006a8: 60da str r2, [r3, #12]
  740. huart2.Init.Parity = UART_PARITY_NONE;
  741. 80006aa: 4b0b ldr r3, [pc, #44] ; (80006d8 <MX_USART2_UART_Init+0x4c>)
  742. 80006ac: 2200 movs r2, #0
  743. 80006ae: 611a str r2, [r3, #16]
  744. huart2.Init.Mode = UART_MODE_TX_RX;
  745. 80006b0: 4b09 ldr r3, [pc, #36] ; (80006d8 <MX_USART2_UART_Init+0x4c>)
  746. 80006b2: 220c movs r2, #12
  747. 80006b4: 615a str r2, [r3, #20]
  748. huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  749. 80006b6: 4b08 ldr r3, [pc, #32] ; (80006d8 <MX_USART2_UART_Init+0x4c>)
  750. 80006b8: 2200 movs r2, #0
  751. 80006ba: 619a str r2, [r3, #24]
  752. huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  753. 80006bc: 4b06 ldr r3, [pc, #24] ; (80006d8 <MX_USART2_UART_Init+0x4c>)
  754. 80006be: 2200 movs r2, #0
  755. 80006c0: 61da str r2, [r3, #28]
  756. if (HAL_UART_Init(&huart2) != HAL_OK)
  757. 80006c2: 4805 ldr r0, [pc, #20] ; (80006d8 <MX_USART2_UART_Init+0x4c>)
  758. 80006c4: f001 fe24 bl 8002310 <HAL_UART_Init>
  759. 80006c8: 4603 mov r3, r0
  760. 80006ca: 2b00 cmp r3, #0
  761. 80006cc: d001 beq.n 80006d2 <MX_USART2_UART_Init+0x46>
  762. {
  763. Error_Handler();
  764. 80006ce: f000 f86f bl 80007b0 <Error_Handler>
  765. }
  766. /* USER CODE BEGIN USART2_Init 2 */
  767. /* USER CODE END USART2_Init 2 */
  768. }
  769. 80006d2: bf00 nop
  770. 80006d4: bd80 pop {r7, pc}
  771. 80006d6: bf00 nop
  772. 80006d8: 20000060 .word 0x20000060
  773. 80006dc: 40004400 .word 0x40004400
  774. 080006e0 <MX_GPIO_Init>:
  775. * @brief GPIO Initialization Function
  776. * @param None
  777. * @retval None
  778. */
  779. static void MX_GPIO_Init(void)
  780. {
  781. 80006e0: b580 push {r7, lr}
  782. 80006e2: b08a sub sp, #40 ; 0x28
  783. 80006e4: af00 add r7, sp, #0
  784. GPIO_InitTypeDef GPIO_InitStruct = {0};
  785. 80006e6: f107 0314 add.w r3, r7, #20
  786. 80006ea: 2200 movs r2, #0
  787. 80006ec: 601a str r2, [r3, #0]
  788. 80006ee: 605a str r2, [r3, #4]
  789. 80006f0: 609a str r2, [r3, #8]
  790. 80006f2: 60da str r2, [r3, #12]
  791. 80006f4: 611a str r2, [r3, #16]
  792. /* GPIO Ports Clock Enable */
  793. __HAL_RCC_GPIOC_CLK_ENABLE();
  794. 80006f6: 4b2a ldr r3, [pc, #168] ; (80007a0 <MX_GPIO_Init+0xc0>)
  795. 80006f8: 69db ldr r3, [r3, #28]
  796. 80006fa: 4a29 ldr r2, [pc, #164] ; (80007a0 <MX_GPIO_Init+0xc0>)
  797. 80006fc: f043 0304 orr.w r3, r3, #4
  798. 8000700: 61d3 str r3, [r2, #28]
  799. 8000702: 4b27 ldr r3, [pc, #156] ; (80007a0 <MX_GPIO_Init+0xc0>)
  800. 8000704: 69db ldr r3, [r3, #28]
  801. 8000706: f003 0304 and.w r3, r3, #4
  802. 800070a: 613b str r3, [r7, #16]
  803. 800070c: 693b ldr r3, [r7, #16]
  804. __HAL_RCC_GPIOH_CLK_ENABLE();
  805. 800070e: 4b24 ldr r3, [pc, #144] ; (80007a0 <MX_GPIO_Init+0xc0>)
  806. 8000710: 69db ldr r3, [r3, #28]
  807. 8000712: 4a23 ldr r2, [pc, #140] ; (80007a0 <MX_GPIO_Init+0xc0>)
  808. 8000714: f043 0320 orr.w r3, r3, #32
  809. 8000718: 61d3 str r3, [r2, #28]
  810. 800071a: 4b21 ldr r3, [pc, #132] ; (80007a0 <MX_GPIO_Init+0xc0>)
  811. 800071c: 69db ldr r3, [r3, #28]
  812. 800071e: f003 0320 and.w r3, r3, #32
  813. 8000722: 60fb str r3, [r7, #12]
  814. 8000724: 68fb ldr r3, [r7, #12]
  815. __HAL_RCC_GPIOA_CLK_ENABLE();
  816. 8000726: 4b1e ldr r3, [pc, #120] ; (80007a0 <MX_GPIO_Init+0xc0>)
  817. 8000728: 69db ldr r3, [r3, #28]
  818. 800072a: 4a1d ldr r2, [pc, #116] ; (80007a0 <MX_GPIO_Init+0xc0>)
  819. 800072c: f043 0301 orr.w r3, r3, #1
  820. 8000730: 61d3 str r3, [r2, #28]
  821. 8000732: 4b1b ldr r3, [pc, #108] ; (80007a0 <MX_GPIO_Init+0xc0>)
  822. 8000734: 69db ldr r3, [r3, #28]
  823. 8000736: f003 0301 and.w r3, r3, #1
  824. 800073a: 60bb str r3, [r7, #8]
  825. 800073c: 68bb ldr r3, [r7, #8]
  826. __HAL_RCC_GPIOB_CLK_ENABLE();
  827. 800073e: 4b18 ldr r3, [pc, #96] ; (80007a0 <MX_GPIO_Init+0xc0>)
  828. 8000740: 69db ldr r3, [r3, #28]
  829. 8000742: 4a17 ldr r2, [pc, #92] ; (80007a0 <MX_GPIO_Init+0xc0>)
  830. 8000744: f043 0302 orr.w r3, r3, #2
  831. 8000748: 61d3 str r3, [r2, #28]
  832. 800074a: 4b15 ldr r3, [pc, #84] ; (80007a0 <MX_GPIO_Init+0xc0>)
  833. 800074c: 69db ldr r3, [r3, #28]
  834. 800074e: f003 0302 and.w r3, r3, #2
  835. 8000752: 607b str r3, [r7, #4]
  836. 8000754: 687b ldr r3, [r7, #4]
  837. /*Configure GPIO pin Output Level */
  838. HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
  839. 8000756: 2200 movs r2, #0
  840. 8000758: 2120 movs r1, #32
  841. 800075a: 4812 ldr r0, [pc, #72] ; (80007a4 <MX_GPIO_Init+0xc4>)
  842. 800075c: f000 fc16 bl 8000f8c <HAL_GPIO_WritePin>
  843. /*Configure GPIO pin : B1_Pin */
  844. GPIO_InitStruct.Pin = B1_Pin;
  845. 8000760: f44f 5300 mov.w r3, #8192 ; 0x2000
  846. 8000764: 617b str r3, [r7, #20]
  847. GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  848. 8000766: 4b10 ldr r3, [pc, #64] ; (80007a8 <MX_GPIO_Init+0xc8>)
  849. 8000768: 61bb str r3, [r7, #24]
  850. GPIO_InitStruct.Pull = GPIO_NOPULL;
  851. 800076a: 2300 movs r3, #0
  852. 800076c: 61fb str r3, [r7, #28]
  853. HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
  854. 800076e: f107 0314 add.w r3, r7, #20
  855. 8000772: 4619 mov r1, r3
  856. 8000774: 480d ldr r0, [pc, #52] ; (80007ac <MX_GPIO_Init+0xcc>)
  857. 8000776: f000 fa7b bl 8000c70 <HAL_GPIO_Init>
  858. /*Configure GPIO pin : LD2_Pin */
  859. GPIO_InitStruct.Pin = LD2_Pin;
  860. 800077a: 2320 movs r3, #32
  861. 800077c: 617b str r3, [r7, #20]
  862. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  863. 800077e: 2301 movs r3, #1
  864. 8000780: 61bb str r3, [r7, #24]
  865. GPIO_InitStruct.Pull = GPIO_NOPULL;
  866. 8000782: 2300 movs r3, #0
  867. 8000784: 61fb str r3, [r7, #28]
  868. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  869. 8000786: 2300 movs r3, #0
  870. 8000788: 623b str r3, [r7, #32]
  871. HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct);
  872. 800078a: f107 0314 add.w r3, r7, #20
  873. 800078e: 4619 mov r1, r3
  874. 8000790: 4804 ldr r0, [pc, #16] ; (80007a4 <MX_GPIO_Init+0xc4>)
  875. 8000792: f000 fa6d bl 8000c70 <HAL_GPIO_Init>
  876. }
  877. 8000796: bf00 nop
  878. 8000798: 3728 adds r7, #40 ; 0x28
  879. 800079a: 46bd mov sp, r7
  880. 800079c: bd80 pop {r7, pc}
  881. 800079e: bf00 nop
  882. 80007a0: 40023800 .word 0x40023800
  883. 80007a4: 40020000 .word 0x40020000
  884. 80007a8: 10110000 .word 0x10110000
  885. 80007ac: 40020800 .word 0x40020800
  886. 080007b0 <Error_Handler>:
  887. /**
  888. * @brief This function is executed in case of error occurrence.
  889. * @retval None
  890. */
  891. void Error_Handler(void)
  892. {
  893. 80007b0: b480 push {r7}
  894. 80007b2: af00 add r7, sp, #0
  895. /* USER CODE BEGIN Error_Handler_Debug */
  896. /* User can add his own implementation to report the HAL error return state */
  897. /* USER CODE END Error_Handler_Debug */
  898. }
  899. 80007b4: bf00 nop
  900. 80007b6: 46bd mov sp, r7
  901. 80007b8: bc80 pop {r7}
  902. 80007ba: 4770 bx lr
  903. 080007bc <HAL_MspInit>:
  904. /* USER CODE END 0 */
  905. /**
  906. * Initializes the Global MSP.
  907. */
  908. void HAL_MspInit(void)
  909. {
  910. 80007bc: b580 push {r7, lr}
  911. 80007be: b084 sub sp, #16
  912. 80007c0: af00 add r7, sp, #0
  913. /* USER CODE BEGIN MspInit 0 */
  914. /* USER CODE END MspInit 0 */
  915. __HAL_RCC_COMP_CLK_ENABLE();
  916. 80007c2: 4b15 ldr r3, [pc, #84] ; (8000818 <HAL_MspInit+0x5c>)
  917. 80007c4: 6a5b ldr r3, [r3, #36] ; 0x24
  918. 80007c6: 4a14 ldr r2, [pc, #80] ; (8000818 <HAL_MspInit+0x5c>)
  919. 80007c8: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000
  920. 80007cc: 6253 str r3, [r2, #36] ; 0x24
  921. 80007ce: 4b12 ldr r3, [pc, #72] ; (8000818 <HAL_MspInit+0x5c>)
  922. 80007d0: 6a5b ldr r3, [r3, #36] ; 0x24
  923. 80007d2: f003 4300 and.w r3, r3, #2147483648 ; 0x80000000
  924. 80007d6: 60fb str r3, [r7, #12]
  925. 80007d8: 68fb ldr r3, [r7, #12]
  926. __HAL_RCC_SYSCFG_CLK_ENABLE();
  927. 80007da: 4b0f ldr r3, [pc, #60] ; (8000818 <HAL_MspInit+0x5c>)
  928. 80007dc: 6a1b ldr r3, [r3, #32]
  929. 80007de: 4a0e ldr r2, [pc, #56] ; (8000818 <HAL_MspInit+0x5c>)
  930. 80007e0: f043 0301 orr.w r3, r3, #1
  931. 80007e4: 6213 str r3, [r2, #32]
  932. 80007e6: 4b0c ldr r3, [pc, #48] ; (8000818 <HAL_MspInit+0x5c>)
  933. 80007e8: 6a1b ldr r3, [r3, #32]
  934. 80007ea: f003 0301 and.w r3, r3, #1
  935. 80007ee: 60bb str r3, [r7, #8]
  936. 80007f0: 68bb ldr r3, [r7, #8]
  937. __HAL_RCC_PWR_CLK_ENABLE();
  938. 80007f2: 4b09 ldr r3, [pc, #36] ; (8000818 <HAL_MspInit+0x5c>)
  939. 80007f4: 6a5b ldr r3, [r3, #36] ; 0x24
  940. 80007f6: 4a08 ldr r2, [pc, #32] ; (8000818 <HAL_MspInit+0x5c>)
  941. 80007f8: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
  942. 80007fc: 6253 str r3, [r2, #36] ; 0x24
  943. 80007fe: 4b06 ldr r3, [pc, #24] ; (8000818 <HAL_MspInit+0x5c>)
  944. 8000800: 6a5b ldr r3, [r3, #36] ; 0x24
  945. 8000802: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  946. 8000806: 607b str r3, [r7, #4]
  947. 8000808: 687b ldr r3, [r7, #4]
  948. HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);
  949. 800080a: 2007 movs r0, #7
  950. 800080c: f000 f9fc bl 8000c08 <HAL_NVIC_SetPriorityGrouping>
  951. /* System interrupt init*/
  952. /* USER CODE BEGIN MspInit 1 */
  953. /* USER CODE END MspInit 1 */
  954. }
  955. 8000810: bf00 nop
  956. 8000812: 3710 adds r7, #16
  957. 8000814: 46bd mov sp, r7
  958. 8000816: bd80 pop {r7, pc}
  959. 8000818: 40023800 .word 0x40023800
  960. 0800081c <HAL_RTC_MspInit>:
  961. * This function configures the hardware resources used in this example
  962. * @param hrtc: RTC handle pointer
  963. * @retval None
  964. */
  965. void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
  966. {
  967. 800081c: b480 push {r7}
  968. 800081e: b083 sub sp, #12
  969. 8000820: af00 add r7, sp, #0
  970. 8000822: 6078 str r0, [r7, #4]
  971. if(hrtc->Instance==RTC)
  972. 8000824: 687b ldr r3, [r7, #4]
  973. 8000826: 681b ldr r3, [r3, #0]
  974. 8000828: 4a05 ldr r2, [pc, #20] ; (8000840 <HAL_RTC_MspInit+0x24>)
  975. 800082a: 4293 cmp r3, r2
  976. 800082c: d102 bne.n 8000834 <HAL_RTC_MspInit+0x18>
  977. {
  978. /* USER CODE BEGIN RTC_MspInit 0 */
  979. /* USER CODE END RTC_MspInit 0 */
  980. /* Peripheral clock enable */
  981. __HAL_RCC_RTC_ENABLE();
  982. 800082e: 4b05 ldr r3, [pc, #20] ; (8000844 <HAL_RTC_MspInit+0x28>)
  983. 8000830: 2201 movs r2, #1
  984. 8000832: 601a str r2, [r3, #0]
  985. /* USER CODE BEGIN RTC_MspInit 1 */
  986. /* USER CODE END RTC_MspInit 1 */
  987. }
  988. }
  989. 8000834: bf00 nop
  990. 8000836: 370c adds r7, #12
  991. 8000838: 46bd mov sp, r7
  992. 800083a: bc80 pop {r7}
  993. 800083c: 4770 bx lr
  994. 800083e: bf00 nop
  995. 8000840: 40002800 .word 0x40002800
  996. 8000844: 424706d8 .word 0x424706d8
  997. 08000848 <HAL_UART_MspInit>:
  998. * This function configures the hardware resources used in this example
  999. * @param huart: UART handle pointer
  1000. * @retval None
  1001. */
  1002. void HAL_UART_MspInit(UART_HandleTypeDef* huart)
  1003. {
  1004. 8000848: b580 push {r7, lr}
  1005. 800084a: b08a sub sp, #40 ; 0x28
  1006. 800084c: af00 add r7, sp, #0
  1007. 800084e: 6078 str r0, [r7, #4]
  1008. GPIO_InitTypeDef GPIO_InitStruct = {0};
  1009. 8000850: f107 0314 add.w r3, r7, #20
  1010. 8000854: 2200 movs r2, #0
  1011. 8000856: 601a str r2, [r3, #0]
  1012. 8000858: 605a str r2, [r3, #4]
  1013. 800085a: 609a str r2, [r3, #8]
  1014. 800085c: 60da str r2, [r3, #12]
  1015. 800085e: 611a str r2, [r3, #16]
  1016. if(huart->Instance==USART2)
  1017. 8000860: 687b ldr r3, [r7, #4]
  1018. 8000862: 681b ldr r3, [r3, #0]
  1019. 8000864: 4a17 ldr r2, [pc, #92] ; (80008c4 <HAL_UART_MspInit+0x7c>)
  1020. 8000866: 4293 cmp r3, r2
  1021. 8000868: d127 bne.n 80008ba <HAL_UART_MspInit+0x72>
  1022. {
  1023. /* USER CODE BEGIN USART2_MspInit 0 */
  1024. /* USER CODE END USART2_MspInit 0 */
  1025. /* Peripheral clock enable */
  1026. __HAL_RCC_USART2_CLK_ENABLE();
  1027. 800086a: 4b17 ldr r3, [pc, #92] ; (80008c8 <HAL_UART_MspInit+0x80>)
  1028. 800086c: 6a5b ldr r3, [r3, #36] ; 0x24
  1029. 800086e: 4a16 ldr r2, [pc, #88] ; (80008c8 <HAL_UART_MspInit+0x80>)
  1030. 8000870: f443 3300 orr.w r3, r3, #131072 ; 0x20000
  1031. 8000874: 6253 str r3, [r2, #36] ; 0x24
  1032. 8000876: 4b14 ldr r3, [pc, #80] ; (80008c8 <HAL_UART_MspInit+0x80>)
  1033. 8000878: 6a5b ldr r3, [r3, #36] ; 0x24
  1034. 800087a: f403 3300 and.w r3, r3, #131072 ; 0x20000
  1035. 800087e: 613b str r3, [r7, #16]
  1036. 8000880: 693b ldr r3, [r7, #16]
  1037. __HAL_RCC_GPIOA_CLK_ENABLE();
  1038. 8000882: 4b11 ldr r3, [pc, #68] ; (80008c8 <HAL_UART_MspInit+0x80>)
  1039. 8000884: 69db ldr r3, [r3, #28]
  1040. 8000886: 4a10 ldr r2, [pc, #64] ; (80008c8 <HAL_UART_MspInit+0x80>)
  1041. 8000888: f043 0301 orr.w r3, r3, #1
  1042. 800088c: 61d3 str r3, [r2, #28]
  1043. 800088e: 4b0e ldr r3, [pc, #56] ; (80008c8 <HAL_UART_MspInit+0x80>)
  1044. 8000890: 69db ldr r3, [r3, #28]
  1045. 8000892: f003 0301 and.w r3, r3, #1
  1046. 8000896: 60fb str r3, [r7, #12]
  1047. 8000898: 68fb ldr r3, [r7, #12]
  1048. /**USART2 GPIO Configuration
  1049. PA2 ------> USART2_TX
  1050. PA3 ------> USART2_RX
  1051. */
  1052. GPIO_InitStruct.Pin = USART_TX_Pin|USART_RX_Pin;
  1053. 800089a: 230c movs r3, #12
  1054. 800089c: 617b str r3, [r7, #20]
  1055. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  1056. 800089e: 2302 movs r3, #2
  1057. 80008a0: 61bb str r3, [r7, #24]
  1058. GPIO_InitStruct.Pull = GPIO_NOPULL;
  1059. 80008a2: 2300 movs r3, #0
  1060. 80008a4: 61fb str r3, [r7, #28]
  1061. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  1062. 80008a6: 2303 movs r3, #3
  1063. 80008a8: 623b str r3, [r7, #32]
  1064. GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
  1065. 80008aa: 2307 movs r3, #7
  1066. 80008ac: 627b str r3, [r7, #36] ; 0x24
  1067. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  1068. 80008ae: f107 0314 add.w r3, r7, #20
  1069. 80008b2: 4619 mov r1, r3
  1070. 80008b4: 4805 ldr r0, [pc, #20] ; (80008cc <HAL_UART_MspInit+0x84>)
  1071. 80008b6: f000 f9db bl 8000c70 <HAL_GPIO_Init>
  1072. /* USER CODE BEGIN USART2_MspInit 1 */
  1073. /* USER CODE END USART2_MspInit 1 */
  1074. }
  1075. }
  1076. 80008ba: bf00 nop
  1077. 80008bc: 3728 adds r7, #40 ; 0x28
  1078. 80008be: 46bd mov sp, r7
  1079. 80008c0: bd80 pop {r7, pc}
  1080. 80008c2: bf00 nop
  1081. 80008c4: 40004400 .word 0x40004400
  1082. 80008c8: 40023800 .word 0x40023800
  1083. 80008cc: 40020000 .word 0x40020000
  1084. 080008d0 <NMI_Handler>:
  1085. /******************************************************************************/
  1086. /**
  1087. * @brief This function handles Non maskable interrupt.
  1088. */
  1089. void NMI_Handler(void)
  1090. {
  1091. 80008d0: b480 push {r7}
  1092. 80008d2: af00 add r7, sp, #0
  1093. /* USER CODE END NonMaskableInt_IRQn 0 */
  1094. /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
  1095. /* USER CODE END NonMaskableInt_IRQn 1 */
  1096. }
  1097. 80008d4: bf00 nop
  1098. 80008d6: 46bd mov sp, r7
  1099. 80008d8: bc80 pop {r7}
  1100. 80008da: 4770 bx lr
  1101. 080008dc <HardFault_Handler>:
  1102. /**
  1103. * @brief This function handles Hard fault interrupt.
  1104. */
  1105. void HardFault_Handler(void)
  1106. {
  1107. 80008dc: b480 push {r7}
  1108. 80008de: af00 add r7, sp, #0
  1109. /* USER CODE BEGIN HardFault_IRQn 0 */
  1110. /* USER CODE END HardFault_IRQn 0 */
  1111. while (1)
  1112. 80008e0: e7fe b.n 80008e0 <HardFault_Handler+0x4>
  1113. 080008e2 <MemManage_Handler>:
  1114. /**
  1115. * @brief This function handles Memory management fault.
  1116. */
  1117. void MemManage_Handler(void)
  1118. {
  1119. 80008e2: b480 push {r7}
  1120. 80008e4: af00 add r7, sp, #0
  1121. /* USER CODE BEGIN MemoryManagement_IRQn 0 */
  1122. /* USER CODE END MemoryManagement_IRQn 0 */
  1123. while (1)
  1124. 80008e6: e7fe b.n 80008e6 <MemManage_Handler+0x4>
  1125. 080008e8 <BusFault_Handler>:
  1126. /**
  1127. * @brief This function handles Pre-fetch fault, memory access fault.
  1128. */
  1129. void BusFault_Handler(void)
  1130. {
  1131. 80008e8: b480 push {r7}
  1132. 80008ea: af00 add r7, sp, #0
  1133. /* USER CODE BEGIN BusFault_IRQn 0 */
  1134. /* USER CODE END BusFault_IRQn 0 */
  1135. while (1)
  1136. 80008ec: e7fe b.n 80008ec <BusFault_Handler+0x4>
  1137. 080008ee <UsageFault_Handler>:
  1138. /**
  1139. * @brief This function handles Undefined instruction or illegal state.
  1140. */
  1141. void UsageFault_Handler(void)
  1142. {
  1143. 80008ee: b480 push {r7}
  1144. 80008f0: af00 add r7, sp, #0
  1145. /* USER CODE BEGIN UsageFault_IRQn 0 */
  1146. /* USER CODE END UsageFault_IRQn 0 */
  1147. while (1)
  1148. 80008f2: e7fe b.n 80008f2 <UsageFault_Handler+0x4>
  1149. 080008f4 <SVC_Handler>:
  1150. /**
  1151. * @brief This function handles System service call via SWI instruction.
  1152. */
  1153. void SVC_Handler(void)
  1154. {
  1155. 80008f4: b480 push {r7}
  1156. 80008f6: af00 add r7, sp, #0
  1157. /* USER CODE END SVC_IRQn 0 */
  1158. /* USER CODE BEGIN SVC_IRQn 1 */
  1159. /* USER CODE END SVC_IRQn 1 */
  1160. }
  1161. 80008f8: bf00 nop
  1162. 80008fa: 46bd mov sp, r7
  1163. 80008fc: bc80 pop {r7}
  1164. 80008fe: 4770 bx lr
  1165. 08000900 <DebugMon_Handler>:
  1166. /**
  1167. * @brief This function handles Debug monitor.
  1168. */
  1169. void DebugMon_Handler(void)
  1170. {
  1171. 8000900: b480 push {r7}
  1172. 8000902: af00 add r7, sp, #0
  1173. /* USER CODE END DebugMonitor_IRQn 0 */
  1174. /* USER CODE BEGIN DebugMonitor_IRQn 1 */
  1175. /* USER CODE END DebugMonitor_IRQn 1 */
  1176. }
  1177. 8000904: bf00 nop
  1178. 8000906: 46bd mov sp, r7
  1179. 8000908: bc80 pop {r7}
  1180. 800090a: 4770 bx lr
  1181. 0800090c <PendSV_Handler>:
  1182. /**
  1183. * @brief This function handles Pendable request for system service.
  1184. */
  1185. void PendSV_Handler(void)
  1186. {
  1187. 800090c: b480 push {r7}
  1188. 800090e: af00 add r7, sp, #0
  1189. /* USER CODE END PendSV_IRQn 0 */
  1190. /* USER CODE BEGIN PendSV_IRQn 1 */
  1191. /* USER CODE END PendSV_IRQn 1 */
  1192. }
  1193. 8000910: bf00 nop
  1194. 8000912: 46bd mov sp, r7
  1195. 8000914: bc80 pop {r7}
  1196. 8000916: 4770 bx lr
  1197. 08000918 <SysTick_Handler>:
  1198. /**
  1199. * @brief This function handles System tick timer.
  1200. */
  1201. void SysTick_Handler(void)
  1202. {
  1203. 8000918: b580 push {r7, lr}
  1204. 800091a: af00 add r7, sp, #0
  1205. /* USER CODE BEGIN SysTick_IRQn 0 */
  1206. /* USER CODE END SysTick_IRQn 0 */
  1207. HAL_IncTick();
  1208. 800091c: f000 f886 bl 8000a2c <HAL_IncTick>
  1209. /* USER CODE BEGIN SysTick_IRQn 1 */
  1210. /* USER CODE END SysTick_IRQn 1 */
  1211. }
  1212. 8000920: bf00 nop
  1213. 8000922: bd80 pop {r7, pc}
  1214. 08000924 <SystemInit>:
  1215. * SystemCoreClock variable.
  1216. * @param None
  1217. * @retval None
  1218. */
  1219. void SystemInit (void)
  1220. {
  1221. 8000924: b480 push {r7}
  1222. 8000926: af00 add r7, sp, #0
  1223. #endif /* DATA_IN_ExtSRAM */
  1224. #ifdef VECT_TAB_SRAM
  1225. SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
  1226. #else
  1227. SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
  1228. 8000928: 4b03 ldr r3, [pc, #12] ; (8000938 <SystemInit+0x14>)
  1229. 800092a: f04f 6200 mov.w r2, #134217728 ; 0x8000000
  1230. 800092e: 609a str r2, [r3, #8]
  1231. #endif
  1232. }
  1233. 8000930: bf00 nop
  1234. 8000932: 46bd mov sp, r7
  1235. 8000934: bc80 pop {r7}
  1236. 8000936: 4770 bx lr
  1237. 8000938: e000ed00 .word 0xe000ed00
  1238. 0800093c <Reset_Handler>:
  1239. .weak Reset_Handler
  1240. .type Reset_Handler, %function
  1241. Reset_Handler:
  1242. /* Copy the data segment initializers from flash to SRAM */
  1243. movs r1, #0
  1244. 800093c: 2100 movs r1, #0
  1245. b LoopCopyDataInit
  1246. 800093e: e003 b.n 8000948 <LoopCopyDataInit>
  1247. 08000940 <CopyDataInit>:
  1248. CopyDataInit:
  1249. ldr r3, =_sidata
  1250. 8000940: 4b0b ldr r3, [pc, #44] ; (8000970 <LoopFillZerobss+0x14>)
  1251. ldr r3, [r3, r1]
  1252. 8000942: 585b ldr r3, [r3, r1]
  1253. str r3, [r0, r1]
  1254. 8000944: 5043 str r3, [r0, r1]
  1255. adds r1, r1, #4
  1256. 8000946: 3104 adds r1, #4
  1257. 08000948 <LoopCopyDataInit>:
  1258. LoopCopyDataInit:
  1259. ldr r0, =_sdata
  1260. 8000948: 480a ldr r0, [pc, #40] ; (8000974 <LoopFillZerobss+0x18>)
  1261. ldr r3, =_edata
  1262. 800094a: 4b0b ldr r3, [pc, #44] ; (8000978 <LoopFillZerobss+0x1c>)
  1263. adds r2, r0, r1
  1264. 800094c: 1842 adds r2, r0, r1
  1265. cmp r2, r3
  1266. 800094e: 429a cmp r2, r3
  1267. bcc CopyDataInit
  1268. 8000950: d3f6 bcc.n 8000940 <CopyDataInit>
  1269. ldr r2, =_sbss
  1270. 8000952: 4a0a ldr r2, [pc, #40] ; (800097c <LoopFillZerobss+0x20>)
  1271. b LoopFillZerobss
  1272. 8000954: e002 b.n 800095c <LoopFillZerobss>
  1273. 08000956 <FillZerobss>:
  1274. /* Zero fill the bss segment. */
  1275. FillZerobss:
  1276. movs r3, #0
  1277. 8000956: 2300 movs r3, #0
  1278. str r3, [r2], #4
  1279. 8000958: f842 3b04 str.w r3, [r2], #4
  1280. 0800095c <LoopFillZerobss>:
  1281. LoopFillZerobss:
  1282. ldr r3, = _ebss
  1283. 800095c: 4b08 ldr r3, [pc, #32] ; (8000980 <LoopFillZerobss+0x24>)
  1284. cmp r2, r3
  1285. 800095e: 429a cmp r2, r3
  1286. bcc FillZerobss
  1287. 8000960: d3f9 bcc.n 8000956 <FillZerobss>
  1288. /* Call the clock system intitialization function.*/
  1289. bl SystemInit
  1290. 8000962: f7ff ffdf bl 8000924 <SystemInit>
  1291. /* Call static constructors */
  1292. bl __libc_init_array
  1293. 8000966: f001 fe05 bl 8002574 <__libc_init_array>
  1294. /* Call the application's entry point.*/
  1295. bl main
  1296. 800096a: f7ff fd89 bl 8000480 <main>
  1297. bx lr
  1298. 800096e: 4770 bx lr
  1299. ldr r3, =_sidata
  1300. 8000970: 08002618 .word 0x08002618
  1301. ldr r0, =_sdata
  1302. 8000974: 20000000 .word 0x20000000
  1303. ldr r3, =_edata
  1304. 8000978: 2000000c .word 0x2000000c
  1305. ldr r2, =_sbss
  1306. 800097c: 2000000c .word 0x2000000c
  1307. ldr r3, = _ebss
  1308. 8000980: 200000a4 .word 0x200000a4
  1309. 08000984 <ADC1_IRQHandler>:
  1310. * @retval : None
  1311. */
  1312. .section .text.Default_Handler,"ax",%progbits
  1313. Default_Handler:
  1314. Infinite_Loop:
  1315. b Infinite_Loop
  1316. 8000984: e7fe b.n 8000984 <ADC1_IRQHandler>
  1317. 08000986 <HAL_Init>:
  1318. * In the default implementation,Systick is used as source of time base.
  1319. * the tick variable is incremented each 1ms in its ISR.
  1320. * @retval HAL status
  1321. */
  1322. HAL_StatusTypeDef HAL_Init(void)
  1323. {
  1324. 8000986: b580 push {r7, lr}
  1325. 8000988: b082 sub sp, #8
  1326. 800098a: af00 add r7, sp, #0
  1327. HAL_StatusTypeDef status = HAL_OK;
  1328. 800098c: 2300 movs r3, #0
  1329. 800098e: 71fb strb r3, [r7, #7]
  1330. #if (PREFETCH_ENABLE != 0)
  1331. __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
  1332. #endif /* PREFETCH_ENABLE */
  1333. /* Set Interrupt Group Priority */
  1334. HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
  1335. 8000990: 2003 movs r0, #3
  1336. 8000992: f000 f939 bl 8000c08 <HAL_NVIC_SetPriorityGrouping>
  1337. /* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */
  1338. if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK)
  1339. 8000996: 2000 movs r0, #0
  1340. 8000998: f000 f80e bl 80009b8 <HAL_InitTick>
  1341. 800099c: 4603 mov r3, r0
  1342. 800099e: 2b00 cmp r3, #0
  1343. 80009a0: d002 beq.n 80009a8 <HAL_Init+0x22>
  1344. {
  1345. status = HAL_ERROR;
  1346. 80009a2: 2301 movs r3, #1
  1347. 80009a4: 71fb strb r3, [r7, #7]
  1348. 80009a6: e001 b.n 80009ac <HAL_Init+0x26>
  1349. }
  1350. else
  1351. {
  1352. /* Init the low level hardware */
  1353. HAL_MspInit();
  1354. 80009a8: f7ff ff08 bl 80007bc <HAL_MspInit>
  1355. }
  1356. /* Return function status */
  1357. return status;
  1358. 80009ac: 79fb ldrb r3, [r7, #7]
  1359. }
  1360. 80009ae: 4618 mov r0, r3
  1361. 80009b0: 3708 adds r7, #8
  1362. 80009b2: 46bd mov sp, r7
  1363. 80009b4: bd80 pop {r7, pc}
  1364. ...
  1365. 080009b8 <HAL_InitTick>:
  1366. * implementation in user file.
  1367. * @param TickPriority Tick interrupt priority.
  1368. * @retval HAL status
  1369. */
  1370. __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
  1371. {
  1372. 80009b8: b580 push {r7, lr}
  1373. 80009ba: b084 sub sp, #16
  1374. 80009bc: af00 add r7, sp, #0
  1375. 80009be: 6078 str r0, [r7, #4]
  1376. HAL_StatusTypeDef status = HAL_OK;
  1377. 80009c0: 2300 movs r3, #0
  1378. 80009c2: 73fb strb r3, [r7, #15]
  1379. if (uwTickFreq != 0U)
  1380. 80009c4: 4b16 ldr r3, [pc, #88] ; (8000a20 <HAL_InitTick+0x68>)
  1381. 80009c6: 681b ldr r3, [r3, #0]
  1382. 80009c8: 2b00 cmp r3, #0
  1383. 80009ca: d022 beq.n 8000a12 <HAL_InitTick+0x5a>
  1384. {
  1385. /*Configure the SysTick to have interrupt in 1ms time basis*/
  1386. if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U)
  1387. 80009cc: 4b15 ldr r3, [pc, #84] ; (8000a24 <HAL_InitTick+0x6c>)
  1388. 80009ce: 681a ldr r2, [r3, #0]
  1389. 80009d0: 4b13 ldr r3, [pc, #76] ; (8000a20 <HAL_InitTick+0x68>)
  1390. 80009d2: 681b ldr r3, [r3, #0]
  1391. 80009d4: f44f 717a mov.w r1, #1000 ; 0x3e8
  1392. 80009d8: fbb1 f3f3 udiv r3, r1, r3
  1393. 80009dc: fbb2 f3f3 udiv r3, r2, r3
  1394. 80009e0: 4618 mov r0, r3
  1395. 80009e2: f000 f938 bl 8000c56 <HAL_SYSTICK_Config>
  1396. 80009e6: 4603 mov r3, r0
  1397. 80009e8: 2b00 cmp r3, #0
  1398. 80009ea: d10f bne.n 8000a0c <HAL_InitTick+0x54>
  1399. {
  1400. /* Configure the SysTick IRQ priority */
  1401. if (TickPriority < (1UL << __NVIC_PRIO_BITS))
  1402. 80009ec: 687b ldr r3, [r7, #4]
  1403. 80009ee: 2b0f cmp r3, #15
  1404. 80009f0: d809 bhi.n 8000a06 <HAL_InitTick+0x4e>
  1405. {
  1406. HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);
  1407. 80009f2: 2200 movs r2, #0
  1408. 80009f4: 6879 ldr r1, [r7, #4]
  1409. 80009f6: f04f 30ff mov.w r0, #4294967295
  1410. 80009fa: f000 f910 bl 8000c1e <HAL_NVIC_SetPriority>
  1411. uwTickPrio = TickPriority;
  1412. 80009fe: 4a0a ldr r2, [pc, #40] ; (8000a28 <HAL_InitTick+0x70>)
  1413. 8000a00: 687b ldr r3, [r7, #4]
  1414. 8000a02: 6013 str r3, [r2, #0]
  1415. 8000a04: e007 b.n 8000a16 <HAL_InitTick+0x5e>
  1416. }
  1417. else
  1418. {
  1419. status = HAL_ERROR;
  1420. 8000a06: 2301 movs r3, #1
  1421. 8000a08: 73fb strb r3, [r7, #15]
  1422. 8000a0a: e004 b.n 8000a16 <HAL_InitTick+0x5e>
  1423. }
  1424. }
  1425. else
  1426. {
  1427. status = HAL_ERROR;
  1428. 8000a0c: 2301 movs r3, #1
  1429. 8000a0e: 73fb strb r3, [r7, #15]
  1430. 8000a10: e001 b.n 8000a16 <HAL_InitTick+0x5e>
  1431. }
  1432. }
  1433. else
  1434. {
  1435. status = HAL_ERROR;
  1436. 8000a12: 2301 movs r3, #1
  1437. 8000a14: 73fb strb r3, [r7, #15]
  1438. }
  1439. /* Return function status */
  1440. return status;
  1441. 8000a16: 7bfb ldrb r3, [r7, #15]
  1442. }
  1443. 8000a18: 4618 mov r0, r3
  1444. 8000a1a: 3710 adds r7, #16
  1445. 8000a1c: 46bd mov sp, r7
  1446. 8000a1e: bd80 pop {r7, pc}
  1447. 8000a20: 20000008 .word 0x20000008
  1448. 8000a24: 20000000 .word 0x20000000
  1449. 8000a28: 20000004 .word 0x20000004
  1450. 08000a2c <HAL_IncTick>:
  1451. * @note This function is declared as __weak to be overwritten in case of other
  1452. * implementations in user file.
  1453. * @retval None
  1454. */
  1455. __weak void HAL_IncTick(void)
  1456. {
  1457. 8000a2c: b480 push {r7}
  1458. 8000a2e: af00 add r7, sp, #0
  1459. uwTick += uwTickFreq;
  1460. 8000a30: 4b05 ldr r3, [pc, #20] ; (8000a48 <HAL_IncTick+0x1c>)
  1461. 8000a32: 681a ldr r2, [r3, #0]
  1462. 8000a34: 4b05 ldr r3, [pc, #20] ; (8000a4c <HAL_IncTick+0x20>)
  1463. 8000a36: 681b ldr r3, [r3, #0]
  1464. 8000a38: 4413 add r3, r2
  1465. 8000a3a: 4a03 ldr r2, [pc, #12] ; (8000a48 <HAL_IncTick+0x1c>)
  1466. 8000a3c: 6013 str r3, [r2, #0]
  1467. }
  1468. 8000a3e: bf00 nop
  1469. 8000a40: 46bd mov sp, r7
  1470. 8000a42: bc80 pop {r7}
  1471. 8000a44: 4770 bx lr
  1472. 8000a46: bf00 nop
  1473. 8000a48: 200000a0 .word 0x200000a0
  1474. 8000a4c: 20000008 .word 0x20000008
  1475. 08000a50 <HAL_GetTick>:
  1476. * @note This function is declared as __weak to be overwritten in case of other
  1477. * implementations in user file.
  1478. * @retval tick value
  1479. */
  1480. __weak uint32_t HAL_GetTick(void)
  1481. {
  1482. 8000a50: b480 push {r7}
  1483. 8000a52: af00 add r7, sp, #0
  1484. return uwTick;
  1485. 8000a54: 4b02 ldr r3, [pc, #8] ; (8000a60 <HAL_GetTick+0x10>)
  1486. 8000a56: 681b ldr r3, [r3, #0]
  1487. }
  1488. 8000a58: 4618 mov r0, r3
  1489. 8000a5a: 46bd mov sp, r7
  1490. 8000a5c: bc80 pop {r7}
  1491. 8000a5e: 4770 bx lr
  1492. 8000a60: 200000a0 .word 0x200000a0
  1493. 08000a64 <HAL_Delay>:
  1494. * implementations in user file.
  1495. * @param Delay specifies the delay time length, in milliseconds.
  1496. * @retval None
  1497. */
  1498. __weak void HAL_Delay(uint32_t Delay)
  1499. {
  1500. 8000a64: b580 push {r7, lr}
  1501. 8000a66: b084 sub sp, #16
  1502. 8000a68: af00 add r7, sp, #0
  1503. 8000a6a: 6078 str r0, [r7, #4]
  1504. uint32_t tickstart = HAL_GetTick();
  1505. 8000a6c: f7ff fff0 bl 8000a50 <HAL_GetTick>
  1506. 8000a70: 60b8 str r0, [r7, #8]
  1507. uint32_t wait = Delay;
  1508. 8000a72: 687b ldr r3, [r7, #4]
  1509. 8000a74: 60fb str r3, [r7, #12]
  1510. /* Add a period to guaranty minimum wait */
  1511. if (wait < HAL_MAX_DELAY)
  1512. 8000a76: 68fb ldr r3, [r7, #12]
  1513. 8000a78: f1b3 3fff cmp.w r3, #4294967295
  1514. 8000a7c: d004 beq.n 8000a88 <HAL_Delay+0x24>
  1515. {
  1516. wait += (uint32_t)(uwTickFreq);
  1517. 8000a7e: 4b09 ldr r3, [pc, #36] ; (8000aa4 <HAL_Delay+0x40>)
  1518. 8000a80: 681b ldr r3, [r3, #0]
  1519. 8000a82: 68fa ldr r2, [r7, #12]
  1520. 8000a84: 4413 add r3, r2
  1521. 8000a86: 60fb str r3, [r7, #12]
  1522. }
  1523. while((HAL_GetTick() - tickstart) < wait)
  1524. 8000a88: bf00 nop
  1525. 8000a8a: f7ff ffe1 bl 8000a50 <HAL_GetTick>
  1526. 8000a8e: 4602 mov r2, r0
  1527. 8000a90: 68bb ldr r3, [r7, #8]
  1528. 8000a92: 1ad3 subs r3, r2, r3
  1529. 8000a94: 68fa ldr r2, [r7, #12]
  1530. 8000a96: 429a cmp r2, r3
  1531. 8000a98: d8f7 bhi.n 8000a8a <HAL_Delay+0x26>
  1532. {
  1533. }
  1534. }
  1535. 8000a9a: bf00 nop
  1536. 8000a9c: 3710 adds r7, #16
  1537. 8000a9e: 46bd mov sp, r7
  1538. 8000aa0: bd80 pop {r7, pc}
  1539. 8000aa2: bf00 nop
  1540. 8000aa4: 20000008 .word 0x20000008
  1541. 08000aa8 <__NVIC_SetPriorityGrouping>:
  1542. In case of a conflict between priority grouping and available
  1543. priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
  1544. \param [in] PriorityGroup Priority grouping field.
  1545. */
  1546. __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
  1547. {
  1548. 8000aa8: b480 push {r7}
  1549. 8000aaa: b085 sub sp, #20
  1550. 8000aac: af00 add r7, sp, #0
  1551. 8000aae: 6078 str r0, [r7, #4]
  1552. uint32_t reg_value;
  1553. uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
  1554. 8000ab0: 687b ldr r3, [r7, #4]
  1555. 8000ab2: f003 0307 and.w r3, r3, #7
  1556. 8000ab6: 60fb str r3, [r7, #12]
  1557. reg_value = SCB->AIRCR; /* read old register configuration */
  1558. 8000ab8: 4b0c ldr r3, [pc, #48] ; (8000aec <__NVIC_SetPriorityGrouping+0x44>)
  1559. 8000aba: 68db ldr r3, [r3, #12]
  1560. 8000abc: 60bb str r3, [r7, #8]
  1561. reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */
  1562. 8000abe: 68ba ldr r2, [r7, #8]
  1563. 8000ac0: f64f 03ff movw r3, #63743 ; 0xf8ff
  1564. 8000ac4: 4013 ands r3, r2
  1565. 8000ac6: 60bb str r3, [r7, #8]
  1566. reg_value = (reg_value |
  1567. ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
  1568. (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */
  1569. 8000ac8: 68fb ldr r3, [r7, #12]
  1570. 8000aca: 021a lsls r2, r3, #8
  1571. ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
  1572. 8000acc: 68bb ldr r3, [r7, #8]
  1573. 8000ace: 4313 orrs r3, r2
  1574. reg_value = (reg_value |
  1575. 8000ad0: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000
  1576. 8000ad4: f443 3300 orr.w r3, r3, #131072 ; 0x20000
  1577. 8000ad8: 60bb str r3, [r7, #8]
  1578. SCB->AIRCR = reg_value;
  1579. 8000ada: 4a04 ldr r2, [pc, #16] ; (8000aec <__NVIC_SetPriorityGrouping+0x44>)
  1580. 8000adc: 68bb ldr r3, [r7, #8]
  1581. 8000ade: 60d3 str r3, [r2, #12]
  1582. }
  1583. 8000ae0: bf00 nop
  1584. 8000ae2: 3714 adds r7, #20
  1585. 8000ae4: 46bd mov sp, r7
  1586. 8000ae6: bc80 pop {r7}
  1587. 8000ae8: 4770 bx lr
  1588. 8000aea: bf00 nop
  1589. 8000aec: e000ed00 .word 0xe000ed00
  1590. 08000af0 <__NVIC_GetPriorityGrouping>:
  1591. \brief Get Priority Grouping
  1592. \details Reads the priority grouping field from the NVIC Interrupt Controller.
  1593. \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
  1594. */
  1595. __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
  1596. {
  1597. 8000af0: b480 push {r7}
  1598. 8000af2: af00 add r7, sp, #0
  1599. return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
  1600. 8000af4: 4b04 ldr r3, [pc, #16] ; (8000b08 <__NVIC_GetPriorityGrouping+0x18>)
  1601. 8000af6: 68db ldr r3, [r3, #12]
  1602. 8000af8: 0a1b lsrs r3, r3, #8
  1603. 8000afa: f003 0307 and.w r3, r3, #7
  1604. }
  1605. 8000afe: 4618 mov r0, r3
  1606. 8000b00: 46bd mov sp, r7
  1607. 8000b02: bc80 pop {r7}
  1608. 8000b04: 4770 bx lr
  1609. 8000b06: bf00 nop
  1610. 8000b08: e000ed00 .word 0xe000ed00
  1611. 08000b0c <__NVIC_SetPriority>:
  1612. \param [in] IRQn Interrupt number.
  1613. \param [in] priority Priority to set.
  1614. \note The priority cannot be set for every processor exception.
  1615. */
  1616. __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
  1617. {
  1618. 8000b0c: b480 push {r7}
  1619. 8000b0e: b083 sub sp, #12
  1620. 8000b10: af00 add r7, sp, #0
  1621. 8000b12: 4603 mov r3, r0
  1622. 8000b14: 6039 str r1, [r7, #0]
  1623. 8000b16: 71fb strb r3, [r7, #7]
  1624. if ((int32_t)(IRQn) >= 0)
  1625. 8000b18: f997 3007 ldrsb.w r3, [r7, #7]
  1626. 8000b1c: 2b00 cmp r3, #0
  1627. 8000b1e: db0a blt.n 8000b36 <__NVIC_SetPriority+0x2a>
  1628. {
  1629. NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  1630. 8000b20: 683b ldr r3, [r7, #0]
  1631. 8000b22: b2da uxtb r2, r3
  1632. 8000b24: 490c ldr r1, [pc, #48] ; (8000b58 <__NVIC_SetPriority+0x4c>)
  1633. 8000b26: f997 3007 ldrsb.w r3, [r7, #7]
  1634. 8000b2a: 0112 lsls r2, r2, #4
  1635. 8000b2c: b2d2 uxtb r2, r2
  1636. 8000b2e: 440b add r3, r1
  1637. 8000b30: f883 2300 strb.w r2, [r3, #768] ; 0x300
  1638. }
  1639. else
  1640. {
  1641. SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  1642. }
  1643. }
  1644. 8000b34: e00a b.n 8000b4c <__NVIC_SetPriority+0x40>
  1645. SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  1646. 8000b36: 683b ldr r3, [r7, #0]
  1647. 8000b38: b2da uxtb r2, r3
  1648. 8000b3a: 4908 ldr r1, [pc, #32] ; (8000b5c <__NVIC_SetPriority+0x50>)
  1649. 8000b3c: 79fb ldrb r3, [r7, #7]
  1650. 8000b3e: f003 030f and.w r3, r3, #15
  1651. 8000b42: 3b04 subs r3, #4
  1652. 8000b44: 0112 lsls r2, r2, #4
  1653. 8000b46: b2d2 uxtb r2, r2
  1654. 8000b48: 440b add r3, r1
  1655. 8000b4a: 761a strb r2, [r3, #24]
  1656. }
  1657. 8000b4c: bf00 nop
  1658. 8000b4e: 370c adds r7, #12
  1659. 8000b50: 46bd mov sp, r7
  1660. 8000b52: bc80 pop {r7}
  1661. 8000b54: 4770 bx lr
  1662. 8000b56: bf00 nop
  1663. 8000b58: e000e100 .word 0xe000e100
  1664. 8000b5c: e000ed00 .word 0xe000ed00
  1665. 08000b60 <NVIC_EncodePriority>:
  1666. \param [in] PreemptPriority Preemptive priority value (starting from 0).
  1667. \param [in] SubPriority Subpriority value (starting from 0).
  1668. \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
  1669. */
  1670. __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
  1671. {
  1672. 8000b60: b480 push {r7}
  1673. 8000b62: b089 sub sp, #36 ; 0x24
  1674. 8000b64: af00 add r7, sp, #0
  1675. 8000b66: 60f8 str r0, [r7, #12]
  1676. 8000b68: 60b9 str r1, [r7, #8]
  1677. 8000b6a: 607a str r2, [r7, #4]
  1678. uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
  1679. 8000b6c: 68fb ldr r3, [r7, #12]
  1680. 8000b6e: f003 0307 and.w r3, r3, #7
  1681. 8000b72: 61fb str r3, [r7, #28]
  1682. uint32_t PreemptPriorityBits;
  1683. uint32_t SubPriorityBits;
  1684. PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
  1685. 8000b74: 69fb ldr r3, [r7, #28]
  1686. 8000b76: f1c3 0307 rsb r3, r3, #7
  1687. 8000b7a: 2b04 cmp r3, #4
  1688. 8000b7c: bf28 it cs
  1689. 8000b7e: 2304 movcs r3, #4
  1690. 8000b80: 61bb str r3, [r7, #24]
  1691. SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
  1692. 8000b82: 69fb ldr r3, [r7, #28]
  1693. 8000b84: 3304 adds r3, #4
  1694. 8000b86: 2b06 cmp r3, #6
  1695. 8000b88: d902 bls.n 8000b90 <NVIC_EncodePriority+0x30>
  1696. 8000b8a: 69fb ldr r3, [r7, #28]
  1697. 8000b8c: 3b03 subs r3, #3
  1698. 8000b8e: e000 b.n 8000b92 <NVIC_EncodePriority+0x32>
  1699. 8000b90: 2300 movs r3, #0
  1700. 8000b92: 617b str r3, [r7, #20]
  1701. return (
  1702. ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
  1703. 8000b94: f04f 32ff mov.w r2, #4294967295
  1704. 8000b98: 69bb ldr r3, [r7, #24]
  1705. 8000b9a: fa02 f303 lsl.w r3, r2, r3
  1706. 8000b9e: 43da mvns r2, r3
  1707. 8000ba0: 68bb ldr r3, [r7, #8]
  1708. 8000ba2: 401a ands r2, r3
  1709. 8000ba4: 697b ldr r3, [r7, #20]
  1710. 8000ba6: 409a lsls r2, r3
  1711. ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))
  1712. 8000ba8: f04f 31ff mov.w r1, #4294967295
  1713. 8000bac: 697b ldr r3, [r7, #20]
  1714. 8000bae: fa01 f303 lsl.w r3, r1, r3
  1715. 8000bb2: 43d9 mvns r1, r3
  1716. 8000bb4: 687b ldr r3, [r7, #4]
  1717. 8000bb6: 400b ands r3, r1
  1718. ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
  1719. 8000bb8: 4313 orrs r3, r2
  1720. );
  1721. }
  1722. 8000bba: 4618 mov r0, r3
  1723. 8000bbc: 3724 adds r7, #36 ; 0x24
  1724. 8000bbe: 46bd mov sp, r7
  1725. 8000bc0: bc80 pop {r7}
  1726. 8000bc2: 4770 bx lr
  1727. 08000bc4 <SysTick_Config>:
  1728. \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
  1729. function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
  1730. must contain a vendor-specific implementation of this function.
  1731. */
  1732. __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
  1733. {
  1734. 8000bc4: b580 push {r7, lr}
  1735. 8000bc6: b082 sub sp, #8
  1736. 8000bc8: af00 add r7, sp, #0
  1737. 8000bca: 6078 str r0, [r7, #4]
  1738. if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
  1739. 8000bcc: 687b ldr r3, [r7, #4]
  1740. 8000bce: 3b01 subs r3, #1
  1741. 8000bd0: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000
  1742. 8000bd4: d301 bcc.n 8000bda <SysTick_Config+0x16>
  1743. {
  1744. return (1UL); /* Reload value impossible */
  1745. 8000bd6: 2301 movs r3, #1
  1746. 8000bd8: e00f b.n 8000bfa <SysTick_Config+0x36>
  1747. }
  1748. SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
  1749. 8000bda: 4a0a ldr r2, [pc, #40] ; (8000c04 <SysTick_Config+0x40>)
  1750. 8000bdc: 687b ldr r3, [r7, #4]
  1751. 8000bde: 3b01 subs r3, #1
  1752. 8000be0: 6053 str r3, [r2, #4]
  1753. NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
  1754. 8000be2: 210f movs r1, #15
  1755. 8000be4: f04f 30ff mov.w r0, #4294967295
  1756. 8000be8: f7ff ff90 bl 8000b0c <__NVIC_SetPriority>
  1757. SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
  1758. 8000bec: 4b05 ldr r3, [pc, #20] ; (8000c04 <SysTick_Config+0x40>)
  1759. 8000bee: 2200 movs r2, #0
  1760. 8000bf0: 609a str r2, [r3, #8]
  1761. SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
  1762. 8000bf2: 4b04 ldr r3, [pc, #16] ; (8000c04 <SysTick_Config+0x40>)
  1763. 8000bf4: 2207 movs r2, #7
  1764. 8000bf6: 601a str r2, [r3, #0]
  1765. SysTick_CTRL_TICKINT_Msk |
  1766. SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
  1767. return (0UL); /* Function successful */
  1768. 8000bf8: 2300 movs r3, #0
  1769. }
  1770. 8000bfa: 4618 mov r0, r3
  1771. 8000bfc: 3708 adds r7, #8
  1772. 8000bfe: 46bd mov sp, r7
  1773. 8000c00: bd80 pop {r7, pc}
  1774. 8000c02: bf00 nop
  1775. 8000c04: e000e010 .word 0xe000e010
  1776. 08000c08 <HAL_NVIC_SetPriorityGrouping>:
  1777. * @note When the NVIC_PriorityGroup_0 is selected, IRQ pre-emption is no more possible.
  1778. * The pending IRQ priority will be managed only by the subpriority.
  1779. * @retval None
  1780. */
  1781. void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
  1782. {
  1783. 8000c08: b580 push {r7, lr}
  1784. 8000c0a: b082 sub sp, #8
  1785. 8000c0c: af00 add r7, sp, #0
  1786. 8000c0e: 6078 str r0, [r7, #4]
  1787. /* Check the parameters */
  1788. assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
  1789. /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
  1790. NVIC_SetPriorityGrouping(PriorityGroup);
  1791. 8000c10: 6878 ldr r0, [r7, #4]
  1792. 8000c12: f7ff ff49 bl 8000aa8 <__NVIC_SetPriorityGrouping>
  1793. }
  1794. 8000c16: bf00 nop
  1795. 8000c18: 3708 adds r7, #8
  1796. 8000c1a: 46bd mov sp, r7
  1797. 8000c1c: bd80 pop {r7, pc}
  1798. 08000c1e <HAL_NVIC_SetPriority>:
  1799. * This parameter can be a value between 0 and 15
  1800. * A lower priority value indicates a higher priority.
  1801. * @retval None
  1802. */
  1803. void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
  1804. {
  1805. 8000c1e: b580 push {r7, lr}
  1806. 8000c20: b086 sub sp, #24
  1807. 8000c22: af00 add r7, sp, #0
  1808. 8000c24: 4603 mov r3, r0
  1809. 8000c26: 60b9 str r1, [r7, #8]
  1810. 8000c28: 607a str r2, [r7, #4]
  1811. 8000c2a: 73fb strb r3, [r7, #15]
  1812. uint32_t prioritygroup = 0x00;
  1813. 8000c2c: 2300 movs r3, #0
  1814. 8000c2e: 617b str r3, [r7, #20]
  1815. /* Check the parameters */
  1816. assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));
  1817. assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
  1818. prioritygroup = NVIC_GetPriorityGrouping();
  1819. 8000c30: f7ff ff5e bl 8000af0 <__NVIC_GetPriorityGrouping>
  1820. 8000c34: 6178 str r0, [r7, #20]
  1821. NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
  1822. 8000c36: 687a ldr r2, [r7, #4]
  1823. 8000c38: 68b9 ldr r1, [r7, #8]
  1824. 8000c3a: 6978 ldr r0, [r7, #20]
  1825. 8000c3c: f7ff ff90 bl 8000b60 <NVIC_EncodePriority>
  1826. 8000c40: 4602 mov r2, r0
  1827. 8000c42: f997 300f ldrsb.w r3, [r7, #15]
  1828. 8000c46: 4611 mov r1, r2
  1829. 8000c48: 4618 mov r0, r3
  1830. 8000c4a: f7ff ff5f bl 8000b0c <__NVIC_SetPriority>
  1831. }
  1832. 8000c4e: bf00 nop
  1833. 8000c50: 3718 adds r7, #24
  1834. 8000c52: 46bd mov sp, r7
  1835. 8000c54: bd80 pop {r7, pc}
  1836. 08000c56 <HAL_SYSTICK_Config>:
  1837. * @param TicksNumb Specifies the ticks Number of ticks between two interrupts.
  1838. * @retval status: - 0 Function succeeded.
  1839. * - 1 Function failed.
  1840. */
  1841. uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
  1842. {
  1843. 8000c56: b580 push {r7, lr}
  1844. 8000c58: b082 sub sp, #8
  1845. 8000c5a: af00 add r7, sp, #0
  1846. 8000c5c: 6078 str r0, [r7, #4]
  1847. return SysTick_Config(TicksNumb);
  1848. 8000c5e: 6878 ldr r0, [r7, #4]
  1849. 8000c60: f7ff ffb0 bl 8000bc4 <SysTick_Config>
  1850. 8000c64: 4603 mov r3, r0
  1851. }
  1852. 8000c66: 4618 mov r0, r3
  1853. 8000c68: 3708 adds r7, #8
  1854. 8000c6a: 46bd mov sp, r7
  1855. 8000c6c: bd80 pop {r7, pc}
  1856. ...
  1857. 08000c70 <HAL_GPIO_Init>:
  1858. * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains
  1859. * the configuration information for the specified GPIO peripheral.
  1860. * @retval None
  1861. */
  1862. void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
  1863. {
  1864. 8000c70: b480 push {r7}
  1865. 8000c72: b087 sub sp, #28
  1866. 8000c74: af00 add r7, sp, #0
  1867. 8000c76: 6078 str r0, [r7, #4]
  1868. 8000c78: 6039 str r1, [r7, #0]
  1869. uint32_t position = 0x00;
  1870. 8000c7a: 2300 movs r3, #0
  1871. 8000c7c: 617b str r3, [r7, #20]
  1872. uint32_t iocurrent = 0x00;
  1873. 8000c7e: 2300 movs r3, #0
  1874. 8000c80: 60fb str r3, [r7, #12]
  1875. uint32_t temp = 0x00;
  1876. 8000c82: 2300 movs r3, #0
  1877. 8000c84: 613b str r3, [r7, #16]
  1878. assert_param(IS_GPIO_PIN(GPIO_Init->Pin));
  1879. assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
  1880. assert_param(IS_GPIO_PULL(GPIO_Init->Pull));
  1881. /* Configure the port pins */
  1882. while (((GPIO_Init->Pin) >> position) != 0)
  1883. 8000c86: e160 b.n 8000f4a <HAL_GPIO_Init+0x2da>
  1884. {
  1885. /* Get current io position */
  1886. iocurrent = (GPIO_Init->Pin) & (1U << position);
  1887. 8000c88: 683b ldr r3, [r7, #0]
  1888. 8000c8a: 681a ldr r2, [r3, #0]
  1889. 8000c8c: 2101 movs r1, #1
  1890. 8000c8e: 697b ldr r3, [r7, #20]
  1891. 8000c90: fa01 f303 lsl.w r3, r1, r3
  1892. 8000c94: 4013 ands r3, r2
  1893. 8000c96: 60fb str r3, [r7, #12]
  1894. if (iocurrent)
  1895. 8000c98: 68fb ldr r3, [r7, #12]
  1896. 8000c9a: 2b00 cmp r3, #0
  1897. 8000c9c: f000 8152 beq.w 8000f44 <HAL_GPIO_Init+0x2d4>
  1898. {
  1899. /*--------------------- GPIO Mode Configuration ------------------------*/
  1900. /* In case of Output or Alternate function mode selection */
  1901. if ((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
  1902. 8000ca0: 683b ldr r3, [r7, #0]
  1903. 8000ca2: 685b ldr r3, [r3, #4]
  1904. 8000ca4: 2b01 cmp r3, #1
  1905. 8000ca6: d00b beq.n 8000cc0 <HAL_GPIO_Init+0x50>
  1906. 8000ca8: 683b ldr r3, [r7, #0]
  1907. 8000caa: 685b ldr r3, [r3, #4]
  1908. 8000cac: 2b02 cmp r3, #2
  1909. 8000cae: d007 beq.n 8000cc0 <HAL_GPIO_Init+0x50>
  1910. (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
  1911. 8000cb0: 683b ldr r3, [r7, #0]
  1912. 8000cb2: 685b ldr r3, [r3, #4]
  1913. if ((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
  1914. 8000cb4: 2b11 cmp r3, #17
  1915. 8000cb6: d003 beq.n 8000cc0 <HAL_GPIO_Init+0x50>
  1916. (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
  1917. 8000cb8: 683b ldr r3, [r7, #0]
  1918. 8000cba: 685b ldr r3, [r3, #4]
  1919. 8000cbc: 2b12 cmp r3, #18
  1920. 8000cbe: d130 bne.n 8000d22 <HAL_GPIO_Init+0xb2>
  1921. {
  1922. /* Check the Speed parameter */
  1923. assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));
  1924. /* Configure the IO Speed */
  1925. temp = GPIOx->OSPEEDR;
  1926. 8000cc0: 687b ldr r3, [r7, #4]
  1927. 8000cc2: 689b ldr r3, [r3, #8]
  1928. 8000cc4: 613b str r3, [r7, #16]
  1929. CLEAR_BIT(temp, GPIO_OSPEEDER_OSPEEDR0 << (position * 2));
  1930. 8000cc6: 697b ldr r3, [r7, #20]
  1931. 8000cc8: 005b lsls r3, r3, #1
  1932. 8000cca: 2203 movs r2, #3
  1933. 8000ccc: fa02 f303 lsl.w r3, r2, r3
  1934. 8000cd0: 43db mvns r3, r3
  1935. 8000cd2: 693a ldr r2, [r7, #16]
  1936. 8000cd4: 4013 ands r3, r2
  1937. 8000cd6: 613b str r3, [r7, #16]
  1938. SET_BIT(temp, GPIO_Init->Speed << (position * 2));
  1939. 8000cd8: 683b ldr r3, [r7, #0]
  1940. 8000cda: 68da ldr r2, [r3, #12]
  1941. 8000cdc: 697b ldr r3, [r7, #20]
  1942. 8000cde: 005b lsls r3, r3, #1
  1943. 8000ce0: fa02 f303 lsl.w r3, r2, r3
  1944. 8000ce4: 693a ldr r2, [r7, #16]
  1945. 8000ce6: 4313 orrs r3, r2
  1946. 8000ce8: 613b str r3, [r7, #16]
  1947. GPIOx->OSPEEDR = temp;
  1948. 8000cea: 687b ldr r3, [r7, #4]
  1949. 8000cec: 693a ldr r2, [r7, #16]
  1950. 8000cee: 609a str r2, [r3, #8]
  1951. /* Configure the IO Output Type */
  1952. temp = GPIOx->OTYPER;
  1953. 8000cf0: 687b ldr r3, [r7, #4]
  1954. 8000cf2: 685b ldr r3, [r3, #4]
  1955. 8000cf4: 613b str r3, [r7, #16]
  1956. CLEAR_BIT(temp, GPIO_OTYPER_OT_0 << position) ;
  1957. 8000cf6: 2201 movs r2, #1
  1958. 8000cf8: 697b ldr r3, [r7, #20]
  1959. 8000cfa: fa02 f303 lsl.w r3, r2, r3
  1960. 8000cfe: 43db mvns r3, r3
  1961. 8000d00: 693a ldr r2, [r7, #16]
  1962. 8000d02: 4013 ands r3, r2
  1963. 8000d04: 613b str r3, [r7, #16]
  1964. SET_BIT(temp, ((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4) << position);
  1965. 8000d06: 683b ldr r3, [r7, #0]
  1966. 8000d08: 685b ldr r3, [r3, #4]
  1967. 8000d0a: 091b lsrs r3, r3, #4
  1968. 8000d0c: f003 0201 and.w r2, r3, #1
  1969. 8000d10: 697b ldr r3, [r7, #20]
  1970. 8000d12: fa02 f303 lsl.w r3, r2, r3
  1971. 8000d16: 693a ldr r2, [r7, #16]
  1972. 8000d18: 4313 orrs r3, r2
  1973. 8000d1a: 613b str r3, [r7, #16]
  1974. GPIOx->OTYPER = temp;
  1975. 8000d1c: 687b ldr r3, [r7, #4]
  1976. 8000d1e: 693a ldr r2, [r7, #16]
  1977. 8000d20: 605a str r2, [r3, #4]
  1978. }
  1979. /* Activate the Pull-up or Pull down resistor for the current IO */
  1980. temp = GPIOx->PUPDR;
  1981. 8000d22: 687b ldr r3, [r7, #4]
  1982. 8000d24: 68db ldr r3, [r3, #12]
  1983. 8000d26: 613b str r3, [r7, #16]
  1984. CLEAR_BIT(temp, GPIO_PUPDR_PUPDR0 << (position * 2));
  1985. 8000d28: 697b ldr r3, [r7, #20]
  1986. 8000d2a: 005b lsls r3, r3, #1
  1987. 8000d2c: 2203 movs r2, #3
  1988. 8000d2e: fa02 f303 lsl.w r3, r2, r3
  1989. 8000d32: 43db mvns r3, r3
  1990. 8000d34: 693a ldr r2, [r7, #16]
  1991. 8000d36: 4013 ands r3, r2
  1992. 8000d38: 613b str r3, [r7, #16]
  1993. SET_BIT(temp, (GPIO_Init->Pull) << (position * 2));
  1994. 8000d3a: 683b ldr r3, [r7, #0]
  1995. 8000d3c: 689a ldr r2, [r3, #8]
  1996. 8000d3e: 697b ldr r3, [r7, #20]
  1997. 8000d40: 005b lsls r3, r3, #1
  1998. 8000d42: fa02 f303 lsl.w r3, r2, r3
  1999. 8000d46: 693a ldr r2, [r7, #16]
  2000. 8000d48: 4313 orrs r3, r2
  2001. 8000d4a: 613b str r3, [r7, #16]
  2002. GPIOx->PUPDR = temp;
  2003. 8000d4c: 687b ldr r3, [r7, #4]
  2004. 8000d4e: 693a ldr r2, [r7, #16]
  2005. 8000d50: 60da str r2, [r3, #12]
  2006. /* In case of Alternate function mode selection */
  2007. if ((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
  2008. 8000d52: 683b ldr r3, [r7, #0]
  2009. 8000d54: 685b ldr r3, [r3, #4]
  2010. 8000d56: 2b02 cmp r3, #2
  2011. 8000d58: d003 beq.n 8000d62 <HAL_GPIO_Init+0xf2>
  2012. 8000d5a: 683b ldr r3, [r7, #0]
  2013. 8000d5c: 685b ldr r3, [r3, #4]
  2014. 8000d5e: 2b12 cmp r3, #18
  2015. 8000d60: d123 bne.n 8000daa <HAL_GPIO_Init+0x13a>
  2016. assert_param(IS_GPIO_AF_INSTANCE(GPIOx));
  2017. assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
  2018. /* Configure Alternate function mapped with the current IO */
  2019. /* Identify AFRL or AFRH register based on IO position*/
  2020. temp = GPIOx->AFR[position >> 3];
  2021. 8000d62: 697b ldr r3, [r7, #20]
  2022. 8000d64: 08da lsrs r2, r3, #3
  2023. 8000d66: 687b ldr r3, [r7, #4]
  2024. 8000d68: 3208 adds r2, #8
  2025. 8000d6a: f853 3022 ldr.w r3, [r3, r2, lsl #2]
  2026. 8000d6e: 613b str r3, [r7, #16]
  2027. CLEAR_BIT(temp, 0xFU << ((uint32_t)(position & 0x07U) * 4));
  2028. 8000d70: 697b ldr r3, [r7, #20]
  2029. 8000d72: f003 0307 and.w r3, r3, #7
  2030. 8000d76: 009b lsls r3, r3, #2
  2031. 8000d78: 220f movs r2, #15
  2032. 8000d7a: fa02 f303 lsl.w r3, r2, r3
  2033. 8000d7e: 43db mvns r3, r3
  2034. 8000d80: 693a ldr r2, [r7, #16]
  2035. 8000d82: 4013 ands r3, r2
  2036. 8000d84: 613b str r3, [r7, #16]
  2037. SET_BIT(temp, (uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4));
  2038. 8000d86: 683b ldr r3, [r7, #0]
  2039. 8000d88: 691a ldr r2, [r3, #16]
  2040. 8000d8a: 697b ldr r3, [r7, #20]
  2041. 8000d8c: f003 0307 and.w r3, r3, #7
  2042. 8000d90: 009b lsls r3, r3, #2
  2043. 8000d92: fa02 f303 lsl.w r3, r2, r3
  2044. 8000d96: 693a ldr r2, [r7, #16]
  2045. 8000d98: 4313 orrs r3, r2
  2046. 8000d9a: 613b str r3, [r7, #16]
  2047. GPIOx->AFR[position >> 3] = temp;
  2048. 8000d9c: 697b ldr r3, [r7, #20]
  2049. 8000d9e: 08da lsrs r2, r3, #3
  2050. 8000da0: 687b ldr r3, [r7, #4]
  2051. 8000da2: 3208 adds r2, #8
  2052. 8000da4: 6939 ldr r1, [r7, #16]
  2053. 8000da6: f843 1022 str.w r1, [r3, r2, lsl #2]
  2054. }
  2055. /* Configure IO Direction mode (Input, Output, Alternate or Analog) */
  2056. temp = GPIOx->MODER;
  2057. 8000daa: 687b ldr r3, [r7, #4]
  2058. 8000dac: 681b ldr r3, [r3, #0]
  2059. 8000dae: 613b str r3, [r7, #16]
  2060. CLEAR_BIT(temp, GPIO_MODER_MODER0 << (position * 2));
  2061. 8000db0: 697b ldr r3, [r7, #20]
  2062. 8000db2: 005b lsls r3, r3, #1
  2063. 8000db4: 2203 movs r2, #3
  2064. 8000db6: fa02 f303 lsl.w r3, r2, r3
  2065. 8000dba: 43db mvns r3, r3
  2066. 8000dbc: 693a ldr r2, [r7, #16]
  2067. 8000dbe: 4013 ands r3, r2
  2068. 8000dc0: 613b str r3, [r7, #16]
  2069. SET_BIT(temp, (GPIO_Init->Mode & GPIO_MODE) << (position * 2));
  2070. 8000dc2: 683b ldr r3, [r7, #0]
  2071. 8000dc4: 685b ldr r3, [r3, #4]
  2072. 8000dc6: f003 0203 and.w r2, r3, #3
  2073. 8000dca: 697b ldr r3, [r7, #20]
  2074. 8000dcc: 005b lsls r3, r3, #1
  2075. 8000dce: fa02 f303 lsl.w r3, r2, r3
  2076. 8000dd2: 693a ldr r2, [r7, #16]
  2077. 8000dd4: 4313 orrs r3, r2
  2078. 8000dd6: 613b str r3, [r7, #16]
  2079. GPIOx->MODER = temp;
  2080. 8000dd8: 687b ldr r3, [r7, #4]
  2081. 8000dda: 693a ldr r2, [r7, #16]
  2082. 8000ddc: 601a str r2, [r3, #0]
  2083. /*--------------------- EXTI Mode Configuration ------------------------*/
  2084. /* Configure the External Interrupt or event for the current IO */
  2085. if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
  2086. 8000dde: 683b ldr r3, [r7, #0]
  2087. 8000de0: 685b ldr r3, [r3, #4]
  2088. 8000de2: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  2089. 8000de6: 2b00 cmp r3, #0
  2090. 8000de8: f000 80ac beq.w 8000f44 <HAL_GPIO_Init+0x2d4>
  2091. {
  2092. /* Enable SYSCFG Clock */
  2093. __HAL_RCC_SYSCFG_CLK_ENABLE();
  2094. 8000dec: 4b5d ldr r3, [pc, #372] ; (8000f64 <HAL_GPIO_Init+0x2f4>)
  2095. 8000dee: 6a1b ldr r3, [r3, #32]
  2096. 8000df0: 4a5c ldr r2, [pc, #368] ; (8000f64 <HAL_GPIO_Init+0x2f4>)
  2097. 8000df2: f043 0301 orr.w r3, r3, #1
  2098. 8000df6: 6213 str r3, [r2, #32]
  2099. 8000df8: 4b5a ldr r3, [pc, #360] ; (8000f64 <HAL_GPIO_Init+0x2f4>)
  2100. 8000dfa: 6a1b ldr r3, [r3, #32]
  2101. 8000dfc: f003 0301 and.w r3, r3, #1
  2102. 8000e00: 60bb str r3, [r7, #8]
  2103. 8000e02: 68bb ldr r3, [r7, #8]
  2104. temp = SYSCFG->EXTICR[position >> 2];
  2105. 8000e04: 4a58 ldr r2, [pc, #352] ; (8000f68 <HAL_GPIO_Init+0x2f8>)
  2106. 8000e06: 697b ldr r3, [r7, #20]
  2107. 8000e08: 089b lsrs r3, r3, #2
  2108. 8000e0a: 3302 adds r3, #2
  2109. 8000e0c: f852 3023 ldr.w r3, [r2, r3, lsl #2]
  2110. 8000e10: 613b str r3, [r7, #16]
  2111. CLEAR_BIT(temp, (0x0FU) << (4 * (position & 0x03)));
  2112. 8000e12: 697b ldr r3, [r7, #20]
  2113. 8000e14: f003 0303 and.w r3, r3, #3
  2114. 8000e18: 009b lsls r3, r3, #2
  2115. 8000e1a: 220f movs r2, #15
  2116. 8000e1c: fa02 f303 lsl.w r3, r2, r3
  2117. 8000e20: 43db mvns r3, r3
  2118. 8000e22: 693a ldr r2, [r7, #16]
  2119. 8000e24: 4013 ands r3, r2
  2120. 8000e26: 613b str r3, [r7, #16]
  2121. SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)));
  2122. 8000e28: 687b ldr r3, [r7, #4]
  2123. 8000e2a: 4a50 ldr r2, [pc, #320] ; (8000f6c <HAL_GPIO_Init+0x2fc>)
  2124. 8000e2c: 4293 cmp r3, r2
  2125. 8000e2e: d025 beq.n 8000e7c <HAL_GPIO_Init+0x20c>
  2126. 8000e30: 687b ldr r3, [r7, #4]
  2127. 8000e32: 4a4f ldr r2, [pc, #316] ; (8000f70 <HAL_GPIO_Init+0x300>)
  2128. 8000e34: 4293 cmp r3, r2
  2129. 8000e36: d01f beq.n 8000e78 <HAL_GPIO_Init+0x208>
  2130. 8000e38: 687b ldr r3, [r7, #4]
  2131. 8000e3a: 4a4e ldr r2, [pc, #312] ; (8000f74 <HAL_GPIO_Init+0x304>)
  2132. 8000e3c: 4293 cmp r3, r2
  2133. 8000e3e: d019 beq.n 8000e74 <HAL_GPIO_Init+0x204>
  2134. 8000e40: 687b ldr r3, [r7, #4]
  2135. 8000e42: 4a4d ldr r2, [pc, #308] ; (8000f78 <HAL_GPIO_Init+0x308>)
  2136. 8000e44: 4293 cmp r3, r2
  2137. 8000e46: d013 beq.n 8000e70 <HAL_GPIO_Init+0x200>
  2138. 8000e48: 687b ldr r3, [r7, #4]
  2139. 8000e4a: 4a4c ldr r2, [pc, #304] ; (8000f7c <HAL_GPIO_Init+0x30c>)
  2140. 8000e4c: 4293 cmp r3, r2
  2141. 8000e4e: d00d beq.n 8000e6c <HAL_GPIO_Init+0x1fc>
  2142. 8000e50: 687b ldr r3, [r7, #4]
  2143. 8000e52: 4a4b ldr r2, [pc, #300] ; (8000f80 <HAL_GPIO_Init+0x310>)
  2144. 8000e54: 4293 cmp r3, r2
  2145. 8000e56: d007 beq.n 8000e68 <HAL_GPIO_Init+0x1f8>
  2146. 8000e58: 687b ldr r3, [r7, #4]
  2147. 8000e5a: 4a4a ldr r2, [pc, #296] ; (8000f84 <HAL_GPIO_Init+0x314>)
  2148. 8000e5c: 4293 cmp r3, r2
  2149. 8000e5e: d101 bne.n 8000e64 <HAL_GPIO_Init+0x1f4>
  2150. 8000e60: 2306 movs r3, #6
  2151. 8000e62: e00c b.n 8000e7e <HAL_GPIO_Init+0x20e>
  2152. 8000e64: 2307 movs r3, #7
  2153. 8000e66: e00a b.n 8000e7e <HAL_GPIO_Init+0x20e>
  2154. 8000e68: 2305 movs r3, #5
  2155. 8000e6a: e008 b.n 8000e7e <HAL_GPIO_Init+0x20e>
  2156. 8000e6c: 2304 movs r3, #4
  2157. 8000e6e: e006 b.n 8000e7e <HAL_GPIO_Init+0x20e>
  2158. 8000e70: 2303 movs r3, #3
  2159. 8000e72: e004 b.n 8000e7e <HAL_GPIO_Init+0x20e>
  2160. 8000e74: 2302 movs r3, #2
  2161. 8000e76: e002 b.n 8000e7e <HAL_GPIO_Init+0x20e>
  2162. 8000e78: 2301 movs r3, #1
  2163. 8000e7a: e000 b.n 8000e7e <HAL_GPIO_Init+0x20e>
  2164. 8000e7c: 2300 movs r3, #0
  2165. 8000e7e: 697a ldr r2, [r7, #20]
  2166. 8000e80: f002 0203 and.w r2, r2, #3
  2167. 8000e84: 0092 lsls r2, r2, #2
  2168. 8000e86: 4093 lsls r3, r2
  2169. 8000e88: 693a ldr r2, [r7, #16]
  2170. 8000e8a: 4313 orrs r3, r2
  2171. 8000e8c: 613b str r3, [r7, #16]
  2172. SYSCFG->EXTICR[position >> 2] = temp;
  2173. 8000e8e: 4936 ldr r1, [pc, #216] ; (8000f68 <HAL_GPIO_Init+0x2f8>)
  2174. 8000e90: 697b ldr r3, [r7, #20]
  2175. 8000e92: 089b lsrs r3, r3, #2
  2176. 8000e94: 3302 adds r3, #2
  2177. 8000e96: 693a ldr r2, [r7, #16]
  2178. 8000e98: f841 2023 str.w r2, [r1, r3, lsl #2]
  2179. /* Clear EXTI line configuration */
  2180. temp = EXTI->IMR;
  2181. 8000e9c: 4b3a ldr r3, [pc, #232] ; (8000f88 <HAL_GPIO_Init+0x318>)
  2182. 8000e9e: 681b ldr r3, [r3, #0]
  2183. 8000ea0: 613b str r3, [r7, #16]
  2184. CLEAR_BIT(temp, (uint32_t)iocurrent);
  2185. 8000ea2: 68fb ldr r3, [r7, #12]
  2186. 8000ea4: 43db mvns r3, r3
  2187. 8000ea6: 693a ldr r2, [r7, #16]
  2188. 8000ea8: 4013 ands r3, r2
  2189. 8000eaa: 613b str r3, [r7, #16]
  2190. if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT)
  2191. 8000eac: 683b ldr r3, [r7, #0]
  2192. 8000eae: 685b ldr r3, [r3, #4]
  2193. 8000eb0: f403 3380 and.w r3, r3, #65536 ; 0x10000
  2194. 8000eb4: 2b00 cmp r3, #0
  2195. 8000eb6: d003 beq.n 8000ec0 <HAL_GPIO_Init+0x250>
  2196. {
  2197. SET_BIT(temp, iocurrent);
  2198. 8000eb8: 693a ldr r2, [r7, #16]
  2199. 8000eba: 68fb ldr r3, [r7, #12]
  2200. 8000ebc: 4313 orrs r3, r2
  2201. 8000ebe: 613b str r3, [r7, #16]
  2202. }
  2203. EXTI->IMR = temp;
  2204. 8000ec0: 4a31 ldr r2, [pc, #196] ; (8000f88 <HAL_GPIO_Init+0x318>)
  2205. 8000ec2: 693b ldr r3, [r7, #16]
  2206. 8000ec4: 6013 str r3, [r2, #0]
  2207. temp = EXTI->EMR;
  2208. 8000ec6: 4b30 ldr r3, [pc, #192] ; (8000f88 <HAL_GPIO_Init+0x318>)
  2209. 8000ec8: 685b ldr r3, [r3, #4]
  2210. 8000eca: 613b str r3, [r7, #16]
  2211. CLEAR_BIT(temp, (uint32_t)iocurrent);
  2212. 8000ecc: 68fb ldr r3, [r7, #12]
  2213. 8000ece: 43db mvns r3, r3
  2214. 8000ed0: 693a ldr r2, [r7, #16]
  2215. 8000ed2: 4013 ands r3, r2
  2216. 8000ed4: 613b str r3, [r7, #16]
  2217. if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)
  2218. 8000ed6: 683b ldr r3, [r7, #0]
  2219. 8000ed8: 685b ldr r3, [r3, #4]
  2220. 8000eda: f403 3300 and.w r3, r3, #131072 ; 0x20000
  2221. 8000ede: 2b00 cmp r3, #0
  2222. 8000ee0: d003 beq.n 8000eea <HAL_GPIO_Init+0x27a>
  2223. {
  2224. SET_BIT(temp, iocurrent);
  2225. 8000ee2: 693a ldr r2, [r7, #16]
  2226. 8000ee4: 68fb ldr r3, [r7, #12]
  2227. 8000ee6: 4313 orrs r3, r2
  2228. 8000ee8: 613b str r3, [r7, #16]
  2229. }
  2230. EXTI->EMR = temp;
  2231. 8000eea: 4a27 ldr r2, [pc, #156] ; (8000f88 <HAL_GPIO_Init+0x318>)
  2232. 8000eec: 693b ldr r3, [r7, #16]
  2233. 8000eee: 6053 str r3, [r2, #4]
  2234. /* Clear Rising Falling edge configuration */
  2235. temp = EXTI->RTSR;
  2236. 8000ef0: 4b25 ldr r3, [pc, #148] ; (8000f88 <HAL_GPIO_Init+0x318>)
  2237. 8000ef2: 689b ldr r3, [r3, #8]
  2238. 8000ef4: 613b str r3, [r7, #16]
  2239. CLEAR_BIT(temp, (uint32_t)iocurrent);
  2240. 8000ef6: 68fb ldr r3, [r7, #12]
  2241. 8000ef8: 43db mvns r3, r3
  2242. 8000efa: 693a ldr r2, [r7, #16]
  2243. 8000efc: 4013 ands r3, r2
  2244. 8000efe: 613b str r3, [r7, #16]
  2245. if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE)
  2246. 8000f00: 683b ldr r3, [r7, #0]
  2247. 8000f02: 685b ldr r3, [r3, #4]
  2248. 8000f04: f403 1380 and.w r3, r3, #1048576 ; 0x100000
  2249. 8000f08: 2b00 cmp r3, #0
  2250. 8000f0a: d003 beq.n 8000f14 <HAL_GPIO_Init+0x2a4>
  2251. {
  2252. SET_BIT(temp, iocurrent);
  2253. 8000f0c: 693a ldr r2, [r7, #16]
  2254. 8000f0e: 68fb ldr r3, [r7, #12]
  2255. 8000f10: 4313 orrs r3, r2
  2256. 8000f12: 613b str r3, [r7, #16]
  2257. }
  2258. EXTI->RTSR = temp;
  2259. 8000f14: 4a1c ldr r2, [pc, #112] ; (8000f88 <HAL_GPIO_Init+0x318>)
  2260. 8000f16: 693b ldr r3, [r7, #16]
  2261. 8000f18: 6093 str r3, [r2, #8]
  2262. temp = EXTI->FTSR;
  2263. 8000f1a: 4b1b ldr r3, [pc, #108] ; (8000f88 <HAL_GPIO_Init+0x318>)
  2264. 8000f1c: 68db ldr r3, [r3, #12]
  2265. 8000f1e: 613b str r3, [r7, #16]
  2266. CLEAR_BIT(temp, (uint32_t)iocurrent);
  2267. 8000f20: 68fb ldr r3, [r7, #12]
  2268. 8000f22: 43db mvns r3, r3
  2269. 8000f24: 693a ldr r2, [r7, #16]
  2270. 8000f26: 4013 ands r3, r2
  2271. 8000f28: 613b str r3, [r7, #16]
  2272. if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE)
  2273. 8000f2a: 683b ldr r3, [r7, #0]
  2274. 8000f2c: 685b ldr r3, [r3, #4]
  2275. 8000f2e: f403 1300 and.w r3, r3, #2097152 ; 0x200000
  2276. 8000f32: 2b00 cmp r3, #0
  2277. 8000f34: d003 beq.n 8000f3e <HAL_GPIO_Init+0x2ce>
  2278. {
  2279. SET_BIT(temp, iocurrent);
  2280. 8000f36: 693a ldr r2, [r7, #16]
  2281. 8000f38: 68fb ldr r3, [r7, #12]
  2282. 8000f3a: 4313 orrs r3, r2
  2283. 8000f3c: 613b str r3, [r7, #16]
  2284. }
  2285. EXTI->FTSR = temp;
  2286. 8000f3e: 4a12 ldr r2, [pc, #72] ; (8000f88 <HAL_GPIO_Init+0x318>)
  2287. 8000f40: 693b ldr r3, [r7, #16]
  2288. 8000f42: 60d3 str r3, [r2, #12]
  2289. }
  2290. }
  2291. position++;
  2292. 8000f44: 697b ldr r3, [r7, #20]
  2293. 8000f46: 3301 adds r3, #1
  2294. 8000f48: 617b str r3, [r7, #20]
  2295. while (((GPIO_Init->Pin) >> position) != 0)
  2296. 8000f4a: 683b ldr r3, [r7, #0]
  2297. 8000f4c: 681a ldr r2, [r3, #0]
  2298. 8000f4e: 697b ldr r3, [r7, #20]
  2299. 8000f50: fa22 f303 lsr.w r3, r2, r3
  2300. 8000f54: 2b00 cmp r3, #0
  2301. 8000f56: f47f ae97 bne.w 8000c88 <HAL_GPIO_Init+0x18>
  2302. }
  2303. }
  2304. 8000f5a: bf00 nop
  2305. 8000f5c: 371c adds r7, #28
  2306. 8000f5e: 46bd mov sp, r7
  2307. 8000f60: bc80 pop {r7}
  2308. 8000f62: 4770 bx lr
  2309. 8000f64: 40023800 .word 0x40023800
  2310. 8000f68: 40010000 .word 0x40010000
  2311. 8000f6c: 40020000 .word 0x40020000
  2312. 8000f70: 40020400 .word 0x40020400
  2313. 8000f74: 40020800 .word 0x40020800
  2314. 8000f78: 40020c00 .word 0x40020c00
  2315. 8000f7c: 40021000 .word 0x40021000
  2316. 8000f80: 40021400 .word 0x40021400
  2317. 8000f84: 40021800 .word 0x40021800
  2318. 8000f88: 40010400 .word 0x40010400
  2319. 08000f8c <HAL_GPIO_WritePin>:
  2320. * @arg GPIO_PIN_RESET: to clear the port pin
  2321. * @arg GPIO_PIN_SET: to set the port pin
  2322. * @retval None
  2323. */
  2324. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
  2325. {
  2326. 8000f8c: b480 push {r7}
  2327. 8000f8e: b083 sub sp, #12
  2328. 8000f90: af00 add r7, sp, #0
  2329. 8000f92: 6078 str r0, [r7, #4]
  2330. 8000f94: 460b mov r3, r1
  2331. 8000f96: 807b strh r3, [r7, #2]
  2332. 8000f98: 4613 mov r3, r2
  2333. 8000f9a: 707b strb r3, [r7, #1]
  2334. /* Check the parameters */
  2335. assert_param(IS_GPIO_PIN(GPIO_Pin));
  2336. assert_param(IS_GPIO_PIN_ACTION(PinState));
  2337. if (PinState != GPIO_PIN_RESET)
  2338. 8000f9c: 787b ldrb r3, [r7, #1]
  2339. 8000f9e: 2b00 cmp r3, #0
  2340. 8000fa0: d003 beq.n 8000faa <HAL_GPIO_WritePin+0x1e>
  2341. {
  2342. GPIOx->BSRR = (uint32_t)GPIO_Pin;
  2343. 8000fa2: 887a ldrh r2, [r7, #2]
  2344. 8000fa4: 687b ldr r3, [r7, #4]
  2345. 8000fa6: 619a str r2, [r3, #24]
  2346. }
  2347. else
  2348. {
  2349. GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ;
  2350. }
  2351. }
  2352. 8000fa8: e003 b.n 8000fb2 <HAL_GPIO_WritePin+0x26>
  2353. GPIOx->BSRR = (uint32_t)GPIO_Pin << 16 ;
  2354. 8000faa: 887b ldrh r3, [r7, #2]
  2355. 8000fac: 041a lsls r2, r3, #16
  2356. 8000fae: 687b ldr r3, [r7, #4]
  2357. 8000fb0: 619a str r2, [r3, #24]
  2358. }
  2359. 8000fb2: bf00 nop
  2360. 8000fb4: 370c adds r7, #12
  2361. 8000fb6: 46bd mov sp, r7
  2362. 8000fb8: bc80 pop {r7}
  2363. 8000fba: 4770 bx lr
  2364. 08000fbc <HAL_RCC_OscConfig>:
  2365. * supported by this macro. User should request a transition to HSE Off
  2366. * first and then HSE On or HSE Bypass.
  2367. * @retval HAL status
  2368. */
  2369. HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
  2370. {
  2371. 8000fbc: b580 push {r7, lr}
  2372. 8000fbe: b088 sub sp, #32
  2373. 8000fc0: af00 add r7, sp, #0
  2374. 8000fc2: 6078 str r0, [r7, #4]
  2375. uint32_t tickstart;
  2376. HAL_StatusTypeDef status;
  2377. uint32_t sysclk_source, pll_config;
  2378. /* Check the parameters */
  2379. if(RCC_OscInitStruct == NULL)
  2380. 8000fc4: 687b ldr r3, [r7, #4]
  2381. 8000fc6: 2b00 cmp r3, #0
  2382. 8000fc8: d101 bne.n 8000fce <HAL_RCC_OscConfig+0x12>
  2383. {
  2384. return HAL_ERROR;
  2385. 8000fca: 2301 movs r3, #1
  2386. 8000fcc: e31d b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2387. }
  2388. assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
  2389. sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE();
  2390. 8000fce: 4b94 ldr r3, [pc, #592] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2391. 8000fd0: 689b ldr r3, [r3, #8]
  2392. 8000fd2: f003 030c and.w r3, r3, #12
  2393. 8000fd6: 61bb str r3, [r7, #24]
  2394. pll_config = __HAL_RCC_GET_PLL_OSCSOURCE();
  2395. 8000fd8: 4b91 ldr r3, [pc, #580] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2396. 8000fda: 689b ldr r3, [r3, #8]
  2397. 8000fdc: f403 3380 and.w r3, r3, #65536 ; 0x10000
  2398. 8000fe0: 617b str r3, [r7, #20]
  2399. /*------------------------------- HSE Configuration ------------------------*/
  2400. if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
  2401. 8000fe2: 687b ldr r3, [r7, #4]
  2402. 8000fe4: 681b ldr r3, [r3, #0]
  2403. 8000fe6: f003 0301 and.w r3, r3, #1
  2404. 8000fea: 2b00 cmp r3, #0
  2405. 8000fec: d07b beq.n 80010e6 <HAL_RCC_OscConfig+0x12a>
  2406. {
  2407. /* Check the parameters */
  2408. assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
  2409. /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */
  2410. if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE)
  2411. 8000fee: 69bb ldr r3, [r7, #24]
  2412. 8000ff0: 2b08 cmp r3, #8
  2413. 8000ff2: d006 beq.n 8001002 <HAL_RCC_OscConfig+0x46>
  2414. || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE)))
  2415. 8000ff4: 69bb ldr r3, [r7, #24]
  2416. 8000ff6: 2b0c cmp r3, #12
  2417. 8000ff8: d10f bne.n 800101a <HAL_RCC_OscConfig+0x5e>
  2418. 8000ffa: 697b ldr r3, [r7, #20]
  2419. 8000ffc: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
  2420. 8001000: d10b bne.n 800101a <HAL_RCC_OscConfig+0x5e>
  2421. {
  2422. if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
  2423. 8001002: 4b87 ldr r3, [pc, #540] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2424. 8001004: 681b ldr r3, [r3, #0]
  2425. 8001006: f403 3300 and.w r3, r3, #131072 ; 0x20000
  2426. 800100a: 2b00 cmp r3, #0
  2427. 800100c: d06a beq.n 80010e4 <HAL_RCC_OscConfig+0x128>
  2428. 800100e: 687b ldr r3, [r7, #4]
  2429. 8001010: 685b ldr r3, [r3, #4]
  2430. 8001012: 2b00 cmp r3, #0
  2431. 8001014: d166 bne.n 80010e4 <HAL_RCC_OscConfig+0x128>
  2432. {
  2433. return HAL_ERROR;
  2434. 8001016: 2301 movs r3, #1
  2435. 8001018: e2f7 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2436. }
  2437. }
  2438. else
  2439. {
  2440. /* Set the new HSE configuration ---------------------------------------*/
  2441. __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
  2442. 800101a: 687b ldr r3, [r7, #4]
  2443. 800101c: 685b ldr r3, [r3, #4]
  2444. 800101e: 2b01 cmp r3, #1
  2445. 8001020: d106 bne.n 8001030 <HAL_RCC_OscConfig+0x74>
  2446. 8001022: 4b7f ldr r3, [pc, #508] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2447. 8001024: 681b ldr r3, [r3, #0]
  2448. 8001026: 4a7e ldr r2, [pc, #504] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2449. 8001028: f443 3380 orr.w r3, r3, #65536 ; 0x10000
  2450. 800102c: 6013 str r3, [r2, #0]
  2451. 800102e: e02d b.n 800108c <HAL_RCC_OscConfig+0xd0>
  2452. 8001030: 687b ldr r3, [r7, #4]
  2453. 8001032: 685b ldr r3, [r3, #4]
  2454. 8001034: 2b00 cmp r3, #0
  2455. 8001036: d10c bne.n 8001052 <HAL_RCC_OscConfig+0x96>
  2456. 8001038: 4b79 ldr r3, [pc, #484] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2457. 800103a: 681b ldr r3, [r3, #0]
  2458. 800103c: 4a78 ldr r2, [pc, #480] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2459. 800103e: f423 3380 bic.w r3, r3, #65536 ; 0x10000
  2460. 8001042: 6013 str r3, [r2, #0]
  2461. 8001044: 4b76 ldr r3, [pc, #472] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2462. 8001046: 681b ldr r3, [r3, #0]
  2463. 8001048: 4a75 ldr r2, [pc, #468] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2464. 800104a: f423 2380 bic.w r3, r3, #262144 ; 0x40000
  2465. 800104e: 6013 str r3, [r2, #0]
  2466. 8001050: e01c b.n 800108c <HAL_RCC_OscConfig+0xd0>
  2467. 8001052: 687b ldr r3, [r7, #4]
  2468. 8001054: 685b ldr r3, [r3, #4]
  2469. 8001056: 2b05 cmp r3, #5
  2470. 8001058: d10c bne.n 8001074 <HAL_RCC_OscConfig+0xb8>
  2471. 800105a: 4b71 ldr r3, [pc, #452] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2472. 800105c: 681b ldr r3, [r3, #0]
  2473. 800105e: 4a70 ldr r2, [pc, #448] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2474. 8001060: f443 2380 orr.w r3, r3, #262144 ; 0x40000
  2475. 8001064: 6013 str r3, [r2, #0]
  2476. 8001066: 4b6e ldr r3, [pc, #440] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2477. 8001068: 681b ldr r3, [r3, #0]
  2478. 800106a: 4a6d ldr r2, [pc, #436] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2479. 800106c: f443 3380 orr.w r3, r3, #65536 ; 0x10000
  2480. 8001070: 6013 str r3, [r2, #0]
  2481. 8001072: e00b b.n 800108c <HAL_RCC_OscConfig+0xd0>
  2482. 8001074: 4b6a ldr r3, [pc, #424] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2483. 8001076: 681b ldr r3, [r3, #0]
  2484. 8001078: 4a69 ldr r2, [pc, #420] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2485. 800107a: f423 3380 bic.w r3, r3, #65536 ; 0x10000
  2486. 800107e: 6013 str r3, [r2, #0]
  2487. 8001080: 4b67 ldr r3, [pc, #412] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2488. 8001082: 681b ldr r3, [r3, #0]
  2489. 8001084: 4a66 ldr r2, [pc, #408] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2490. 8001086: f423 2380 bic.w r3, r3, #262144 ; 0x40000
  2491. 800108a: 6013 str r3, [r2, #0]
  2492. /* Check the HSE State */
  2493. if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
  2494. 800108c: 687b ldr r3, [r7, #4]
  2495. 800108e: 685b ldr r3, [r3, #4]
  2496. 8001090: 2b00 cmp r3, #0
  2497. 8001092: d013 beq.n 80010bc <HAL_RCC_OscConfig+0x100>
  2498. {
  2499. /* Get Start Tick */
  2500. tickstart = HAL_GetTick();
  2501. 8001094: f7ff fcdc bl 8000a50 <HAL_GetTick>
  2502. 8001098: 6138 str r0, [r7, #16]
  2503. /* Wait till HSE is ready */
  2504. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U)
  2505. 800109a: e008 b.n 80010ae <HAL_RCC_OscConfig+0xf2>
  2506. {
  2507. if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
  2508. 800109c: f7ff fcd8 bl 8000a50 <HAL_GetTick>
  2509. 80010a0: 4602 mov r2, r0
  2510. 80010a2: 693b ldr r3, [r7, #16]
  2511. 80010a4: 1ad3 subs r3, r2, r3
  2512. 80010a6: 2b64 cmp r3, #100 ; 0x64
  2513. 80010a8: d901 bls.n 80010ae <HAL_RCC_OscConfig+0xf2>
  2514. {
  2515. return HAL_TIMEOUT;
  2516. 80010aa: 2303 movs r3, #3
  2517. 80010ac: e2ad b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2518. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U)
  2519. 80010ae: 4b5c ldr r3, [pc, #368] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2520. 80010b0: 681b ldr r3, [r3, #0]
  2521. 80010b2: f403 3300 and.w r3, r3, #131072 ; 0x20000
  2522. 80010b6: 2b00 cmp r3, #0
  2523. 80010b8: d0f0 beq.n 800109c <HAL_RCC_OscConfig+0xe0>
  2524. 80010ba: e014 b.n 80010e6 <HAL_RCC_OscConfig+0x12a>
  2525. }
  2526. }
  2527. else
  2528. {
  2529. /* Get Start Tick */
  2530. tickstart = HAL_GetTick();
  2531. 80010bc: f7ff fcc8 bl 8000a50 <HAL_GetTick>
  2532. 80010c0: 6138 str r0, [r7, #16]
  2533. /* Wait till HSE is disabled */
  2534. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U)
  2535. 80010c2: e008 b.n 80010d6 <HAL_RCC_OscConfig+0x11a>
  2536. {
  2537. if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
  2538. 80010c4: f7ff fcc4 bl 8000a50 <HAL_GetTick>
  2539. 80010c8: 4602 mov r2, r0
  2540. 80010ca: 693b ldr r3, [r7, #16]
  2541. 80010cc: 1ad3 subs r3, r2, r3
  2542. 80010ce: 2b64 cmp r3, #100 ; 0x64
  2543. 80010d0: d901 bls.n 80010d6 <HAL_RCC_OscConfig+0x11a>
  2544. {
  2545. return HAL_TIMEOUT;
  2546. 80010d2: 2303 movs r3, #3
  2547. 80010d4: e299 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2548. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U)
  2549. 80010d6: 4b52 ldr r3, [pc, #328] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2550. 80010d8: 681b ldr r3, [r3, #0]
  2551. 80010da: f403 3300 and.w r3, r3, #131072 ; 0x20000
  2552. 80010de: 2b00 cmp r3, #0
  2553. 80010e0: d1f0 bne.n 80010c4 <HAL_RCC_OscConfig+0x108>
  2554. 80010e2: e000 b.n 80010e6 <HAL_RCC_OscConfig+0x12a>
  2555. if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
  2556. 80010e4: bf00 nop
  2557. }
  2558. }
  2559. }
  2560. }
  2561. /*----------------------------- HSI Configuration --------------------------*/
  2562. if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
  2563. 80010e6: 687b ldr r3, [r7, #4]
  2564. 80010e8: 681b ldr r3, [r3, #0]
  2565. 80010ea: f003 0302 and.w r3, r3, #2
  2566. 80010ee: 2b00 cmp r3, #0
  2567. 80010f0: d05a beq.n 80011a8 <HAL_RCC_OscConfig+0x1ec>
  2568. /* Check the parameters */
  2569. assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
  2570. assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
  2571. /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
  2572. if((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI)
  2573. 80010f2: 69bb ldr r3, [r7, #24]
  2574. 80010f4: 2b04 cmp r3, #4
  2575. 80010f6: d005 beq.n 8001104 <HAL_RCC_OscConfig+0x148>
  2576. || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI)))
  2577. 80010f8: 69bb ldr r3, [r7, #24]
  2578. 80010fa: 2b0c cmp r3, #12
  2579. 80010fc: d119 bne.n 8001132 <HAL_RCC_OscConfig+0x176>
  2580. 80010fe: 697b ldr r3, [r7, #20]
  2581. 8001100: 2b00 cmp r3, #0
  2582. 8001102: d116 bne.n 8001132 <HAL_RCC_OscConfig+0x176>
  2583. {
  2584. /* When HSI is used as system clock it will not disabled */
  2585. if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
  2586. 8001104: 4b46 ldr r3, [pc, #280] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2587. 8001106: 681b ldr r3, [r3, #0]
  2588. 8001108: f003 0302 and.w r3, r3, #2
  2589. 800110c: 2b00 cmp r3, #0
  2590. 800110e: d005 beq.n 800111c <HAL_RCC_OscConfig+0x160>
  2591. 8001110: 687b ldr r3, [r7, #4]
  2592. 8001112: 68db ldr r3, [r3, #12]
  2593. 8001114: 2b01 cmp r3, #1
  2594. 8001116: d001 beq.n 800111c <HAL_RCC_OscConfig+0x160>
  2595. {
  2596. return HAL_ERROR;
  2597. 8001118: 2301 movs r3, #1
  2598. 800111a: e276 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2599. }
  2600. /* Otherwise, just the calibration is allowed */
  2601. else
  2602. {
  2603. /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
  2604. __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
  2605. 800111c: 4b40 ldr r3, [pc, #256] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2606. 800111e: 685b ldr r3, [r3, #4]
  2607. 8001120: f423 52f8 bic.w r2, r3, #7936 ; 0x1f00
  2608. 8001124: 687b ldr r3, [r7, #4]
  2609. 8001126: 691b ldr r3, [r3, #16]
  2610. 8001128: 021b lsls r3, r3, #8
  2611. 800112a: 493d ldr r1, [pc, #244] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2612. 800112c: 4313 orrs r3, r2
  2613. 800112e: 604b str r3, [r1, #4]
  2614. if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
  2615. 8001130: e03a b.n 80011a8 <HAL_RCC_OscConfig+0x1ec>
  2616. }
  2617. }
  2618. else
  2619. {
  2620. /* Check the HSI State */
  2621. if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF)
  2622. 8001132: 687b ldr r3, [r7, #4]
  2623. 8001134: 68db ldr r3, [r3, #12]
  2624. 8001136: 2b00 cmp r3, #0
  2625. 8001138: d020 beq.n 800117c <HAL_RCC_OscConfig+0x1c0>
  2626. {
  2627. /* Enable the Internal High Speed oscillator (HSI). */
  2628. __HAL_RCC_HSI_ENABLE();
  2629. 800113a: 4b3a ldr r3, [pc, #232] ; (8001224 <HAL_RCC_OscConfig+0x268>)
  2630. 800113c: 2201 movs r2, #1
  2631. 800113e: 601a str r2, [r3, #0]
  2632. /* Get Start Tick */
  2633. tickstart = HAL_GetTick();
  2634. 8001140: f7ff fc86 bl 8000a50 <HAL_GetTick>
  2635. 8001144: 6138 str r0, [r7, #16]
  2636. /* Wait till HSI is ready */
  2637. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U)
  2638. 8001146: e008 b.n 800115a <HAL_RCC_OscConfig+0x19e>
  2639. {
  2640. if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
  2641. 8001148: f7ff fc82 bl 8000a50 <HAL_GetTick>
  2642. 800114c: 4602 mov r2, r0
  2643. 800114e: 693b ldr r3, [r7, #16]
  2644. 8001150: 1ad3 subs r3, r2, r3
  2645. 8001152: 2b02 cmp r3, #2
  2646. 8001154: d901 bls.n 800115a <HAL_RCC_OscConfig+0x19e>
  2647. {
  2648. return HAL_TIMEOUT;
  2649. 8001156: 2303 movs r3, #3
  2650. 8001158: e257 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2651. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U)
  2652. 800115a: 4b31 ldr r3, [pc, #196] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2653. 800115c: 681b ldr r3, [r3, #0]
  2654. 800115e: f003 0302 and.w r3, r3, #2
  2655. 8001162: 2b00 cmp r3, #0
  2656. 8001164: d0f0 beq.n 8001148 <HAL_RCC_OscConfig+0x18c>
  2657. }
  2658. }
  2659. /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
  2660. __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
  2661. 8001166: 4b2e ldr r3, [pc, #184] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2662. 8001168: 685b ldr r3, [r3, #4]
  2663. 800116a: f423 52f8 bic.w r2, r3, #7936 ; 0x1f00
  2664. 800116e: 687b ldr r3, [r7, #4]
  2665. 8001170: 691b ldr r3, [r3, #16]
  2666. 8001172: 021b lsls r3, r3, #8
  2667. 8001174: 492a ldr r1, [pc, #168] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2668. 8001176: 4313 orrs r3, r2
  2669. 8001178: 604b str r3, [r1, #4]
  2670. 800117a: e015 b.n 80011a8 <HAL_RCC_OscConfig+0x1ec>
  2671. }
  2672. else
  2673. {
  2674. /* Disable the Internal High Speed oscillator (HSI). */
  2675. __HAL_RCC_HSI_DISABLE();
  2676. 800117c: 4b29 ldr r3, [pc, #164] ; (8001224 <HAL_RCC_OscConfig+0x268>)
  2677. 800117e: 2200 movs r2, #0
  2678. 8001180: 601a str r2, [r3, #0]
  2679. /* Get Start Tick */
  2680. tickstart = HAL_GetTick();
  2681. 8001182: f7ff fc65 bl 8000a50 <HAL_GetTick>
  2682. 8001186: 6138 str r0, [r7, #16]
  2683. /* Wait till HSI is disabled */
  2684. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U)
  2685. 8001188: e008 b.n 800119c <HAL_RCC_OscConfig+0x1e0>
  2686. {
  2687. if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
  2688. 800118a: f7ff fc61 bl 8000a50 <HAL_GetTick>
  2689. 800118e: 4602 mov r2, r0
  2690. 8001190: 693b ldr r3, [r7, #16]
  2691. 8001192: 1ad3 subs r3, r2, r3
  2692. 8001194: 2b02 cmp r3, #2
  2693. 8001196: d901 bls.n 800119c <HAL_RCC_OscConfig+0x1e0>
  2694. {
  2695. return HAL_TIMEOUT;
  2696. 8001198: 2303 movs r3, #3
  2697. 800119a: e236 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2698. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U)
  2699. 800119c: 4b20 ldr r3, [pc, #128] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2700. 800119e: 681b ldr r3, [r3, #0]
  2701. 80011a0: f003 0302 and.w r3, r3, #2
  2702. 80011a4: 2b00 cmp r3, #0
  2703. 80011a6: d1f0 bne.n 800118a <HAL_RCC_OscConfig+0x1ce>
  2704. }
  2705. }
  2706. }
  2707. }
  2708. /*----------------------------- MSI Configuration --------------------------*/
  2709. if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI)
  2710. 80011a8: 687b ldr r3, [r7, #4]
  2711. 80011aa: 681b ldr r3, [r3, #0]
  2712. 80011ac: f003 0310 and.w r3, r3, #16
  2713. 80011b0: 2b00 cmp r3, #0
  2714. 80011b2: f000 80b8 beq.w 8001326 <HAL_RCC_OscConfig+0x36a>
  2715. {
  2716. /* When the MSI is used as system clock it will not be disabled */
  2717. if(sysclk_source == RCC_CFGR_SWS_MSI)
  2718. 80011b6: 69bb ldr r3, [r7, #24]
  2719. 80011b8: 2b00 cmp r3, #0
  2720. 80011ba: d170 bne.n 800129e <HAL_RCC_OscConfig+0x2e2>
  2721. {
  2722. if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF))
  2723. 80011bc: 4b18 ldr r3, [pc, #96] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2724. 80011be: 681b ldr r3, [r3, #0]
  2725. 80011c0: f403 7300 and.w r3, r3, #512 ; 0x200
  2726. 80011c4: 2b00 cmp r3, #0
  2727. 80011c6: d005 beq.n 80011d4 <HAL_RCC_OscConfig+0x218>
  2728. 80011c8: 687b ldr r3, [r7, #4]
  2729. 80011ca: 699b ldr r3, [r3, #24]
  2730. 80011cc: 2b00 cmp r3, #0
  2731. 80011ce: d101 bne.n 80011d4 <HAL_RCC_OscConfig+0x218>
  2732. {
  2733. return HAL_ERROR;
  2734. 80011d0: 2301 movs r3, #1
  2735. 80011d2: e21a b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2736. assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange));
  2737. /* To correctly read data from FLASH memory, the number of wait states (LATENCY)
  2738. must be correctly programmed according to the frequency of the CPU clock
  2739. (HCLK) and the supply voltage of the device. */
  2740. if(RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE())
  2741. 80011d4: 687b ldr r3, [r7, #4]
  2742. 80011d6: 6a1a ldr r2, [r3, #32]
  2743. 80011d8: 4b11 ldr r3, [pc, #68] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2744. 80011da: 685b ldr r3, [r3, #4]
  2745. 80011dc: f403 4360 and.w r3, r3, #57344 ; 0xe000
  2746. 80011e0: 429a cmp r2, r3
  2747. 80011e2: d921 bls.n 8001228 <HAL_RCC_OscConfig+0x26c>
  2748. {
  2749. /* First increase number of wait states update if necessary */
  2750. if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK)
  2751. 80011e4: 687b ldr r3, [r7, #4]
  2752. 80011e6: 6a1b ldr r3, [r3, #32]
  2753. 80011e8: 4618 mov r0, r3
  2754. 80011ea: f000 fc47 bl 8001a7c <RCC_SetFlashLatencyFromMSIRange>
  2755. 80011ee: 4603 mov r3, r0
  2756. 80011f0: 2b00 cmp r3, #0
  2757. 80011f2: d001 beq.n 80011f8 <HAL_RCC_OscConfig+0x23c>
  2758. {
  2759. return HAL_ERROR;
  2760. 80011f4: 2301 movs r3, #1
  2761. 80011f6: e208 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2762. }
  2763. /* Selects the Multiple Speed oscillator (MSI) clock range .*/
  2764. __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange);
  2765. 80011f8: 4b09 ldr r3, [pc, #36] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2766. 80011fa: 685b ldr r3, [r3, #4]
  2767. 80011fc: f423 4260 bic.w r2, r3, #57344 ; 0xe000
  2768. 8001200: 687b ldr r3, [r7, #4]
  2769. 8001202: 6a1b ldr r3, [r3, #32]
  2770. 8001204: 4906 ldr r1, [pc, #24] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2771. 8001206: 4313 orrs r3, r2
  2772. 8001208: 604b str r3, [r1, #4]
  2773. /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/
  2774. __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue);
  2775. 800120a: 4b05 ldr r3, [pc, #20] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2776. 800120c: 685b ldr r3, [r3, #4]
  2777. 800120e: f023 427f bic.w r2, r3, #4278190080 ; 0xff000000
  2778. 8001212: 687b ldr r3, [r7, #4]
  2779. 8001214: 69db ldr r3, [r3, #28]
  2780. 8001216: 061b lsls r3, r3, #24
  2781. 8001218: 4901 ldr r1, [pc, #4] ; (8001220 <HAL_RCC_OscConfig+0x264>)
  2782. 800121a: 4313 orrs r3, r2
  2783. 800121c: 604b str r3, [r1, #4]
  2784. 800121e: e020 b.n 8001262 <HAL_RCC_OscConfig+0x2a6>
  2785. 8001220: 40023800 .word 0x40023800
  2786. 8001224: 42470000 .word 0x42470000
  2787. }
  2788. else
  2789. {
  2790. /* Else, keep current flash latency while decreasing applies */
  2791. /* Selects the Multiple Speed oscillator (MSI) clock range .*/
  2792. __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange);
  2793. 8001228: 4ba4 ldr r3, [pc, #656] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  2794. 800122a: 685b ldr r3, [r3, #4]
  2795. 800122c: f423 4260 bic.w r2, r3, #57344 ; 0xe000
  2796. 8001230: 687b ldr r3, [r7, #4]
  2797. 8001232: 6a1b ldr r3, [r3, #32]
  2798. 8001234: 49a1 ldr r1, [pc, #644] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  2799. 8001236: 4313 orrs r3, r2
  2800. 8001238: 604b str r3, [r1, #4]
  2801. /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/
  2802. __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue);
  2803. 800123a: 4ba0 ldr r3, [pc, #640] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  2804. 800123c: 685b ldr r3, [r3, #4]
  2805. 800123e: f023 427f bic.w r2, r3, #4278190080 ; 0xff000000
  2806. 8001242: 687b ldr r3, [r7, #4]
  2807. 8001244: 69db ldr r3, [r3, #28]
  2808. 8001246: 061b lsls r3, r3, #24
  2809. 8001248: 499c ldr r1, [pc, #624] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  2810. 800124a: 4313 orrs r3, r2
  2811. 800124c: 604b str r3, [r1, #4]
  2812. /* Decrease number of wait states update if necessary */
  2813. if(RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK)
  2814. 800124e: 687b ldr r3, [r7, #4]
  2815. 8001250: 6a1b ldr r3, [r3, #32]
  2816. 8001252: 4618 mov r0, r3
  2817. 8001254: f000 fc12 bl 8001a7c <RCC_SetFlashLatencyFromMSIRange>
  2818. 8001258: 4603 mov r3, r0
  2819. 800125a: 2b00 cmp r3, #0
  2820. 800125c: d001 beq.n 8001262 <HAL_RCC_OscConfig+0x2a6>
  2821. {
  2822. return HAL_ERROR;
  2823. 800125e: 2301 movs r3, #1
  2824. 8001260: e1d3 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2825. }
  2826. }
  2827. /* Update the SystemCoreClock global variable */
  2828. SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U)))
  2829. 8001262: 687b ldr r3, [r7, #4]
  2830. 8001264: 6a1b ldr r3, [r3, #32]
  2831. 8001266: 0b5b lsrs r3, r3, #13
  2832. 8001268: 3301 adds r3, #1
  2833. 800126a: f44f 4200 mov.w r2, #32768 ; 0x8000
  2834. 800126e: fa02 f303 lsl.w r3, r2, r3
  2835. >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)];
  2836. 8001272: 4a92 ldr r2, [pc, #584] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  2837. 8001274: 6892 ldr r2, [r2, #8]
  2838. 8001276: 0912 lsrs r2, r2, #4
  2839. 8001278: f002 020f and.w r2, r2, #15
  2840. 800127c: 4990 ldr r1, [pc, #576] ; (80014c0 <HAL_RCC_OscConfig+0x504>)
  2841. 800127e: 5c8a ldrb r2, [r1, r2]
  2842. 8001280: 40d3 lsrs r3, r2
  2843. SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U)))
  2844. 8001282: 4a90 ldr r2, [pc, #576] ; (80014c4 <HAL_RCC_OscConfig+0x508>)
  2845. 8001284: 6013 str r3, [r2, #0]
  2846. /* Configure the source of time base considering new system clocks settings*/
  2847. status = HAL_InitTick(uwTickPrio);
  2848. 8001286: 4b90 ldr r3, [pc, #576] ; (80014c8 <HAL_RCC_OscConfig+0x50c>)
  2849. 8001288: 681b ldr r3, [r3, #0]
  2850. 800128a: 4618 mov r0, r3
  2851. 800128c: f7ff fb94 bl 80009b8 <HAL_InitTick>
  2852. 8001290: 4603 mov r3, r0
  2853. 8001292: 73fb strb r3, [r7, #15]
  2854. if(status != HAL_OK)
  2855. 8001294: 7bfb ldrb r3, [r7, #15]
  2856. 8001296: 2b00 cmp r3, #0
  2857. 8001298: d045 beq.n 8001326 <HAL_RCC_OscConfig+0x36a>
  2858. {
  2859. return status;
  2860. 800129a: 7bfb ldrb r3, [r7, #15]
  2861. 800129c: e1b5 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2862. {
  2863. /* Check MSI State */
  2864. assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState));
  2865. /* Check the MSI State */
  2866. if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF)
  2867. 800129e: 687b ldr r3, [r7, #4]
  2868. 80012a0: 699b ldr r3, [r3, #24]
  2869. 80012a2: 2b00 cmp r3, #0
  2870. 80012a4: d029 beq.n 80012fa <HAL_RCC_OscConfig+0x33e>
  2871. {
  2872. /* Enable the Multi Speed oscillator (MSI). */
  2873. __HAL_RCC_MSI_ENABLE();
  2874. 80012a6: 4b89 ldr r3, [pc, #548] ; (80014cc <HAL_RCC_OscConfig+0x510>)
  2875. 80012a8: 2201 movs r2, #1
  2876. 80012aa: 601a str r2, [r3, #0]
  2877. /* Get Start Tick */
  2878. tickstart = HAL_GetTick();
  2879. 80012ac: f7ff fbd0 bl 8000a50 <HAL_GetTick>
  2880. 80012b0: 6138 str r0, [r7, #16]
  2881. /* Wait till MSI is ready */
  2882. while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U)
  2883. 80012b2: e008 b.n 80012c6 <HAL_RCC_OscConfig+0x30a>
  2884. {
  2885. if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE)
  2886. 80012b4: f7ff fbcc bl 8000a50 <HAL_GetTick>
  2887. 80012b8: 4602 mov r2, r0
  2888. 80012ba: 693b ldr r3, [r7, #16]
  2889. 80012bc: 1ad3 subs r3, r2, r3
  2890. 80012be: 2b02 cmp r3, #2
  2891. 80012c0: d901 bls.n 80012c6 <HAL_RCC_OscConfig+0x30a>
  2892. {
  2893. return HAL_TIMEOUT;
  2894. 80012c2: 2303 movs r3, #3
  2895. 80012c4: e1a1 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2896. while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U)
  2897. 80012c6: 4b7d ldr r3, [pc, #500] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  2898. 80012c8: 681b ldr r3, [r3, #0]
  2899. 80012ca: f403 7300 and.w r3, r3, #512 ; 0x200
  2900. 80012ce: 2b00 cmp r3, #0
  2901. 80012d0: d0f0 beq.n 80012b4 <HAL_RCC_OscConfig+0x2f8>
  2902. /* Check MSICalibrationValue and MSIClockRange input parameters */
  2903. assert_param(IS_RCC_MSICALIBRATION_VALUE(RCC_OscInitStruct->MSICalibrationValue));
  2904. assert_param(IS_RCC_MSI_CLOCK_RANGE(RCC_OscInitStruct->MSIClockRange));
  2905. /* Selects the Multiple Speed oscillator (MSI) clock range .*/
  2906. __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange);
  2907. 80012d2: 4b7a ldr r3, [pc, #488] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  2908. 80012d4: 685b ldr r3, [r3, #4]
  2909. 80012d6: f423 4260 bic.w r2, r3, #57344 ; 0xe000
  2910. 80012da: 687b ldr r3, [r7, #4]
  2911. 80012dc: 6a1b ldr r3, [r3, #32]
  2912. 80012de: 4977 ldr r1, [pc, #476] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  2913. 80012e0: 4313 orrs r3, r2
  2914. 80012e2: 604b str r3, [r1, #4]
  2915. /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/
  2916. __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue);
  2917. 80012e4: 4b75 ldr r3, [pc, #468] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  2918. 80012e6: 685b ldr r3, [r3, #4]
  2919. 80012e8: f023 427f bic.w r2, r3, #4278190080 ; 0xff000000
  2920. 80012ec: 687b ldr r3, [r7, #4]
  2921. 80012ee: 69db ldr r3, [r3, #28]
  2922. 80012f0: 061b lsls r3, r3, #24
  2923. 80012f2: 4972 ldr r1, [pc, #456] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  2924. 80012f4: 4313 orrs r3, r2
  2925. 80012f6: 604b str r3, [r1, #4]
  2926. 80012f8: e015 b.n 8001326 <HAL_RCC_OscConfig+0x36a>
  2927. }
  2928. else
  2929. {
  2930. /* Disable the Multi Speed oscillator (MSI). */
  2931. __HAL_RCC_MSI_DISABLE();
  2932. 80012fa: 4b74 ldr r3, [pc, #464] ; (80014cc <HAL_RCC_OscConfig+0x510>)
  2933. 80012fc: 2200 movs r2, #0
  2934. 80012fe: 601a str r2, [r3, #0]
  2935. /* Get Start Tick */
  2936. tickstart = HAL_GetTick();
  2937. 8001300: f7ff fba6 bl 8000a50 <HAL_GetTick>
  2938. 8001304: 6138 str r0, [r7, #16]
  2939. /* Wait till MSI is ready */
  2940. while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U)
  2941. 8001306: e008 b.n 800131a <HAL_RCC_OscConfig+0x35e>
  2942. {
  2943. if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE)
  2944. 8001308: f7ff fba2 bl 8000a50 <HAL_GetTick>
  2945. 800130c: 4602 mov r2, r0
  2946. 800130e: 693b ldr r3, [r7, #16]
  2947. 8001310: 1ad3 subs r3, r2, r3
  2948. 8001312: 2b02 cmp r3, #2
  2949. 8001314: d901 bls.n 800131a <HAL_RCC_OscConfig+0x35e>
  2950. {
  2951. return HAL_TIMEOUT;
  2952. 8001316: 2303 movs r3, #3
  2953. 8001318: e177 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  2954. while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U)
  2955. 800131a: 4b68 ldr r3, [pc, #416] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  2956. 800131c: 681b ldr r3, [r3, #0]
  2957. 800131e: f403 7300 and.w r3, r3, #512 ; 0x200
  2958. 8001322: 2b00 cmp r3, #0
  2959. 8001324: d1f0 bne.n 8001308 <HAL_RCC_OscConfig+0x34c>
  2960. }
  2961. }
  2962. }
  2963. }
  2964. /*------------------------------ LSI Configuration -------------------------*/
  2965. if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
  2966. 8001326: 687b ldr r3, [r7, #4]
  2967. 8001328: 681b ldr r3, [r3, #0]
  2968. 800132a: f003 0308 and.w r3, r3, #8
  2969. 800132e: 2b00 cmp r3, #0
  2970. 8001330: d030 beq.n 8001394 <HAL_RCC_OscConfig+0x3d8>
  2971. {
  2972. /* Check the parameters */
  2973. assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
  2974. /* Check the LSI State */
  2975. if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF)
  2976. 8001332: 687b ldr r3, [r7, #4]
  2977. 8001334: 695b ldr r3, [r3, #20]
  2978. 8001336: 2b00 cmp r3, #0
  2979. 8001338: d016 beq.n 8001368 <HAL_RCC_OscConfig+0x3ac>
  2980. {
  2981. /* Enable the Internal Low Speed oscillator (LSI). */
  2982. __HAL_RCC_LSI_ENABLE();
  2983. 800133a: 4b65 ldr r3, [pc, #404] ; (80014d0 <HAL_RCC_OscConfig+0x514>)
  2984. 800133c: 2201 movs r2, #1
  2985. 800133e: 601a str r2, [r3, #0]
  2986. /* Get Start Tick */
  2987. tickstart = HAL_GetTick();
  2988. 8001340: f7ff fb86 bl 8000a50 <HAL_GetTick>
  2989. 8001344: 6138 str r0, [r7, #16]
  2990. /* Wait till LSI is ready */
  2991. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U)
  2992. 8001346: e008 b.n 800135a <HAL_RCC_OscConfig+0x39e>
  2993. {
  2994. if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
  2995. 8001348: f7ff fb82 bl 8000a50 <HAL_GetTick>
  2996. 800134c: 4602 mov r2, r0
  2997. 800134e: 693b ldr r3, [r7, #16]
  2998. 8001350: 1ad3 subs r3, r2, r3
  2999. 8001352: 2b02 cmp r3, #2
  3000. 8001354: d901 bls.n 800135a <HAL_RCC_OscConfig+0x39e>
  3001. {
  3002. return HAL_TIMEOUT;
  3003. 8001356: 2303 movs r3, #3
  3004. 8001358: e157 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  3005. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U)
  3006. 800135a: 4b58 ldr r3, [pc, #352] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3007. 800135c: 6b5b ldr r3, [r3, #52] ; 0x34
  3008. 800135e: f003 0302 and.w r3, r3, #2
  3009. 8001362: 2b00 cmp r3, #0
  3010. 8001364: d0f0 beq.n 8001348 <HAL_RCC_OscConfig+0x38c>
  3011. 8001366: e015 b.n 8001394 <HAL_RCC_OscConfig+0x3d8>
  3012. }
  3013. }
  3014. else
  3015. {
  3016. /* Disable the Internal Low Speed oscillator (LSI). */
  3017. __HAL_RCC_LSI_DISABLE();
  3018. 8001368: 4b59 ldr r3, [pc, #356] ; (80014d0 <HAL_RCC_OscConfig+0x514>)
  3019. 800136a: 2200 movs r2, #0
  3020. 800136c: 601a str r2, [r3, #0]
  3021. /* Get Start Tick */
  3022. tickstart = HAL_GetTick();
  3023. 800136e: f7ff fb6f bl 8000a50 <HAL_GetTick>
  3024. 8001372: 6138 str r0, [r7, #16]
  3025. /* Wait till LSI is disabled */
  3026. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U)
  3027. 8001374: e008 b.n 8001388 <HAL_RCC_OscConfig+0x3cc>
  3028. {
  3029. if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
  3030. 8001376: f7ff fb6b bl 8000a50 <HAL_GetTick>
  3031. 800137a: 4602 mov r2, r0
  3032. 800137c: 693b ldr r3, [r7, #16]
  3033. 800137e: 1ad3 subs r3, r2, r3
  3034. 8001380: 2b02 cmp r3, #2
  3035. 8001382: d901 bls.n 8001388 <HAL_RCC_OscConfig+0x3cc>
  3036. {
  3037. return HAL_TIMEOUT;
  3038. 8001384: 2303 movs r3, #3
  3039. 8001386: e140 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  3040. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U)
  3041. 8001388: 4b4c ldr r3, [pc, #304] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3042. 800138a: 6b5b ldr r3, [r3, #52] ; 0x34
  3043. 800138c: f003 0302 and.w r3, r3, #2
  3044. 8001390: 2b00 cmp r3, #0
  3045. 8001392: d1f0 bne.n 8001376 <HAL_RCC_OscConfig+0x3ba>
  3046. }
  3047. }
  3048. }
  3049. }
  3050. /*------------------------------ LSE Configuration -------------------------*/
  3051. if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
  3052. 8001394: 687b ldr r3, [r7, #4]
  3053. 8001396: 681b ldr r3, [r3, #0]
  3054. 8001398: f003 0304 and.w r3, r3, #4
  3055. 800139c: 2b00 cmp r3, #0
  3056. 800139e: f000 80b5 beq.w 800150c <HAL_RCC_OscConfig+0x550>
  3057. {
  3058. FlagStatus pwrclkchanged = RESET;
  3059. 80013a2: 2300 movs r3, #0
  3060. 80013a4: 77fb strb r3, [r7, #31]
  3061. /* Check the parameters */
  3062. assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
  3063. /* Update LSE configuration in Backup Domain control register */
  3064. /* Requires to enable write access to Backup Domain of necessary */
  3065. if(__HAL_RCC_PWR_IS_CLK_DISABLED())
  3066. 80013a6: 4b45 ldr r3, [pc, #276] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3067. 80013a8: 6a5b ldr r3, [r3, #36] ; 0x24
  3068. 80013aa: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  3069. 80013ae: 2b00 cmp r3, #0
  3070. 80013b0: d10d bne.n 80013ce <HAL_RCC_OscConfig+0x412>
  3071. {
  3072. __HAL_RCC_PWR_CLK_ENABLE();
  3073. 80013b2: 4b42 ldr r3, [pc, #264] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3074. 80013b4: 6a5b ldr r3, [r3, #36] ; 0x24
  3075. 80013b6: 4a41 ldr r2, [pc, #260] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3076. 80013b8: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
  3077. 80013bc: 6253 str r3, [r2, #36] ; 0x24
  3078. 80013be: 4b3f ldr r3, [pc, #252] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3079. 80013c0: 6a5b ldr r3, [r3, #36] ; 0x24
  3080. 80013c2: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  3081. 80013c6: 60bb str r3, [r7, #8]
  3082. 80013c8: 68bb ldr r3, [r7, #8]
  3083. pwrclkchanged = SET;
  3084. 80013ca: 2301 movs r3, #1
  3085. 80013cc: 77fb strb r3, [r7, #31]
  3086. }
  3087. if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  3088. 80013ce: 4b41 ldr r3, [pc, #260] ; (80014d4 <HAL_RCC_OscConfig+0x518>)
  3089. 80013d0: 681b ldr r3, [r3, #0]
  3090. 80013d2: f403 7380 and.w r3, r3, #256 ; 0x100
  3091. 80013d6: 2b00 cmp r3, #0
  3092. 80013d8: d118 bne.n 800140c <HAL_RCC_OscConfig+0x450>
  3093. {
  3094. /* Enable write access to Backup domain */
  3095. SET_BIT(PWR->CR, PWR_CR_DBP);
  3096. 80013da: 4b3e ldr r3, [pc, #248] ; (80014d4 <HAL_RCC_OscConfig+0x518>)
  3097. 80013dc: 681b ldr r3, [r3, #0]
  3098. 80013de: 4a3d ldr r2, [pc, #244] ; (80014d4 <HAL_RCC_OscConfig+0x518>)
  3099. 80013e0: f443 7380 orr.w r3, r3, #256 ; 0x100
  3100. 80013e4: 6013 str r3, [r2, #0]
  3101. /* Wait for Backup domain Write protection disable */
  3102. tickstart = HAL_GetTick();
  3103. 80013e6: f7ff fb33 bl 8000a50 <HAL_GetTick>
  3104. 80013ea: 6138 str r0, [r7, #16]
  3105. while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  3106. 80013ec: e008 b.n 8001400 <HAL_RCC_OscConfig+0x444>
  3107. {
  3108. if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
  3109. 80013ee: f7ff fb2f bl 8000a50 <HAL_GetTick>
  3110. 80013f2: 4602 mov r2, r0
  3111. 80013f4: 693b ldr r3, [r7, #16]
  3112. 80013f6: 1ad3 subs r3, r2, r3
  3113. 80013f8: 2b64 cmp r3, #100 ; 0x64
  3114. 80013fa: d901 bls.n 8001400 <HAL_RCC_OscConfig+0x444>
  3115. {
  3116. return HAL_TIMEOUT;
  3117. 80013fc: 2303 movs r3, #3
  3118. 80013fe: e104 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  3119. while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  3120. 8001400: 4b34 ldr r3, [pc, #208] ; (80014d4 <HAL_RCC_OscConfig+0x518>)
  3121. 8001402: 681b ldr r3, [r3, #0]
  3122. 8001404: f403 7380 and.w r3, r3, #256 ; 0x100
  3123. 8001408: 2b00 cmp r3, #0
  3124. 800140a: d0f0 beq.n 80013ee <HAL_RCC_OscConfig+0x432>
  3125. }
  3126. }
  3127. }
  3128. /* Set the new LSE configuration -----------------------------------------*/
  3129. __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
  3130. 800140c: 687b ldr r3, [r7, #4]
  3131. 800140e: 689b ldr r3, [r3, #8]
  3132. 8001410: 2b01 cmp r3, #1
  3133. 8001412: d106 bne.n 8001422 <HAL_RCC_OscConfig+0x466>
  3134. 8001414: 4b29 ldr r3, [pc, #164] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3135. 8001416: 6b5b ldr r3, [r3, #52] ; 0x34
  3136. 8001418: 4a28 ldr r2, [pc, #160] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3137. 800141a: f443 7380 orr.w r3, r3, #256 ; 0x100
  3138. 800141e: 6353 str r3, [r2, #52] ; 0x34
  3139. 8001420: e02d b.n 800147e <HAL_RCC_OscConfig+0x4c2>
  3140. 8001422: 687b ldr r3, [r7, #4]
  3141. 8001424: 689b ldr r3, [r3, #8]
  3142. 8001426: 2b00 cmp r3, #0
  3143. 8001428: d10c bne.n 8001444 <HAL_RCC_OscConfig+0x488>
  3144. 800142a: 4b24 ldr r3, [pc, #144] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3145. 800142c: 6b5b ldr r3, [r3, #52] ; 0x34
  3146. 800142e: 4a23 ldr r2, [pc, #140] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3147. 8001430: f423 7380 bic.w r3, r3, #256 ; 0x100
  3148. 8001434: 6353 str r3, [r2, #52] ; 0x34
  3149. 8001436: 4b21 ldr r3, [pc, #132] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3150. 8001438: 6b5b ldr r3, [r3, #52] ; 0x34
  3151. 800143a: 4a20 ldr r2, [pc, #128] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3152. 800143c: f423 6380 bic.w r3, r3, #1024 ; 0x400
  3153. 8001440: 6353 str r3, [r2, #52] ; 0x34
  3154. 8001442: e01c b.n 800147e <HAL_RCC_OscConfig+0x4c2>
  3155. 8001444: 687b ldr r3, [r7, #4]
  3156. 8001446: 689b ldr r3, [r3, #8]
  3157. 8001448: 2b05 cmp r3, #5
  3158. 800144a: d10c bne.n 8001466 <HAL_RCC_OscConfig+0x4aa>
  3159. 800144c: 4b1b ldr r3, [pc, #108] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3160. 800144e: 6b5b ldr r3, [r3, #52] ; 0x34
  3161. 8001450: 4a1a ldr r2, [pc, #104] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3162. 8001452: f443 6380 orr.w r3, r3, #1024 ; 0x400
  3163. 8001456: 6353 str r3, [r2, #52] ; 0x34
  3164. 8001458: 4b18 ldr r3, [pc, #96] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3165. 800145a: 6b5b ldr r3, [r3, #52] ; 0x34
  3166. 800145c: 4a17 ldr r2, [pc, #92] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3167. 800145e: f443 7380 orr.w r3, r3, #256 ; 0x100
  3168. 8001462: 6353 str r3, [r2, #52] ; 0x34
  3169. 8001464: e00b b.n 800147e <HAL_RCC_OscConfig+0x4c2>
  3170. 8001466: 4b15 ldr r3, [pc, #84] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3171. 8001468: 6b5b ldr r3, [r3, #52] ; 0x34
  3172. 800146a: 4a14 ldr r2, [pc, #80] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3173. 800146c: f423 7380 bic.w r3, r3, #256 ; 0x100
  3174. 8001470: 6353 str r3, [r2, #52] ; 0x34
  3175. 8001472: 4b12 ldr r3, [pc, #72] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3176. 8001474: 6b5b ldr r3, [r3, #52] ; 0x34
  3177. 8001476: 4a11 ldr r2, [pc, #68] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3178. 8001478: f423 6380 bic.w r3, r3, #1024 ; 0x400
  3179. 800147c: 6353 str r3, [r2, #52] ; 0x34
  3180. /* Check the LSE State */
  3181. if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF)
  3182. 800147e: 687b ldr r3, [r7, #4]
  3183. 8001480: 689b ldr r3, [r3, #8]
  3184. 8001482: 2b00 cmp r3, #0
  3185. 8001484: d015 beq.n 80014b2 <HAL_RCC_OscConfig+0x4f6>
  3186. {
  3187. /* Get Start Tick */
  3188. tickstart = HAL_GetTick();
  3189. 8001486: f7ff fae3 bl 8000a50 <HAL_GetTick>
  3190. 800148a: 6138 str r0, [r7, #16]
  3191. /* Wait till LSE is ready */
  3192. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U)
  3193. 800148c: e00a b.n 80014a4 <HAL_RCC_OscConfig+0x4e8>
  3194. {
  3195. if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
  3196. 800148e: f7ff fadf bl 8000a50 <HAL_GetTick>
  3197. 8001492: 4602 mov r2, r0
  3198. 8001494: 693b ldr r3, [r7, #16]
  3199. 8001496: 1ad3 subs r3, r2, r3
  3200. 8001498: f241 3288 movw r2, #5000 ; 0x1388
  3201. 800149c: 4293 cmp r3, r2
  3202. 800149e: d901 bls.n 80014a4 <HAL_RCC_OscConfig+0x4e8>
  3203. {
  3204. return HAL_TIMEOUT;
  3205. 80014a0: 2303 movs r3, #3
  3206. 80014a2: e0b2 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  3207. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U)
  3208. 80014a4: 4b05 ldr r3, [pc, #20] ; (80014bc <HAL_RCC_OscConfig+0x500>)
  3209. 80014a6: 6b5b ldr r3, [r3, #52] ; 0x34
  3210. 80014a8: f403 7300 and.w r3, r3, #512 ; 0x200
  3211. 80014ac: 2b00 cmp r3, #0
  3212. 80014ae: d0ee beq.n 800148e <HAL_RCC_OscConfig+0x4d2>
  3213. 80014b0: e023 b.n 80014fa <HAL_RCC_OscConfig+0x53e>
  3214. }
  3215. }
  3216. else
  3217. {
  3218. /* Get Start Tick */
  3219. tickstart = HAL_GetTick();
  3220. 80014b2: f7ff facd bl 8000a50 <HAL_GetTick>
  3221. 80014b6: 6138 str r0, [r7, #16]
  3222. /* Wait till LSE is disabled */
  3223. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U)
  3224. 80014b8: e019 b.n 80014ee <HAL_RCC_OscConfig+0x532>
  3225. 80014ba: bf00 nop
  3226. 80014bc: 40023800 .word 0x40023800
  3227. 80014c0: 080025f0 .word 0x080025f0
  3228. 80014c4: 20000000 .word 0x20000000
  3229. 80014c8: 20000004 .word 0x20000004
  3230. 80014cc: 42470020 .word 0x42470020
  3231. 80014d0: 42470680 .word 0x42470680
  3232. 80014d4: 40007000 .word 0x40007000
  3233. {
  3234. if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
  3235. 80014d8: f7ff faba bl 8000a50 <HAL_GetTick>
  3236. 80014dc: 4602 mov r2, r0
  3237. 80014de: 693b ldr r3, [r7, #16]
  3238. 80014e0: 1ad3 subs r3, r2, r3
  3239. 80014e2: f241 3288 movw r2, #5000 ; 0x1388
  3240. 80014e6: 4293 cmp r3, r2
  3241. 80014e8: d901 bls.n 80014ee <HAL_RCC_OscConfig+0x532>
  3242. {
  3243. return HAL_TIMEOUT;
  3244. 80014ea: 2303 movs r3, #3
  3245. 80014ec: e08d b.n 800160a <HAL_RCC_OscConfig+0x64e>
  3246. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U)
  3247. 80014ee: 4b49 ldr r3, [pc, #292] ; (8001614 <HAL_RCC_OscConfig+0x658>)
  3248. 80014f0: 6b5b ldr r3, [r3, #52] ; 0x34
  3249. 80014f2: f403 7300 and.w r3, r3, #512 ; 0x200
  3250. 80014f6: 2b00 cmp r3, #0
  3251. 80014f8: d1ee bne.n 80014d8 <HAL_RCC_OscConfig+0x51c>
  3252. }
  3253. }
  3254. }
  3255. /* Require to disable power clock if necessary */
  3256. if(pwrclkchanged == SET)
  3257. 80014fa: 7ffb ldrb r3, [r7, #31]
  3258. 80014fc: 2b01 cmp r3, #1
  3259. 80014fe: d105 bne.n 800150c <HAL_RCC_OscConfig+0x550>
  3260. {
  3261. __HAL_RCC_PWR_CLK_DISABLE();
  3262. 8001500: 4b44 ldr r3, [pc, #272] ; (8001614 <HAL_RCC_OscConfig+0x658>)
  3263. 8001502: 6a5b ldr r3, [r3, #36] ; 0x24
  3264. 8001504: 4a43 ldr r2, [pc, #268] ; (8001614 <HAL_RCC_OscConfig+0x658>)
  3265. 8001506: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
  3266. 800150a: 6253 str r3, [r2, #36] ; 0x24
  3267. }
  3268. /*-------------------------------- PLL Configuration -----------------------*/
  3269. /* Check the parameters */
  3270. assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));
  3271. if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
  3272. 800150c: 687b ldr r3, [r7, #4]
  3273. 800150e: 6a5b ldr r3, [r3, #36] ; 0x24
  3274. 8001510: 2b00 cmp r3, #0
  3275. 8001512: d079 beq.n 8001608 <HAL_RCC_OscConfig+0x64c>
  3276. {
  3277. /* Check if the PLL is used as system clock or not */
  3278. if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
  3279. 8001514: 69bb ldr r3, [r7, #24]
  3280. 8001516: 2b0c cmp r3, #12
  3281. 8001518: d056 beq.n 80015c8 <HAL_RCC_OscConfig+0x60c>
  3282. {
  3283. if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
  3284. 800151a: 687b ldr r3, [r7, #4]
  3285. 800151c: 6a5b ldr r3, [r3, #36] ; 0x24
  3286. 800151e: 2b02 cmp r3, #2
  3287. 8001520: d13b bne.n 800159a <HAL_RCC_OscConfig+0x5de>
  3288. assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));
  3289. assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL));
  3290. assert_param(IS_RCC_PLL_DIV(RCC_OscInitStruct->PLL.PLLDIV));
  3291. /* Disable the main PLL. */
  3292. __HAL_RCC_PLL_DISABLE();
  3293. 8001522: 4b3d ldr r3, [pc, #244] ; (8001618 <HAL_RCC_OscConfig+0x65c>)
  3294. 8001524: 2200 movs r2, #0
  3295. 8001526: 601a str r2, [r3, #0]
  3296. /* Get Start Tick */
  3297. tickstart = HAL_GetTick();
  3298. 8001528: f7ff fa92 bl 8000a50 <HAL_GetTick>
  3299. 800152c: 6138 str r0, [r7, #16]
  3300. /* Wait till PLL is disabled */
  3301. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U)
  3302. 800152e: e008 b.n 8001542 <HAL_RCC_OscConfig+0x586>
  3303. {
  3304. if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
  3305. 8001530: f7ff fa8e bl 8000a50 <HAL_GetTick>
  3306. 8001534: 4602 mov r2, r0
  3307. 8001536: 693b ldr r3, [r7, #16]
  3308. 8001538: 1ad3 subs r3, r2, r3
  3309. 800153a: 2b02 cmp r3, #2
  3310. 800153c: d901 bls.n 8001542 <HAL_RCC_OscConfig+0x586>
  3311. {
  3312. return HAL_TIMEOUT;
  3313. 800153e: 2303 movs r3, #3
  3314. 8001540: e063 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  3315. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U)
  3316. 8001542: 4b34 ldr r3, [pc, #208] ; (8001614 <HAL_RCC_OscConfig+0x658>)
  3317. 8001544: 681b ldr r3, [r3, #0]
  3318. 8001546: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  3319. 800154a: 2b00 cmp r3, #0
  3320. 800154c: d1f0 bne.n 8001530 <HAL_RCC_OscConfig+0x574>
  3321. }
  3322. }
  3323. /* Configure the main PLL clock source, multiplication and division factors. */
  3324. __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
  3325. 800154e: 4b31 ldr r3, [pc, #196] ; (8001614 <HAL_RCC_OscConfig+0x658>)
  3326. 8001550: 689b ldr r3, [r3, #8]
  3327. 8001552: f423 027d bic.w r2, r3, #16580608 ; 0xfd0000
  3328. 8001556: 687b ldr r3, [r7, #4]
  3329. 8001558: 6a99 ldr r1, [r3, #40] ; 0x28
  3330. 800155a: 687b ldr r3, [r7, #4]
  3331. 800155c: 6adb ldr r3, [r3, #44] ; 0x2c
  3332. 800155e: 4319 orrs r1, r3
  3333. 8001560: 687b ldr r3, [r7, #4]
  3334. 8001562: 6b1b ldr r3, [r3, #48] ; 0x30
  3335. 8001564: 430b orrs r3, r1
  3336. 8001566: 492b ldr r1, [pc, #172] ; (8001614 <HAL_RCC_OscConfig+0x658>)
  3337. 8001568: 4313 orrs r3, r2
  3338. 800156a: 608b str r3, [r1, #8]
  3339. RCC_OscInitStruct->PLL.PLLMUL,
  3340. RCC_OscInitStruct->PLL.PLLDIV);
  3341. /* Enable the main PLL. */
  3342. __HAL_RCC_PLL_ENABLE();
  3343. 800156c: 4b2a ldr r3, [pc, #168] ; (8001618 <HAL_RCC_OscConfig+0x65c>)
  3344. 800156e: 2201 movs r2, #1
  3345. 8001570: 601a str r2, [r3, #0]
  3346. /* Get Start Tick */
  3347. tickstart = HAL_GetTick();
  3348. 8001572: f7ff fa6d bl 8000a50 <HAL_GetTick>
  3349. 8001576: 6138 str r0, [r7, #16]
  3350. /* Wait till PLL is ready */
  3351. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U)
  3352. 8001578: e008 b.n 800158c <HAL_RCC_OscConfig+0x5d0>
  3353. {
  3354. if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
  3355. 800157a: f7ff fa69 bl 8000a50 <HAL_GetTick>
  3356. 800157e: 4602 mov r2, r0
  3357. 8001580: 693b ldr r3, [r7, #16]
  3358. 8001582: 1ad3 subs r3, r2, r3
  3359. 8001584: 2b02 cmp r3, #2
  3360. 8001586: d901 bls.n 800158c <HAL_RCC_OscConfig+0x5d0>
  3361. {
  3362. return HAL_TIMEOUT;
  3363. 8001588: 2303 movs r3, #3
  3364. 800158a: e03e b.n 800160a <HAL_RCC_OscConfig+0x64e>
  3365. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U)
  3366. 800158c: 4b21 ldr r3, [pc, #132] ; (8001614 <HAL_RCC_OscConfig+0x658>)
  3367. 800158e: 681b ldr r3, [r3, #0]
  3368. 8001590: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  3369. 8001594: 2b00 cmp r3, #0
  3370. 8001596: d0f0 beq.n 800157a <HAL_RCC_OscConfig+0x5be>
  3371. 8001598: e036 b.n 8001608 <HAL_RCC_OscConfig+0x64c>
  3372. }
  3373. }
  3374. else
  3375. {
  3376. /* Disable the main PLL. */
  3377. __HAL_RCC_PLL_DISABLE();
  3378. 800159a: 4b1f ldr r3, [pc, #124] ; (8001618 <HAL_RCC_OscConfig+0x65c>)
  3379. 800159c: 2200 movs r2, #0
  3380. 800159e: 601a str r2, [r3, #0]
  3381. /* Get Start Tick */
  3382. tickstart = HAL_GetTick();
  3383. 80015a0: f7ff fa56 bl 8000a50 <HAL_GetTick>
  3384. 80015a4: 6138 str r0, [r7, #16]
  3385. /* Wait till PLL is disabled */
  3386. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U)
  3387. 80015a6: e008 b.n 80015ba <HAL_RCC_OscConfig+0x5fe>
  3388. {
  3389. if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
  3390. 80015a8: f7ff fa52 bl 8000a50 <HAL_GetTick>
  3391. 80015ac: 4602 mov r2, r0
  3392. 80015ae: 693b ldr r3, [r7, #16]
  3393. 80015b0: 1ad3 subs r3, r2, r3
  3394. 80015b2: 2b02 cmp r3, #2
  3395. 80015b4: d901 bls.n 80015ba <HAL_RCC_OscConfig+0x5fe>
  3396. {
  3397. return HAL_TIMEOUT;
  3398. 80015b6: 2303 movs r3, #3
  3399. 80015b8: e027 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  3400. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U)
  3401. 80015ba: 4b16 ldr r3, [pc, #88] ; (8001614 <HAL_RCC_OscConfig+0x658>)
  3402. 80015bc: 681b ldr r3, [r3, #0]
  3403. 80015be: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  3404. 80015c2: 2b00 cmp r3, #0
  3405. 80015c4: d1f0 bne.n 80015a8 <HAL_RCC_OscConfig+0x5ec>
  3406. 80015c6: e01f b.n 8001608 <HAL_RCC_OscConfig+0x64c>
  3407. }
  3408. }
  3409. else
  3410. {
  3411. /* Check if there is a request to disable the PLL used as System clock source */
  3412. if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF)
  3413. 80015c8: 687b ldr r3, [r7, #4]
  3414. 80015ca: 6a5b ldr r3, [r3, #36] ; 0x24
  3415. 80015cc: 2b01 cmp r3, #1
  3416. 80015ce: d101 bne.n 80015d4 <HAL_RCC_OscConfig+0x618>
  3417. {
  3418. return HAL_ERROR;
  3419. 80015d0: 2301 movs r3, #1
  3420. 80015d2: e01a b.n 800160a <HAL_RCC_OscConfig+0x64e>
  3421. }
  3422. else
  3423. {
  3424. /* Do not return HAL_ERROR if request repeats the current configuration */
  3425. pll_config = RCC->CFGR;
  3426. 80015d4: 4b0f ldr r3, [pc, #60] ; (8001614 <HAL_RCC_OscConfig+0x658>)
  3427. 80015d6: 689b ldr r3, [r3, #8]
  3428. 80015d8: 617b str r3, [r7, #20]
  3429. if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
  3430. 80015da: 697b ldr r3, [r7, #20]
  3431. 80015dc: f403 3280 and.w r2, r3, #65536 ; 0x10000
  3432. 80015e0: 687b ldr r3, [r7, #4]
  3433. 80015e2: 6a9b ldr r3, [r3, #40] ; 0x28
  3434. 80015e4: 429a cmp r2, r3
  3435. 80015e6: d10d bne.n 8001604 <HAL_RCC_OscConfig+0x648>
  3436. (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) ||
  3437. 80015e8: 697b ldr r3, [r7, #20]
  3438. 80015ea: f403 1270 and.w r2, r3, #3932160 ; 0x3c0000
  3439. 80015ee: 687b ldr r3, [r7, #4]
  3440. 80015f0: 6adb ldr r3, [r3, #44] ; 0x2c
  3441. if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
  3442. 80015f2: 429a cmp r2, r3
  3443. 80015f4: d106 bne.n 8001604 <HAL_RCC_OscConfig+0x648>
  3444. (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV))
  3445. 80015f6: 697b ldr r3, [r7, #20]
  3446. 80015f8: f403 0240 and.w r2, r3, #12582912 ; 0xc00000
  3447. 80015fc: 687b ldr r3, [r7, #4]
  3448. 80015fe: 6b1b ldr r3, [r3, #48] ; 0x30
  3449. (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) ||
  3450. 8001600: 429a cmp r2, r3
  3451. 8001602: d001 beq.n 8001608 <HAL_RCC_OscConfig+0x64c>
  3452. {
  3453. return HAL_ERROR;
  3454. 8001604: 2301 movs r3, #1
  3455. 8001606: e000 b.n 800160a <HAL_RCC_OscConfig+0x64e>
  3456. }
  3457. }
  3458. }
  3459. }
  3460. return HAL_OK;
  3461. 8001608: 2300 movs r3, #0
  3462. }
  3463. 800160a: 4618 mov r0, r3
  3464. 800160c: 3720 adds r7, #32
  3465. 800160e: 46bd mov sp, r7
  3466. 8001610: bd80 pop {r7, pc}
  3467. 8001612: bf00 nop
  3468. 8001614: 40023800 .word 0x40023800
  3469. 8001618: 42470060 .word 0x42470060
  3470. 0800161c <HAL_RCC_ClockConfig>:
  3471. * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency
  3472. * (for more details refer to section above "Initialization/de-initialization functions")
  3473. * @retval HAL status
  3474. */
  3475. HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
  3476. {
  3477. 800161c: b580 push {r7, lr}
  3478. 800161e: b084 sub sp, #16
  3479. 8001620: af00 add r7, sp, #0
  3480. 8001622: 6078 str r0, [r7, #4]
  3481. 8001624: 6039 str r1, [r7, #0]
  3482. uint32_t tickstart;
  3483. HAL_StatusTypeDef status;
  3484. /* Check the parameters */
  3485. if(RCC_ClkInitStruct == NULL)
  3486. 8001626: 687b ldr r3, [r7, #4]
  3487. 8001628: 2b00 cmp r3, #0
  3488. 800162a: d101 bne.n 8001630 <HAL_RCC_ClockConfig+0x14>
  3489. {
  3490. return HAL_ERROR;
  3491. 800162c: 2301 movs r3, #1
  3492. 800162e: e11a b.n 8001866 <HAL_RCC_ClockConfig+0x24a>
  3493. /* To correctly read data from FLASH memory, the number of wait states (LATENCY)
  3494. must be correctly programmed according to the frequency of the CPU clock
  3495. (HCLK) and the supply voltage of the device. */
  3496. /* Increasing the number of wait states because of higher CPU frequency */
  3497. if(FLatency > __HAL_FLASH_GET_LATENCY())
  3498. 8001630: 4b8f ldr r3, [pc, #572] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3499. 8001632: 681b ldr r3, [r3, #0]
  3500. 8001634: f003 0301 and.w r3, r3, #1
  3501. 8001638: 683a ldr r2, [r7, #0]
  3502. 800163a: 429a cmp r2, r3
  3503. 800163c: d919 bls.n 8001672 <HAL_RCC_ClockConfig+0x56>
  3504. {
  3505. /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
  3506. __HAL_FLASH_SET_LATENCY(FLatency);
  3507. 800163e: 683b ldr r3, [r7, #0]
  3508. 8001640: 2b01 cmp r3, #1
  3509. 8001642: d105 bne.n 8001650 <HAL_RCC_ClockConfig+0x34>
  3510. 8001644: 4b8a ldr r3, [pc, #552] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3511. 8001646: 681b ldr r3, [r3, #0]
  3512. 8001648: 4a89 ldr r2, [pc, #548] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3513. 800164a: f043 0304 orr.w r3, r3, #4
  3514. 800164e: 6013 str r3, [r2, #0]
  3515. 8001650: 4b87 ldr r3, [pc, #540] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3516. 8001652: 681b ldr r3, [r3, #0]
  3517. 8001654: f023 0201 bic.w r2, r3, #1
  3518. 8001658: 4985 ldr r1, [pc, #532] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3519. 800165a: 683b ldr r3, [r7, #0]
  3520. 800165c: 4313 orrs r3, r2
  3521. 800165e: 600b str r3, [r1, #0]
  3522. /* Check that the new number of wait states is taken into account to access the Flash
  3523. memory by reading the FLASH_ACR register */
  3524. if(__HAL_FLASH_GET_LATENCY() != FLatency)
  3525. 8001660: 4b83 ldr r3, [pc, #524] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3526. 8001662: 681b ldr r3, [r3, #0]
  3527. 8001664: f003 0301 and.w r3, r3, #1
  3528. 8001668: 683a ldr r2, [r7, #0]
  3529. 800166a: 429a cmp r2, r3
  3530. 800166c: d001 beq.n 8001672 <HAL_RCC_ClockConfig+0x56>
  3531. {
  3532. return HAL_ERROR;
  3533. 800166e: 2301 movs r3, #1
  3534. 8001670: e0f9 b.n 8001866 <HAL_RCC_ClockConfig+0x24a>
  3535. }
  3536. }
  3537. /*-------------------------- HCLK Configuration --------------------------*/
  3538. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
  3539. 8001672: 687b ldr r3, [r7, #4]
  3540. 8001674: 681b ldr r3, [r3, #0]
  3541. 8001676: f003 0302 and.w r3, r3, #2
  3542. 800167a: 2b00 cmp r3, #0
  3543. 800167c: d008 beq.n 8001690 <HAL_RCC_ClockConfig+0x74>
  3544. {
  3545. assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));
  3546. MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);
  3547. 800167e: 4b7d ldr r3, [pc, #500] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3548. 8001680: 689b ldr r3, [r3, #8]
  3549. 8001682: f023 02f0 bic.w r2, r3, #240 ; 0xf0
  3550. 8001686: 687b ldr r3, [r7, #4]
  3551. 8001688: 689b ldr r3, [r3, #8]
  3552. 800168a: 497a ldr r1, [pc, #488] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3553. 800168c: 4313 orrs r3, r2
  3554. 800168e: 608b str r3, [r1, #8]
  3555. }
  3556. /*------------------------- SYSCLK Configuration ---------------------------*/
  3557. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
  3558. 8001690: 687b ldr r3, [r7, #4]
  3559. 8001692: 681b ldr r3, [r3, #0]
  3560. 8001694: f003 0301 and.w r3, r3, #1
  3561. 8001698: 2b00 cmp r3, #0
  3562. 800169a: f000 808e beq.w 80017ba <HAL_RCC_ClockConfig+0x19e>
  3563. {
  3564. assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
  3565. /* HSE is selected as System Clock Source */
  3566. if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
  3567. 800169e: 687b ldr r3, [r7, #4]
  3568. 80016a0: 685b ldr r3, [r3, #4]
  3569. 80016a2: 2b02 cmp r3, #2
  3570. 80016a4: d107 bne.n 80016b6 <HAL_RCC_ClockConfig+0x9a>
  3571. {
  3572. /* Check the HSE ready flag */
  3573. if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U)
  3574. 80016a6: 4b73 ldr r3, [pc, #460] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3575. 80016a8: 681b ldr r3, [r3, #0]
  3576. 80016aa: f403 3300 and.w r3, r3, #131072 ; 0x20000
  3577. 80016ae: 2b00 cmp r3, #0
  3578. 80016b0: d121 bne.n 80016f6 <HAL_RCC_ClockConfig+0xda>
  3579. {
  3580. return HAL_ERROR;
  3581. 80016b2: 2301 movs r3, #1
  3582. 80016b4: e0d7 b.n 8001866 <HAL_RCC_ClockConfig+0x24a>
  3583. }
  3584. }
  3585. /* PLL is selected as System Clock Source */
  3586. else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
  3587. 80016b6: 687b ldr r3, [r7, #4]
  3588. 80016b8: 685b ldr r3, [r3, #4]
  3589. 80016ba: 2b03 cmp r3, #3
  3590. 80016bc: d107 bne.n 80016ce <HAL_RCC_ClockConfig+0xb2>
  3591. {
  3592. /* Check the PLL ready flag */
  3593. if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U)
  3594. 80016be: 4b6d ldr r3, [pc, #436] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3595. 80016c0: 681b ldr r3, [r3, #0]
  3596. 80016c2: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  3597. 80016c6: 2b00 cmp r3, #0
  3598. 80016c8: d115 bne.n 80016f6 <HAL_RCC_ClockConfig+0xda>
  3599. {
  3600. return HAL_ERROR;
  3601. 80016ca: 2301 movs r3, #1
  3602. 80016cc: e0cb b.n 8001866 <HAL_RCC_ClockConfig+0x24a>
  3603. }
  3604. }
  3605. /* HSI is selected as System Clock Source */
  3606. else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI)
  3607. 80016ce: 687b ldr r3, [r7, #4]
  3608. 80016d0: 685b ldr r3, [r3, #4]
  3609. 80016d2: 2b01 cmp r3, #1
  3610. 80016d4: d107 bne.n 80016e6 <HAL_RCC_ClockConfig+0xca>
  3611. {
  3612. /* Check the HSI ready flag */
  3613. if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U)
  3614. 80016d6: 4b67 ldr r3, [pc, #412] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3615. 80016d8: 681b ldr r3, [r3, #0]
  3616. 80016da: f003 0302 and.w r3, r3, #2
  3617. 80016de: 2b00 cmp r3, #0
  3618. 80016e0: d109 bne.n 80016f6 <HAL_RCC_ClockConfig+0xda>
  3619. {
  3620. return HAL_ERROR;
  3621. 80016e2: 2301 movs r3, #1
  3622. 80016e4: e0bf b.n 8001866 <HAL_RCC_ClockConfig+0x24a>
  3623. }
  3624. /* MSI is selected as System Clock Source */
  3625. else
  3626. {
  3627. /* Check the MSI ready flag */
  3628. if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U)
  3629. 80016e6: 4b63 ldr r3, [pc, #396] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3630. 80016e8: 681b ldr r3, [r3, #0]
  3631. 80016ea: f403 7300 and.w r3, r3, #512 ; 0x200
  3632. 80016ee: 2b00 cmp r3, #0
  3633. 80016f0: d101 bne.n 80016f6 <HAL_RCC_ClockConfig+0xda>
  3634. {
  3635. return HAL_ERROR;
  3636. 80016f2: 2301 movs r3, #1
  3637. 80016f4: e0b7 b.n 8001866 <HAL_RCC_ClockConfig+0x24a>
  3638. }
  3639. }
  3640. __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource);
  3641. 80016f6: 4b5f ldr r3, [pc, #380] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3642. 80016f8: 689b ldr r3, [r3, #8]
  3643. 80016fa: f023 0203 bic.w r2, r3, #3
  3644. 80016fe: 687b ldr r3, [r7, #4]
  3645. 8001700: 685b ldr r3, [r3, #4]
  3646. 8001702: 495c ldr r1, [pc, #368] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3647. 8001704: 4313 orrs r3, r2
  3648. 8001706: 608b str r3, [r1, #8]
  3649. /* Get Start Tick */
  3650. tickstart = HAL_GetTick();
  3651. 8001708: f7ff f9a2 bl 8000a50 <HAL_GetTick>
  3652. 800170c: 60f8 str r0, [r7, #12]
  3653. if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
  3654. 800170e: 687b ldr r3, [r7, #4]
  3655. 8001710: 685b ldr r3, [r3, #4]
  3656. 8001712: 2b02 cmp r3, #2
  3657. 8001714: d112 bne.n 800173c <HAL_RCC_ClockConfig+0x120>
  3658. {
  3659. while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE)
  3660. 8001716: e00a b.n 800172e <HAL_RCC_ClockConfig+0x112>
  3661. {
  3662. if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
  3663. 8001718: f7ff f99a bl 8000a50 <HAL_GetTick>
  3664. 800171c: 4602 mov r2, r0
  3665. 800171e: 68fb ldr r3, [r7, #12]
  3666. 8001720: 1ad3 subs r3, r2, r3
  3667. 8001722: f241 3288 movw r2, #5000 ; 0x1388
  3668. 8001726: 4293 cmp r3, r2
  3669. 8001728: d901 bls.n 800172e <HAL_RCC_ClockConfig+0x112>
  3670. {
  3671. return HAL_TIMEOUT;
  3672. 800172a: 2303 movs r3, #3
  3673. 800172c: e09b b.n 8001866 <HAL_RCC_ClockConfig+0x24a>
  3674. while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE)
  3675. 800172e: 4b51 ldr r3, [pc, #324] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3676. 8001730: 689b ldr r3, [r3, #8]
  3677. 8001732: f003 030c and.w r3, r3, #12
  3678. 8001736: 2b08 cmp r3, #8
  3679. 8001738: d1ee bne.n 8001718 <HAL_RCC_ClockConfig+0xfc>
  3680. 800173a: e03e b.n 80017ba <HAL_RCC_ClockConfig+0x19e>
  3681. }
  3682. }
  3683. }
  3684. else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
  3685. 800173c: 687b ldr r3, [r7, #4]
  3686. 800173e: 685b ldr r3, [r3, #4]
  3687. 8001740: 2b03 cmp r3, #3
  3688. 8001742: d112 bne.n 800176a <HAL_RCC_ClockConfig+0x14e>
  3689. {
  3690. while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
  3691. 8001744: e00a b.n 800175c <HAL_RCC_ClockConfig+0x140>
  3692. {
  3693. if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
  3694. 8001746: f7ff f983 bl 8000a50 <HAL_GetTick>
  3695. 800174a: 4602 mov r2, r0
  3696. 800174c: 68fb ldr r3, [r7, #12]
  3697. 800174e: 1ad3 subs r3, r2, r3
  3698. 8001750: f241 3288 movw r2, #5000 ; 0x1388
  3699. 8001754: 4293 cmp r3, r2
  3700. 8001756: d901 bls.n 800175c <HAL_RCC_ClockConfig+0x140>
  3701. {
  3702. return HAL_TIMEOUT;
  3703. 8001758: 2303 movs r3, #3
  3704. 800175a: e084 b.n 8001866 <HAL_RCC_ClockConfig+0x24a>
  3705. while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
  3706. 800175c: 4b45 ldr r3, [pc, #276] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3707. 800175e: 689b ldr r3, [r3, #8]
  3708. 8001760: f003 030c and.w r3, r3, #12
  3709. 8001764: 2b0c cmp r3, #12
  3710. 8001766: d1ee bne.n 8001746 <HAL_RCC_ClockConfig+0x12a>
  3711. 8001768: e027 b.n 80017ba <HAL_RCC_ClockConfig+0x19e>
  3712. }
  3713. }
  3714. }
  3715. else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI)
  3716. 800176a: 687b ldr r3, [r7, #4]
  3717. 800176c: 685b ldr r3, [r3, #4]
  3718. 800176e: 2b01 cmp r3, #1
  3719. 8001770: d11d bne.n 80017ae <HAL_RCC_ClockConfig+0x192>
  3720. {
  3721. while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI)
  3722. 8001772: e00a b.n 800178a <HAL_RCC_ClockConfig+0x16e>
  3723. {
  3724. if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
  3725. 8001774: f7ff f96c bl 8000a50 <HAL_GetTick>
  3726. 8001778: 4602 mov r2, r0
  3727. 800177a: 68fb ldr r3, [r7, #12]
  3728. 800177c: 1ad3 subs r3, r2, r3
  3729. 800177e: f241 3288 movw r2, #5000 ; 0x1388
  3730. 8001782: 4293 cmp r3, r2
  3731. 8001784: d901 bls.n 800178a <HAL_RCC_ClockConfig+0x16e>
  3732. {
  3733. return HAL_TIMEOUT;
  3734. 8001786: 2303 movs r3, #3
  3735. 8001788: e06d b.n 8001866 <HAL_RCC_ClockConfig+0x24a>
  3736. while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI)
  3737. 800178a: 4b3a ldr r3, [pc, #232] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3738. 800178c: 689b ldr r3, [r3, #8]
  3739. 800178e: f003 030c and.w r3, r3, #12
  3740. 8001792: 2b04 cmp r3, #4
  3741. 8001794: d1ee bne.n 8001774 <HAL_RCC_ClockConfig+0x158>
  3742. 8001796: e010 b.n 80017ba <HAL_RCC_ClockConfig+0x19e>
  3743. }
  3744. else
  3745. {
  3746. while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI)
  3747. {
  3748. if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE)
  3749. 8001798: f7ff f95a bl 8000a50 <HAL_GetTick>
  3750. 800179c: 4602 mov r2, r0
  3751. 800179e: 68fb ldr r3, [r7, #12]
  3752. 80017a0: 1ad3 subs r3, r2, r3
  3753. 80017a2: f241 3288 movw r2, #5000 ; 0x1388
  3754. 80017a6: 4293 cmp r3, r2
  3755. 80017a8: d901 bls.n 80017ae <HAL_RCC_ClockConfig+0x192>
  3756. {
  3757. return HAL_TIMEOUT;
  3758. 80017aa: 2303 movs r3, #3
  3759. 80017ac: e05b b.n 8001866 <HAL_RCC_ClockConfig+0x24a>
  3760. while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI)
  3761. 80017ae: 4b31 ldr r3, [pc, #196] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3762. 80017b0: 689b ldr r3, [r3, #8]
  3763. 80017b2: f003 030c and.w r3, r3, #12
  3764. 80017b6: 2b00 cmp r3, #0
  3765. 80017b8: d1ee bne.n 8001798 <HAL_RCC_ClockConfig+0x17c>
  3766. }
  3767. }
  3768. }
  3769. }
  3770. /* Decreasing the number of wait states because of lower CPU frequency */
  3771. if(FLatency < __HAL_FLASH_GET_LATENCY())
  3772. 80017ba: 4b2d ldr r3, [pc, #180] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3773. 80017bc: 681b ldr r3, [r3, #0]
  3774. 80017be: f003 0301 and.w r3, r3, #1
  3775. 80017c2: 683a ldr r2, [r7, #0]
  3776. 80017c4: 429a cmp r2, r3
  3777. 80017c6: d219 bcs.n 80017fc <HAL_RCC_ClockConfig+0x1e0>
  3778. {
  3779. /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
  3780. __HAL_FLASH_SET_LATENCY(FLatency);
  3781. 80017c8: 683b ldr r3, [r7, #0]
  3782. 80017ca: 2b01 cmp r3, #1
  3783. 80017cc: d105 bne.n 80017da <HAL_RCC_ClockConfig+0x1be>
  3784. 80017ce: 4b28 ldr r3, [pc, #160] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3785. 80017d0: 681b ldr r3, [r3, #0]
  3786. 80017d2: 4a27 ldr r2, [pc, #156] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3787. 80017d4: f043 0304 orr.w r3, r3, #4
  3788. 80017d8: 6013 str r3, [r2, #0]
  3789. 80017da: 4b25 ldr r3, [pc, #148] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3790. 80017dc: 681b ldr r3, [r3, #0]
  3791. 80017de: f023 0201 bic.w r2, r3, #1
  3792. 80017e2: 4923 ldr r1, [pc, #140] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3793. 80017e4: 683b ldr r3, [r7, #0]
  3794. 80017e6: 4313 orrs r3, r2
  3795. 80017e8: 600b str r3, [r1, #0]
  3796. /* Check that the new number of wait states is taken into account to access the Flash
  3797. memory by reading the FLASH_ACR register */
  3798. if(__HAL_FLASH_GET_LATENCY() != FLatency)
  3799. 80017ea: 4b21 ldr r3, [pc, #132] ; (8001870 <HAL_RCC_ClockConfig+0x254>)
  3800. 80017ec: 681b ldr r3, [r3, #0]
  3801. 80017ee: f003 0301 and.w r3, r3, #1
  3802. 80017f2: 683a ldr r2, [r7, #0]
  3803. 80017f4: 429a cmp r2, r3
  3804. 80017f6: d001 beq.n 80017fc <HAL_RCC_ClockConfig+0x1e0>
  3805. {
  3806. return HAL_ERROR;
  3807. 80017f8: 2301 movs r3, #1
  3808. 80017fa: e034 b.n 8001866 <HAL_RCC_ClockConfig+0x24a>
  3809. }
  3810. }
  3811. /*-------------------------- PCLK1 Configuration ---------------------------*/
  3812. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
  3813. 80017fc: 687b ldr r3, [r7, #4]
  3814. 80017fe: 681b ldr r3, [r3, #0]
  3815. 8001800: f003 0304 and.w r3, r3, #4
  3816. 8001804: 2b00 cmp r3, #0
  3817. 8001806: d008 beq.n 800181a <HAL_RCC_ClockConfig+0x1fe>
  3818. {
  3819. assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
  3820. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
  3821. 8001808: 4b1a ldr r3, [pc, #104] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3822. 800180a: 689b ldr r3, [r3, #8]
  3823. 800180c: f423 62e0 bic.w r2, r3, #1792 ; 0x700
  3824. 8001810: 687b ldr r3, [r7, #4]
  3825. 8001812: 68db ldr r3, [r3, #12]
  3826. 8001814: 4917 ldr r1, [pc, #92] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3827. 8001816: 4313 orrs r3, r2
  3828. 8001818: 608b str r3, [r1, #8]
  3829. }
  3830. /*-------------------------- PCLK2 Configuration ---------------------------*/
  3831. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
  3832. 800181a: 687b ldr r3, [r7, #4]
  3833. 800181c: 681b ldr r3, [r3, #0]
  3834. 800181e: f003 0308 and.w r3, r3, #8
  3835. 8001822: 2b00 cmp r3, #0
  3836. 8001824: d009 beq.n 800183a <HAL_RCC_ClockConfig+0x21e>
  3837. {
  3838. assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
  3839. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U));
  3840. 8001826: 4b13 ldr r3, [pc, #76] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3841. 8001828: 689b ldr r3, [r3, #8]
  3842. 800182a: f423 5260 bic.w r2, r3, #14336 ; 0x3800
  3843. 800182e: 687b ldr r3, [r7, #4]
  3844. 8001830: 691b ldr r3, [r3, #16]
  3845. 8001832: 00db lsls r3, r3, #3
  3846. 8001834: 490f ldr r1, [pc, #60] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3847. 8001836: 4313 orrs r3, r2
  3848. 8001838: 608b str r3, [r1, #8]
  3849. }
  3850. /* Update the SystemCoreClock global variable */
  3851. SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos];
  3852. 800183a: f000 f823 bl 8001884 <HAL_RCC_GetSysClockFreq>
  3853. 800183e: 4601 mov r1, r0
  3854. 8001840: 4b0c ldr r3, [pc, #48] ; (8001874 <HAL_RCC_ClockConfig+0x258>)
  3855. 8001842: 689b ldr r3, [r3, #8]
  3856. 8001844: 091b lsrs r3, r3, #4
  3857. 8001846: f003 030f and.w r3, r3, #15
  3858. 800184a: 4a0b ldr r2, [pc, #44] ; (8001878 <HAL_RCC_ClockConfig+0x25c>)
  3859. 800184c: 5cd3 ldrb r3, [r2, r3]
  3860. 800184e: fa21 f303 lsr.w r3, r1, r3
  3861. 8001852: 4a0a ldr r2, [pc, #40] ; (800187c <HAL_RCC_ClockConfig+0x260>)
  3862. 8001854: 6013 str r3, [r2, #0]
  3863. /* Configure the source of time base considering new system clocks settings*/
  3864. status = HAL_InitTick(uwTickPrio);
  3865. 8001856: 4b0a ldr r3, [pc, #40] ; (8001880 <HAL_RCC_ClockConfig+0x264>)
  3866. 8001858: 681b ldr r3, [r3, #0]
  3867. 800185a: 4618 mov r0, r3
  3868. 800185c: f7ff f8ac bl 80009b8 <HAL_InitTick>
  3869. 8001860: 4603 mov r3, r0
  3870. 8001862: 72fb strb r3, [r7, #11]
  3871. return status;
  3872. 8001864: 7afb ldrb r3, [r7, #11]
  3873. }
  3874. 8001866: 4618 mov r0, r3
  3875. 8001868: 3710 adds r7, #16
  3876. 800186a: 46bd mov sp, r7
  3877. 800186c: bd80 pop {r7, pc}
  3878. 800186e: bf00 nop
  3879. 8001870: 40023c00 .word 0x40023c00
  3880. 8001874: 40023800 .word 0x40023800
  3881. 8001878: 080025f0 .word 0x080025f0
  3882. 800187c: 20000000 .word 0x20000000
  3883. 8001880: 20000004 .word 0x20000004
  3884. 08001884 <HAL_RCC_GetSysClockFreq>:
  3885. * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect.
  3886. *
  3887. * @retval SYSCLK frequency
  3888. */
  3889. uint32_t HAL_RCC_GetSysClockFreq(void)
  3890. {
  3891. 8001884: b5f0 push {r4, r5, r6, r7, lr}
  3892. 8001886: b087 sub sp, #28
  3893. 8001888: af00 add r7, sp, #0
  3894. uint32_t tmpreg, pllm, plld, pllvco, msiclkrange, sysclockfreq;
  3895. tmpreg = RCC->CFGR;
  3896. 800188a: 4b5f ldr r3, [pc, #380] ; (8001a08 <HAL_RCC_GetSysClockFreq+0x184>)
  3897. 800188c: 689b ldr r3, [r3, #8]
  3898. 800188e: 60fb str r3, [r7, #12]
  3899. /* Get SYSCLK source -------------------------------------------------------*/
  3900. switch (tmpreg & RCC_CFGR_SWS)
  3901. 8001890: 68fb ldr r3, [r7, #12]
  3902. 8001892: f003 030c and.w r3, r3, #12
  3903. 8001896: 2b08 cmp r3, #8
  3904. 8001898: d007 beq.n 80018aa <HAL_RCC_GetSysClockFreq+0x26>
  3905. 800189a: 2b0c cmp r3, #12
  3906. 800189c: d008 beq.n 80018b0 <HAL_RCC_GetSysClockFreq+0x2c>
  3907. 800189e: 2b04 cmp r3, #4
  3908. 80018a0: f040 809f bne.w 80019e2 <HAL_RCC_GetSysClockFreq+0x15e>
  3909. {
  3910. case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
  3911. {
  3912. sysclockfreq = HSI_VALUE;
  3913. 80018a4: 4b59 ldr r3, [pc, #356] ; (8001a0c <HAL_RCC_GetSysClockFreq+0x188>)
  3914. 80018a6: 613b str r3, [r7, #16]
  3915. break;
  3916. 80018a8: e0a9 b.n 80019fe <HAL_RCC_GetSysClockFreq+0x17a>
  3917. }
  3918. case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */
  3919. {
  3920. sysclockfreq = HSE_VALUE;
  3921. 80018aa: 4b59 ldr r3, [pc, #356] ; (8001a10 <HAL_RCC_GetSysClockFreq+0x18c>)
  3922. 80018ac: 613b str r3, [r7, #16]
  3923. break;
  3924. 80018ae: e0a6 b.n 80019fe <HAL_RCC_GetSysClockFreq+0x17a>
  3925. }
  3926. case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */
  3927. {
  3928. pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos];
  3929. 80018b0: 68fb ldr r3, [r7, #12]
  3930. 80018b2: 0c9b lsrs r3, r3, #18
  3931. 80018b4: f003 030f and.w r3, r3, #15
  3932. 80018b8: 4a56 ldr r2, [pc, #344] ; (8001a14 <HAL_RCC_GetSysClockFreq+0x190>)
  3933. 80018ba: 5cd3 ldrb r3, [r2, r3]
  3934. 80018bc: 60bb str r3, [r7, #8]
  3935. plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U;
  3936. 80018be: 68fb ldr r3, [r7, #12]
  3937. 80018c0: 0d9b lsrs r3, r3, #22
  3938. 80018c2: f003 0303 and.w r3, r3, #3
  3939. 80018c6: 3301 adds r3, #1
  3940. 80018c8: 607b str r3, [r7, #4]
  3941. if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI)
  3942. 80018ca: 4b4f ldr r3, [pc, #316] ; (8001a08 <HAL_RCC_GetSysClockFreq+0x184>)
  3943. 80018cc: 689b ldr r3, [r3, #8]
  3944. 80018ce: f403 3380 and.w r3, r3, #65536 ; 0x10000
  3945. 80018d2: 2b00 cmp r3, #0
  3946. 80018d4: d041 beq.n 800195a <HAL_RCC_GetSysClockFreq+0xd6>
  3947. {
  3948. /* HSE used as PLL clock source */
  3949. pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld);
  3950. 80018d6: 68bb ldr r3, [r7, #8]
  3951. 80018d8: 461d mov r5, r3
  3952. 80018da: f04f 0600 mov.w r6, #0
  3953. 80018de: 4629 mov r1, r5
  3954. 80018e0: 4632 mov r2, r6
  3955. 80018e2: f04f 0300 mov.w r3, #0
  3956. 80018e6: f04f 0400 mov.w r4, #0
  3957. 80018ea: 0154 lsls r4, r2, #5
  3958. 80018ec: ea44 64d1 orr.w r4, r4, r1, lsr #27
  3959. 80018f0: 014b lsls r3, r1, #5
  3960. 80018f2: 4619 mov r1, r3
  3961. 80018f4: 4622 mov r2, r4
  3962. 80018f6: 1b49 subs r1, r1, r5
  3963. 80018f8: eb62 0206 sbc.w r2, r2, r6
  3964. 80018fc: f04f 0300 mov.w r3, #0
  3965. 8001900: f04f 0400 mov.w r4, #0
  3966. 8001904: 0194 lsls r4, r2, #6
  3967. 8001906: ea44 6491 orr.w r4, r4, r1, lsr #26
  3968. 800190a: 018b lsls r3, r1, #6
  3969. 800190c: 1a5b subs r3, r3, r1
  3970. 800190e: eb64 0402 sbc.w r4, r4, r2
  3971. 8001912: f04f 0100 mov.w r1, #0
  3972. 8001916: f04f 0200 mov.w r2, #0
  3973. 800191a: 00e2 lsls r2, r4, #3
  3974. 800191c: ea42 7253 orr.w r2, r2, r3, lsr #29
  3975. 8001920: 00d9 lsls r1, r3, #3
  3976. 8001922: 460b mov r3, r1
  3977. 8001924: 4614 mov r4, r2
  3978. 8001926: 195b adds r3, r3, r5
  3979. 8001928: eb44 0406 adc.w r4, r4, r6
  3980. 800192c: f04f 0100 mov.w r1, #0
  3981. 8001930: f04f 0200 mov.w r2, #0
  3982. 8001934: 0262 lsls r2, r4, #9
  3983. 8001936: ea42 52d3 orr.w r2, r2, r3, lsr #23
  3984. 800193a: 0259 lsls r1, r3, #9
  3985. 800193c: 460b mov r3, r1
  3986. 800193e: 4614 mov r4, r2
  3987. 8001940: 4618 mov r0, r3
  3988. 8001942: 4621 mov r1, r4
  3989. 8001944: 687b ldr r3, [r7, #4]
  3990. 8001946: f04f 0400 mov.w r4, #0
  3991. 800194a: 461a mov r2, r3
  3992. 800194c: 4623 mov r3, r4
  3993. 800194e: f7fe fc15 bl 800017c <__aeabi_uldivmod>
  3994. 8001952: 4603 mov r3, r0
  3995. 8001954: 460c mov r4, r1
  3996. 8001956: 617b str r3, [r7, #20]
  3997. 8001958: e040 b.n 80019dc <HAL_RCC_GetSysClockFreq+0x158>
  3998. }
  3999. else
  4000. {
  4001. /* HSI used as PLL clock source */
  4002. pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld);
  4003. 800195a: 68bb ldr r3, [r7, #8]
  4004. 800195c: 461d mov r5, r3
  4005. 800195e: f04f 0600 mov.w r6, #0
  4006. 8001962: 4629 mov r1, r5
  4007. 8001964: 4632 mov r2, r6
  4008. 8001966: f04f 0300 mov.w r3, #0
  4009. 800196a: f04f 0400 mov.w r4, #0
  4010. 800196e: 0154 lsls r4, r2, #5
  4011. 8001970: ea44 64d1 orr.w r4, r4, r1, lsr #27
  4012. 8001974: 014b lsls r3, r1, #5
  4013. 8001976: 4619 mov r1, r3
  4014. 8001978: 4622 mov r2, r4
  4015. 800197a: 1b49 subs r1, r1, r5
  4016. 800197c: eb62 0206 sbc.w r2, r2, r6
  4017. 8001980: f04f 0300 mov.w r3, #0
  4018. 8001984: f04f 0400 mov.w r4, #0
  4019. 8001988: 0194 lsls r4, r2, #6
  4020. 800198a: ea44 6491 orr.w r4, r4, r1, lsr #26
  4021. 800198e: 018b lsls r3, r1, #6
  4022. 8001990: 1a5b subs r3, r3, r1
  4023. 8001992: eb64 0402 sbc.w r4, r4, r2
  4024. 8001996: f04f 0100 mov.w r1, #0
  4025. 800199a: f04f 0200 mov.w r2, #0
  4026. 800199e: 00e2 lsls r2, r4, #3
  4027. 80019a0: ea42 7253 orr.w r2, r2, r3, lsr #29
  4028. 80019a4: 00d9 lsls r1, r3, #3
  4029. 80019a6: 460b mov r3, r1
  4030. 80019a8: 4614 mov r4, r2
  4031. 80019aa: 195b adds r3, r3, r5
  4032. 80019ac: eb44 0406 adc.w r4, r4, r6
  4033. 80019b0: f04f 0100 mov.w r1, #0
  4034. 80019b4: f04f 0200 mov.w r2, #0
  4035. 80019b8: 02a2 lsls r2, r4, #10
  4036. 80019ba: ea42 5293 orr.w r2, r2, r3, lsr #22
  4037. 80019be: 0299 lsls r1, r3, #10
  4038. 80019c0: 460b mov r3, r1
  4039. 80019c2: 4614 mov r4, r2
  4040. 80019c4: 4618 mov r0, r3
  4041. 80019c6: 4621 mov r1, r4
  4042. 80019c8: 687b ldr r3, [r7, #4]
  4043. 80019ca: f04f 0400 mov.w r4, #0
  4044. 80019ce: 461a mov r2, r3
  4045. 80019d0: 4623 mov r3, r4
  4046. 80019d2: f7fe fbd3 bl 800017c <__aeabi_uldivmod>
  4047. 80019d6: 4603 mov r3, r0
  4048. 80019d8: 460c mov r4, r1
  4049. 80019da: 617b str r3, [r7, #20]
  4050. }
  4051. sysclockfreq = pllvco;
  4052. 80019dc: 697b ldr r3, [r7, #20]
  4053. 80019de: 613b str r3, [r7, #16]
  4054. break;
  4055. 80019e0: e00d b.n 80019fe <HAL_RCC_GetSysClockFreq+0x17a>
  4056. }
  4057. case RCC_SYSCLKSOURCE_STATUS_MSI: /* MSI used as system clock source */
  4058. default: /* MSI used as system clock */
  4059. {
  4060. msiclkrange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE ) >> RCC_ICSCR_MSIRANGE_Pos;
  4061. 80019e2: 4b09 ldr r3, [pc, #36] ; (8001a08 <HAL_RCC_GetSysClockFreq+0x184>)
  4062. 80019e4: 685b ldr r3, [r3, #4]
  4063. 80019e6: 0b5b lsrs r3, r3, #13
  4064. 80019e8: f003 0307 and.w r3, r3, #7
  4065. 80019ec: 603b str r3, [r7, #0]
  4066. sysclockfreq = (32768U * (1UL << (msiclkrange + 1U)));
  4067. 80019ee: 683b ldr r3, [r7, #0]
  4068. 80019f0: 3301 adds r3, #1
  4069. 80019f2: f44f 4200 mov.w r2, #32768 ; 0x8000
  4070. 80019f6: fa02 f303 lsl.w r3, r2, r3
  4071. 80019fa: 613b str r3, [r7, #16]
  4072. break;
  4073. 80019fc: bf00 nop
  4074. }
  4075. }
  4076. return sysclockfreq;
  4077. 80019fe: 693b ldr r3, [r7, #16]
  4078. }
  4079. 8001a00: 4618 mov r0, r3
  4080. 8001a02: 371c adds r7, #28
  4081. 8001a04: 46bd mov sp, r7
  4082. 8001a06: bdf0 pop {r4, r5, r6, r7, pc}
  4083. 8001a08: 40023800 .word 0x40023800
  4084. 8001a0c: 00f42400 .word 0x00f42400
  4085. 8001a10: 007a1200 .word 0x007a1200
  4086. 8001a14: 080025e4 .word 0x080025e4
  4087. 08001a18 <HAL_RCC_GetHCLKFreq>:
  4088. * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency
  4089. * and updated within this function
  4090. * @retval HCLK frequency
  4091. */
  4092. uint32_t HAL_RCC_GetHCLKFreq(void)
  4093. {
  4094. 8001a18: b480 push {r7}
  4095. 8001a1a: af00 add r7, sp, #0
  4096. return SystemCoreClock;
  4097. 8001a1c: 4b02 ldr r3, [pc, #8] ; (8001a28 <HAL_RCC_GetHCLKFreq+0x10>)
  4098. 8001a1e: 681b ldr r3, [r3, #0]
  4099. }
  4100. 8001a20: 4618 mov r0, r3
  4101. 8001a22: 46bd mov sp, r7
  4102. 8001a24: bc80 pop {r7}
  4103. 8001a26: 4770 bx lr
  4104. 8001a28: 20000000 .word 0x20000000
  4105. 08001a2c <HAL_RCC_GetPCLK1Freq>:
  4106. * @note Each time PCLK1 changes, this function must be called to update the
  4107. * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect.
  4108. * @retval PCLK1 frequency
  4109. */
  4110. uint32_t HAL_RCC_GetPCLK1Freq(void)
  4111. {
  4112. 8001a2c: b580 push {r7, lr}
  4113. 8001a2e: af00 add r7, sp, #0
  4114. /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
  4115. return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]);
  4116. 8001a30: f7ff fff2 bl 8001a18 <HAL_RCC_GetHCLKFreq>
  4117. 8001a34: 4601 mov r1, r0
  4118. 8001a36: 4b05 ldr r3, [pc, #20] ; (8001a4c <HAL_RCC_GetPCLK1Freq+0x20>)
  4119. 8001a38: 689b ldr r3, [r3, #8]
  4120. 8001a3a: 0a1b lsrs r3, r3, #8
  4121. 8001a3c: f003 0307 and.w r3, r3, #7
  4122. 8001a40: 4a03 ldr r2, [pc, #12] ; (8001a50 <HAL_RCC_GetPCLK1Freq+0x24>)
  4123. 8001a42: 5cd3 ldrb r3, [r2, r3]
  4124. 8001a44: fa21 f303 lsr.w r3, r1, r3
  4125. }
  4126. 8001a48: 4618 mov r0, r3
  4127. 8001a4a: bd80 pop {r7, pc}
  4128. 8001a4c: 40023800 .word 0x40023800
  4129. 8001a50: 08002600 .word 0x08002600
  4130. 08001a54 <HAL_RCC_GetPCLK2Freq>:
  4131. * @note Each time PCLK2 changes, this function must be called to update the
  4132. * right PCLK2 value. Otherwise, any configuration based on this function will be incorrect.
  4133. * @retval PCLK2 frequency
  4134. */
  4135. uint32_t HAL_RCC_GetPCLK2Freq(void)
  4136. {
  4137. 8001a54: b580 push {r7, lr}
  4138. 8001a56: af00 add r7, sp, #0
  4139. /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
  4140. return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]);
  4141. 8001a58: f7ff ffde bl 8001a18 <HAL_RCC_GetHCLKFreq>
  4142. 8001a5c: 4601 mov r1, r0
  4143. 8001a5e: 4b05 ldr r3, [pc, #20] ; (8001a74 <HAL_RCC_GetPCLK2Freq+0x20>)
  4144. 8001a60: 689b ldr r3, [r3, #8]
  4145. 8001a62: 0adb lsrs r3, r3, #11
  4146. 8001a64: f003 0307 and.w r3, r3, #7
  4147. 8001a68: 4a03 ldr r2, [pc, #12] ; (8001a78 <HAL_RCC_GetPCLK2Freq+0x24>)
  4148. 8001a6a: 5cd3 ldrb r3, [r2, r3]
  4149. 8001a6c: fa21 f303 lsr.w r3, r1, r3
  4150. }
  4151. 8001a70: 4618 mov r0, r3
  4152. 8001a72: bd80 pop {r7, pc}
  4153. 8001a74: 40023800 .word 0x40023800
  4154. 8001a78: 08002600 .word 0x08002600
  4155. 08001a7c <RCC_SetFlashLatencyFromMSIRange>:
  4156. voltage range
  4157. * @param MSIrange MSI range value from RCC_MSIRANGE_0 to RCC_MSIRANGE_6
  4158. * @retval HAL status
  4159. */
  4160. static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSIrange)
  4161. {
  4162. 8001a7c: b480 push {r7}
  4163. 8001a7e: b087 sub sp, #28
  4164. 8001a80: af00 add r7, sp, #0
  4165. 8001a82: 6078 str r0, [r7, #4]
  4166. uint32_t vos;
  4167. uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */
  4168. 8001a84: 2300 movs r3, #0
  4169. 8001a86: 613b str r3, [r7, #16]
  4170. /* HCLK can reach 4 MHz only if AHB prescaler = 1 */
  4171. if (READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1)
  4172. 8001a88: 4b29 ldr r3, [pc, #164] ; (8001b30 <RCC_SetFlashLatencyFromMSIRange+0xb4>)
  4173. 8001a8a: 689b ldr r3, [r3, #8]
  4174. 8001a8c: f003 03f0 and.w r3, r3, #240 ; 0xf0
  4175. 8001a90: 2b00 cmp r3, #0
  4176. 8001a92: d12c bne.n 8001aee <RCC_SetFlashLatencyFromMSIRange+0x72>
  4177. {
  4178. if(__HAL_RCC_PWR_IS_CLK_ENABLED())
  4179. 8001a94: 4b26 ldr r3, [pc, #152] ; (8001b30 <RCC_SetFlashLatencyFromMSIRange+0xb4>)
  4180. 8001a96: 6a5b ldr r3, [r3, #36] ; 0x24
  4181. 8001a98: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  4182. 8001a9c: 2b00 cmp r3, #0
  4183. 8001a9e: d005 beq.n 8001aac <RCC_SetFlashLatencyFromMSIRange+0x30>
  4184. {
  4185. vos = READ_BIT(PWR->CR, PWR_CR_VOS);
  4186. 8001aa0: 4b24 ldr r3, [pc, #144] ; (8001b34 <RCC_SetFlashLatencyFromMSIRange+0xb8>)
  4187. 8001aa2: 681b ldr r3, [r3, #0]
  4188. 8001aa4: f403 53c0 and.w r3, r3, #6144 ; 0x1800
  4189. 8001aa8: 617b str r3, [r7, #20]
  4190. 8001aaa: e016 b.n 8001ada <RCC_SetFlashLatencyFromMSIRange+0x5e>
  4191. }
  4192. else
  4193. {
  4194. __HAL_RCC_PWR_CLK_ENABLE();
  4195. 8001aac: 4b20 ldr r3, [pc, #128] ; (8001b30 <RCC_SetFlashLatencyFromMSIRange+0xb4>)
  4196. 8001aae: 6a5b ldr r3, [r3, #36] ; 0x24
  4197. 8001ab0: 4a1f ldr r2, [pc, #124] ; (8001b30 <RCC_SetFlashLatencyFromMSIRange+0xb4>)
  4198. 8001ab2: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
  4199. 8001ab6: 6253 str r3, [r2, #36] ; 0x24
  4200. 8001ab8: 4b1d ldr r3, [pc, #116] ; (8001b30 <RCC_SetFlashLatencyFromMSIRange+0xb4>)
  4201. 8001aba: 6a5b ldr r3, [r3, #36] ; 0x24
  4202. 8001abc: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  4203. 8001ac0: 60fb str r3, [r7, #12]
  4204. 8001ac2: 68fb ldr r3, [r7, #12]
  4205. vos = READ_BIT(PWR->CR, PWR_CR_VOS);
  4206. 8001ac4: 4b1b ldr r3, [pc, #108] ; (8001b34 <RCC_SetFlashLatencyFromMSIRange+0xb8>)
  4207. 8001ac6: 681b ldr r3, [r3, #0]
  4208. 8001ac8: f403 53c0 and.w r3, r3, #6144 ; 0x1800
  4209. 8001acc: 617b str r3, [r7, #20]
  4210. __HAL_RCC_PWR_CLK_DISABLE();
  4211. 8001ace: 4b18 ldr r3, [pc, #96] ; (8001b30 <RCC_SetFlashLatencyFromMSIRange+0xb4>)
  4212. 8001ad0: 6a5b ldr r3, [r3, #36] ; 0x24
  4213. 8001ad2: 4a17 ldr r2, [pc, #92] ; (8001b30 <RCC_SetFlashLatencyFromMSIRange+0xb4>)
  4214. 8001ad4: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
  4215. 8001ad8: 6253 str r3, [r2, #36] ; 0x24
  4216. }
  4217. /* Check if need to set latency 1 only for Range 3 & HCLK = 4MHz */
  4218. if((vos == PWR_REGULATOR_VOLTAGE_SCALE3) && (MSIrange == RCC_MSIRANGE_6))
  4219. 8001ada: 697b ldr r3, [r7, #20]
  4220. 8001adc: f5b3 5fc0 cmp.w r3, #6144 ; 0x1800
  4221. 8001ae0: d105 bne.n 8001aee <RCC_SetFlashLatencyFromMSIRange+0x72>
  4222. 8001ae2: 687b ldr r3, [r7, #4]
  4223. 8001ae4: f5b3 4f40 cmp.w r3, #49152 ; 0xc000
  4224. 8001ae8: d101 bne.n 8001aee <RCC_SetFlashLatencyFromMSIRange+0x72>
  4225. {
  4226. latency = FLASH_LATENCY_1; /* 1WS */
  4227. 8001aea: 2301 movs r3, #1
  4228. 8001aec: 613b str r3, [r7, #16]
  4229. }
  4230. }
  4231. __HAL_FLASH_SET_LATENCY(latency);
  4232. 8001aee: 693b ldr r3, [r7, #16]
  4233. 8001af0: 2b01 cmp r3, #1
  4234. 8001af2: d105 bne.n 8001b00 <RCC_SetFlashLatencyFromMSIRange+0x84>
  4235. 8001af4: 4b10 ldr r3, [pc, #64] ; (8001b38 <RCC_SetFlashLatencyFromMSIRange+0xbc>)
  4236. 8001af6: 681b ldr r3, [r3, #0]
  4237. 8001af8: 4a0f ldr r2, [pc, #60] ; (8001b38 <RCC_SetFlashLatencyFromMSIRange+0xbc>)
  4238. 8001afa: f043 0304 orr.w r3, r3, #4
  4239. 8001afe: 6013 str r3, [r2, #0]
  4240. 8001b00: 4b0d ldr r3, [pc, #52] ; (8001b38 <RCC_SetFlashLatencyFromMSIRange+0xbc>)
  4241. 8001b02: 681b ldr r3, [r3, #0]
  4242. 8001b04: f023 0201 bic.w r2, r3, #1
  4243. 8001b08: 490b ldr r1, [pc, #44] ; (8001b38 <RCC_SetFlashLatencyFromMSIRange+0xbc>)
  4244. 8001b0a: 693b ldr r3, [r7, #16]
  4245. 8001b0c: 4313 orrs r3, r2
  4246. 8001b0e: 600b str r3, [r1, #0]
  4247. /* Check that the new number of wait states is taken into account to access the Flash
  4248. memory by reading the FLASH_ACR register */
  4249. if(__HAL_FLASH_GET_LATENCY() != latency)
  4250. 8001b10: 4b09 ldr r3, [pc, #36] ; (8001b38 <RCC_SetFlashLatencyFromMSIRange+0xbc>)
  4251. 8001b12: 681b ldr r3, [r3, #0]
  4252. 8001b14: f003 0301 and.w r3, r3, #1
  4253. 8001b18: 693a ldr r2, [r7, #16]
  4254. 8001b1a: 429a cmp r2, r3
  4255. 8001b1c: d001 beq.n 8001b22 <RCC_SetFlashLatencyFromMSIRange+0xa6>
  4256. {
  4257. return HAL_ERROR;
  4258. 8001b1e: 2301 movs r3, #1
  4259. 8001b20: e000 b.n 8001b24 <RCC_SetFlashLatencyFromMSIRange+0xa8>
  4260. }
  4261. return HAL_OK;
  4262. 8001b22: 2300 movs r3, #0
  4263. }
  4264. 8001b24: 4618 mov r0, r3
  4265. 8001b26: 371c adds r7, #28
  4266. 8001b28: 46bd mov sp, r7
  4267. 8001b2a: bc80 pop {r7}
  4268. 8001b2c: 4770 bx lr
  4269. 8001b2e: bf00 nop
  4270. 8001b30: 40023800 .word 0x40023800
  4271. 8001b34: 40007000 .word 0x40007000
  4272. 8001b38: 40023c00 .word 0x40023c00
  4273. 08001b3c <HAL_RCCEx_PeriphCLKConfig>:
  4274. * @retval HAL status
  4275. * @note If HAL_ERROR returned, first switch-OFF HSE clock oscillator with @ref HAL_RCC_OscConfig()
  4276. * to possibly update HSE divider.
  4277. */
  4278. HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
  4279. {
  4280. 8001b3c: b580 push {r7, lr}
  4281. 8001b3e: b086 sub sp, #24
  4282. 8001b40: af00 add r7, sp, #0
  4283. 8001b42: 6078 str r0, [r7, #4]
  4284. /* Check the parameters */
  4285. assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection));
  4286. /*------------------------------- RTC/LCD Configuration ------------------------*/
  4287. if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)
  4288. 8001b44: 687b ldr r3, [r7, #4]
  4289. 8001b46: 681b ldr r3, [r3, #0]
  4290. 8001b48: f003 0301 and.w r3, r3, #1
  4291. 8001b4c: 2b00 cmp r3, #0
  4292. 8001b4e: d106 bne.n 8001b5e <HAL_RCCEx_PeriphCLKConfig+0x22>
  4293. #if defined(LCD)
  4294. || (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LCD) == RCC_PERIPHCLK_LCD)
  4295. 8001b50: 687b ldr r3, [r7, #4]
  4296. 8001b52: 681b ldr r3, [r3, #0]
  4297. 8001b54: f003 0302 and.w r3, r3, #2
  4298. 8001b58: 2b00 cmp r3, #0
  4299. 8001b5a: f000 80c6 beq.w 8001cea <HAL_RCCEx_PeriphCLKConfig+0x1ae>
  4300. {
  4301. assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->LCDClockSelection));
  4302. }
  4303. #endif /* LCD */
  4304. FlagStatus pwrclkchanged = RESET;
  4305. 8001b5e: 2300 movs r3, #0
  4306. 8001b60: 75fb strb r3, [r7, #23]
  4307. /* As soon as function is called to change RTC clock source, activation of the
  4308. power domain is done. */
  4309. /* Requires to enable write access to Backup Domain of necessary */
  4310. if(__HAL_RCC_PWR_IS_CLK_DISABLED())
  4311. 8001b62: 4b64 ldr r3, [pc, #400] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4312. 8001b64: 6a5b ldr r3, [r3, #36] ; 0x24
  4313. 8001b66: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  4314. 8001b6a: 2b00 cmp r3, #0
  4315. 8001b6c: d10d bne.n 8001b8a <HAL_RCCEx_PeriphCLKConfig+0x4e>
  4316. {
  4317. __HAL_RCC_PWR_CLK_ENABLE();
  4318. 8001b6e: 4b61 ldr r3, [pc, #388] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4319. 8001b70: 6a5b ldr r3, [r3, #36] ; 0x24
  4320. 8001b72: 4a60 ldr r2, [pc, #384] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4321. 8001b74: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
  4322. 8001b78: 6253 str r3, [r2, #36] ; 0x24
  4323. 8001b7a: 4b5e ldr r3, [pc, #376] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4324. 8001b7c: 6a5b ldr r3, [r3, #36] ; 0x24
  4325. 8001b7e: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  4326. 8001b82: 60bb str r3, [r7, #8]
  4327. 8001b84: 68bb ldr r3, [r7, #8]
  4328. pwrclkchanged = SET;
  4329. 8001b86: 2301 movs r3, #1
  4330. 8001b88: 75fb strb r3, [r7, #23]
  4331. }
  4332. if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  4333. 8001b8a: 4b5b ldr r3, [pc, #364] ; (8001cf8 <HAL_RCCEx_PeriphCLKConfig+0x1bc>)
  4334. 8001b8c: 681b ldr r3, [r3, #0]
  4335. 8001b8e: f403 7380 and.w r3, r3, #256 ; 0x100
  4336. 8001b92: 2b00 cmp r3, #0
  4337. 8001b94: d118 bne.n 8001bc8 <HAL_RCCEx_PeriphCLKConfig+0x8c>
  4338. {
  4339. /* Enable write access to Backup domain */
  4340. SET_BIT(PWR->CR, PWR_CR_DBP);
  4341. 8001b96: 4b58 ldr r3, [pc, #352] ; (8001cf8 <HAL_RCCEx_PeriphCLKConfig+0x1bc>)
  4342. 8001b98: 681b ldr r3, [r3, #0]
  4343. 8001b9a: 4a57 ldr r2, [pc, #348] ; (8001cf8 <HAL_RCCEx_PeriphCLKConfig+0x1bc>)
  4344. 8001b9c: f443 7380 orr.w r3, r3, #256 ; 0x100
  4345. 8001ba0: 6013 str r3, [r2, #0]
  4346. /* Wait for Backup domain Write protection disable */
  4347. tickstart = HAL_GetTick();
  4348. 8001ba2: f7fe ff55 bl 8000a50 <HAL_GetTick>
  4349. 8001ba6: 6138 str r0, [r7, #16]
  4350. while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  4351. 8001ba8: e008 b.n 8001bbc <HAL_RCCEx_PeriphCLKConfig+0x80>
  4352. {
  4353. if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
  4354. 8001baa: f7fe ff51 bl 8000a50 <HAL_GetTick>
  4355. 8001bae: 4602 mov r2, r0
  4356. 8001bb0: 693b ldr r3, [r7, #16]
  4357. 8001bb2: 1ad3 subs r3, r2, r3
  4358. 8001bb4: 2b64 cmp r3, #100 ; 0x64
  4359. 8001bb6: d901 bls.n 8001bbc <HAL_RCCEx_PeriphCLKConfig+0x80>
  4360. {
  4361. return HAL_TIMEOUT;
  4362. 8001bb8: 2303 movs r3, #3
  4363. 8001bba: e097 b.n 8001cec <HAL_RCCEx_PeriphCLKConfig+0x1b0>
  4364. while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  4365. 8001bbc: 4b4e ldr r3, [pc, #312] ; (8001cf8 <HAL_RCCEx_PeriphCLKConfig+0x1bc>)
  4366. 8001bbe: 681b ldr r3, [r3, #0]
  4367. 8001bc0: f403 7380 and.w r3, r3, #256 ; 0x100
  4368. 8001bc4: 2b00 cmp r3, #0
  4369. 8001bc6: d0f0 beq.n 8001baa <HAL_RCCEx_PeriphCLKConfig+0x6e>
  4370. }
  4371. }
  4372. }
  4373. /* Check if user wants to change HSE RTC prescaler whereas HSE is enabled */
  4374. temp_reg = (RCC->CR & RCC_CR_RTCPRE);
  4375. 8001bc8: 4b4a ldr r3, [pc, #296] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4376. 8001bca: 681b ldr r3, [r3, #0]
  4377. 8001bcc: f003 43c0 and.w r3, r3, #1610612736 ; 0x60000000
  4378. 8001bd0: 60fb str r3, [r7, #12]
  4379. if ((temp_reg != (PeriphClkInit->RTCClockSelection & RCC_CR_RTCPRE))
  4380. 8001bd2: 687b ldr r3, [r7, #4]
  4381. 8001bd4: 685b ldr r3, [r3, #4]
  4382. 8001bd6: f003 43c0 and.w r3, r3, #1610612736 ; 0x60000000
  4383. 8001bda: 68fa ldr r2, [r7, #12]
  4384. 8001bdc: 429a cmp r2, r3
  4385. 8001bde: d106 bne.n 8001bee <HAL_RCCEx_PeriphCLKConfig+0xb2>
  4386. #if defined (LCD)
  4387. || (temp_reg != (PeriphClkInit->LCDClockSelection & RCC_CR_RTCPRE))
  4388. 8001be0: 687b ldr r3, [r7, #4]
  4389. 8001be2: 689b ldr r3, [r3, #8]
  4390. 8001be4: f003 43c0 and.w r3, r3, #1610612736 ; 0x60000000
  4391. 8001be8: 68fa ldr r2, [r7, #12]
  4392. 8001bea: 429a cmp r2, r3
  4393. 8001bec: d00f beq.n 8001c0e <HAL_RCCEx_PeriphCLKConfig+0xd2>
  4394. #endif /* LCD */
  4395. )
  4396. { /* Check HSE State */
  4397. if ((PeriphClkInit->RTCClockSelection & RCC_CSR_RTCSEL) == RCC_CSR_RTCSEL_HSE)
  4398. 8001bee: 687b ldr r3, [r7, #4]
  4399. 8001bf0: 685b ldr r3, [r3, #4]
  4400. 8001bf2: f403 3340 and.w r3, r3, #196608 ; 0x30000
  4401. 8001bf6: f5b3 3f40 cmp.w r3, #196608 ; 0x30000
  4402. 8001bfa: d108 bne.n 8001c0e <HAL_RCCEx_PeriphCLKConfig+0xd2>
  4403. {
  4404. if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY))
  4405. 8001bfc: 4b3d ldr r3, [pc, #244] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4406. 8001bfe: 681b ldr r3, [r3, #0]
  4407. 8001c00: f403 3300 and.w r3, r3, #131072 ; 0x20000
  4408. 8001c04: f5b3 3f00 cmp.w r3, #131072 ; 0x20000
  4409. 8001c08: d101 bne.n 8001c0e <HAL_RCCEx_PeriphCLKConfig+0xd2>
  4410. {
  4411. /* To update HSE divider, first switch-OFF HSE clock oscillator*/
  4412. return HAL_ERROR;
  4413. 8001c0a: 2301 movs r3, #1
  4414. 8001c0c: e06e b.n 8001cec <HAL_RCCEx_PeriphCLKConfig+0x1b0>
  4415. }
  4416. }
  4417. }
  4418. /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */
  4419. temp_reg = (RCC->CSR & RCC_CSR_RTCSEL);
  4420. 8001c0e: 4b39 ldr r3, [pc, #228] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4421. 8001c10: 6b5b ldr r3, [r3, #52] ; 0x34
  4422. 8001c12: f403 3340 and.w r3, r3, #196608 ; 0x30000
  4423. 8001c16: 60fb str r3, [r7, #12]
  4424. if((temp_reg != 0x00000000U) && (((temp_reg != (PeriphClkInit->RTCClockSelection & RCC_CSR_RTCSEL)) \
  4425. 8001c18: 68fb ldr r3, [r7, #12]
  4426. 8001c1a: 2b00 cmp r3, #0
  4427. 8001c1c: d041 beq.n 8001ca2 <HAL_RCCEx_PeriphCLKConfig+0x166>
  4428. 8001c1e: 687b ldr r3, [r7, #4]
  4429. 8001c20: 685b ldr r3, [r3, #4]
  4430. 8001c22: f403 3340 and.w r3, r3, #196608 ; 0x30000
  4431. 8001c26: 68fa ldr r2, [r7, #12]
  4432. 8001c28: 429a cmp r2, r3
  4433. 8001c2a: d005 beq.n 8001c38 <HAL_RCCEx_PeriphCLKConfig+0xfc>
  4434. && (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC))
  4435. 8001c2c: 687b ldr r3, [r7, #4]
  4436. 8001c2e: 681b ldr r3, [r3, #0]
  4437. 8001c30: f003 0301 and.w r3, r3, #1
  4438. 8001c34: 2b00 cmp r3, #0
  4439. 8001c36: d10c bne.n 8001c52 <HAL_RCCEx_PeriphCLKConfig+0x116>
  4440. #if defined(LCD)
  4441. || ((temp_reg != (PeriphClkInit->LCDClockSelection & RCC_CSR_RTCSEL)) \
  4442. 8001c38: 687b ldr r3, [r7, #4]
  4443. 8001c3a: 689b ldr r3, [r3, #8]
  4444. 8001c3c: f403 3340 and.w r3, r3, #196608 ; 0x30000
  4445. 8001c40: 68fa ldr r2, [r7, #12]
  4446. 8001c42: 429a cmp r2, r3
  4447. 8001c44: d02d beq.n 8001ca2 <HAL_RCCEx_PeriphCLKConfig+0x166>
  4448. && (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LCD) == RCC_PERIPHCLK_LCD))
  4449. 8001c46: 687b ldr r3, [r7, #4]
  4450. 8001c48: 681b ldr r3, [r3, #0]
  4451. 8001c4a: f003 0302 and.w r3, r3, #2
  4452. 8001c4e: 2b00 cmp r3, #0
  4453. 8001c50: d027 beq.n 8001ca2 <HAL_RCCEx_PeriphCLKConfig+0x166>
  4454. #endif /* LCD */
  4455. ))
  4456. {
  4457. /* Store the content of CSR register before the reset of Backup Domain */
  4458. temp_reg = (RCC->CSR & ~(RCC_CSR_RTCSEL));
  4459. 8001c52: 4b28 ldr r3, [pc, #160] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4460. 8001c54: 6b5b ldr r3, [r3, #52] ; 0x34
  4461. 8001c56: f423 3340 bic.w r3, r3, #196608 ; 0x30000
  4462. 8001c5a: 60fb str r3, [r7, #12]
  4463. /* RTC Clock selection can be changed only if the Backup Domain is reset */
  4464. __HAL_RCC_BACKUPRESET_FORCE();
  4465. 8001c5c: 4b27 ldr r3, [pc, #156] ; (8001cfc <HAL_RCCEx_PeriphCLKConfig+0x1c0>)
  4466. 8001c5e: 2201 movs r2, #1
  4467. 8001c60: 601a str r2, [r3, #0]
  4468. __HAL_RCC_BACKUPRESET_RELEASE();
  4469. 8001c62: 4b26 ldr r3, [pc, #152] ; (8001cfc <HAL_RCCEx_PeriphCLKConfig+0x1c0>)
  4470. 8001c64: 2200 movs r2, #0
  4471. 8001c66: 601a str r2, [r3, #0]
  4472. /* Restore the Content of CSR register */
  4473. RCC->CSR = temp_reg;
  4474. 8001c68: 4a22 ldr r2, [pc, #136] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4475. 8001c6a: 68fb ldr r3, [r7, #12]
  4476. 8001c6c: 6353 str r3, [r2, #52] ; 0x34
  4477. /* Wait for LSERDY if LSE was enabled */
  4478. if (HAL_IS_BIT_SET(temp_reg, RCC_CSR_LSEON))
  4479. 8001c6e: 68fb ldr r3, [r7, #12]
  4480. 8001c70: f403 7380 and.w r3, r3, #256 ; 0x100
  4481. 8001c74: 2b00 cmp r3, #0
  4482. 8001c76: d014 beq.n 8001ca2 <HAL_RCCEx_PeriphCLKConfig+0x166>
  4483. {
  4484. /* Get Start Tick */
  4485. tickstart = HAL_GetTick();
  4486. 8001c78: f7fe feea bl 8000a50 <HAL_GetTick>
  4487. 8001c7c: 6138 str r0, [r7, #16]
  4488. /* Wait till LSE is ready */
  4489. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U)
  4490. 8001c7e: e00a b.n 8001c96 <HAL_RCCEx_PeriphCLKConfig+0x15a>
  4491. {
  4492. if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
  4493. 8001c80: f7fe fee6 bl 8000a50 <HAL_GetTick>
  4494. 8001c84: 4602 mov r2, r0
  4495. 8001c86: 693b ldr r3, [r7, #16]
  4496. 8001c88: 1ad3 subs r3, r2, r3
  4497. 8001c8a: f241 3288 movw r2, #5000 ; 0x1388
  4498. 8001c8e: 4293 cmp r3, r2
  4499. 8001c90: d901 bls.n 8001c96 <HAL_RCCEx_PeriphCLKConfig+0x15a>
  4500. {
  4501. return HAL_TIMEOUT;
  4502. 8001c92: 2303 movs r3, #3
  4503. 8001c94: e02a b.n 8001cec <HAL_RCCEx_PeriphCLKConfig+0x1b0>
  4504. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U)
  4505. 8001c96: 4b17 ldr r3, [pc, #92] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4506. 8001c98: 6b5b ldr r3, [r3, #52] ; 0x34
  4507. 8001c9a: f403 7300 and.w r3, r3, #512 ; 0x200
  4508. 8001c9e: 2b00 cmp r3, #0
  4509. 8001ca0: d0ee beq.n 8001c80 <HAL_RCCEx_PeriphCLKConfig+0x144>
  4510. }
  4511. }
  4512. }
  4513. }
  4514. __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);
  4515. 8001ca2: 687b ldr r3, [r7, #4]
  4516. 8001ca4: 685b ldr r3, [r3, #4]
  4517. 8001ca6: f403 3340 and.w r3, r3, #196608 ; 0x30000
  4518. 8001caa: f5b3 3f40 cmp.w r3, #196608 ; 0x30000
  4519. 8001cae: d10a bne.n 8001cc6 <HAL_RCCEx_PeriphCLKConfig+0x18a>
  4520. 8001cb0: 4b10 ldr r3, [pc, #64] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4521. 8001cb2: 681b ldr r3, [r3, #0]
  4522. 8001cb4: f023 42c0 bic.w r2, r3, #1610612736 ; 0x60000000
  4523. 8001cb8: 687b ldr r3, [r7, #4]
  4524. 8001cba: 685b ldr r3, [r3, #4]
  4525. 8001cbc: f003 43c0 and.w r3, r3, #1610612736 ; 0x60000000
  4526. 8001cc0: 490c ldr r1, [pc, #48] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4527. 8001cc2: 4313 orrs r3, r2
  4528. 8001cc4: 600b str r3, [r1, #0]
  4529. 8001cc6: 4b0b ldr r3, [pc, #44] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4530. 8001cc8: 6b5a ldr r2, [r3, #52] ; 0x34
  4531. 8001cca: 687b ldr r3, [r7, #4]
  4532. 8001ccc: 685b ldr r3, [r3, #4]
  4533. 8001cce: f403 3340 and.w r3, r3, #196608 ; 0x30000
  4534. 8001cd2: 4908 ldr r1, [pc, #32] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4535. 8001cd4: 4313 orrs r3, r2
  4536. 8001cd6: 634b str r3, [r1, #52] ; 0x34
  4537. /* Require to disable power clock if necessary */
  4538. if(pwrclkchanged == SET)
  4539. 8001cd8: 7dfb ldrb r3, [r7, #23]
  4540. 8001cda: 2b01 cmp r3, #1
  4541. 8001cdc: d105 bne.n 8001cea <HAL_RCCEx_PeriphCLKConfig+0x1ae>
  4542. {
  4543. __HAL_RCC_PWR_CLK_DISABLE();
  4544. 8001cde: 4b05 ldr r3, [pc, #20] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4545. 8001ce0: 6a5b ldr r3, [r3, #36] ; 0x24
  4546. 8001ce2: 4a04 ldr r2, [pc, #16] ; (8001cf4 <HAL_RCCEx_PeriphCLKConfig+0x1b8>)
  4547. 8001ce4: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
  4548. 8001ce8: 6253 str r3, [r2, #36] ; 0x24
  4549. }
  4550. }
  4551. return HAL_OK;
  4552. 8001cea: 2300 movs r3, #0
  4553. }
  4554. 8001cec: 4618 mov r0, r3
  4555. 8001cee: 3718 adds r7, #24
  4556. 8001cf0: 46bd mov sp, r7
  4557. 8001cf2: bd80 pop {r7, pc}
  4558. 8001cf4: 40023800 .word 0x40023800
  4559. 8001cf8: 40007000 .word 0x40007000
  4560. 8001cfc: 424706dc .word 0x424706dc
  4561. 08001d00 <HAL_RTC_Init>:
  4562. * @brief Initialize the RTC peripheral
  4563. * @param hrtc RTC handle
  4564. * @retval HAL status
  4565. */
  4566. HAL_StatusTypeDef HAL_RTC_Init(RTC_HandleTypeDef *hrtc)
  4567. {
  4568. 8001d00: b580 push {r7, lr}
  4569. 8001d02: b082 sub sp, #8
  4570. 8001d04: af00 add r7, sp, #0
  4571. 8001d06: 6078 str r0, [r7, #4]
  4572. /* Check the RTC peripheral state */
  4573. if (hrtc == NULL)
  4574. 8001d08: 687b ldr r3, [r7, #4]
  4575. 8001d0a: 2b00 cmp r3, #0
  4576. 8001d0c: d101 bne.n 8001d12 <HAL_RTC_Init+0x12>
  4577. {
  4578. return HAL_ERROR;
  4579. 8001d0e: 2301 movs r3, #1
  4580. 8001d10: e06d b.n 8001dee <HAL_RTC_Init+0xee>
  4581. {
  4582. hrtc->MspDeInitCallback = HAL_RTC_MspDeInit;
  4583. }
  4584. }
  4585. #else
  4586. if (hrtc->State == HAL_RTC_STATE_RESET)
  4587. 8001d12: 687b ldr r3, [r7, #4]
  4588. 8001d14: 7f5b ldrb r3, [r3, #29]
  4589. 8001d16: b2db uxtb r3, r3
  4590. 8001d18: 2b00 cmp r3, #0
  4591. 8001d1a: d105 bne.n 8001d28 <HAL_RTC_Init+0x28>
  4592. {
  4593. /* Allocate lock resource and initialize it */
  4594. hrtc->Lock = HAL_UNLOCKED;
  4595. 8001d1c: 687b ldr r3, [r7, #4]
  4596. 8001d1e: 2200 movs r2, #0
  4597. 8001d20: 771a strb r2, [r3, #28]
  4598. /* Initialize RTC MSP */
  4599. HAL_RTC_MspInit(hrtc);
  4600. 8001d22: 6878 ldr r0, [r7, #4]
  4601. 8001d24: f7fe fd7a bl 800081c <HAL_RTC_MspInit>
  4602. }
  4603. #endif /* (USE_HAL_RTC_REGISTER_CALLBACKS) */
  4604. /* Set RTC state */
  4605. hrtc->State = HAL_RTC_STATE_BUSY;
  4606. 8001d28: 687b ldr r3, [r7, #4]
  4607. 8001d2a: 2202 movs r2, #2
  4608. 8001d2c: 775a strb r2, [r3, #29]
  4609. /* Disable the write protection for RTC registers */
  4610. __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
  4611. 8001d2e: 687b ldr r3, [r7, #4]
  4612. 8001d30: 681b ldr r3, [r3, #0]
  4613. 8001d32: 22ca movs r2, #202 ; 0xca
  4614. 8001d34: 625a str r2, [r3, #36] ; 0x24
  4615. 8001d36: 687b ldr r3, [r7, #4]
  4616. 8001d38: 681b ldr r3, [r3, #0]
  4617. 8001d3a: 2253 movs r2, #83 ; 0x53
  4618. 8001d3c: 625a str r2, [r3, #36] ; 0x24
  4619. /* Set Initialization mode */
  4620. if (RTC_EnterInitMode(hrtc) != HAL_OK)
  4621. 8001d3e: 6878 ldr r0, [r7, #4]
  4622. 8001d40: f000 fa82 bl 8002248 <RTC_EnterInitMode>
  4623. 8001d44: 4603 mov r3, r0
  4624. 8001d46: 2b00 cmp r3, #0
  4625. 8001d48: d008 beq.n 8001d5c <HAL_RTC_Init+0x5c>
  4626. {
  4627. /* Enable the write protection for RTC registers */
  4628. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  4629. 8001d4a: 687b ldr r3, [r7, #4]
  4630. 8001d4c: 681b ldr r3, [r3, #0]
  4631. 8001d4e: 22ff movs r2, #255 ; 0xff
  4632. 8001d50: 625a str r2, [r3, #36] ; 0x24
  4633. /* Set RTC state */
  4634. hrtc->State = HAL_RTC_STATE_ERROR;
  4635. 8001d52: 687b ldr r3, [r7, #4]
  4636. 8001d54: 2204 movs r2, #4
  4637. 8001d56: 775a strb r2, [r3, #29]
  4638. return HAL_ERROR;
  4639. 8001d58: 2301 movs r3, #1
  4640. 8001d5a: e048 b.n 8001dee <HAL_RTC_Init+0xee>
  4641. }
  4642. else
  4643. {
  4644. /* Clear RTC_CR FMT, OSEL and POL Bits */
  4645. hrtc->Instance->CR &= ((uint32_t)~(RTC_CR_FMT | RTC_CR_OSEL | RTC_CR_POL));
  4646. 8001d5c: 687b ldr r3, [r7, #4]
  4647. 8001d5e: 681b ldr r3, [r3, #0]
  4648. 8001d60: 689b ldr r3, [r3, #8]
  4649. 8001d62: 687a ldr r2, [r7, #4]
  4650. 8001d64: 6812 ldr r2, [r2, #0]
  4651. 8001d66: f423 03e0 bic.w r3, r3, #7340032 ; 0x700000
  4652. 8001d6a: f023 0340 bic.w r3, r3, #64 ; 0x40
  4653. 8001d6e: 6093 str r3, [r2, #8]
  4654. /* Set RTC_CR register */
  4655. hrtc->Instance->CR |= (uint32_t)(hrtc->Init.HourFormat | hrtc->Init.OutPut | hrtc->Init.OutPutPolarity);
  4656. 8001d70: 687b ldr r3, [r7, #4]
  4657. 8001d72: 681b ldr r3, [r3, #0]
  4658. 8001d74: 6899 ldr r1, [r3, #8]
  4659. 8001d76: 687b ldr r3, [r7, #4]
  4660. 8001d78: 685a ldr r2, [r3, #4]
  4661. 8001d7a: 687b ldr r3, [r7, #4]
  4662. 8001d7c: 691b ldr r3, [r3, #16]
  4663. 8001d7e: 431a orrs r2, r3
  4664. 8001d80: 687b ldr r3, [r7, #4]
  4665. 8001d82: 695b ldr r3, [r3, #20]
  4666. 8001d84: 431a orrs r2, r3
  4667. 8001d86: 687b ldr r3, [r7, #4]
  4668. 8001d88: 681b ldr r3, [r3, #0]
  4669. 8001d8a: 430a orrs r2, r1
  4670. 8001d8c: 609a str r2, [r3, #8]
  4671. /* Configure the RTC PRER */
  4672. hrtc->Instance->PRER = (uint32_t)(hrtc->Init.SynchPrediv);
  4673. 8001d8e: 687b ldr r3, [r7, #4]
  4674. 8001d90: 681b ldr r3, [r3, #0]
  4675. 8001d92: 687a ldr r2, [r7, #4]
  4676. 8001d94: 68d2 ldr r2, [r2, #12]
  4677. 8001d96: 611a str r2, [r3, #16]
  4678. hrtc->Instance->PRER |= (uint32_t)(hrtc->Init.AsynchPrediv << 16U);
  4679. 8001d98: 687b ldr r3, [r7, #4]
  4680. 8001d9a: 681b ldr r3, [r3, #0]
  4681. 8001d9c: 6919 ldr r1, [r3, #16]
  4682. 8001d9e: 687b ldr r3, [r7, #4]
  4683. 8001da0: 689b ldr r3, [r3, #8]
  4684. 8001da2: 041a lsls r2, r3, #16
  4685. 8001da4: 687b ldr r3, [r7, #4]
  4686. 8001da6: 681b ldr r3, [r3, #0]
  4687. 8001da8: 430a orrs r2, r1
  4688. 8001daa: 611a str r2, [r3, #16]
  4689. /* Exit Initialization mode */
  4690. hrtc->Instance->ISR &= (uint32_t)~RTC_ISR_INIT;
  4691. 8001dac: 687b ldr r3, [r7, #4]
  4692. 8001dae: 681b ldr r3, [r3, #0]
  4693. 8001db0: 68da ldr r2, [r3, #12]
  4694. 8001db2: 687b ldr r3, [r7, #4]
  4695. 8001db4: 681b ldr r3, [r3, #0]
  4696. 8001db6: f022 0280 bic.w r2, r2, #128 ; 0x80
  4697. 8001dba: 60da str r2, [r3, #12]
  4698. hrtc->Instance->TAFCR &= (uint32_t)~RTC_TAFCR_ALARMOUTTYPE;
  4699. 8001dbc: 687b ldr r3, [r7, #4]
  4700. 8001dbe: 681b ldr r3, [r3, #0]
  4701. 8001dc0: 6c1a ldr r2, [r3, #64] ; 0x40
  4702. 8001dc2: 687b ldr r3, [r7, #4]
  4703. 8001dc4: 681b ldr r3, [r3, #0]
  4704. 8001dc6: f422 2280 bic.w r2, r2, #262144 ; 0x40000
  4705. 8001dca: 641a str r2, [r3, #64] ; 0x40
  4706. hrtc->Instance->TAFCR |= (uint32_t)(hrtc->Init.OutPutType);
  4707. 8001dcc: 687b ldr r3, [r7, #4]
  4708. 8001dce: 681b ldr r3, [r3, #0]
  4709. 8001dd0: 6c19 ldr r1, [r3, #64] ; 0x40
  4710. 8001dd2: 687b ldr r3, [r7, #4]
  4711. 8001dd4: 699a ldr r2, [r3, #24]
  4712. 8001dd6: 687b ldr r3, [r7, #4]
  4713. 8001dd8: 681b ldr r3, [r3, #0]
  4714. 8001dda: 430a orrs r2, r1
  4715. 8001ddc: 641a str r2, [r3, #64] ; 0x40
  4716. /* Enable the write protection for RTC registers */
  4717. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  4718. 8001dde: 687b ldr r3, [r7, #4]
  4719. 8001de0: 681b ldr r3, [r3, #0]
  4720. 8001de2: 22ff movs r2, #255 ; 0xff
  4721. 8001de4: 625a str r2, [r3, #36] ; 0x24
  4722. /* Set RTC state */
  4723. hrtc->State = HAL_RTC_STATE_READY;
  4724. 8001de6: 687b ldr r3, [r7, #4]
  4725. 8001de8: 2201 movs r2, #1
  4726. 8001dea: 775a strb r2, [r3, #29]
  4727. return HAL_OK;
  4728. 8001dec: 2300 movs r3, #0
  4729. }
  4730. }
  4731. 8001dee: 4618 mov r0, r3
  4732. 8001df0: 3708 adds r7, #8
  4733. 8001df2: 46bd mov sp, r7
  4734. 8001df4: bd80 pop {r7, pc}
  4735. 08001df6 <HAL_RTC_SetTime>:
  4736. * @arg RTC_FORMAT_BIN: Binary data format
  4737. * @arg RTC_FORMAT_BCD: BCD data format
  4738. * @retval HAL status
  4739. */
  4740. HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
  4741. {
  4742. 8001df6: b590 push {r4, r7, lr}
  4743. 8001df8: b087 sub sp, #28
  4744. 8001dfa: af00 add r7, sp, #0
  4745. 8001dfc: 60f8 str r0, [r7, #12]
  4746. 8001dfe: 60b9 str r1, [r7, #8]
  4747. 8001e00: 607a str r2, [r7, #4]
  4748. assert_param(IS_RTC_FORMAT(Format));
  4749. assert_param(IS_RTC_DAYLIGHT_SAVING(sTime->DayLightSaving));
  4750. assert_param(IS_RTC_STORE_OPERATION(sTime->StoreOperation));
  4751. /* Process Locked */
  4752. __HAL_LOCK(hrtc);
  4753. 8001e02: 68fb ldr r3, [r7, #12]
  4754. 8001e04: 7f1b ldrb r3, [r3, #28]
  4755. 8001e06: 2b01 cmp r3, #1
  4756. 8001e08: d101 bne.n 8001e0e <HAL_RTC_SetTime+0x18>
  4757. 8001e0a: 2302 movs r3, #2
  4758. 8001e0c: e0a3 b.n 8001f56 <HAL_RTC_SetTime+0x160>
  4759. 8001e0e: 68fb ldr r3, [r7, #12]
  4760. 8001e10: 2201 movs r2, #1
  4761. 8001e12: 771a strb r2, [r3, #28]
  4762. hrtc->State = HAL_RTC_STATE_BUSY;
  4763. 8001e14: 68fb ldr r3, [r7, #12]
  4764. 8001e16: 2202 movs r2, #2
  4765. 8001e18: 775a strb r2, [r3, #29]
  4766. if (Format == RTC_FORMAT_BIN)
  4767. 8001e1a: 687b ldr r3, [r7, #4]
  4768. 8001e1c: 2b00 cmp r3, #0
  4769. 8001e1e: d126 bne.n 8001e6e <HAL_RTC_SetTime+0x78>
  4770. {
  4771. if ((hrtc->Instance->CR & RTC_CR_FMT) != 0U)
  4772. 8001e20: 68fb ldr r3, [r7, #12]
  4773. 8001e22: 681b ldr r3, [r3, #0]
  4774. 8001e24: 689b ldr r3, [r3, #8]
  4775. 8001e26: f003 0340 and.w r3, r3, #64 ; 0x40
  4776. 8001e2a: 2b00 cmp r3, #0
  4777. 8001e2c: d102 bne.n 8001e34 <HAL_RTC_SetTime+0x3e>
  4778. assert_param(IS_RTC_HOUR12(sTime->Hours));
  4779. assert_param(IS_RTC_HOURFORMAT12(sTime->TimeFormat));
  4780. }
  4781. else
  4782. {
  4783. sTime->TimeFormat = 0x00U;
  4784. 8001e2e: 68bb ldr r3, [r7, #8]
  4785. 8001e30: 2200 movs r2, #0
  4786. 8001e32: 70da strb r2, [r3, #3]
  4787. assert_param(IS_RTC_HOUR24(sTime->Hours));
  4788. }
  4789. assert_param(IS_RTC_MINUTES(sTime->Minutes));
  4790. assert_param(IS_RTC_SECONDS(sTime->Seconds));
  4791. tmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(sTime->Hours) << 16U) | \
  4792. 8001e34: 68bb ldr r3, [r7, #8]
  4793. 8001e36: 781b ldrb r3, [r3, #0]
  4794. 8001e38: 4618 mov r0, r3
  4795. 8001e3a: f000 fa2f bl 800229c <RTC_ByteToBcd2>
  4796. 8001e3e: 4603 mov r3, r0
  4797. 8001e40: 041c lsls r4, r3, #16
  4798. ((uint32_t)RTC_ByteToBcd2(sTime->Minutes) << 8U) | \
  4799. 8001e42: 68bb ldr r3, [r7, #8]
  4800. 8001e44: 785b ldrb r3, [r3, #1]
  4801. 8001e46: 4618 mov r0, r3
  4802. 8001e48: f000 fa28 bl 800229c <RTC_ByteToBcd2>
  4803. 8001e4c: 4603 mov r3, r0
  4804. 8001e4e: 021b lsls r3, r3, #8
  4805. tmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(sTime->Hours) << 16U) | \
  4806. 8001e50: 431c orrs r4, r3
  4807. ((uint32_t)RTC_ByteToBcd2(sTime->Seconds)) | \
  4808. 8001e52: 68bb ldr r3, [r7, #8]
  4809. 8001e54: 789b ldrb r3, [r3, #2]
  4810. 8001e56: 4618 mov r0, r3
  4811. 8001e58: f000 fa20 bl 800229c <RTC_ByteToBcd2>
  4812. 8001e5c: 4603 mov r3, r0
  4813. ((uint32_t)RTC_ByteToBcd2(sTime->Minutes) << 8U) | \
  4814. 8001e5e: ea44 0203 orr.w r2, r4, r3
  4815. (((uint32_t)sTime->TimeFormat) << 16U));
  4816. 8001e62: 68bb ldr r3, [r7, #8]
  4817. 8001e64: 78db ldrb r3, [r3, #3]
  4818. 8001e66: 041b lsls r3, r3, #16
  4819. tmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(sTime->Hours) << 16U) | \
  4820. 8001e68: 4313 orrs r3, r2
  4821. 8001e6a: 617b str r3, [r7, #20]
  4822. 8001e6c: e018 b.n 8001ea0 <HAL_RTC_SetTime+0xaa>
  4823. }
  4824. else
  4825. {
  4826. if ((hrtc->Instance->CR & RTC_CR_FMT) != 0U)
  4827. 8001e6e: 68fb ldr r3, [r7, #12]
  4828. 8001e70: 681b ldr r3, [r3, #0]
  4829. 8001e72: 689b ldr r3, [r3, #8]
  4830. 8001e74: f003 0340 and.w r3, r3, #64 ; 0x40
  4831. 8001e78: 2b00 cmp r3, #0
  4832. 8001e7a: d102 bne.n 8001e82 <HAL_RTC_SetTime+0x8c>
  4833. assert_param(IS_RTC_HOUR12(RTC_Bcd2ToByte(sTime->Hours)));
  4834. assert_param(IS_RTC_HOURFORMAT12(sTime->TimeFormat));
  4835. }
  4836. else
  4837. {
  4838. sTime->TimeFormat = 0x00U;
  4839. 8001e7c: 68bb ldr r3, [r7, #8]
  4840. 8001e7e: 2200 movs r2, #0
  4841. 8001e80: 70da strb r2, [r3, #3]
  4842. assert_param(IS_RTC_HOUR24(RTC_Bcd2ToByte(sTime->Hours)));
  4843. }
  4844. assert_param(IS_RTC_MINUTES(RTC_Bcd2ToByte(sTime->Minutes)));
  4845. assert_param(IS_RTC_SECONDS(RTC_Bcd2ToByte(sTime->Seconds)));
  4846. tmpreg = (((uint32_t)(sTime->Hours) << 16U) | \
  4847. 8001e82: 68bb ldr r3, [r7, #8]
  4848. 8001e84: 781b ldrb r3, [r3, #0]
  4849. 8001e86: 041a lsls r2, r3, #16
  4850. ((uint32_t)(sTime->Minutes) << 8U) | \
  4851. 8001e88: 68bb ldr r3, [r7, #8]
  4852. 8001e8a: 785b ldrb r3, [r3, #1]
  4853. 8001e8c: 021b lsls r3, r3, #8
  4854. tmpreg = (((uint32_t)(sTime->Hours) << 16U) | \
  4855. 8001e8e: 4313 orrs r3, r2
  4856. ((uint32_t)sTime->Seconds) | \
  4857. 8001e90: 68ba ldr r2, [r7, #8]
  4858. 8001e92: 7892 ldrb r2, [r2, #2]
  4859. ((uint32_t)(sTime->Minutes) << 8U) | \
  4860. 8001e94: 431a orrs r2, r3
  4861. ((uint32_t)(sTime->TimeFormat) << 16U));
  4862. 8001e96: 68bb ldr r3, [r7, #8]
  4863. 8001e98: 78db ldrb r3, [r3, #3]
  4864. 8001e9a: 041b lsls r3, r3, #16
  4865. tmpreg = (((uint32_t)(sTime->Hours) << 16U) | \
  4866. 8001e9c: 4313 orrs r3, r2
  4867. 8001e9e: 617b str r3, [r7, #20]
  4868. }
  4869. UNUSED(tmpreg);
  4870. /* Disable the write protection for RTC registers */
  4871. __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
  4872. 8001ea0: 68fb ldr r3, [r7, #12]
  4873. 8001ea2: 681b ldr r3, [r3, #0]
  4874. 8001ea4: 22ca movs r2, #202 ; 0xca
  4875. 8001ea6: 625a str r2, [r3, #36] ; 0x24
  4876. 8001ea8: 68fb ldr r3, [r7, #12]
  4877. 8001eaa: 681b ldr r3, [r3, #0]
  4878. 8001eac: 2253 movs r2, #83 ; 0x53
  4879. 8001eae: 625a str r2, [r3, #36] ; 0x24
  4880. /* Set Initialization mode */
  4881. if (RTC_EnterInitMode(hrtc) != HAL_OK)
  4882. 8001eb0: 68f8 ldr r0, [r7, #12]
  4883. 8001eb2: f000 f9c9 bl 8002248 <RTC_EnterInitMode>
  4884. 8001eb6: 4603 mov r3, r0
  4885. 8001eb8: 2b00 cmp r3, #0
  4886. 8001eba: d00b beq.n 8001ed4 <HAL_RTC_SetTime+0xde>
  4887. {
  4888. /* Enable the write protection for RTC registers */
  4889. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  4890. 8001ebc: 68fb ldr r3, [r7, #12]
  4891. 8001ebe: 681b ldr r3, [r3, #0]
  4892. 8001ec0: 22ff movs r2, #255 ; 0xff
  4893. 8001ec2: 625a str r2, [r3, #36] ; 0x24
  4894. /* Set RTC state */
  4895. hrtc->State = HAL_RTC_STATE_ERROR;
  4896. 8001ec4: 68fb ldr r3, [r7, #12]
  4897. 8001ec6: 2204 movs r2, #4
  4898. 8001ec8: 775a strb r2, [r3, #29]
  4899. /* Process Unlocked */
  4900. __HAL_UNLOCK(hrtc);
  4901. 8001eca: 68fb ldr r3, [r7, #12]
  4902. 8001ecc: 2200 movs r2, #0
  4903. 8001ece: 771a strb r2, [r3, #28]
  4904. return HAL_ERROR;
  4905. 8001ed0: 2301 movs r3, #1
  4906. 8001ed2: e040 b.n 8001f56 <HAL_RTC_SetTime+0x160>
  4907. }
  4908. else
  4909. {
  4910. /* Set the RTC_TR register */
  4911. hrtc->Instance->TR = (uint32_t)(tmpreg & RTC_TR_RESERVED_MASK);
  4912. 8001ed4: 68fb ldr r3, [r7, #12]
  4913. 8001ed6: 681a ldr r2, [r3, #0]
  4914. 8001ed8: 697b ldr r3, [r7, #20]
  4915. 8001eda: f003 337f and.w r3, r3, #2139062143 ; 0x7f7f7f7f
  4916. 8001ede: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000
  4917. 8001ee2: 6013 str r3, [r2, #0]
  4918. /* Clear the bits to be configured */
  4919. hrtc->Instance->CR &= ((uint32_t)~RTC_CR_BKP);
  4920. 8001ee4: 68fb ldr r3, [r7, #12]
  4921. 8001ee6: 681b ldr r3, [r3, #0]
  4922. 8001ee8: 689a ldr r2, [r3, #8]
  4923. 8001eea: 68fb ldr r3, [r7, #12]
  4924. 8001eec: 681b ldr r3, [r3, #0]
  4925. 8001eee: f422 2280 bic.w r2, r2, #262144 ; 0x40000
  4926. 8001ef2: 609a str r2, [r3, #8]
  4927. /* Configure the RTC_CR register */
  4928. hrtc->Instance->CR |= (uint32_t)(sTime->DayLightSaving | sTime->StoreOperation);
  4929. 8001ef4: 68fb ldr r3, [r7, #12]
  4930. 8001ef6: 681b ldr r3, [r3, #0]
  4931. 8001ef8: 6899 ldr r1, [r3, #8]
  4932. 8001efa: 68bb ldr r3, [r7, #8]
  4933. 8001efc: 68da ldr r2, [r3, #12]
  4934. 8001efe: 68bb ldr r3, [r7, #8]
  4935. 8001f00: 691b ldr r3, [r3, #16]
  4936. 8001f02: 431a orrs r2, r3
  4937. 8001f04: 68fb ldr r3, [r7, #12]
  4938. 8001f06: 681b ldr r3, [r3, #0]
  4939. 8001f08: 430a orrs r2, r1
  4940. 8001f0a: 609a str r2, [r3, #8]
  4941. /* Exit Initialization mode */
  4942. hrtc->Instance->ISR &= ((uint32_t)~RTC_ISR_INIT);
  4943. 8001f0c: 68fb ldr r3, [r7, #12]
  4944. 8001f0e: 681b ldr r3, [r3, #0]
  4945. 8001f10: 68da ldr r2, [r3, #12]
  4946. 8001f12: 68fb ldr r3, [r7, #12]
  4947. 8001f14: 681b ldr r3, [r3, #0]
  4948. 8001f16: f022 0280 bic.w r2, r2, #128 ; 0x80
  4949. 8001f1a: 60da str r2, [r3, #12]
  4950. /* Wait for synchro */
  4951. if (HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
  4952. 8001f1c: 68f8 ldr r0, [r7, #12]
  4953. 8001f1e: f000 f966 bl 80021ee <HAL_RTC_WaitForSynchro>
  4954. 8001f22: 4603 mov r3, r0
  4955. 8001f24: 2b00 cmp r3, #0
  4956. 8001f26: d00b beq.n 8001f40 <HAL_RTC_SetTime+0x14a>
  4957. {
  4958. /* Enable the write protection for RTC registers */
  4959. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  4960. 8001f28: 68fb ldr r3, [r7, #12]
  4961. 8001f2a: 681b ldr r3, [r3, #0]
  4962. 8001f2c: 22ff movs r2, #255 ; 0xff
  4963. 8001f2e: 625a str r2, [r3, #36] ; 0x24
  4964. hrtc->State = HAL_RTC_STATE_ERROR;
  4965. 8001f30: 68fb ldr r3, [r7, #12]
  4966. 8001f32: 2204 movs r2, #4
  4967. 8001f34: 775a strb r2, [r3, #29]
  4968. /* Process Unlocked */
  4969. __HAL_UNLOCK(hrtc);
  4970. 8001f36: 68fb ldr r3, [r7, #12]
  4971. 8001f38: 2200 movs r2, #0
  4972. 8001f3a: 771a strb r2, [r3, #28]
  4973. return HAL_ERROR;
  4974. 8001f3c: 2301 movs r3, #1
  4975. 8001f3e: e00a b.n 8001f56 <HAL_RTC_SetTime+0x160>
  4976. }
  4977. /* Enable the write protection for RTC registers */
  4978. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  4979. 8001f40: 68fb ldr r3, [r7, #12]
  4980. 8001f42: 681b ldr r3, [r3, #0]
  4981. 8001f44: 22ff movs r2, #255 ; 0xff
  4982. 8001f46: 625a str r2, [r3, #36] ; 0x24
  4983. hrtc->State = HAL_RTC_STATE_READY;
  4984. 8001f48: 68fb ldr r3, [r7, #12]
  4985. 8001f4a: 2201 movs r2, #1
  4986. 8001f4c: 775a strb r2, [r3, #29]
  4987. __HAL_UNLOCK(hrtc);
  4988. 8001f4e: 68fb ldr r3, [r7, #12]
  4989. 8001f50: 2200 movs r2, #0
  4990. 8001f52: 771a strb r2, [r3, #28]
  4991. return HAL_OK;
  4992. 8001f54: 2300 movs r3, #0
  4993. }
  4994. }
  4995. 8001f56: 4618 mov r0, r3
  4996. 8001f58: 371c adds r7, #28
  4997. 8001f5a: 46bd mov sp, r7
  4998. 8001f5c: bd90 pop {r4, r7, pc}
  4999. 08001f5e <HAL_RTC_GetTime>:
  5000. * Reading RTC current time locks the values in calendar shadow registers until Current date is read
  5001. * to ensure consistency between the time and date values.
  5002. * @retval HAL status
  5003. */
  5004. HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
  5005. {
  5006. 8001f5e: b580 push {r7, lr}
  5007. 8001f60: b086 sub sp, #24
  5008. 8001f62: af00 add r7, sp, #0
  5009. 8001f64: 60f8 str r0, [r7, #12]
  5010. 8001f66: 60b9 str r1, [r7, #8]
  5011. 8001f68: 607a str r2, [r7, #4]
  5012. /* Check the parameters */
  5013. assert_param(IS_RTC_FORMAT(Format));
  5014. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  5015. /* Get subseconds structure field from the corresponding register*/
  5016. sTime->SubSeconds = (uint32_t)((hrtc->Instance->SSR) & RTC_SSR_SS);
  5017. 8001f6a: 68fb ldr r3, [r7, #12]
  5018. 8001f6c: 681b ldr r3, [r3, #0]
  5019. 8001f6e: 6a9b ldr r3, [r3, #40] ; 0x28
  5020. 8001f70: b29a uxth r2, r3
  5021. 8001f72: 68bb ldr r3, [r7, #8]
  5022. 8001f74: 605a str r2, [r3, #4]
  5023. /* Get SecondFraction structure field from the corresponding register field*/
  5024. sTime->SecondFraction = (uint32_t)(hrtc->Instance->PRER & RTC_PRER_PREDIV_S);
  5025. 8001f76: 68fb ldr r3, [r7, #12]
  5026. 8001f78: 681b ldr r3, [r3, #0]
  5027. 8001f7a: 691b ldr r3, [r3, #16]
  5028. 8001f7c: f3c3 020e ubfx r2, r3, #0, #15
  5029. 8001f80: 68bb ldr r3, [r7, #8]
  5030. 8001f82: 609a str r2, [r3, #8]
  5031. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  5032. /* Get the TR register */
  5033. tmpreg = (uint32_t)(hrtc->Instance->TR & RTC_TR_RESERVED_MASK);
  5034. 8001f84: 68fb ldr r3, [r7, #12]
  5035. 8001f86: 681b ldr r3, [r3, #0]
  5036. 8001f88: 681b ldr r3, [r3, #0]
  5037. 8001f8a: f003 337f and.w r3, r3, #2139062143 ; 0x7f7f7f7f
  5038. 8001f8e: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000
  5039. 8001f92: 617b str r3, [r7, #20]
  5040. /* Fill the structure fields with the read parameters */
  5041. sTime->Hours = (uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> 16U);
  5042. 8001f94: 697b ldr r3, [r7, #20]
  5043. 8001f96: 0c1b lsrs r3, r3, #16
  5044. 8001f98: b2db uxtb r3, r3
  5045. 8001f9a: f003 033f and.w r3, r3, #63 ; 0x3f
  5046. 8001f9e: b2da uxtb r2, r3
  5047. 8001fa0: 68bb ldr r3, [r7, #8]
  5048. 8001fa2: 701a strb r2, [r3, #0]
  5049. sTime->Minutes = (uint8_t)((tmpreg & (RTC_TR_MNT | RTC_TR_MNU)) >> 8U);
  5050. 8001fa4: 697b ldr r3, [r7, #20]
  5051. 8001fa6: 0a1b lsrs r3, r3, #8
  5052. 8001fa8: b2db uxtb r3, r3
  5053. 8001faa: f003 037f and.w r3, r3, #127 ; 0x7f
  5054. 8001fae: b2da uxtb r2, r3
  5055. 8001fb0: 68bb ldr r3, [r7, #8]
  5056. 8001fb2: 705a strb r2, [r3, #1]
  5057. sTime->Seconds = (uint8_t)(tmpreg & (RTC_TR_ST | RTC_TR_SU));
  5058. 8001fb4: 697b ldr r3, [r7, #20]
  5059. 8001fb6: b2db uxtb r3, r3
  5060. 8001fb8: f003 037f and.w r3, r3, #127 ; 0x7f
  5061. 8001fbc: b2da uxtb r2, r3
  5062. 8001fbe: 68bb ldr r3, [r7, #8]
  5063. 8001fc0: 709a strb r2, [r3, #2]
  5064. sTime->TimeFormat = (uint8_t)((tmpreg & (RTC_TR_PM)) >> 16U);
  5065. 8001fc2: 697b ldr r3, [r7, #20]
  5066. 8001fc4: 0c1b lsrs r3, r3, #16
  5067. 8001fc6: b2db uxtb r3, r3
  5068. 8001fc8: f003 0340 and.w r3, r3, #64 ; 0x40
  5069. 8001fcc: b2da uxtb r2, r3
  5070. 8001fce: 68bb ldr r3, [r7, #8]
  5071. 8001fd0: 70da strb r2, [r3, #3]
  5072. /* Check the input parameters format */
  5073. if (Format == RTC_FORMAT_BIN)
  5074. 8001fd2: 687b ldr r3, [r7, #4]
  5075. 8001fd4: 2b00 cmp r3, #0
  5076. 8001fd6: d11a bne.n 800200e <HAL_RTC_GetTime+0xb0>
  5077. {
  5078. /* Convert the time structure parameters to Binary format */
  5079. sTime->Hours = (uint8_t)RTC_Bcd2ToByte(sTime->Hours);
  5080. 8001fd8: 68bb ldr r3, [r7, #8]
  5081. 8001fda: 781b ldrb r3, [r3, #0]
  5082. 8001fdc: 4618 mov r0, r3
  5083. 8001fde: f000 f97c bl 80022da <RTC_Bcd2ToByte>
  5084. 8001fe2: 4603 mov r3, r0
  5085. 8001fe4: 461a mov r2, r3
  5086. 8001fe6: 68bb ldr r3, [r7, #8]
  5087. 8001fe8: 701a strb r2, [r3, #0]
  5088. sTime->Minutes = (uint8_t)RTC_Bcd2ToByte(sTime->Minutes);
  5089. 8001fea: 68bb ldr r3, [r7, #8]
  5090. 8001fec: 785b ldrb r3, [r3, #1]
  5091. 8001fee: 4618 mov r0, r3
  5092. 8001ff0: f000 f973 bl 80022da <RTC_Bcd2ToByte>
  5093. 8001ff4: 4603 mov r3, r0
  5094. 8001ff6: 461a mov r2, r3
  5095. 8001ff8: 68bb ldr r3, [r7, #8]
  5096. 8001ffa: 705a strb r2, [r3, #1]
  5097. sTime->Seconds = (uint8_t)RTC_Bcd2ToByte(sTime->Seconds);
  5098. 8001ffc: 68bb ldr r3, [r7, #8]
  5099. 8001ffe: 789b ldrb r3, [r3, #2]
  5100. 8002000: 4618 mov r0, r3
  5101. 8002002: f000 f96a bl 80022da <RTC_Bcd2ToByte>
  5102. 8002006: 4603 mov r3, r0
  5103. 8002008: 461a mov r2, r3
  5104. 800200a: 68bb ldr r3, [r7, #8]
  5105. 800200c: 709a strb r2, [r3, #2]
  5106. }
  5107. return HAL_OK;
  5108. 800200e: 2300 movs r3, #0
  5109. }
  5110. 8002010: 4618 mov r0, r3
  5111. 8002012: 3718 adds r7, #24
  5112. 8002014: 46bd mov sp, r7
  5113. 8002016: bd80 pop {r7, pc}
  5114. 08002018 <HAL_RTC_SetDate>:
  5115. * @arg RTC_FORMAT_BIN: Binary data format
  5116. * @arg RTC_FORMAT_BCD: BCD data format
  5117. * @retval HAL status
  5118. */
  5119. HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
  5120. {
  5121. 8002018: b590 push {r4, r7, lr}
  5122. 800201a: b087 sub sp, #28
  5123. 800201c: af00 add r7, sp, #0
  5124. 800201e: 60f8 str r0, [r7, #12]
  5125. 8002020: 60b9 str r1, [r7, #8]
  5126. 8002022: 607a str r2, [r7, #4]
  5127. /* Check the parameters */
  5128. assert_param(IS_RTC_FORMAT(Format));
  5129. /* Process Locked */
  5130. __HAL_LOCK(hrtc);
  5131. 8002024: 68fb ldr r3, [r7, #12]
  5132. 8002026: 7f1b ldrb r3, [r3, #28]
  5133. 8002028: 2b01 cmp r3, #1
  5134. 800202a: d101 bne.n 8002030 <HAL_RTC_SetDate+0x18>
  5135. 800202c: 2302 movs r3, #2
  5136. 800202e: e08d b.n 800214c <HAL_RTC_SetDate+0x134>
  5137. 8002030: 68fb ldr r3, [r7, #12]
  5138. 8002032: 2201 movs r2, #1
  5139. 8002034: 771a strb r2, [r3, #28]
  5140. hrtc->State = HAL_RTC_STATE_BUSY;
  5141. 8002036: 68fb ldr r3, [r7, #12]
  5142. 8002038: 2202 movs r2, #2
  5143. 800203a: 775a strb r2, [r3, #29]
  5144. if ((Format == RTC_FORMAT_BIN) && ((sDate->Month & 0x10U) == 0x10U))
  5145. 800203c: 687b ldr r3, [r7, #4]
  5146. 800203e: 2b00 cmp r3, #0
  5147. 8002040: d10e bne.n 8002060 <HAL_RTC_SetDate+0x48>
  5148. 8002042: 68bb ldr r3, [r7, #8]
  5149. 8002044: 785b ldrb r3, [r3, #1]
  5150. 8002046: f003 0310 and.w r3, r3, #16
  5151. 800204a: 2b00 cmp r3, #0
  5152. 800204c: d008 beq.n 8002060 <HAL_RTC_SetDate+0x48>
  5153. {
  5154. sDate->Month = (uint8_t)((sDate->Month & (uint8_t)~(0x10U)) + (uint8_t)0x0AU);
  5155. 800204e: 68bb ldr r3, [r7, #8]
  5156. 8002050: 785b ldrb r3, [r3, #1]
  5157. 8002052: f023 0310 bic.w r3, r3, #16
  5158. 8002056: b2db uxtb r3, r3
  5159. 8002058: 330a adds r3, #10
  5160. 800205a: b2da uxtb r2, r3
  5161. 800205c: 68bb ldr r3, [r7, #8]
  5162. 800205e: 705a strb r2, [r3, #1]
  5163. }
  5164. assert_param(IS_RTC_WEEKDAY(sDate->WeekDay));
  5165. if (Format == RTC_FORMAT_BIN)
  5166. 8002060: 687b ldr r3, [r7, #4]
  5167. 8002062: 2b00 cmp r3, #0
  5168. 8002064: d11c bne.n 80020a0 <HAL_RTC_SetDate+0x88>
  5169. {
  5170. assert_param(IS_RTC_YEAR(sDate->Year));
  5171. assert_param(IS_RTC_MONTH(sDate->Month));
  5172. assert_param(IS_RTC_DATE(sDate->Date));
  5173. datetmpreg = (((uint32_t)RTC_ByteToBcd2(sDate->Year) << 16U) | \
  5174. 8002066: 68bb ldr r3, [r7, #8]
  5175. 8002068: 78db ldrb r3, [r3, #3]
  5176. 800206a: 4618 mov r0, r3
  5177. 800206c: f000 f916 bl 800229c <RTC_ByteToBcd2>
  5178. 8002070: 4603 mov r3, r0
  5179. 8002072: 041c lsls r4, r3, #16
  5180. ((uint32_t)RTC_ByteToBcd2(sDate->Month) << 8U) | \
  5181. 8002074: 68bb ldr r3, [r7, #8]
  5182. 8002076: 785b ldrb r3, [r3, #1]
  5183. 8002078: 4618 mov r0, r3
  5184. 800207a: f000 f90f bl 800229c <RTC_ByteToBcd2>
  5185. 800207e: 4603 mov r3, r0
  5186. 8002080: 021b lsls r3, r3, #8
  5187. datetmpreg = (((uint32_t)RTC_ByteToBcd2(sDate->Year) << 16U) | \
  5188. 8002082: 431c orrs r4, r3
  5189. ((uint32_t)RTC_ByteToBcd2(sDate->Date)) | \
  5190. 8002084: 68bb ldr r3, [r7, #8]
  5191. 8002086: 789b ldrb r3, [r3, #2]
  5192. 8002088: 4618 mov r0, r3
  5193. 800208a: f000 f907 bl 800229c <RTC_ByteToBcd2>
  5194. 800208e: 4603 mov r3, r0
  5195. ((uint32_t)RTC_ByteToBcd2(sDate->Month) << 8U) | \
  5196. 8002090: ea44 0203 orr.w r2, r4, r3
  5197. ((uint32_t)sDate->WeekDay << 13U));
  5198. 8002094: 68bb ldr r3, [r7, #8]
  5199. 8002096: 781b ldrb r3, [r3, #0]
  5200. 8002098: 035b lsls r3, r3, #13
  5201. datetmpreg = (((uint32_t)RTC_ByteToBcd2(sDate->Year) << 16U) | \
  5202. 800209a: 4313 orrs r3, r2
  5203. 800209c: 617b str r3, [r7, #20]
  5204. 800209e: e00e b.n 80020be <HAL_RTC_SetDate+0xa6>
  5205. {
  5206. assert_param(IS_RTC_YEAR(RTC_Bcd2ToByte(sDate->Year)));
  5207. assert_param(IS_RTC_MONTH(RTC_Bcd2ToByte(sDate->Month)));
  5208. assert_param(IS_RTC_DATE(RTC_Bcd2ToByte(sDate->Date)));
  5209. datetmpreg = ((((uint32_t)sDate->Year) << 16U) | \
  5210. 80020a0: 68bb ldr r3, [r7, #8]
  5211. 80020a2: 78db ldrb r3, [r3, #3]
  5212. 80020a4: 041a lsls r2, r3, #16
  5213. (((uint32_t)sDate->Month) << 8U) | \
  5214. 80020a6: 68bb ldr r3, [r7, #8]
  5215. 80020a8: 785b ldrb r3, [r3, #1]
  5216. 80020aa: 021b lsls r3, r3, #8
  5217. datetmpreg = ((((uint32_t)sDate->Year) << 16U) | \
  5218. 80020ac: 4313 orrs r3, r2
  5219. ((uint32_t)sDate->Date) | \
  5220. 80020ae: 68ba ldr r2, [r7, #8]
  5221. 80020b0: 7892 ldrb r2, [r2, #2]
  5222. (((uint32_t)sDate->Month) << 8U) | \
  5223. 80020b2: 431a orrs r2, r3
  5224. (((uint32_t)sDate->WeekDay) << 13U));
  5225. 80020b4: 68bb ldr r3, [r7, #8]
  5226. 80020b6: 781b ldrb r3, [r3, #0]
  5227. 80020b8: 035b lsls r3, r3, #13
  5228. datetmpreg = ((((uint32_t)sDate->Year) << 16U) | \
  5229. 80020ba: 4313 orrs r3, r2
  5230. 80020bc: 617b str r3, [r7, #20]
  5231. }
  5232. /* Disable the write protection for RTC registers */
  5233. __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
  5234. 80020be: 68fb ldr r3, [r7, #12]
  5235. 80020c0: 681b ldr r3, [r3, #0]
  5236. 80020c2: 22ca movs r2, #202 ; 0xca
  5237. 80020c4: 625a str r2, [r3, #36] ; 0x24
  5238. 80020c6: 68fb ldr r3, [r7, #12]
  5239. 80020c8: 681b ldr r3, [r3, #0]
  5240. 80020ca: 2253 movs r2, #83 ; 0x53
  5241. 80020cc: 625a str r2, [r3, #36] ; 0x24
  5242. /* Set Initialization mode */
  5243. if (RTC_EnterInitMode(hrtc) != HAL_OK)
  5244. 80020ce: 68f8 ldr r0, [r7, #12]
  5245. 80020d0: f000 f8ba bl 8002248 <RTC_EnterInitMode>
  5246. 80020d4: 4603 mov r3, r0
  5247. 80020d6: 2b00 cmp r3, #0
  5248. 80020d8: d00b beq.n 80020f2 <HAL_RTC_SetDate+0xda>
  5249. {
  5250. /* Enable the write protection for RTC registers */
  5251. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  5252. 80020da: 68fb ldr r3, [r7, #12]
  5253. 80020dc: 681b ldr r3, [r3, #0]
  5254. 80020de: 22ff movs r2, #255 ; 0xff
  5255. 80020e0: 625a str r2, [r3, #36] ; 0x24
  5256. /* Set RTC state*/
  5257. hrtc->State = HAL_RTC_STATE_ERROR;
  5258. 80020e2: 68fb ldr r3, [r7, #12]
  5259. 80020e4: 2204 movs r2, #4
  5260. 80020e6: 775a strb r2, [r3, #29]
  5261. /* Process Unlocked */
  5262. __HAL_UNLOCK(hrtc);
  5263. 80020e8: 68fb ldr r3, [r7, #12]
  5264. 80020ea: 2200 movs r2, #0
  5265. 80020ec: 771a strb r2, [r3, #28]
  5266. return HAL_ERROR;
  5267. 80020ee: 2301 movs r3, #1
  5268. 80020f0: e02c b.n 800214c <HAL_RTC_SetDate+0x134>
  5269. }
  5270. else
  5271. {
  5272. /* Set the RTC_DR register */
  5273. hrtc->Instance->DR = (uint32_t)(datetmpreg & RTC_DR_RESERVED_MASK);
  5274. 80020f2: 68fb ldr r3, [r7, #12]
  5275. 80020f4: 681a ldr r2, [r3, #0]
  5276. 80020f6: 697b ldr r3, [r7, #20]
  5277. 80020f8: f023 437f bic.w r3, r3, #4278190080 ; 0xff000000
  5278. 80020fc: f023 03c0 bic.w r3, r3, #192 ; 0xc0
  5279. 8002100: 6053 str r3, [r2, #4]
  5280. /* Exit Initialization mode */
  5281. hrtc->Instance->ISR &= ((uint32_t)~RTC_ISR_INIT);
  5282. 8002102: 68fb ldr r3, [r7, #12]
  5283. 8002104: 681b ldr r3, [r3, #0]
  5284. 8002106: 68da ldr r2, [r3, #12]
  5285. 8002108: 68fb ldr r3, [r7, #12]
  5286. 800210a: 681b ldr r3, [r3, #0]
  5287. 800210c: f022 0280 bic.w r2, r2, #128 ; 0x80
  5288. 8002110: 60da str r2, [r3, #12]
  5289. /* Wait for synchro */
  5290. if (HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
  5291. 8002112: 68f8 ldr r0, [r7, #12]
  5292. 8002114: f000 f86b bl 80021ee <HAL_RTC_WaitForSynchro>
  5293. 8002118: 4603 mov r3, r0
  5294. 800211a: 2b00 cmp r3, #0
  5295. 800211c: d00b beq.n 8002136 <HAL_RTC_SetDate+0x11e>
  5296. {
  5297. /* Enable the write protection for RTC registers */
  5298. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  5299. 800211e: 68fb ldr r3, [r7, #12]
  5300. 8002120: 681b ldr r3, [r3, #0]
  5301. 8002122: 22ff movs r2, #255 ; 0xff
  5302. 8002124: 625a str r2, [r3, #36] ; 0x24
  5303. hrtc->State = HAL_RTC_STATE_ERROR;
  5304. 8002126: 68fb ldr r3, [r7, #12]
  5305. 8002128: 2204 movs r2, #4
  5306. 800212a: 775a strb r2, [r3, #29]
  5307. /* Process Unlocked */
  5308. __HAL_UNLOCK(hrtc);
  5309. 800212c: 68fb ldr r3, [r7, #12]
  5310. 800212e: 2200 movs r2, #0
  5311. 8002130: 771a strb r2, [r3, #28]
  5312. return HAL_ERROR;
  5313. 8002132: 2301 movs r3, #1
  5314. 8002134: e00a b.n 800214c <HAL_RTC_SetDate+0x134>
  5315. }
  5316. /* Enable the write protection for RTC registers */
  5317. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  5318. 8002136: 68fb ldr r3, [r7, #12]
  5319. 8002138: 681b ldr r3, [r3, #0]
  5320. 800213a: 22ff movs r2, #255 ; 0xff
  5321. 800213c: 625a str r2, [r3, #36] ; 0x24
  5322. hrtc->State = HAL_RTC_STATE_READY ;
  5323. 800213e: 68fb ldr r3, [r7, #12]
  5324. 8002140: 2201 movs r2, #1
  5325. 8002142: 775a strb r2, [r3, #29]
  5326. /* Process Unlocked */
  5327. __HAL_UNLOCK(hrtc);
  5328. 8002144: 68fb ldr r3, [r7, #12]
  5329. 8002146: 2200 movs r2, #0
  5330. 8002148: 771a strb r2, [r3, #28]
  5331. return HAL_OK;
  5332. 800214a: 2300 movs r3, #0
  5333. }
  5334. }
  5335. 800214c: 4618 mov r0, r3
  5336. 800214e: 371c adds r7, #28
  5337. 8002150: 46bd mov sp, r7
  5338. 8002152: bd90 pop {r4, r7, pc}
  5339. 08002154 <HAL_RTC_GetDate>:
  5340. * in the higher-order calendar shadow registers to ensure consistency between the time and date values.
  5341. * Reading RTC current time locks the values in calendar shadow registers until Current date is read.
  5342. * @retval HAL status
  5343. */
  5344. HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
  5345. {
  5346. 8002154: b580 push {r7, lr}
  5347. 8002156: b086 sub sp, #24
  5348. 8002158: af00 add r7, sp, #0
  5349. 800215a: 60f8 str r0, [r7, #12]
  5350. 800215c: 60b9 str r1, [r7, #8]
  5351. 800215e: 607a str r2, [r7, #4]
  5352. /* Check the parameters */
  5353. assert_param(IS_RTC_FORMAT(Format));
  5354. /* Get the DR register */
  5355. datetmpreg = (uint32_t)(hrtc->Instance->DR & RTC_DR_RESERVED_MASK);
  5356. 8002160: 68fb ldr r3, [r7, #12]
  5357. 8002162: 681b ldr r3, [r3, #0]
  5358. 8002164: 685b ldr r3, [r3, #4]
  5359. 8002166: f023 437f bic.w r3, r3, #4278190080 ; 0xff000000
  5360. 800216a: f023 03c0 bic.w r3, r3, #192 ; 0xc0
  5361. 800216e: 617b str r3, [r7, #20]
  5362. /* Fill the structure fields with the read parameters */
  5363. sDate->Year = (uint8_t)((datetmpreg & (RTC_DR_YT | RTC_DR_YU)) >> 16U);
  5364. 8002170: 697b ldr r3, [r7, #20]
  5365. 8002172: 0c1b lsrs r3, r3, #16
  5366. 8002174: b2da uxtb r2, r3
  5367. 8002176: 68bb ldr r3, [r7, #8]
  5368. 8002178: 70da strb r2, [r3, #3]
  5369. sDate->Month = (uint8_t)((datetmpreg & (RTC_DR_MT | RTC_DR_MU)) >> 8U);
  5370. 800217a: 697b ldr r3, [r7, #20]
  5371. 800217c: 0a1b lsrs r3, r3, #8
  5372. 800217e: b2db uxtb r3, r3
  5373. 8002180: f003 031f and.w r3, r3, #31
  5374. 8002184: b2da uxtb r2, r3
  5375. 8002186: 68bb ldr r3, [r7, #8]
  5376. 8002188: 705a strb r2, [r3, #1]
  5377. sDate->Date = (uint8_t)(datetmpreg & (RTC_DR_DT | RTC_DR_DU));
  5378. 800218a: 697b ldr r3, [r7, #20]
  5379. 800218c: b2db uxtb r3, r3
  5380. 800218e: f003 033f and.w r3, r3, #63 ; 0x3f
  5381. 8002192: b2da uxtb r2, r3
  5382. 8002194: 68bb ldr r3, [r7, #8]
  5383. 8002196: 709a strb r2, [r3, #2]
  5384. sDate->WeekDay = (uint8_t)((datetmpreg & (RTC_DR_WDU)) >> 13U);
  5385. 8002198: 697b ldr r3, [r7, #20]
  5386. 800219a: 0b5b lsrs r3, r3, #13
  5387. 800219c: b2db uxtb r3, r3
  5388. 800219e: f003 0307 and.w r3, r3, #7
  5389. 80021a2: b2da uxtb r2, r3
  5390. 80021a4: 68bb ldr r3, [r7, #8]
  5391. 80021a6: 701a strb r2, [r3, #0]
  5392. /* Check the input parameters format */
  5393. if (Format == RTC_FORMAT_BIN)
  5394. 80021a8: 687b ldr r3, [r7, #4]
  5395. 80021aa: 2b00 cmp r3, #0
  5396. 80021ac: d11a bne.n 80021e4 <HAL_RTC_GetDate+0x90>
  5397. {
  5398. /* Convert the date structure parameters to Binary format */
  5399. sDate->Year = (uint8_t)RTC_Bcd2ToByte(sDate->Year);
  5400. 80021ae: 68bb ldr r3, [r7, #8]
  5401. 80021b0: 78db ldrb r3, [r3, #3]
  5402. 80021b2: 4618 mov r0, r3
  5403. 80021b4: f000 f891 bl 80022da <RTC_Bcd2ToByte>
  5404. 80021b8: 4603 mov r3, r0
  5405. 80021ba: 461a mov r2, r3
  5406. 80021bc: 68bb ldr r3, [r7, #8]
  5407. 80021be: 70da strb r2, [r3, #3]
  5408. sDate->Month = (uint8_t)RTC_Bcd2ToByte(sDate->Month);
  5409. 80021c0: 68bb ldr r3, [r7, #8]
  5410. 80021c2: 785b ldrb r3, [r3, #1]
  5411. 80021c4: 4618 mov r0, r3
  5412. 80021c6: f000 f888 bl 80022da <RTC_Bcd2ToByte>
  5413. 80021ca: 4603 mov r3, r0
  5414. 80021cc: 461a mov r2, r3
  5415. 80021ce: 68bb ldr r3, [r7, #8]
  5416. 80021d0: 705a strb r2, [r3, #1]
  5417. sDate->Date = (uint8_t)RTC_Bcd2ToByte(sDate->Date);
  5418. 80021d2: 68bb ldr r3, [r7, #8]
  5419. 80021d4: 789b ldrb r3, [r3, #2]
  5420. 80021d6: 4618 mov r0, r3
  5421. 80021d8: f000 f87f bl 80022da <RTC_Bcd2ToByte>
  5422. 80021dc: 4603 mov r3, r0
  5423. 80021de: 461a mov r2, r3
  5424. 80021e0: 68bb ldr r3, [r7, #8]
  5425. 80021e2: 709a strb r2, [r3, #2]
  5426. }
  5427. return HAL_OK;
  5428. 80021e4: 2300 movs r3, #0
  5429. }
  5430. 80021e6: 4618 mov r0, r3
  5431. 80021e8: 3718 adds r7, #24
  5432. 80021ea: 46bd mov sp, r7
  5433. 80021ec: bd80 pop {r7, pc}
  5434. 080021ee <HAL_RTC_WaitForSynchro>:
  5435. * correctly copied into the RTC_TR and RTC_DR shadow registers.
  5436. * @param hrtc RTC handle
  5437. * @retval HAL status
  5438. */
  5439. HAL_StatusTypeDef HAL_RTC_WaitForSynchro(RTC_HandleTypeDef *hrtc)
  5440. {
  5441. 80021ee: b580 push {r7, lr}
  5442. 80021f0: b084 sub sp, #16
  5443. 80021f2: af00 add r7, sp, #0
  5444. 80021f4: 6078 str r0, [r7, #4]
  5445. uint32_t tickstart;
  5446. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  5447. /* If RTC_CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
  5448. if ((hrtc->Instance->CR & RTC_CR_BYPSHAD) == RESET)
  5449. 80021f6: 687b ldr r3, [r7, #4]
  5450. 80021f8: 681b ldr r3, [r3, #0]
  5451. 80021fa: 689b ldr r3, [r3, #8]
  5452. 80021fc: f003 0320 and.w r3, r3, #32
  5453. 8002200: 2b00 cmp r3, #0
  5454. 8002202: d11c bne.n 800223e <HAL_RTC_WaitForSynchro+0x50>
  5455. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  5456. {
  5457. /* Clear RSF flag */
  5458. hrtc->Instance->ISR &= (uint32_t)RTC_RSF_MASK;
  5459. 8002204: 687b ldr r3, [r7, #4]
  5460. 8002206: 681b ldr r3, [r3, #0]
  5461. 8002208: 68da ldr r2, [r3, #12]
  5462. 800220a: 687b ldr r3, [r7, #4]
  5463. 800220c: 681b ldr r3, [r3, #0]
  5464. 800220e: f022 02a0 bic.w r2, r2, #160 ; 0xa0
  5465. 8002212: 60da str r2, [r3, #12]
  5466. tickstart = HAL_GetTick();
  5467. 8002214: f7fe fc1c bl 8000a50 <HAL_GetTick>
  5468. 8002218: 60f8 str r0, [r7, #12]
  5469. /* Wait the registers to be synchronised */
  5470. while ((hrtc->Instance->ISR & RTC_ISR_RSF) == 0U)
  5471. 800221a: e009 b.n 8002230 <HAL_RTC_WaitForSynchro+0x42>
  5472. {
  5473. if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
  5474. 800221c: f7fe fc18 bl 8000a50 <HAL_GetTick>
  5475. 8002220: 4602 mov r2, r0
  5476. 8002222: 68fb ldr r3, [r7, #12]
  5477. 8002224: 1ad3 subs r3, r2, r3
  5478. 8002226: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8
  5479. 800222a: d901 bls.n 8002230 <HAL_RTC_WaitForSynchro+0x42>
  5480. {
  5481. return HAL_TIMEOUT;
  5482. 800222c: 2303 movs r3, #3
  5483. 800222e: e007 b.n 8002240 <HAL_RTC_WaitForSynchro+0x52>
  5484. while ((hrtc->Instance->ISR & RTC_ISR_RSF) == 0U)
  5485. 8002230: 687b ldr r3, [r7, #4]
  5486. 8002232: 681b ldr r3, [r3, #0]
  5487. 8002234: 68db ldr r3, [r3, #12]
  5488. 8002236: f003 0320 and.w r3, r3, #32
  5489. 800223a: 2b00 cmp r3, #0
  5490. 800223c: d0ee beq.n 800221c <HAL_RTC_WaitForSynchro+0x2e>
  5491. }
  5492. }
  5493. }
  5494. return HAL_OK;
  5495. 800223e: 2300 movs r3, #0
  5496. }
  5497. 8002240: 4618 mov r0, r3
  5498. 8002242: 3710 adds r7, #16
  5499. 8002244: 46bd mov sp, r7
  5500. 8002246: bd80 pop {r7, pc}
  5501. 08002248 <RTC_EnterInitMode>:
  5502. * __HAL_RTC_WRITEPROTECTION_DISABLE() before calling this function.
  5503. * @param hrtc RTC handle
  5504. * @retval HAL status
  5505. */
  5506. HAL_StatusTypeDef RTC_EnterInitMode(RTC_HandleTypeDef *hrtc)
  5507. {
  5508. 8002248: b580 push {r7, lr}
  5509. 800224a: b084 sub sp, #16
  5510. 800224c: af00 add r7, sp, #0
  5511. 800224e: 6078 str r0, [r7, #4]
  5512. uint32_t tickstart;
  5513. /* Check if the Initialization mode is set */
  5514. if ((hrtc->Instance->ISR & RTC_ISR_INITF) == 0U)
  5515. 8002250: 687b ldr r3, [r7, #4]
  5516. 8002252: 681b ldr r3, [r3, #0]
  5517. 8002254: 68db ldr r3, [r3, #12]
  5518. 8002256: f003 0340 and.w r3, r3, #64 ; 0x40
  5519. 800225a: 2b00 cmp r3, #0
  5520. 800225c: d119 bne.n 8002292 <RTC_EnterInitMode+0x4a>
  5521. {
  5522. /* Set the Initialization mode */
  5523. hrtc->Instance->ISR = (uint32_t)RTC_INIT_MASK;
  5524. 800225e: 687b ldr r3, [r7, #4]
  5525. 8002260: 681b ldr r3, [r3, #0]
  5526. 8002262: f04f 32ff mov.w r2, #4294967295
  5527. 8002266: 60da str r2, [r3, #12]
  5528. tickstart = HAL_GetTick();
  5529. 8002268: f7fe fbf2 bl 8000a50 <HAL_GetTick>
  5530. 800226c: 60f8 str r0, [r7, #12]
  5531. /* Wait till RTC is in INIT state and if Time out is reached exit */
  5532. while ((hrtc->Instance->ISR & RTC_ISR_INITF) == 0U)
  5533. 800226e: e009 b.n 8002284 <RTC_EnterInitMode+0x3c>
  5534. {
  5535. if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
  5536. 8002270: f7fe fbee bl 8000a50 <HAL_GetTick>
  5537. 8002274: 4602 mov r2, r0
  5538. 8002276: 68fb ldr r3, [r7, #12]
  5539. 8002278: 1ad3 subs r3, r2, r3
  5540. 800227a: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8
  5541. 800227e: d901 bls.n 8002284 <RTC_EnterInitMode+0x3c>
  5542. {
  5543. return HAL_TIMEOUT;
  5544. 8002280: 2303 movs r3, #3
  5545. 8002282: e007 b.n 8002294 <RTC_EnterInitMode+0x4c>
  5546. while ((hrtc->Instance->ISR & RTC_ISR_INITF) == 0U)
  5547. 8002284: 687b ldr r3, [r7, #4]
  5548. 8002286: 681b ldr r3, [r3, #0]
  5549. 8002288: 68db ldr r3, [r3, #12]
  5550. 800228a: f003 0340 and.w r3, r3, #64 ; 0x40
  5551. 800228e: 2b00 cmp r3, #0
  5552. 8002290: d0ee beq.n 8002270 <RTC_EnterInitMode+0x28>
  5553. }
  5554. }
  5555. }
  5556. return HAL_OK;
  5557. 8002292: 2300 movs r3, #0
  5558. }
  5559. 8002294: 4618 mov r0, r3
  5560. 8002296: 3710 adds r7, #16
  5561. 8002298: 46bd mov sp, r7
  5562. 800229a: bd80 pop {r7, pc}
  5563. 0800229c <RTC_ByteToBcd2>:
  5564. * @brief Convert a 2 digit decimal to BCD format.
  5565. * @param Value Byte to be converted
  5566. * @retval Converted byte
  5567. */
  5568. uint8_t RTC_ByteToBcd2(uint8_t Value)
  5569. {
  5570. 800229c: b480 push {r7}
  5571. 800229e: b085 sub sp, #20
  5572. 80022a0: af00 add r7, sp, #0
  5573. 80022a2: 4603 mov r3, r0
  5574. 80022a4: 71fb strb r3, [r7, #7]
  5575. uint32_t bcdhigh = 0U;
  5576. 80022a6: 2300 movs r3, #0
  5577. 80022a8: 60fb str r3, [r7, #12]
  5578. uint8_t Param = Value;
  5579. 80022aa: 79fb ldrb r3, [r7, #7]
  5580. 80022ac: 72fb strb r3, [r7, #11]
  5581. while (Param >= 10U)
  5582. 80022ae: e005 b.n 80022bc <RTC_ByteToBcd2+0x20>
  5583. {
  5584. bcdhigh++;
  5585. 80022b0: 68fb ldr r3, [r7, #12]
  5586. 80022b2: 3301 adds r3, #1
  5587. 80022b4: 60fb str r3, [r7, #12]
  5588. Param -= 10U;
  5589. 80022b6: 7afb ldrb r3, [r7, #11]
  5590. 80022b8: 3b0a subs r3, #10
  5591. 80022ba: 72fb strb r3, [r7, #11]
  5592. while (Param >= 10U)
  5593. 80022bc: 7afb ldrb r3, [r7, #11]
  5594. 80022be: 2b09 cmp r3, #9
  5595. 80022c0: d8f6 bhi.n 80022b0 <RTC_ByteToBcd2+0x14>
  5596. }
  5597. return ((uint8_t)(bcdhigh << 4U) | Param);
  5598. 80022c2: 68fb ldr r3, [r7, #12]
  5599. 80022c4: b2db uxtb r3, r3
  5600. 80022c6: 011b lsls r3, r3, #4
  5601. 80022c8: b2da uxtb r2, r3
  5602. 80022ca: 7afb ldrb r3, [r7, #11]
  5603. 80022cc: 4313 orrs r3, r2
  5604. 80022ce: b2db uxtb r3, r3
  5605. }
  5606. 80022d0: 4618 mov r0, r3
  5607. 80022d2: 3714 adds r7, #20
  5608. 80022d4: 46bd mov sp, r7
  5609. 80022d6: bc80 pop {r7}
  5610. 80022d8: 4770 bx lr
  5611. 080022da <RTC_Bcd2ToByte>:
  5612. * @brief Convert from 2 digit BCD to Binary.
  5613. * @param Value BCD value to be converted
  5614. * @retval Converted word
  5615. */
  5616. uint8_t RTC_Bcd2ToByte(uint8_t Value)
  5617. {
  5618. 80022da: b480 push {r7}
  5619. 80022dc: b085 sub sp, #20
  5620. 80022de: af00 add r7, sp, #0
  5621. 80022e0: 4603 mov r3, r0
  5622. 80022e2: 71fb strb r3, [r7, #7]
  5623. uint32_t tmp;
  5624. tmp = (((uint32_t)Value & 0xF0U) >> 4U) * 10U;
  5625. 80022e4: 79fb ldrb r3, [r7, #7]
  5626. 80022e6: 091b lsrs r3, r3, #4
  5627. 80022e8: b2db uxtb r3, r3
  5628. 80022ea: 461a mov r2, r3
  5629. 80022ec: 4613 mov r3, r2
  5630. 80022ee: 009b lsls r3, r3, #2
  5631. 80022f0: 4413 add r3, r2
  5632. 80022f2: 005b lsls r3, r3, #1
  5633. 80022f4: 60fb str r3, [r7, #12]
  5634. return (uint8_t)(tmp + ((uint32_t)Value & 0x0FU));
  5635. 80022f6: 68fb ldr r3, [r7, #12]
  5636. 80022f8: b2da uxtb r2, r3
  5637. 80022fa: 79fb ldrb r3, [r7, #7]
  5638. 80022fc: f003 030f and.w r3, r3, #15
  5639. 8002300: b2db uxtb r3, r3
  5640. 8002302: 4413 add r3, r2
  5641. 8002304: b2db uxtb r3, r3
  5642. }
  5643. 8002306: 4618 mov r0, r3
  5644. 8002308: 3714 adds r7, #20
  5645. 800230a: 46bd mov sp, r7
  5646. 800230c: bc80 pop {r7}
  5647. 800230e: 4770 bx lr
  5648. 08002310 <HAL_UART_Init>:
  5649. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  5650. * the configuration information for the specified UART module.
  5651. * @retval HAL status
  5652. */
  5653. HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
  5654. {
  5655. 8002310: b580 push {r7, lr}
  5656. 8002312: b082 sub sp, #8
  5657. 8002314: af00 add r7, sp, #0
  5658. 8002316: 6078 str r0, [r7, #4]
  5659. /* Check the UART handle allocation */
  5660. if (huart == NULL)
  5661. 8002318: 687b ldr r3, [r7, #4]
  5662. 800231a: 2b00 cmp r3, #0
  5663. 800231c: d101 bne.n 8002322 <HAL_UART_Init+0x12>
  5664. {
  5665. return HAL_ERROR;
  5666. 800231e: 2301 movs r3, #1
  5667. 8002320: e03f b.n 80023a2 <HAL_UART_Init+0x92>
  5668. assert_param(IS_UART_INSTANCE(huart->Instance));
  5669. }
  5670. assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength));
  5671. assert_param(IS_UART_OVERSAMPLING(huart->Init.OverSampling));
  5672. if (huart->gState == HAL_UART_STATE_RESET)
  5673. 8002322: 687b ldr r3, [r7, #4]
  5674. 8002324: f893 3039 ldrb.w r3, [r3, #57] ; 0x39
  5675. 8002328: b2db uxtb r3, r3
  5676. 800232a: 2b00 cmp r3, #0
  5677. 800232c: d106 bne.n 800233c <HAL_UART_Init+0x2c>
  5678. {
  5679. /* Allocate lock resource and initialize it */
  5680. huart->Lock = HAL_UNLOCKED;
  5681. 800232e: 687b ldr r3, [r7, #4]
  5682. 8002330: 2200 movs r2, #0
  5683. 8002332: f883 2038 strb.w r2, [r3, #56] ; 0x38
  5684. /* Init the low level hardware */
  5685. huart->MspInitCallback(huart);
  5686. #else
  5687. /* Init the low level hardware : GPIO, CLOCK */
  5688. HAL_UART_MspInit(huart);
  5689. 8002336: 6878 ldr r0, [r7, #4]
  5690. 8002338: f7fe fa86 bl 8000848 <HAL_UART_MspInit>
  5691. #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */
  5692. }
  5693. huart->gState = HAL_UART_STATE_BUSY;
  5694. 800233c: 687b ldr r3, [r7, #4]
  5695. 800233e: 2224 movs r2, #36 ; 0x24
  5696. 8002340: f883 2039 strb.w r2, [r3, #57] ; 0x39
  5697. /* Disable the peripheral */
  5698. __HAL_UART_DISABLE(huart);
  5699. 8002344: 687b ldr r3, [r7, #4]
  5700. 8002346: 681b ldr r3, [r3, #0]
  5701. 8002348: 68da ldr r2, [r3, #12]
  5702. 800234a: 687b ldr r3, [r7, #4]
  5703. 800234c: 681b ldr r3, [r3, #0]
  5704. 800234e: f422 5200 bic.w r2, r2, #8192 ; 0x2000
  5705. 8002352: 60da str r2, [r3, #12]
  5706. /* Set the UART Communication parameters */
  5707. UART_SetConfig(huart);
  5708. 8002354: 6878 ldr r0, [r7, #4]
  5709. 8002356: f000 f829 bl 80023ac <UART_SetConfig>
  5710. /* In asynchronous mode, the following bits must be kept cleared:
  5711. - LINEN and CLKEN bits in the USART_CR2 register,
  5712. - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/
  5713. CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
  5714. 800235a: 687b ldr r3, [r7, #4]
  5715. 800235c: 681b ldr r3, [r3, #0]
  5716. 800235e: 691a ldr r2, [r3, #16]
  5717. 8002360: 687b ldr r3, [r7, #4]
  5718. 8002362: 681b ldr r3, [r3, #0]
  5719. 8002364: f422 4290 bic.w r2, r2, #18432 ; 0x4800
  5720. 8002368: 611a str r2, [r3, #16]
  5721. CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
  5722. 800236a: 687b ldr r3, [r7, #4]
  5723. 800236c: 681b ldr r3, [r3, #0]
  5724. 800236e: 695a ldr r2, [r3, #20]
  5725. 8002370: 687b ldr r3, [r7, #4]
  5726. 8002372: 681b ldr r3, [r3, #0]
  5727. 8002374: f022 022a bic.w r2, r2, #42 ; 0x2a
  5728. 8002378: 615a str r2, [r3, #20]
  5729. /* Enable the peripheral */
  5730. __HAL_UART_ENABLE(huart);
  5731. 800237a: 687b ldr r3, [r7, #4]
  5732. 800237c: 681b ldr r3, [r3, #0]
  5733. 800237e: 68da ldr r2, [r3, #12]
  5734. 8002380: 687b ldr r3, [r7, #4]
  5735. 8002382: 681b ldr r3, [r3, #0]
  5736. 8002384: f442 5200 orr.w r2, r2, #8192 ; 0x2000
  5737. 8002388: 60da str r2, [r3, #12]
  5738. /* Initialize the UART state */
  5739. huart->ErrorCode = HAL_UART_ERROR_NONE;
  5740. 800238a: 687b ldr r3, [r7, #4]
  5741. 800238c: 2200 movs r2, #0
  5742. 800238e: 63da str r2, [r3, #60] ; 0x3c
  5743. huart->gState = HAL_UART_STATE_READY;
  5744. 8002390: 687b ldr r3, [r7, #4]
  5745. 8002392: 2220 movs r2, #32
  5746. 8002394: f883 2039 strb.w r2, [r3, #57] ; 0x39
  5747. huart->RxState = HAL_UART_STATE_READY;
  5748. 8002398: 687b ldr r3, [r7, #4]
  5749. 800239a: 2220 movs r2, #32
  5750. 800239c: f883 203a strb.w r2, [r3, #58] ; 0x3a
  5751. return HAL_OK;
  5752. 80023a0: 2300 movs r3, #0
  5753. }
  5754. 80023a2: 4618 mov r0, r3
  5755. 80023a4: 3708 adds r7, #8
  5756. 80023a6: 46bd mov sp, r7
  5757. 80023a8: bd80 pop {r7, pc}
  5758. ...
  5759. 080023ac <UART_SetConfig>:
  5760. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  5761. * the configuration information for the specified UART module.
  5762. * @retval None
  5763. */
  5764. static void UART_SetConfig(UART_HandleTypeDef *huart)
  5765. {
  5766. 80023ac: b580 push {r7, lr}
  5767. 80023ae: b084 sub sp, #16
  5768. 80023b0: af00 add r7, sp, #0
  5769. 80023b2: 6078 str r0, [r7, #4]
  5770. assert_param(IS_UART_MODE(huart->Init.Mode));
  5771. /*-------------------------- USART CR2 Configuration -----------------------*/
  5772. /* Configure the UART Stop Bits: Set STOP[13:12] bits
  5773. according to huart->Init.StopBits value */
  5774. MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);
  5775. 80023b4: 687b ldr r3, [r7, #4]
  5776. 80023b6: 681b ldr r3, [r3, #0]
  5777. 80023b8: 691b ldr r3, [r3, #16]
  5778. 80023ba: f423 5140 bic.w r1, r3, #12288 ; 0x3000
  5779. 80023be: 687b ldr r3, [r7, #4]
  5780. 80023c0: 68da ldr r2, [r3, #12]
  5781. 80023c2: 687b ldr r3, [r7, #4]
  5782. 80023c4: 681b ldr r3, [r3, #0]
  5783. 80023c6: 430a orrs r2, r1
  5784. 80023c8: 611a str r2, [r3, #16]
  5785. Set the M bits according to huart->Init.WordLength value
  5786. Set PCE and PS bits according to huart->Init.Parity value
  5787. Set TE and RE bits according to huart->Init.Mode value
  5788. Set OVER8 bit according to huart->Init.OverSampling value */
  5789. tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling;
  5790. 80023ca: 687b ldr r3, [r7, #4]
  5791. 80023cc: 689a ldr r2, [r3, #8]
  5792. 80023ce: 687b ldr r3, [r7, #4]
  5793. 80023d0: 691b ldr r3, [r3, #16]
  5794. 80023d2: 431a orrs r2, r3
  5795. 80023d4: 687b ldr r3, [r7, #4]
  5796. 80023d6: 695b ldr r3, [r3, #20]
  5797. 80023d8: 431a orrs r2, r3
  5798. 80023da: 687b ldr r3, [r7, #4]
  5799. 80023dc: 69db ldr r3, [r3, #28]
  5800. 80023de: 4313 orrs r3, r2
  5801. 80023e0: 60bb str r3, [r7, #8]
  5802. MODIFY_REG(huart->Instance->CR1,
  5803. 80023e2: 687b ldr r3, [r7, #4]
  5804. 80023e4: 681b ldr r3, [r3, #0]
  5805. 80023e6: 68db ldr r3, [r3, #12]
  5806. 80023e8: f423 4316 bic.w r3, r3, #38400 ; 0x9600
  5807. 80023ec: f023 030c bic.w r3, r3, #12
  5808. 80023f0: 687a ldr r2, [r7, #4]
  5809. 80023f2: 6812 ldr r2, [r2, #0]
  5810. 80023f4: 68b9 ldr r1, [r7, #8]
  5811. 80023f6: 430b orrs r3, r1
  5812. 80023f8: 60d3 str r3, [r2, #12]
  5813. (uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8),
  5814. tmpreg);
  5815. /*-------------------------- USART CR3 Configuration -----------------------*/
  5816. /* Configure the UART HFC: Set CTSE and RTSE bits according to huart->Init.HwFlowCtl value */
  5817. MODIFY_REG(huart->Instance->CR3, (USART_CR3_RTSE | USART_CR3_CTSE), huart->Init.HwFlowCtl);
  5818. 80023fa: 687b ldr r3, [r7, #4]
  5819. 80023fc: 681b ldr r3, [r3, #0]
  5820. 80023fe: 695b ldr r3, [r3, #20]
  5821. 8002400: f423 7140 bic.w r1, r3, #768 ; 0x300
  5822. 8002404: 687b ldr r3, [r7, #4]
  5823. 8002406: 699a ldr r2, [r3, #24]
  5824. 8002408: 687b ldr r3, [r7, #4]
  5825. 800240a: 681b ldr r3, [r3, #0]
  5826. 800240c: 430a orrs r2, r1
  5827. 800240e: 615a str r2, [r3, #20]
  5828. if((huart->Instance == USART1))
  5829. 8002410: 687b ldr r3, [r7, #4]
  5830. 8002412: 681b ldr r3, [r3, #0]
  5831. 8002414: 4a55 ldr r2, [pc, #340] ; (800256c <UART_SetConfig+0x1c0>)
  5832. 8002416: 4293 cmp r3, r2
  5833. 8002418: d103 bne.n 8002422 <UART_SetConfig+0x76>
  5834. {
  5835. pclk = HAL_RCC_GetPCLK2Freq();
  5836. 800241a: f7ff fb1b bl 8001a54 <HAL_RCC_GetPCLK2Freq>
  5837. 800241e: 60f8 str r0, [r7, #12]
  5838. 8002420: e002 b.n 8002428 <UART_SetConfig+0x7c>
  5839. }
  5840. else
  5841. {
  5842. pclk = HAL_RCC_GetPCLK1Freq();
  5843. 8002422: f7ff fb03 bl 8001a2c <HAL_RCC_GetPCLK1Freq>
  5844. 8002426: 60f8 str r0, [r7, #12]
  5845. }
  5846. /*-------------------------- USART BRR Configuration ---------------------*/
  5847. if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
  5848. 8002428: 687b ldr r3, [r7, #4]
  5849. 800242a: 69db ldr r3, [r3, #28]
  5850. 800242c: f5b3 4f00 cmp.w r3, #32768 ; 0x8000
  5851. 8002430: d14c bne.n 80024cc <UART_SetConfig+0x120>
  5852. {
  5853. huart->Instance->BRR = UART_BRR_SAMPLING8(pclk, huart->Init.BaudRate);
  5854. 8002432: 68fa ldr r2, [r7, #12]
  5855. 8002434: 4613 mov r3, r2
  5856. 8002436: 009b lsls r3, r3, #2
  5857. 8002438: 4413 add r3, r2
  5858. 800243a: 009a lsls r2, r3, #2
  5859. 800243c: 441a add r2, r3
  5860. 800243e: 687b ldr r3, [r7, #4]
  5861. 8002440: 685b ldr r3, [r3, #4]
  5862. 8002442: 005b lsls r3, r3, #1
  5863. 8002444: fbb2 f3f3 udiv r3, r2, r3
  5864. 8002448: 4a49 ldr r2, [pc, #292] ; (8002570 <UART_SetConfig+0x1c4>)
  5865. 800244a: fba2 2303 umull r2, r3, r2, r3
  5866. 800244e: 095b lsrs r3, r3, #5
  5867. 8002450: 0119 lsls r1, r3, #4
  5868. 8002452: 68fa ldr r2, [r7, #12]
  5869. 8002454: 4613 mov r3, r2
  5870. 8002456: 009b lsls r3, r3, #2
  5871. 8002458: 4413 add r3, r2
  5872. 800245a: 009a lsls r2, r3, #2
  5873. 800245c: 441a add r2, r3
  5874. 800245e: 687b ldr r3, [r7, #4]
  5875. 8002460: 685b ldr r3, [r3, #4]
  5876. 8002462: 005b lsls r3, r3, #1
  5877. 8002464: fbb2 f2f3 udiv r2, r2, r3
  5878. 8002468: 4b41 ldr r3, [pc, #260] ; (8002570 <UART_SetConfig+0x1c4>)
  5879. 800246a: fba3 0302 umull r0, r3, r3, r2
  5880. 800246e: 095b lsrs r3, r3, #5
  5881. 8002470: 2064 movs r0, #100 ; 0x64
  5882. 8002472: fb00 f303 mul.w r3, r0, r3
  5883. 8002476: 1ad3 subs r3, r2, r3
  5884. 8002478: 00db lsls r3, r3, #3
  5885. 800247a: 3332 adds r3, #50 ; 0x32
  5886. 800247c: 4a3c ldr r2, [pc, #240] ; (8002570 <UART_SetConfig+0x1c4>)
  5887. 800247e: fba2 2303 umull r2, r3, r2, r3
  5888. 8002482: 095b lsrs r3, r3, #5
  5889. 8002484: 005b lsls r3, r3, #1
  5890. 8002486: f403 73f8 and.w r3, r3, #496 ; 0x1f0
  5891. 800248a: 4419 add r1, r3
  5892. 800248c: 68fa ldr r2, [r7, #12]
  5893. 800248e: 4613 mov r3, r2
  5894. 8002490: 009b lsls r3, r3, #2
  5895. 8002492: 4413 add r3, r2
  5896. 8002494: 009a lsls r2, r3, #2
  5897. 8002496: 441a add r2, r3
  5898. 8002498: 687b ldr r3, [r7, #4]
  5899. 800249a: 685b ldr r3, [r3, #4]
  5900. 800249c: 005b lsls r3, r3, #1
  5901. 800249e: fbb2 f2f3 udiv r2, r2, r3
  5902. 80024a2: 4b33 ldr r3, [pc, #204] ; (8002570 <UART_SetConfig+0x1c4>)
  5903. 80024a4: fba3 0302 umull r0, r3, r3, r2
  5904. 80024a8: 095b lsrs r3, r3, #5
  5905. 80024aa: 2064 movs r0, #100 ; 0x64
  5906. 80024ac: fb00 f303 mul.w r3, r0, r3
  5907. 80024b0: 1ad3 subs r3, r2, r3
  5908. 80024b2: 00db lsls r3, r3, #3
  5909. 80024b4: 3332 adds r3, #50 ; 0x32
  5910. 80024b6: 4a2e ldr r2, [pc, #184] ; (8002570 <UART_SetConfig+0x1c4>)
  5911. 80024b8: fba2 2303 umull r2, r3, r2, r3
  5912. 80024bc: 095b lsrs r3, r3, #5
  5913. 80024be: f003 0207 and.w r2, r3, #7
  5914. 80024c2: 687b ldr r3, [r7, #4]
  5915. 80024c4: 681b ldr r3, [r3, #0]
  5916. 80024c6: 440a add r2, r1
  5917. 80024c8: 609a str r2, [r3, #8]
  5918. }
  5919. else
  5920. {
  5921. huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate);
  5922. }
  5923. }
  5924. 80024ca: e04a b.n 8002562 <UART_SetConfig+0x1b6>
  5925. huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate);
  5926. 80024cc: 68fa ldr r2, [r7, #12]
  5927. 80024ce: 4613 mov r3, r2
  5928. 80024d0: 009b lsls r3, r3, #2
  5929. 80024d2: 4413 add r3, r2
  5930. 80024d4: 009a lsls r2, r3, #2
  5931. 80024d6: 441a add r2, r3
  5932. 80024d8: 687b ldr r3, [r7, #4]
  5933. 80024da: 685b ldr r3, [r3, #4]
  5934. 80024dc: 009b lsls r3, r3, #2
  5935. 80024de: fbb2 f3f3 udiv r3, r2, r3
  5936. 80024e2: 4a23 ldr r2, [pc, #140] ; (8002570 <UART_SetConfig+0x1c4>)
  5937. 80024e4: fba2 2303 umull r2, r3, r2, r3
  5938. 80024e8: 095b lsrs r3, r3, #5
  5939. 80024ea: 0119 lsls r1, r3, #4
  5940. 80024ec: 68fa ldr r2, [r7, #12]
  5941. 80024ee: 4613 mov r3, r2
  5942. 80024f0: 009b lsls r3, r3, #2
  5943. 80024f2: 4413 add r3, r2
  5944. 80024f4: 009a lsls r2, r3, #2
  5945. 80024f6: 441a add r2, r3
  5946. 80024f8: 687b ldr r3, [r7, #4]
  5947. 80024fa: 685b ldr r3, [r3, #4]
  5948. 80024fc: 009b lsls r3, r3, #2
  5949. 80024fe: fbb2 f2f3 udiv r2, r2, r3
  5950. 8002502: 4b1b ldr r3, [pc, #108] ; (8002570 <UART_SetConfig+0x1c4>)
  5951. 8002504: fba3 0302 umull r0, r3, r3, r2
  5952. 8002508: 095b lsrs r3, r3, #5
  5953. 800250a: 2064 movs r0, #100 ; 0x64
  5954. 800250c: fb00 f303 mul.w r3, r0, r3
  5955. 8002510: 1ad3 subs r3, r2, r3
  5956. 8002512: 011b lsls r3, r3, #4
  5957. 8002514: 3332 adds r3, #50 ; 0x32
  5958. 8002516: 4a16 ldr r2, [pc, #88] ; (8002570 <UART_SetConfig+0x1c4>)
  5959. 8002518: fba2 2303 umull r2, r3, r2, r3
  5960. 800251c: 095b lsrs r3, r3, #5
  5961. 800251e: f003 03f0 and.w r3, r3, #240 ; 0xf0
  5962. 8002522: 4419 add r1, r3
  5963. 8002524: 68fa ldr r2, [r7, #12]
  5964. 8002526: 4613 mov r3, r2
  5965. 8002528: 009b lsls r3, r3, #2
  5966. 800252a: 4413 add r3, r2
  5967. 800252c: 009a lsls r2, r3, #2
  5968. 800252e: 441a add r2, r3
  5969. 8002530: 687b ldr r3, [r7, #4]
  5970. 8002532: 685b ldr r3, [r3, #4]
  5971. 8002534: 009b lsls r3, r3, #2
  5972. 8002536: fbb2 f2f3 udiv r2, r2, r3
  5973. 800253a: 4b0d ldr r3, [pc, #52] ; (8002570 <UART_SetConfig+0x1c4>)
  5974. 800253c: fba3 0302 umull r0, r3, r3, r2
  5975. 8002540: 095b lsrs r3, r3, #5
  5976. 8002542: 2064 movs r0, #100 ; 0x64
  5977. 8002544: fb00 f303 mul.w r3, r0, r3
  5978. 8002548: 1ad3 subs r3, r2, r3
  5979. 800254a: 011b lsls r3, r3, #4
  5980. 800254c: 3332 adds r3, #50 ; 0x32
  5981. 800254e: 4a08 ldr r2, [pc, #32] ; (8002570 <UART_SetConfig+0x1c4>)
  5982. 8002550: fba2 2303 umull r2, r3, r2, r3
  5983. 8002554: 095b lsrs r3, r3, #5
  5984. 8002556: f003 020f and.w r2, r3, #15
  5985. 800255a: 687b ldr r3, [r7, #4]
  5986. 800255c: 681b ldr r3, [r3, #0]
  5987. 800255e: 440a add r2, r1
  5988. 8002560: 609a str r2, [r3, #8]
  5989. }
  5990. 8002562: bf00 nop
  5991. 8002564: 3710 adds r7, #16
  5992. 8002566: 46bd mov sp, r7
  5993. 8002568: bd80 pop {r7, pc}
  5994. 800256a: bf00 nop
  5995. 800256c: 40013800 .word 0x40013800
  5996. 8002570: 51eb851f .word 0x51eb851f
  5997. 08002574 <__libc_init_array>:
  5998. 8002574: b570 push {r4, r5, r6, lr}
  5999. 8002576: 2500 movs r5, #0
  6000. 8002578: 4e0c ldr r6, [pc, #48] ; (80025ac <__libc_init_array+0x38>)
  6001. 800257a: 4c0d ldr r4, [pc, #52] ; (80025b0 <__libc_init_array+0x3c>)
  6002. 800257c: 1ba4 subs r4, r4, r6
  6003. 800257e: 10a4 asrs r4, r4, #2
  6004. 8002580: 42a5 cmp r5, r4
  6005. 8002582: d109 bne.n 8002598 <__libc_init_array+0x24>
  6006. 8002584: f000 f822 bl 80025cc <_init>
  6007. 8002588: 2500 movs r5, #0
  6008. 800258a: 4e0a ldr r6, [pc, #40] ; (80025b4 <__libc_init_array+0x40>)
  6009. 800258c: 4c0a ldr r4, [pc, #40] ; (80025b8 <__libc_init_array+0x44>)
  6010. 800258e: 1ba4 subs r4, r4, r6
  6011. 8002590: 10a4 asrs r4, r4, #2
  6012. 8002592: 42a5 cmp r5, r4
  6013. 8002594: d105 bne.n 80025a2 <__libc_init_array+0x2e>
  6014. 8002596: bd70 pop {r4, r5, r6, pc}
  6015. 8002598: f856 3025 ldr.w r3, [r6, r5, lsl #2]
  6016. 800259c: 4798 blx r3
  6017. 800259e: 3501 adds r5, #1
  6018. 80025a0: e7ee b.n 8002580 <__libc_init_array+0xc>
  6019. 80025a2: f856 3025 ldr.w r3, [r6, r5, lsl #2]
  6020. 80025a6: 4798 blx r3
  6021. 80025a8: 3501 adds r5, #1
  6022. 80025aa: e7f2 b.n 8002592 <__libc_init_array+0x1e>
  6023. 80025ac: 08002610 .word 0x08002610
  6024. 80025b0: 08002610 .word 0x08002610
  6025. 80025b4: 08002610 .word 0x08002610
  6026. 80025b8: 08002614 .word 0x08002614
  6027. 080025bc <memset>:
  6028. 80025bc: 4603 mov r3, r0
  6029. 80025be: 4402 add r2, r0
  6030. 80025c0: 4293 cmp r3, r2
  6031. 80025c2: d100 bne.n 80025c6 <memset+0xa>
  6032. 80025c4: 4770 bx lr
  6033. 80025c6: f803 1b01 strb.w r1, [r3], #1
  6034. 80025ca: e7f9 b.n 80025c0 <memset+0x4>
  6035. 080025cc <_init>:
  6036. 80025cc: b5f8 push {r3, r4, r5, r6, r7, lr}
  6037. 80025ce: bf00 nop
  6038. 80025d0: bcf8 pop {r3, r4, r5, r6, r7}
  6039. 80025d2: bc08 pop {r3}
  6040. 80025d4: 469e mov lr, r3
  6041. 80025d6: 4770 bx lr
  6042. 080025d8 <_fini>:
  6043. 80025d8: b5f8 push {r3, r4, r5, r6, r7, lr}
  6044. 80025da: bf00 nop
  6045. 80025dc: bcf8 pop {r3, r4, r5, r6, r7}
  6046. 80025de: bc08 pop {r3}
  6047. 80025e0: 469e mov lr, r3
  6048. 80025e2: 4770 bx lr