STM32G431RB_Bootloader.list 313 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640
  1. STM32G431RB_Bootloader.elf: file format elf32-littlearm
  2. Sections:
  3. Idx Name Size VMA LMA File off Algn
  4. 0 .isr_vector 000001d8 08000000 08000000 00010000 2**0
  5. CONTENTS, ALLOC, LOAD, READONLY, DATA
  6. 1 .text 00002e80 080001d8 080001d8 000101d8 2**3
  7. CONTENTS, ALLOC, LOAD, READONLY, CODE
  8. 2 .rodata 00000064 08003058 08003058 00013058 2**2
  9. CONTENTS, ALLOC, LOAD, READONLY, DATA
  10. 3 .ARM.extab 00000000 080030bc 080030bc 0002002c 2**0
  11. CONTENTS
  12. 4 .ARM 00000008 080030bc 080030bc 000130bc 2**2
  13. CONTENTS, ALLOC, LOAD, READONLY, DATA
  14. 5 .preinit_array 00000000 080030c4 080030c4 0002002c 2**0
  15. CONTENTS, ALLOC, LOAD, DATA
  16. 6 .init_array 00000004 080030c4 080030c4 000130c4 2**2
  17. CONTENTS, ALLOC, LOAD, DATA
  18. 7 .fini_array 00000004 080030c8 080030c8 000130c8 2**2
  19. CONTENTS, ALLOC, LOAD, DATA
  20. 8 .data 0000002c 20000000 080030cc 00020000 2**2
  21. CONTENTS, ALLOC, LOAD, DATA
  22. 9 .bss 00000100 2000002c 080030f8 0002002c 2**2
  23. ALLOC
  24. 10 ._user_heap_stack 00000604 2000012c 080030f8 0002012c 2**0
  25. ALLOC
  26. 11 .noinit 00000004 20007fc0 20007fc0 00027fc0 2**2
  27. ALLOC
  28. 12 .ARM.attributes 00000030 00000000 00000000 0002002c 2**0
  29. CONTENTS, READONLY
  30. 13 .debug_info 0001c9bb 00000000 00000000 0002005c 2**0
  31. CONTENTS, READONLY, DEBUGGING, OCTETS
  32. 14 .debug_abbrev 0000348c 00000000 00000000 0003ca17 2**0
  33. CONTENTS, READONLY, DEBUGGING, OCTETS
  34. 15 .debug_loc 0001707f 00000000 00000000 0003fea3 2**0
  35. CONTENTS, READONLY, DEBUGGING, OCTETS
  36. 16 .debug_aranges 00000dc8 00000000 00000000 00056f28 2**3
  37. CONTENTS, READONLY, DEBUGGING, OCTETS
  38. 17 .debug_ranges 00002468 00000000 00000000 00057cf0 2**3
  39. CONTENTS, READONLY, DEBUGGING, OCTETS
  40. 18 .debug_macro 0001e337 00000000 00000000 0005a158 2**0
  41. CONTENTS, READONLY, DEBUGGING, OCTETS
  42. 19 .debug_line 0001c4d3 00000000 00000000 0007848f 2**0
  43. CONTENTS, READONLY, DEBUGGING, OCTETS
  44. 20 .debug_str 000c573a 00000000 00000000 00094962 2**0
  45. CONTENTS, READONLY, DEBUGGING, OCTETS
  46. 21 .comment 00000050 00000000 00000000 0015a09c 2**0
  47. CONTENTS, READONLY
  48. 22 .debug_frame 00002ab0 00000000 00000000 0015a0ec 2**2
  49. CONTENTS, READONLY, DEBUGGING, OCTETS
  50. Disassembly of section .text:
  51. 080001d8 <__do_global_dtors_aux>:
  52. 80001d8: b510 push {r4, lr}
  53. 80001da: 4c05 ldr r4, [pc, #20] ; (80001f0 <__do_global_dtors_aux+0x18>)
  54. 80001dc: 7823 ldrb r3, [r4, #0]
  55. 80001de: b933 cbnz r3, 80001ee <__do_global_dtors_aux+0x16>
  56. 80001e0: 4b04 ldr r3, [pc, #16] ; (80001f4 <__do_global_dtors_aux+0x1c>)
  57. 80001e2: b113 cbz r3, 80001ea <__do_global_dtors_aux+0x12>
  58. 80001e4: 4804 ldr r0, [pc, #16] ; (80001f8 <__do_global_dtors_aux+0x20>)
  59. 80001e6: f3af 8000 nop.w
  60. 80001ea: 2301 movs r3, #1
  61. 80001ec: 7023 strb r3, [r4, #0]
  62. 80001ee: bd10 pop {r4, pc}
  63. 80001f0: 2000002c .word 0x2000002c
  64. 80001f4: 00000000 .word 0x00000000
  65. 80001f8: 08003040 .word 0x08003040
  66. 080001fc <frame_dummy>:
  67. 80001fc: b508 push {r3, lr}
  68. 80001fe: 4b03 ldr r3, [pc, #12] ; (800020c <frame_dummy+0x10>)
  69. 8000200: b11b cbz r3, 800020a <frame_dummy+0xe>
  70. 8000202: 4903 ldr r1, [pc, #12] ; (8000210 <frame_dummy+0x14>)
  71. 8000204: 4803 ldr r0, [pc, #12] ; (8000214 <frame_dummy+0x18>)
  72. 8000206: f3af 8000 nop.w
  73. 800020a: bd08 pop {r3, pc}
  74. 800020c: 00000000 .word 0x00000000
  75. 8000210: 20000030 .word 0x20000030
  76. 8000214: 08003040 .word 0x08003040
  77. 08000218 <__aeabi_uldivmod>:
  78. 8000218: b953 cbnz r3, 8000230 <__aeabi_uldivmod+0x18>
  79. 800021a: b94a cbnz r2, 8000230 <__aeabi_uldivmod+0x18>
  80. 800021c: 2900 cmp r1, #0
  81. 800021e: bf08 it eq
  82. 8000220: 2800 cmpeq r0, #0
  83. 8000222: bf1c itt ne
  84. 8000224: f04f 31ff movne.w r1, #4294967295 ; 0xffffffff
  85. 8000228: f04f 30ff movne.w r0, #4294967295 ; 0xffffffff
  86. 800022c: f000 b974 b.w 8000518 <__aeabi_idiv0>
  87. 8000230: f1ad 0c08 sub.w ip, sp, #8
  88. 8000234: e96d ce04 strd ip, lr, [sp, #-16]!
  89. 8000238: f000 f806 bl 8000248 <__udivmoddi4>
  90. 800023c: f8dd e004 ldr.w lr, [sp, #4]
  91. 8000240: e9dd 2302 ldrd r2, r3, [sp, #8]
  92. 8000244: b004 add sp, #16
  93. 8000246: 4770 bx lr
  94. 08000248 <__udivmoddi4>:
  95. 8000248: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
  96. 800024c: 9d08 ldr r5, [sp, #32]
  97. 800024e: 4604 mov r4, r0
  98. 8000250: 468e mov lr, r1
  99. 8000252: 2b00 cmp r3, #0
  100. 8000254: d14d bne.n 80002f2 <__udivmoddi4+0xaa>
  101. 8000256: 428a cmp r2, r1
  102. 8000258: 4694 mov ip, r2
  103. 800025a: d969 bls.n 8000330 <__udivmoddi4+0xe8>
  104. 800025c: fab2 f282 clz r2, r2
  105. 8000260: b152 cbz r2, 8000278 <__udivmoddi4+0x30>
  106. 8000262: fa01 f302 lsl.w r3, r1, r2
  107. 8000266: f1c2 0120 rsb r1, r2, #32
  108. 800026a: fa20 f101 lsr.w r1, r0, r1
  109. 800026e: fa0c fc02 lsl.w ip, ip, r2
  110. 8000272: ea41 0e03 orr.w lr, r1, r3
  111. 8000276: 4094 lsls r4, r2
  112. 8000278: ea4f 481c mov.w r8, ip, lsr #16
  113. 800027c: 0c21 lsrs r1, r4, #16
  114. 800027e: fbbe f6f8 udiv r6, lr, r8
  115. 8000282: fa1f f78c uxth.w r7, ip
  116. 8000286: fb08 e316 mls r3, r8, r6, lr
  117. 800028a: ea41 4303 orr.w r3, r1, r3, lsl #16
  118. 800028e: fb06 f107 mul.w r1, r6, r7
  119. 8000292: 4299 cmp r1, r3
  120. 8000294: d90a bls.n 80002ac <__udivmoddi4+0x64>
  121. 8000296: eb1c 0303 adds.w r3, ip, r3
  122. 800029a: f106 30ff add.w r0, r6, #4294967295 ; 0xffffffff
  123. 800029e: f080 811f bcs.w 80004e0 <__udivmoddi4+0x298>
  124. 80002a2: 4299 cmp r1, r3
  125. 80002a4: f240 811c bls.w 80004e0 <__udivmoddi4+0x298>
  126. 80002a8: 3e02 subs r6, #2
  127. 80002aa: 4463 add r3, ip
  128. 80002ac: 1a5b subs r3, r3, r1
  129. 80002ae: b2a4 uxth r4, r4
  130. 80002b0: fbb3 f0f8 udiv r0, r3, r8
  131. 80002b4: fb08 3310 mls r3, r8, r0, r3
  132. 80002b8: ea44 4403 orr.w r4, r4, r3, lsl #16
  133. 80002bc: fb00 f707 mul.w r7, r0, r7
  134. 80002c0: 42a7 cmp r7, r4
  135. 80002c2: d90a bls.n 80002da <__udivmoddi4+0x92>
  136. 80002c4: eb1c 0404 adds.w r4, ip, r4
  137. 80002c8: f100 33ff add.w r3, r0, #4294967295 ; 0xffffffff
  138. 80002cc: f080 810a bcs.w 80004e4 <__udivmoddi4+0x29c>
  139. 80002d0: 42a7 cmp r7, r4
  140. 80002d2: f240 8107 bls.w 80004e4 <__udivmoddi4+0x29c>
  141. 80002d6: 4464 add r4, ip
  142. 80002d8: 3802 subs r0, #2
  143. 80002da: ea40 4006 orr.w r0, r0, r6, lsl #16
  144. 80002de: 1be4 subs r4, r4, r7
  145. 80002e0: 2600 movs r6, #0
  146. 80002e2: b11d cbz r5, 80002ec <__udivmoddi4+0xa4>
  147. 80002e4: 40d4 lsrs r4, r2
  148. 80002e6: 2300 movs r3, #0
  149. 80002e8: e9c5 4300 strd r4, r3, [r5]
  150. 80002ec: 4631 mov r1, r6
  151. 80002ee: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  152. 80002f2: 428b cmp r3, r1
  153. 80002f4: d909 bls.n 800030a <__udivmoddi4+0xc2>
  154. 80002f6: 2d00 cmp r5, #0
  155. 80002f8: f000 80ef beq.w 80004da <__udivmoddi4+0x292>
  156. 80002fc: 2600 movs r6, #0
  157. 80002fe: e9c5 0100 strd r0, r1, [r5]
  158. 8000302: 4630 mov r0, r6
  159. 8000304: 4631 mov r1, r6
  160. 8000306: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  161. 800030a: fab3 f683 clz r6, r3
  162. 800030e: 2e00 cmp r6, #0
  163. 8000310: d14a bne.n 80003a8 <__udivmoddi4+0x160>
  164. 8000312: 428b cmp r3, r1
  165. 8000314: d302 bcc.n 800031c <__udivmoddi4+0xd4>
  166. 8000316: 4282 cmp r2, r0
  167. 8000318: f200 80f9 bhi.w 800050e <__udivmoddi4+0x2c6>
  168. 800031c: 1a84 subs r4, r0, r2
  169. 800031e: eb61 0303 sbc.w r3, r1, r3
  170. 8000322: 2001 movs r0, #1
  171. 8000324: 469e mov lr, r3
  172. 8000326: 2d00 cmp r5, #0
  173. 8000328: d0e0 beq.n 80002ec <__udivmoddi4+0xa4>
  174. 800032a: e9c5 4e00 strd r4, lr, [r5]
  175. 800032e: e7dd b.n 80002ec <__udivmoddi4+0xa4>
  176. 8000330: b902 cbnz r2, 8000334 <__udivmoddi4+0xec>
  177. 8000332: deff udf #255 ; 0xff
  178. 8000334: fab2 f282 clz r2, r2
  179. 8000338: 2a00 cmp r2, #0
  180. 800033a: f040 8092 bne.w 8000462 <__udivmoddi4+0x21a>
  181. 800033e: eba1 010c sub.w r1, r1, ip
  182. 8000342: ea4f 471c mov.w r7, ip, lsr #16
  183. 8000346: fa1f fe8c uxth.w lr, ip
  184. 800034a: 2601 movs r6, #1
  185. 800034c: 0c20 lsrs r0, r4, #16
  186. 800034e: fbb1 f3f7 udiv r3, r1, r7
  187. 8000352: fb07 1113 mls r1, r7, r3, r1
  188. 8000356: ea40 4101 orr.w r1, r0, r1, lsl #16
  189. 800035a: fb0e f003 mul.w r0, lr, r3
  190. 800035e: 4288 cmp r0, r1
  191. 8000360: d908 bls.n 8000374 <__udivmoddi4+0x12c>
  192. 8000362: eb1c 0101 adds.w r1, ip, r1
  193. 8000366: f103 38ff add.w r8, r3, #4294967295 ; 0xffffffff
  194. 800036a: d202 bcs.n 8000372 <__udivmoddi4+0x12a>
  195. 800036c: 4288 cmp r0, r1
  196. 800036e: f200 80cb bhi.w 8000508 <__udivmoddi4+0x2c0>
  197. 8000372: 4643 mov r3, r8
  198. 8000374: 1a09 subs r1, r1, r0
  199. 8000376: b2a4 uxth r4, r4
  200. 8000378: fbb1 f0f7 udiv r0, r1, r7
  201. 800037c: fb07 1110 mls r1, r7, r0, r1
  202. 8000380: ea44 4401 orr.w r4, r4, r1, lsl #16
  203. 8000384: fb0e fe00 mul.w lr, lr, r0
  204. 8000388: 45a6 cmp lr, r4
  205. 800038a: d908 bls.n 800039e <__udivmoddi4+0x156>
  206. 800038c: eb1c 0404 adds.w r4, ip, r4
  207. 8000390: f100 31ff add.w r1, r0, #4294967295 ; 0xffffffff
  208. 8000394: d202 bcs.n 800039c <__udivmoddi4+0x154>
  209. 8000396: 45a6 cmp lr, r4
  210. 8000398: f200 80bb bhi.w 8000512 <__udivmoddi4+0x2ca>
  211. 800039c: 4608 mov r0, r1
  212. 800039e: eba4 040e sub.w r4, r4, lr
  213. 80003a2: ea40 4003 orr.w r0, r0, r3, lsl #16
  214. 80003a6: e79c b.n 80002e2 <__udivmoddi4+0x9a>
  215. 80003a8: f1c6 0720 rsb r7, r6, #32
  216. 80003ac: 40b3 lsls r3, r6
  217. 80003ae: fa22 fc07 lsr.w ip, r2, r7
  218. 80003b2: ea4c 0c03 orr.w ip, ip, r3
  219. 80003b6: fa20 f407 lsr.w r4, r0, r7
  220. 80003ba: fa01 f306 lsl.w r3, r1, r6
  221. 80003be: 431c orrs r4, r3
  222. 80003c0: 40f9 lsrs r1, r7
  223. 80003c2: ea4f 491c mov.w r9, ip, lsr #16
  224. 80003c6: fa00 f306 lsl.w r3, r0, r6
  225. 80003ca: fbb1 f8f9 udiv r8, r1, r9
  226. 80003ce: 0c20 lsrs r0, r4, #16
  227. 80003d0: fa1f fe8c uxth.w lr, ip
  228. 80003d4: fb09 1118 mls r1, r9, r8, r1
  229. 80003d8: ea40 4101 orr.w r1, r0, r1, lsl #16
  230. 80003dc: fb08 f00e mul.w r0, r8, lr
  231. 80003e0: 4288 cmp r0, r1
  232. 80003e2: fa02 f206 lsl.w r2, r2, r6
  233. 80003e6: d90b bls.n 8000400 <__udivmoddi4+0x1b8>
  234. 80003e8: eb1c 0101 adds.w r1, ip, r1
  235. 80003ec: f108 3aff add.w sl, r8, #4294967295 ; 0xffffffff
  236. 80003f0: f080 8088 bcs.w 8000504 <__udivmoddi4+0x2bc>
  237. 80003f4: 4288 cmp r0, r1
  238. 80003f6: f240 8085 bls.w 8000504 <__udivmoddi4+0x2bc>
  239. 80003fa: f1a8 0802 sub.w r8, r8, #2
  240. 80003fe: 4461 add r1, ip
  241. 8000400: 1a09 subs r1, r1, r0
  242. 8000402: b2a4 uxth r4, r4
  243. 8000404: fbb1 f0f9 udiv r0, r1, r9
  244. 8000408: fb09 1110 mls r1, r9, r0, r1
  245. 800040c: ea44 4101 orr.w r1, r4, r1, lsl #16
  246. 8000410: fb00 fe0e mul.w lr, r0, lr
  247. 8000414: 458e cmp lr, r1
  248. 8000416: d908 bls.n 800042a <__udivmoddi4+0x1e2>
  249. 8000418: eb1c 0101 adds.w r1, ip, r1
  250. 800041c: f100 34ff add.w r4, r0, #4294967295 ; 0xffffffff
  251. 8000420: d26c bcs.n 80004fc <__udivmoddi4+0x2b4>
  252. 8000422: 458e cmp lr, r1
  253. 8000424: d96a bls.n 80004fc <__udivmoddi4+0x2b4>
  254. 8000426: 3802 subs r0, #2
  255. 8000428: 4461 add r1, ip
  256. 800042a: ea40 4008 orr.w r0, r0, r8, lsl #16
  257. 800042e: fba0 9402 umull r9, r4, r0, r2
  258. 8000432: eba1 010e sub.w r1, r1, lr
  259. 8000436: 42a1 cmp r1, r4
  260. 8000438: 46c8 mov r8, r9
  261. 800043a: 46a6 mov lr, r4
  262. 800043c: d356 bcc.n 80004ec <__udivmoddi4+0x2a4>
  263. 800043e: d053 beq.n 80004e8 <__udivmoddi4+0x2a0>
  264. 8000440: b15d cbz r5, 800045a <__udivmoddi4+0x212>
  265. 8000442: ebb3 0208 subs.w r2, r3, r8
  266. 8000446: eb61 010e sbc.w r1, r1, lr
  267. 800044a: fa01 f707 lsl.w r7, r1, r7
  268. 800044e: fa22 f306 lsr.w r3, r2, r6
  269. 8000452: 40f1 lsrs r1, r6
  270. 8000454: 431f orrs r7, r3
  271. 8000456: e9c5 7100 strd r7, r1, [r5]
  272. 800045a: 2600 movs r6, #0
  273. 800045c: 4631 mov r1, r6
  274. 800045e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  275. 8000462: f1c2 0320 rsb r3, r2, #32
  276. 8000466: 40d8 lsrs r0, r3
  277. 8000468: fa0c fc02 lsl.w ip, ip, r2
  278. 800046c: fa21 f303 lsr.w r3, r1, r3
  279. 8000470: 4091 lsls r1, r2
  280. 8000472: 4301 orrs r1, r0
  281. 8000474: ea4f 471c mov.w r7, ip, lsr #16
  282. 8000478: fa1f fe8c uxth.w lr, ip
  283. 800047c: fbb3 f0f7 udiv r0, r3, r7
  284. 8000480: fb07 3610 mls r6, r7, r0, r3
  285. 8000484: 0c0b lsrs r3, r1, #16
  286. 8000486: ea43 4306 orr.w r3, r3, r6, lsl #16
  287. 800048a: fb00 f60e mul.w r6, r0, lr
  288. 800048e: 429e cmp r6, r3
  289. 8000490: fa04 f402 lsl.w r4, r4, r2
  290. 8000494: d908 bls.n 80004a8 <__udivmoddi4+0x260>
  291. 8000496: eb1c 0303 adds.w r3, ip, r3
  292. 800049a: f100 38ff add.w r8, r0, #4294967295 ; 0xffffffff
  293. 800049e: d22f bcs.n 8000500 <__udivmoddi4+0x2b8>
  294. 80004a0: 429e cmp r6, r3
  295. 80004a2: d92d bls.n 8000500 <__udivmoddi4+0x2b8>
  296. 80004a4: 3802 subs r0, #2
  297. 80004a6: 4463 add r3, ip
  298. 80004a8: 1b9b subs r3, r3, r6
  299. 80004aa: b289 uxth r1, r1
  300. 80004ac: fbb3 f6f7 udiv r6, r3, r7
  301. 80004b0: fb07 3316 mls r3, r7, r6, r3
  302. 80004b4: ea41 4103 orr.w r1, r1, r3, lsl #16
  303. 80004b8: fb06 f30e mul.w r3, r6, lr
  304. 80004bc: 428b cmp r3, r1
  305. 80004be: d908 bls.n 80004d2 <__udivmoddi4+0x28a>
  306. 80004c0: eb1c 0101 adds.w r1, ip, r1
  307. 80004c4: f106 38ff add.w r8, r6, #4294967295 ; 0xffffffff
  308. 80004c8: d216 bcs.n 80004f8 <__udivmoddi4+0x2b0>
  309. 80004ca: 428b cmp r3, r1
  310. 80004cc: d914 bls.n 80004f8 <__udivmoddi4+0x2b0>
  311. 80004ce: 3e02 subs r6, #2
  312. 80004d0: 4461 add r1, ip
  313. 80004d2: 1ac9 subs r1, r1, r3
  314. 80004d4: ea46 4600 orr.w r6, r6, r0, lsl #16
  315. 80004d8: e738 b.n 800034c <__udivmoddi4+0x104>
  316. 80004da: 462e mov r6, r5
  317. 80004dc: 4628 mov r0, r5
  318. 80004de: e705 b.n 80002ec <__udivmoddi4+0xa4>
  319. 80004e0: 4606 mov r6, r0
  320. 80004e2: e6e3 b.n 80002ac <__udivmoddi4+0x64>
  321. 80004e4: 4618 mov r0, r3
  322. 80004e6: e6f8 b.n 80002da <__udivmoddi4+0x92>
  323. 80004e8: 454b cmp r3, r9
  324. 80004ea: d2a9 bcs.n 8000440 <__udivmoddi4+0x1f8>
  325. 80004ec: ebb9 0802 subs.w r8, r9, r2
  326. 80004f0: eb64 0e0c sbc.w lr, r4, ip
  327. 80004f4: 3801 subs r0, #1
  328. 80004f6: e7a3 b.n 8000440 <__udivmoddi4+0x1f8>
  329. 80004f8: 4646 mov r6, r8
  330. 80004fa: e7ea b.n 80004d2 <__udivmoddi4+0x28a>
  331. 80004fc: 4620 mov r0, r4
  332. 80004fe: e794 b.n 800042a <__udivmoddi4+0x1e2>
  333. 8000500: 4640 mov r0, r8
  334. 8000502: e7d1 b.n 80004a8 <__udivmoddi4+0x260>
  335. 8000504: 46d0 mov r8, sl
  336. 8000506: e77b b.n 8000400 <__udivmoddi4+0x1b8>
  337. 8000508: 3b02 subs r3, #2
  338. 800050a: 4461 add r1, ip
  339. 800050c: e732 b.n 8000374 <__udivmoddi4+0x12c>
  340. 800050e: 4630 mov r0, r6
  341. 8000510: e709 b.n 8000326 <__udivmoddi4+0xde>
  342. 8000512: 4464 add r4, ip
  343. 8000514: 3802 subs r0, #2
  344. 8000516: e742 b.n 800039e <__udivmoddi4+0x156>
  345. 08000518 <__aeabi_idiv0>:
  346. 8000518: 4770 bx lr
  347. 800051a: bf00 nop
  348. 0800051c <Bootloader_Deinit_All>:
  349. static const uint32_t XTEA_KEY[4] = {
  350. 0xA56BABCD, 0x0000FFFF, 0xABCDEF12, 0x13572468
  351. };
  352. void Bootloader_Deinit_All(void) {
  353. 800051c: b510 push {r4, lr}
  354. // Deinit ALL
  355. HAL_TIM_Base_Stop(&htim6);
  356. 800051e: 4c10 ldr r4, [pc, #64] ; (8000560 <Bootloader_Deinit_All+0x44>)
  357. void Bootloader_Deinit_All(void) {
  358. 8000520: b086 sub sp, #24
  359. HAL_TIM_Base_Stop(&htim6);
  360. 8000522: 4620 mov r0, r4
  361. 8000524: f001 fe68 bl 80021f8 <HAL_TIM_Base_Stop>
  362. HAL_TIM_Base_DeInit(&htim6);
  363. 8000528: 4620 mov r0, r4
  364. 800052a: f001 fe31 bl 8002190 <HAL_TIM_Base_DeInit>
  365. HAL_UART_DeInit(&huart1);
  366. 800052e: 480d ldr r0, [pc, #52] ; (8000564 <Bootloader_Deinit_All+0x48>)
  367. 8000530: f001 fff6 bl 8002520 <HAL_UART_DeInit>
  368. GPIO_InitTypeDef GPIO_InitStruct = {0};
  369. 8000534: 2300 movs r3, #0
  370. GPIO_InitStruct.Pin = LED_Pin;
  371. 8000536: f44f 5200 mov.w r2, #8192 ; 0x2000
  372. HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
  373. 800053a: a901 add r1, sp, #4
  374. 800053c: 480a ldr r0, [pc, #40] ; (8000568 <Bootloader_Deinit_All+0x4c>)
  375. GPIO_InitTypeDef GPIO_InitStruct = {0};
  376. 800053e: 9305 str r3, [sp, #20]
  377. 8000540: e9cd 2301 strd r2, r3, [sp, #4]
  378. 8000544: e9cd 3303 strd r3, r3, [sp, #12]
  379. HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
  380. 8000548: f000 fe3a bl 80011c0 <HAL_GPIO_Init>
  381. GPIO_InitStruct.Pin = KEY_Pin;
  382. 800054c: 2304 movs r3, #4
  383. HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
  384. 800054e: 4807 ldr r0, [pc, #28] ; (800056c <Bootloader_Deinit_All+0x50>)
  385. GPIO_InitStruct.Pin = KEY_Pin;
  386. 8000550: 9301 str r3, [sp, #4]
  387. HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
  388. 8000552: eb0d 0103 add.w r1, sp, r3
  389. 8000556: f000 fe33 bl 80011c0 <HAL_GPIO_Init>
  390. }
  391. 800055a: b006 add sp, #24
  392. 800055c: bd10 pop {r4, pc}
  393. 800055e: bf00 nop
  394. 8000560: 20000048 .word 0x20000048
  395. 8000564: 20000094 .word 0x20000094
  396. 8000568: 48000800 .word 0x48000800
  397. 800056c: 48000c00 .word 0x48000c00
  398. 08000570 <Bootloader_flag>:
  399. }
  400. HAL_FLASH_Lock();
  401. }
  402. uint8_t Bootloader_flag(void) {
  403. 8000570: b508 push {r3, lr}
  404. if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_SET) {
  405. 8000572: 4807 ldr r0, [pc, #28] ; (8000590 <Bootloader_flag+0x20>)
  406. 8000574: 2104 movs r1, #4
  407. 8000576: f000 ffc7 bl 8001508 <HAL_GPIO_ReadPin>
  408. 800057a: 2801 cmp r0, #1
  409. 800057c: d006 beq.n 800058c <Bootloader_flag+0x1c>
  410. return 1;
  411. } else {
  412. return (boot_magic == BOOT_MAGIC_VALUE);
  413. 800057e: 4a05 ldr r2, [pc, #20] ; (8000594 <Bootloader_flag+0x24>)
  414. 8000580: 4b05 ldr r3, [pc, #20] ; (8000598 <Bootloader_flag+0x28>)
  415. 8000582: 6810 ldr r0, [r2, #0]
  416. 8000584: 1ac0 subs r0, r0, r3
  417. 8000586: fab0 f080 clz r0, r0
  418. 800058a: 0940 lsrs r0, r0, #5
  419. }
  420. }
  421. 800058c: bd08 pop {r3, pc}
  422. 800058e: bf00 nop
  423. 8000590: 48000c00 .word 0x48000c00
  424. 8000594: 20007fc0 .word 0x20007fc0
  425. 8000598: b001b001 .word 0xb001b001
  426. 0800059c <Bootloader_flag_reset>:
  427. void Bootloader_flag_reset(void) {
  428. boot_magic = 0;
  429. 800059c: 4b01 ldr r3, [pc, #4] ; (80005a4 <Bootloader_flag_reset+0x8>)
  430. 800059e: 2200 movs r2, #0
  431. 80005a0: 601a str r2, [r3, #0]
  432. }
  433. 80005a2: 4770 bx lr
  434. 80005a4: 20007fc0 .word 0x20007fc0
  435. 080005a8 <Bootloader_cmd>:
  436. HAL_FLASH_Lock();
  437. }
  438. void Bootloader_cmd(void)
  439. {
  440. 80005a8: b580 push {r7, lr}
  441. EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
  442. 80005aa: ed9f 8b91 vldr d8, [pc, #580] ; 80007f0 <Bootloader_cmd+0x248>
  443. {
  444. 80005ae: b08a sub sp, #40 ; 0x28
  445. uint8_t rx[1], tx;
  446. while (1) {
  447. tx = '$';
  448. HAL_UART_Transmit(&huart1, &tx, 1, 100);
  449. 80005b0: f8df 8264 ldr.w r8, [pc, #612] ; 8000818 <Bootloader_cmd+0x270>
  450. 80005b4: ac02 add r4, sp, #8
  451. 80005b6: ad04 add r5, sp, #16
  452. 80005b8: af06 add r7, sp, #24
  453. tx = '$';
  454. 80005ba: 2024 movs r0, #36 ; 0x24
  455. HAL_UART_Transmit(&huart1, &tx, 1, 100);
  456. 80005bc: 2364 movs r3, #100 ; 0x64
  457. 80005be: 2201 movs r2, #1
  458. 80005c0: f10d 0107 add.w r1, sp, #7
  459. tx = '$';
  460. 80005c4: f88d 0007 strb.w r0, [sp, #7]
  461. HAL_UART_Transmit(&huart1, &tx, 1, 100);
  462. 80005c8: 4640 mov r0, r8
  463. 80005ca: f001 ffc9 bl 8002560 <HAL_UART_Transmit>
  464. HAL_UART_Receive(&huart1, rx, 1, HAL_MAX_DELAY);
  465. 80005ce: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff
  466. 80005d2: 2201 movs r2, #1
  467. 80005d4: a901 add r1, sp, #4
  468. 80005d6: 4640 mov r0, r8
  469. 80005d8: f002 f840 bl 800265c <HAL_UART_Receive>
  470. // Erase Chip
  471. if (rx[0] == 'e') {
  472. 80005dc: f89d 3004 ldrb.w r3, [sp, #4]
  473. 80005e0: 2b65 cmp r3, #101 ; 0x65
  474. 80005e2: f000 80c3 beq.w 800076c <Bootloader_cmd+0x1c4>
  475. // Erase
  476. Flash_erase();
  477. }
  478. }
  479. if (rx[0] == 'u') {
  480. 80005e6: 2b75 cmp r3, #117 ; 0x75
  481. 80005e8: f000 8081 beq.w 80006ee <Bootloader_cmd+0x146>
  482. tx = '>';
  483. HAL_UART_Transmit(&huart1, &tx, 1, 100);
  484. Bootloader_run(0);
  485. }
  486. if (rx[0] == 'c') {
  487. 80005ec: 2b63 cmp r3, #99 ; 0x63
  488. 80005ee: d025 beq.n 800063c <Bootloader_cmd+0x94>
  489. tx = '>';
  490. HAL_UART_Transmit(&huart1, &tx, 1, 100);
  491. Bootloader_run(1);
  492. }
  493. if (rx[0] == 'r') {
  494. 80005f0: 2b72 cmp r3, #114 ; 0x72
  495. 80005f2: d1e2 bne.n 80005ba <Bootloader_cmd+0x12>
  496. HAL_TIM_Base_Stop(&htim6);
  497. 80005f4: 4880 ldr r0, [pc, #512] ; (80007f8 <Bootloader_cmd+0x250>)
  498. 80005f6: f001 fdff bl 80021f8 <HAL_TIM_Base_Stop>
  499. HAL_TIM_Base_DeInit(&htim6);
  500. 80005fa: 487f ldr r0, [pc, #508] ; (80007f8 <Bootloader_cmd+0x250>)
  501. 80005fc: f001 fdc8 bl 8002190 <HAL_TIM_Base_DeInit>
  502. HAL_UART_DeInit(&huart1);
  503. 8000600: 4640 mov r0, r8
  504. 8000602: f001 ff8d bl 8002520 <HAL_UART_DeInit>
  505. GPIO_InitTypeDef GPIO_InitStruct = {0};
  506. 8000606: 2300 movs r3, #0
  507. GPIO_InitStruct.Pin = LED_Pin;
  508. 8000608: f44f 5200 mov.w r2, #8192 ; 0x2000
  509. HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
  510. 800060c: 4629 mov r1, r5
  511. 800060e: 487b ldr r0, [pc, #492] ; (80007fc <Bootloader_cmd+0x254>)
  512. GPIO_InitStruct.Pin = LED_Pin;
  513. 8000610: 9204 str r2, [sp, #16]
  514. GPIO_InitTypeDef GPIO_InitStruct = {0};
  515. 8000612: e9cd 3305 strd r3, r3, [sp, #20]
  516. 8000616: e9cd 3307 strd r3, r3, [sp, #28]
  517. HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
  518. 800061a: f000 fdd1 bl 80011c0 <HAL_GPIO_Init>
  519. GPIO_InitStruct.Pin = KEY_Pin;
  520. 800061e: 2304 movs r3, #4
  521. HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
  522. 8000620: 4629 mov r1, r5
  523. 8000622: 4877 ldr r0, [pc, #476] ; (8000800 <Bootloader_cmd+0x258>)
  524. GPIO_InitStruct.Pin = KEY_Pin;
  525. 8000624: 9304 str r3, [sp, #16]
  526. HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
  527. 8000626: f000 fdcb bl 80011c0 <HAL_GPIO_Init>
  528. void Bootloader_jump_to_app(void)
  529. {
  530. uint32_t appJumpAddress;
  531. void (*GoToApp)(void);
  532. appJumpAddress = *((volatile uint32_t*)(APP_ADDRESS + 4));
  533. 800062a: 4b76 ldr r3, [pc, #472] ; (8000804 <Bootloader_cmd+0x25c>)
  534. GoToApp = (void (*)(void))appJumpAddress;
  535. SCB->VTOR = APP_ADDRESS;
  536. 800062c: 4976 ldr r1, [pc, #472] ; (8000808 <Bootloader_cmd+0x260>)
  537. appJumpAddress = *((volatile uint32_t*)(APP_ADDRESS + 4));
  538. 800062e: 685a ldr r2, [r3, #4]
  539. SCB->VTOR = APP_ADDRESS;
  540. 8000630: 608b str r3, [r1, #8]
  541. __set_MSP(*((volatile uint32_t*) APP_ADDRESS)); //stack pointer (to RAM) for USER app in this address
  542. 8000632: 681b ldr r3, [r3, #0]
  543. \details Assigns the given value to the Main Stack Pointer (MSP).
  544. \param [in] topOfMainStack Main Stack Pointer value to set
  545. */
  546. __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)
  547. {
  548. __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : );
  549. 8000634: f383 8808 msr MSP, r3
  550. GoToApp();
  551. 8000638: 4790 blx r2
  552. }
  553. 800063a: e7be b.n 80005ba <Bootloader_cmd+0x12>
  554. tx = '>';
  555. 800063c: 203e movs r0, #62 ; 0x3e
  556. 800063e: f88d 0007 strb.w r0, [sp, #7]
  557. HAL_UART_Transmit(&huart1, &tx, 1, 100);
  558. 8000642: 2364 movs r3, #100 ; 0x64
  559. 8000644: 2201 movs r2, #1
  560. 8000646: f10d 0107 add.w r1, sp, #7
  561. 800064a: 4640 mov r0, r8
  562. 800064c: f001 ff88 bl 8002560 <HAL_UART_Transmit>
  563. uint32_t flash_addr = APP_ADDRESS;
  564. 8000650: f8df 91b0 ldr.w r9, [pc, #432] ; 8000804 <Bootloader_cmd+0x25c>
  565. xtea_decrypt(block, XTEA_KEY);
  566. 8000654: f8df a1c4 ldr.w sl, [pc, #452] ; 800081c <Bootloader_cmd+0x274>
  567. Status = HAL_UART_Receive(&huart1, rx, PACKET_SIZE, 1000);
  568. 8000658: f44f 737a mov.w r3, #1000 ; 0x3e8
  569. 800065c: 2210 movs r2, #16
  570. 800065e: 4629 mov r1, r5
  571. 8000660: 4640 mov r0, r8
  572. 8000662: f001 fffb bl 800265c <HAL_UART_Receive>
  573. if (Status == HAL_OK) {
  574. 8000666: 4606 mov r6, r0
  575. 8000668: bbe0 cbnz r0, 80006e4 <Bootloader_cmd+0x13c>
  576. memcpy(block, &rx[i], 8);
  577. 800066a: e895 0003 ldmia.w r5, {r0, r1}
  578. 800066e: e884 0003 stmia.w r4, {r0, r1}
  579. xtea_decrypt(block, XTEA_KEY);
  580. 8000672: 4651 mov r1, sl
  581. 8000674: 4620 mov r0, r4
  582. 8000676: f000 fa99 bl 8000bac <xtea_decrypt>
  583. memcpy(&rx[i], block, 8);
  584. 800067a: e894 0003 ldmia.w r4, {r0, r1}
  585. 800067e: e885 0003 stmia.w r5, {r0, r1}
  586. memcpy(block, &rx[i], 8);
  587. 8000682: e897 0003 ldmia.w r7, {r0, r1}
  588. 8000686: e884 0003 stmia.w r4, {r0, r1}
  589. xtea_decrypt(block, XTEA_KEY);
  590. 800068a: 4651 mov r1, sl
  591. 800068c: 4620 mov r0, r4
  592. 800068e: f000 fa8d bl 8000bac <xtea_decrypt>
  593. memcpy(&rx[i], block, 8);
  594. 8000692: e894 0003 ldmia.w r4, {r0, r1}
  595. 8000696: e887 0003 stmia.w r7, {r0, r1}
  596. HAL_FLASH_Unlock();
  597. 800069a: f000 fc69 bl 8000f70 <HAL_FLASH_Unlock>
  598. memcpy(&d, data + i, 8);
  599. 800069e: e895 0003 ldmia.w r5, {r0, r1}
  600. 80006a2: e884 0003 stmia.w r4, {r0, r1}
  601. HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, addr + i, d);
  602. 80006a6: 4649 mov r1, r9
  603. 80006a8: e9dd 2302 ldrd r2, r3, [sp, #8]
  604. 80006ac: 4630 mov r0, r6
  605. 80006ae: f000 fba5 bl 8000dfc <HAL_FLASH_Program>
  606. memcpy(&d, data + i, 8);
  607. 80006b2: e897 0003 ldmia.w r7, {r0, r1}
  608. 80006b6: e884 0003 stmia.w r4, {r0, r1}
  609. HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, addr + i, d);
  610. 80006ba: f109 0108 add.w r1, r9, #8
  611. 80006be: e9dd 2302 ldrd r2, r3, [sp, #8]
  612. 80006c2: 4630 mov r0, r6
  613. 80006c4: f000 fb9a bl 8000dfc <HAL_FLASH_Program>
  614. uint8_t ack = 0x7F;
  615. 80006c8: 267f movs r6, #127 ; 0x7f
  616. HAL_FLASH_Lock();
  617. 80006ca: f000 fc65 bl 8000f98 <HAL_FLASH_Lock>
  618. HAL_UART_Transmit(&huart1, &ack, 1, 100);
  619. 80006ce: 2364 movs r3, #100 ; 0x64
  620. 80006d0: 2201 movs r2, #1
  621. 80006d2: 4621 mov r1, r4
  622. 80006d4: 4640 mov r0, r8
  623. flash_addr += PACKET_SIZE;
  624. 80006d6: f109 0910 add.w r9, r9, #16
  625. uint8_t ack = 0x7F;
  626. 80006da: f88d 6008 strb.w r6, [sp, #8]
  627. HAL_UART_Transmit(&huart1, &ack, 1, 100);
  628. 80006de: f001 ff3f bl 8002560 <HAL_UART_Transmit>
  629. 80006e2: e7b9 b.n 8000658 <Bootloader_cmd+0xb0>
  630. if (Status == HAL_TIMEOUT) {
  631. 80006e4: 2803 cmp r0, #3
  632. 80006e6: d1b7 bne.n 8000658 <Bootloader_cmd+0xb0>
  633. if (rx[0] == 'r') {
  634. 80006e8: f89d 3004 ldrb.w r3, [sp, #4]
  635. }
  636. 80006ec: e780 b.n 80005f0 <Bootloader_cmd+0x48>
  637. tx = '>';
  638. 80006ee: 203e movs r0, #62 ; 0x3e
  639. 80006f0: f88d 0007 strb.w r0, [sp, #7]
  640. HAL_UART_Transmit(&huart1, &tx, 1, 100);
  641. 80006f4: 2364 movs r3, #100 ; 0x64
  642. 80006f6: 2201 movs r2, #1
  643. 80006f8: f10d 0107 add.w r1, sp, #7
  644. 80006fc: 4640 mov r0, r8
  645. 80006fe: f001 ff2f bl 8002560 <HAL_UART_Transmit>
  646. uint32_t flash_addr = APP_ADDRESS;
  647. 8000702: f8df 9100 ldr.w r9, [pc, #256] ; 8000804 <Bootloader_cmd+0x25c>
  648. Status = HAL_UART_Receive(&huart1, rx, PACKET_SIZE, 1000);
  649. 8000706: 4629 mov r1, r5
  650. 8000708: f44f 737a mov.w r3, #1000 ; 0x3e8
  651. 800070c: 2210 movs r2, #16
  652. 800070e: 4640 mov r0, r8
  653. 8000710: f001 ffa4 bl 800265c <HAL_UART_Receive>
  654. if (Status == HAL_OK) {
  655. 8000714: 4606 mov r6, r0
  656. 8000716: bb20 cbnz r0, 8000762 <Bootloader_cmd+0x1ba>
  657. HAL_FLASH_Unlock();
  658. 8000718: f000 fc2a bl 8000f70 <HAL_FLASH_Unlock>
  659. memcpy(&d, data + i, 8);
  660. 800071c: e895 0003 ldmia.w r5, {r0, r1}
  661. 8000720: e884 0003 stmia.w r4, {r0, r1}
  662. HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, addr + i, d);
  663. 8000724: 4649 mov r1, r9
  664. 8000726: e9dd 2302 ldrd r2, r3, [sp, #8]
  665. 800072a: 4630 mov r0, r6
  666. 800072c: f000 fb66 bl 8000dfc <HAL_FLASH_Program>
  667. memcpy(&d, data + i, 8);
  668. 8000730: e897 0003 ldmia.w r7, {r0, r1}
  669. 8000734: e884 0003 stmia.w r4, {r0, r1}
  670. HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, addr + i, d);
  671. 8000738: f109 0108 add.w r1, r9, #8
  672. 800073c: e9dd 2302 ldrd r2, r3, [sp, #8]
  673. 8000740: 4630 mov r0, r6
  674. 8000742: f000 fb5b bl 8000dfc <HAL_FLASH_Program>
  675. uint8_t ack = 0x7F;
  676. 8000746: 267f movs r6, #127 ; 0x7f
  677. HAL_FLASH_Lock();
  678. 8000748: f000 fc26 bl 8000f98 <HAL_FLASH_Lock>
  679. HAL_UART_Transmit(&huart1, &ack, 1, 100);
  680. 800074c: 2364 movs r3, #100 ; 0x64
  681. 800074e: 2201 movs r2, #1
  682. 8000750: 4621 mov r1, r4
  683. 8000752: 4640 mov r0, r8
  684. flash_addr += PACKET_SIZE;
  685. 8000754: f109 0910 add.w r9, r9, #16
  686. uint8_t ack = 0x7F;
  687. 8000758: f88d 6008 strb.w r6, [sp, #8]
  688. HAL_UART_Transmit(&huart1, &ack, 1, 100);
  689. 800075c: f001 ff00 bl 8002560 <HAL_UART_Transmit>
  690. 8000760: e7d1 b.n 8000706 <Bootloader_cmd+0x15e>
  691. if (Status == HAL_TIMEOUT) {
  692. 8000762: 2803 cmp r0, #3
  693. 8000764: d1cf bne.n 8000706 <Bootloader_cmd+0x15e>
  694. if (rx[0] == 'c') {
  695. 8000766: f89d 3004 ldrb.w r3, [sp, #4]
  696. }
  697. 800076a: e73f b.n 80005ec <Bootloader_cmd+0x44>
  698. tx = '?';
  699. 800076c: 203f movs r0, #63 ; 0x3f
  700. HAL_UART_Transmit(&huart1, &tx, 1, 100);
  701. 800076e: 2364 movs r3, #100 ; 0x64
  702. 8000770: 2201 movs r2, #1
  703. 8000772: f10d 0107 add.w r1, sp, #7
  704. tx = '?';
  705. 8000776: f88d 0007 strb.w r0, [sp, #7]
  706. HAL_UART_Transmit(&huart1, &tx, 1, 100);
  707. 800077a: 4640 mov r0, r8
  708. 800077c: f001 fef0 bl 8002560 <HAL_UART_Transmit>
  709. HAL_UART_Receive(&huart1, rx, 1, 1000);
  710. 8000780: f44f 737a mov.w r3, #1000 ; 0x3e8
  711. 8000784: 2201 movs r2, #1
  712. 8000786: a901 add r1, sp, #4
  713. 8000788: 4640 mov r0, r8
  714. 800078a: f001 ff67 bl 800265c <HAL_UART_Receive>
  715. if (rx[0] == 'y') {
  716. 800078e: f89d 3004 ldrb.w r3, [sp, #4]
  717. 8000792: 2b79 cmp r3, #121 ; 0x79
  718. 8000794: f47f af27 bne.w 80005e6 <Bootloader_cmd+0x3e>
  719. uint32_t PageError = 0;
  720. 8000798: 2300 movs r3, #0
  721. 800079a: 9302 str r3, [sp, #8]
  722. HAL_FLASH_Unlock();
  723. 800079c: f000 fbe8 bl 8000f70 <HAL_FLASH_Unlock>
  724. EraseInitStruct.NbPages = FLASH_PAGE_NB - flash_start_page;
  725. 80007a0: 4b1a ldr r3, [pc, #104] ; (800080c <Bootloader_cmd+0x264>)
  726. 80007a2: f8b3 20e0 ldrh.w r2, [r3, #224] ; 0xe0
  727. 80007a6: f64f 73ff movw r3, #65535 ; 0xffff
  728. EraseInitStruct.Page = flash_start_page;
  729. 80007aa: 2110 movs r1, #16
  730. EraseInitStruct.NbPages = FLASH_PAGE_NB - flash_start_page;
  731. 80007ac: 429a cmp r2, r3
  732. EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
  733. 80007ae: ed8d 8b04 vstr d8, [sp, #16]
  734. EraseInitStruct.Page = flash_start_page;
  735. 80007b2: 9106 str r1, [sp, #24]
  736. EraseInitStruct.NbPages = FLASH_PAGE_NB - flash_start_page;
  737. 80007b4: d017 beq.n 80007e6 <Bootloader_cmd+0x23e>
  738. 80007b6: 4a16 ldr r2, [pc, #88] ; (8000810 <Bootloader_cmd+0x268>)
  739. 80007b8: 4b16 ldr r3, [pc, #88] ; (8000814 <Bootloader_cmd+0x26c>)
  740. 80007ba: f8d2 25e0 ldr.w r2, [r2, #1504] ; 0x5e0
  741. 80007be: ea03 2382 and.w r3, r3, r2, lsl #10
  742. 80007c2: f5b3 2f00 cmp.w r3, #524288 ; 0x80000
  743. 80007c6: d010 beq.n 80007ea <Bootloader_cmd+0x242>
  744. 80007c8: f5b3 2f80 cmp.w r3, #262144 ; 0x40000
  745. 80007cc: bf14 ite ne
  746. 80007ce: 2330 movne r3, #48 ; 0x30
  747. 80007d0: 2370 moveq r3, #112 ; 0x70
  748. if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) == HAL_OK)
  749. 80007d2: 4621 mov r1, r4
  750. 80007d4: 4628 mov r0, r5
  751. EraseInitStruct.NbPages = FLASH_PAGE_NB - flash_start_page;
  752. 80007d6: 9307 str r3, [sp, #28]
  753. if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) == HAL_OK)
  754. 80007d8: f000 fc14 bl 8001004 <HAL_FLASHEx_Erase>
  755. HAL_FLASH_Lock();
  756. 80007dc: f000 fbdc bl 8000f98 <HAL_FLASH_Lock>
  757. if (rx[0] == 'u') {
  758. 80007e0: f89d 3004 ldrb.w r3, [sp, #4]
  759. }
  760. 80007e4: e6ff b.n 80005e6 <Bootloader_cmd+0x3e>
  761. 80007e6: 2330 movs r3, #48 ; 0x30
  762. 80007e8: e7f3 b.n 80007d2 <Bootloader_cmd+0x22a>
  763. 80007ea: 23f0 movs r3, #240 ; 0xf0
  764. 80007ec: e7f1 b.n 80007d2 <Bootloader_cmd+0x22a>
  765. 80007ee: bf00 nop
  766. ...
  767. 80007f8: 20000048 .word 0x20000048
  768. 80007fc: 48000800 .word 0x48000800
  769. 8000800: 48000c00 .word 0x48000c00
  770. 8000804: 08008000 .word 0x08008000
  771. 8000808: e000ed00 .word 0xe000ed00
  772. 800080c: 1fff7500 .word 0x1fff7500
  773. 8000810: 1fff7000 .word 0x1fff7000
  774. 8000814: 03fffc00 .word 0x03fffc00
  775. 8000818: 20000094 .word 0x20000094
  776. 800081c: 08003058 .word 0x08003058
  777. 08000820 <Bootloader_jump_to_app>:
  778. appJumpAddress = *((volatile uint32_t*)(APP_ADDRESS + 4));
  779. 8000820: 4b03 ldr r3, [pc, #12] ; (8000830 <Bootloader_jump_to_app+0x10>)
  780. SCB->VTOR = APP_ADDRESS;
  781. 8000822: 4904 ldr r1, [pc, #16] ; (8000834 <Bootloader_jump_to_app+0x14>)
  782. appJumpAddress = *((volatile uint32_t*)(APP_ADDRESS + 4));
  783. 8000824: 685a ldr r2, [r3, #4]
  784. SCB->VTOR = APP_ADDRESS;
  785. 8000826: 608b str r3, [r1, #8]
  786. __set_MSP(*((volatile uint32_t*) APP_ADDRESS)); //stack pointer (to RAM) for USER app in this address
  787. 8000828: 681b ldr r3, [r3, #0]
  788. 800082a: f383 8808 msr MSP, r3
  789. GoToApp();
  790. 800082e: 4710 bx r2
  791. 8000830: 08008000 .word 0x08008000
  792. 8000834: e000ed00 .word 0xe000ed00
  793. 08000838 <SystemClock_Config>:
  794. /**
  795. * @brief System Clock Configuration
  796. * @retval None
  797. */
  798. void SystemClock_Config(void)
  799. {
  800. 8000838: b510 push {r4, lr}
  801. 800083a: b094 sub sp, #80 ; 0x50
  802. RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  803. 800083c: 2238 movs r2, #56 ; 0x38
  804. 800083e: 2100 movs r1, #0
  805. 8000840: a806 add r0, sp, #24
  806. 8000842: f002 fbf5 bl 8003030 <memset>
  807. RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  808. 8000846: 2400 movs r4, #0
  809. /** Configure the main internal regulator output voltage
  810. */
  811. HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
  812. 8000848: f44f 7000 mov.w r0, #512 ; 0x200
  813. RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  814. 800084c: e9cd 4400 strd r4, r4, [sp]
  815. 8000850: e9cd 4402 strd r4, r4, [sp, #8]
  816. 8000854: 9404 str r4, [sp, #16]
  817. HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
  818. 8000856: f000 fe6d bl 8001534 <HAL_PWREx_ControlVoltageScaling>
  819. /** Initializes the RCC Oscillators according to the specified parameters
  820. * in the RCC_OscInitTypeDef structure.
  821. */
  822. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  823. RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  824. 800085a: f44f 7380 mov.w r3, #256 ; 0x100
  825. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  826. 800085e: 2202 movs r2, #2
  827. RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  828. 8000860: 9309 str r3, [sp, #36] ; 0x24
  829. RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  830. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  831. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  832. 8000862: a806 add r0, sp, #24
  833. RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  834. 8000864: 2340 movs r3, #64 ; 0x40
  835. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  836. 8000866: 9206 str r2, [sp, #24]
  837. RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  838. 8000868: 930a str r3, [sp, #40] ; 0x28
  839. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  840. 800086a: 940d str r4, [sp, #52] ; 0x34
  841. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  842. 800086c: f000 fee8 bl 8001640 <HAL_RCC_OscConfig>
  843. 8000870: b108 cbz r0, 8000876 <SystemClock_Config+0x3e>
  844. __ASM volatile ("cpsid i" : : : "memory");
  845. 8000872: b672 cpsid i
  846. void Error_Handler(void)
  847. {
  848. /* USER CODE BEGIN Error_Handler_Debug */
  849. /* User can add his own implementation to report the HAL error return state */
  850. __disable_irq();
  851. while (1)
  852. 8000874: e7fe b.n 8000874 <SystemClock_Config+0x3c>
  853. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  854. 8000876: 220f movs r2, #15
  855. 8000878: 2301 movs r3, #1
  856. 800087a: e9cd 2300 strd r2, r3, [sp]
  857. 800087e: 4601 mov r1, r0
  858. 8000880: 2200 movs r2, #0
  859. 8000882: 2300 movs r3, #0
  860. if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  861. 8000884: 4668 mov r0, sp
  862. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  863. 8000886: e9cd 2302 strd r2, r3, [sp, #8]
  864. RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  865. 800088a: 9104 str r1, [sp, #16]
  866. if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  867. 800088c: f001 f95c bl 8001b48 <HAL_RCC_ClockConfig>
  868. 8000890: b108 cbz r0, 8000896 <SystemClock_Config+0x5e>
  869. 8000892: b672 cpsid i
  870. while (1)
  871. 8000894: e7fe b.n 8000894 <SystemClock_Config+0x5c>
  872. }
  873. 8000896: b014 add sp, #80 ; 0x50
  874. 8000898: bd10 pop {r4, pc}
  875. 800089a: bf00 nop
  876. 0800089c <main>:
  877. {
  878. 800089c: b500 push {lr}
  879. GPIO_InitTypeDef GPIO_InitStruct = {0};
  880. 800089e: 2400 movs r4, #0
  881. {
  882. 80008a0: b08b sub sp, #44 ; 0x2c
  883. HAL_Init();
  884. 80008a2: f000 f9fd bl 8000ca0 <HAL_Init>
  885. SystemClock_Config();
  886. 80008a6: f7ff ffc7 bl 8000838 <SystemClock_Config>
  887. GPIO_InitTypeDef GPIO_InitStruct = {0};
  888. 80008aa: e9cd 4404 strd r4, r4, [sp, #16]
  889. 80008ae: e9cd 4406 strd r4, r4, [sp, #24]
  890. __HAL_RCC_GPIOC_CLK_ENABLE();
  891. 80008b2: 4b49 ldr r3, [pc, #292] ; (80009d8 <main+0x13c>)
  892. GPIO_InitTypeDef GPIO_InitStruct = {0};
  893. 80008b4: 9408 str r4, [sp, #32]
  894. __HAL_RCC_GPIOC_CLK_ENABLE();
  895. 80008b6: 6cd9 ldr r1, [r3, #76] ; 0x4c
  896. HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
  897. 80008b8: 4848 ldr r0, [pc, #288] ; (80009dc <main+0x140>)
  898. huart1.Instance = USART1;
  899. 80008ba: 4d49 ldr r5, [pc, #292] ; (80009e0 <main+0x144>)
  900. __HAL_RCC_GPIOC_CLK_ENABLE();
  901. 80008bc: f041 0104 orr.w r1, r1, #4
  902. 80008c0: 64d9 str r1, [r3, #76] ; 0x4c
  903. 80008c2: 6cd9 ldr r1, [r3, #76] ; 0x4c
  904. 80008c4: f001 0104 and.w r1, r1, #4
  905. 80008c8: 9101 str r1, [sp, #4]
  906. 80008ca: 9901 ldr r1, [sp, #4]
  907. __HAL_RCC_GPIOD_CLK_ENABLE();
  908. 80008cc: 6cd9 ldr r1, [r3, #76] ; 0x4c
  909. 80008ce: f041 0108 orr.w r1, r1, #8
  910. 80008d2: 64d9 str r1, [r3, #76] ; 0x4c
  911. 80008d4: 6cd9 ldr r1, [r3, #76] ; 0x4c
  912. 80008d6: f001 0108 and.w r1, r1, #8
  913. 80008da: 9102 str r1, [sp, #8]
  914. 80008dc: 9902 ldr r1, [sp, #8]
  915. __HAL_RCC_GPIOB_CLK_ENABLE();
  916. 80008de: 6cd9 ldr r1, [r3, #76] ; 0x4c
  917. 80008e0: f041 0102 orr.w r1, r1, #2
  918. 80008e4: 64d9 str r1, [r3, #76] ; 0x4c
  919. 80008e6: 6cdb ldr r3, [r3, #76] ; 0x4c
  920. 80008e8: f003 0302 and.w r3, r3, #2
  921. HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
  922. 80008ec: 4622 mov r2, r4
  923. __HAL_RCC_GPIOB_CLK_ENABLE();
  924. 80008ee: 9303 str r3, [sp, #12]
  925. HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
  926. 80008f0: f44f 5100 mov.w r1, #8192 ; 0x2000
  927. __HAL_RCC_GPIOB_CLK_ENABLE();
  928. 80008f4: 9b03 ldr r3, [sp, #12]
  929. HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
  930. 80008f6: f000 fe0d bl 8001514 <HAL_GPIO_WritePin>
  931. GPIO_InitStruct.Pin = LED_Pin;
  932. 80008fa: f44f 5200 mov.w r2, #8192 ; 0x2000
  933. 80008fe: 2301 movs r3, #1
  934. 8000900: e9cd 2304 strd r2, r3, [sp, #16]
  935. HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
  936. 8000904: 4835 ldr r0, [pc, #212] ; (80009dc <main+0x140>)
  937. GPIO_InitStruct.Pin = LED_Pin;
  938. 8000906: 2200 movs r2, #0
  939. 8000908: 2300 movs r3, #0
  940. HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
  941. 800090a: a904 add r1, sp, #16
  942. GPIO_InitStruct.Pin = LED_Pin;
  943. 800090c: e9cd 2306 strd r2, r3, [sp, #24]
  944. HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
  945. 8000910: f000 fc56 bl 80011c0 <HAL_GPIO_Init>
  946. GPIO_InitStruct.Pin = KEY_Pin;
  947. 8000914: 2204 movs r2, #4
  948. 8000916: 2300 movs r3, #0
  949. 8000918: e9cd 2304 strd r2, r3, [sp, #16]
  950. HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
  951. 800091c: 4831 ldr r0, [pc, #196] ; (80009e4 <main+0x148>)
  952. GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  953. 800091e: 2302 movs r3, #2
  954. HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
  955. 8000920: a904 add r1, sp, #16
  956. GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  957. 8000922: 9306 str r3, [sp, #24]
  958. HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
  959. 8000924: f000 fc4c bl 80011c0 <HAL_GPIO_Init>
  960. huart1.Init.BaudRate = 115200;
  961. 8000928: 4a2f ldr r2, [pc, #188] ; (80009e8 <main+0x14c>)
  962. huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  963. 800092a: 62ac str r4, [r5, #40] ; 0x28
  964. huart1.Init.BaudRate = 115200;
  965. 800092c: f44f 33e1 mov.w r3, #115200 ; 0x1c200
  966. 8000930: e9c5 2300 strd r2, r3, [r5]
  967. if (HAL_UART_Init(&huart1) != HAL_OK)
  968. 8000934: 4628 mov r0, r5
  969. huart1.Init.Mode = UART_MODE_TX_RX;
  970. 8000936: 230c movs r3, #12
  971. huart1.Init.StopBits = UART_STOPBITS_1;
  972. 8000938: e9c5 4402 strd r4, r4, [r5, #8]
  973. huart1.Init.Mode = UART_MODE_TX_RX;
  974. 800093c: e9c5 4304 strd r4, r3, [r5, #16]
  975. huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  976. 8000940: e9c5 4406 strd r4, r4, [r5, #24]
  977. huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
  978. 8000944: e9c5 4408 strd r4, r4, [r5, #32]
  979. if (HAL_UART_Init(&huart1) != HAL_OK)
  980. 8000948: f002 fa78 bl 8002e3c <HAL_UART_Init>
  981. 800094c: b108 cbz r0, 8000952 <main+0xb6>
  982. 800094e: b672 cpsid i
  983. while (1)
  984. 8000950: e7fe b.n 8000950 <main+0xb4>
  985. if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
  986. 8000952: 4601 mov r1, r0
  987. 8000954: 4628 mov r0, r5
  988. 8000956: f002 fac3 bl 8002ee0 <HAL_UARTEx_SetTxFifoThreshold>
  989. 800095a: b108 cbz r0, 8000960 <main+0xc4>
  990. 800095c: b672 cpsid i
  991. while (1)
  992. 800095e: e7fe b.n 800095e <main+0xc2>
  993. if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
  994. 8000960: 4601 mov r1, r0
  995. 8000962: 4628 mov r0, r5
  996. 8000964: f002 fafe bl 8002f64 <HAL_UARTEx_SetRxFifoThreshold>
  997. 8000968: b108 cbz r0, 800096e <main+0xd2>
  998. 800096a: b672 cpsid i
  999. while (1)
  1000. 800096c: e7fe b.n 800096c <main+0xd0>
  1001. if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK)
  1002. 800096e: 4628 mov r0, r5
  1003. 8000970: f002 fa98 bl 8002ea4 <HAL_UARTEx_DisableFifoMode>
  1004. 8000974: 4603 mov r3, r0
  1005. 8000976: b108 cbz r0, 800097c <main+0xe0>
  1006. 8000978: b672 cpsid i
  1007. while (1)
  1008. 800097a: e7fe b.n 800097a <main+0xde>
  1009. htim6.Instance = TIM6;
  1010. 800097c: 4c1b ldr r4, [pc, #108] ; (80009ec <main+0x150>)
  1011. 800097e: 491c ldr r1, [pc, #112] ; (80009f0 <main+0x154>)
  1012. TIM_MasterConfigTypeDef sMasterConfig = {0};
  1013. 8000980: 9006 str r0, [sp, #24]
  1014. htim6.Init.Prescaler = 160-1;
  1015. 8000982: 229f movs r2, #159 ; 0x9f
  1016. TIM_MasterConfigTypeDef sMasterConfig = {0};
  1017. 8000984: e9cd 0004 strd r0, r0, [sp, #16]
  1018. htim6.Init.Prescaler = 160-1;
  1019. 8000988: e9c4 1200 strd r1, r2, [r4]
  1020. if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
  1021. 800098c: 4620 mov r0, r4
  1022. htim6.Init.Period = 10000;
  1023. 800098e: f242 7210 movw r2, #10000 ; 0x2710
  1024. 8000992: e9c4 3202 strd r3, r2, [r4, #8]
  1025. htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  1026. 8000996: 61a3 str r3, [r4, #24]
  1027. if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
  1028. 8000998: f001 fb58 bl 800204c <HAL_TIM_Base_Init>
  1029. 800099c: 4603 mov r3, r0
  1030. 800099e: b108 cbz r0, 80009a4 <main+0x108>
  1031. 80009a0: b672 cpsid i
  1032. while (1)
  1033. 80009a2: e7fe b.n 80009a2 <main+0x106>
  1034. if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
  1035. 80009a4: a904 add r1, sp, #16
  1036. 80009a6: 4620 mov r0, r4
  1037. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  1038. 80009a8: 9304 str r3, [sp, #16]
  1039. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  1040. 80009aa: 9306 str r3, [sp, #24]
  1041. if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
  1042. 80009ac: f001 fd60 bl 8002470 <HAL_TIMEx_MasterConfigSynchronization>
  1043. 80009b0: b108 cbz r0, 80009b6 <main+0x11a>
  1044. 80009b2: b672 cpsid i
  1045. while (1)
  1046. 80009b4: e7fe b.n 80009b4 <main+0x118>
  1047. HAL_TIM_Base_Start_IT(&htim6);
  1048. 80009b6: 4620 mov r0, r4
  1049. 80009b8: f001 fc34 bl 8002224 <HAL_TIM_Base_Start_IT>
  1050. if (Bootloader_flag() == 1) {
  1051. 80009bc: f7ff fdd8 bl 8000570 <Bootloader_flag>
  1052. 80009c0: 2801 cmp r0, #1
  1053. 80009c2: d004 beq.n 80009ce <main+0x132>
  1054. Bootloader_Deinit_All();
  1055. 80009c4: f7ff fdaa bl 800051c <Bootloader_Deinit_All>
  1056. Bootloader_jump_to_app();
  1057. 80009c8: f7ff ff2a bl 8000820 <Bootloader_jump_to_app>
  1058. while (1)
  1059. 80009cc: e7fe b.n 80009cc <main+0x130>
  1060. Bootloader_flag_reset();
  1061. 80009ce: f7ff fde5 bl 800059c <Bootloader_flag_reset>
  1062. Bootloader_cmd();
  1063. 80009d2: f7ff fde9 bl 80005a8 <Bootloader_cmd>
  1064. 80009d6: e7f5 b.n 80009c4 <main+0x128>
  1065. 80009d8: 40021000 .word 0x40021000
  1066. 80009dc: 48000800 .word 0x48000800
  1067. 80009e0: 20000094 .word 0x20000094
  1068. 80009e4: 48000c00 .word 0x48000c00
  1069. 80009e8: 40013800 .word 0x40013800
  1070. 80009ec: 20000048 .word 0x20000048
  1071. 80009f0: 40001000 .word 0x40001000
  1072. 080009f4 <Error_Handler>:
  1073. 80009f4: b672 cpsid i
  1074. while (1)
  1075. 80009f6: e7fe b.n 80009f6 <Error_Handler+0x2>
  1076. 080009f8 <HAL_MspInit>:
  1077. /* USER CODE BEGIN MspInit 0 */
  1078. /* USER CODE END MspInit 0 */
  1079. __HAL_RCC_SYSCFG_CLK_ENABLE();
  1080. 80009f8: 4b0b ldr r3, [pc, #44] ; (8000a28 <HAL_MspInit+0x30>)
  1081. 80009fa: 6e1a ldr r2, [r3, #96] ; 0x60
  1082. 80009fc: f042 0201 orr.w r2, r2, #1
  1083. 8000a00: 661a str r2, [r3, #96] ; 0x60
  1084. 8000a02: 6e1a ldr r2, [r3, #96] ; 0x60
  1085. {
  1086. 8000a04: b082 sub sp, #8
  1087. __HAL_RCC_SYSCFG_CLK_ENABLE();
  1088. 8000a06: f002 0201 and.w r2, r2, #1
  1089. 8000a0a: 9200 str r2, [sp, #0]
  1090. 8000a0c: 9a00 ldr r2, [sp, #0]
  1091. __HAL_RCC_PWR_CLK_ENABLE();
  1092. 8000a0e: 6d9a ldr r2, [r3, #88] ; 0x58
  1093. 8000a10: f042 5280 orr.w r2, r2, #268435456 ; 0x10000000
  1094. 8000a14: 659a str r2, [r3, #88] ; 0x58
  1095. 8000a16: 6d9b ldr r3, [r3, #88] ; 0x58
  1096. 8000a18: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  1097. 8000a1c: 9301 str r3, [sp, #4]
  1098. 8000a1e: 9b01 ldr r3, [sp, #4]
  1099. HAL_PWREx_DisableUCPDDeadBattery();
  1100. /* USER CODE BEGIN MspInit 1 */
  1101. /* USER CODE END MspInit 1 */
  1102. }
  1103. 8000a20: b002 add sp, #8
  1104. HAL_PWREx_DisableUCPDDeadBattery();
  1105. 8000a22: f000 be05 b.w 8001630 <HAL_PWREx_DisableUCPDDeadBattery>
  1106. 8000a26: bf00 nop
  1107. 8000a28: 40021000 .word 0x40021000
  1108. 08000a2c <HAL_TIM_Base_MspInit>:
  1109. * @param htim_base: TIM_Base handle pointer
  1110. * @retval None
  1111. */
  1112. void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
  1113. {
  1114. if(htim_base->Instance==TIM6)
  1115. 8000a2c: 4b0e ldr r3, [pc, #56] ; (8000a68 <HAL_TIM_Base_MspInit+0x3c>)
  1116. 8000a2e: 6802 ldr r2, [r0, #0]
  1117. 8000a30: 429a cmp r2, r3
  1118. 8000a32: d000 beq.n 8000a36 <HAL_TIM_Base_MspInit+0xa>
  1119. 8000a34: 4770 bx lr
  1120. {
  1121. /* USER CODE BEGIN TIM6_MspInit 0 */
  1122. /* USER CODE END TIM6_MspInit 0 */
  1123. /* Peripheral clock enable */
  1124. __HAL_RCC_TIM6_CLK_ENABLE();
  1125. 8000a36: f503 3300 add.w r3, r3, #131072 ; 0x20000
  1126. {
  1127. 8000a3a: b500 push {lr}
  1128. __HAL_RCC_TIM6_CLK_ENABLE();
  1129. 8000a3c: 6d99 ldr r1, [r3, #88] ; 0x58
  1130. 8000a3e: f041 0110 orr.w r1, r1, #16
  1131. 8000a42: 6599 str r1, [r3, #88] ; 0x58
  1132. 8000a44: 6d9b ldr r3, [r3, #88] ; 0x58
  1133. {
  1134. 8000a46: b083 sub sp, #12
  1135. /* TIM6 interrupt Init */
  1136. HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 0, 0);
  1137. 8000a48: 2200 movs r2, #0
  1138. __HAL_RCC_TIM6_CLK_ENABLE();
  1139. 8000a4a: f003 0310 and.w r3, r3, #16
  1140. 8000a4e: 9301 str r3, [sp, #4]
  1141. HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 0, 0);
  1142. 8000a50: 2036 movs r0, #54 ; 0x36
  1143. 8000a52: 4611 mov r1, r2
  1144. __HAL_RCC_TIM6_CLK_ENABLE();
  1145. 8000a54: 9b01 ldr r3, [sp, #4]
  1146. HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 0, 0);
  1147. 8000a56: f000 f957 bl 8000d08 <HAL_NVIC_SetPriority>
  1148. HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);
  1149. 8000a5a: 2036 movs r0, #54 ; 0x36
  1150. /* USER CODE END TIM6_MspInit 1 */
  1151. }
  1152. }
  1153. 8000a5c: b003 add sp, #12
  1154. 8000a5e: f85d eb04 ldr.w lr, [sp], #4
  1155. HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);
  1156. 8000a62: f000 b98f b.w 8000d84 <HAL_NVIC_EnableIRQ>
  1157. 8000a66: bf00 nop
  1158. 8000a68: 40001000 .word 0x40001000
  1159. 08000a6c <HAL_TIM_Base_MspDeInit>:
  1160. * @param htim_base: TIM_Base handle pointer
  1161. * @retval None
  1162. */
  1163. void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
  1164. {
  1165. if(htim_base->Instance==TIM6)
  1166. 8000a6c: 4b06 ldr r3, [pc, #24] ; (8000a88 <HAL_TIM_Base_MspDeInit+0x1c>)
  1167. 8000a6e: 6802 ldr r2, [r0, #0]
  1168. 8000a70: 429a cmp r2, r3
  1169. 8000a72: d000 beq.n 8000a76 <HAL_TIM_Base_MspDeInit+0xa>
  1170. /* USER CODE BEGIN TIM6_MspDeInit 1 */
  1171. /* USER CODE END TIM6_MspDeInit 1 */
  1172. }
  1173. }
  1174. 8000a74: 4770 bx lr
  1175. __HAL_RCC_TIM6_CLK_DISABLE();
  1176. 8000a76: 4a05 ldr r2, [pc, #20] ; (8000a8c <HAL_TIM_Base_MspDeInit+0x20>)
  1177. 8000a78: 6d93 ldr r3, [r2, #88] ; 0x58
  1178. 8000a7a: f023 0310 bic.w r3, r3, #16
  1179. HAL_NVIC_DisableIRQ(TIM6_DAC_IRQn);
  1180. 8000a7e: 2036 movs r0, #54 ; 0x36
  1181. __HAL_RCC_TIM6_CLK_DISABLE();
  1182. 8000a80: 6593 str r3, [r2, #88] ; 0x58
  1183. HAL_NVIC_DisableIRQ(TIM6_DAC_IRQn);
  1184. 8000a82: f000 b98d b.w 8000da0 <HAL_NVIC_DisableIRQ>
  1185. 8000a86: bf00 nop
  1186. 8000a88: 40001000 .word 0x40001000
  1187. 8000a8c: 40021000 .word 0x40021000
  1188. 08000a90 <HAL_UART_MspInit>:
  1189. * This function configures the hardware resources used in this example
  1190. * @param huart: UART handle pointer
  1191. * @retval None
  1192. */
  1193. void HAL_UART_MspInit(UART_HandleTypeDef* huart)
  1194. {
  1195. 8000a90: b510 push {r4, lr}
  1196. 8000a92: 4604 mov r4, r0
  1197. 8000a94: b098 sub sp, #96 ; 0x60
  1198. GPIO_InitTypeDef GPIO_InitStruct = {0};
  1199. 8000a96: 2100 movs r1, #0
  1200. RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
  1201. 8000a98: 2244 movs r2, #68 ; 0x44
  1202. 8000a9a: a807 add r0, sp, #28
  1203. GPIO_InitTypeDef GPIO_InitStruct = {0};
  1204. 8000a9c: e9cd 1102 strd r1, r1, [sp, #8]
  1205. 8000aa0: e9cd 1104 strd r1, r1, [sp, #16]
  1206. 8000aa4: 9106 str r1, [sp, #24]
  1207. RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
  1208. 8000aa6: f002 fac3 bl 8003030 <memset>
  1209. if(huart->Instance==USART1)
  1210. 8000aaa: 4b1d ldr r3, [pc, #116] ; (8000b20 <HAL_UART_MspInit+0x90>)
  1211. 8000aac: 6822 ldr r2, [r4, #0]
  1212. 8000aae: 429a cmp r2, r3
  1213. 8000ab0: d001 beq.n 8000ab6 <HAL_UART_MspInit+0x26>
  1214. /* USER CODE END USART1_MspInit 1 */
  1215. }
  1216. }
  1217. 8000ab2: b018 add sp, #96 ; 0x60
  1218. 8000ab4: bd10 pop {r4, pc}
  1219. PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;
  1220. 8000ab6: 2301 movs r3, #1
  1221. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  1222. 8000ab8: a807 add r0, sp, #28
  1223. PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;
  1224. 8000aba: 9307 str r3, [sp, #28]
  1225. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  1226. 8000abc: f001 f97a bl 8001db4 <HAL_RCCEx_PeriphCLKConfig>
  1227. 8000ac0: bb10 cbnz r0, 8000b08 <HAL_UART_MspInit+0x78>
  1228. __HAL_RCC_USART1_CLK_ENABLE();
  1229. 8000ac2: 4b18 ldr r3, [pc, #96] ; (8000b24 <HAL_UART_MspInit+0x94>)
  1230. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  1231. 8000ac4: 4818 ldr r0, [pc, #96] ; (8000b28 <HAL_UART_MspInit+0x98>)
  1232. __HAL_RCC_USART1_CLK_ENABLE();
  1233. 8000ac6: 6e1a ldr r2, [r3, #96] ; 0x60
  1234. 8000ac8: f442 4280 orr.w r2, r2, #16384 ; 0x4000
  1235. 8000acc: 661a str r2, [r3, #96] ; 0x60
  1236. 8000ace: 6e1a ldr r2, [r3, #96] ; 0x60
  1237. 8000ad0: f402 4280 and.w r2, r2, #16384 ; 0x4000
  1238. 8000ad4: 9200 str r2, [sp, #0]
  1239. 8000ad6: 9a00 ldr r2, [sp, #0]
  1240. __HAL_RCC_GPIOB_CLK_ENABLE();
  1241. 8000ad8: 6cda ldr r2, [r3, #76] ; 0x4c
  1242. GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
  1243. 8000ada: ed9f 7b0d vldr d7, [pc, #52] ; 8000b10 <HAL_UART_MspInit+0x80>
  1244. __HAL_RCC_GPIOB_CLK_ENABLE();
  1245. 8000ade: f042 0202 orr.w r2, r2, #2
  1246. 8000ae2: 64da str r2, [r3, #76] ; 0x4c
  1247. 8000ae4: 6cdb ldr r3, [r3, #76] ; 0x4c
  1248. GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
  1249. 8000ae6: ed8d 7b02 vstr d7, [sp, #8]
  1250. 8000aea: ed9f 7b0b vldr d7, [pc, #44] ; 8000b18 <HAL_UART_MspInit+0x88>
  1251. __HAL_RCC_GPIOB_CLK_ENABLE();
  1252. 8000aee: f003 0302 and.w r3, r3, #2
  1253. 8000af2: 9301 str r3, [sp, #4]
  1254. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  1255. 8000af4: a902 add r1, sp, #8
  1256. GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
  1257. 8000af6: 2307 movs r3, #7
  1258. GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
  1259. 8000af8: ed8d 7b04 vstr d7, [sp, #16]
  1260. __HAL_RCC_GPIOB_CLK_ENABLE();
  1261. 8000afc: 9a01 ldr r2, [sp, #4]
  1262. GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
  1263. 8000afe: 9306 str r3, [sp, #24]
  1264. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  1265. 8000b00: f000 fb5e bl 80011c0 <HAL_GPIO_Init>
  1266. }
  1267. 8000b04: b018 add sp, #96 ; 0x60
  1268. 8000b06: bd10 pop {r4, pc}
  1269. Error_Handler();
  1270. 8000b08: f7ff ff74 bl 80009f4 <Error_Handler>
  1271. 8000b0c: e7d9 b.n 8000ac2 <HAL_UART_MspInit+0x32>
  1272. 8000b0e: bf00 nop
  1273. 8000b10: 000000c0 .word 0x000000c0
  1274. 8000b14: 00000002 .word 0x00000002
  1275. ...
  1276. 8000b20: 40013800 .word 0x40013800
  1277. 8000b24: 40021000 .word 0x40021000
  1278. 8000b28: 48000400 .word 0x48000400
  1279. 08000b2c <HAL_UART_MspDeInit>:
  1280. * @param huart: UART handle pointer
  1281. * @retval None
  1282. */
  1283. void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
  1284. {
  1285. if(huart->Instance==USART1)
  1286. 8000b2c: 4b06 ldr r3, [pc, #24] ; (8000b48 <HAL_UART_MspDeInit+0x1c>)
  1287. 8000b2e: 6802 ldr r2, [r0, #0]
  1288. 8000b30: 429a cmp r2, r3
  1289. 8000b32: d000 beq.n 8000b36 <HAL_UART_MspDeInit+0xa>
  1290. /* USER CODE BEGIN USART1_MspDeInit 1 */
  1291. /* USER CODE END USART1_MspDeInit 1 */
  1292. }
  1293. }
  1294. 8000b34: 4770 bx lr
  1295. __HAL_RCC_USART1_CLK_DISABLE();
  1296. 8000b36: 4a05 ldr r2, [pc, #20] ; (8000b4c <HAL_UART_MspDeInit+0x20>)
  1297. HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
  1298. 8000b38: 4805 ldr r0, [pc, #20] ; (8000b50 <HAL_UART_MspDeInit+0x24>)
  1299. __HAL_RCC_USART1_CLK_DISABLE();
  1300. 8000b3a: 6e13 ldr r3, [r2, #96] ; 0x60
  1301. 8000b3c: f423 4380 bic.w r3, r3, #16384 ; 0x4000
  1302. HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
  1303. 8000b40: 21c0 movs r1, #192 ; 0xc0
  1304. __HAL_RCC_USART1_CLK_DISABLE();
  1305. 8000b42: 6613 str r3, [r2, #96] ; 0x60
  1306. HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
  1307. 8000b44: f000 bc4e b.w 80013e4 <HAL_GPIO_DeInit>
  1308. 8000b48: 40013800 .word 0x40013800
  1309. 8000b4c: 40021000 .word 0x40021000
  1310. 8000b50: 48000400 .word 0x48000400
  1311. 08000b54 <NMI_Handler>:
  1312. {
  1313. /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
  1314. /* USER CODE END NonMaskableInt_IRQn 0 */
  1315. /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
  1316. while (1)
  1317. 8000b54: e7fe b.n 8000b54 <NMI_Handler>
  1318. 8000b56: bf00 nop
  1319. 08000b58 <HardFault_Handler>:
  1320. void HardFault_Handler(void)
  1321. {
  1322. /* USER CODE BEGIN HardFault_IRQn 0 */
  1323. /* USER CODE END HardFault_IRQn 0 */
  1324. while (1)
  1325. 8000b58: e7fe b.n 8000b58 <HardFault_Handler>
  1326. 8000b5a: bf00 nop
  1327. 08000b5c <MemManage_Handler>:
  1328. void MemManage_Handler(void)
  1329. {
  1330. /* USER CODE BEGIN MemoryManagement_IRQn 0 */
  1331. /* USER CODE END MemoryManagement_IRQn 0 */
  1332. while (1)
  1333. 8000b5c: e7fe b.n 8000b5c <MemManage_Handler>
  1334. 8000b5e: bf00 nop
  1335. 08000b60 <BusFault_Handler>:
  1336. void BusFault_Handler(void)
  1337. {
  1338. /* USER CODE BEGIN BusFault_IRQn 0 */
  1339. /* USER CODE END BusFault_IRQn 0 */
  1340. while (1)
  1341. 8000b60: e7fe b.n 8000b60 <BusFault_Handler>
  1342. 8000b62: bf00 nop
  1343. 08000b64 <UsageFault_Handler>:
  1344. void UsageFault_Handler(void)
  1345. {
  1346. /* USER CODE BEGIN UsageFault_IRQn 0 */
  1347. /* USER CODE END UsageFault_IRQn 0 */
  1348. while (1)
  1349. 8000b64: e7fe b.n 8000b64 <UsageFault_Handler>
  1350. 8000b66: bf00 nop
  1351. 08000b68 <SVC_Handler>:
  1352. /* USER CODE END SVCall_IRQn 0 */
  1353. /* USER CODE BEGIN SVCall_IRQn 1 */
  1354. /* USER CODE END SVCall_IRQn 1 */
  1355. }
  1356. 8000b68: 4770 bx lr
  1357. 8000b6a: bf00 nop
  1358. 08000b6c <DebugMon_Handler>:
  1359. 8000b6c: 4770 bx lr
  1360. 8000b6e: bf00 nop
  1361. 08000b70 <PendSV_Handler>:
  1362. 8000b70: 4770 bx lr
  1363. 8000b72: bf00 nop
  1364. 08000b74 <SysTick_Handler>:
  1365. void SysTick_Handler(void)
  1366. {
  1367. /* USER CODE BEGIN SysTick_IRQn 0 */
  1368. /* USER CODE END SysTick_IRQn 0 */
  1369. HAL_IncTick();
  1370. 8000b74: f000 b8a4 b.w 8000cc0 <HAL_IncTick>
  1371. 08000b78 <TIM6_DAC_IRQHandler>:
  1372. /**
  1373. * @brief This function handles TIM6 global interrupt, DAC1 and DAC3 channel underrun error interrupts.
  1374. */
  1375. void TIM6_DAC_IRQHandler(void)
  1376. {
  1377. 8000b78: b508 push {r3, lr}
  1378. /* USER CODE BEGIN TIM6_DAC_IRQn 0 */
  1379. HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
  1380. 8000b7a: 4805 ldr r0, [pc, #20] ; (8000b90 <TIM6_DAC_IRQHandler+0x18>)
  1381. 8000b7c: f44f 5100 mov.w r1, #8192 ; 0x2000
  1382. 8000b80: f000 fcce bl 8001520 <HAL_GPIO_TogglePin>
  1383. /* USER CODE END TIM6_DAC_IRQn 0 */
  1384. HAL_TIM_IRQHandler(&htim6);
  1385. /* USER CODE BEGIN TIM6_DAC_IRQn 1 */
  1386. /* USER CODE END TIM6_DAC_IRQn 1 */
  1387. }
  1388. 8000b84: e8bd 4008 ldmia.w sp!, {r3, lr}
  1389. HAL_TIM_IRQHandler(&htim6);
  1390. 8000b88: 4802 ldr r0, [pc, #8] ; (8000b94 <TIM6_DAC_IRQHandler+0x1c>)
  1391. 8000b8a: f001 bb8f b.w 80022ac <HAL_TIM_IRQHandler>
  1392. 8000b8e: bf00 nop
  1393. 8000b90: 48000800 .word 0x48000800
  1394. 8000b94: 20000048 .word 0x20000048
  1395. 08000b98 <SystemInit>:
  1396. void SystemInit(void)
  1397. {
  1398. /* FPU settings ------------------------------------------------------------*/
  1399. #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
  1400. SCB->CPACR |= ((3UL << (10*2))|(3UL << (11*2))); /* set CP10 and CP11 Full Access */
  1401. 8000b98: 4a03 ldr r2, [pc, #12] ; (8000ba8 <SystemInit+0x10>)
  1402. 8000b9a: f8d2 3088 ldr.w r3, [r2, #136] ; 0x88
  1403. 8000b9e: f443 0370 orr.w r3, r3, #15728640 ; 0xf00000
  1404. 8000ba2: f8c2 3088 str.w r3, [r2, #136] ; 0x88
  1405. /* Configure the Vector Table location add offset address ------------------*/
  1406. #if defined(USER_VECT_TAB_ADDRESS)
  1407. SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
  1408. #endif /* USER_VECT_TAB_ADDRESS */
  1409. }
  1410. 8000ba6: 4770 bx lr
  1411. 8000ba8: e000ed00 .word 0xe000ed00
  1412. 08000bac <xtea_decrypt>:
  1413. v1 += (((v0<<4) ^ (v0>>5)) + v0) ^ (sum + k[(sum>>11) & 3]);
  1414. }
  1415. v[0]=v0; v[1]=v1;
  1416. }
  1417. void xtea_decrypt(uint32_t v[2], const uint32_t k[4]) {
  1418. 8000bac: b470 push {r4, r5, r6}
  1419. uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*32;
  1420. 8000bae: e9d0 5400 ldrd r5, r4, [r0]
  1421. 8000bb2: 4b11 ldr r3, [pc, #68] ; (8000bf8 <xtea_decrypt+0x4c>)
  1422. for (uint8_t i=0;i<32;i++) {
  1423. v1 -= (((v0<<4) ^ (v0>>5)) + v0) ^ (sum + k[(sum>>11) & 3]);
  1424. sum -= delta;
  1425. 8000bb4: 4e11 ldr r6, [pc, #68] ; (8000bfc <xtea_decrypt+0x50>)
  1426. v1 -= (((v0<<4) ^ (v0>>5)) + v0) ^ (sum + k[(sum>>11) & 3]);
  1427. 8000bb6: f3c3 22c1 ubfx r2, r3, #11, #2
  1428. 8000bba: ea4f 1c55 mov.w ip, r5, lsr #5
  1429. 8000bbe: f851 2022 ldr.w r2, [r1, r2, lsl #2]
  1430. 8000bc2: ea8c 1c05 eor.w ip, ip, r5, lsl #4
  1431. 8000bc6: 44ac add ip, r5
  1432. 8000bc8: 441a add r2, r3
  1433. sum -= delta;
  1434. 8000bca: 4433 add r3, r6
  1435. v1 -= (((v0<<4) ^ (v0>>5)) + v0) ^ (sum + k[(sum>>11) & 3]);
  1436. 8000bcc: ea82 020c eor.w r2, r2, ip
  1437. v0 -= (((v1<<4) ^ (v1>>5)) + v1) ^ (sum + k[sum & 3]);
  1438. 8000bd0: f003 0c03 and.w ip, r3, #3
  1439. v1 -= (((v0<<4) ^ (v0>>5)) + v0) ^ (sum + k[(sum>>11) & 3]);
  1440. 8000bd4: 1aa4 subs r4, r4, r2
  1441. v0 -= (((v1<<4) ^ (v1>>5)) + v1) ^ (sum + k[sum & 3]);
  1442. 8000bd6: f851 202c ldr.w r2, [r1, ip, lsl #2]
  1443. 8000bda: ea4f 1c54 mov.w ip, r4, lsr #5
  1444. 8000bde: ea8c 1c04 eor.w ip, ip, r4, lsl #4
  1445. 8000be2: 441a add r2, r3
  1446. 8000be4: 44a4 add ip, r4
  1447. 8000be6: ea82 020c eor.w r2, r2, ip
  1448. 8000bea: 1aad subs r5, r5, r2
  1449. for (uint8_t i=0;i<32;i++) {
  1450. 8000bec: 2b00 cmp r3, #0
  1451. 8000bee: d1e2 bne.n 8000bb6 <xtea_decrypt+0xa>
  1452. }
  1453. v[0]=v0; v[1]=v1;
  1454. 8000bf0: e9c0 5400 strd r5, r4, [r0]
  1455. }
  1456. 8000bf4: bc70 pop {r4, r5, r6}
  1457. 8000bf6: 4770 bx lr
  1458. 8000bf8: c6ef3720 .word 0xc6ef3720
  1459. 8000bfc: 61c88647 .word 0x61c88647
  1460. 08000c00 <Reset_Handler>:
  1461. .section .text.Reset_Handler
  1462. .weak Reset_Handler
  1463. .type Reset_Handler, %function
  1464. Reset_Handler:
  1465. ldr r0, =_estack
  1466. 8000c00: 480d ldr r0, [pc, #52] ; (8000c38 <LoopForever+0x2>)
  1467. mov sp, r0 /* set stack pointer */
  1468. 8000c02: 4685 mov sp, r0
  1469. /* Call the clock system initialization function.*/
  1470. bl SystemInit
  1471. 8000c04: f7ff ffc8 bl 8000b98 <SystemInit>
  1472. /* Copy the data segment initializers from flash to SRAM */
  1473. ldr r0, =_sdata
  1474. 8000c08: 480c ldr r0, [pc, #48] ; (8000c3c <LoopForever+0x6>)
  1475. ldr r1, =_edata
  1476. 8000c0a: 490d ldr r1, [pc, #52] ; (8000c40 <LoopForever+0xa>)
  1477. ldr r2, =_sidata
  1478. 8000c0c: 4a0d ldr r2, [pc, #52] ; (8000c44 <LoopForever+0xe>)
  1479. movs r3, #0
  1480. 8000c0e: 2300 movs r3, #0
  1481. b LoopCopyDataInit
  1482. 8000c10: e002 b.n 8000c18 <LoopCopyDataInit>
  1483. 08000c12 <CopyDataInit>:
  1484. CopyDataInit:
  1485. ldr r4, [r2, r3]
  1486. 8000c12: 58d4 ldr r4, [r2, r3]
  1487. str r4, [r0, r3]
  1488. 8000c14: 50c4 str r4, [r0, r3]
  1489. adds r3, r3, #4
  1490. 8000c16: 3304 adds r3, #4
  1491. 08000c18 <LoopCopyDataInit>:
  1492. LoopCopyDataInit:
  1493. adds r4, r0, r3
  1494. 8000c18: 18c4 adds r4, r0, r3
  1495. cmp r4, r1
  1496. 8000c1a: 428c cmp r4, r1
  1497. bcc CopyDataInit
  1498. 8000c1c: d3f9 bcc.n 8000c12 <CopyDataInit>
  1499. /* Zero fill the bss segment. */
  1500. ldr r2, =_sbss
  1501. 8000c1e: 4a0a ldr r2, [pc, #40] ; (8000c48 <LoopForever+0x12>)
  1502. ldr r4, =_ebss
  1503. 8000c20: 4c0a ldr r4, [pc, #40] ; (8000c4c <LoopForever+0x16>)
  1504. movs r3, #0
  1505. 8000c22: 2300 movs r3, #0
  1506. b LoopFillZerobss
  1507. 8000c24: e001 b.n 8000c2a <LoopFillZerobss>
  1508. 08000c26 <FillZerobss>:
  1509. FillZerobss:
  1510. str r3, [r2]
  1511. 8000c26: 6013 str r3, [r2, #0]
  1512. adds r2, r2, #4
  1513. 8000c28: 3204 adds r2, #4
  1514. 08000c2a <LoopFillZerobss>:
  1515. LoopFillZerobss:
  1516. cmp r2, r4
  1517. 8000c2a: 42a2 cmp r2, r4
  1518. bcc FillZerobss
  1519. 8000c2c: d3fb bcc.n 8000c26 <FillZerobss>
  1520. /* Call static constructors */
  1521. bl __libc_init_array
  1522. 8000c2e: f002 f9db bl 8002fe8 <__libc_init_array>
  1523. /* Call the application's entry point.*/
  1524. bl main
  1525. 8000c32: f7ff fe33 bl 800089c <main>
  1526. 08000c36 <LoopForever>:
  1527. LoopForever:
  1528. b LoopForever
  1529. 8000c36: e7fe b.n 8000c36 <LoopForever>
  1530. ldr r0, =_estack
  1531. 8000c38: 20007f80 .word 0x20007f80
  1532. ldr r0, =_sdata
  1533. 8000c3c: 20000000 .word 0x20000000
  1534. ldr r1, =_edata
  1535. 8000c40: 2000002c .word 0x2000002c
  1536. ldr r2, =_sidata
  1537. 8000c44: 080030cc .word 0x080030cc
  1538. ldr r2, =_sbss
  1539. 8000c48: 2000002c .word 0x2000002c
  1540. ldr r4, =_ebss
  1541. 8000c4c: 2000012c .word 0x2000012c
  1542. 08000c50 <ADC1_2_IRQHandler>:
  1543. * @retval : None
  1544. */
  1545. .section .text.Default_Handler,"ax",%progbits
  1546. Default_Handler:
  1547. Infinite_Loop:
  1548. b Infinite_Loop
  1549. 8000c50: e7fe b.n 8000c50 <ADC1_2_IRQHandler>
  1550. ...
  1551. 08000c54 <HAL_InitTick>:
  1552. * implementation in user file.
  1553. * @param TickPriority: Tick interrupt priority.
  1554. * @retval HAL status
  1555. */
  1556. __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
  1557. {
  1558. 8000c54: b538 push {r3, r4, r5, lr}
  1559. HAL_StatusTypeDef status = HAL_OK;
  1560. if (uwTickFreq != 0U)
  1561. 8000c56: 4b0f ldr r3, [pc, #60] ; (8000c94 <HAL_InitTick+0x40>)
  1562. 8000c58: 681b ldr r3, [r3, #0]
  1563. 8000c5a: b90b cbnz r3, 8000c60 <HAL_InitTick+0xc>
  1564. status = HAL_ERROR;
  1565. }
  1566. }
  1567. else
  1568. {
  1569. status = HAL_ERROR;
  1570. 8000c5c: 2001 movs r0, #1
  1571. }
  1572. /* Return function status */
  1573. return status;
  1574. }
  1575. 8000c5e: bd38 pop {r3, r4, r5, pc}
  1576. if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) == 0U)
  1577. 8000c60: 490d ldr r1, [pc, #52] ; (8000c98 <HAL_InitTick+0x44>)
  1578. 8000c62: f44f 727a mov.w r2, #1000 ; 0x3e8
  1579. 8000c66: 4605 mov r5, r0
  1580. 8000c68: fbb2 f3f3 udiv r3, r2, r3
  1581. 8000c6c: 6808 ldr r0, [r1, #0]
  1582. 8000c6e: fbb0 f0f3 udiv r0, r0, r3
  1583. 8000c72: f000 f8a9 bl 8000dc8 <HAL_SYSTICK_Config>
  1584. 8000c76: 4604 mov r4, r0
  1585. 8000c78: 2800 cmp r0, #0
  1586. 8000c7a: d1ef bne.n 8000c5c <HAL_InitTick+0x8>
  1587. if (TickPriority < (1UL << __NVIC_PRIO_BITS))
  1588. 8000c7c: 2d0f cmp r5, #15
  1589. 8000c7e: d8ed bhi.n 8000c5c <HAL_InitTick+0x8>
  1590. HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);
  1591. 8000c80: 4602 mov r2, r0
  1592. 8000c82: 4629 mov r1, r5
  1593. 8000c84: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff
  1594. 8000c88: f000 f83e bl 8000d08 <HAL_NVIC_SetPriority>
  1595. uwTickPrio = TickPriority;
  1596. 8000c8c: 4b03 ldr r3, [pc, #12] ; (8000c9c <HAL_InitTick+0x48>)
  1597. 8000c8e: 4620 mov r0, r4
  1598. 8000c90: 601d str r5, [r3, #0]
  1599. }
  1600. 8000c92: bd38 pop {r3, r4, r5, pc}
  1601. 8000c94: 20000004 .word 0x20000004
  1602. 8000c98: 20000000 .word 0x20000000
  1603. 8000c9c: 20000008 .word 0x20000008
  1604. 08000ca0 <HAL_Init>:
  1605. {
  1606. 8000ca0: b510 push {r4, lr}
  1607. HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
  1608. 8000ca2: 2003 movs r0, #3
  1609. 8000ca4: f000 f81e bl 8000ce4 <HAL_NVIC_SetPriorityGrouping>
  1610. if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK)
  1611. 8000ca8: 200f movs r0, #15
  1612. 8000caa: f7ff ffd3 bl 8000c54 <HAL_InitTick>
  1613. 8000cae: b110 cbz r0, 8000cb6 <HAL_Init+0x16>
  1614. status = HAL_ERROR;
  1615. 8000cb0: 2401 movs r4, #1
  1616. }
  1617. 8000cb2: 4620 mov r0, r4
  1618. 8000cb4: bd10 pop {r4, pc}
  1619. 8000cb6: 4604 mov r4, r0
  1620. HAL_MspInit();
  1621. 8000cb8: f7ff fe9e bl 80009f8 <HAL_MspInit>
  1622. }
  1623. 8000cbc: 4620 mov r0, r4
  1624. 8000cbe: bd10 pop {r4, pc}
  1625. 08000cc0 <HAL_IncTick>:
  1626. * implementations in user file.
  1627. * @retval None
  1628. */
  1629. __weak void HAL_IncTick(void)
  1630. {
  1631. uwTick += uwTickFreq;
  1632. 8000cc0: 4a03 ldr r2, [pc, #12] ; (8000cd0 <HAL_IncTick+0x10>)
  1633. 8000cc2: 4904 ldr r1, [pc, #16] ; (8000cd4 <HAL_IncTick+0x14>)
  1634. 8000cc4: 6813 ldr r3, [r2, #0]
  1635. 8000cc6: 6809 ldr r1, [r1, #0]
  1636. 8000cc8: 440b add r3, r1
  1637. 8000cca: 6013 str r3, [r2, #0]
  1638. }
  1639. 8000ccc: 4770 bx lr
  1640. 8000cce: bf00 nop
  1641. 8000cd0: 20000128 .word 0x20000128
  1642. 8000cd4: 20000004 .word 0x20000004
  1643. 08000cd8 <HAL_GetTick>:
  1644. * implementations in user file.
  1645. * @retval tick value
  1646. */
  1647. __weak uint32_t HAL_GetTick(void)
  1648. {
  1649. return uwTick;
  1650. 8000cd8: 4b01 ldr r3, [pc, #4] ; (8000ce0 <HAL_GetTick+0x8>)
  1651. 8000cda: 6818 ldr r0, [r3, #0]
  1652. }
  1653. 8000cdc: 4770 bx lr
  1654. 8000cde: bf00 nop
  1655. 8000ce0: 20000128 .word 0x20000128
  1656. 08000ce4 <HAL_NVIC_SetPriorityGrouping>:
  1657. __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
  1658. {
  1659. uint32_t reg_value;
  1660. uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
  1661. reg_value = SCB->AIRCR; /* read old register configuration */
  1662. 8000ce4: 4907 ldr r1, [pc, #28] ; (8000d04 <HAL_NVIC_SetPriorityGrouping+0x20>)
  1663. 8000ce6: 68ca ldr r2, [r1, #12]
  1664. reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */
  1665. reg_value = (reg_value |
  1666. ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
  1667. (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */
  1668. 8000ce8: 0203 lsls r3, r0, #8
  1669. reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */
  1670. 8000cea: f64f 00ff movw r0, #63743 ; 0xf8ff
  1671. (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */
  1672. 8000cee: f403 63e0 and.w r3, r3, #1792 ; 0x700
  1673. reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */
  1674. 8000cf2: 4002 ands r2, r0
  1675. ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
  1676. 8000cf4: 4313 orrs r3, r2
  1677. reg_value = (reg_value |
  1678. 8000cf6: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000
  1679. 8000cfa: f443 3300 orr.w r3, r3, #131072 ; 0x20000
  1680. SCB->AIRCR = reg_value;
  1681. 8000cfe: 60cb str r3, [r1, #12]
  1682. /* Check the parameters */
  1683. assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
  1684. /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
  1685. NVIC_SetPriorityGrouping(PriorityGroup);
  1686. }
  1687. 8000d00: 4770 bx lr
  1688. 8000d02: bf00 nop
  1689. 8000d04: e000ed00 .word 0xe000ed00
  1690. 08000d08 <HAL_NVIC_SetPriority>:
  1691. \details Reads the priority grouping field from the NVIC Interrupt Controller.
  1692. \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
  1693. */
  1694. __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
  1695. {
  1696. return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
  1697. 8000d08: 4b1c ldr r3, [pc, #112] ; (8000d7c <HAL_NVIC_SetPriority+0x74>)
  1698. 8000d0a: 68db ldr r3, [r3, #12]
  1699. 8000d0c: f3c3 2302 ubfx r3, r3, #8, #3
  1700. * This parameter can be a value between 0 and 15
  1701. * A lower priority value indicates a higher priority.
  1702. * @retval None
  1703. */
  1704. void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
  1705. {
  1706. 8000d10: b500 push {lr}
  1707. {
  1708. uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
  1709. uint32_t PreemptPriorityBits;
  1710. uint32_t SubPriorityBits;
  1711. PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
  1712. 8000d12: f1c3 0e07 rsb lr, r3, #7
  1713. 8000d16: f1be 0f04 cmp.w lr, #4
  1714. SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
  1715. 8000d1a: f103 0c04 add.w ip, r3, #4
  1716. PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
  1717. 8000d1e: bf28 it cs
  1718. 8000d20: f04f 0e04 movcs.w lr, #4
  1719. SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
  1720. 8000d24: f1bc 0f06 cmp.w ip, #6
  1721. 8000d28: d91b bls.n 8000d62 <HAL_NVIC_SetPriority+0x5a>
  1722. 8000d2a: 3b03 subs r3, #3
  1723. return (
  1724. ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
  1725. ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))
  1726. 8000d2c: f04f 3cff mov.w ip, #4294967295 ; 0xffffffff
  1727. 8000d30: fa0c fc03 lsl.w ip, ip, r3
  1728. 8000d34: ea22 020c bic.w r2, r2, ip
  1729. ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
  1730. 8000d38: f04f 3cff mov.w ip, #4294967295 ; 0xffffffff
  1731. 8000d3c: fa0c fc0e lsl.w ip, ip, lr
  1732. 8000d40: ea21 010c bic.w r1, r1, ip
  1733. 8000d44: 4099 lsls r1, r3
  1734. if ((int32_t)(IRQn) >= 0)
  1735. 8000d46: 2800 cmp r0, #0
  1736. ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
  1737. 8000d48: ea41 0102 orr.w r1, r1, r2
  1738. if ((int32_t)(IRQn) >= 0)
  1739. 8000d4c: db0c blt.n 8000d68 <HAL_NVIC_SetPriority+0x60>
  1740. NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  1741. 8000d4e: f100 4060 add.w r0, r0, #3758096384 ; 0xe0000000
  1742. 8000d52: 0109 lsls r1, r1, #4
  1743. 8000d54: f500 4061 add.w r0, r0, #57600 ; 0xe100
  1744. 8000d58: b2c9 uxtb r1, r1
  1745. 8000d5a: f880 1300 strb.w r1, [r0, #768] ; 0x300
  1746. assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
  1747. prioritygroup = NVIC_GetPriorityGrouping();
  1748. NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
  1749. }
  1750. 8000d5e: f85d fb04 ldr.w pc, [sp], #4
  1751. 8000d62: 2200 movs r2, #0
  1752. SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
  1753. 8000d64: 4613 mov r3, r2
  1754. 8000d66: e7e7 b.n 8000d38 <HAL_NVIC_SetPriority+0x30>
  1755. SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  1756. 8000d68: 4b05 ldr r3, [pc, #20] ; (8000d80 <HAL_NVIC_SetPriority+0x78>)
  1757. 8000d6a: f000 000f and.w r0, r0, #15
  1758. 8000d6e: 0109 lsls r1, r1, #4
  1759. 8000d70: 4403 add r3, r0
  1760. 8000d72: b2c9 uxtb r1, r1
  1761. 8000d74: 7619 strb r1, [r3, #24]
  1762. 8000d76: f85d fb04 ldr.w pc, [sp], #4
  1763. 8000d7a: bf00 nop
  1764. 8000d7c: e000ed00 .word 0xe000ed00
  1765. 8000d80: e000ecfc .word 0xe000ecfc
  1766. 08000d84 <HAL_NVIC_EnableIRQ>:
  1767. if ((int32_t)(IRQn) >= 0)
  1768. 8000d84: 2800 cmp r0, #0
  1769. 8000d86: db08 blt.n 8000d9a <HAL_NVIC_EnableIRQ+0x16>
  1770. NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
  1771. 8000d88: 4a04 ldr r2, [pc, #16] ; (8000d9c <HAL_NVIC_EnableIRQ+0x18>)
  1772. 8000d8a: 0941 lsrs r1, r0, #5
  1773. 8000d8c: 2301 movs r3, #1
  1774. 8000d8e: f000 001f and.w r0, r0, #31
  1775. 8000d92: fa03 f000 lsl.w r0, r3, r0
  1776. 8000d96: f842 0021 str.w r0, [r2, r1, lsl #2]
  1777. /* Check the parameters */
  1778. assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
  1779. /* Enable interrupt */
  1780. NVIC_EnableIRQ(IRQn);
  1781. }
  1782. 8000d9a: 4770 bx lr
  1783. 8000d9c: e000e100 .word 0xe000e100
  1784. 08000da0 <HAL_NVIC_DisableIRQ>:
  1785. if ((int32_t)(IRQn) >= 0)
  1786. 8000da0: 2800 cmp r0, #0
  1787. 8000da2: db0d blt.n 8000dc0 <HAL_NVIC_DisableIRQ+0x20>
  1788. NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
  1789. 8000da4: 0943 lsrs r3, r0, #5
  1790. 8000da6: 4907 ldr r1, [pc, #28] ; (8000dc4 <HAL_NVIC_DisableIRQ+0x24>)
  1791. 8000da8: 2201 movs r2, #1
  1792. 8000daa: 3320 adds r3, #32
  1793. 8000dac: f000 001f and.w r0, r0, #31
  1794. 8000db0: fa02 f000 lsl.w r0, r2, r0
  1795. 8000db4: f841 0023 str.w r0, [r1, r3, lsl #2]
  1796. \details Acts as a special kind of Data Memory Barrier.
  1797. It completes when all explicit memory accesses before this instruction complete.
  1798. */
  1799. __STATIC_FORCEINLINE void __DSB(void)
  1800. {
  1801. __ASM volatile ("dsb 0xF":::"memory");
  1802. 8000db8: f3bf 8f4f dsb sy
  1803. __ASM volatile ("isb 0xF":::"memory");
  1804. 8000dbc: f3bf 8f6f isb sy
  1805. /* Check the parameters */
  1806. assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
  1807. /* Disable interrupt */
  1808. NVIC_DisableIRQ(IRQn);
  1809. }
  1810. 8000dc0: 4770 bx lr
  1811. 8000dc2: bf00 nop
  1812. 8000dc4: e000e100 .word 0xe000e100
  1813. 08000dc8 <HAL_SYSTICK_Config>:
  1814. function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
  1815. must contain a vendor-specific implementation of this function.
  1816. */
  1817. __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
  1818. {
  1819. if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
  1820. 8000dc8: 3801 subs r0, #1
  1821. 8000dca: f1b0 7f80 cmp.w r0, #16777216 ; 0x1000000
  1822. 8000dce: d210 bcs.n 8000df2 <HAL_SYSTICK_Config+0x2a>
  1823. * @param TicksNumb: Specifies the ticks Number of ticks between two interrupts.
  1824. * @retval status: - 0 Function succeeded.
  1825. * - 1 Function failed.
  1826. */
  1827. uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
  1828. {
  1829. 8000dd0: b410 push {r4}
  1830. {
  1831. return (1UL); /* Reload value impossible */
  1832. }
  1833. SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
  1834. 8000dd2: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000
  1835. SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  1836. 8000dd6: 4c08 ldr r4, [pc, #32] ; (8000df8 <HAL_SYSTICK_Config+0x30>)
  1837. SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
  1838. 8000dd8: 6158 str r0, [r3, #20]
  1839. SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  1840. 8000dda: f04f 0cf0 mov.w ip, #240 ; 0xf0
  1841. 8000dde: f884 c023 strb.w ip, [r4, #35] ; 0x23
  1842. NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
  1843. SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
  1844. 8000de2: 2200 movs r2, #0
  1845. SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
  1846. 8000de4: 2107 movs r1, #7
  1847. SysTick_CTRL_TICKINT_Msk |
  1848. SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
  1849. return (0UL); /* Function successful */
  1850. 8000de6: 4610 mov r0, r2
  1851. SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
  1852. 8000de8: 619a str r2, [r3, #24]
  1853. return SysTick_Config(TicksNumb);
  1854. }
  1855. 8000dea: f85d 4b04 ldr.w r4, [sp], #4
  1856. SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
  1857. 8000dee: 6119 str r1, [r3, #16]
  1858. 8000df0: 4770 bx lr
  1859. return (1UL); /* Reload value impossible */
  1860. 8000df2: 2001 movs r0, #1
  1861. 8000df4: 4770 bx lr
  1862. 8000df6: bf00 nop
  1863. 8000df8: e000ed00 .word 0xe000ed00
  1864. 08000dfc <HAL_FLASH_Program>:
  1865. * are stored the data for the row fast program.
  1866. *
  1867. * @retval HAL_Status
  1868. */
  1869. HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
  1870. {
  1871. 8000dfc: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
  1872. /* Check the parameters */
  1873. assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
  1874. /* Process Locked */
  1875. __HAL_LOCK(&pFlash);
  1876. 8000e00: f8df 8168 ldr.w r8, [pc, #360] ; 8000f6c <HAL_FLASH_Program+0x170>
  1877. {
  1878. 8000e04: 469a mov sl, r3
  1879. __HAL_LOCK(&pFlash);
  1880. 8000e06: f898 3000 ldrb.w r3, [r8]
  1881. 8000e0a: 2b01 cmp r3, #1
  1882. 8000e0c: d05e beq.n 8000ecc <HAL_FLASH_Program+0xd0>
  1883. 8000e0e: 2301 movs r3, #1
  1884. 8000e10: 4681 mov r9, r0
  1885. 8000e12: 460e mov r6, r1
  1886. 8000e14: 4617 mov r7, r2
  1887. 8000e16: f888 3000 strb.w r3, [r8]
  1888. {
  1889. /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.
  1890. Even if the FLASH operation fails, the BUSY flag will be reset and an error
  1891. flag will be set */
  1892. uint32_t tickstart = HAL_GetTick();
  1893. 8000e1a: f7ff ff5d bl 8000cd8 <HAL_GetTick>
  1894. uint32_t error;
  1895. while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
  1896. 8000e1e: 4d52 ldr r5, [pc, #328] ; (8000f68 <HAL_FLASH_Program+0x16c>)
  1897. uint32_t tickstart = HAL_GetTick();
  1898. 8000e20: 4604 mov r4, r0
  1899. while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
  1900. 8000e22: e006 b.n 8000e32 <HAL_FLASH_Program+0x36>
  1901. {
  1902. if ((HAL_GetTick() - tickstart) > Timeout)
  1903. 8000e24: f7ff ff58 bl 8000cd8 <HAL_GetTick>
  1904. 8000e28: eba0 0c04 sub.w ip, r0, r4
  1905. 8000e2c: f5bc 7f7a cmp.w ip, #1000 ; 0x3e8
  1906. 8000e30: d845 bhi.n 8000ebe <HAL_FLASH_Program+0xc2>
  1907. while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
  1908. 8000e32: 692b ldr r3, [r5, #16]
  1909. 8000e34: 03d8 lsls r0, r3, #15
  1910. 8000e36: d4f5 bmi.n 8000e24 <HAL_FLASH_Program+0x28>
  1911. return HAL_TIMEOUT;
  1912. }
  1913. }
  1914. /* Check FLASH operation error flags */
  1915. error = (FLASH->SR & FLASH_FLAG_SR_ERRORS);
  1916. 8000e38: 692c ldr r4, [r5, #16]
  1917. 8000e3a: f24c 33fa movw r3, #50170 ; 0xc3fa
  1918. if (error != 0u)
  1919. 8000e3e: 401c ands r4, r3
  1920. 8000e40: d156 bne.n 8000ef0 <HAL_FLASH_Program+0xf4>
  1921. return HAL_ERROR;
  1922. }
  1923. /* Check FLASH End of Operation flag */
  1924. if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
  1925. 8000e42: 692b ldr r3, [r5, #16]
  1926. if(READ_BIT(FLASH->ACR, FLASH_ACR_DCEN) != 0U)
  1927. 8000e44: 4a48 ldr r2, [pc, #288] ; (8000f68 <HAL_FLASH_Program+0x16c>)
  1928. if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
  1929. 8000e46: 07d9 lsls r1, r3, #31
  1930. {
  1931. /* Clear FLASH End of Operation pending bit */
  1932. __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
  1933. 8000e48: bf44 itt mi
  1934. 8000e4a: 2301 movmi r3, #1
  1935. 8000e4c: 612b strmi r3, [r5, #16]
  1936. pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
  1937. 8000e4e: 2300 movs r3, #0
  1938. 8000e50: f8c8 3004 str.w r3, [r8, #4]
  1939. if(READ_BIT(FLASH->ACR, FLASH_ACR_DCEN) != 0U)
  1940. 8000e54: 6813 ldr r3, [r2, #0]
  1941. 8000e56: f413 6380 ands.w r3, r3, #1024 ; 0x400
  1942. __HAL_FLASH_DATA_CACHE_DISABLE();
  1943. 8000e5a: bf1f itttt ne
  1944. 8000e5c: 6813 ldrne r3, [r2, #0]
  1945. 8000e5e: f423 6380 bicne.w r3, r3, #1024 ; 0x400
  1946. 8000e62: 6013 strne r3, [r2, #0]
  1947. pFlash.CacheToReactivate = FLASH_CACHE_DCACHE_ENABLED;
  1948. 8000e64: 2302 movne r3, #2
  1949. pFlash.CacheToReactivate = FLASH_CACHE_DISABLED;
  1950. 8000e66: f888 301c strb.w r3, [r8, #28]
  1951. if (TypeProgram == FLASH_TYPEPROGRAM_DOUBLEWORD)
  1952. 8000e6a: f1b9 0f00 cmp.w r9, #0
  1953. 8000e6e: d031 beq.n 8000ed4 <HAL_FLASH_Program+0xd8>
  1954. else if ((TypeProgram == FLASH_TYPEPROGRAM_FAST) || (TypeProgram == FLASH_TYPEPROGRAM_FAST_AND_LAST))
  1955. 8000e70: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff
  1956. 8000e74: 2b01 cmp r3, #1
  1957. 8000e76: d943 bls.n 8000f00 <HAL_FLASH_Program+0x104>
  1958. uint32_t tickstart = HAL_GetTick();
  1959. 8000e78: f7ff ff2e bl 8000cd8 <HAL_GetTick>
  1960. while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
  1961. 8000e7c: 4e3a ldr r6, [pc, #232] ; (8000f68 <HAL_FLASH_Program+0x16c>)
  1962. uint32_t tickstart = HAL_GetTick();
  1963. 8000e7e: 4605 mov r5, r0
  1964. while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
  1965. 8000e80: e005 b.n 8000e8e <HAL_FLASH_Program+0x92>
  1966. if ((HAL_GetTick() - tickstart) > Timeout)
  1967. 8000e82: f7ff ff29 bl 8000cd8 <HAL_GetTick>
  1968. 8000e86: 1b40 subs r0, r0, r5
  1969. 8000e88: f5b0 7f7a cmp.w r0, #1000 ; 0x3e8
  1970. 8000e8c: d82e bhi.n 8000eec <HAL_FLASH_Program+0xf0>
  1971. while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
  1972. 8000e8e: 6933 ldr r3, [r6, #16]
  1973. 8000e90: 03db lsls r3, r3, #15
  1974. 8000e92: d4f6 bmi.n 8000e82 <HAL_FLASH_Program+0x86>
  1975. error = (FLASH->SR & FLASH_FLAG_SR_ERRORS);
  1976. 8000e94: 6933 ldr r3, [r6, #16]
  1977. 8000e96: f24c 32fa movw r2, #50170 ; 0xc3fa
  1978. if (error != 0u)
  1979. 8000e9a: 4013 ands r3, r2
  1980. 8000e9c: d153 bne.n 8000f46 <HAL_FLASH_Program+0x14a>
  1981. if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
  1982. 8000e9e: 6937 ldr r7, [r6, #16]
  1983. 8000ea0: f017 0701 ands.w r7, r7, #1
  1984. 8000ea4: d002 beq.n 8000eac <HAL_FLASH_Program+0xb0>
  1985. __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
  1986. 8000ea6: 2201 movs r2, #1
  1987. 8000ea8: 6132 str r2, [r6, #16]
  1988. 8000eaa: 461f mov r7, r3
  1989. if (prog_bit != 0U)
  1990. 8000eac: b124 cbz r4, 8000eb8 <HAL_FLASH_Program+0xbc>
  1991. CLEAR_BIT(FLASH->CR, prog_bit);
  1992. 8000eae: 4a2e ldr r2, [pc, #184] ; (8000f68 <HAL_FLASH_Program+0x16c>)
  1993. 8000eb0: 6953 ldr r3, [r2, #20]
  1994. 8000eb2: ea23 0404 bic.w r4, r3, r4
  1995. 8000eb6: 6154 str r4, [r2, #20]
  1996. FLASH_FlushCaches();
  1997. 8000eb8: f000 f952 bl 8001160 <FLASH_FlushCaches>
  1998. 8000ebc: e000 b.n 8000ec0 <HAL_FLASH_Program+0xc4>
  1999. 8000ebe: 2703 movs r7, #3
  2000. __HAL_UNLOCK(&pFlash);
  2001. 8000ec0: 2300 movs r3, #0
  2002. 8000ec2: f888 3000 strb.w r3, [r8]
  2003. }
  2004. 8000ec6: 4638 mov r0, r7
  2005. 8000ec8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  2006. __HAL_LOCK(&pFlash);
  2007. 8000ecc: 2702 movs r7, #2
  2008. }
  2009. 8000ece: 4638 mov r0, r7
  2010. 8000ed0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  2011. {
  2012. /* Check the parameters */
  2013. assert_param(IS_FLASH_PROGRAM_ADDRESS(Address));
  2014. /* Set PG bit */
  2015. SET_BIT(FLASH->CR, FLASH_CR_PG);
  2016. 8000ed4: 4a24 ldr r2, [pc, #144] ; (8000f68 <HAL_FLASH_Program+0x16c>)
  2017. 8000ed6: 6953 ldr r3, [r2, #20]
  2018. 8000ed8: f043 0301 orr.w r3, r3, #1
  2019. 8000edc: 6153 str r3, [r2, #20]
  2020. /* Program first word */
  2021. *(uint32_t *)Address = (uint32_t)Data;
  2022. 8000ede: 6037 str r7, [r6, #0]
  2023. 8000ee0: f3bf 8f6f isb sy
  2024. prog_bit = FLASH_CR_PG;
  2025. 8000ee4: 2401 movs r4, #1
  2026. /* Barrier to ensure programming is performed in 2 steps, in right order
  2027. (independently of compiler optimization behavior) */
  2028. __ISB();
  2029. /* Program second word */
  2030. *(uint32_t *)(Address + 4U) = (uint32_t)(Data >> 32U);
  2031. 8000ee6: f8c6 a004 str.w sl, [r6, #4]
  2032. prog_bit = FLASH_CR_PG;
  2033. 8000eea: e7c5 b.n 8000e78 <HAL_FLASH_Program+0x7c>
  2034. return HAL_TIMEOUT;
  2035. 8000eec: 2703 movs r7, #3
  2036. 8000eee: e7dd b.n 8000eac <HAL_FLASH_Program+0xb0>
  2037. pFlash.ErrorCode |= error;
  2038. 8000ef0: f8d8 3004 ldr.w r3, [r8, #4]
  2039. 8000ef4: 4323 orrs r3, r4
  2040. 8000ef6: f8c8 3004 str.w r3, [r8, #4]
  2041. return HAL_ERROR;
  2042. 8000efa: 2701 movs r7, #1
  2043. __HAL_FLASH_CLEAR_FLAG(error);
  2044. 8000efc: 612c str r4, [r5, #16]
  2045. if (status == HAL_OK)
  2046. 8000efe: e7df b.n 8000ec0 <HAL_FLASH_Program+0xc4>
  2047. /* Check the parameters */
  2048. assert_param(IS_FLASH_MAIN_MEM_ADDRESS(Address));
  2049. /* Set FSTPG bit */
  2050. SET_BIT(FLASH->CR, FLASH_CR_FSTPG);
  2051. 8000f00: 4919 ldr r1, [pc, #100] ; (8000f68 <HAL_FLASH_Program+0x16c>)
  2052. 8000f02: 694a ldr r2, [r1, #20]
  2053. 8000f04: f442 2280 orr.w r2, r2, #262144 ; 0x40000
  2054. uint32_t *src_addr = (uint32_t *)DataAddress;
  2055. 8000f08: 463b mov r3, r7
  2056. SET_BIT(FLASH->CR, FLASH_CR_FSTPG);
  2057. 8000f0a: 614a str r2, [r1, #20]
  2058. __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory");
  2059. 8000f0c: f3ef 8510 mrs r5, PRIMASK
  2060. __ASM volatile ("cpsid i" : : : "memory");
  2061. 8000f10: b672 cpsid i
  2062. 8000f12: ea46 0207 orr.w r2, r6, r7
  2063. 8000f16: 0752 lsls r2, r2, #29
  2064. 8000f18: d11d bne.n 8000f56 <HAL_FLASH_Program+0x15a>
  2065. 8000f1a: 1d3a adds r2, r7, #4
  2066. 8000f1c: 42b2 cmp r2, r6
  2067. 8000f1e: d01a beq.n 8000f56 <HAL_FLASH_Program+0x15a>
  2068. 8000f20: f507 7780 add.w r7, r7, #256 ; 0x100
  2069. 8000f24: 1af6 subs r6, r6, r3
  2070. __disable_irq();
  2071. /* Program the double words of the row */
  2072. do
  2073. {
  2074. *dest_addr = *src_addr;
  2075. 8000f26: e9d3 0100 ldrd r0, r1, [r3]
  2076. 8000f2a: 18f2 adds r2, r6, r3
  2077. 8000f2c: 3308 adds r3, #8
  2078. 8000f2e: 42bb cmp r3, r7
  2079. 8000f30: e9c2 0100 strd r0, r1, [r2]
  2080. dest_addr++;
  2081. src_addr++;
  2082. row_index--;
  2083. }
  2084. while (row_index != 0U);
  2085. 8000f34: d1f7 bne.n 8000f26 <HAL_FLASH_Program+0x12a>
  2086. __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
  2087. 8000f36: f385 8810 msr PRIMASK, r5
  2088. prog_bit = FLASH_CR_FSTPG;
  2089. 8000f3a: f1b9 0f02 cmp.w r9, #2
  2090. 8000f3e: bf08 it eq
  2091. 8000f40: f44f 2480 moveq.w r4, #262144 ; 0x40000
  2092. 8000f44: e798 b.n 8000e78 <HAL_FLASH_Program+0x7c>
  2093. pFlash.ErrorCode |= error;
  2094. 8000f46: f8d8 2004 ldr.w r2, [r8, #4]
  2095. 8000f4a: 431a orrs r2, r3
  2096. 8000f4c: f8c8 2004 str.w r2, [r8, #4]
  2097. return HAL_ERROR;
  2098. 8000f50: 2701 movs r7, #1
  2099. __HAL_FLASH_CLEAR_FLAG(error);
  2100. 8000f52: 6133 str r3, [r6, #16]
  2101. return HAL_ERROR;
  2102. 8000f54: e7aa b.n 8000eac <HAL_FLASH_Program+0xb0>
  2103. 8000f56: 1bf6 subs r6, r6, r7
  2104. 8000f58: f507 7780 add.w r7, r7, #256 ; 0x100
  2105. *dest_addr = *src_addr;
  2106. 8000f5c: 681a ldr r2, [r3, #0]
  2107. 8000f5e: 519a str r2, [r3, r6]
  2108. src_addr++;
  2109. 8000f60: 3304 adds r3, #4
  2110. while (row_index != 0U);
  2111. 8000f62: 429f cmp r7, r3
  2112. 8000f64: d1fa bne.n 8000f5c <HAL_FLASH_Program+0x160>
  2113. 8000f66: e7e6 b.n 8000f36 <HAL_FLASH_Program+0x13a>
  2114. 8000f68: 40022000 .word 0x40022000
  2115. 8000f6c: 2000000c .word 0x2000000c
  2116. 08000f70 <HAL_FLASH_Unlock>:
  2117. if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0U)
  2118. 8000f70: 4b06 ldr r3, [pc, #24] ; (8000f8c <HAL_FLASH_Unlock+0x1c>)
  2119. 8000f72: 695a ldr r2, [r3, #20]
  2120. 8000f74: 2a00 cmp r2, #0
  2121. 8000f76: db01 blt.n 8000f7c <HAL_FLASH_Unlock+0xc>
  2122. HAL_StatusTypeDef status = HAL_OK;
  2123. 8000f78: 2000 movs r0, #0
  2124. }
  2125. 8000f7a: 4770 bx lr
  2126. WRITE_REG(FLASH->KEYR, FLASH_KEY1);
  2127. 8000f7c: 4904 ldr r1, [pc, #16] ; (8000f90 <HAL_FLASH_Unlock+0x20>)
  2128. WRITE_REG(FLASH->KEYR, FLASH_KEY2);
  2129. 8000f7e: 4a05 ldr r2, [pc, #20] ; (8000f94 <HAL_FLASH_Unlock+0x24>)
  2130. WRITE_REG(FLASH->KEYR, FLASH_KEY1);
  2131. 8000f80: 6099 str r1, [r3, #8]
  2132. WRITE_REG(FLASH->KEYR, FLASH_KEY2);
  2133. 8000f82: 609a str r2, [r3, #8]
  2134. if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0U)
  2135. 8000f84: 6958 ldr r0, [r3, #20]
  2136. HAL_StatusTypeDef status = HAL_OK;
  2137. 8000f86: 0fc0 lsrs r0, r0, #31
  2138. 8000f88: 4770 bx lr
  2139. 8000f8a: bf00 nop
  2140. 8000f8c: 40022000 .word 0x40022000
  2141. 8000f90: 45670123 .word 0x45670123
  2142. 8000f94: cdef89ab .word 0xcdef89ab
  2143. 08000f98 <HAL_FLASH_Lock>:
  2144. SET_BIT(FLASH->CR, FLASH_CR_LOCK);
  2145. 8000f98: 4b04 ldr r3, [pc, #16] ; (8000fac <HAL_FLASH_Lock+0x14>)
  2146. 8000f9a: 695a ldr r2, [r3, #20]
  2147. 8000f9c: f042 4200 orr.w r2, r2, #2147483648 ; 0x80000000
  2148. 8000fa0: 615a str r2, [r3, #20]
  2149. if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0U)
  2150. 8000fa2: 6958 ldr r0, [r3, #20]
  2151. }
  2152. 8000fa4: 43c0 mvns r0, r0
  2153. 8000fa6: 0fc0 lsrs r0, r0, #31
  2154. 8000fa8: 4770 bx lr
  2155. 8000faa: bf00 nop
  2156. 8000fac: 40022000 .word 0x40022000
  2157. 08000fb0 <FLASH_WaitForLastOperation>:
  2158. {
  2159. 8000fb0: b570 push {r4, r5, r6, lr}
  2160. 8000fb2: 4605 mov r5, r0
  2161. uint32_t tickstart = HAL_GetTick();
  2162. 8000fb4: f7ff fe90 bl 8000cd8 <HAL_GetTick>
  2163. while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
  2164. 8000fb8: 4e10 ldr r6, [pc, #64] ; (8000ffc <FLASH_WaitForLastOperation+0x4c>)
  2165. uint32_t tickstart = HAL_GetTick();
  2166. 8000fba: 4604 mov r4, r0
  2167. while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
  2168. 8000fbc: e004 b.n 8000fc8 <FLASH_WaitForLastOperation+0x18>
  2169. if ((HAL_GetTick() - tickstart) > Timeout)
  2170. 8000fbe: f7ff fe8b bl 8000cd8 <HAL_GetTick>
  2171. 8000fc2: 1b03 subs r3, r0, r4
  2172. 8000fc4: 42ab cmp r3, r5
  2173. 8000fc6: d80f bhi.n 8000fe8 <FLASH_WaitForLastOperation+0x38>
  2174. while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
  2175. 8000fc8: 6933 ldr r3, [r6, #16]
  2176. 8000fca: 03db lsls r3, r3, #15
  2177. 8000fcc: d4f7 bmi.n 8000fbe <FLASH_WaitForLastOperation+0xe>
  2178. error = (FLASH->SR & FLASH_FLAG_SR_ERRORS);
  2179. 8000fce: 6933 ldr r3, [r6, #16]
  2180. 8000fd0: f24c 32fa movw r2, #50170 ; 0xc3fa
  2181. if (error != 0u)
  2182. 8000fd4: 4013 ands r3, r2
  2183. 8000fd6: d109 bne.n 8000fec <FLASH_WaitForLastOperation+0x3c>
  2184. if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
  2185. 8000fd8: 6930 ldr r0, [r6, #16]
  2186. 8000fda: f010 0001 ands.w r0, r0, #1
  2187. 8000fde: d002 beq.n 8000fe6 <FLASH_WaitForLastOperation+0x36>
  2188. __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
  2189. 8000fe0: 2201 movs r2, #1
  2190. 8000fe2: 6132 str r2, [r6, #16]
  2191. 8000fe4: 4618 mov r0, r3
  2192. }
  2193. 8000fe6: bd70 pop {r4, r5, r6, pc}
  2194. return HAL_TIMEOUT;
  2195. 8000fe8: 2003 movs r0, #3
  2196. }
  2197. 8000fea: bd70 pop {r4, r5, r6, pc}
  2198. pFlash.ErrorCode |= error;
  2199. 8000fec: 4904 ldr r1, [pc, #16] ; (8001000 <FLASH_WaitForLastOperation+0x50>)
  2200. 8000fee: 684a ldr r2, [r1, #4]
  2201. 8000ff0: 431a orrs r2, r3
  2202. 8000ff2: 604a str r2, [r1, #4]
  2203. return HAL_ERROR;
  2204. 8000ff4: 2001 movs r0, #1
  2205. __HAL_FLASH_CLEAR_FLAG(error);
  2206. 8000ff6: 6133 str r3, [r6, #16]
  2207. }
  2208. 8000ff8: bd70 pop {r4, r5, r6, pc}
  2209. 8000ffa: bf00 nop
  2210. 8000ffc: 40022000 .word 0x40022000
  2211. 8001000: 2000000c .word 0x2000000c
  2212. 08001004 <HAL_FLASHEx_Erase>:
  2213. * information on faulty page in case of error (0xFFFFFFFF means that all
  2214. * the pages have been correctly erased).
  2215. * @retval HAL_Status
  2216. */
  2217. HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError)
  2218. {
  2219. 8001004: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
  2220. /* Check the parameters */
  2221. assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase));
  2222. /* Process Locked */
  2223. __HAL_LOCK(&pFlash);
  2224. 8001008: 4f53 ldr r7, [pc, #332] ; (8001158 <HAL_FLASHEx_Erase+0x154>)
  2225. 800100a: 783b ldrb r3, [r7, #0]
  2226. 800100c: 2b01 cmp r3, #1
  2227. 800100e: d07a beq.n 8001106 <HAL_FLASHEx_Erase+0x102>
  2228. 8001010: 4681 mov r9, r0
  2229. 8001012: 2401 movs r4, #1
  2230. /* Wait for last operation to be completed */
  2231. status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
  2232. 8001014: f44f 707a mov.w r0, #1000 ; 0x3e8
  2233. 8001018: 4688 mov r8, r1
  2234. __HAL_LOCK(&pFlash);
  2235. 800101a: 703c strb r4, [r7, #0]
  2236. status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
  2237. 800101c: f7ff ffc8 bl 8000fb0 <FLASH_WaitForLastOperation>
  2238. if (status == HAL_OK)
  2239. 8001020: 4606 mov r6, r0
  2240. 8001022: b120 cbz r0, 800102e <HAL_FLASHEx_Erase+0x2a>
  2241. /* Flush the caches to be sure of the data consistency */
  2242. FLASH_FlushCaches();
  2243. }
  2244. /* Process Unlocked */
  2245. __HAL_UNLOCK(&pFlash);
  2246. 8001024: 2300 movs r3, #0
  2247. 8001026: 703b strb r3, [r7, #0]
  2248. return status;
  2249. }
  2250. 8001028: 4630 mov r0, r6
  2251. 800102a: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
  2252. if (READ_BIT(FLASH->ACR, FLASH_ACR_ICEN) != 0U)
  2253. 800102e: 4b4b ldr r3, [pc, #300] ; (800115c <HAL_FLASHEx_Erase+0x158>)
  2254. pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
  2255. 8001030: 6078 str r0, [r7, #4]
  2256. if (READ_BIT(FLASH->ACR, FLASH_ACR_ICEN) != 0U)
  2257. 8001032: 681a ldr r2, [r3, #0]
  2258. 8001034: f412 7f00 tst.w r2, #512 ; 0x200
  2259. if (READ_BIT(FLASH->ACR, FLASH_ACR_DCEN) != 0U)
  2260. 8001038: 681a ldr r2, [r3, #0]
  2261. if (READ_BIT(FLASH->ACR, FLASH_ACR_ICEN) != 0U)
  2262. 800103a: d168 bne.n 800110e <HAL_FLASHEx_Erase+0x10a>
  2263. else if (READ_BIT(FLASH->ACR, FLASH_ACR_DCEN) != 0U)
  2264. 800103c: 0552 lsls r2, r2, #21
  2265. 800103e: f140 8089 bpl.w 8001154 <HAL_FLASHEx_Erase+0x150>
  2266. __HAL_FLASH_DATA_CACHE_DISABLE();
  2267. 8001042: 681a ldr r2, [r3, #0]
  2268. 8001044: f422 6280 bic.w r2, r2, #1024 ; 0x400
  2269. 8001048: 601a str r2, [r3, #0]
  2270. pFlash.CacheToReactivate = FLASH_CACHE_DCACHE_ENABLED;
  2271. 800104a: 2302 movs r3, #2
  2272. 800104c: 773b strb r3, [r7, #28]
  2273. if (pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE)
  2274. 800104e: f8d9 3000 ldr.w r3, [r9]
  2275. 8001052: 2b01 cmp r3, #1
  2276. 8001054: d064 beq.n 8001120 <HAL_FLASHEx_Erase+0x11c>
  2277. *PageError = 0xFFFFFFFFU;
  2278. 8001056: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff
  2279. 800105a: f8c8 3000 str.w r3, [r8]
  2280. for (page_index = pEraseInit->Page; page_index < (pEraseInit->Page + pEraseInit->NbPages); page_index++)
  2281. 800105e: e9d9 5302 ldrd r5, r3, [r9, #8]
  2282. 8001062: 442b add r3, r5
  2283. 8001064: 429d cmp r5, r3
  2284. 8001066: d224 bcs.n 80010b2 <HAL_FLASHEx_Erase+0xae>
  2285. /* Prevent unused argument(s) compilation warning */
  2286. UNUSED(Banks);
  2287. #endif /* FLASH_OPTR_DBANK */
  2288. /* Proceed to erase the page */
  2289. MODIFY_REG(FLASH->CR, FLASH_CR_PNB, ((Page & 0xFFU) << FLASH_CR_PNB_Pos));
  2290. 8001068: 4c3c ldr r4, [pc, #240] ; (800115c <HAL_FLASHEx_Erase+0x158>)
  2291. 800106a: e005 b.n 8001078 <HAL_FLASHEx_Erase+0x74>
  2292. for (page_index = pEraseInit->Page; page_index < (pEraseInit->Page + pEraseInit->NbPages); page_index++)
  2293. 800106c: e9d9 3202 ldrd r3, r2, [r9, #8]
  2294. 8001070: 3501 adds r5, #1
  2295. 8001072: 4413 add r3, r2
  2296. 8001074: 42ab cmp r3, r5
  2297. 8001076: d91c bls.n 80010b2 <HAL_FLASHEx_Erase+0xae>
  2298. MODIFY_REG(FLASH->CR, FLASH_CR_PNB, ((Page & 0xFFU) << FLASH_CR_PNB_Pos));
  2299. 8001078: 6962 ldr r2, [r4, #20]
  2300. 800107a: 00eb lsls r3, r5, #3
  2301. 800107c: f422 72fc bic.w r2, r2, #504 ; 0x1f8
  2302. 8001080: f403 63ff and.w r3, r3, #2040 ; 0x7f8
  2303. 8001084: 4313 orrs r3, r2
  2304. 8001086: 6163 str r3, [r4, #20]
  2305. SET_BIT(FLASH->CR, FLASH_CR_PER);
  2306. 8001088: 6963 ldr r3, [r4, #20]
  2307. 800108a: f043 0302 orr.w r3, r3, #2
  2308. 800108e: 6163 str r3, [r4, #20]
  2309. SET_BIT(FLASH->CR, FLASH_CR_STRT);
  2310. 8001090: 6963 ldr r3, [r4, #20]
  2311. 8001092: f443 3380 orr.w r3, r3, #65536 ; 0x10000
  2312. 8001096: 6163 str r3, [r4, #20]
  2313. status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
  2314. 8001098: f44f 707a mov.w r0, #1000 ; 0x3e8
  2315. 800109c: f7ff ff88 bl 8000fb0 <FLASH_WaitForLastOperation>
  2316. CLEAR_BIT(FLASH->CR, (FLASH_CR_PER | FLASH_CR_PNB));
  2317. 80010a0: 6963 ldr r3, [r4, #20]
  2318. 80010a2: f423 73fd bic.w r3, r3, #506 ; 0x1fa
  2319. 80010a6: 6163 str r3, [r4, #20]
  2320. if (status != HAL_OK)
  2321. 80010a8: 2800 cmp r0, #0
  2322. 80010aa: d0df beq.n 800106c <HAL_FLASHEx_Erase+0x68>
  2323. *PageError = page_index;
  2324. 80010ac: f8c8 5000 str.w r5, [r8]
  2325. status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
  2326. 80010b0: 4606 mov r6, r0
  2327. * @brief Flush the instruction and data caches.
  2328. * @retval None
  2329. */
  2330. void FLASH_FlushCaches(void)
  2331. {
  2332. FLASH_CacheTypeDef cache = pFlash.CacheToReactivate;
  2333. 80010b2: 7f3b ldrb r3, [r7, #28]
  2334. /* Flush instruction cache */
  2335. if ((cache == FLASH_CACHE_ICACHE_ENABLED) ||
  2336. 80010b4: f003 02fd and.w r2, r3, #253 ; 0xfd
  2337. 80010b8: 2a01 cmp r2, #1
  2338. FLASH_CacheTypeDef cache = pFlash.CacheToReactivate;
  2339. 80010ba: b2db uxtb r3, r3
  2340. if ((cache == FLASH_CACHE_ICACHE_ENABLED) ||
  2341. 80010bc: d110 bne.n 80010e0 <HAL_FLASHEx_Erase+0xdc>
  2342. (cache == FLASH_CACHE_ICACHE_DCACHE_ENABLED))
  2343. {
  2344. /* Disable instruction cache */
  2345. __HAL_FLASH_INSTRUCTION_CACHE_DISABLE();
  2346. 80010be: 4a27 ldr r2, [pc, #156] ; (800115c <HAL_FLASHEx_Erase+0x158>)
  2347. 80010c0: 6811 ldr r1, [r2, #0]
  2348. 80010c2: f421 7100 bic.w r1, r1, #512 ; 0x200
  2349. 80010c6: 6011 str r1, [r2, #0]
  2350. /* Reset instruction cache */
  2351. __HAL_FLASH_INSTRUCTION_CACHE_RESET();
  2352. 80010c8: 6811 ldr r1, [r2, #0]
  2353. 80010ca: f441 6100 orr.w r1, r1, #2048 ; 0x800
  2354. 80010ce: 6011 str r1, [r2, #0]
  2355. 80010d0: 6811 ldr r1, [r2, #0]
  2356. 80010d2: f421 6100 bic.w r1, r1, #2048 ; 0x800
  2357. 80010d6: 6011 str r1, [r2, #0]
  2358. /* Enable instruction cache */
  2359. __HAL_FLASH_INSTRUCTION_CACHE_ENABLE();
  2360. 80010d8: 6811 ldr r1, [r2, #0]
  2361. 80010da: f441 7100 orr.w r1, r1, #512 ; 0x200
  2362. 80010de: 6011 str r1, [r2, #0]
  2363. }
  2364. /* Flush data cache */
  2365. if ((cache == FLASH_CACHE_DCACHE_ENABLED) ||
  2366. 80010e0: 3b02 subs r3, #2
  2367. 80010e2: 2b01 cmp r3, #1
  2368. 80010e4: d80c bhi.n 8001100 <HAL_FLASHEx_Erase+0xfc>
  2369. (cache == FLASH_CACHE_ICACHE_DCACHE_ENABLED))
  2370. {
  2371. /* Reset data cache */
  2372. __HAL_FLASH_DATA_CACHE_RESET();
  2373. 80010e6: 4b1d ldr r3, [pc, #116] ; (800115c <HAL_FLASHEx_Erase+0x158>)
  2374. 80010e8: 681a ldr r2, [r3, #0]
  2375. 80010ea: f442 5280 orr.w r2, r2, #4096 ; 0x1000
  2376. 80010ee: 601a str r2, [r3, #0]
  2377. 80010f0: 681a ldr r2, [r3, #0]
  2378. 80010f2: f422 5280 bic.w r2, r2, #4096 ; 0x1000
  2379. 80010f6: 601a str r2, [r3, #0]
  2380. /* Enable data cache */
  2381. __HAL_FLASH_DATA_CACHE_ENABLE();
  2382. 80010f8: 681a ldr r2, [r3, #0]
  2383. 80010fa: f442 6280 orr.w r2, r2, #1024 ; 0x400
  2384. 80010fe: 601a str r2, [r3, #0]
  2385. }
  2386. /* Reset internal variable */
  2387. pFlash.CacheToReactivate = FLASH_CACHE_DISABLED;
  2388. 8001100: 2300 movs r3, #0
  2389. 8001102: 773b strb r3, [r7, #28]
  2390. }
  2391. 8001104: e78e b.n 8001024 <HAL_FLASHEx_Erase+0x20>
  2392. __HAL_LOCK(&pFlash);
  2393. 8001106: 2602 movs r6, #2
  2394. }
  2395. 8001108: 4630 mov r0, r6
  2396. 800110a: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
  2397. if (READ_BIT(FLASH->ACR, FLASH_ACR_DCEN) != 0U)
  2398. 800110e: 0551 lsls r1, r2, #21
  2399. 8001110: d51e bpl.n 8001150 <HAL_FLASHEx_Erase+0x14c>
  2400. __HAL_FLASH_DATA_CACHE_DISABLE();
  2401. 8001112: 681a ldr r2, [r3, #0]
  2402. 8001114: f422 6280 bic.w r2, r2, #1024 ; 0x400
  2403. 8001118: 601a str r2, [r3, #0]
  2404. pFlash.CacheToReactivate = FLASH_CACHE_ICACHE_DCACHE_ENABLED;
  2405. 800111a: 2303 movs r3, #3
  2406. 800111c: 773b strb r3, [r7, #28]
  2407. 800111e: e796 b.n 800104e <HAL_FLASHEx_Erase+0x4a>
  2408. if ((Banks & FLASH_BANK_1) != 0U)
  2409. 8001120: f8d9 3004 ldr.w r3, [r9, #4]
  2410. 8001124: 07db lsls r3, r3, #31
  2411. 8001126: d504 bpl.n 8001132 <HAL_FLASHEx_Erase+0x12e>
  2412. SET_BIT(FLASH->CR, FLASH_CR_MER1);
  2413. 8001128: 4a0c ldr r2, [pc, #48] ; (800115c <HAL_FLASHEx_Erase+0x158>)
  2414. 800112a: 6953 ldr r3, [r2, #20]
  2415. 800112c: f043 0304 orr.w r3, r3, #4
  2416. 8001130: 6153 str r3, [r2, #20]
  2417. SET_BIT(FLASH->CR, FLASH_CR_STRT);
  2418. 8001132: 4c0a ldr r4, [pc, #40] ; (800115c <HAL_FLASHEx_Erase+0x158>)
  2419. 8001134: 6963 ldr r3, [r4, #20]
  2420. 8001136: f443 3380 orr.w r3, r3, #65536 ; 0x10000
  2421. 800113a: 6163 str r3, [r4, #20]
  2422. status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
  2423. 800113c: f44f 707a mov.w r0, #1000 ; 0x3e8
  2424. 8001140: f7ff ff36 bl 8000fb0 <FLASH_WaitForLastOperation>
  2425. CLEAR_BIT(FLASH->CR, (FLASH_CR_MER1));
  2426. 8001144: 6963 ldr r3, [r4, #20]
  2427. 8001146: f023 0304 bic.w r3, r3, #4
  2428. status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
  2429. 800114a: 4606 mov r6, r0
  2430. CLEAR_BIT(FLASH->CR, (FLASH_CR_MER1));
  2431. 800114c: 6163 str r3, [r4, #20]
  2432. 800114e: e7b0 b.n 80010b2 <HAL_FLASHEx_Erase+0xae>
  2433. pFlash.CacheToReactivate = FLASH_CACHE_ICACHE_ENABLED;
  2434. 8001150: 773c strb r4, [r7, #28]
  2435. 8001152: e77c b.n 800104e <HAL_FLASHEx_Erase+0x4a>
  2436. pFlash.CacheToReactivate = FLASH_CACHE_DISABLED;
  2437. 8001154: 7738 strb r0, [r7, #28]
  2438. 8001156: e77a b.n 800104e <HAL_FLASHEx_Erase+0x4a>
  2439. 8001158: 2000000c .word 0x2000000c
  2440. 800115c: 40022000 .word 0x40022000
  2441. 08001160 <FLASH_FlushCaches>:
  2442. FLASH_CacheTypeDef cache = pFlash.CacheToReactivate;
  2443. 8001160: 4915 ldr r1, [pc, #84] ; (80011b8 <FLASH_FlushCaches+0x58>)
  2444. 8001162: 7f0b ldrb r3, [r1, #28]
  2445. if ((cache == FLASH_CACHE_ICACHE_ENABLED) ||
  2446. 8001164: f003 02fd and.w r2, r3, #253 ; 0xfd
  2447. 8001168: 2a01 cmp r2, #1
  2448. FLASH_CacheTypeDef cache = pFlash.CacheToReactivate;
  2449. 800116a: b2db uxtb r3, r3
  2450. if ((cache == FLASH_CACHE_ICACHE_ENABLED) ||
  2451. 800116c: d110 bne.n 8001190 <FLASH_FlushCaches+0x30>
  2452. __HAL_FLASH_INSTRUCTION_CACHE_DISABLE();
  2453. 800116e: 4a13 ldr r2, [pc, #76] ; (80011bc <FLASH_FlushCaches+0x5c>)
  2454. 8001170: 6810 ldr r0, [r2, #0]
  2455. 8001172: f420 7000 bic.w r0, r0, #512 ; 0x200
  2456. 8001176: 6010 str r0, [r2, #0]
  2457. __HAL_FLASH_INSTRUCTION_CACHE_RESET();
  2458. 8001178: 6810 ldr r0, [r2, #0]
  2459. 800117a: f440 6000 orr.w r0, r0, #2048 ; 0x800
  2460. 800117e: 6010 str r0, [r2, #0]
  2461. 8001180: 6810 ldr r0, [r2, #0]
  2462. 8001182: f420 6000 bic.w r0, r0, #2048 ; 0x800
  2463. 8001186: 6010 str r0, [r2, #0]
  2464. __HAL_FLASH_INSTRUCTION_CACHE_ENABLE();
  2465. 8001188: 6810 ldr r0, [r2, #0]
  2466. 800118a: f440 7000 orr.w r0, r0, #512 ; 0x200
  2467. 800118e: 6010 str r0, [r2, #0]
  2468. if ((cache == FLASH_CACHE_DCACHE_ENABLED) ||
  2469. 8001190: 3b02 subs r3, #2
  2470. 8001192: 2b01 cmp r3, #1
  2471. 8001194: d80c bhi.n 80011b0 <FLASH_FlushCaches+0x50>
  2472. __HAL_FLASH_DATA_CACHE_RESET();
  2473. 8001196: 4b09 ldr r3, [pc, #36] ; (80011bc <FLASH_FlushCaches+0x5c>)
  2474. 8001198: 681a ldr r2, [r3, #0]
  2475. 800119a: f442 5280 orr.w r2, r2, #4096 ; 0x1000
  2476. 800119e: 601a str r2, [r3, #0]
  2477. 80011a0: 681a ldr r2, [r3, #0]
  2478. 80011a2: f422 5280 bic.w r2, r2, #4096 ; 0x1000
  2479. 80011a6: 601a str r2, [r3, #0]
  2480. __HAL_FLASH_DATA_CACHE_ENABLE();
  2481. 80011a8: 681a ldr r2, [r3, #0]
  2482. 80011aa: f442 6280 orr.w r2, r2, #1024 ; 0x400
  2483. 80011ae: 601a str r2, [r3, #0]
  2484. pFlash.CacheToReactivate = FLASH_CACHE_DISABLED;
  2485. 80011b0: 2300 movs r3, #0
  2486. 80011b2: 770b strb r3, [r1, #28]
  2487. }
  2488. 80011b4: 4770 bx lr
  2489. 80011b6: bf00 nop
  2490. 80011b8: 2000000c .word 0x2000000c
  2491. 80011bc: 40022000 .word 0x40022000
  2492. 080011c0 <HAL_GPIO_Init>:
  2493. * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains
  2494. * the configuration information for the specified GPIO peripheral.
  2495. * @retval None
  2496. */
  2497. void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef const *GPIO_Init)
  2498. {
  2499. 80011c0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
  2500. assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
  2501. assert_param(IS_GPIO_PIN(GPIO_Init->Pin));
  2502. assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
  2503. /* Configure the port pins */
  2504. while (((GPIO_Init->Pin) >> position) != 0U)
  2505. 80011c4: 680c ldr r4, [r1, #0]
  2506. {
  2507. 80011c6: b085 sub sp, #20
  2508. while (((GPIO_Init->Pin) >> position) != 0U)
  2509. 80011c8: 2c00 cmp r4, #0
  2510. 80011ca: f000 8097 beq.w 80012fc <HAL_GPIO_Init+0x13c>
  2511. 80011ce: 2200 movs r2, #0
  2512. /*--------------------- EXTI Mode Configuration ------------------------*/
  2513. /* Configure the External Interrupt or event for the current IO */
  2514. if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u)
  2515. {
  2516. /* Enable SYSCFG Clock */
  2517. __HAL_RCC_SYSCFG_CLK_ENABLE();
  2518. 80011d0: f8df a20c ldr.w sl, [pc, #524] ; 80013e0 <HAL_GPIO_Init+0x220>
  2519. uint32_t position = 0x00U;
  2520. 80011d4: 4613 mov r3, r2
  2521. iocurrent = (GPIO_Init->Pin) & (1UL << position);
  2522. 80011d6: f04f 0b01 mov.w fp, #1
  2523. temp = SYSCFG->EXTICR[position >> 2U];
  2524. temp &= ~(0x0FUL << (4U * (position & 0x03U)));
  2525. 80011da: 46a1 mov r9, r4
  2526. iocurrent = (GPIO_Init->Pin) & (1UL << position);
  2527. 80011dc: fa0b fc03 lsl.w ip, fp, r3
  2528. if (iocurrent != 0x00u)
  2529. 80011e0: ea1c 0809 ands.w r8, ip, r9
  2530. 80011e4: f000 8083 beq.w 80012ee <HAL_GPIO_Init+0x12e>
  2531. if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) ||
  2532. 80011e8: 684f ldr r7, [r1, #4]
  2533. 80011ea: f007 0403 and.w r4, r7, #3
  2534. 80011ee: 1e65 subs r5, r4, #1
  2535. 80011f0: 2d01 cmp r5, #1
  2536. 80011f2: f240 8086 bls.w 8001302 <HAL_GPIO_Init+0x142>
  2537. if (((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) ||
  2538. 80011f6: 2c03 cmp r4, #3
  2539. 80011f8: f040 80c7 bne.w 800138a <HAL_GPIO_Init+0x1ca>
  2540. (((GPIO_Init->Mode & GPIO_MODE) == MODE_ANALOG) && (GPIO_Init->Pull != GPIO_PULLUP)))
  2541. 80011fc: 688d ldr r5, [r1, #8]
  2542. if (((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) ||
  2543. 80011fe: 2d01 cmp r5, #1
  2544. temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U));
  2545. 8001200: fa04 f402 lsl.w r4, r4, r2
  2546. if (((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) ||
  2547. 8001204: d007 beq.n 8001216 <HAL_GPIO_Init+0x56>
  2548. temp = GPIOx->PUPDR;
  2549. 8001206: f8d0 c00c ldr.w ip, [r0, #12]
  2550. temp |= ((GPIO_Init->Pull) << (position * 2U));
  2551. 800120a: 4095 lsls r5, r2
  2552. temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U));
  2553. 800120c: ea2c 0c04 bic.w ip, ip, r4
  2554. temp |= ((GPIO_Init->Pull) << (position * 2U));
  2555. 8001210: ea45 050c orr.w r5, r5, ip
  2556. GPIOx->PUPDR = temp;
  2557. 8001214: 60c5 str r5, [r0, #12]
  2558. temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U));
  2559. 8001216: 43e5 mvns r5, r4
  2560. temp = GPIOx->MODER;
  2561. 8001218: f8d0 c000 ldr.w ip, [r0]
  2562. temp &= ~(GPIO_MODER_MODE0 << (position * 2U));
  2563. 800121c: ea0c 0505 and.w r5, ip, r5
  2564. temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U));
  2565. 8001220: 432c orrs r4, r5
  2566. if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u)
  2567. 8001222: f417 3f40 tst.w r7, #196608 ; 0x30000
  2568. GPIOx->MODER = temp;
  2569. 8001226: 6004 str r4, [r0, #0]
  2570. if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u)
  2571. 8001228: d061 beq.n 80012ee <HAL_GPIO_Init+0x12e>
  2572. __HAL_RCC_SYSCFG_CLK_ENABLE();
  2573. 800122a: f8da 4060 ldr.w r4, [sl, #96] ; 0x60
  2574. 800122e: f044 0401 orr.w r4, r4, #1
  2575. 8001232: f8ca 4060 str.w r4, [sl, #96] ; 0x60
  2576. 8001236: f8da 4060 ldr.w r4, [sl, #96] ; 0x60
  2577. 800123a: f004 0401 and.w r4, r4, #1
  2578. 800123e: 9403 str r4, [sp, #12]
  2579. 8001240: 9c03 ldr r4, [sp, #12]
  2580. temp = SYSCFG->EXTICR[position >> 2U];
  2581. 8001242: f023 0403 bic.w r4, r3, #3
  2582. 8001246: f104 4480 add.w r4, r4, #1073741824 ; 0x40000000
  2583. 800124a: f504 3480 add.w r4, r4, #65536 ; 0x10000
  2584. temp &= ~(0x0FUL << (4U * (position & 0x03U)));
  2585. 800124e: f003 0c03 and.w ip, r3, #3
  2586. temp = SYSCFG->EXTICR[position >> 2U];
  2587. 8001252: 68a5 ldr r5, [r4, #8]
  2588. temp &= ~(0x0FUL << (4U * (position & 0x03U)));
  2589. 8001254: ea4f 0c8c mov.w ip, ip, lsl #2
  2590. 8001258: 260f movs r6, #15
  2591. 800125a: fa06 fe0c lsl.w lr, r6, ip
  2592. temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)));
  2593. 800125e: f1b0 4f90 cmp.w r0, #1207959552 ; 0x48000000
  2594. temp &= ~(0x0FUL << (4U * (position & 0x03U)));
  2595. 8001262: ea25 050e bic.w r5, r5, lr
  2596. temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)));
  2597. 8001266: d01a beq.n 800129e <HAL_GPIO_Init+0xde>
  2598. 8001268: 4e57 ldr r6, [pc, #348] ; (80013c8 <HAL_GPIO_Init+0x208>)
  2599. 800126a: 42b0 cmp r0, r6
  2600. 800126c: f000 8098 beq.w 80013a0 <HAL_GPIO_Init+0x1e0>
  2601. 8001270: 4e56 ldr r6, [pc, #344] ; (80013cc <HAL_GPIO_Init+0x20c>)
  2602. 8001272: 42b0 cmp r0, r6
  2603. 8001274: f000 8099 beq.w 80013aa <HAL_GPIO_Init+0x1ea>
  2604. 8001278: 4e55 ldr r6, [pc, #340] ; (80013d0 <HAL_GPIO_Init+0x210>)
  2605. 800127a: 42b0 cmp r0, r6
  2606. 800127c: f000 8089 beq.w 8001392 <HAL_GPIO_Init+0x1d2>
  2607. 8001280: 4e54 ldr r6, [pc, #336] ; (80013d4 <HAL_GPIO_Init+0x214>)
  2608. 8001282: 42b0 cmp r0, r6
  2609. 8001284: f000 8098 beq.w 80013b8 <HAL_GPIO_Init+0x1f8>
  2610. 8001288: 4e53 ldr r6, [pc, #332] ; (80013d8 <HAL_GPIO_Init+0x218>)
  2611. 800128a: 42b0 cmp r0, r6
  2612. 800128c: bf0c ite eq
  2613. 800128e: f04f 0e05 moveq.w lr, #5
  2614. 8001292: f04f 0e06 movne.w lr, #6
  2615. 8001296: fa0e fc0c lsl.w ip, lr, ip
  2616. 800129a: ea45 050c orr.w r5, r5, ip
  2617. SYSCFG->EXTICR[position >> 2U] = temp;
  2618. 800129e: 60a5 str r5, [r4, #8]
  2619. /* Clear Rising Falling edge configuration */
  2620. temp = EXTI->RTSR1;
  2621. 80012a0: 4c4e ldr r4, [pc, #312] ; (80013dc <HAL_GPIO_Init+0x21c>)
  2622. temp &= ~(iocurrent);
  2623. if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U)
  2624. {
  2625. temp |= iocurrent;
  2626. }
  2627. EXTI->RTSR1 = temp;
  2628. 80012a2: 4d4e ldr r5, [pc, #312] ; (80013dc <HAL_GPIO_Init+0x21c>)
  2629. temp = EXTI->RTSR1;
  2630. 80012a4: 68a4 ldr r4, [r4, #8]
  2631. temp &= ~(iocurrent);
  2632. 80012a6: ea6f 0c08 mvn.w ip, r8
  2633. if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U)
  2634. 80012aa: 02fe lsls r6, r7, #11
  2635. temp &= ~(iocurrent);
  2636. 80012ac: bf54 ite pl
  2637. 80012ae: ea0c 0404 andpl.w r4, ip, r4
  2638. temp |= iocurrent;
  2639. 80012b2: ea48 0404 orrmi.w r4, r8, r4
  2640. EXTI->RTSR1 = temp;
  2641. 80012b6: 60ac str r4, [r5, #8]
  2642. temp = EXTI->FTSR1;
  2643. 80012b8: 68ec ldr r4, [r5, #12]
  2644. temp &= ~(iocurrent);
  2645. if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U)
  2646. 80012ba: 02bd lsls r5, r7, #10
  2647. {
  2648. temp |= iocurrent;
  2649. }
  2650. EXTI->FTSR1 = temp;
  2651. 80012bc: 4d47 ldr r5, [pc, #284] ; (80013dc <HAL_GPIO_Init+0x21c>)
  2652. temp &= ~(iocurrent);
  2653. 80012be: bf54 ite pl
  2654. 80012c0: ea0c 0404 andpl.w r4, ip, r4
  2655. temp |= iocurrent;
  2656. 80012c4: ea48 0404 orrmi.w r4, r8, r4
  2657. EXTI->FTSR1 = temp;
  2658. 80012c8: 60ec str r4, [r5, #12]
  2659. temp = EXTI->EMR1;
  2660. 80012ca: 686d ldr r5, [r5, #4]
  2661. temp &= ~(iocurrent);
  2662. if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U)
  2663. {
  2664. temp |= iocurrent;
  2665. }
  2666. EXTI->EMR1 = temp;
  2667. 80012cc: 4c43 ldr r4, [pc, #268] ; (80013dc <HAL_GPIO_Init+0x21c>)
  2668. if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U)
  2669. 80012ce: 03be lsls r6, r7, #14
  2670. temp &= ~(iocurrent);
  2671. 80012d0: bf54 ite pl
  2672. 80012d2: ea0c 0505 andpl.w r5, ip, r5
  2673. temp |= iocurrent;
  2674. 80012d6: ea48 0505 orrmi.w r5, r8, r5
  2675. EXTI->EMR1 = temp;
  2676. 80012da: 6065 str r5, [r4, #4]
  2677. /* Clear EXTI line configuration */
  2678. temp = EXTI->IMR1;
  2679. 80012dc: 6824 ldr r4, [r4, #0]
  2680. temp &= ~(iocurrent);
  2681. if ((GPIO_Init->Mode & EXTI_IT) != 0x00U)
  2682. 80012de: 03fd lsls r5, r7, #15
  2683. {
  2684. temp |= iocurrent;
  2685. }
  2686. EXTI->IMR1 = temp;
  2687. 80012e0: 4d3e ldr r5, [pc, #248] ; (80013dc <HAL_GPIO_Init+0x21c>)
  2688. temp &= ~(iocurrent);
  2689. 80012e2: bf54 ite pl
  2690. 80012e4: ea0c 0404 andpl.w r4, ip, r4
  2691. temp |= iocurrent;
  2692. 80012e8: ea48 0404 orrmi.w r4, r8, r4
  2693. EXTI->IMR1 = temp;
  2694. 80012ec: 602c str r4, [r5, #0]
  2695. }
  2696. }
  2697. position++;
  2698. 80012ee: 3301 adds r3, #1
  2699. while (((GPIO_Init->Pin) >> position) != 0U)
  2700. 80012f0: fa39 f403 lsrs.w r4, r9, r3
  2701. 80012f4: f102 0202 add.w r2, r2, #2
  2702. 80012f8: f47f af70 bne.w 80011dc <HAL_GPIO_Init+0x1c>
  2703. }
  2704. }
  2705. 80012fc: b005 add sp, #20
  2706. 80012fe: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  2707. temp = GPIOx->OSPEEDR;
  2708. 8001302: 6885 ldr r5, [r0, #8]
  2709. temp |= (GPIO_Init->Speed << (position * 2U));
  2710. 8001304: 68ce ldr r6, [r1, #12]
  2711. temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2U));
  2712. 8001306: f04f 0e03 mov.w lr, #3
  2713. 800130a: fa0e fe02 lsl.w lr, lr, r2
  2714. 800130e: ea25 050e bic.w r5, r5, lr
  2715. temp |= (GPIO_Init->Speed << (position * 2U));
  2716. 8001312: 4096 lsls r6, r2
  2717. 8001314: 4335 orrs r5, r6
  2718. GPIOx->OSPEEDR = temp;
  2719. 8001316: 6085 str r5, [r0, #8]
  2720. temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2U));
  2721. 8001318: ea6f 050e mvn.w r5, lr
  2722. temp = GPIOx->OTYPER;
  2723. 800131c: f8d0 e004 ldr.w lr, [r0, #4]
  2724. temp &= ~(GPIO_OTYPER_OT0 << position) ;
  2725. 8001320: ea2e 0e0c bic.w lr, lr, ip
  2726. temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position);
  2727. 8001324: f3c7 1c00 ubfx ip, r7, #4, #1
  2728. 8001328: fa0c fc03 lsl.w ip, ip, r3
  2729. 800132c: ea4c 0c0e orr.w ip, ip, lr
  2730. GPIOx->OTYPER = temp;
  2731. 8001330: f8c0 c004 str.w ip, [r0, #4]
  2732. temp = GPIOx->PUPDR;
  2733. 8001334: f8d0 c00c ldr.w ip, [r0, #12]
  2734. temp |= ((GPIO_Init->Pull) << (position * 2U));
  2735. 8001338: 688e ldr r6, [r1, #8]
  2736. temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U));
  2737. 800133a: ea0c 0c05 and.w ip, ip, r5
  2738. temp |= ((GPIO_Init->Pull) << (position * 2U));
  2739. 800133e: fa06 fe02 lsl.w lr, r6, r2
  2740. 8001342: ea4e 0c0c orr.w ip, lr, ip
  2741. if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)
  2742. 8001346: 2c02 cmp r4, #2
  2743. GPIOx->PUPDR = temp;
  2744. 8001348: f8c0 c00c str.w ip, [r0, #12]
  2745. if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)
  2746. 800134c: fa04 f402 lsl.w r4, r4, r2
  2747. 8001350: f47f af62 bne.w 8001218 <HAL_GPIO_Init+0x58>
  2748. temp = GPIOx->AFR[position >> 3U];
  2749. 8001354: ea4f 0ed3 mov.w lr, r3, lsr #3
  2750. 8001358: eb00 0e8e add.w lr, r0, lr, lsl #2
  2751. temp &= ~(0xFU << ((position & 0x07U) * 4U));
  2752. 800135c: f003 0c07 and.w ip, r3, #7
  2753. temp = GPIOx->AFR[position >> 3U];
  2754. 8001360: f8de 6020 ldr.w r6, [lr, #32]
  2755. 8001364: 9600 str r6, [sp, #0]
  2756. temp |= ((GPIO_Init->Alternate) << ((position & 0x07U) * 4U));
  2757. 8001366: 690e ldr r6, [r1, #16]
  2758. temp &= ~(0xFU << ((position & 0x07U) * 4U));
  2759. 8001368: ea4f 0c8c mov.w ip, ip, lsl #2
  2760. temp |= ((GPIO_Init->Alternate) << ((position & 0x07U) * 4U));
  2761. 800136c: fa06 f60c lsl.w r6, r6, ip
  2762. 8001370: 9601 str r6, [sp, #4]
  2763. temp &= ~(0xFU << ((position & 0x07U) * 4U));
  2764. 8001372: 260f movs r6, #15
  2765. 8001374: fa06 fc0c lsl.w ip, r6, ip
  2766. 8001378: 9e00 ldr r6, [sp, #0]
  2767. 800137a: ea26 0c0c bic.w ip, r6, ip
  2768. temp |= ((GPIO_Init->Alternate) << ((position & 0x07U) * 4U));
  2769. 800137e: 9e01 ldr r6, [sp, #4]
  2770. 8001380: ea46 0c0c orr.w ip, r6, ip
  2771. GPIOx->AFR[position >> 3U] = temp;
  2772. 8001384: f8ce c020 str.w ip, [lr, #32]
  2773. 8001388: e746 b.n 8001218 <HAL_GPIO_Init+0x58>
  2774. temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2U));
  2775. 800138a: 2503 movs r5, #3
  2776. 800138c: 4095 lsls r5, r2
  2777. 800138e: 43ed mvns r5, r5
  2778. 8001390: e7d0 b.n 8001334 <HAL_GPIO_Init+0x174>
  2779. temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)));
  2780. 8001392: f04f 0e03 mov.w lr, #3
  2781. 8001396: fa0e fc0c lsl.w ip, lr, ip
  2782. 800139a: ea45 050c orr.w r5, r5, ip
  2783. 800139e: e77e b.n 800129e <HAL_GPIO_Init+0xde>
  2784. 80013a0: fa0b fc0c lsl.w ip, fp, ip
  2785. 80013a4: ea45 050c orr.w r5, r5, ip
  2786. 80013a8: e779 b.n 800129e <HAL_GPIO_Init+0xde>
  2787. 80013aa: f04f 0e02 mov.w lr, #2
  2788. 80013ae: fa0e fc0c lsl.w ip, lr, ip
  2789. 80013b2: ea45 050c orr.w r5, r5, ip
  2790. 80013b6: e772 b.n 800129e <HAL_GPIO_Init+0xde>
  2791. 80013b8: f04f 0e04 mov.w lr, #4
  2792. 80013bc: fa0e fc0c lsl.w ip, lr, ip
  2793. 80013c0: ea45 050c orr.w r5, r5, ip
  2794. 80013c4: e76b b.n 800129e <HAL_GPIO_Init+0xde>
  2795. 80013c6: bf00 nop
  2796. 80013c8: 48000400 .word 0x48000400
  2797. 80013cc: 48000800 .word 0x48000800
  2798. 80013d0: 48000c00 .word 0x48000c00
  2799. 80013d4: 48001000 .word 0x48001000
  2800. 80013d8: 48001400 .word 0x48001400
  2801. 80013dc: 40010400 .word 0x40010400
  2802. 80013e0: 40021000 .word 0x40021000
  2803. 080013e4 <HAL_GPIO_DeInit>:
  2804. /* Check the parameters */
  2805. assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
  2806. assert_param(IS_GPIO_PIN(GPIO_Pin));
  2807. /* Configure the port pins */
  2808. while ((GPIO_Pin >> position) != 0U)
  2809. 80013e4: 2900 cmp r1, #0
  2810. 80013e6: f000 8082 beq.w 80014ee <HAL_GPIO_DeInit+0x10a>
  2811. {
  2812. 80013ea: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
  2813. uint32_t position = 0x00U;
  2814. 80013ee: 2300 movs r3, #0
  2815. tmp = SYSCFG->EXTICR[position >> 2U];
  2816. tmp &= (0x0FUL << (4U * (position & 0x03U)));
  2817. if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))))
  2818. {
  2819. /* Clear EXTI line configuration */
  2820. EXTI->IMR1 &= ~(iocurrent);
  2821. 80013f0: 4e3f ldr r6, [pc, #252] ; (80014f0 <HAL_GPIO_DeInit+0x10c>)
  2822. if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))))
  2823. 80013f2: f8df b110 ldr.w fp, [pc, #272] ; 8001504 <HAL_GPIO_DeInit+0x120>
  2824. tmp &= (0x0FUL << (4U * (position & 0x03U)));
  2825. 80013f6: f04f 090f mov.w r9, #15
  2826. SYSCFG->EXTICR[position >> 2U] &= ~tmp;
  2827. }
  2828. /*------------------------- GPIO Mode Configuration --------------------*/
  2829. /* Configure IO in Analog Mode */
  2830. GPIOx->MODER |= (GPIO_MODER_MODE0 << (position * 2u));
  2831. 80013fa: f04f 0a03 mov.w sl, #3
  2832. 80013fe: e04c b.n 800149a <HAL_GPIO_DeInit+0xb6>
  2833. if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))))
  2834. 8001400: 4558 cmp r0, fp
  2835. 8001402: d065 beq.n 80014d0 <HAL_GPIO_DeInit+0xec>
  2836. 8001404: 4f3b ldr r7, [pc, #236] ; (80014f4 <HAL_GPIO_DeInit+0x110>)
  2837. 8001406: 42b8 cmp r0, r7
  2838. 8001408: d066 beq.n 80014d8 <HAL_GPIO_DeInit+0xf4>
  2839. 800140a: 4f3b ldr r7, [pc, #236] ; (80014f8 <HAL_GPIO_DeInit+0x114>)
  2840. 800140c: 42b8 cmp r0, r7
  2841. 800140e: d067 beq.n 80014e0 <HAL_GPIO_DeInit+0xfc>
  2842. 8001410: 4f3a ldr r7, [pc, #232] ; (80014fc <HAL_GPIO_DeInit+0x118>)
  2843. 8001412: 42b8 cmp r0, r7
  2844. 8001414: d067 beq.n 80014e6 <HAL_GPIO_DeInit+0x102>
  2845. 8001416: 4f3a ldr r7, [pc, #232] ; (8001500 <HAL_GPIO_DeInit+0x11c>)
  2846. 8001418: 42b8 cmp r0, r7
  2847. 800141a: bf14 ite ne
  2848. 800141c: 2706 movne r7, #6
  2849. 800141e: 2705 moveq r7, #5
  2850. 8001420: fa07 f404 lsl.w r4, r7, r4
  2851. 8001424: 45a4 cmp ip, r4
  2852. 8001426: d113 bne.n 8001450 <HAL_GPIO_DeInit+0x6c>
  2853. EXTI->IMR1 &= ~(iocurrent);
  2854. 8001428: 6834 ldr r4, [r6, #0]
  2855. 800142a: ea24 040e bic.w r4, r4, lr
  2856. 800142e: 6034 str r4, [r6, #0]
  2857. EXTI->EMR1 &= ~(iocurrent);
  2858. 8001430: 6874 ldr r4, [r6, #4]
  2859. 8001432: ea24 040e bic.w r4, r4, lr
  2860. 8001436: 6074 str r4, [r6, #4]
  2861. EXTI->FTSR1 &= ~(iocurrent);
  2862. 8001438: 68f4 ldr r4, [r6, #12]
  2863. 800143a: ea24 040e bic.w r4, r4, lr
  2864. 800143e: 60f4 str r4, [r6, #12]
  2865. EXTI->RTSR1 &= ~(iocurrent);
  2866. 8001440: 68b4 ldr r4, [r6, #8]
  2867. 8001442: ea24 040e bic.w r4, r4, lr
  2868. 8001446: 60b4 str r4, [r6, #8]
  2869. SYSCFG->EXTICR[position >> 2U] &= ~tmp;
  2870. 8001448: 68ac ldr r4, [r5, #8]
  2871. 800144a: ea24 0408 bic.w r4, r4, r8
  2872. 800144e: 60ac str r4, [r5, #8]
  2873. GPIOx->MODER |= (GPIO_MODER_MODE0 << (position * 2u));
  2874. 8001450: 6805 ldr r5, [r0, #0]
  2875. 8001452: 005c lsls r4, r3, #1
  2876. 8001454: fa0a f404 lsl.w r4, sl, r4
  2877. /* Configure the default Alternate Function in current IO */
  2878. GPIOx->AFR[position >> 3u] &= ~(0xFu << ((position & 0x07u) * 4u));
  2879. 8001458: ea4f 0cd3 mov.w ip, r3, lsr #3
  2880. GPIOx->MODER |= (GPIO_MODER_MODE0 << (position * 2u));
  2881. 800145c: 4325 orrs r5, r4
  2882. 800145e: eb00 0c8c add.w ip, r0, ip, lsl #2
  2883. 8001462: 6005 str r5, [r0, #0]
  2884. GPIOx->AFR[position >> 3u] &= ~(0xFu << ((position & 0x07u) * 4u));
  2885. 8001464: f003 0507 and.w r5, r3, #7
  2886. 8001468: f8dc e020 ldr.w lr, [ip, #32]
  2887. 800146c: 00ad lsls r5, r5, #2
  2888. 800146e: fa09 f505 lsl.w r5, r9, r5
  2889. 8001472: ea2e 0505 bic.w r5, lr, r5
  2890. 8001476: f8cc 5020 str.w r5, [ip, #32]
  2891. /* Deactivate the Pull-up and Pull-down resistor for the current IO */
  2892. GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPD0 << (position * 2u));
  2893. 800147a: 68c5 ldr r5, [r0, #12]
  2894. 800147c: ea25 0504 bic.w r5, r5, r4
  2895. 8001480: 60c5 str r5, [r0, #12]
  2896. /* Configure the default value IO Output Type */
  2897. GPIOx->OTYPER &= ~(GPIO_OTYPER_OT0 << position);
  2898. 8001482: 6845 ldr r5, [r0, #4]
  2899. 8001484: ea25 0202 bic.w r2, r5, r2
  2900. 8001488: 6042 str r2, [r0, #4]
  2901. /* Configure the default value for IO Speed */
  2902. GPIOx->OSPEEDR &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2u));
  2903. 800148a: 6882 ldr r2, [r0, #8]
  2904. 800148c: ea22 0404 bic.w r4, r2, r4
  2905. 8001490: 6084 str r4, [r0, #8]
  2906. }
  2907. position++;
  2908. 8001492: 3301 adds r3, #1
  2909. while ((GPIO_Pin >> position) != 0U)
  2910. 8001494: fa31 f203 lsrs.w r2, r1, r3
  2911. 8001498: d018 beq.n 80014cc <HAL_GPIO_DeInit+0xe8>
  2912. iocurrent = (GPIO_Pin) & (1UL << position);
  2913. 800149a: 2201 movs r2, #1
  2914. 800149c: 409a lsls r2, r3
  2915. if (iocurrent != 0x00u)
  2916. 800149e: ea12 0e01 ands.w lr, r2, r1
  2917. 80014a2: d0f6 beq.n 8001492 <HAL_GPIO_DeInit+0xae>
  2918. tmp = SYSCFG->EXTICR[position >> 2U];
  2919. 80014a4: f023 0503 bic.w r5, r3, #3
  2920. 80014a8: f105 4580 add.w r5, r5, #1073741824 ; 0x40000000
  2921. 80014ac: f505 3580 add.w r5, r5, #65536 ; 0x10000
  2922. tmp &= (0x0FUL << (4U * (position & 0x03U)));
  2923. 80014b0: f003 0403 and.w r4, r3, #3
  2924. tmp = SYSCFG->EXTICR[position >> 2U];
  2925. 80014b4: f8d5 c008 ldr.w ip, [r5, #8]
  2926. tmp &= (0x0FUL << (4U * (position & 0x03U)));
  2927. 80014b8: 00a4 lsls r4, r4, #2
  2928. 80014ba: fa09 f804 lsl.w r8, r9, r4
  2929. if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))))
  2930. 80014be: f1b0 4f90 cmp.w r0, #1207959552 ; 0x48000000
  2931. tmp &= (0x0FUL << (4U * (position & 0x03U)));
  2932. 80014c2: ea08 0c0c and.w ip, r8, ip
  2933. if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))))
  2934. 80014c6: d19b bne.n 8001400 <HAL_GPIO_DeInit+0x1c>
  2935. 80014c8: 2400 movs r4, #0
  2936. 80014ca: e7ab b.n 8001424 <HAL_GPIO_DeInit+0x40>
  2937. }
  2938. }
  2939. 80014cc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  2940. if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))))
  2941. 80014d0: 2701 movs r7, #1
  2942. 80014d2: fa07 f404 lsl.w r4, r7, r4
  2943. 80014d6: e7a5 b.n 8001424 <HAL_GPIO_DeInit+0x40>
  2944. 80014d8: 2702 movs r7, #2
  2945. 80014da: fa07 f404 lsl.w r4, r7, r4
  2946. 80014de: e7a1 b.n 8001424 <HAL_GPIO_DeInit+0x40>
  2947. 80014e0: fa0a f404 lsl.w r4, sl, r4
  2948. 80014e4: e79e b.n 8001424 <HAL_GPIO_DeInit+0x40>
  2949. 80014e6: 2704 movs r7, #4
  2950. 80014e8: fa07 f404 lsl.w r4, r7, r4
  2951. 80014ec: e79a b.n 8001424 <HAL_GPIO_DeInit+0x40>
  2952. 80014ee: 4770 bx lr
  2953. 80014f0: 40010400 .word 0x40010400
  2954. 80014f4: 48000800 .word 0x48000800
  2955. 80014f8: 48000c00 .word 0x48000c00
  2956. 80014fc: 48001000 .word 0x48001000
  2957. 8001500: 48001400 .word 0x48001400
  2958. 8001504: 48000400 .word 0x48000400
  2959. 08001508 <HAL_GPIO_ReadPin>:
  2960. GPIO_PinState bitstatus;
  2961. /* Check the parameters */
  2962. assert_param(IS_GPIO_PIN(GPIO_Pin));
  2963. if ((GPIOx->IDR & GPIO_Pin) != 0x00U)
  2964. 8001508: 6903 ldr r3, [r0, #16]
  2965. 800150a: 4219 tst r1, r3
  2966. else
  2967. {
  2968. bitstatus = GPIO_PIN_RESET;
  2969. }
  2970. return bitstatus;
  2971. }
  2972. 800150c: bf14 ite ne
  2973. 800150e: 2001 movne r0, #1
  2974. 8001510: 2000 moveq r0, #0
  2975. 8001512: 4770 bx lr
  2976. 08001514 <HAL_GPIO_WritePin>:
  2977. {
  2978. /* Check the parameters */
  2979. assert_param(IS_GPIO_PIN(GPIO_Pin));
  2980. assert_param(IS_GPIO_PIN_ACTION(PinState));
  2981. if (PinState != GPIO_PIN_RESET)
  2982. 8001514: b10a cbz r2, 800151a <HAL_GPIO_WritePin+0x6>
  2983. {
  2984. GPIOx->BSRR = (uint32_t)GPIO_Pin;
  2985. 8001516: 6181 str r1, [r0, #24]
  2986. 8001518: 4770 bx lr
  2987. }
  2988. else
  2989. {
  2990. GPIOx->BRR = (uint32_t)GPIO_Pin;
  2991. 800151a: 6281 str r1, [r0, #40] ; 0x28
  2992. }
  2993. }
  2994. 800151c: 4770 bx lr
  2995. 800151e: bf00 nop
  2996. 08001520 <HAL_GPIO_TogglePin>:
  2997. /* Check the parameters */
  2998. assert_param(IS_GPIO_PIN(GPIO_Pin));
  2999. /* get current Output Data Register value */
  3000. odr = GPIOx->ODR;
  3001. 8001520: 6943 ldr r3, [r0, #20]
  3002. /* Set selected pins that were at low level, and reset ones that were high */
  3003. GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin);
  3004. 8001522: ea01 0203 and.w r2, r1, r3
  3005. 8001526: ea21 0103 bic.w r1, r1, r3
  3006. 800152a: ea41 4102 orr.w r1, r1, r2, lsl #16
  3007. 800152e: 6181 str r1, [r0, #24]
  3008. }
  3009. 8001530: 4770 bx lr
  3010. 8001532: bf00 nop
  3011. 08001534 <HAL_PWREx_ControlVoltageScaling>:
  3012. * cleared before returning the status. If the flag is not cleared within
  3013. * 50 microseconds, HAL_TIMEOUT status is reported.
  3014. * @retval HAL Status
  3015. */
  3016. HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling)
  3017. {
  3018. 8001534: b410 push {r4}
  3019. assert_param(IS_PWR_VOLTAGE_SCALING_RANGE(VoltageScaling));
  3020. if (VoltageScaling == PWR_REGULATOR_VOLTAGE_SCALE1_BOOST)
  3021. {
  3022. /* If current range is range 2 */
  3023. if (READ_BIT(PWR->CR1, PWR_CR1_VOS) == PWR_REGULATOR_VOLTAGE_SCALE2)
  3024. 8001536: 4a3b ldr r2, [pc, #236] ; (8001624 <HAL_PWREx_ControlVoltageScaling+0xf0>)
  3025. if (VoltageScaling == PWR_REGULATOR_VOLTAGE_SCALE1_BOOST)
  3026. 8001538: b970 cbnz r0, 8001558 <HAL_PWREx_ControlVoltageScaling+0x24>
  3027. if (READ_BIT(PWR->CR1, PWR_CR1_VOS) == PWR_REGULATOR_VOLTAGE_SCALE2)
  3028. 800153a: 6813 ldr r3, [r2, #0]
  3029. 800153c: f403 63c0 and.w r3, r3, #1536 ; 0x600
  3030. 8001540: f5b3 6f80 cmp.w r3, #1024 ; 0x400
  3031. {
  3032. /* Make sure Range 1 Boost is enabled */
  3033. CLEAR_BIT(PWR->CR5, PWR_CR5_R1MODE);
  3034. 8001544: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80
  3035. if (READ_BIT(PWR->CR1, PWR_CR1_VOS) == PWR_REGULATOR_VOLTAGE_SCALE2)
  3036. 8001548: d023 beq.n 8001592 <HAL_PWREx_ControlVoltageScaling+0x5e>
  3037. }
  3038. /* If current range is range 1 normal or boost mode */
  3039. else
  3040. {
  3041. /* Enable Range 1 Boost (no issue if bit already reset) */
  3042. CLEAR_BIT(PWR->CR5, PWR_CR5_R1MODE);
  3043. 800154a: f423 7380 bic.w r3, r3, #256 ; 0x100
  3044. /* No need to wait for VOSF to be cleared for this transition */
  3045. /* PWR_CR5_R1MODE bit setting has no effect in Range 2 */
  3046. }
  3047. return HAL_OK;
  3048. }
  3049. 800154e: f85d 4b04 ldr.w r4, [sp], #4
  3050. CLEAR_BIT(PWR->CR5, PWR_CR5_R1MODE);
  3051. 8001552: f8c2 3080 str.w r3, [r2, #128] ; 0x80
  3052. }
  3053. 8001556: 4770 bx lr
  3054. else if (VoltageScaling == PWR_REGULATOR_VOLTAGE_SCALE1)
  3055. 8001558: f5b0 7f00 cmp.w r0, #512 ; 0x200
  3056. 800155c: d009 beq.n 8001572 <HAL_PWREx_ControlVoltageScaling+0x3e>
  3057. MODIFY_REG(PWR->CR1, PWR_CR1_VOS, PWR_REGULATOR_VOLTAGE_SCALE2);
  3058. 800155e: 6813 ldr r3, [r2, #0]
  3059. }
  3060. 8001560: f85d 4b04 ldr.w r4, [sp], #4
  3061. MODIFY_REG(PWR->CR1, PWR_CR1_VOS, PWR_REGULATOR_VOLTAGE_SCALE2);
  3062. 8001564: f423 63c0 bic.w r3, r3, #1536 ; 0x600
  3063. 8001568: f443 6380 orr.w r3, r3, #1024 ; 0x400
  3064. return HAL_OK;
  3065. 800156c: 2000 movs r0, #0
  3066. MODIFY_REG(PWR->CR1, PWR_CR1_VOS, PWR_REGULATOR_VOLTAGE_SCALE2);
  3067. 800156e: 6013 str r3, [r2, #0]
  3068. }
  3069. 8001570: 4770 bx lr
  3070. if (READ_BIT(PWR->CR1, PWR_CR1_VOS) == PWR_REGULATOR_VOLTAGE_SCALE2)
  3071. 8001572: 6813 ldr r3, [r2, #0]
  3072. 8001574: f403 63c0 and.w r3, r3, #1536 ; 0x600
  3073. 8001578: f5b3 6f80 cmp.w r3, #1024 ; 0x400
  3074. SET_BIT(PWR->CR5, PWR_CR5_R1MODE);
  3075. 800157c: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80
  3076. if (READ_BIT(PWR->CR1, PWR_CR1_VOS) == PWR_REGULATOR_VOLTAGE_SCALE2)
  3077. 8001580: d02f beq.n 80015e2 <HAL_PWREx_ControlVoltageScaling+0xae>
  3078. SET_BIT(PWR->CR5, PWR_CR5_R1MODE);
  3079. 8001582: f443 7380 orr.w r3, r3, #256 ; 0x100
  3080. return HAL_OK;
  3081. 8001586: 2000 movs r0, #0
  3082. }
  3083. 8001588: f85d 4b04 ldr.w r4, [sp], #4
  3084. SET_BIT(PWR->CR5, PWR_CR5_R1MODE);
  3085. 800158c: f8c2 3080 str.w r3, [r2, #128] ; 0x80
  3086. }
  3087. 8001590: 4770 bx lr
  3088. CLEAR_BIT(PWR->CR5, PWR_CR5_R1MODE);
  3089. 8001592: f423 7380 bic.w r3, r3, #256 ; 0x100
  3090. 8001596: f8c2 3080 str.w r3, [r2, #128] ; 0x80
  3091. MODIFY_REG(PWR->CR1, PWR_CR1_VOS, PWR_REGULATOR_VOLTAGE_SCALE1);
  3092. 800159a: 6811 ldr r1, [r2, #0]
  3093. wait_loop_index = ((PWR_FLAG_SETTING_DELAY_US * SystemCoreClock) / 1000000U) + 1U;
  3094. 800159c: 4c22 ldr r4, [pc, #136] ; (8001628 <HAL_PWREx_ControlVoltageScaling+0xf4>)
  3095. 800159e: 4823 ldr r0, [pc, #140] ; (800162c <HAL_PWREx_ControlVoltageScaling+0xf8>)
  3096. MODIFY_REG(PWR->CR1, PWR_CR1_VOS, PWR_REGULATOR_VOLTAGE_SCALE1);
  3097. 80015a0: f421 61c0 bic.w r1, r1, #1536 ; 0x600
  3098. 80015a4: f441 7100 orr.w r1, r1, #512 ; 0x200
  3099. 80015a8: 6011 str r1, [r2, #0]
  3100. wait_loop_index = ((PWR_FLAG_SETTING_DELAY_US * SystemCoreClock) / 1000000U) + 1U;
  3101. 80015aa: 6823 ldr r3, [r4, #0]
  3102. 80015ac: 2132 movs r1, #50 ; 0x32
  3103. 80015ae: fb01 f303 mul.w r3, r1, r3
  3104. while ((HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) && (wait_loop_index != 0U))
  3105. 80015b2: 6951 ldr r1, [r2, #20]
  3106. wait_loop_index = ((PWR_FLAG_SETTING_DELAY_US * SystemCoreClock) / 1000000U) + 1U;
  3107. 80015b4: fba0 0303 umull r0, r3, r0, r3
  3108. 80015b8: 0c9b lsrs r3, r3, #18
  3109. while ((HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) && (wait_loop_index != 0U))
  3110. 80015ba: 0548 lsls r0, r1, #21
  3111. wait_loop_index = ((PWR_FLAG_SETTING_DELAY_US * SystemCoreClock) / 1000000U) + 1U;
  3112. 80015bc: f103 0301 add.w r3, r3, #1
  3113. while ((HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) && (wait_loop_index != 0U))
  3114. 80015c0: d506 bpl.n 80015d0 <HAL_PWREx_ControlVoltageScaling+0x9c>
  3115. 80015c2: e000 b.n 80015c6 <HAL_PWREx_ControlVoltageScaling+0x92>
  3116. 80015c4: b123 cbz r3, 80015d0 <HAL_PWREx_ControlVoltageScaling+0x9c>
  3117. 80015c6: 6951 ldr r1, [r2, #20]
  3118. 80015c8: 0549 lsls r1, r1, #21
  3119. wait_loop_index--;
  3120. 80015ca: f103 33ff add.w r3, r3, #4294967295 ; 0xffffffff
  3121. while ((HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) && (wait_loop_index != 0U))
  3122. 80015ce: d4f9 bmi.n 80015c4 <HAL_PWREx_ControlVoltageScaling+0x90>
  3123. if (HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF))
  3124. 80015d0: 4b14 ldr r3, [pc, #80] ; (8001624 <HAL_PWREx_ControlVoltageScaling+0xf0>)
  3125. 80015d2: 695b ldr r3, [r3, #20]
  3126. 80015d4: 055c lsls r4, r3, #21
  3127. return HAL_OK;
  3128. 80015d6: bf54 ite pl
  3129. 80015d8: 2000 movpl r0, #0
  3130. return HAL_TIMEOUT;
  3131. 80015da: 2003 movmi r0, #3
  3132. }
  3133. 80015dc: f85d 4b04 ldr.w r4, [sp], #4
  3134. 80015e0: 4770 bx lr
  3135. SET_BIT(PWR->CR5, PWR_CR5_R1MODE);
  3136. 80015e2: f443 7380 orr.w r3, r3, #256 ; 0x100
  3137. 80015e6: f8c2 3080 str.w r3, [r2, #128] ; 0x80
  3138. MODIFY_REG(PWR->CR1, PWR_CR1_VOS, PWR_REGULATOR_VOLTAGE_SCALE1);
  3139. 80015ea: 6811 ldr r1, [r2, #0]
  3140. wait_loop_index = ((PWR_FLAG_SETTING_DELAY_US * SystemCoreClock) / 1000000U) + 1U;
  3141. 80015ec: 4c0e ldr r4, [pc, #56] ; (8001628 <HAL_PWREx_ControlVoltageScaling+0xf4>)
  3142. 80015ee: 480f ldr r0, [pc, #60] ; (800162c <HAL_PWREx_ControlVoltageScaling+0xf8>)
  3143. MODIFY_REG(PWR->CR1, PWR_CR1_VOS, PWR_REGULATOR_VOLTAGE_SCALE1);
  3144. 80015f0: f421 61c0 bic.w r1, r1, #1536 ; 0x600
  3145. 80015f4: f441 7100 orr.w r1, r1, #512 ; 0x200
  3146. 80015f8: 6011 str r1, [r2, #0]
  3147. wait_loop_index = ((PWR_FLAG_SETTING_DELAY_US * SystemCoreClock) / 1000000U) + 1U;
  3148. 80015fa: 6823 ldr r3, [r4, #0]
  3149. 80015fc: 2132 movs r1, #50 ; 0x32
  3150. 80015fe: fb01 f303 mul.w r3, r1, r3
  3151. while ((HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) && (wait_loop_index != 0U))
  3152. 8001602: 6951 ldr r1, [r2, #20]
  3153. wait_loop_index = ((PWR_FLAG_SETTING_DELAY_US * SystemCoreClock) / 1000000U) + 1U;
  3154. 8001604: fba0 0303 umull r0, r3, r0, r3
  3155. 8001608: 0c9b lsrs r3, r3, #18
  3156. while ((HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) && (wait_loop_index != 0U))
  3157. 800160a: 0548 lsls r0, r1, #21
  3158. wait_loop_index = ((PWR_FLAG_SETTING_DELAY_US * SystemCoreClock) / 1000000U) + 1U;
  3159. 800160c: f103 0301 add.w r3, r3, #1
  3160. while ((HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) && (wait_loop_index != 0U))
  3161. 8001610: d5de bpl.n 80015d0 <HAL_PWREx_ControlVoltageScaling+0x9c>
  3162. 8001612: e001 b.n 8001618 <HAL_PWREx_ControlVoltageScaling+0xe4>
  3163. 8001614: 2b00 cmp r3, #0
  3164. 8001616: d0db beq.n 80015d0 <HAL_PWREx_ControlVoltageScaling+0x9c>
  3165. 8001618: 6951 ldr r1, [r2, #20]
  3166. 800161a: 0549 lsls r1, r1, #21
  3167. wait_loop_index--;
  3168. 800161c: f103 33ff add.w r3, r3, #4294967295 ; 0xffffffff
  3169. while ((HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) && (wait_loop_index != 0U))
  3170. 8001620: d5d6 bpl.n 80015d0 <HAL_PWREx_ControlVoltageScaling+0x9c>
  3171. 8001622: e7f7 b.n 8001614 <HAL_PWREx_ControlVoltageScaling+0xe0>
  3172. 8001624: 40007000 .word 0x40007000
  3173. 8001628: 20000000 .word 0x20000000
  3174. 800162c: 431bde83 .word 0x431bde83
  3175. 08001630 <HAL_PWREx_DisableUCPDDeadBattery>:
  3176. * @retval None
  3177. */
  3178. void HAL_PWREx_DisableUCPDDeadBattery(void)
  3179. {
  3180. /* Write 1 to disable the USB Type-C dead battery pull-down behavior */
  3181. SET_BIT(PWR->CR3, PWR_CR3_UCPD_DBDIS);
  3182. 8001630: 4a02 ldr r2, [pc, #8] ; (800163c <HAL_PWREx_DisableUCPDDeadBattery+0xc>)
  3183. 8001632: 6893 ldr r3, [r2, #8]
  3184. 8001634: f443 4380 orr.w r3, r3, #16384 ; 0x4000
  3185. 8001638: 6093 str r3, [r2, #8]
  3186. }
  3187. 800163a: 4770 bx lr
  3188. 800163c: 40007000 .word 0x40007000
  3189. 08001640 <HAL_RCC_OscConfig>:
  3190. uint32_t tickstart;
  3191. uint32_t temp_sysclksrc;
  3192. uint32_t temp_pllckcfg;
  3193. /* Check Null pointer */
  3194. if (RCC_OscInitStruct == NULL)
  3195. 8001640: 2800 cmp r0, #0
  3196. 8001642: f000 8200 beq.w 8001a46 <HAL_RCC_OscConfig+0x406>
  3197. {
  3198. 8001646: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
  3199. /* Check the parameters */
  3200. assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
  3201. /*------------------------------- HSE Configuration ------------------------*/
  3202. if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
  3203. 800164a: 6803 ldr r3, [r0, #0]
  3204. 800164c: 07d9 lsls r1, r3, #31
  3205. {
  3206. 800164e: b082 sub sp, #8
  3207. 8001650: 4604 mov r4, r0
  3208. if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
  3209. 8001652: d52d bpl.n 80016b0 <HAL_RCC_OscConfig+0x70>
  3210. {
  3211. /* Check the parameters */
  3212. assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
  3213. temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE();
  3214. 8001654: 49af ldr r1, [pc, #700] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3215. 8001656: 688a ldr r2, [r1, #8]
  3216. temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE();
  3217. 8001658: 68c9 ldr r1, [r1, #12]
  3218. temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE();
  3219. 800165a: f002 020c and.w r2, r2, #12
  3220. /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */
  3221. if (((temp_sysclksrc == RCC_CFGR_SWS_PLL) && (temp_pllckcfg == RCC_PLLSOURCE_HSE)) || (temp_sysclksrc == RCC_CFGR_SWS_HSE))
  3222. 800165e: 2a0c cmp r2, #12
  3223. 8001660: f000 8106 beq.w 8001870 <HAL_RCC_OscConfig+0x230>
  3224. 8001664: 2a08 cmp r2, #8
  3225. 8001666: f000 8108 beq.w 800187a <HAL_RCC_OscConfig+0x23a>
  3226. }
  3227. }
  3228. else
  3229. {
  3230. /* Set the new HSE configuration ---------------------------------------*/
  3231. __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
  3232. 800166a: 6863 ldr r3, [r4, #4]
  3233. 800166c: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
  3234. 8001670: f000 8177 beq.w 8001962 <HAL_RCC_OscConfig+0x322>
  3235. 8001674: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000
  3236. 8001678: f000 81d8 beq.w 8001a2c <HAL_RCC_OscConfig+0x3ec>
  3237. 800167c: 4da5 ldr r5, [pc, #660] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3238. 800167e: 682a ldr r2, [r5, #0]
  3239. 8001680: f422 3280 bic.w r2, r2, #65536 ; 0x10000
  3240. 8001684: 602a str r2, [r5, #0]
  3241. 8001686: 682a ldr r2, [r5, #0]
  3242. 8001688: f422 2280 bic.w r2, r2, #262144 ; 0x40000
  3243. 800168c: 602a str r2, [r5, #0]
  3244. /* Check the HSE State */
  3245. if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
  3246. 800168e: 2b00 cmp r3, #0
  3247. 8001690: f040 816c bne.w 800196c <HAL_RCC_OscConfig+0x32c>
  3248. }
  3249. }
  3250. else
  3251. {
  3252. /* Get Start Tick*/
  3253. tickstart = HAL_GetTick();
  3254. 8001694: f7ff fb20 bl 8000cd8 <HAL_GetTick>
  3255. 8001698: 4606 mov r6, r0
  3256. /* Wait till HSE is disabled */
  3257. while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U)
  3258. 800169a: e005 b.n 80016a8 <HAL_RCC_OscConfig+0x68>
  3259. {
  3260. if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
  3261. 800169c: f7ff fb1c bl 8000cd8 <HAL_GetTick>
  3262. 80016a0: 1b80 subs r0, r0, r6
  3263. 80016a2: 2864 cmp r0, #100 ; 0x64
  3264. 80016a4: f200 817f bhi.w 80019a6 <HAL_RCC_OscConfig+0x366>
  3265. while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U)
  3266. 80016a8: 682b ldr r3, [r5, #0]
  3267. 80016aa: 039f lsls r7, r3, #14
  3268. 80016ac: d4f6 bmi.n 800169c <HAL_RCC_OscConfig+0x5c>
  3269. }
  3270. }
  3271. }
  3272. }
  3273. /*----------------------------- HSI Configuration --------------------------*/
  3274. if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
  3275. 80016ae: 6823 ldr r3, [r4, #0]
  3276. 80016b0: 079e lsls r6, r3, #30
  3277. 80016b2: d528 bpl.n 8001706 <HAL_RCC_OscConfig+0xc6>
  3278. /* Check the parameters */
  3279. assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
  3280. assert_param(IS_RCC_HSI_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
  3281. /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
  3282. temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE();
  3283. 80016b4: 4a97 ldr r2, [pc, #604] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3284. 80016b6: 6893 ldr r3, [r2, #8]
  3285. temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE();
  3286. 80016b8: 68d2 ldr r2, [r2, #12]
  3287. temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE();
  3288. 80016ba: f003 030c and.w r3, r3, #12
  3289. if (((temp_sysclksrc == RCC_CFGR_SWS_PLL) && (temp_pllckcfg == RCC_PLLSOURCE_HSI)) || (temp_sysclksrc == RCC_CFGR_SWS_HSI))
  3290. 80016be: 2b0c cmp r3, #12
  3291. 80016c0: f000 8130 beq.w 8001924 <HAL_RCC_OscConfig+0x2e4>
  3292. 80016c4: 2b04 cmp r3, #4
  3293. 80016c6: f000 8132 beq.w 800192e <HAL_RCC_OscConfig+0x2ee>
  3294. }
  3295. }
  3296. else
  3297. {
  3298. /* Check the HSI State */
  3299. if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF)
  3300. 80016ca: 68e3 ldr r3, [r4, #12]
  3301. {
  3302. /* Enable the Internal High Speed oscillator (HSI). */
  3303. __HAL_RCC_HSI_ENABLE();
  3304. 80016cc: 4d91 ldr r5, [pc, #580] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3305. if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF)
  3306. 80016ce: 2b00 cmp r3, #0
  3307. 80016d0: f000 815a beq.w 8001988 <HAL_RCC_OscConfig+0x348>
  3308. __HAL_RCC_HSI_ENABLE();
  3309. 80016d4: 682b ldr r3, [r5, #0]
  3310. 80016d6: f443 7380 orr.w r3, r3, #256 ; 0x100
  3311. 80016da: 602b str r3, [r5, #0]
  3312. /* Get Start Tick*/
  3313. tickstart = HAL_GetTick();
  3314. 80016dc: f7ff fafc bl 8000cd8 <HAL_GetTick>
  3315. 80016e0: 4606 mov r6, r0
  3316. /* Wait till HSI is ready */
  3317. while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U)
  3318. 80016e2: e005 b.n 80016f0 <HAL_RCC_OscConfig+0xb0>
  3319. {
  3320. if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
  3321. 80016e4: f7ff faf8 bl 8000cd8 <HAL_GetTick>
  3322. 80016e8: 1b80 subs r0, r0, r6
  3323. 80016ea: 2802 cmp r0, #2
  3324. 80016ec: f200 815b bhi.w 80019a6 <HAL_RCC_OscConfig+0x366>
  3325. while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U)
  3326. 80016f0: 682b ldr r3, [r5, #0]
  3327. 80016f2: 0558 lsls r0, r3, #21
  3328. 80016f4: d5f6 bpl.n 80016e4 <HAL_RCC_OscConfig+0xa4>
  3329. return HAL_TIMEOUT;
  3330. }
  3331. }
  3332. /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
  3333. __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
  3334. 80016f6: 686b ldr r3, [r5, #4]
  3335. 80016f8: 6922 ldr r2, [r4, #16]
  3336. 80016fa: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000
  3337. 80016fe: ea43 6302 orr.w r3, r3, r2, lsl #24
  3338. 8001702: 606b str r3, [r5, #4]
  3339. }
  3340. }
  3341. }
  3342. }
  3343. /*------------------------------ LSI Configuration -------------------------*/
  3344. if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
  3345. 8001704: 6823 ldr r3, [r4, #0]
  3346. 8001706: 071a lsls r2, r3, #28
  3347. 8001708: d519 bpl.n 800173e <HAL_RCC_OscConfig+0xfe>
  3348. {
  3349. /* Check the parameters */
  3350. assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
  3351. /* Check the LSI State */
  3352. if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF)
  3353. 800170a: 6963 ldr r3, [r4, #20]
  3354. {
  3355. /* Enable the Internal Low Speed oscillator (LSI). */
  3356. __HAL_RCC_LSI_ENABLE();
  3357. 800170c: 4d81 ldr r5, [pc, #516] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3358. if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF)
  3359. 800170e: 2b00 cmp r3, #0
  3360. 8001710: f000 8099 beq.w 8001846 <HAL_RCC_OscConfig+0x206>
  3361. __HAL_RCC_LSI_ENABLE();
  3362. 8001714: f8d5 3094 ldr.w r3, [r5, #148] ; 0x94
  3363. 8001718: f043 0301 orr.w r3, r3, #1
  3364. 800171c: f8c5 3094 str.w r3, [r5, #148] ; 0x94
  3365. /* Get Start Tick*/
  3366. tickstart = HAL_GetTick();
  3367. 8001720: f7ff fada bl 8000cd8 <HAL_GetTick>
  3368. 8001724: 4606 mov r6, r0
  3369. /* Wait till LSI is ready */
  3370. while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U)
  3371. 8001726: e005 b.n 8001734 <HAL_RCC_OscConfig+0xf4>
  3372. {
  3373. if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
  3374. 8001728: f7ff fad6 bl 8000cd8 <HAL_GetTick>
  3375. 800172c: 1b80 subs r0, r0, r6
  3376. 800172e: 2802 cmp r0, #2
  3377. 8001730: f200 8139 bhi.w 80019a6 <HAL_RCC_OscConfig+0x366>
  3378. while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U)
  3379. 8001734: f8d5 3094 ldr.w r3, [r5, #148] ; 0x94
  3380. 8001738: 079b lsls r3, r3, #30
  3381. 800173a: d5f5 bpl.n 8001728 <HAL_RCC_OscConfig+0xe8>
  3382. }
  3383. }
  3384. }
  3385. }
  3386. /*------------------------------ LSE Configuration -------------------------*/
  3387. if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
  3388. 800173c: 6823 ldr r3, [r4, #0]
  3389. 800173e: 075e lsls r6, r3, #29
  3390. 8001740: d541 bpl.n 80017c6 <HAL_RCC_OscConfig+0x186>
  3391. /* Check the parameters */
  3392. assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
  3393. /* Update LSE configuration in Backup Domain control register */
  3394. /* Requires to enable write access to Backup Domain if necessary */
  3395. if (__HAL_RCC_PWR_IS_CLK_DISABLED() != 0U)
  3396. 8001742: 4b74 ldr r3, [pc, #464] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3397. 8001744: 6d9a ldr r2, [r3, #88] ; 0x58
  3398. 8001746: 00d5 lsls r5, r2, #3
  3399. 8001748: f100 8131 bmi.w 80019ae <HAL_RCC_OscConfig+0x36e>
  3400. {
  3401. __HAL_RCC_PWR_CLK_ENABLE();
  3402. 800174c: 6d9a ldr r2, [r3, #88] ; 0x58
  3403. 800174e: f042 5280 orr.w r2, r2, #268435456 ; 0x10000000
  3404. 8001752: 659a str r2, [r3, #88] ; 0x58
  3405. 8001754: 6d9b ldr r3, [r3, #88] ; 0x58
  3406. 8001756: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  3407. 800175a: 9301 str r3, [sp, #4]
  3408. 800175c: 9b01 ldr r3, [sp, #4]
  3409. pwrclkchanged = SET;
  3410. 800175e: 2501 movs r5, #1
  3411. }
  3412. if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
  3413. 8001760: 4e6d ldr r6, [pc, #436] ; (8001918 <HAL_RCC_OscConfig+0x2d8>)
  3414. 8001762: 6833 ldr r3, [r6, #0]
  3415. 8001764: 05d8 lsls r0, r3, #23
  3416. 8001766: f140 8150 bpl.w 8001a0a <HAL_RCC_OscConfig+0x3ca>
  3417. }
  3418. }
  3419. }
  3420. /* Set the new LSE configuration -----------------------------------------*/
  3421. __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
  3422. 800176a: 68a3 ldr r3, [r4, #8]
  3423. 800176c: 2b01 cmp r3, #1
  3424. 800176e: f000 8120 beq.w 80019b2 <HAL_RCC_OscConfig+0x372>
  3425. 8001772: 2b05 cmp r3, #5
  3426. 8001774: f000 8169 beq.w 8001a4a <HAL_RCC_OscConfig+0x40a>
  3427. 8001778: 4e66 ldr r6, [pc, #408] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3428. 800177a: f8d6 2090 ldr.w r2, [r6, #144] ; 0x90
  3429. 800177e: f022 0201 bic.w r2, r2, #1
  3430. 8001782: f8c6 2090 str.w r2, [r6, #144] ; 0x90
  3431. 8001786: f8d6 2090 ldr.w r2, [r6, #144] ; 0x90
  3432. 800178a: f022 0204 bic.w r2, r2, #4
  3433. 800178e: f8c6 2090 str.w r2, [r6, #144] ; 0x90
  3434. /* Check the LSE State */
  3435. if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF)
  3436. 8001792: 2b00 cmp r3, #0
  3437. 8001794: f040 8114 bne.w 80019c0 <HAL_RCC_OscConfig+0x380>
  3438. }
  3439. }
  3440. else
  3441. {
  3442. /* Get Start Tick*/
  3443. tickstart = HAL_GetTick();
  3444. 8001798: f7ff fa9e bl 8000cd8 <HAL_GetTick>
  3445. /* Wait till LSE is disabled */
  3446. while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U)
  3447. {
  3448. if((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
  3449. 800179c: f241 3888 movw r8, #5000 ; 0x1388
  3450. tickstart = HAL_GetTick();
  3451. 80017a0: 4607 mov r7, r0
  3452. while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U)
  3453. 80017a2: e005 b.n 80017b0 <HAL_RCC_OscConfig+0x170>
  3454. if((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
  3455. 80017a4: f7ff fa98 bl 8000cd8 <HAL_GetTick>
  3456. 80017a8: 1bc0 subs r0, r0, r7
  3457. 80017aa: 4540 cmp r0, r8
  3458. 80017ac: f200 80fb bhi.w 80019a6 <HAL_RCC_OscConfig+0x366>
  3459. while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U)
  3460. 80017b0: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90
  3461. 80017b4: 079b lsls r3, r3, #30
  3462. 80017b6: d4f5 bmi.n 80017a4 <HAL_RCC_OscConfig+0x164>
  3463. }
  3464. }
  3465. }
  3466. /* Restore clock configuration if changed */
  3467. if (pwrclkchanged == SET)
  3468. 80017b8: b125 cbz r5, 80017c4 <HAL_RCC_OscConfig+0x184>
  3469. {
  3470. __HAL_RCC_PWR_CLK_DISABLE();
  3471. 80017ba: 4a56 ldr r2, [pc, #344] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3472. 80017bc: 6d93 ldr r3, [r2, #88] ; 0x58
  3473. 80017be: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
  3474. 80017c2: 6593 str r3, [r2, #88] ; 0x58
  3475. }
  3476. }
  3477. /*------------------------------ HSI48 Configuration -----------------------*/
  3478. if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48)
  3479. 80017c4: 6823 ldr r3, [r4, #0]
  3480. 80017c6: 069d lsls r5, r3, #26
  3481. 80017c8: d518 bpl.n 80017fc <HAL_RCC_OscConfig+0x1bc>
  3482. {
  3483. /* Check the parameters */
  3484. assert_param(IS_RCC_HSI48(RCC_OscInitStruct->HSI48State));
  3485. /* Check the HSI48 State */
  3486. if(RCC_OscInitStruct->HSI48State != RCC_HSI48_OFF)
  3487. 80017ca: 69a3 ldr r3, [r4, #24]
  3488. {
  3489. /* Enable the Internal Low Speed oscillator (HSI48). */
  3490. __HAL_RCC_HSI48_ENABLE();
  3491. 80017cc: 4d51 ldr r5, [pc, #324] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3492. if(RCC_OscInitStruct->HSI48State != RCC_HSI48_OFF)
  3493. 80017ce: 2b00 cmp r3, #0
  3494. 80017d0: f000 8107 beq.w 80019e2 <HAL_RCC_OscConfig+0x3a2>
  3495. __HAL_RCC_HSI48_ENABLE();
  3496. 80017d4: f8d5 3098 ldr.w r3, [r5, #152] ; 0x98
  3497. 80017d8: f043 0301 orr.w r3, r3, #1
  3498. 80017dc: f8c5 3098 str.w r3, [r5, #152] ; 0x98
  3499. /* Get Start Tick*/
  3500. tickstart = HAL_GetTick();
  3501. 80017e0: f7ff fa7a bl 8000cd8 <HAL_GetTick>
  3502. 80017e4: 4606 mov r6, r0
  3503. /* Wait till HSI48 is ready */
  3504. while(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48RDY) == 0U)
  3505. 80017e6: e005 b.n 80017f4 <HAL_RCC_OscConfig+0x1b4>
  3506. {
  3507. if((HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE)
  3508. 80017e8: f7ff fa76 bl 8000cd8 <HAL_GetTick>
  3509. 80017ec: 1b80 subs r0, r0, r6
  3510. 80017ee: 2802 cmp r0, #2
  3511. 80017f0: f200 80d9 bhi.w 80019a6 <HAL_RCC_OscConfig+0x366>
  3512. while(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48RDY) == 0U)
  3513. 80017f4: f8d5 3098 ldr.w r3, [r5, #152] ; 0x98
  3514. 80017f8: 0798 lsls r0, r3, #30
  3515. 80017fa: d5f5 bpl.n 80017e8 <HAL_RCC_OscConfig+0x1a8>
  3516. /*-------------------------------- PLL Configuration -----------------------*/
  3517. /* Check the parameters */
  3518. assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));
  3519. if (RCC_OscInitStruct->PLL.PLLState != RCC_PLL_NONE)
  3520. 80017fc: 69e0 ldr r0, [r4, #28]
  3521. 80017fe: 2800 cmp r0, #0
  3522. 8001800: f000 8083 beq.w 800190a <HAL_RCC_OscConfig+0x2ca>
  3523. {
  3524. /* Check if the PLL is used as system clock or not */
  3525. if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL)
  3526. 8001804: 4d43 ldr r5, [pc, #268] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3527. 8001806: 68ab ldr r3, [r5, #8]
  3528. 8001808: f003 030c and.w r3, r3, #12
  3529. 800180c: 2b0c cmp r3, #12
  3530. 800180e: f000 812a beq.w 8001a66 <HAL_RCC_OscConfig+0x426>
  3531. assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP));
  3532. assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ));
  3533. assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR));
  3534. /* Disable the main PLL. */
  3535. __HAL_RCC_PLL_DISABLE();
  3536. 8001812: 682b ldr r3, [r5, #0]
  3537. if (RCC_OscInitStruct->PLL.PLLState == RCC_PLL_ON)
  3538. 8001814: 2802 cmp r0, #2
  3539. __HAL_RCC_PLL_DISABLE();
  3540. 8001816: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000
  3541. 800181a: 602b str r3, [r5, #0]
  3542. if (RCC_OscInitStruct->PLL.PLLState == RCC_PLL_ON)
  3543. 800181c: d03a beq.n 8001894 <HAL_RCC_OscConfig+0x254>
  3544. {
  3545. /* Disable the main PLL. */
  3546. __HAL_RCC_PLL_DISABLE();
  3547. /* Get Start Tick*/
  3548. tickstart = HAL_GetTick();
  3549. 800181e: f7ff fa5b bl 8000cd8 <HAL_GetTick>
  3550. 8001822: 4604 mov r4, r0
  3551. /* Wait till PLL is disabled */
  3552. while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U)
  3553. 8001824: e005 b.n 8001832 <HAL_RCC_OscConfig+0x1f2>
  3554. {
  3555. if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
  3556. 8001826: f7ff fa57 bl 8000cd8 <HAL_GetTick>
  3557. 800182a: 1b00 subs r0, r0, r4
  3558. 800182c: 2802 cmp r0, #2
  3559. 800182e: f200 80ba bhi.w 80019a6 <HAL_RCC_OscConfig+0x366>
  3560. while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U)
  3561. 8001832: 682b ldr r3, [r5, #0]
  3562. 8001834: f013 7300 ands.w r3, r3, #33554432 ; 0x2000000
  3563. 8001838: d1f5 bne.n 8001826 <HAL_RCC_OscConfig+0x1e6>
  3564. return HAL_TIMEOUT;
  3565. }
  3566. }
  3567. /* Unselect PLL clock source and disable outputs to save power */
  3568. RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLSRC | RCC_PLL_SYSCLK | RCC_PLL_48M1CLK | RCC_PLL_ADCCLK);
  3569. 800183a: 68e9 ldr r1, [r5, #12]
  3570. 800183c: 4a37 ldr r2, [pc, #220] ; (800191c <HAL_RCC_OscConfig+0x2dc>)
  3571. 800183e: 400a ands r2, r1
  3572. }
  3573. }
  3574. }
  3575. }
  3576. return HAL_OK;
  3577. 8001840: 4618 mov r0, r3
  3578. RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLSRC | RCC_PLL_SYSCLK | RCC_PLL_48M1CLK | RCC_PLL_ADCCLK);
  3579. 8001842: 60ea str r2, [r5, #12]
  3580. 8001844: e062 b.n 800190c <HAL_RCC_OscConfig+0x2cc>
  3581. __HAL_RCC_LSI_DISABLE();
  3582. 8001846: f8d5 3094 ldr.w r3, [r5, #148] ; 0x94
  3583. 800184a: f023 0301 bic.w r3, r3, #1
  3584. 800184e: f8c5 3094 str.w r3, [r5, #148] ; 0x94
  3585. tickstart = HAL_GetTick();
  3586. 8001852: f7ff fa41 bl 8000cd8 <HAL_GetTick>
  3587. 8001856: 4606 mov r6, r0
  3588. while(READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U)
  3589. 8001858: e005 b.n 8001866 <HAL_RCC_OscConfig+0x226>
  3590. if((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
  3591. 800185a: f7ff fa3d bl 8000cd8 <HAL_GetTick>
  3592. 800185e: 1b80 subs r0, r0, r6
  3593. 8001860: 2802 cmp r0, #2
  3594. 8001862: f200 80a0 bhi.w 80019a6 <HAL_RCC_OscConfig+0x366>
  3595. while(READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U)
  3596. 8001866: f8d5 3094 ldr.w r3, [r5, #148] ; 0x94
  3597. 800186a: 079f lsls r7, r3, #30
  3598. 800186c: d4f5 bmi.n 800185a <HAL_RCC_OscConfig+0x21a>
  3599. 800186e: e765 b.n 800173c <HAL_RCC_OscConfig+0xfc>
  3600. temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE();
  3601. 8001870: f001 0103 and.w r1, r1, #3
  3602. if (((temp_sysclksrc == RCC_CFGR_SWS_PLL) && (temp_pllckcfg == RCC_PLLSOURCE_HSE)) || (temp_sysclksrc == RCC_CFGR_SWS_HSE))
  3603. 8001874: 2903 cmp r1, #3
  3604. 8001876: f47f aef8 bne.w 800166a <HAL_RCC_OscConfig+0x2a>
  3605. if ((READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
  3606. 800187a: 4a26 ldr r2, [pc, #152] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3607. 800187c: 6812 ldr r2, [r2, #0]
  3608. 800187e: 0392 lsls r2, r2, #14
  3609. 8001880: f57f af16 bpl.w 80016b0 <HAL_RCC_OscConfig+0x70>
  3610. 8001884: 6862 ldr r2, [r4, #4]
  3611. 8001886: 2a00 cmp r2, #0
  3612. 8001888: f47f af12 bne.w 80016b0 <HAL_RCC_OscConfig+0x70>
  3613. return HAL_ERROR;
  3614. 800188c: 2001 movs r0, #1
  3615. }
  3616. 800188e: b002 add sp, #8
  3617. 8001890: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
  3618. tickstart = HAL_GetTick();
  3619. 8001894: f7ff fa20 bl 8000cd8 <HAL_GetTick>
  3620. 8001898: 4606 mov r6, r0
  3621. while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U)
  3622. 800189a: e004 b.n 80018a6 <HAL_RCC_OscConfig+0x266>
  3623. if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
  3624. 800189c: f7ff fa1c bl 8000cd8 <HAL_GetTick>
  3625. 80018a0: 1b80 subs r0, r0, r6
  3626. 80018a2: 2802 cmp r0, #2
  3627. 80018a4: d87f bhi.n 80019a6 <HAL_RCC_OscConfig+0x366>
  3628. while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U)
  3629. 80018a6: 682b ldr r3, [r5, #0]
  3630. 80018a8: 019a lsls r2, r3, #6
  3631. 80018aa: d4f7 bmi.n 800189c <HAL_RCC_OscConfig+0x25c>
  3632. __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
  3633. 80018ac: 68e9 ldr r1, [r5, #12]
  3634. 80018ae: 4b1c ldr r3, [pc, #112] ; (8001920 <HAL_RCC_OscConfig+0x2e0>)
  3635. 80018b0: 6a22 ldr r2, [r4, #32]
  3636. 80018b2: 6a60 ldr r0, [r4, #36] ; 0x24
  3637. while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U)
  3638. 80018b4: 4e17 ldr r6, [pc, #92] ; (8001914 <HAL_RCC_OscConfig+0x2d4>)
  3639. __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
  3640. 80018b6: 400b ands r3, r1
  3641. 80018b8: 4313 orrs r3, r2
  3642. 80018ba: e9d4 120a ldrd r1, r2, [r4, #40] ; 0x28
  3643. 80018be: ea43 2301 orr.w r3, r3, r1, lsl #8
  3644. 80018c2: ea43 63c2 orr.w r3, r3, r2, lsl #27
  3645. 80018c6: e9d4 120c ldrd r1, r2, [r4, #48] ; 0x30
  3646. 80018ca: 3801 subs r0, #1
  3647. 80018cc: 0849 lsrs r1, r1, #1
  3648. 80018ce: ea43 1300 orr.w r3, r3, r0, lsl #4
  3649. 80018d2: 3901 subs r1, #1
  3650. 80018d4: 0852 lsrs r2, r2, #1
  3651. 80018d6: ea43 5341 orr.w r3, r3, r1, lsl #21
  3652. 80018da: 3a01 subs r2, #1
  3653. 80018dc: ea43 6342 orr.w r3, r3, r2, lsl #25
  3654. 80018e0: 60eb str r3, [r5, #12]
  3655. __HAL_RCC_PLL_ENABLE();
  3656. 80018e2: 682b ldr r3, [r5, #0]
  3657. 80018e4: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000
  3658. 80018e8: 602b str r3, [r5, #0]
  3659. __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_SYSCLK);
  3660. 80018ea: 68eb ldr r3, [r5, #12]
  3661. 80018ec: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000
  3662. 80018f0: 60eb str r3, [r5, #12]
  3663. tickstart = HAL_GetTick();
  3664. 80018f2: f7ff f9f1 bl 8000cd8 <HAL_GetTick>
  3665. 80018f6: 4604 mov r4, r0
  3666. while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U)
  3667. 80018f8: e004 b.n 8001904 <HAL_RCC_OscConfig+0x2c4>
  3668. if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
  3669. 80018fa: f7ff f9ed bl 8000cd8 <HAL_GetTick>
  3670. 80018fe: 1b00 subs r0, r0, r4
  3671. 8001900: 2802 cmp r0, #2
  3672. 8001902: d850 bhi.n 80019a6 <HAL_RCC_OscConfig+0x366>
  3673. while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U)
  3674. 8001904: 6833 ldr r3, [r6, #0]
  3675. 8001906: 019b lsls r3, r3, #6
  3676. 8001908: d5f7 bpl.n 80018fa <HAL_RCC_OscConfig+0x2ba>
  3677. return HAL_OK;
  3678. 800190a: 2000 movs r0, #0
  3679. }
  3680. 800190c: b002 add sp, #8
  3681. 800190e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
  3682. 8001912: bf00 nop
  3683. 8001914: 40021000 .word 0x40021000
  3684. 8001918: 40007000 .word 0x40007000
  3685. 800191c: feeefffc .word 0xfeeefffc
  3686. 8001920: 019f800c .word 0x019f800c
  3687. temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE();
  3688. 8001924: f002 0203 and.w r2, r2, #3
  3689. if (((temp_sysclksrc == RCC_CFGR_SWS_PLL) && (temp_pllckcfg == RCC_PLLSOURCE_HSI)) || (temp_sysclksrc == RCC_CFGR_SWS_HSI))
  3690. 8001928: 2a02 cmp r2, #2
  3691. 800192a: f47f aece bne.w 80016ca <HAL_RCC_OscConfig+0x8a>
  3692. if ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF))
  3693. 800192e: 4b68 ldr r3, [pc, #416] ; (8001ad0 <HAL_RCC_OscConfig+0x490>)
  3694. 8001930: 681b ldr r3, [r3, #0]
  3695. 8001932: 055d lsls r5, r3, #21
  3696. 8001934: d502 bpl.n 800193c <HAL_RCC_OscConfig+0x2fc>
  3697. 8001936: 68e3 ldr r3, [r4, #12]
  3698. 8001938: 2b00 cmp r3, #0
  3699. 800193a: d0a7 beq.n 800188c <HAL_RCC_OscConfig+0x24c>
  3700. __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
  3701. 800193c: 4a64 ldr r2, [pc, #400] ; (8001ad0 <HAL_RCC_OscConfig+0x490>)
  3702. 800193e: 6920 ldr r0, [r4, #16]
  3703. 8001940: 6853 ldr r3, [r2, #4]
  3704. if (HAL_InitTick(uwTickPrio) != HAL_OK)
  3705. 8001942: 4964 ldr r1, [pc, #400] ; (8001ad4 <HAL_RCC_OscConfig+0x494>)
  3706. __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
  3707. 8001944: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000
  3708. 8001948: ea43 6300 orr.w r3, r3, r0, lsl #24
  3709. 800194c: 6053 str r3, [r2, #4]
  3710. if (HAL_InitTick(uwTickPrio) != HAL_OK)
  3711. 800194e: 6808 ldr r0, [r1, #0]
  3712. 8001950: f7ff f980 bl 8000c54 <HAL_InitTick>
  3713. 8001954: 2800 cmp r0, #0
  3714. 8001956: d199 bne.n 800188c <HAL_RCC_OscConfig+0x24c>
  3715. if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
  3716. 8001958: 6823 ldr r3, [r4, #0]
  3717. 800195a: 071a lsls r2, r3, #28
  3718. 800195c: f57f aeef bpl.w 800173e <HAL_RCC_OscConfig+0xfe>
  3719. 8001960: e6d3 b.n 800170a <HAL_RCC_OscConfig+0xca>
  3720. __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
  3721. 8001962: 4a5b ldr r2, [pc, #364] ; (8001ad0 <HAL_RCC_OscConfig+0x490>)
  3722. 8001964: 6813 ldr r3, [r2, #0]
  3723. 8001966: f443 3380 orr.w r3, r3, #65536 ; 0x10000
  3724. 800196a: 6013 str r3, [r2, #0]
  3725. tickstart = HAL_GetTick();
  3726. 800196c: f7ff f9b4 bl 8000cd8 <HAL_GetTick>
  3727. while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U)
  3728. 8001970: 4e57 ldr r6, [pc, #348] ; (8001ad0 <HAL_RCC_OscConfig+0x490>)
  3729. tickstart = HAL_GetTick();
  3730. 8001972: 4605 mov r5, r0
  3731. while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U)
  3732. 8001974: e004 b.n 8001980 <HAL_RCC_OscConfig+0x340>
  3733. if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
  3734. 8001976: f7ff f9af bl 8000cd8 <HAL_GetTick>
  3735. 800197a: 1b40 subs r0, r0, r5
  3736. 800197c: 2864 cmp r0, #100 ; 0x64
  3737. 800197e: d812 bhi.n 80019a6 <HAL_RCC_OscConfig+0x366>
  3738. while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U)
  3739. 8001980: 6833 ldr r3, [r6, #0]
  3740. 8001982: 039b lsls r3, r3, #14
  3741. 8001984: d5f7 bpl.n 8001976 <HAL_RCC_OscConfig+0x336>
  3742. 8001986: e692 b.n 80016ae <HAL_RCC_OscConfig+0x6e>
  3743. __HAL_RCC_HSI_DISABLE();
  3744. 8001988: 682b ldr r3, [r5, #0]
  3745. 800198a: f423 7380 bic.w r3, r3, #256 ; 0x100
  3746. 800198e: 602b str r3, [r5, #0]
  3747. tickstart = HAL_GetTick();
  3748. 8001990: f7ff f9a2 bl 8000cd8 <HAL_GetTick>
  3749. 8001994: 4606 mov r6, r0
  3750. while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U)
  3751. 8001996: 682b ldr r3, [r5, #0]
  3752. 8001998: 0559 lsls r1, r3, #21
  3753. 800199a: d5dd bpl.n 8001958 <HAL_RCC_OscConfig+0x318>
  3754. if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
  3755. 800199c: f7ff f99c bl 8000cd8 <HAL_GetTick>
  3756. 80019a0: 1b80 subs r0, r0, r6
  3757. 80019a2: 2802 cmp r0, #2
  3758. 80019a4: d9f7 bls.n 8001996 <HAL_RCC_OscConfig+0x356>
  3759. return HAL_TIMEOUT;
  3760. 80019a6: 2003 movs r0, #3
  3761. }
  3762. 80019a8: b002 add sp, #8
  3763. 80019aa: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
  3764. FlagStatus pwrclkchanged = RESET;
  3765. 80019ae: 2500 movs r5, #0
  3766. 80019b0: e6d6 b.n 8001760 <HAL_RCC_OscConfig+0x120>
  3767. __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
  3768. 80019b2: 4a47 ldr r2, [pc, #284] ; (8001ad0 <HAL_RCC_OscConfig+0x490>)
  3769. 80019b4: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90
  3770. 80019b8: f043 0301 orr.w r3, r3, #1
  3771. 80019bc: f8c2 3090 str.w r3, [r2, #144] ; 0x90
  3772. tickstart = HAL_GetTick();
  3773. 80019c0: f7ff f98a bl 8000cd8 <HAL_GetTick>
  3774. while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U)
  3775. 80019c4: 4f42 ldr r7, [pc, #264] ; (8001ad0 <HAL_RCC_OscConfig+0x490>)
  3776. tickstart = HAL_GetTick();
  3777. 80019c6: 4606 mov r6, r0
  3778. if((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
  3779. 80019c8: f241 3888 movw r8, #5000 ; 0x1388
  3780. while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U)
  3781. 80019cc: e004 b.n 80019d8 <HAL_RCC_OscConfig+0x398>
  3782. if((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
  3783. 80019ce: f7ff f983 bl 8000cd8 <HAL_GetTick>
  3784. 80019d2: 1b80 subs r0, r0, r6
  3785. 80019d4: 4540 cmp r0, r8
  3786. 80019d6: d8e6 bhi.n 80019a6 <HAL_RCC_OscConfig+0x366>
  3787. while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U)
  3788. 80019d8: f8d7 3090 ldr.w r3, [r7, #144] ; 0x90
  3789. 80019dc: 079a lsls r2, r3, #30
  3790. 80019de: d5f6 bpl.n 80019ce <HAL_RCC_OscConfig+0x38e>
  3791. 80019e0: e6ea b.n 80017b8 <HAL_RCC_OscConfig+0x178>
  3792. __HAL_RCC_HSI48_DISABLE();
  3793. 80019e2: f8d5 3098 ldr.w r3, [r5, #152] ; 0x98
  3794. 80019e6: f023 0301 bic.w r3, r3, #1
  3795. 80019ea: f8c5 3098 str.w r3, [r5, #152] ; 0x98
  3796. tickstart = HAL_GetTick();
  3797. 80019ee: f7ff f973 bl 8000cd8 <HAL_GetTick>
  3798. 80019f2: 4606 mov r6, r0
  3799. while(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48RDY) != 0U)
  3800. 80019f4: e004 b.n 8001a00 <HAL_RCC_OscConfig+0x3c0>
  3801. if((HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE)
  3802. 80019f6: f7ff f96f bl 8000cd8 <HAL_GetTick>
  3803. 80019fa: 1b80 subs r0, r0, r6
  3804. 80019fc: 2802 cmp r0, #2
  3805. 80019fe: d8d2 bhi.n 80019a6 <HAL_RCC_OscConfig+0x366>
  3806. while(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48RDY) != 0U)
  3807. 8001a00: f8d5 3098 ldr.w r3, [r5, #152] ; 0x98
  3808. 8001a04: 0799 lsls r1, r3, #30
  3809. 8001a06: d4f6 bmi.n 80019f6 <HAL_RCC_OscConfig+0x3b6>
  3810. 8001a08: e6f8 b.n 80017fc <HAL_RCC_OscConfig+0x1bc>
  3811. SET_BIT(PWR->CR1, PWR_CR1_DBP);
  3812. 8001a0a: 6833 ldr r3, [r6, #0]
  3813. 8001a0c: f443 7380 orr.w r3, r3, #256 ; 0x100
  3814. 8001a10: 6033 str r3, [r6, #0]
  3815. tickstart = HAL_GetTick();
  3816. 8001a12: f7ff f961 bl 8000cd8 <HAL_GetTick>
  3817. 8001a16: 4607 mov r7, r0
  3818. while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
  3819. 8001a18: 6833 ldr r3, [r6, #0]
  3820. 8001a1a: 05d9 lsls r1, r3, #23
  3821. 8001a1c: f53f aea5 bmi.w 800176a <HAL_RCC_OscConfig+0x12a>
  3822. if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
  3823. 8001a20: f7ff f95a bl 8000cd8 <HAL_GetTick>
  3824. 8001a24: 1bc0 subs r0, r0, r7
  3825. 8001a26: 2802 cmp r0, #2
  3826. 8001a28: d9f6 bls.n 8001a18 <HAL_RCC_OscConfig+0x3d8>
  3827. 8001a2a: e7bc b.n 80019a6 <HAL_RCC_OscConfig+0x366>
  3828. __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
  3829. 8001a2c: f103 4380 add.w r3, r3, #1073741824 ; 0x40000000
  3830. 8001a30: f5a3 333c sub.w r3, r3, #192512 ; 0x2f000
  3831. 8001a34: 681a ldr r2, [r3, #0]
  3832. 8001a36: f442 2280 orr.w r2, r2, #262144 ; 0x40000
  3833. 8001a3a: 601a str r2, [r3, #0]
  3834. 8001a3c: 681a ldr r2, [r3, #0]
  3835. 8001a3e: f442 3280 orr.w r2, r2, #65536 ; 0x10000
  3836. 8001a42: 601a str r2, [r3, #0]
  3837. if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
  3838. 8001a44: e792 b.n 800196c <HAL_RCC_OscConfig+0x32c>
  3839. return HAL_ERROR;
  3840. 8001a46: 2001 movs r0, #1
  3841. }
  3842. 8001a48: 4770 bx lr
  3843. __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
  3844. 8001a4a: 4b21 ldr r3, [pc, #132] ; (8001ad0 <HAL_RCC_OscConfig+0x490>)
  3845. 8001a4c: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90
  3846. 8001a50: f042 0204 orr.w r2, r2, #4
  3847. 8001a54: f8c3 2090 str.w r2, [r3, #144] ; 0x90
  3848. 8001a58: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90
  3849. 8001a5c: f042 0201 orr.w r2, r2, #1
  3850. 8001a60: f8c3 2090 str.w r2, [r3, #144] ; 0x90
  3851. if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF)
  3852. 8001a64: e7ac b.n 80019c0 <HAL_RCC_OscConfig+0x380>
  3853. if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF)
  3854. 8001a66: 2801 cmp r0, #1
  3855. 8001a68: f43f af50 beq.w 800190c <HAL_RCC_OscConfig+0x2cc>
  3856. temp_pllckcfg = RCC->PLLCFGR;
  3857. 8001a6c: 68eb ldr r3, [r5, #12]
  3858. if((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
  3859. 8001a6e: 6a22 ldr r2, [r4, #32]
  3860. 8001a70: f003 0103 and.w r1, r3, #3
  3861. 8001a74: 4291 cmp r1, r2
  3862. 8001a76: f47f af09 bne.w 800188c <HAL_RCC_OscConfig+0x24c>
  3863. (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != (((RCC_OscInitStruct->PLL.PLLM) - 1U) << RCC_PLLCFGR_PLLM_Pos)) ||
  3864. 8001a7a: 6a61 ldr r1, [r4, #36] ; 0x24
  3865. 8001a7c: f003 02f0 and.w r2, r3, #240 ; 0xf0
  3866. 8001a80: 3901 subs r1, #1
  3867. if((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
  3868. 8001a82: ebb2 1f01 cmp.w r2, r1, lsl #4
  3869. 8001a86: f47f af01 bne.w 800188c <HAL_RCC_OscConfig+0x24c>
  3870. (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != ((RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos)) ||
  3871. 8001a8a: 6aa1 ldr r1, [r4, #40] ; 0x28
  3872. 8001a8c: f403 42fe and.w r2, r3, #32512 ; 0x7f00
  3873. (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != (((RCC_OscInitStruct->PLL.PLLM) - 1U) << RCC_PLLCFGR_PLLM_Pos)) ||
  3874. 8001a90: ebb2 2f01 cmp.w r2, r1, lsl #8
  3875. 8001a94: f47f aefa bne.w 800188c <HAL_RCC_OscConfig+0x24c>
  3876. (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLPDIV) != ((RCC_OscInitStruct->PLL.PLLP) << RCC_PLLCFGR_PLLPDIV_Pos)) ||
  3877. 8001a98: 6ae1 ldr r1, [r4, #44] ; 0x2c
  3878. 8001a9a: f003 4278 and.w r2, r3, #4160749568 ; 0xf8000000
  3879. (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != ((RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos)) ||
  3880. 8001a9e: ebb2 6fc1 cmp.w r2, r1, lsl #27
  3881. 8001aa2: f47f aef3 bne.w 800188c <HAL_RCC_OscConfig+0x24c>
  3882. (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLQ) != ((((RCC_OscInitStruct->PLL.PLLQ) >> 1U) - 1U) << RCC_PLLCFGR_PLLQ_Pos)) ||
  3883. 8001aa6: 6b22 ldr r2, [r4, #48] ; 0x30
  3884. 8001aa8: 0852 lsrs r2, r2, #1
  3885. 8001aaa: f403 01c0 and.w r1, r3, #6291456 ; 0x600000
  3886. 8001aae: 3a01 subs r2, #1
  3887. (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLPDIV) != ((RCC_OscInitStruct->PLL.PLLP) << RCC_PLLCFGR_PLLPDIV_Pos)) ||
  3888. 8001ab0: ebb1 5f42 cmp.w r1, r2, lsl #21
  3889. 8001ab4: f47f aeea bne.w 800188c <HAL_RCC_OscConfig+0x24c>
  3890. (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLR) != ((((RCC_OscInitStruct->PLL.PLLR) >> 1U) - 1U) << RCC_PLLCFGR_PLLR_Pos)))
  3891. 8001ab8: 6b62 ldr r2, [r4, #52] ; 0x34
  3892. 8001aba: 0852 lsrs r2, r2, #1
  3893. 8001abc: f003 63c0 and.w r3, r3, #100663296 ; 0x6000000
  3894. 8001ac0: 3a01 subs r2, #1
  3895. (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLQ) != ((((RCC_OscInitStruct->PLL.PLLQ) >> 1U) - 1U) << RCC_PLLCFGR_PLLQ_Pos)) ||
  3896. 8001ac2: ebb3 6f42 cmp.w r3, r2, lsl #25
  3897. return HAL_ERROR;
  3898. 8001ac6: bf14 ite ne
  3899. 8001ac8: 2001 movne r0, #1
  3900. 8001aca: 2000 moveq r0, #0
  3901. 8001acc: e71e b.n 800190c <HAL_RCC_OscConfig+0x2cc>
  3902. 8001ace: bf00 nop
  3903. 8001ad0: 40021000 .word 0x40021000
  3904. 8001ad4: 20000008 .word 0x20000008
  3905. 08001ad8 <HAL_RCC_GetSysClockFreq>:
  3906. uint32_t HAL_RCC_GetSysClockFreq(void)
  3907. {
  3908. uint32_t pllvco, pllsource, pllr, pllm;
  3909. uint32_t sysclockfreq;
  3910. if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI)
  3911. 8001ad8: 4b18 ldr r3, [pc, #96] ; (8001b3c <HAL_RCC_GetSysClockFreq+0x64>)
  3912. 8001ada: 689a ldr r2, [r3, #8]
  3913. 8001adc: f002 020c and.w r2, r2, #12
  3914. 8001ae0: 2a04 cmp r2, #4
  3915. 8001ae2: d027 beq.n 8001b34 <HAL_RCC_GetSysClockFreq+0x5c>
  3916. {
  3917. /* HSI used as system clock source */
  3918. sysclockfreq = HSI_VALUE;
  3919. }
  3920. else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE)
  3921. 8001ae4: 689a ldr r2, [r3, #8]
  3922. 8001ae6: f002 020c and.w r2, r2, #12
  3923. 8001aea: 2a08 cmp r2, #8
  3924. 8001aec: d024 beq.n 8001b38 <HAL_RCC_GetSysClockFreq+0x60>
  3925. {
  3926. /* HSE used as system clock source */
  3927. sysclockfreq = HSE_VALUE;
  3928. }
  3929. else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL)
  3930. 8001aee: 689a ldr r2, [r3, #8]
  3931. 8001af0: f002 020c and.w r2, r2, #12
  3932. 8001af4: 2a0c cmp r2, #12
  3933. 8001af6: d001 beq.n 8001afc <HAL_RCC_GetSysClockFreq+0x24>
  3934. pllr = ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U ) * 2U;
  3935. sysclockfreq = pllvco/pllr;
  3936. }
  3937. else
  3938. {
  3939. sysclockfreq = 0U;
  3940. 8001af8: 2000 movs r0, #0
  3941. }
  3942. return sysclockfreq;
  3943. }
  3944. 8001afa: 4770 bx lr
  3945. pllsource = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC);
  3946. 8001afc: 68d9 ldr r1, [r3, #12]
  3947. pllm = (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ;
  3948. 8001afe: 68d8 ldr r0, [r3, #12]
  3949. pllsource = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC);
  3950. 8001b00: f001 0103 and.w r1, r1, #3
  3951. switch (pllsource)
  3952. 8001b04: 2903 cmp r1, #3
  3953. pllm = (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ;
  3954. 8001b06: f3c0 1003 ubfx r0, r0, #4, #4
  3955. 8001b0a: f100 0201 add.w r2, r0, #1
  3956. pllvco = (HSI_VALUE / pllm) * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
  3957. 8001b0e: 68d8 ldr r0, [r3, #12]
  3958. pllvco = (HSE_VALUE / pllm) * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
  3959. 8001b10: bf0c ite eq
  3960. 8001b12: 4b0b ldreq r3, [pc, #44] ; (8001b40 <HAL_RCC_GetSysClockFreq+0x68>)
  3961. pllvco = (HSI_VALUE / pllm) * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
  3962. 8001b14: 4b0b ldrne r3, [pc, #44] ; (8001b44 <HAL_RCC_GetSysClockFreq+0x6c>)
  3963. 8001b16: fbb3 f2f2 udiv r2, r3, r2
  3964. pllr = ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U ) * 2U;
  3965. 8001b1a: 4b08 ldr r3, [pc, #32] ; (8001b3c <HAL_RCC_GetSysClockFreq+0x64>)
  3966. 8001b1c: 68db ldr r3, [r3, #12]
  3967. 8001b1e: f3c3 6341 ubfx r3, r3, #25, #2
  3968. pllvco = (HSI_VALUE / pllm) * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
  3969. 8001b22: f3c0 2006 ubfx r0, r0, #8, #7
  3970. pllr = ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U ) * 2U;
  3971. 8001b26: 3301 adds r3, #1
  3972. pllvco = (HSI_VALUE / pllm) * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
  3973. 8001b28: fb02 f000 mul.w r0, r2, r0
  3974. pllr = ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U ) * 2U;
  3975. 8001b2c: 005b lsls r3, r3, #1
  3976. sysclockfreq = pllvco/pllr;
  3977. 8001b2e: fbb0 f0f3 udiv r0, r0, r3
  3978. return sysclockfreq;
  3979. 8001b32: 4770 bx lr
  3980. sysclockfreq = HSI_VALUE;
  3981. 8001b34: 4803 ldr r0, [pc, #12] ; (8001b44 <HAL_RCC_GetSysClockFreq+0x6c>)
  3982. 8001b36: 4770 bx lr
  3983. sysclockfreq = HSE_VALUE;
  3984. 8001b38: 4801 ldr r0, [pc, #4] ; (8001b40 <HAL_RCC_GetSysClockFreq+0x68>)
  3985. 8001b3a: 4770 bx lr
  3986. 8001b3c: 40021000 .word 0x40021000
  3987. 8001b40: 007a1200 .word 0x007a1200
  3988. 8001b44: 00f42400 .word 0x00f42400
  3989. 08001b48 <HAL_RCC_ClockConfig>:
  3990. if (RCC_ClkInitStruct == NULL)
  3991. 8001b48: 2800 cmp r0, #0
  3992. 8001b4a: f000 80ee beq.w 8001d2a <HAL_RCC_ClockConfig+0x1e2>
  3993. if (FLatency > __HAL_FLASH_GET_LATENCY())
  3994. 8001b4e: 4a7f ldr r2, [pc, #508] ; (8001d4c <HAL_RCC_ClockConfig+0x204>)
  3995. {
  3996. 8001b50: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
  3997. if (FLatency > __HAL_FLASH_GET_LATENCY())
  3998. 8001b54: 6813 ldr r3, [r2, #0]
  3999. 8001b56: f003 030f and.w r3, r3, #15
  4000. 8001b5a: 428b cmp r3, r1
  4001. 8001b5c: 460d mov r5, r1
  4002. 8001b5e: 4604 mov r4, r0
  4003. 8001b60: d20c bcs.n 8001b7c <HAL_RCC_ClockConfig+0x34>
  4004. __HAL_FLASH_SET_LATENCY(FLatency);
  4005. 8001b62: 6813 ldr r3, [r2, #0]
  4006. 8001b64: f023 030f bic.w r3, r3, #15
  4007. 8001b68: 430b orrs r3, r1
  4008. 8001b6a: 6013 str r3, [r2, #0]
  4009. if (__HAL_FLASH_GET_LATENCY() != FLatency)
  4010. 8001b6c: 6813 ldr r3, [r2, #0]
  4011. 8001b6e: f003 030f and.w r3, r3, #15
  4012. 8001b72: 428b cmp r3, r1
  4013. 8001b74: d002 beq.n 8001b7c <HAL_RCC_ClockConfig+0x34>
  4014. return HAL_ERROR;
  4015. 8001b76: 2001 movs r0, #1
  4016. }
  4017. 8001b78: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
  4018. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
  4019. 8001b7c: 6823 ldr r3, [r4, #0]
  4020. 8001b7e: 07df lsls r7, r3, #31
  4021. 8001b80: d563 bpl.n 8001c4a <HAL_RCC_ClockConfig+0x102>
  4022. if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
  4023. 8001b82: 6862 ldr r2, [r4, #4]
  4024. 8001b84: 2a03 cmp r2, #3
  4025. 8001b86: f000 809a beq.w 8001cbe <HAL_RCC_ClockConfig+0x176>
  4026. if(READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U)
  4027. 8001b8a: 4b71 ldr r3, [pc, #452] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4028. if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
  4029. 8001b8c: 2a02 cmp r2, #2
  4030. if(READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U)
  4031. 8001b8e: 681b ldr r3, [r3, #0]
  4032. if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
  4033. 8001b90: f000 8091 beq.w 8001cb6 <HAL_RCC_ClockConfig+0x16e>
  4034. if(READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U)
  4035. 8001b94: 055b lsls r3, r3, #21
  4036. 8001b96: d5ee bpl.n 8001b76 <HAL_RCC_ClockConfig+0x2e>
  4037. pllfreq = HAL_RCC_GetSysClockFreq();
  4038. 8001b98: f7ff ff9e bl 8001ad8 <HAL_RCC_GetSysClockFreq>
  4039. if(pllfreq > 80000000U)
  4040. 8001b9c: 4b6d ldr r3, [pc, #436] ; (8001d54 <HAL_RCC_ClockConfig+0x20c>)
  4041. 8001b9e: 4298 cmp r0, r3
  4042. 8001ba0: f200 80c5 bhi.w 8001d2e <HAL_RCC_ClockConfig+0x1e6>
  4043. MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_ClkInitStruct->SYSCLKSource);
  4044. 8001ba4: 6862 ldr r2, [r4, #4]
  4045. uint32_t hpre = RCC_SYSCLK_DIV1;
  4046. 8001ba6: f04f 0900 mov.w r9, #0
  4047. MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_ClkInitStruct->SYSCLKSource);
  4048. 8001baa: 4e69 ldr r6, [pc, #420] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4049. 8001bac: 68b3 ldr r3, [r6, #8]
  4050. 8001bae: f023 0303 bic.w r3, r3, #3
  4051. 8001bb2: 431a orrs r2, r3
  4052. 8001bb4: 60b2 str r2, [r6, #8]
  4053. tickstart = HAL_GetTick();
  4054. 8001bb6: f7ff f88f bl 8000cd8 <HAL_GetTick>
  4055. if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
  4056. 8001bba: f241 3888 movw r8, #5000 ; 0x1388
  4057. tickstart = HAL_GetTick();
  4058. 8001bbe: 4607 mov r7, r0
  4059. while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
  4060. 8001bc0: e004 b.n 8001bcc <HAL_RCC_ClockConfig+0x84>
  4061. if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
  4062. 8001bc2: f7ff f889 bl 8000cd8 <HAL_GetTick>
  4063. 8001bc6: 1bc0 subs r0, r0, r7
  4064. 8001bc8: 4540 cmp r0, r8
  4065. 8001bca: d871 bhi.n 8001cb0 <HAL_RCC_ClockConfig+0x168>
  4066. while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
  4067. 8001bcc: 68b3 ldr r3, [r6, #8]
  4068. 8001bce: 6862 ldr r2, [r4, #4]
  4069. 8001bd0: f003 030c and.w r3, r3, #12
  4070. 8001bd4: ebb3 0f82 cmp.w r3, r2, lsl #2
  4071. 8001bd8: d1f3 bne.n 8001bc2 <HAL_RCC_ClockConfig+0x7a>
  4072. if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
  4073. 8001bda: 6823 ldr r3, [r4, #0]
  4074. 8001bdc: 079f lsls r7, r3, #30
  4075. 8001bde: d436 bmi.n 8001c4e <HAL_RCC_ClockConfig+0x106>
  4076. if(hpre == RCC_SYSCLK_DIV2)
  4077. 8001be0: f1b9 0f80 cmp.w r9, #128 ; 0x80
  4078. 8001be4: d103 bne.n 8001bee <HAL_RCC_ClockConfig+0xa6>
  4079. MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_SYSCLK_DIV1);
  4080. 8001be6: 68b3 ldr r3, [r6, #8]
  4081. 8001be8: f023 03f0 bic.w r3, r3, #240 ; 0xf0
  4082. 8001bec: 60b3 str r3, [r6, #8]
  4083. if (FLatency < __HAL_FLASH_GET_LATENCY())
  4084. 8001bee: 4e57 ldr r6, [pc, #348] ; (8001d4c <HAL_RCC_ClockConfig+0x204>)
  4085. 8001bf0: 6833 ldr r3, [r6, #0]
  4086. 8001bf2: f003 030f and.w r3, r3, #15
  4087. 8001bf6: 42ab cmp r3, r5
  4088. 8001bf8: d846 bhi.n 8001c88 <HAL_RCC_ClockConfig+0x140>
  4089. if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
  4090. 8001bfa: 6823 ldr r3, [r4, #0]
  4091. 8001bfc: 075a lsls r2, r3, #29
  4092. 8001bfe: d506 bpl.n 8001c0e <HAL_RCC_ClockConfig+0xc6>
  4093. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
  4094. 8001c00: 4953 ldr r1, [pc, #332] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4095. 8001c02: 68e0 ldr r0, [r4, #12]
  4096. 8001c04: 688a ldr r2, [r1, #8]
  4097. 8001c06: f422 62e0 bic.w r2, r2, #1792 ; 0x700
  4098. 8001c0a: 4302 orrs r2, r0
  4099. 8001c0c: 608a str r2, [r1, #8]
  4100. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
  4101. 8001c0e: 071b lsls r3, r3, #28
  4102. 8001c10: d507 bpl.n 8001c22 <HAL_RCC_ClockConfig+0xda>
  4103. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U));
  4104. 8001c12: 4a4f ldr r2, [pc, #316] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4105. 8001c14: 6921 ldr r1, [r4, #16]
  4106. 8001c16: 6893 ldr r3, [r2, #8]
  4107. 8001c18: f423 5360 bic.w r3, r3, #14336 ; 0x3800
  4108. 8001c1c: ea43 03c1 orr.w r3, r3, r1, lsl #3
  4109. 8001c20: 6093 str r3, [r2, #8]
  4110. SystemCoreClock = HAL_RCC_GetSysClockFreq() >> (AHBPrescTable[READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos] & 0x1FU);
  4111. 8001c22: f7ff ff59 bl 8001ad8 <HAL_RCC_GetSysClockFreq>
  4112. 8001c26: 4a4a ldr r2, [pc, #296] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4113. 8001c28: 4c4b ldr r4, [pc, #300] ; (8001d58 <HAL_RCC_ClockConfig+0x210>)
  4114. 8001c2a: 6892 ldr r2, [r2, #8]
  4115. 8001c2c: 494b ldr r1, [pc, #300] ; (8001d5c <HAL_RCC_ClockConfig+0x214>)
  4116. 8001c2e: f3c2 1203 ubfx r2, r2, #4, #4
  4117. 8001c32: 4603 mov r3, r0
  4118. 8001c34: 5ca2 ldrb r2, [r4, r2]
  4119. return HAL_InitTick(uwTickPrio);
  4120. 8001c36: 484a ldr r0, [pc, #296] ; (8001d60 <HAL_RCC_ClockConfig+0x218>)
  4121. SystemCoreClock = HAL_RCC_GetSysClockFreq() >> (AHBPrescTable[READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos] & 0x1FU);
  4122. 8001c38: f002 021f and.w r2, r2, #31
  4123. 8001c3c: 40d3 lsrs r3, r2
  4124. 8001c3e: 600b str r3, [r1, #0]
  4125. return HAL_InitTick(uwTickPrio);
  4126. 8001c40: 6800 ldr r0, [r0, #0]
  4127. }
  4128. 8001c42: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
  4129. return HAL_InitTick(uwTickPrio);
  4130. 8001c46: f7ff b805 b.w 8000c54 <HAL_InitTick>
  4131. if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
  4132. 8001c4a: 079e lsls r6, r3, #30
  4133. 8001c4c: d5cf bpl.n 8001bee <HAL_RCC_ClockConfig+0xa6>
  4134. if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
  4135. 8001c4e: 0758 lsls r0, r3, #29
  4136. 8001c50: d504 bpl.n 8001c5c <HAL_RCC_ClockConfig+0x114>
  4137. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
  4138. 8001c52: 493f ldr r1, [pc, #252] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4139. 8001c54: 688a ldr r2, [r1, #8]
  4140. 8001c56: f442 62e0 orr.w r2, r2, #1792 ; 0x700
  4141. 8001c5a: 608a str r2, [r1, #8]
  4142. if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
  4143. 8001c5c: 0719 lsls r1, r3, #28
  4144. 8001c5e: d506 bpl.n 8001c6e <HAL_RCC_ClockConfig+0x126>
  4145. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, RCC_HCLK_DIV16);
  4146. 8001c60: 4a3b ldr r2, [pc, #236] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4147. 8001c62: 6893 ldr r3, [r2, #8]
  4148. 8001c64: f423 537c bic.w r3, r3, #16128 ; 0x3f00
  4149. 8001c68: f443 63e0 orr.w r3, r3, #1792 ; 0x700
  4150. 8001c6c: 6093 str r3, [r2, #8]
  4151. MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);
  4152. 8001c6e: 4a38 ldr r2, [pc, #224] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4153. 8001c70: 68a1 ldr r1, [r4, #8]
  4154. 8001c72: 6893 ldr r3, [r2, #8]
  4155. if (FLatency < __HAL_FLASH_GET_LATENCY())
  4156. 8001c74: 4e35 ldr r6, [pc, #212] ; (8001d4c <HAL_RCC_ClockConfig+0x204>)
  4157. MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);
  4158. 8001c76: f023 03f0 bic.w r3, r3, #240 ; 0xf0
  4159. 8001c7a: 430b orrs r3, r1
  4160. 8001c7c: 6093 str r3, [r2, #8]
  4161. if (FLatency < __HAL_FLASH_GET_LATENCY())
  4162. 8001c7e: 6833 ldr r3, [r6, #0]
  4163. 8001c80: f003 030f and.w r3, r3, #15
  4164. 8001c84: 42ab cmp r3, r5
  4165. 8001c86: d9b8 bls.n 8001bfa <HAL_RCC_ClockConfig+0xb2>
  4166. __HAL_FLASH_SET_LATENCY(FLatency);
  4167. 8001c88: 6833 ldr r3, [r6, #0]
  4168. 8001c8a: f023 030f bic.w r3, r3, #15
  4169. 8001c8e: 432b orrs r3, r5
  4170. 8001c90: 6033 str r3, [r6, #0]
  4171. tickstart = HAL_GetTick();
  4172. 8001c92: f7ff f821 bl 8000cd8 <HAL_GetTick>
  4173. if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
  4174. 8001c96: f241 3888 movw r8, #5000 ; 0x1388
  4175. tickstart = HAL_GetTick();
  4176. 8001c9a: 4607 mov r7, r0
  4177. while (__HAL_FLASH_GET_LATENCY() != FLatency)
  4178. 8001c9c: 6833 ldr r3, [r6, #0]
  4179. 8001c9e: f003 030f and.w r3, r3, #15
  4180. 8001ca2: 42ab cmp r3, r5
  4181. 8001ca4: d0a9 beq.n 8001bfa <HAL_RCC_ClockConfig+0xb2>
  4182. if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
  4183. 8001ca6: f7ff f817 bl 8000cd8 <HAL_GetTick>
  4184. 8001caa: 1bc0 subs r0, r0, r7
  4185. 8001cac: 4540 cmp r0, r8
  4186. 8001cae: d9f5 bls.n 8001c9c <HAL_RCC_ClockConfig+0x154>
  4187. return HAL_TIMEOUT;
  4188. 8001cb0: 2003 movs r0, #3
  4189. }
  4190. 8001cb2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
  4191. if(READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U)
  4192. 8001cb6: 039a lsls r2, r3, #14
  4193. 8001cb8: f53f af6e bmi.w 8001b98 <HAL_RCC_ClockConfig+0x50>
  4194. 8001cbc: e75b b.n 8001b76 <HAL_RCC_ClockConfig+0x2e>
  4195. if (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U)
  4196. 8001cbe: 4924 ldr r1, [pc, #144] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4197. 8001cc0: 6808 ldr r0, [r1, #0]
  4198. 8001cc2: 0180 lsls r0, r0, #6
  4199. 8001cc4: f57f af57 bpl.w 8001b76 <HAL_RCC_ClockConfig+0x2e>
  4200. uint32_t sysclockfreq;
  4201. /* PLL_VCO = (HSE_VALUE or HSI_VALUE/ PLLM) * PLLN
  4202. SYSCLK = PLL_VCO / PLLR
  4203. */
  4204. pllsource = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC);
  4205. 8001cc8: 68ce ldr r6, [r1, #12]
  4206. pllm = (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ;
  4207. 8001cca: 68c8 ldr r0, [r1, #12]
  4208. pllvco = (HSE_VALUE / pllm) * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
  4209. break;
  4210. case RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */
  4211. default:
  4212. pllvco = (HSI_VALUE / pllm) * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
  4213. 8001ccc: 68c9 ldr r1, [r1, #12]
  4214. if(pllfreq > 80000000U)
  4215. 8001cce: 4f21 ldr r7, [pc, #132] ; (8001d54 <HAL_RCC_ClockConfig+0x20c>)
  4216. pllsource = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC);
  4217. 8001cd0: f006 0603 and.w r6, r6, #3
  4218. switch (pllsource)
  4219. 8001cd4: 2e03 cmp r6, #3
  4220. pllm = (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ;
  4221. 8001cd6: f3c0 1003 ubfx r0, r0, #4, #4
  4222. pllvco = (HSE_VALUE / pllm) * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
  4223. 8001cda: bf0c ite eq
  4224. 8001cdc: 4e21 ldreq r6, [pc, #132] ; (8001d64 <HAL_RCC_ClockConfig+0x21c>)
  4225. pllvco = (HSI_VALUE / pllm) * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
  4226. 8001cde: 4e22 ldrne r6, [pc, #136] ; (8001d68 <HAL_RCC_ClockConfig+0x220>)
  4227. pllm = (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ;
  4228. 8001ce0: 3001 adds r0, #1
  4229. pllvco = (HSI_VALUE / pllm) * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
  4230. 8001ce2: fbb6 f0f0 udiv r0, r6, r0
  4231. break;
  4232. }
  4233. pllr = ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U ) * 2U;
  4234. 8001ce6: 4e1a ldr r6, [pc, #104] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4235. pllvco = (HSI_VALUE / pllm) * (READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
  4236. 8001ce8: f3c1 2106 ubfx r1, r1, #8, #7
  4237. 8001cec: fb00 f101 mul.w r1, r0, r1
  4238. pllr = ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U ) * 2U;
  4239. 8001cf0: 68f0 ldr r0, [r6, #12]
  4240. 8001cf2: f3c0 6041 ubfx r0, r0, #25, #2
  4241. 8001cf6: 3001 adds r0, #1
  4242. 8001cf8: 0040 lsls r0, r0, #1
  4243. sysclockfreq = pllvco/pllr;
  4244. 8001cfa: fbb1 f1f0 udiv r1, r1, r0
  4245. if(pllfreq > 80000000U)
  4246. 8001cfe: 42b9 cmp r1, r7
  4247. 8001d00: d920 bls.n 8001d44 <HAL_RCC_ClockConfig+0x1fc>
  4248. if (((READ_BIT(RCC->CFGR, RCC_CFGR_HPRE) == RCC_SYSCLK_DIV1)) ||
  4249. 8001d02: 68b1 ldr r1, [r6, #8]
  4250. 8001d04: f011 0ff0 tst.w r1, #240 ; 0xf0
  4251. 8001d08: d005 beq.n 8001d16 <HAL_RCC_ClockConfig+0x1ce>
  4252. 8001d0a: f013 0902 ands.w r9, r3, #2
  4253. 8001d0e: f43f af4c beq.w 8001baa <HAL_RCC_ClockConfig+0x62>
  4254. (((((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) &&
  4255. 8001d12: 68a3 ldr r3, [r4, #8]
  4256. 8001d14: b9b3 cbnz r3, 8001d44 <HAL_RCC_ClockConfig+0x1fc>
  4257. MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_SYSCLK_DIV2);
  4258. 8001d16: 490e ldr r1, [pc, #56] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4259. 8001d18: 688b ldr r3, [r1, #8]
  4260. 8001d1a: f023 03f0 bic.w r3, r3, #240 ; 0xf0
  4261. 8001d1e: f043 0380 orr.w r3, r3, #128 ; 0x80
  4262. 8001d22: 608b str r3, [r1, #8]
  4263. hpre = RCC_SYSCLK_DIV2;
  4264. 8001d24: f04f 0980 mov.w r9, #128 ; 0x80
  4265. 8001d28: e73f b.n 8001baa <HAL_RCC_ClockConfig+0x62>
  4266. return HAL_ERROR;
  4267. 8001d2a: 2001 movs r0, #1
  4268. }
  4269. 8001d2c: 4770 bx lr
  4270. MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_SYSCLK_DIV2);
  4271. 8001d2e: 4a08 ldr r2, [pc, #32] ; (8001d50 <HAL_RCC_ClockConfig+0x208>)
  4272. 8001d30: 6893 ldr r3, [r2, #8]
  4273. hpre = RCC_SYSCLK_DIV2;
  4274. 8001d32: f04f 0980 mov.w r9, #128 ; 0x80
  4275. MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_SYSCLK_DIV2);
  4276. 8001d36: f023 03f0 bic.w r3, r3, #240 ; 0xf0
  4277. 8001d3a: ea43 0309 orr.w r3, r3, r9
  4278. 8001d3e: 6093 str r3, [r2, #8]
  4279. MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_ClkInitStruct->SYSCLKSource);
  4280. 8001d40: 6862 ldr r2, [r4, #4]
  4281. 8001d42: e732 b.n 8001baa <HAL_RCC_ClockConfig+0x62>
  4282. uint32_t hpre = RCC_SYSCLK_DIV1;
  4283. 8001d44: f04f 0900 mov.w r9, #0
  4284. 8001d48: e72f b.n 8001baa <HAL_RCC_ClockConfig+0x62>
  4285. 8001d4a: bf00 nop
  4286. 8001d4c: 40022000 .word 0x40022000
  4287. 8001d50: 40021000 .word 0x40021000
  4288. 8001d54: 04c4b400 .word 0x04c4b400
  4289. 8001d58: 08003068 .word 0x08003068
  4290. 8001d5c: 20000000 .word 0x20000000
  4291. 8001d60: 20000008 .word 0x20000008
  4292. 8001d64: 007a1200 .word 0x007a1200
  4293. 8001d68: 00f42400 .word 0x00f42400
  4294. 08001d6c <HAL_RCC_GetPCLK1Freq>:
  4295. return (HAL_RCC_GetHCLKFreq() >> (APBPrescTable[READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos] & 0x1FU));
  4296. 8001d6c: 4b05 ldr r3, [pc, #20] ; (8001d84 <HAL_RCC_GetPCLK1Freq+0x18>)
  4297. 8001d6e: 4a06 ldr r2, [pc, #24] ; (8001d88 <HAL_RCC_GetPCLK1Freq+0x1c>)
  4298. 8001d70: 689b ldr r3, [r3, #8]
  4299. return SystemCoreClock;
  4300. 8001d72: 4906 ldr r1, [pc, #24] ; (8001d8c <HAL_RCC_GetPCLK1Freq+0x20>)
  4301. return (HAL_RCC_GetHCLKFreq() >> (APBPrescTable[READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos] & 0x1FU));
  4302. 8001d74: f3c3 2302 ubfx r3, r3, #8, #3
  4303. 8001d78: 6808 ldr r0, [r1, #0]
  4304. 8001d7a: 5cd3 ldrb r3, [r2, r3]
  4305. 8001d7c: f003 031f and.w r3, r3, #31
  4306. }
  4307. 8001d80: 40d8 lsrs r0, r3
  4308. 8001d82: 4770 bx lr
  4309. 8001d84: 40021000 .word 0x40021000
  4310. 8001d88: 08003078 .word 0x08003078
  4311. 8001d8c: 20000000 .word 0x20000000
  4312. 08001d90 <HAL_RCC_GetPCLK2Freq>:
  4313. return (HAL_RCC_GetHCLKFreq()>> (APBPrescTable[READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos] & 0x1FU));
  4314. 8001d90: 4b05 ldr r3, [pc, #20] ; (8001da8 <HAL_RCC_GetPCLK2Freq+0x18>)
  4315. 8001d92: 4a06 ldr r2, [pc, #24] ; (8001dac <HAL_RCC_GetPCLK2Freq+0x1c>)
  4316. 8001d94: 689b ldr r3, [r3, #8]
  4317. return SystemCoreClock;
  4318. 8001d96: 4906 ldr r1, [pc, #24] ; (8001db0 <HAL_RCC_GetPCLK2Freq+0x20>)
  4319. return (HAL_RCC_GetHCLKFreq()>> (APBPrescTable[READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos] & 0x1FU));
  4320. 8001d98: f3c3 23c2 ubfx r3, r3, #11, #3
  4321. 8001d9c: 6808 ldr r0, [r1, #0]
  4322. 8001d9e: 5cd3 ldrb r3, [r2, r3]
  4323. 8001da0: f003 031f and.w r3, r3, #31
  4324. }
  4325. 8001da4: 40d8 lsrs r0, r3
  4326. 8001da6: 4770 bx lr
  4327. 8001da8: 40021000 .word 0x40021000
  4328. 8001dac: 08003078 .word 0x08003078
  4329. 8001db0: 20000000 .word 0x20000000
  4330. 08001db4 <HAL_RCCEx_PeriphCLKConfig>:
  4331. * the RTC clock source: in this case the access to Backup domain is enabled.
  4332. *
  4333. * @retval HAL status
  4334. */
  4335. HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef const *PeriphClkInit)
  4336. {
  4337. 8001db4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
  4338. /* Check the parameters */
  4339. assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection));
  4340. /*-------------------------- RTC clock source configuration ----------------------*/
  4341. if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)
  4342. 8001db8: 6803 ldr r3, [r0, #0]
  4343. {
  4344. 8001dba: 4604 mov r4, r0
  4345. if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)
  4346. 8001dbc: f413 2000 ands.w r0, r3, #524288 ; 0x80000
  4347. {
  4348. 8001dc0: b082 sub sp, #8
  4349. if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)
  4350. 8001dc2: d056 beq.n 8001e72 <HAL_RCCEx_PeriphCLKConfig+0xbe>
  4351. /* Check for RTC Parameters used to output RTCCLK */
  4352. assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection));
  4353. /* Enable Power Clock */
  4354. if(__HAL_RCC_PWR_IS_CLK_DISABLED())
  4355. 8001dc4: 4b9f ldr r3, [pc, #636] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4356. 8001dc6: 6d9a ldr r2, [r3, #88] ; 0x58
  4357. 8001dc8: 00d5 lsls r5, r2, #3
  4358. 8001dca: f140 810c bpl.w 8001fe6 <HAL_RCCEx_PeriphCLKConfig+0x232>
  4359. FlagStatus pwrclkchanged = RESET;
  4360. 8001dce: 2700 movs r7, #0
  4361. __HAL_RCC_PWR_CLK_ENABLE();
  4362. pwrclkchanged = SET;
  4363. }
  4364. /* Enable write access to Backup domain */
  4365. SET_BIT(PWR->CR1, PWR_CR1_DBP);
  4366. 8001dd0: 4d9d ldr r5, [pc, #628] ; (8002048 <HAL_RCCEx_PeriphCLKConfig+0x294>)
  4367. 8001dd2: 682b ldr r3, [r5, #0]
  4368. 8001dd4: f443 7380 orr.w r3, r3, #256 ; 0x100
  4369. 8001dd8: 602b str r3, [r5, #0]
  4370. /* Wait for Backup domain Write protection disable */
  4371. tickstart = HAL_GetTick();
  4372. 8001dda: f7fe ff7d bl 8000cd8 <HAL_GetTick>
  4373. 8001dde: 4606 mov r6, r0
  4374. while((PWR->CR1 & PWR_CR1_DBP) == 0U)
  4375. 8001de0: e005 b.n 8001dee <HAL_RCCEx_PeriphCLKConfig+0x3a>
  4376. {
  4377. if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
  4378. 8001de2: f7fe ff79 bl 8000cd8 <HAL_GetTick>
  4379. 8001de6: 1b83 subs r3, r0, r6
  4380. 8001de8: 2b02 cmp r3, #2
  4381. 8001dea: f200 8107 bhi.w 8001ffc <HAL_RCCEx_PeriphCLKConfig+0x248>
  4382. while((PWR->CR1 & PWR_CR1_DBP) == 0U)
  4383. 8001dee: 682b ldr r3, [r5, #0]
  4384. 8001df0: 05d8 lsls r0, r3, #23
  4385. 8001df2: d5f6 bpl.n 8001de2 <HAL_RCCEx_PeriphCLKConfig+0x2e>
  4386. }
  4387. if(ret == HAL_OK)
  4388. {
  4389. /* Reset the Backup domain only if the RTC Clock source selection is modified from default */
  4390. tmpregister = READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL);
  4391. 8001df4: 4d93 ldr r5, [pc, #588] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4392. 8001df6: f8d5 3090 ldr.w r3, [r5, #144] ; 0x90
  4393. if((tmpregister != RCC_RTCCLKSOURCE_NONE) && (tmpregister != PeriphClkInit->RTCClockSelection))
  4394. 8001dfa: f413 7340 ands.w r3, r3, #768 ; 0x300
  4395. 8001dfe: d027 beq.n 8001e50 <HAL_RCCEx_PeriphCLKConfig+0x9c>
  4396. 8001e00: 6c22 ldr r2, [r4, #64] ; 0x40
  4397. 8001e02: 429a cmp r2, r3
  4398. 8001e04: d025 beq.n 8001e52 <HAL_RCCEx_PeriphCLKConfig+0x9e>
  4399. {
  4400. /* Store the content of BDCR register before the reset of Backup Domain */
  4401. tmpregister = READ_BIT(RCC->BDCR, ~(RCC_BDCR_RTCSEL));
  4402. 8001e06: f8d5 1090 ldr.w r1, [r5, #144] ; 0x90
  4403. /* RTC Clock selection can be changed only if the Backup Domain is reset */
  4404. __HAL_RCC_BACKUPRESET_FORCE();
  4405. 8001e0a: f8d5 3090 ldr.w r3, [r5, #144] ; 0x90
  4406. 8001e0e: f443 3380 orr.w r3, r3, #65536 ; 0x10000
  4407. 8001e12: f8c5 3090 str.w r3, [r5, #144] ; 0x90
  4408. __HAL_RCC_BACKUPRESET_RELEASE();
  4409. 8001e16: f8d5 3090 ldr.w r3, [r5, #144] ; 0x90
  4410. 8001e1a: f423 3380 bic.w r3, r3, #65536 ; 0x10000
  4411. 8001e1e: f8c5 3090 str.w r3, [r5, #144] ; 0x90
  4412. tmpregister = READ_BIT(RCC->BDCR, ~(RCC_BDCR_RTCSEL));
  4413. 8001e22: f421 7340 bic.w r3, r1, #768 ; 0x300
  4414. /* Restore the Content of BDCR register */
  4415. RCC->BDCR = tmpregister;
  4416. }
  4417. /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */
  4418. if (HAL_IS_BIT_SET(tmpregister, RCC_BDCR_LSEON))
  4419. 8001e26: 07c9 lsls r1, r1, #31
  4420. RCC->BDCR = tmpregister;
  4421. 8001e28: f8c5 3090 str.w r3, [r5, #144] ; 0x90
  4422. if (HAL_IS_BIT_SET(tmpregister, RCC_BDCR_LSEON))
  4423. 8001e2c: f140 8108 bpl.w 8002040 <HAL_RCCEx_PeriphCLKConfig+0x28c>
  4424. {
  4425. /* Get Start Tick*/
  4426. tickstart = HAL_GetTick();
  4427. 8001e30: f7fe ff52 bl 8000cd8 <HAL_GetTick>
  4428. /* Wait till LSE is ready */
  4429. while(READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U)
  4430. {
  4431. if((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
  4432. 8001e34: f241 3888 movw r8, #5000 ; 0x1388
  4433. tickstart = HAL_GetTick();
  4434. 8001e38: 4606 mov r6, r0
  4435. while(READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U)
  4436. 8001e3a: e005 b.n 8001e48 <HAL_RCCEx_PeriphCLKConfig+0x94>
  4437. if((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
  4438. 8001e3c: f7fe ff4c bl 8000cd8 <HAL_GetTick>
  4439. 8001e40: 1b80 subs r0, r0, r6
  4440. 8001e42: 4540 cmp r0, r8
  4441. 8001e44: f200 80da bhi.w 8001ffc <HAL_RCCEx_PeriphCLKConfig+0x248>
  4442. while(READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U)
  4443. 8001e48: f8d5 3090 ldr.w r3, [r5, #144] ; 0x90
  4444. 8001e4c: 079b lsls r3, r3, #30
  4445. 8001e4e: d5f5 bpl.n 8001e3c <HAL_RCCEx_PeriphCLKConfig+0x88>
  4446. }
  4447. if(ret == HAL_OK)
  4448. {
  4449. /* Apply new RTC clock source selection */
  4450. __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);
  4451. 8001e50: 6c23 ldr r3, [r4, #64] ; 0x40
  4452. 8001e52: 497c ldr r1, [pc, #496] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4453. 8001e54: f8d1 2090 ldr.w r2, [r1, #144] ; 0x90
  4454. 8001e58: f422 7240 bic.w r2, r2, #768 ; 0x300
  4455. 8001e5c: 4313 orrs r3, r2
  4456. 8001e5e: f8c1 3090 str.w r3, [r1, #144] ; 0x90
  4457. HAL_StatusTypeDef status = HAL_OK; /* Final status */
  4458. 8001e62: 2000 movs r0, #0
  4459. /* set overall return value */
  4460. status = ret;
  4461. }
  4462. /* Restore clock configuration if changed */
  4463. if(pwrclkchanged == SET)
  4464. 8001e64: b127 cbz r7, 8001e70 <HAL_RCCEx_PeriphCLKConfig+0xbc>
  4465. {
  4466. __HAL_RCC_PWR_CLK_DISABLE();
  4467. 8001e66: 4a77 ldr r2, [pc, #476] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4468. 8001e68: 6d93 ldr r3, [r2, #88] ; 0x58
  4469. 8001e6a: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
  4470. 8001e6e: 6593 str r3, [r2, #88] ; 0x58
  4471. }
  4472. }
  4473. /*-------------------------- USART1 clock source configuration -------------------*/
  4474. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1)
  4475. 8001e70: 6823 ldr r3, [r4, #0]
  4476. 8001e72: 07de lsls r6, r3, #31
  4477. 8001e74: d508 bpl.n 8001e88 <HAL_RCCEx_PeriphCLKConfig+0xd4>
  4478. {
  4479. /* Check the parameters */
  4480. assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection));
  4481. /* Configure the USART1 clock source */
  4482. __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection);
  4483. 8001e76: 4973 ldr r1, [pc, #460] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4484. 8001e78: 6865 ldr r5, [r4, #4]
  4485. 8001e7a: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4486. 8001e7e: f022 0203 bic.w r2, r2, #3
  4487. 8001e82: 432a orrs r2, r5
  4488. 8001e84: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4489. }
  4490. /*-------------------------- USART2 clock source configuration -------------------*/
  4491. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2)
  4492. 8001e88: 079d lsls r5, r3, #30
  4493. 8001e8a: d508 bpl.n 8001e9e <HAL_RCCEx_PeriphCLKConfig+0xea>
  4494. {
  4495. /* Check the parameters */
  4496. assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection));
  4497. /* Configure the USART2 clock source */
  4498. __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection);
  4499. 8001e8c: 496d ldr r1, [pc, #436] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4500. 8001e8e: 68a5 ldr r5, [r4, #8]
  4501. 8001e90: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4502. 8001e94: f022 020c bic.w r2, r2, #12
  4503. 8001e98: 432a orrs r2, r5
  4504. 8001e9a: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4505. }
  4506. #if defined(USART3)
  4507. /*-------------------------- USART3 clock source configuration -------------------*/
  4508. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3)
  4509. 8001e9e: 0759 lsls r1, r3, #29
  4510. 8001ea0: d508 bpl.n 8001eb4 <HAL_RCCEx_PeriphCLKConfig+0x100>
  4511. {
  4512. /* Check the parameters */
  4513. assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection));
  4514. /* Configure the USART3 clock source */
  4515. __HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection);
  4516. 8001ea2: 4968 ldr r1, [pc, #416] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4517. 8001ea4: 68e5 ldr r5, [r4, #12]
  4518. 8001ea6: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4519. 8001eaa: f022 0230 bic.w r2, r2, #48 ; 0x30
  4520. 8001eae: 432a orrs r2, r5
  4521. 8001eb0: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4522. #endif /* USART3 */
  4523. #if defined(UART4)
  4524. /*-------------------------- UART4 clock source configuration --------------------*/
  4525. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4)
  4526. 8001eb4: 071a lsls r2, r3, #28
  4527. 8001eb6: d508 bpl.n 8001eca <HAL_RCCEx_PeriphCLKConfig+0x116>
  4528. {
  4529. /* Check the parameters */
  4530. assert_param(IS_RCC_UART4CLKSOURCE(PeriphClkInit->Uart4ClockSelection));
  4531. /* Configure the UART4 clock source */
  4532. __HAL_RCC_UART4_CONFIG(PeriphClkInit->Uart4ClockSelection);
  4533. 8001eb8: 4962 ldr r1, [pc, #392] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4534. 8001eba: 6925 ldr r5, [r4, #16]
  4535. 8001ebc: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4536. 8001ec0: f022 02c0 bic.w r2, r2, #192 ; 0xc0
  4537. 8001ec4: 432a orrs r2, r5
  4538. 8001ec6: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4539. }
  4540. #endif /* UART5 */
  4541. /*-------------------------- LPUART1 clock source configuration ------------------*/
  4542. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1)
  4543. 8001eca: 069f lsls r7, r3, #26
  4544. 8001ecc: d508 bpl.n 8001ee0 <HAL_RCCEx_PeriphCLKConfig+0x12c>
  4545. {
  4546. /* Check the parameters */
  4547. assert_param(IS_RCC_LPUART1CLKSOURCE(PeriphClkInit->Lpuart1ClockSelection));
  4548. /* Configure the LPUAR1 clock source */
  4549. __HAL_RCC_LPUART1_CONFIG(PeriphClkInit->Lpuart1ClockSelection);
  4550. 8001ece: 495d ldr r1, [pc, #372] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4551. 8001ed0: 6965 ldr r5, [r4, #20]
  4552. 8001ed2: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4553. 8001ed6: f422 6240 bic.w r2, r2, #3072 ; 0xc00
  4554. 8001eda: 432a orrs r2, r5
  4555. 8001edc: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4556. }
  4557. /*-------------------------- I2C1 clock source configuration ---------------------*/
  4558. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1)
  4559. 8001ee0: 065e lsls r6, r3, #25
  4560. 8001ee2: d508 bpl.n 8001ef6 <HAL_RCCEx_PeriphCLKConfig+0x142>
  4561. {
  4562. /* Check the parameters */
  4563. assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection));
  4564. /* Configure the I2C1 clock source */
  4565. __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection);
  4566. 8001ee4: 4957 ldr r1, [pc, #348] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4567. 8001ee6: 69a5 ldr r5, [r4, #24]
  4568. 8001ee8: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4569. 8001eec: f422 5240 bic.w r2, r2, #12288 ; 0x3000
  4570. 8001ef0: 432a orrs r2, r5
  4571. 8001ef2: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4572. }
  4573. /*-------------------------- I2C2 clock source configuration ---------------------*/
  4574. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2)
  4575. 8001ef6: 061d lsls r5, r3, #24
  4576. 8001ef8: d508 bpl.n 8001f0c <HAL_RCCEx_PeriphCLKConfig+0x158>
  4577. {
  4578. /* Check the parameters */
  4579. assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection));
  4580. /* Configure the I2C2 clock source */
  4581. __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection);
  4582. 8001efa: 4952 ldr r1, [pc, #328] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4583. 8001efc: 69e5 ldr r5, [r4, #28]
  4584. 8001efe: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4585. 8001f02: f422 4240 bic.w r2, r2, #49152 ; 0xc000
  4586. 8001f06: 432a orrs r2, r5
  4587. 8001f08: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4588. }
  4589. #if defined(I2C3)
  4590. /*-------------------------- I2C3 clock source configuration ---------------------*/
  4591. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3)
  4592. 8001f0c: 05d9 lsls r1, r3, #23
  4593. 8001f0e: d508 bpl.n 8001f22 <HAL_RCCEx_PeriphCLKConfig+0x16e>
  4594. {
  4595. /* Check the parameters */
  4596. assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection));
  4597. /* Configure the I2C3 clock source */
  4598. __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection);
  4599. 8001f10: 494c ldr r1, [pc, #304] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4600. 8001f12: 6a25 ldr r5, [r4, #32]
  4601. 8001f14: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4602. 8001f18: f422 3240 bic.w r2, r2, #196608 ; 0x30000
  4603. 8001f1c: 432a orrs r2, r5
  4604. 8001f1e: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4605. }
  4606. #endif /* I2C4 */
  4607. /*-------------------------- LPTIM1 clock source configuration ---------------------*/
  4608. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1)
  4609. 8001f22: 059a lsls r2, r3, #22
  4610. 8001f24: d508 bpl.n 8001f38 <HAL_RCCEx_PeriphCLKConfig+0x184>
  4611. {
  4612. /* Check the parameters */
  4613. assert_param(IS_RCC_LPTIM1CLKSOURCE(PeriphClkInit->Lptim1ClockSelection));
  4614. /* Configure the LPTIM1 clock source */
  4615. __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection);
  4616. 8001f26: 4947 ldr r1, [pc, #284] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4617. 8001f28: 6a65 ldr r5, [r4, #36] ; 0x24
  4618. 8001f2a: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4619. 8001f2e: f422 2240 bic.w r2, r2, #786432 ; 0xc0000
  4620. 8001f32: 432a orrs r2, r5
  4621. 8001f34: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4622. }
  4623. #if defined(SAI1)
  4624. /*-------------------------- SAI1 clock source configuration ---------------------*/
  4625. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1)
  4626. 8001f38: 055f lsls r7, r3, #21
  4627. 8001f3a: d50b bpl.n 8001f54 <HAL_RCCEx_PeriphCLKConfig+0x1a0>
  4628. {
  4629. /* Check the parameters */
  4630. assert_param(IS_RCC_SAI1CLKSOURCE(PeriphClkInit->Sai1ClockSelection));
  4631. /* Configure the SAI1 interface clock source */
  4632. __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection);
  4633. 8001f3c: 4941 ldr r1, [pc, #260] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4634. 8001f3e: 6aa5 ldr r5, [r4, #40] ; 0x28
  4635. 8001f40: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4636. 8001f44: f422 1240 bic.w r2, r2, #3145728 ; 0x300000
  4637. 8001f48: 432a orrs r2, r5
  4638. if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLL)
  4639. 8001f4a: f5b5 1f80 cmp.w r5, #1048576 ; 0x100000
  4640. __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection);
  4641. 8001f4e: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4642. if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLL)
  4643. 8001f52: d055 beq.n 8002000 <HAL_RCCEx_PeriphCLKConfig+0x24c>
  4644. #endif /* SAI1 */
  4645. #if defined(SPI_I2S_SUPPORT)
  4646. /*-------------------------- I2S clock source configuration ---------------------*/
  4647. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S)
  4648. 8001f54: 051e lsls r6, r3, #20
  4649. 8001f56: d50b bpl.n 8001f70 <HAL_RCCEx_PeriphCLKConfig+0x1bc>
  4650. {
  4651. /* Check the parameters */
  4652. assert_param(IS_RCC_I2SCLKSOURCE(PeriphClkInit->I2sClockSelection));
  4653. /* Configure the I2S interface clock source */
  4654. __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection);
  4655. 8001f58: 493a ldr r1, [pc, #232] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4656. 8001f5a: 6ae5 ldr r5, [r4, #44] ; 0x2c
  4657. 8001f5c: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4658. 8001f60: f422 0240 bic.w r2, r2, #12582912 ; 0xc00000
  4659. 8001f64: 432a orrs r2, r5
  4660. if(PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLL)
  4661. 8001f66: f5b5 0f80 cmp.w r5, #4194304 ; 0x400000
  4662. __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection);
  4663. 8001f6a: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4664. if(PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLL)
  4665. 8001f6e: d04c beq.n 800200a <HAL_RCCEx_PeriphCLKConfig+0x256>
  4666. #endif /* SPI_I2S_SUPPORT */
  4667. #if defined(FDCAN1)
  4668. /*-------------------------- FDCAN clock source configuration ---------------------*/
  4669. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_FDCAN) == RCC_PERIPHCLK_FDCAN)
  4670. 8001f70: 04dd lsls r5, r3, #19
  4671. 8001f72: d50b bpl.n 8001f8c <HAL_RCCEx_PeriphCLKConfig+0x1d8>
  4672. {
  4673. /* Check the parameters */
  4674. assert_param(IS_RCC_FDCANCLKSOURCE(PeriphClkInit->FdcanClockSelection));
  4675. /* Configure the FDCAN interface clock source */
  4676. __HAL_RCC_FDCAN_CONFIG(PeriphClkInit->FdcanClockSelection);
  4677. 8001f74: 4933 ldr r1, [pc, #204] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4678. 8001f76: 6b25 ldr r5, [r4, #48] ; 0x30
  4679. 8001f78: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4680. 8001f7c: f022 7240 bic.w r2, r2, #50331648 ; 0x3000000
  4681. 8001f80: 432a orrs r2, r5
  4682. if(PeriphClkInit->FdcanClockSelection == RCC_FDCANCLKSOURCE_PLL)
  4683. 8001f82: f1b5 7f80 cmp.w r5, #16777216 ; 0x1000000
  4684. __HAL_RCC_FDCAN_CONFIG(PeriphClkInit->FdcanClockSelection);
  4685. 8001f86: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4686. if(PeriphClkInit->FdcanClockSelection == RCC_FDCANCLKSOURCE_PLL)
  4687. 8001f8a: d043 beq.n 8002014 <HAL_RCCEx_PeriphCLKConfig+0x260>
  4688. #endif /* FDCAN1 */
  4689. #if defined(USB)
  4690. /*-------------------------- USB clock source configuration ----------------------*/
  4691. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == (RCC_PERIPHCLK_USB))
  4692. 8001f8c: 0499 lsls r1, r3, #18
  4693. 8001f8e: d50b bpl.n 8001fa8 <HAL_RCCEx_PeriphCLKConfig+0x1f4>
  4694. {
  4695. assert_param(IS_RCC_USBCLKSOURCE(PeriphClkInit->UsbClockSelection));
  4696. __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection);
  4697. 8001f90: 492c ldr r1, [pc, #176] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4698. 8001f92: 6b65 ldr r5, [r4, #52] ; 0x34
  4699. 8001f94: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4700. 8001f98: f022 6240 bic.w r2, r2, #201326592 ; 0xc000000
  4701. 8001f9c: 432a orrs r2, r5
  4702. if(PeriphClkInit->UsbClockSelection == RCC_USBCLKSOURCE_PLL)
  4703. 8001f9e: f1b5 6f00 cmp.w r5, #134217728 ; 0x8000000
  4704. __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection);
  4705. 8001fa2: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4706. if(PeriphClkInit->UsbClockSelection == RCC_USBCLKSOURCE_PLL)
  4707. 8001fa6: d03a beq.n 800201e <HAL_RCCEx_PeriphCLKConfig+0x26a>
  4708. }
  4709. #endif /* USB */
  4710. /*-------------------------- RNG clock source configuration ----------------------*/
  4711. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RNG) == (RCC_PERIPHCLK_RNG))
  4712. 8001fa8: 045a lsls r2, r3, #17
  4713. 8001faa: d50b bpl.n 8001fc4 <HAL_RCCEx_PeriphCLKConfig+0x210>
  4714. {
  4715. assert_param(IS_RCC_RNGCLKSOURCE(PeriphClkInit->RngClockSelection));
  4716. __HAL_RCC_RNG_CONFIG(PeriphClkInit->RngClockSelection);
  4717. 8001fac: 4925 ldr r1, [pc, #148] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4718. 8001fae: 6ba5 ldr r5, [r4, #56] ; 0x38
  4719. 8001fb0: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88
  4720. 8001fb4: f022 6240 bic.w r2, r2, #201326592 ; 0xc000000
  4721. 8001fb8: 432a orrs r2, r5
  4722. if(PeriphClkInit->RngClockSelection == RCC_RNGCLKSOURCE_PLL)
  4723. 8001fba: f1b5 6f00 cmp.w r5, #134217728 ; 0x8000000
  4724. __HAL_RCC_RNG_CONFIG(PeriphClkInit->RngClockSelection);
  4725. 8001fbe: f8c1 2088 str.w r2, [r1, #136] ; 0x88
  4726. if(PeriphClkInit->RngClockSelection == RCC_RNGCLKSOURCE_PLL)
  4727. 8001fc2: d031 beq.n 8002028 <HAL_RCCEx_PeriphCLKConfig+0x274>
  4728. __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_48M1CLK);
  4729. }
  4730. }
  4731. /*-------------------------- ADC12 clock source configuration ----------------------*/
  4732. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC12) == RCC_PERIPHCLK_ADC12)
  4733. 8001fc4: 041b lsls r3, r3, #16
  4734. 8001fc6: d50b bpl.n 8001fe0 <HAL_RCCEx_PeriphCLKConfig+0x22c>
  4735. {
  4736. /* Check the parameters */
  4737. assert_param(IS_RCC_ADC12CLKSOURCE(PeriphClkInit->Adc12ClockSelection));
  4738. /* Configure the ADC12 interface clock source */
  4739. __HAL_RCC_ADC12_CONFIG(PeriphClkInit->Adc12ClockSelection);
  4740. 8001fc8: 4a1e ldr r2, [pc, #120] ; (8002044 <HAL_RCCEx_PeriphCLKConfig+0x290>)
  4741. 8001fca: 6be1 ldr r1, [r4, #60] ; 0x3c
  4742. 8001fcc: f8d2 3088 ldr.w r3, [r2, #136] ; 0x88
  4743. 8001fd0: f023 5340 bic.w r3, r3, #805306368 ; 0x30000000
  4744. 8001fd4: 430b orrs r3, r1
  4745. if(PeriphClkInit->Adc12ClockSelection == RCC_ADC12CLKSOURCE_PLL)
  4746. 8001fd6: f1b1 5f80 cmp.w r1, #268435456 ; 0x10000000
  4747. __HAL_RCC_ADC12_CONFIG(PeriphClkInit->Adc12ClockSelection);
  4748. 8001fda: f8c2 3088 str.w r3, [r2, #136] ; 0x88
  4749. if(PeriphClkInit->Adc12ClockSelection == RCC_ADC12CLKSOURCE_PLL)
  4750. 8001fde: d028 beq.n 8002032 <HAL_RCCEx_PeriphCLKConfig+0x27e>
  4751. }
  4752. #endif /* QUADSPI */
  4753. return status;
  4754. }
  4755. 8001fe0: b002 add sp, #8
  4756. 8001fe2: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
  4757. __HAL_RCC_PWR_CLK_ENABLE();
  4758. 8001fe6: 6d9a ldr r2, [r3, #88] ; 0x58
  4759. 8001fe8: f042 5280 orr.w r2, r2, #268435456 ; 0x10000000
  4760. 8001fec: 659a str r2, [r3, #88] ; 0x58
  4761. 8001fee: 6d9b ldr r3, [r3, #88] ; 0x58
  4762. 8001ff0: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  4763. 8001ff4: 9301 str r3, [sp, #4]
  4764. 8001ff6: 9b01 ldr r3, [sp, #4]
  4765. pwrclkchanged = SET;
  4766. 8001ff8: 2701 movs r7, #1
  4767. 8001ffa: e6e9 b.n 8001dd0 <HAL_RCCEx_PeriphCLKConfig+0x1c>
  4768. ret = HAL_TIMEOUT;
  4769. 8001ffc: 2003 movs r0, #3
  4770. 8001ffe: e731 b.n 8001e64 <HAL_RCCEx_PeriphCLKConfig+0xb0>
  4771. __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_48M1CLK);
  4772. 8002000: 68ca ldr r2, [r1, #12]
  4773. 8002002: f442 1280 orr.w r2, r2, #1048576 ; 0x100000
  4774. 8002006: 60ca str r2, [r1, #12]
  4775. 8002008: e7a4 b.n 8001f54 <HAL_RCCEx_PeriphCLKConfig+0x1a0>
  4776. __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_48M1CLK);
  4777. 800200a: 68ca ldr r2, [r1, #12]
  4778. 800200c: f442 1280 orr.w r2, r2, #1048576 ; 0x100000
  4779. 8002010: 60ca str r2, [r1, #12]
  4780. 8002012: e7ad b.n 8001f70 <HAL_RCCEx_PeriphCLKConfig+0x1bc>
  4781. __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_48M1CLK);
  4782. 8002014: 68ca ldr r2, [r1, #12]
  4783. 8002016: f442 1280 orr.w r2, r2, #1048576 ; 0x100000
  4784. 800201a: 60ca str r2, [r1, #12]
  4785. 800201c: e7b6 b.n 8001f8c <HAL_RCCEx_PeriphCLKConfig+0x1d8>
  4786. __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_48M1CLK);
  4787. 800201e: 68ca ldr r2, [r1, #12]
  4788. 8002020: f442 1280 orr.w r2, r2, #1048576 ; 0x100000
  4789. 8002024: 60ca str r2, [r1, #12]
  4790. 8002026: e7bf b.n 8001fa8 <HAL_RCCEx_PeriphCLKConfig+0x1f4>
  4791. __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_48M1CLK);
  4792. 8002028: 68ca ldr r2, [r1, #12]
  4793. 800202a: f442 1280 orr.w r2, r2, #1048576 ; 0x100000
  4794. 800202e: 60ca str r2, [r1, #12]
  4795. 8002030: e7c8 b.n 8001fc4 <HAL_RCCEx_PeriphCLKConfig+0x210>
  4796. __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_ADCCLK);
  4797. 8002032: 68d3 ldr r3, [r2, #12]
  4798. 8002034: f443 3380 orr.w r3, r3, #65536 ; 0x10000
  4799. 8002038: 60d3 str r3, [r2, #12]
  4800. }
  4801. 800203a: b002 add sp, #8
  4802. 800203c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
  4803. 8002040: 4613 mov r3, r2
  4804. 8002042: e706 b.n 8001e52 <HAL_RCCEx_PeriphCLKConfig+0x9e>
  4805. 8002044: 40021000 .word 0x40021000
  4806. 8002048: 40007000 .word 0x40007000
  4807. 0800204c <HAL_TIM_Base_Init>:
  4808. * @retval HAL status
  4809. */
  4810. HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)
  4811. {
  4812. /* Check the TIM handle allocation */
  4813. if (htim == NULL)
  4814. 800204c: 2800 cmp r0, #0
  4815. 800204e: f000 808a beq.w 8002166 <HAL_TIM_Base_Init+0x11a>
  4816. {
  4817. 8002052: b538 push {r3, r4, r5, lr}
  4818. assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
  4819. assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
  4820. assert_param(IS_TIM_PERIOD(htim, htim->Init.Period));
  4821. assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
  4822. if (htim->State == HAL_TIM_STATE_RESET)
  4823. 8002054: f890 303d ldrb.w r3, [r0, #61] ; 0x3d
  4824. 8002058: 4604 mov r4, r0
  4825. 800205a: f003 02ff and.w r2, r3, #255 ; 0xff
  4826. 800205e: 2b00 cmp r3, #0
  4827. 8002060: d05c beq.n 800211c <HAL_TIM_Base_Init+0xd0>
  4828. /* Set the TIM state */
  4829. htim->State = HAL_TIM_STATE_BUSY;
  4830. /* Set the Time Base configuration */
  4831. TIM_Base_SetConfig(htim->Instance, &htim->Init);
  4832. 8002062: 6822 ldr r2, [r4, #0]
  4833. {
  4834. uint32_t tmpcr1;
  4835. tmpcr1 = TIMx->CR1;
  4836. /* Set TIM Time Base Unit parameters ---------------------------------------*/
  4837. if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))
  4838. 8002064: 4949 ldr r1, [pc, #292] ; (800218c <HAL_TIM_Base_Init+0x140>)
  4839. htim->State = HAL_TIM_STATE_BUSY;
  4840. 8002066: 2302 movs r3, #2
  4841. 8002068: f884 303d strb.w r3, [r4, #61] ; 0x3d
  4842. if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))
  4843. 800206c: 428a cmp r2, r1
  4844. tmpcr1 = TIMx->CR1;
  4845. 800206e: 6813 ldr r3, [r2, #0]
  4846. if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))
  4847. 8002070: d059 beq.n 8002126 <HAL_TIM_Base_Init+0xda>
  4848. 8002072: f1b2 4f80 cmp.w r2, #1073741824 ; 0x40000000
  4849. 8002076: d020 beq.n 80020ba <HAL_TIM_Base_Init+0x6e>
  4850. 8002078: f5a1 3194 sub.w r1, r1, #75776 ; 0x12800
  4851. 800207c: 428a cmp r2, r1
  4852. 800207e: d01c beq.n 80020ba <HAL_TIM_Base_Init+0x6e>
  4853. 8002080: f501 6180 add.w r1, r1, #1024 ; 0x400
  4854. 8002084: 428a cmp r2, r1
  4855. 8002086: d018 beq.n 80020ba <HAL_TIM_Base_Init+0x6e>
  4856. 8002088: f501 3196 add.w r1, r1, #76800 ; 0x12c00
  4857. 800208c: 428a cmp r2, r1
  4858. 800208e: d06c beq.n 800216a <HAL_TIM_Base_Init+0x11e>
  4859. /* Select the Counter Mode */
  4860. tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
  4861. tmpcr1 |= Structure->CounterMode;
  4862. }
  4863. if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx))
  4864. 8002090: f501 6140 add.w r1, r1, #3072 ; 0xc00
  4865. 8002094: 428a cmp r2, r1
  4866. 8002096: d059 beq.n 800214c <HAL_TIM_Base_Init+0x100>
  4867. 8002098: f501 6180 add.w r1, r1, #1024 ; 0x400
  4868. 800209c: 428a cmp r2, r1
  4869. 800209e: d055 beq.n 800214c <HAL_TIM_Base_Init+0x100>
  4870. 80020a0: f501 6180 add.w r1, r1, #1024 ; 0x400
  4871. 80020a4: 428a cmp r2, r1
  4872. 80020a6: d051 beq.n 800214c <HAL_TIM_Base_Init+0x100>
  4873. tmpcr1 &= ~TIM_CR1_CKD;
  4874. tmpcr1 |= (uint32_t)Structure->ClockDivision;
  4875. }
  4876. /* Set the auto-reload preload */
  4877. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  4878. 80020a8: 69a1 ldr r1, [r4, #24]
  4879. /* Set the Autoreload value */
  4880. TIMx->ARR = (uint32_t)Structure->Period ;
  4881. 80020aa: 68e0 ldr r0, [r4, #12]
  4882. 80020ac: 62d0 str r0, [r2, #44] ; 0x2c
  4883. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  4884. 80020ae: f023 0380 bic.w r3, r3, #128 ; 0x80
  4885. /* Set the Prescaler value */
  4886. TIMx->PSC = Structure->Prescaler;
  4887. 80020b2: 6860 ldr r0, [r4, #4]
  4888. 80020b4: 6290 str r0, [r2, #40] ; 0x28
  4889. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  4890. 80020b6: 4319 orrs r1, r3
  4891. if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))
  4892. 80020b8: e00f b.n 80020da <HAL_TIM_Base_Init+0x8e>
  4893. tmpcr1 |= Structure->CounterMode;
  4894. 80020ba: 68a1 ldr r1, [r4, #8]
  4895. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  4896. 80020bc: 69a0 ldr r0, [r4, #24]
  4897. tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
  4898. 80020be: f023 0370 bic.w r3, r3, #112 ; 0x70
  4899. tmpcr1 |= Structure->CounterMode;
  4900. 80020c2: 430b orrs r3, r1
  4901. tmpcr1 |= (uint32_t)Structure->ClockDivision;
  4902. 80020c4: 6921 ldr r1, [r4, #16]
  4903. tmpcr1 &= ~TIM_CR1_CKD;
  4904. 80020c6: f423 7340 bic.w r3, r3, #768 ; 0x300
  4905. tmpcr1 |= (uint32_t)Structure->ClockDivision;
  4906. 80020ca: 4319 orrs r1, r3
  4907. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  4908. 80020cc: f021 0180 bic.w r1, r1, #128 ; 0x80
  4909. TIMx->PSC = Structure->Prescaler;
  4910. 80020d0: 6863 ldr r3, [r4, #4]
  4911. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  4912. 80020d2: 4301 orrs r1, r0
  4913. TIMx->ARR = (uint32_t)Structure->Period ;
  4914. 80020d4: 68e0 ldr r0, [r4, #12]
  4915. 80020d6: 62d0 str r0, [r2, #44] ; 0x2c
  4916. TIMx->PSC = Structure->Prescaler;
  4917. 80020d8: 6293 str r3, [r2, #40] ; 0x28
  4918. TIMx->RCR = Structure->RepetitionCounter;
  4919. }
  4920. /* Disable Update Event (UEV) with Update Generation (UG)
  4921. by changing Update Request Source (URS) to avoid Update flag (UIF) */
  4922. SET_BIT(TIMx->CR1, TIM_CR1_URS);
  4923. 80020da: 6810 ldr r0, [r2, #0]
  4924. /* Generate an update event to reload the Prescaler
  4925. and the repetition counter (only for advanced timer) value immediately */
  4926. TIMx->EGR = TIM_EGR_UG;
  4927. 80020dc: 2301 movs r3, #1
  4928. SET_BIT(TIMx->CR1, TIM_CR1_URS);
  4929. 80020de: f040 0004 orr.w r0, r0, #4
  4930. 80020e2: 6010 str r0, [r2, #0]
  4931. TIMx->EGR = TIM_EGR_UG;
  4932. 80020e4: 6153 str r3, [r2, #20]
  4933. TIMx->CR1 = tmpcr1;
  4934. 80020e6: 6011 str r1, [r2, #0]
  4935. htim->DMABurstState = HAL_DMA_BURST_STATE_READY;
  4936. 80020e8: f884 3048 strb.w r3, [r4, #72] ; 0x48
  4937. TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);
  4938. 80020ec: f884 303e strb.w r3, [r4, #62] ; 0x3e
  4939. 80020f0: f884 303f strb.w r3, [r4, #63] ; 0x3f
  4940. 80020f4: f884 3040 strb.w r3, [r4, #64] ; 0x40
  4941. 80020f8: f884 3041 strb.w r3, [r4, #65] ; 0x41
  4942. 80020fc: f884 3042 strb.w r3, [r4, #66] ; 0x42
  4943. 8002100: f884 3043 strb.w r3, [r4, #67] ; 0x43
  4944. TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY);
  4945. 8002104: f884 3044 strb.w r3, [r4, #68] ; 0x44
  4946. 8002108: f884 3045 strb.w r3, [r4, #69] ; 0x45
  4947. 800210c: f884 3046 strb.w r3, [r4, #70] ; 0x46
  4948. 8002110: f884 3047 strb.w r3, [r4, #71] ; 0x47
  4949. htim->State = HAL_TIM_STATE_READY;
  4950. 8002114: f884 303d strb.w r3, [r4, #61] ; 0x3d
  4951. return HAL_OK;
  4952. 8002118: 2000 movs r0, #0
  4953. }
  4954. 800211a: bd38 pop {r3, r4, r5, pc}
  4955. htim->Lock = HAL_UNLOCKED;
  4956. 800211c: f880 203c strb.w r2, [r0, #60] ; 0x3c
  4957. HAL_TIM_Base_MspInit(htim);
  4958. 8002120: f7fe fc84 bl 8000a2c <HAL_TIM_Base_MspInit>
  4959. 8002124: e79d b.n 8002062 <HAL_TIM_Base_Init+0x16>
  4960. tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
  4961. 8002126: f023 0170 bic.w r1, r3, #112 ; 0x70
  4962. tmpcr1 |= Structure->CounterMode;
  4963. 800212a: 68a3 ldr r3, [r4, #8]
  4964. tmpcr1 |= (uint32_t)Structure->ClockDivision;
  4965. 800212c: 6920 ldr r0, [r4, #16]
  4966. tmpcr1 |= Structure->CounterMode;
  4967. 800212e: 4319 orrs r1, r3
  4968. tmpcr1 &= ~TIM_CR1_CKD;
  4969. 8002130: f421 7140 bic.w r1, r1, #768 ; 0x300
  4970. tmpcr1 |= (uint32_t)Structure->ClockDivision;
  4971. 8002134: 4301 orrs r1, r0
  4972. TIMx->ARR = (uint32_t)Structure->Period ;
  4973. 8002136: 68e0 ldr r0, [r4, #12]
  4974. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  4975. 8002138: 69a3 ldr r3, [r4, #24]
  4976. TIMx->ARR = (uint32_t)Structure->Period ;
  4977. 800213a: 62d0 str r0, [r2, #44] ; 0x2c
  4978. TIMx->PSC = Structure->Prescaler;
  4979. 800213c: 6860 ldr r0, [r4, #4]
  4980. 800213e: 6290 str r0, [r2, #40] ; 0x28
  4981. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  4982. 8002140: f021 0180 bic.w r1, r1, #128 ; 0x80
  4983. 8002144: 4319 orrs r1, r3
  4984. TIMx->RCR = Structure->RepetitionCounter;
  4985. 8002146: 6963 ldr r3, [r4, #20]
  4986. 8002148: 6313 str r3, [r2, #48] ; 0x30
  4987. 800214a: e7c6 b.n 80020da <HAL_TIM_Base_Init+0x8e>
  4988. tmpcr1 |= (uint32_t)Structure->ClockDivision;
  4989. 800214c: 6920 ldr r0, [r4, #16]
  4990. TIMx->ARR = (uint32_t)Structure->Period ;
  4991. 800214e: 68e5 ldr r5, [r4, #12]
  4992. tmpcr1 &= ~TIM_CR1_CKD;
  4993. 8002150: f423 7140 bic.w r1, r3, #768 ; 0x300
  4994. tmpcr1 |= (uint32_t)Structure->ClockDivision;
  4995. 8002154: 4301 orrs r1, r0
  4996. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  4997. 8002156: 69a3 ldr r3, [r4, #24]
  4998. TIMx->ARR = (uint32_t)Structure->Period ;
  4999. 8002158: 62d5 str r5, [r2, #44] ; 0x2c
  5000. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  5001. 800215a: f021 0180 bic.w r1, r1, #128 ; 0x80
  5002. 800215e: 4319 orrs r1, r3
  5003. TIMx->PSC = Structure->Prescaler;
  5004. 8002160: 6863 ldr r3, [r4, #4]
  5005. 8002162: 6293 str r3, [r2, #40] ; 0x28
  5006. if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))
  5007. 8002164: e7ef b.n 8002146 <HAL_TIM_Base_Init+0xfa>
  5008. return HAL_ERROR;
  5009. 8002166: 2001 movs r0, #1
  5010. }
  5011. 8002168: 4770 bx lr
  5012. tmpcr1 |= Structure->CounterMode;
  5013. 800216a: 68a0 ldr r0, [r4, #8]
  5014. tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
  5015. 800216c: f023 0170 bic.w r1, r3, #112 ; 0x70
  5016. tmpcr1 |= Structure->CounterMode;
  5017. 8002170: 4301 orrs r1, r0
  5018. tmpcr1 |= (uint32_t)Structure->ClockDivision;
  5019. 8002172: 6923 ldr r3, [r4, #16]
  5020. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  5021. 8002174: 69a0 ldr r0, [r4, #24]
  5022. tmpcr1 &= ~TIM_CR1_CKD;
  5023. 8002176: f421 7140 bic.w r1, r1, #768 ; 0x300
  5024. tmpcr1 |= (uint32_t)Structure->ClockDivision;
  5025. 800217a: 4319 orrs r1, r3
  5026. TIMx->ARR = (uint32_t)Structure->Period ;
  5027. 800217c: 68e3 ldr r3, [r4, #12]
  5028. 800217e: 62d3 str r3, [r2, #44] ; 0x2c
  5029. TIMx->PSC = Structure->Prescaler;
  5030. 8002180: 6863 ldr r3, [r4, #4]
  5031. 8002182: 6293 str r3, [r2, #40] ; 0x28
  5032. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  5033. 8002184: f021 0180 bic.w r1, r1, #128 ; 0x80
  5034. 8002188: 4301 orrs r1, r0
  5035. if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))
  5036. 800218a: e7dc b.n 8002146 <HAL_TIM_Base_Init+0xfa>
  5037. 800218c: 40012c00 .word 0x40012c00
  5038. 08002190 <HAL_TIM_Base_DeInit>:
  5039. htim->State = HAL_TIM_STATE_BUSY;
  5040. 8002190: 2302 movs r3, #2
  5041. __HAL_TIM_DISABLE(htim);
  5042. 8002192: 6802 ldr r2, [r0, #0]
  5043. {
  5044. 8002194: b510 push {r4, lr}
  5045. htim->State = HAL_TIM_STATE_BUSY;
  5046. 8002196: f880 303d strb.w r3, [r0, #61] ; 0x3d
  5047. __HAL_TIM_DISABLE(htim);
  5048. 800219a: 6a13 ldr r3, [r2, #32]
  5049. 800219c: f003 3311 and.w r3, r3, #286331153 ; 0x11111111
  5050. 80021a0: f023 5388 bic.w r3, r3, #285212672 ; 0x11000000
  5051. {
  5052. 80021a4: 4604 mov r4, r0
  5053. __HAL_TIM_DISABLE(htim);
  5054. 80021a6: b943 cbnz r3, 80021ba <HAL_TIM_Base_DeInit+0x2a>
  5055. 80021a8: 6a11 ldr r1, [r2, #32]
  5056. 80021aa: f244 4344 movw r3, #17476 ; 0x4444
  5057. 80021ae: 4219 tst r1, r3
  5058. 80021b0: d103 bne.n 80021ba <HAL_TIM_Base_DeInit+0x2a>
  5059. 80021b2: 6813 ldr r3, [r2, #0]
  5060. 80021b4: f023 0301 bic.w r3, r3, #1
  5061. 80021b8: 6013 str r3, [r2, #0]
  5062. HAL_TIM_Base_MspDeInit(htim);
  5063. 80021ba: 4620 mov r0, r4
  5064. 80021bc: f7fe fc56 bl 8000a6c <HAL_TIM_Base_MspDeInit>
  5065. htim->DMABurstState = HAL_DMA_BURST_STATE_RESET;
  5066. 80021c0: 2000 movs r0, #0
  5067. 80021c2: f884 0048 strb.w r0, [r4, #72] ; 0x48
  5068. __HAL_UNLOCK(htim);
  5069. 80021c6: f884 003c strb.w r0, [r4, #60] ; 0x3c
  5070. TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET);
  5071. 80021ca: f884 003e strb.w r0, [r4, #62] ; 0x3e
  5072. 80021ce: f884 003f strb.w r0, [r4, #63] ; 0x3f
  5073. 80021d2: f884 0040 strb.w r0, [r4, #64] ; 0x40
  5074. 80021d6: f884 0041 strb.w r0, [r4, #65] ; 0x41
  5075. 80021da: f884 0042 strb.w r0, [r4, #66] ; 0x42
  5076. 80021de: f884 0043 strb.w r0, [r4, #67] ; 0x43
  5077. TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET);
  5078. 80021e2: f884 0044 strb.w r0, [r4, #68] ; 0x44
  5079. 80021e6: f884 0045 strb.w r0, [r4, #69] ; 0x45
  5080. 80021ea: f884 0046 strb.w r0, [r4, #70] ; 0x46
  5081. 80021ee: f884 0047 strb.w r0, [r4, #71] ; 0x47
  5082. htim->State = HAL_TIM_STATE_RESET;
  5083. 80021f2: f884 003d strb.w r0, [r4, #61] ; 0x3d
  5084. }
  5085. 80021f6: bd10 pop {r4, pc}
  5086. 080021f8 <HAL_TIM_Base_Stop>:
  5087. __HAL_TIM_DISABLE(htim);
  5088. 80021f8: 6802 ldr r2, [r0, #0]
  5089. 80021fa: 6a13 ldr r3, [r2, #32]
  5090. 80021fc: f003 3311 and.w r3, r3, #286331153 ; 0x11111111
  5091. 8002200: f023 5388 bic.w r3, r3, #285212672 ; 0x11000000
  5092. 8002204: b943 cbnz r3, 8002218 <HAL_TIM_Base_Stop+0x20>
  5093. 8002206: 6a11 ldr r1, [r2, #32]
  5094. 8002208: f244 4344 movw r3, #17476 ; 0x4444
  5095. 800220c: 4219 tst r1, r3
  5096. 800220e: d103 bne.n 8002218 <HAL_TIM_Base_Stop+0x20>
  5097. 8002210: 6813 ldr r3, [r2, #0]
  5098. 8002212: f023 0301 bic.w r3, r3, #1
  5099. 8002216: 6013 str r3, [r2, #0]
  5100. htim->State = HAL_TIM_STATE_READY;
  5101. 8002218: 2301 movs r3, #1
  5102. 800221a: f880 303d strb.w r3, [r0, #61] ; 0x3d
  5103. }
  5104. 800221e: 2000 movs r0, #0
  5105. 8002220: 4770 bx lr
  5106. 8002222: bf00 nop
  5107. 08002224 <HAL_TIM_Base_Start_IT>:
  5108. if (htim->State != HAL_TIM_STATE_READY)
  5109. 8002224: f890 303d ldrb.w r3, [r0, #61] ; 0x3d
  5110. 8002228: 2b01 cmp r3, #1
  5111. 800222a: d122 bne.n 8002272 <HAL_TIM_Base_Start_IT+0x4e>
  5112. __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
  5113. 800222c: 6803 ldr r3, [r0, #0]
  5114. if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
  5115. 800222e: 4917 ldr r1, [pc, #92] ; (800228c <HAL_TIM_Base_Start_IT+0x68>)
  5116. htim->State = HAL_TIM_STATE_BUSY;
  5117. 8002230: 2202 movs r2, #2
  5118. 8002232: f880 203d strb.w r2, [r0, #61] ; 0x3d
  5119. __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
  5120. 8002236: 68da ldr r2, [r3, #12]
  5121. if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
  5122. 8002238: 428b cmp r3, r1
  5123. __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
  5124. 800223a: f042 0201 orr.w r2, r2, #1
  5125. 800223e: 60da str r2, [r3, #12]
  5126. if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
  5127. 8002240: d019 beq.n 8002276 <HAL_TIM_Base_Start_IT+0x52>
  5128. 8002242: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
  5129. 8002246: d016 beq.n 8002276 <HAL_TIM_Base_Start_IT+0x52>
  5130. 8002248: 4a11 ldr r2, [pc, #68] ; (8002290 <HAL_TIM_Base_Start_IT+0x6c>)
  5131. 800224a: 4293 cmp r3, r2
  5132. 800224c: d013 beq.n 8002276 <HAL_TIM_Base_Start_IT+0x52>
  5133. 800224e: f502 6280 add.w r2, r2, #1024 ; 0x400
  5134. 8002252: 4293 cmp r3, r2
  5135. 8002254: d00f beq.n 8002276 <HAL_TIM_Base_Start_IT+0x52>
  5136. 8002256: f502 3296 add.w r2, r2, #76800 ; 0x12c00
  5137. 800225a: 4293 cmp r3, r2
  5138. 800225c: d00b beq.n 8002276 <HAL_TIM_Base_Start_IT+0x52>
  5139. 800225e: f502 6240 add.w r2, r2, #3072 ; 0xc00
  5140. 8002262: 4293 cmp r3, r2
  5141. 8002264: d007 beq.n 8002276 <HAL_TIM_Base_Start_IT+0x52>
  5142. __HAL_TIM_ENABLE(htim);
  5143. 8002266: 681a ldr r2, [r3, #0]
  5144. 8002268: f042 0201 orr.w r2, r2, #1
  5145. return HAL_OK;
  5146. 800226c: 2000 movs r0, #0
  5147. __HAL_TIM_ENABLE(htim);
  5148. 800226e: 601a str r2, [r3, #0]
  5149. 8002270: 4770 bx lr
  5150. return HAL_ERROR;
  5151. 8002272: 2001 movs r0, #1
  5152. 8002274: 4770 bx lr
  5153. tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
  5154. 8002276: 6899 ldr r1, [r3, #8]
  5155. 8002278: 4a06 ldr r2, [pc, #24] ; (8002294 <HAL_TIM_Base_Start_IT+0x70>)
  5156. 800227a: 400a ands r2, r1
  5157. if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
  5158. 800227c: 2a06 cmp r2, #6
  5159. 800227e: d002 beq.n 8002286 <HAL_TIM_Base_Start_IT+0x62>
  5160. 8002280: f5b2 3f80 cmp.w r2, #65536 ; 0x10000
  5161. 8002284: d1ef bne.n 8002266 <HAL_TIM_Base_Start_IT+0x42>
  5162. return HAL_OK;
  5163. 8002286: 2000 movs r0, #0
  5164. }
  5165. 8002288: 4770 bx lr
  5166. 800228a: bf00 nop
  5167. 800228c: 40012c00 .word 0x40012c00
  5168. 8002290: 40000400 .word 0x40000400
  5169. 8002294: 00010007 .word 0x00010007
  5170. 08002298 <HAL_TIM_PeriodElapsedCallback>:
  5171. 8002298: 4770 bx lr
  5172. 800229a: bf00 nop
  5173. 0800229c <HAL_TIM_OC_DelayElapsedCallback>:
  5174. 800229c: 4770 bx lr
  5175. 800229e: bf00 nop
  5176. 080022a0 <HAL_TIM_IC_CaptureCallback>:
  5177. 80022a0: 4770 bx lr
  5178. 80022a2: bf00 nop
  5179. 080022a4 <HAL_TIM_PWM_PulseFinishedCallback>:
  5180. 80022a4: 4770 bx lr
  5181. 80022a6: bf00 nop
  5182. 080022a8 <HAL_TIM_TriggerCallback>:
  5183. 80022a8: 4770 bx lr
  5184. 80022aa: bf00 nop
  5185. 080022ac <HAL_TIM_IRQHandler>:
  5186. uint32_t itsource = htim->Instance->DIER;
  5187. 80022ac: 6803 ldr r3, [r0, #0]
  5188. {
  5189. 80022ae: b570 push {r4, r5, r6, lr}
  5190. uint32_t itsource = htim->Instance->DIER;
  5191. 80022b0: 68de ldr r6, [r3, #12]
  5192. uint32_t itflag = htim->Instance->SR;
  5193. 80022b2: 691c ldr r4, [r3, #16]
  5194. if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1))
  5195. 80022b4: 07a2 lsls r2, r4, #30
  5196. {
  5197. 80022b6: 4605 mov r5, r0
  5198. if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1))
  5199. 80022b8: d501 bpl.n 80022be <HAL_TIM_IRQHandler+0x12>
  5200. if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1))
  5201. 80022ba: 07b1 lsls r1, r6, #30
  5202. 80022bc: d46c bmi.n 8002398 <HAL_TIM_IRQHandler+0xec>
  5203. if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2))
  5204. 80022be: 0763 lsls r3, r4, #29
  5205. 80022c0: d501 bpl.n 80022c6 <HAL_TIM_IRQHandler+0x1a>
  5206. if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2))
  5207. 80022c2: 0770 lsls r0, r6, #29
  5208. 80022c4: d455 bmi.n 8002372 <HAL_TIM_IRQHandler+0xc6>
  5209. if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3))
  5210. 80022c6: 0721 lsls r1, r4, #28
  5211. 80022c8: d501 bpl.n 80022ce <HAL_TIM_IRQHandler+0x22>
  5212. if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3))
  5213. 80022ca: 0732 lsls r2, r6, #28
  5214. 80022cc: d43e bmi.n 800234c <HAL_TIM_IRQHandler+0xa0>
  5215. if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4))
  5216. 80022ce: 06e0 lsls r0, r4, #27
  5217. 80022d0: d501 bpl.n 80022d6 <HAL_TIM_IRQHandler+0x2a>
  5218. if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4))
  5219. 80022d2: 06f1 lsls r1, r6, #27
  5220. 80022d4: d426 bmi.n 8002324 <HAL_TIM_IRQHandler+0x78>
  5221. if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE))
  5222. 80022d6: 07e2 lsls r2, r4, #31
  5223. 80022d8: d501 bpl.n 80022de <HAL_TIM_IRQHandler+0x32>
  5224. if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE))
  5225. 80022da: 07f3 lsls r3, r6, #31
  5226. 80022dc: d47a bmi.n 80023d4 <HAL_TIM_IRQHandler+0x128>
  5227. if (((itflag & (TIM_FLAG_BREAK)) == (TIM_FLAG_BREAK)) || \
  5228. 80022de: f414 5f02 tst.w r4, #8320 ; 0x2080
  5229. 80022e2: d069 beq.n 80023b8 <HAL_TIM_IRQHandler+0x10c>
  5230. if ((itsource & (TIM_IT_BREAK)) == (TIM_IT_BREAK))
  5231. 80022e4: 0630 lsls r0, r6, #24
  5232. 80022e6: d47d bmi.n 80023e4 <HAL_TIM_IRQHandler+0x138>
  5233. if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER))
  5234. 80022e8: 0660 lsls r0, r4, #25
  5235. 80022ea: d502 bpl.n 80022f2 <HAL_TIM_IRQHandler+0x46>
  5236. if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER))
  5237. 80022ec: 0671 lsls r1, r6, #25
  5238. 80022ee: f100 808b bmi.w 8002408 <HAL_TIM_IRQHandler+0x15c>
  5239. if ((itflag & (TIM_FLAG_COM)) == (TIM_FLAG_COM))
  5240. 80022f2: 06a2 lsls r2, r4, #26
  5241. 80022f4: d502 bpl.n 80022fc <HAL_TIM_IRQHandler+0x50>
  5242. if ((itsource & (TIM_IT_COM)) == (TIM_IT_COM))
  5243. 80022f6: 06b3 lsls r3, r6, #26
  5244. 80022f8: f100 808e bmi.w 8002418 <HAL_TIM_IRQHandler+0x16c>
  5245. if ((itflag & (TIM_FLAG_IDX)) == (TIM_FLAG_IDX))
  5246. 80022fc: 02e0 lsls r0, r4, #11
  5247. 80022fe: d502 bpl.n 8002306 <HAL_TIM_IRQHandler+0x5a>
  5248. if ((itsource & (TIM_IT_IDX)) == (TIM_IT_IDX))
  5249. 8002300: 02f1 lsls r1, r6, #11
  5250. 8002302: f100 8091 bmi.w 8002428 <HAL_TIM_IRQHandler+0x17c>
  5251. if ((itflag & (TIM_FLAG_DIR)) == (TIM_FLAG_DIR))
  5252. 8002306: 02a2 lsls r2, r4, #10
  5253. 8002308: d502 bpl.n 8002310 <HAL_TIM_IRQHandler+0x64>
  5254. if ((itsource & (TIM_IT_DIR)) == (TIM_IT_DIR))
  5255. 800230a: 02b3 lsls r3, r6, #10
  5256. 800230c: f100 8094 bmi.w 8002438 <HAL_TIM_IRQHandler+0x18c>
  5257. if ((itflag & (TIM_FLAG_IERR)) == (TIM_FLAG_IERR))
  5258. 8002310: 0260 lsls r0, r4, #9
  5259. 8002312: d502 bpl.n 800231a <HAL_TIM_IRQHandler+0x6e>
  5260. if ((itsource & (TIM_IT_IERR)) == (TIM_IT_IERR))
  5261. 8002314: 0271 lsls r1, r6, #9
  5262. 8002316: f100 8097 bmi.w 8002448 <HAL_TIM_IRQHandler+0x19c>
  5263. if ((itflag & (TIM_FLAG_TERR)) == (TIM_FLAG_TERR))
  5264. 800231a: 0222 lsls r2, r4, #8
  5265. 800231c: d501 bpl.n 8002322 <HAL_TIM_IRQHandler+0x76>
  5266. if ((itsource & (TIM_IT_TERR)) == (TIM_IT_TERR))
  5267. 800231e: 0233 lsls r3, r6, #8
  5268. 8002320: d44f bmi.n 80023c2 <HAL_TIM_IRQHandler+0x116>
  5269. }
  5270. 8002322: bd70 pop {r4, r5, r6, pc}
  5271. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4);
  5272. 8002324: 682b ldr r3, [r5, #0]
  5273. 8002326: f06f 0210 mvn.w r2, #16
  5274. 800232a: 611a str r2, [r3, #16]
  5275. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
  5276. 800232c: 2208 movs r2, #8
  5277. 800232e: 772a strb r2, [r5, #28]
  5278. if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U)
  5279. 8002330: 69db ldr r3, [r3, #28]
  5280. 8002332: f413 7f40 tst.w r3, #768 ; 0x300
  5281. HAL_TIM_IC_CaptureCallback(htim);
  5282. 8002336: 4628 mov r0, r5
  5283. if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U)
  5284. 8002338: f040 8097 bne.w 800246a <HAL_TIM_IRQHandler+0x1be>
  5285. HAL_TIM_OC_DelayElapsedCallback(htim);
  5286. 800233c: f7ff ffae bl 800229c <HAL_TIM_OC_DelayElapsedCallback>
  5287. HAL_TIM_PWM_PulseFinishedCallback(htim);
  5288. 8002340: 4628 mov r0, r5
  5289. 8002342: f7ff ffaf bl 80022a4 <HAL_TIM_PWM_PulseFinishedCallback>
  5290. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
  5291. 8002346: 2300 movs r3, #0
  5292. 8002348: 772b strb r3, [r5, #28]
  5293. 800234a: e7c4 b.n 80022d6 <HAL_TIM_IRQHandler+0x2a>
  5294. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3);
  5295. 800234c: 682b ldr r3, [r5, #0]
  5296. 800234e: f06f 0208 mvn.w r2, #8
  5297. 8002352: 611a str r2, [r3, #16]
  5298. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
  5299. 8002354: 2204 movs r2, #4
  5300. 8002356: 772a strb r2, [r5, #28]
  5301. if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U)
  5302. 8002358: 69db ldr r3, [r3, #28]
  5303. 800235a: 079b lsls r3, r3, #30
  5304. HAL_TIM_IC_CaptureCallback(htim);
  5305. 800235c: 4628 mov r0, r5
  5306. if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U)
  5307. 800235e: f040 8081 bne.w 8002464 <HAL_TIM_IRQHandler+0x1b8>
  5308. HAL_TIM_OC_DelayElapsedCallback(htim);
  5309. 8002362: f7ff ff9b bl 800229c <HAL_TIM_OC_DelayElapsedCallback>
  5310. HAL_TIM_PWM_PulseFinishedCallback(htim);
  5311. 8002366: 4628 mov r0, r5
  5312. 8002368: f7ff ff9c bl 80022a4 <HAL_TIM_PWM_PulseFinishedCallback>
  5313. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
  5314. 800236c: 2300 movs r3, #0
  5315. 800236e: 772b strb r3, [r5, #28]
  5316. 8002370: e7ad b.n 80022ce <HAL_TIM_IRQHandler+0x22>
  5317. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2);
  5318. 8002372: 682b ldr r3, [r5, #0]
  5319. 8002374: f06f 0204 mvn.w r2, #4
  5320. 8002378: 611a str r2, [r3, #16]
  5321. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
  5322. 800237a: 2202 movs r2, #2
  5323. 800237c: 772a strb r2, [r5, #28]
  5324. if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U)
  5325. 800237e: 699b ldr r3, [r3, #24]
  5326. 8002380: f413 7f40 tst.w r3, #768 ; 0x300
  5327. HAL_TIM_IC_CaptureCallback(htim);
  5328. 8002384: 4628 mov r0, r5
  5329. if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U)
  5330. 8002386: d16a bne.n 800245e <HAL_TIM_IRQHandler+0x1b2>
  5331. HAL_TIM_OC_DelayElapsedCallback(htim);
  5332. 8002388: f7ff ff88 bl 800229c <HAL_TIM_OC_DelayElapsedCallback>
  5333. HAL_TIM_PWM_PulseFinishedCallback(htim);
  5334. 800238c: 4628 mov r0, r5
  5335. 800238e: f7ff ff89 bl 80022a4 <HAL_TIM_PWM_PulseFinishedCallback>
  5336. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
  5337. 8002392: 2300 movs r3, #0
  5338. 8002394: 772b strb r3, [r5, #28]
  5339. 8002396: e796 b.n 80022c6 <HAL_TIM_IRQHandler+0x1a>
  5340. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1);
  5341. 8002398: f06f 0202 mvn.w r2, #2
  5342. 800239c: 611a str r2, [r3, #16]
  5343. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
  5344. 800239e: 2201 movs r2, #1
  5345. 80023a0: 7702 strb r2, [r0, #28]
  5346. if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U)
  5347. 80023a2: 699b ldr r3, [r3, #24]
  5348. 80023a4: 079a lsls r2, r3, #30
  5349. 80023a6: d157 bne.n 8002458 <HAL_TIM_IRQHandler+0x1ac>
  5350. HAL_TIM_OC_DelayElapsedCallback(htim);
  5351. 80023a8: f7ff ff78 bl 800229c <HAL_TIM_OC_DelayElapsedCallback>
  5352. HAL_TIM_PWM_PulseFinishedCallback(htim);
  5353. 80023ac: 4628 mov r0, r5
  5354. 80023ae: f7ff ff79 bl 80022a4 <HAL_TIM_PWM_PulseFinishedCallback>
  5355. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
  5356. 80023b2: 2300 movs r3, #0
  5357. 80023b4: 772b strb r3, [r5, #28]
  5358. 80023b6: e782 b.n 80022be <HAL_TIM_IRQHandler+0x12>
  5359. if ((itflag & (TIM_FLAG_BREAK2)) == (TIM_FLAG_BREAK2))
  5360. 80023b8: 05e2 lsls r2, r4, #23
  5361. 80023ba: d595 bpl.n 80022e8 <HAL_TIM_IRQHandler+0x3c>
  5362. if ((itsource & (TIM_IT_BREAK)) == (TIM_IT_BREAK))
  5363. 80023bc: 0633 lsls r3, r6, #24
  5364. 80023be: d41b bmi.n 80023f8 <HAL_TIM_IRQHandler+0x14c>
  5365. 80023c0: e792 b.n 80022e8 <HAL_TIM_IRQHandler+0x3c>
  5366. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TERR);
  5367. 80023c2: 682b ldr r3, [r5, #0]
  5368. 80023c4: f46f 0200 mvn.w r2, #8388608 ; 0x800000
  5369. HAL_TIMEx_TransitionErrorCallback(htim);
  5370. 80023c8: 4628 mov r0, r5
  5371. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TERR);
  5372. 80023ca: 611a str r2, [r3, #16]
  5373. }
  5374. 80023cc: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr}
  5375. HAL_TIMEx_TransitionErrorCallback(htim);
  5376. 80023d0: f000 b8a4 b.w 800251c <HAL_TIMEx_TransitionErrorCallback>
  5377. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE);
  5378. 80023d4: 682b ldr r3, [r5, #0]
  5379. 80023d6: f06f 0201 mvn.w r2, #1
  5380. 80023da: 611a str r2, [r3, #16]
  5381. HAL_TIM_PeriodElapsedCallback(htim);
  5382. 80023dc: 4628 mov r0, r5
  5383. 80023de: f7ff ff5b bl 8002298 <HAL_TIM_PeriodElapsedCallback>
  5384. 80023e2: e77c b.n 80022de <HAL_TIM_IRQHandler+0x32>
  5385. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK | TIM_FLAG_SYSTEM_BREAK);
  5386. 80023e4: 682b ldr r3, [r5, #0]
  5387. 80023e6: f46f 5202 mvn.w r2, #8320 ; 0x2080
  5388. 80023ea: 611a str r2, [r3, #16]
  5389. HAL_TIMEx_BreakCallback(htim);
  5390. 80023ec: 4628 mov r0, r5
  5391. 80023ee: f000 f88b bl 8002508 <HAL_TIMEx_BreakCallback>
  5392. if ((itflag & (TIM_FLAG_BREAK2)) == (TIM_FLAG_BREAK2))
  5393. 80023f2: 05e1 lsls r1, r4, #23
  5394. 80023f4: f57f af78 bpl.w 80022e8 <HAL_TIM_IRQHandler+0x3c>
  5395. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK2);
  5396. 80023f8: 682b ldr r3, [r5, #0]
  5397. 80023fa: f46f 7280 mvn.w r2, #256 ; 0x100
  5398. 80023fe: 611a str r2, [r3, #16]
  5399. HAL_TIMEx_Break2Callback(htim);
  5400. 8002400: 4628 mov r0, r5
  5401. 8002402: f000 f883 bl 800250c <HAL_TIMEx_Break2Callback>
  5402. 8002406: e76f b.n 80022e8 <HAL_TIM_IRQHandler+0x3c>
  5403. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER);
  5404. 8002408: 682b ldr r3, [r5, #0]
  5405. 800240a: f06f 0240 mvn.w r2, #64 ; 0x40
  5406. 800240e: 611a str r2, [r3, #16]
  5407. HAL_TIM_TriggerCallback(htim);
  5408. 8002410: 4628 mov r0, r5
  5409. 8002412: f7ff ff49 bl 80022a8 <HAL_TIM_TriggerCallback>
  5410. 8002416: e76c b.n 80022f2 <HAL_TIM_IRQHandler+0x46>
  5411. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_COM);
  5412. 8002418: 682b ldr r3, [r5, #0]
  5413. 800241a: f06f 0220 mvn.w r2, #32
  5414. 800241e: 611a str r2, [r3, #16]
  5415. HAL_TIMEx_CommutCallback(htim);
  5416. 8002420: 4628 mov r0, r5
  5417. 8002422: f000 f86f bl 8002504 <HAL_TIMEx_CommutCallback>
  5418. 8002426: e769 b.n 80022fc <HAL_TIM_IRQHandler+0x50>
  5419. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_IDX);
  5420. 8002428: 682b ldr r3, [r5, #0]
  5421. 800242a: f46f 1280 mvn.w r2, #1048576 ; 0x100000
  5422. 800242e: 611a str r2, [r3, #16]
  5423. HAL_TIMEx_EncoderIndexCallback(htim);
  5424. 8002430: 4628 mov r0, r5
  5425. 8002432: f000 f86d bl 8002510 <HAL_TIMEx_EncoderIndexCallback>
  5426. 8002436: e766 b.n 8002306 <HAL_TIM_IRQHandler+0x5a>
  5427. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_DIR);
  5428. 8002438: 682b ldr r3, [r5, #0]
  5429. 800243a: f46f 1200 mvn.w r2, #2097152 ; 0x200000
  5430. 800243e: 611a str r2, [r3, #16]
  5431. HAL_TIMEx_DirectionChangeCallback(htim);
  5432. 8002440: 4628 mov r0, r5
  5433. 8002442: f000 f867 bl 8002514 <HAL_TIMEx_DirectionChangeCallback>
  5434. 8002446: e763 b.n 8002310 <HAL_TIM_IRQHandler+0x64>
  5435. __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_IERR);
  5436. 8002448: 682b ldr r3, [r5, #0]
  5437. 800244a: f46f 0280 mvn.w r2, #4194304 ; 0x400000
  5438. 800244e: 611a str r2, [r3, #16]
  5439. HAL_TIMEx_IndexErrorCallback(htim);
  5440. 8002450: 4628 mov r0, r5
  5441. 8002452: f000 f861 bl 8002518 <HAL_TIMEx_IndexErrorCallback>
  5442. 8002456: e760 b.n 800231a <HAL_TIM_IRQHandler+0x6e>
  5443. HAL_TIM_IC_CaptureCallback(htim);
  5444. 8002458: f7ff ff22 bl 80022a0 <HAL_TIM_IC_CaptureCallback>
  5445. 800245c: e7a9 b.n 80023b2 <HAL_TIM_IRQHandler+0x106>
  5446. HAL_TIM_IC_CaptureCallback(htim);
  5447. 800245e: f7ff ff1f bl 80022a0 <HAL_TIM_IC_CaptureCallback>
  5448. 8002462: e796 b.n 8002392 <HAL_TIM_IRQHandler+0xe6>
  5449. HAL_TIM_IC_CaptureCallback(htim);
  5450. 8002464: f7ff ff1c bl 80022a0 <HAL_TIM_IC_CaptureCallback>
  5451. 8002468: e780 b.n 800236c <HAL_TIM_IRQHandler+0xc0>
  5452. HAL_TIM_IC_CaptureCallback(htim);
  5453. 800246a: f7ff ff19 bl 80022a0 <HAL_TIM_IC_CaptureCallback>
  5454. 800246e: e76a b.n 8002346 <HAL_TIM_IRQHandler+0x9a>
  5455. 08002470 <HAL_TIMEx_MasterConfigSynchronization>:
  5456. assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance));
  5457. assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
  5458. assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
  5459. /* Check input state */
  5460. __HAL_LOCK(htim);
  5461. 8002470: f890 303c ldrb.w r3, [r0, #60] ; 0x3c
  5462. 8002474: 2b01 cmp r3, #1
  5463. 8002476: d03e beq.n 80024f6 <HAL_TIMEx_MasterConfigSynchronization+0x86>
  5464. {
  5465. 8002478: b470 push {r4, r5, r6}
  5466. /* Change the handler state */
  5467. htim->State = HAL_TIM_STATE_BUSY;
  5468. /* Get the TIMx CR2 register value */
  5469. tmpcr2 = htim->Instance->CR2;
  5470. 800247a: 6802 ldr r2, [r0, #0]
  5471. /* Get the TIMx SMCR register value */
  5472. tmpsmcr = htim->Instance->SMCR;
  5473. /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */
  5474. if (IS_TIM_TRGO2_INSTANCE(htim->Instance))
  5475. 800247c: 4d1f ldr r5, [pc, #124] ; (80024fc <HAL_TIMEx_MasterConfigSynchronization+0x8c>)
  5476. htim->State = HAL_TIM_STATE_BUSY;
  5477. 800247e: 2302 movs r3, #2
  5478. 8002480: f880 303d strb.w r3, [r0, #61] ; 0x3d
  5479. if (IS_TIM_TRGO2_INSTANCE(htim->Instance))
  5480. 8002484: 42aa cmp r2, r5
  5481. tmpcr2 = htim->Instance->CR2;
  5482. 8002486: 6853 ldr r3, [r2, #4]
  5483. tmpsmcr = htim->Instance->SMCR;
  5484. 8002488: 6894 ldr r4, [r2, #8]
  5485. if (IS_TIM_TRGO2_INSTANCE(htim->Instance))
  5486. 800248a: d028 beq.n 80024de <HAL_TIMEx_MasterConfigSynchronization+0x6e>
  5487. 800248c: f505 6500 add.w r5, r5, #2048 ; 0x800
  5488. 8002490: 42aa cmp r2, r5
  5489. 8002492: d024 beq.n 80024de <HAL_TIMEx_MasterConfigSynchronization+0x6e>
  5490. }
  5491. /* Reset the MMS Bits */
  5492. tmpcr2 &= ~TIM_CR2_MMS;
  5493. /* Select the TRGO source */
  5494. tmpcr2 |= sMasterConfig->MasterOutputTrigger;
  5495. 8002494: 680e ldr r6, [r1, #0]
  5496. tmpcr2 &= ~TIM_CR2_MMS;
  5497. 8002496: f023 7300 bic.w r3, r3, #33554432 ; 0x2000000
  5498. 800249a: f023 0370 bic.w r3, r3, #112 ; 0x70
  5499. tmpcr2 |= sMasterConfig->MasterOutputTrigger;
  5500. 800249e: 4333 orrs r3, r6
  5501. /* Update TIMx CR2 */
  5502. htim->Instance->CR2 = tmpcr2;
  5503. if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
  5504. 80024a0: f1b2 4f80 cmp.w r2, #1073741824 ; 0x40000000
  5505. htim->Instance->CR2 = tmpcr2;
  5506. 80024a4: 6053 str r3, [r2, #4]
  5507. if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
  5508. 80024a6: d00c beq.n 80024c2 <HAL_TIMEx_MasterConfigSynchronization+0x52>
  5509. 80024a8: 4b15 ldr r3, [pc, #84] ; (8002500 <HAL_TIMEx_MasterConfigSynchronization+0x90>)
  5510. 80024aa: 429a cmp r2, r3
  5511. 80024ac: d009 beq.n 80024c2 <HAL_TIMEx_MasterConfigSynchronization+0x52>
  5512. 80024ae: f503 6380 add.w r3, r3, #1024 ; 0x400
  5513. 80024b2: 429a cmp r2, r3
  5514. 80024b4: d005 beq.n 80024c2 <HAL_TIMEx_MasterConfigSynchronization+0x52>
  5515. 80024b6: 42aa cmp r2, r5
  5516. 80024b8: d003 beq.n 80024c2 <HAL_TIMEx_MasterConfigSynchronization+0x52>
  5517. 80024ba: f503 339c add.w r3, r3, #79872 ; 0x13800
  5518. 80024be: 429a cmp r2, r3
  5519. 80024c0: d104 bne.n 80024cc <HAL_TIMEx_MasterConfigSynchronization+0x5c>
  5520. {
  5521. /* Reset the MSM Bit */
  5522. tmpsmcr &= ~TIM_SMCR_MSM;
  5523. /* Set master mode */
  5524. tmpsmcr |= sMasterConfig->MasterSlaveMode;
  5525. 80024c2: 688b ldr r3, [r1, #8]
  5526. tmpsmcr &= ~TIM_SMCR_MSM;
  5527. 80024c4: f024 0480 bic.w r4, r4, #128 ; 0x80
  5528. tmpsmcr |= sMasterConfig->MasterSlaveMode;
  5529. 80024c8: 431c orrs r4, r3
  5530. /* Update TIMx SMCR */
  5531. htim->Instance->SMCR = tmpsmcr;
  5532. 80024ca: 6094 str r4, [r2, #8]
  5533. }
  5534. /* Change the htim state */
  5535. htim->State = HAL_TIM_STATE_READY;
  5536. __HAL_UNLOCK(htim);
  5537. 80024cc: 2300 movs r3, #0
  5538. htim->State = HAL_TIM_STATE_READY;
  5539. 80024ce: 2201 movs r2, #1
  5540. 80024d0: f880 203d strb.w r2, [r0, #61] ; 0x3d
  5541. __HAL_UNLOCK(htim);
  5542. 80024d4: f880 303c strb.w r3, [r0, #60] ; 0x3c
  5543. return HAL_OK;
  5544. }
  5545. 80024d8: bc70 pop {r4, r5, r6}
  5546. return HAL_OK;
  5547. 80024da: 4618 mov r0, r3
  5548. }
  5549. 80024dc: 4770 bx lr
  5550. tmpcr2 |= sMasterConfig->MasterOutputTrigger2;
  5551. 80024de: 684d ldr r5, [r1, #4]
  5552. tmpcr2 &= ~TIM_CR2_MMS2;
  5553. 80024e0: f423 0370 bic.w r3, r3, #15728640 ; 0xf00000
  5554. tmpcr2 |= sMasterConfig->MasterOutputTrigger2;
  5555. 80024e4: 432b orrs r3, r5
  5556. tmpcr2 &= ~TIM_CR2_MMS;
  5557. 80024e6: f023 7300 bic.w r3, r3, #33554432 ; 0x2000000
  5558. tmpcr2 |= sMasterConfig->MasterOutputTrigger;
  5559. 80024ea: 680d ldr r5, [r1, #0]
  5560. tmpcr2 &= ~TIM_CR2_MMS;
  5561. 80024ec: f023 0370 bic.w r3, r3, #112 ; 0x70
  5562. tmpcr2 |= sMasterConfig->MasterOutputTrigger;
  5563. 80024f0: 432b orrs r3, r5
  5564. htim->Instance->CR2 = tmpcr2;
  5565. 80024f2: 6053 str r3, [r2, #4]
  5566. if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
  5567. 80024f4: e7e5 b.n 80024c2 <HAL_TIMEx_MasterConfigSynchronization+0x52>
  5568. __HAL_LOCK(htim);
  5569. 80024f6: 2002 movs r0, #2
  5570. }
  5571. 80024f8: 4770 bx lr
  5572. 80024fa: bf00 nop
  5573. 80024fc: 40012c00 .word 0x40012c00
  5574. 8002500: 40000400 .word 0x40000400
  5575. 08002504 <HAL_TIMEx_CommutCallback>:
  5576. 8002504: 4770 bx lr
  5577. 8002506: bf00 nop
  5578. 08002508 <HAL_TIMEx_BreakCallback>:
  5579. 8002508: 4770 bx lr
  5580. 800250a: bf00 nop
  5581. 0800250c <HAL_TIMEx_Break2Callback>:
  5582. 800250c: 4770 bx lr
  5583. 800250e: bf00 nop
  5584. 08002510 <HAL_TIMEx_EncoderIndexCallback>:
  5585. 8002510: 4770 bx lr
  5586. 8002512: bf00 nop
  5587. 08002514 <HAL_TIMEx_DirectionChangeCallback>:
  5588. 8002514: 4770 bx lr
  5589. 8002516: bf00 nop
  5590. 08002518 <HAL_TIMEx_IndexErrorCallback>:
  5591. 8002518: 4770 bx lr
  5592. 800251a: bf00 nop
  5593. 0800251c <HAL_TIMEx_TransitionErrorCallback>:
  5594. 800251c: 4770 bx lr
  5595. 800251e: bf00 nop
  5596. 08002520 <HAL_UART_DeInit>:
  5597. * @retval HAL status
  5598. */
  5599. HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart)
  5600. {
  5601. /* Check the UART handle allocation */
  5602. if (huart == NULL)
  5603. 8002520: b1d8 cbz r0, 800255a <HAL_UART_DeInit+0x3a>
  5604. {
  5605. 8002522: b538 push {r3, r4, r5, lr}
  5606. }
  5607. /* Check the parameters */
  5608. assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance)));
  5609. huart->gState = HAL_UART_STATE_BUSY;
  5610. 8002524: 2224 movs r2, #36 ; 0x24
  5611. __HAL_UART_DISABLE(huart);
  5612. 8002526: 6803 ldr r3, [r0, #0]
  5613. huart->gState = HAL_UART_STATE_BUSY;
  5614. 8002528: f8c0 2088 str.w r2, [r0, #136] ; 0x88
  5615. __HAL_UART_DISABLE(huart);
  5616. 800252c: 681a ldr r2, [r3, #0]
  5617. huart->Instance->CR1 = 0x0U;
  5618. 800252e: 2500 movs r5, #0
  5619. 8002530: 4604 mov r4, r0
  5620. __HAL_UART_DISABLE(huart);
  5621. 8002532: f022 0201 bic.w r2, r2, #1
  5622. 8002536: 601a str r2, [r3, #0]
  5623. huart->Instance->CR1 = 0x0U;
  5624. 8002538: 601d str r5, [r3, #0]
  5625. huart->Instance->CR2 = 0x0U;
  5626. 800253a: 605d str r5, [r3, #4]
  5627. huart->Instance->CR3 = 0x0U;
  5628. 800253c: 609d str r5, [r3, #8]
  5629. }
  5630. /* DeInit the low level hardware */
  5631. huart->MspDeInitCallback(huart);
  5632. #else
  5633. /* DeInit the low level hardware */
  5634. HAL_UART_MspDeInit(huart);
  5635. 800253e: f7fe faf5 bl 8000b2c <HAL_UART_MspDeInit>
  5636. huart->gState = HAL_UART_STATE_RESET;
  5637. huart->RxState = HAL_UART_STATE_RESET;
  5638. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  5639. huart->RxEventType = HAL_UART_RXEVENT_TC;
  5640. __HAL_UNLOCK(huart);
  5641. 8002542: f884 5084 strb.w r5, [r4, #132] ; 0x84
  5642. huart->ErrorCode = HAL_UART_ERROR_NONE;
  5643. 8002546: f8c4 5090 str.w r5, [r4, #144] ; 0x90
  5644. return HAL_OK;
  5645. 800254a: 4628 mov r0, r5
  5646. huart->gState = HAL_UART_STATE_RESET;
  5647. 800254c: f8c4 5088 str.w r5, [r4, #136] ; 0x88
  5648. huart->RxState = HAL_UART_STATE_RESET;
  5649. 8002550: f8c4 508c str.w r5, [r4, #140] ; 0x8c
  5650. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  5651. 8002554: 66e5 str r5, [r4, #108] ; 0x6c
  5652. huart->RxEventType = HAL_UART_RXEVENT_TC;
  5653. 8002556: 6725 str r5, [r4, #112] ; 0x70
  5654. }
  5655. 8002558: bd38 pop {r3, r4, r5, pc}
  5656. return HAL_ERROR;
  5657. 800255a: 2001 movs r0, #1
  5658. }
  5659. 800255c: 4770 bx lr
  5660. 800255e: bf00 nop
  5661. 08002560 <HAL_UART_Transmit>:
  5662. * @param Size Amount of data elements (u8 or u16) to be sent.
  5663. * @param Timeout Timeout duration.
  5664. * @retval HAL status
  5665. */
  5666. HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
  5667. {
  5668. 8002560: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
  5669. 8002564: 4605 mov r5, r0
  5670. const uint8_t *pdata8bits;
  5671. const uint16_t *pdata16bits;
  5672. uint32_t tickstart;
  5673. /* Check that a Tx process is not already ongoing */
  5674. if (huart->gState == HAL_UART_STATE_READY)
  5675. 8002566: f8d0 0088 ldr.w r0, [r0, #136] ; 0x88
  5676. 800256a: 2820 cmp r0, #32
  5677. 800256c: d159 bne.n 8002622 <HAL_UART_Transmit+0xc2>
  5678. {
  5679. if ((pData == NULL) || (Size == 0U))
  5680. 800256e: 4689 mov r9, r1
  5681. 8002570: b109 cbz r1, 8002576 <HAL_UART_Transmit+0x16>
  5682. 8002572: 4614 mov r4, r2
  5683. 8002574: b912 cbnz r2, 800257c <HAL_UART_Transmit+0x1c>
  5684. {
  5685. return HAL_ERROR;
  5686. 8002576: 2001 movs r0, #1
  5687. }
  5688. else
  5689. {
  5690. return HAL_BUSY;
  5691. }
  5692. }
  5693. 8002578: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
  5694. 800257c: 4698 mov r8, r3
  5695. huart->ErrorCode = HAL_UART_ERROR_NONE;
  5696. 800257e: 2700 movs r7, #0
  5697. huart->gState = HAL_UART_STATE_BUSY_TX;
  5698. 8002580: 2321 movs r3, #33 ; 0x21
  5699. huart->ErrorCode = HAL_UART_ERROR_NONE;
  5700. 8002582: f8c5 7090 str.w r7, [r5, #144] ; 0x90
  5701. huart->gState = HAL_UART_STATE_BUSY_TX;
  5702. 8002586: f8c5 3088 str.w r3, [r5, #136] ; 0x88
  5703. tickstart = HAL_GetTick();
  5704. 800258a: f7fe fba5 bl 8000cd8 <HAL_GetTick>
  5705. if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
  5706. 800258e: 68ab ldr r3, [r5, #8]
  5707. huart->TxXferSize = Size;
  5708. 8002590: f8a5 4054 strh.w r4, [r5, #84] ; 0x54
  5709. if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
  5710. 8002594: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
  5711. huart->TxXferCount = Size;
  5712. 8002598: f8a5 4056 strh.w r4, [r5, #86] ; 0x56
  5713. tickstart = HAL_GetTick();
  5714. 800259c: 4606 mov r6, r0
  5715. if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
  5716. 800259e: d043 beq.n 8002628 <HAL_UART_Transmit+0xc8>
  5717. while (huart->TxXferCount > 0U)
  5718. 80025a0: f8b5 3056 ldrh.w r3, [r5, #86] ; 0x56
  5719. */
  5720. HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status,
  5721. uint32_t Tickstart, uint32_t Timeout)
  5722. {
  5723. /* Wait until flag is set */
  5724. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  5725. 80025a4: 682c ldr r4, [r5, #0]
  5726. while (huart->TxXferCount > 0U)
  5727. 80025a6: b29b uxth r3, r3
  5728. 80025a8: b1e3 cbz r3, 80025e4 <HAL_UART_Transmit+0x84>
  5729. 80025aa: f1b8 3fff cmp.w r8, #4294967295 ; 0xffffffff
  5730. 80025ae: d124 bne.n 80025fa <HAL_UART_Transmit+0x9a>
  5731. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  5732. 80025b0: 69e2 ldr r2, [r4, #28]
  5733. 80025b2: 0610 lsls r0, r2, #24
  5734. 80025b4: d5fc bpl.n 80025b0 <HAL_UART_Transmit+0x50>
  5735. if (pdata8bits == NULL)
  5736. 80025b6: f1b9 0f00 cmp.w r9, #0
  5737. 80025ba: d02c beq.n 8002616 <HAL_UART_Transmit+0xb6>
  5738. huart->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU);
  5739. 80025bc: f819 3b01 ldrb.w r3, [r9], #1
  5740. 80025c0: 62a3 str r3, [r4, #40] ; 0x28
  5741. if ((huart->gState & HAL_UART_STATE_BUSY_TX) == HAL_UART_STATE_BUSY_TX)
  5742. 80025c2: f8d5 3088 ldr.w r3, [r5, #136] ; 0x88
  5743. 80025c6: f003 0321 and.w r3, r3, #33 ; 0x21
  5744. 80025ca: 2b21 cmp r3, #33 ; 0x21
  5745. 80025cc: d1d3 bne.n 8002576 <HAL_UART_Transmit+0x16>
  5746. huart->TxXferCount--;
  5747. 80025ce: f8b5 2056 ldrh.w r2, [r5, #86] ; 0x56
  5748. 80025d2: 3a01 subs r2, #1
  5749. 80025d4: b292 uxth r2, r2
  5750. 80025d6: f8a5 2056 strh.w r2, [r5, #86] ; 0x56
  5751. while (huart->TxXferCount > 0U)
  5752. 80025da: f8b5 3056 ldrh.w r3, [r5, #86] ; 0x56
  5753. 80025de: b29b uxth r3, r3
  5754. 80025e0: 2b00 cmp r3, #0
  5755. 80025e2: d1e2 bne.n 80025aa <HAL_UART_Transmit+0x4a>
  5756. 80025e4: f1b8 3fff cmp.w r8, #4294967295 ; 0xffffffff
  5757. 80025e8: d12a bne.n 8002640 <HAL_UART_Transmit+0xe0>
  5758. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  5759. 80025ea: 69e3 ldr r3, [r4, #28]
  5760. 80025ec: 065a lsls r2, r3, #25
  5761. 80025ee: d5fc bpl.n 80025ea <HAL_UART_Transmit+0x8a>
  5762. huart->gState = HAL_UART_STATE_READY;
  5763. 80025f0: 2320 movs r3, #32
  5764. 80025f2: f8c5 3088 str.w r3, [r5, #136] ; 0x88
  5765. return HAL_OK;
  5766. 80025f6: 2000 movs r0, #0
  5767. 80025f8: e7be b.n 8002578 <HAL_UART_Transmit+0x18>
  5768. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  5769. 80025fa: 69e3 ldr r3, [r4, #28]
  5770. 80025fc: 0619 lsls r1, r3, #24
  5771. 80025fe: d4da bmi.n 80025b6 <HAL_UART_Transmit+0x56>
  5772. {
  5773. /* Check for the Timeout */
  5774. if (Timeout != HAL_MAX_DELAY)
  5775. {
  5776. if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
  5777. 8002600: f7fe fb6a bl 8000cd8 <HAL_GetTick>
  5778. 8002604: 1b80 subs r0, r0, r6
  5779. 8002606: 4580 cmp r8, r0
  5780. 8002608: d314 bcc.n 8002634 <HAL_UART_Transmit+0xd4>
  5781. 800260a: f1b8 0f00 cmp.w r8, #0
  5782. 800260e: d011 beq.n 8002634 <HAL_UART_Transmit+0xd4>
  5783. {
  5784. return HAL_TIMEOUT;
  5785. }
  5786. if ((READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) && (Flag != UART_FLAG_TXE) && (Flag != UART_FLAG_TC))
  5787. 8002610: 682c ldr r4, [r5, #0]
  5788. 8002612: 6823 ldr r3, [r4, #0]
  5789. 8002614: e7c9 b.n 80025aa <HAL_UART_Transmit+0x4a>
  5790. huart->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU);
  5791. 8002616: f837 3b02 ldrh.w r3, [r7], #2
  5792. 800261a: f3c3 0308 ubfx r3, r3, #0, #9
  5793. 800261e: 62a3 str r3, [r4, #40] ; 0x28
  5794. pdata16bits++;
  5795. 8002620: e7cf b.n 80025c2 <HAL_UART_Transmit+0x62>
  5796. return HAL_BUSY;
  5797. 8002622: 2002 movs r0, #2
  5798. }
  5799. 8002624: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
  5800. if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
  5801. 8002628: 692b ldr r3, [r5, #16]
  5802. 800262a: 2b00 cmp r3, #0
  5803. 800262c: d1b8 bne.n 80025a0 <HAL_UART_Transmit+0x40>
  5804. 800262e: 464f mov r7, r9
  5805. pdata8bits = NULL;
  5806. 8002630: 4699 mov r9, r3
  5807. 8002632: e7b5 b.n 80025a0 <HAL_UART_Transmit+0x40>
  5808. huart->gState = HAL_UART_STATE_READY;
  5809. 8002634: 2320 movs r3, #32
  5810. 8002636: f8c5 3088 str.w r3, [r5, #136] ; 0x88
  5811. return HAL_TIMEOUT;
  5812. 800263a: 2003 movs r0, #3
  5813. }
  5814. 800263c: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
  5815. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  5816. 8002640: 69e3 ldr r3, [r4, #28]
  5817. 8002642: 065b lsls r3, r3, #25
  5818. 8002644: d4d4 bmi.n 80025f0 <HAL_UART_Transmit+0x90>
  5819. if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
  5820. 8002646: f7fe fb47 bl 8000cd8 <HAL_GetTick>
  5821. 800264a: 1b80 subs r0, r0, r6
  5822. 800264c: 4580 cmp r8, r0
  5823. 800264e: d3f1 bcc.n 8002634 <HAL_UART_Transmit+0xd4>
  5824. 8002650: f1b8 0f00 cmp.w r8, #0
  5825. 8002654: d0ee beq.n 8002634 <HAL_UART_Transmit+0xd4>
  5826. if ((READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) && (Flag != UART_FLAG_TXE) && (Flag != UART_FLAG_TC))
  5827. 8002656: 682c ldr r4, [r5, #0]
  5828. 8002658: 6823 ldr r3, [r4, #0]
  5829. 800265a: e7c3 b.n 80025e4 <HAL_UART_Transmit+0x84>
  5830. 0800265c <HAL_UART_Receive>:
  5831. {
  5832. 800265c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
  5833. 8002660: 4605 mov r5, r0
  5834. if (huart->RxState == HAL_UART_STATE_READY)
  5835. 8002662: f8d0 008c ldr.w r0, [r0, #140] ; 0x8c
  5836. 8002666: 2820 cmp r0, #32
  5837. 8002668: d143 bne.n 80026f2 <HAL_UART_Receive+0x96>
  5838. if ((pData == NULL) || (Size == 0U))
  5839. 800266a: 468a mov sl, r1
  5840. 800266c: b109 cbz r1, 8002672 <HAL_UART_Receive+0x16>
  5841. 800266e: 4614 mov r4, r2
  5842. 8002670: b912 cbnz r2, 8002678 <HAL_UART_Receive+0x1c>
  5843. return HAL_ERROR;
  5844. 8002672: 2001 movs r0, #1
  5845. }
  5846. 8002674: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  5847. huart->ErrorCode = HAL_UART_ERROR_NONE;
  5848. 8002678: 2600 movs r6, #0
  5849. 800267a: 4699 mov r9, r3
  5850. huart->RxState = HAL_UART_STATE_BUSY_RX;
  5851. 800267c: 2322 movs r3, #34 ; 0x22
  5852. huart->ErrorCode = HAL_UART_ERROR_NONE;
  5853. 800267e: f8c5 6090 str.w r6, [r5, #144] ; 0x90
  5854. huart->RxState = HAL_UART_STATE_BUSY_RX;
  5855. 8002682: f8c5 308c str.w r3, [r5, #140] ; 0x8c
  5856. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  5857. 8002686: 66ee str r6, [r5, #108] ; 0x6c
  5858. tickstart = HAL_GetTick();
  5859. 8002688: f7fe fb26 bl 8000cd8 <HAL_GetTick>
  5860. UART_MASK_COMPUTATION(huart);
  5861. 800268c: 68ab ldr r3, [r5, #8]
  5862. huart->RxXferSize = Size;
  5863. 800268e: f8a5 405c strh.w r4, [r5, #92] ; 0x5c
  5864. UART_MASK_COMPUTATION(huart);
  5865. 8002692: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
  5866. huart->RxXferCount = Size;
  5867. 8002696: f8a5 405e strh.w r4, [r5, #94] ; 0x5e
  5868. tickstart = HAL_GetTick();
  5869. 800269a: 4607 mov r7, r0
  5870. UART_MASK_COMPUTATION(huart);
  5871. 800269c: d02c beq.n 80026f8 <HAL_UART_Receive+0x9c>
  5872. 800269e: 2b00 cmp r3, #0
  5873. 80026a0: f040 8084 bne.w 80027ac <HAL_UART_Receive+0x150>
  5874. 80026a4: 692b ldr r3, [r5, #16]
  5875. 80026a6: 2b00 cmp r3, #0
  5876. 80026a8: f000 808b beq.w 80027c2 <HAL_UART_Receive+0x166>
  5877. 80026ac: 267f movs r6, #127 ; 0x7f
  5878. 80026ae: f8a5 6060 strh.w r6, [r5, #96] ; 0x60
  5879. pdata16bits = NULL;
  5880. 80026b2: f04f 0800 mov.w r8, #0
  5881. while (huart->RxXferCount > 0U)
  5882. 80026b6: f8b5 305e ldrh.w r3, [r5, #94] ; 0x5e
  5883. 80026ba: b29b uxth r3, r3
  5884. 80026bc: 2b00 cmp r3, #0
  5885. 80026be: d070 beq.n 80027a2 <HAL_UART_Receive+0x146>
  5886. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  5887. 80026c0: 682c ldr r4, [r5, #0]
  5888. 80026c2: f1b9 3fff cmp.w r9, #4294967295 ; 0xffffffff
  5889. 80026c6: d121 bne.n 800270c <HAL_UART_Receive+0xb0>
  5890. 80026c8: 69e2 ldr r2, [r4, #28]
  5891. 80026ca: 0692 lsls r2, r2, #26
  5892. 80026cc: d5fc bpl.n 80026c8 <HAL_UART_Receive+0x6c>
  5893. if (pdata8bits == NULL)
  5894. 80026ce: f1ba 0f00 cmp.w sl, #0
  5895. 80026d2: d061 beq.n 8002798 <HAL_UART_Receive+0x13c>
  5896. *pdata8bits = (uint8_t)(huart->Instance->RDR & (uint8_t)uhMask);
  5897. 80026d4: 6a63 ldr r3, [r4, #36] ; 0x24
  5898. 80026d6: 4033 ands r3, r6
  5899. 80026d8: f80a 3b01 strb.w r3, [sl], #1
  5900. if (huart->RxState == HAL_UART_STATE_BUSY_RX)
  5901. 80026dc: f8d5 308c ldr.w r3, [r5, #140] ; 0x8c
  5902. 80026e0: 2b22 cmp r3, #34 ; 0x22
  5903. 80026e2: d1c6 bne.n 8002672 <HAL_UART_Receive+0x16>
  5904. huart->RxXferCount--;
  5905. 80026e4: f8b5 205e ldrh.w r2, [r5, #94] ; 0x5e
  5906. 80026e8: 3a01 subs r2, #1
  5907. 80026ea: b292 uxth r2, r2
  5908. 80026ec: f8a5 205e strh.w r2, [r5, #94] ; 0x5e
  5909. 80026f0: e7e1 b.n 80026b6 <HAL_UART_Receive+0x5a>
  5910. return HAL_BUSY;
  5911. 80026f2: 2002 movs r0, #2
  5912. }
  5913. 80026f4: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  5914. UART_MASK_COMPUTATION(huart);
  5915. 80026f8: 692b ldr r3, [r5, #16]
  5916. 80026fa: 2b00 cmp r3, #0
  5917. 80026fc: d15c bne.n 80027b8 <HAL_UART_Receive+0x15c>
  5918. 80026fe: f240 16ff movw r6, #511 ; 0x1ff
  5919. 8002702: 46d0 mov r8, sl
  5920. 8002704: f8a5 6060 strh.w r6, [r5, #96] ; 0x60
  5921. pdata8bits = NULL;
  5922. 8002708: 469a mov sl, r3
  5923. 800270a: e7d4 b.n 80026b6 <HAL_UART_Receive+0x5a>
  5924. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  5925. 800270c: 69e3 ldr r3, [r4, #28]
  5926. 800270e: 069b lsls r3, r3, #26
  5927. 8002710: d4dd bmi.n 80026ce <HAL_UART_Receive+0x72>
  5928. if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
  5929. 8002712: f7fe fae1 bl 8000cd8 <HAL_GetTick>
  5930. 8002716: 1bc0 subs r0, r0, r7
  5931. 8002718: 4581 cmp r9, r0
  5932. 800271a: d338 bcc.n 800278e <HAL_UART_Receive+0x132>
  5933. 800271c: f1b9 0f00 cmp.w r9, #0
  5934. 8002720: d035 beq.n 800278e <HAL_UART_Receive+0x132>
  5935. if ((READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) && (Flag != UART_FLAG_TXE) && (Flag != UART_FLAG_TC))
  5936. 8002722: 682b ldr r3, [r5, #0]
  5937. 8002724: 681a ldr r2, [r3, #0]
  5938. 8002726: 0752 lsls r2, r2, #29
  5939. 8002728: 461c mov r4, r3
  5940. 800272a: d5ca bpl.n 80026c2 <HAL_UART_Receive+0x66>
  5941. {
  5942. if (__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) == SET)
  5943. 800272c: 69da ldr r2, [r3, #28]
  5944. 800272e: 0710 lsls r0, r2, #28
  5945. 8002730: d45c bmi.n 80027ec <HAL_UART_Receive+0x190>
  5946. /* Process Unlocked */
  5947. __HAL_UNLOCK(huart);
  5948. return HAL_ERROR;
  5949. }
  5950. if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET)
  5951. 8002732: 69da ldr r2, [r3, #28]
  5952. 8002734: 0511 lsls r1, r2, #20
  5953. 8002736: d5c4 bpl.n 80026c2 <HAL_UART_Receive+0x66>
  5954. {
  5955. /* Clear Receiver Timeout flag*/
  5956. __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);
  5957. 8002738: f44f 6200 mov.w r2, #2048 ; 0x800
  5958. 800273c: 621a str r2, [r3, #32]
  5959. */
  5960. __STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr)
  5961. {
  5962. uint32_t result;
  5963. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  5964. 800273e: e853 2f00 ldrex r2, [r3]
  5965. * @retval None
  5966. */
  5967. static void UART_EndRxTransfer(UART_HandleTypeDef *huart)
  5968. {
  5969. /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
  5970. ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));
  5971. 8002742: f422 7290 bic.w r2, r2, #288 ; 0x120
  5972. */
  5973. __STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)
  5974. {
  5975. uint32_t result;
  5976. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  5977. 8002746: e843 2100 strex r1, r2, [r3]
  5978. 800274a: b139 cbz r1, 800275c <HAL_UART_Receive+0x100>
  5979. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  5980. 800274c: e853 2f00 ldrex r2, [r3]
  5981. 8002750: f422 7290 bic.w r2, r2, #288 ; 0x120
  5982. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  5983. 8002754: e843 2100 strex r1, r2, [r3]
  5984. 8002758: 2900 cmp r1, #0
  5985. 800275a: d1f7 bne.n 800274c <HAL_UART_Receive+0xf0>
  5986. ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE));
  5987. 800275c: 483a ldr r0, [pc, #232] ; (8002848 <HAL_UART_Receive+0x1ec>)
  5988. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  5989. 800275e: f103 0208 add.w r2, r3, #8
  5990. 8002762: e852 2f00 ldrex r2, [r2]
  5991. 8002766: 4002 ands r2, r0
  5992. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  5993. 8002768: f103 0408 add.w r4, r3, #8
  5994. 800276c: e844 2100 strex r1, r2, [r4]
  5995. 8002770: 2900 cmp r1, #0
  5996. 8002772: d1f4 bne.n 800275e <HAL_UART_Receive+0x102>
  5997. /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */
  5998. if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
  5999. 8002774: 6eea ldr r2, [r5, #108] ; 0x6c
  6000. 8002776: 2a01 cmp r2, #1
  6001. 8002778: d027 beq.n 80027ca <HAL_UART_Receive+0x16e>
  6002. ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
  6003. }
  6004. /* At end of Rx process, restore huart->RxState to Ready */
  6005. huart->RxState = HAL_UART_STATE_READY;
  6006. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6007. 800277a: 2300 movs r3, #0
  6008. huart->RxState = HAL_UART_STATE_READY;
  6009. 800277c: 2220 movs r2, #32
  6010. 800277e: f8c5 208c str.w r2, [r5, #140] ; 0x8c
  6011. /* Reset RxIsr function pointer */
  6012. huart->RxISR = NULL;
  6013. 8002782: 676b str r3, [r5, #116] ; 0x74
  6014. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6015. 8002784: 66eb str r3, [r5, #108] ; 0x6c
  6016. __HAL_UNLOCK(huart);
  6017. 8002786: f885 3084 strb.w r3, [r5, #132] ; 0x84
  6018. huart->ErrorCode = HAL_UART_ERROR_RTO;
  6019. 800278a: f8c5 2090 str.w r2, [r5, #144] ; 0x90
  6020. huart->RxState = HAL_UART_STATE_READY;
  6021. 800278e: 2320 movs r3, #32
  6022. 8002790: f8c5 308c str.w r3, [r5, #140] ; 0x8c
  6023. return HAL_TIMEOUT;
  6024. 8002794: 2003 movs r0, #3
  6025. 8002796: e76d b.n 8002674 <HAL_UART_Receive+0x18>
  6026. *pdata16bits = (uint16_t)(huart->Instance->RDR & uhMask);
  6027. 8002798: 6a63 ldr r3, [r4, #36] ; 0x24
  6028. 800279a: 4033 ands r3, r6
  6029. 800279c: f828 3b02 strh.w r3, [r8], #2
  6030. pdata16bits++;
  6031. 80027a0: e79c b.n 80026dc <HAL_UART_Receive+0x80>
  6032. huart->RxState = HAL_UART_STATE_READY;
  6033. 80027a2: 2320 movs r3, #32
  6034. 80027a4: f8c5 308c str.w r3, [r5, #140] ; 0x8c
  6035. return HAL_OK;
  6036. 80027a8: 2000 movs r0, #0
  6037. 80027aa: e763 b.n 8002674 <HAL_UART_Receive+0x18>
  6038. UART_MASK_COMPUTATION(huart);
  6039. 80027ac: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000
  6040. 80027b0: d014 beq.n 80027dc <HAL_UART_Receive+0x180>
  6041. 80027b2: f8a5 6060 strh.w r6, [r5, #96] ; 0x60
  6042. 80027b6: e77c b.n 80026b2 <HAL_UART_Receive+0x56>
  6043. pdata16bits = NULL;
  6044. 80027b8: 46b0 mov r8, r6
  6045. 80027ba: 26ff movs r6, #255 ; 0xff
  6046. 80027bc: f8a5 6060 strh.w r6, [r5, #96] ; 0x60
  6047. if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
  6048. 80027c0: e779 b.n 80026b6 <HAL_UART_Receive+0x5a>
  6049. UART_MASK_COMPUTATION(huart);
  6050. 80027c2: 26ff movs r6, #255 ; 0xff
  6051. 80027c4: f8a5 6060 strh.w r6, [r5, #96] ; 0x60
  6052. 80027c8: e773 b.n 80026b2 <HAL_UART_Receive+0x56>
  6053. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6054. 80027ca: e853 2f00 ldrex r2, [r3]
  6055. ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
  6056. 80027ce: f022 0210 bic.w r2, r2, #16
  6057. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6058. 80027d2: e843 2100 strex r1, r2, [r3]
  6059. 80027d6: 2900 cmp r1, #0
  6060. 80027d8: d1f7 bne.n 80027ca <HAL_UART_Receive+0x16e>
  6061. 80027da: e7ce b.n 800277a <HAL_UART_Receive+0x11e>
  6062. UART_MASK_COMPUTATION(huart);
  6063. 80027dc: 692b ldr r3, [r5, #16]
  6064. 80027de: 2b00 cmp r3, #0
  6065. 80027e0: f43f af64 beq.w 80026ac <HAL_UART_Receive+0x50>
  6066. 80027e4: 263f movs r6, #63 ; 0x3f
  6067. 80027e6: f8a5 6060 strh.w r6, [r5, #96] ; 0x60
  6068. 80027ea: e762 b.n 80026b2 <HAL_UART_Receive+0x56>
  6069. __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);
  6070. 80027ec: 2208 movs r2, #8
  6071. 80027ee: 621a str r2, [r3, #32]
  6072. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6073. 80027f0: e853 2f00 ldrex r2, [r3]
  6074. ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));
  6075. 80027f4: f422 7290 bic.w r2, r2, #288 ; 0x120
  6076. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6077. 80027f8: e843 2100 strex r1, r2, [r3]
  6078. 80027fc: 2900 cmp r1, #0
  6079. 80027fe: d1f7 bne.n 80027f0 <HAL_UART_Receive+0x194>
  6080. ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE));
  6081. 8002800: 4811 ldr r0, [pc, #68] ; (8002848 <HAL_UART_Receive+0x1ec>)
  6082. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6083. 8002802: f103 0208 add.w r2, r3, #8
  6084. 8002806: e852 2f00 ldrex r2, [r2]
  6085. 800280a: 4002 ands r2, r0
  6086. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6087. 800280c: f103 0408 add.w r4, r3, #8
  6088. 8002810: e844 2100 strex r1, r2, [r4]
  6089. 8002814: 2900 cmp r1, #0
  6090. 8002816: d1f4 bne.n 8002802 <HAL_UART_Receive+0x1a6>
  6091. if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
  6092. 8002818: 6eea ldr r2, [r5, #108] ; 0x6c
  6093. 800281a: 2a01 cmp r2, #1
  6094. 800281c: d00b beq.n 8002836 <HAL_UART_Receive+0x1da>
  6095. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6096. 800281e: 2300 movs r3, #0
  6097. huart->RxState = HAL_UART_STATE_READY;
  6098. 8002820: 2120 movs r1, #32
  6099. huart->ErrorCode = HAL_UART_ERROR_ORE;
  6100. 8002822: 2208 movs r2, #8
  6101. huart->RxState = HAL_UART_STATE_READY;
  6102. 8002824: f8c5 108c str.w r1, [r5, #140] ; 0x8c
  6103. huart->RxISR = NULL;
  6104. 8002828: 676b str r3, [r5, #116] ; 0x74
  6105. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6106. 800282a: 66eb str r3, [r5, #108] ; 0x6c
  6107. __HAL_UNLOCK(huart);
  6108. 800282c: f885 3084 strb.w r3, [r5, #132] ; 0x84
  6109. huart->ErrorCode = HAL_UART_ERROR_ORE;
  6110. 8002830: f8c5 2090 str.w r2, [r5, #144] ; 0x90
  6111. return HAL_ERROR;
  6112. 8002834: e7ab b.n 800278e <HAL_UART_Receive+0x132>
  6113. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6114. 8002836: e853 2f00 ldrex r2, [r3]
  6115. ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
  6116. 800283a: f022 0210 bic.w r2, r2, #16
  6117. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6118. 800283e: e843 2100 strex r1, r2, [r3]
  6119. 8002842: 2900 cmp r1, #0
  6120. 8002844: d1f7 bne.n 8002836 <HAL_UART_Receive+0x1da>
  6121. 8002846: e7ea b.n 800281e <HAL_UART_Receive+0x1c2>
  6122. 8002848: effffffe .word 0xeffffffe
  6123. 0800284c <UART_SetConfig>:
  6124. {
  6125. 800284c: b538 push {r3, r4, r5, lr}
  6126. 800284e: 4604 mov r4, r0
  6127. if (UART_INSTANCE_LOWPOWER(huart))
  6128. 8002850: 6803 ldr r3, [r0, #0]
  6129. tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ;
  6130. 8002852: 6882 ldr r2, [r0, #8]
  6131. 8002854: 6900 ldr r0, [r0, #16]
  6132. 8002856: 6961 ldr r1, [r4, #20]
  6133. MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg);
  6134. 8002858: 681d ldr r5, [r3, #0]
  6135. tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ;
  6136. 800285a: 4302 orrs r2, r0
  6137. 800285c: 430a orrs r2, r1
  6138. 800285e: 69e0 ldr r0, [r4, #28]
  6139. MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg);
  6140. 8002860: 49a6 ldr r1, [pc, #664] ; (8002afc <UART_SetConfig+0x2b0>)
  6141. tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ;
  6142. 8002862: 4302 orrs r2, r0
  6143. MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg);
  6144. 8002864: 4029 ands r1, r5
  6145. 8002866: 430a orrs r2, r1
  6146. 8002868: 601a str r2, [r3, #0]
  6147. MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);
  6148. 800286a: 685a ldr r2, [r3, #4]
  6149. 800286c: 68e1 ldr r1, [r4, #12]
  6150. 800286e: f422 5240 bic.w r2, r2, #12288 ; 0x3000
  6151. 8002872: 430a orrs r2, r1
  6152. if (!(UART_INSTANCE_LOWPOWER(huart)))
  6153. 8002874: 49a2 ldr r1, [pc, #648] ; (8002b00 <UART_SetConfig+0x2b4>)
  6154. MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);
  6155. 8002876: 605a str r2, [r3, #4]
  6156. if (!(UART_INSTANCE_LOWPOWER(huart)))
  6157. 8002878: 428b cmp r3, r1
  6158. tmpreg = (uint32_t)huart->Init.HwFlowCtl;
  6159. 800287a: 69a2 ldr r2, [r4, #24]
  6160. MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg);
  6161. 800287c: 6899 ldr r1, [r3, #8]
  6162. if (!(UART_INSTANCE_LOWPOWER(huart)))
  6163. 800287e: d06b beq.n 8002958 <UART_SetConfig+0x10c>
  6164. tmpreg |= huart->Init.OneBitSampling;
  6165. 8002880: 6a25 ldr r5, [r4, #32]
  6166. MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg);
  6167. 8002882: f021 416e bic.w r1, r1, #3992977408 ; 0xee000000
  6168. 8002886: f421 6130 bic.w r1, r1, #2816 ; 0xb00
  6169. tmpreg |= huart->Init.OneBitSampling;
  6170. 800288a: 432a orrs r2, r5
  6171. MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg);
  6172. 800288c: 430a orrs r2, r1
  6173. 800288e: 609a str r2, [r3, #8]
  6174. MODIFY_REG(huart->Instance->PRESC, USART_PRESC_PRESCALER, huart->Init.ClockPrescaler);
  6175. 8002890: 6ada ldr r2, [r3, #44] ; 0x2c
  6176. 8002892: 6a61 ldr r1, [r4, #36] ; 0x24
  6177. 8002894: f022 020f bic.w r2, r2, #15
  6178. 8002898: 430a orrs r2, r1
  6179. 800289a: 62da str r2, [r3, #44] ; 0x2c
  6180. UART_GETCLOCKSOURCE(huart, clocksource);
  6181. 800289c: 4a99 ldr r2, [pc, #612] ; (8002b04 <UART_SetConfig+0x2b8>)
  6182. 800289e: 4293 cmp r3, r2
  6183. 80028a0: d012 beq.n 80028c8 <UART_SetConfig+0x7c>
  6184. 80028a2: 4a99 ldr r2, [pc, #612] ; (8002b08 <UART_SetConfig+0x2bc>)
  6185. 80028a4: 4293 cmp r3, r2
  6186. 80028a6: d036 beq.n 8002916 <UART_SetConfig+0xca>
  6187. 80028a8: 4a98 ldr r2, [pc, #608] ; (8002b0c <UART_SetConfig+0x2c0>)
  6188. 80028aa: 4293 cmp r3, r2
  6189. 80028ac: f000 80fa beq.w 8002aa4 <UART_SetConfig+0x258>
  6190. 80028b0: 4a97 ldr r2, [pc, #604] ; (8002b10 <UART_SetConfig+0x2c4>)
  6191. 80028b2: 4293 cmp r3, r2
  6192. 80028b4: f000 80a5 beq.w 8002a02 <UART_SetConfig+0x1b6>
  6193. ret = HAL_ERROR;
  6194. 80028b8: 2001 movs r0, #1
  6195. huart->RxISR = NULL;
  6196. 80028ba: 2300 movs r3, #0
  6197. huart->NbRxDataToProcess = 1;
  6198. 80028bc: f04f 1201 mov.w r2, #65537 ; 0x10001
  6199. huart->TxISR = NULL;
  6200. 80028c0: e9c4 331d strd r3, r3, [r4, #116] ; 0x74
  6201. huart->NbRxDataToProcess = 1;
  6202. 80028c4: 66a2 str r2, [r4, #104] ; 0x68
  6203. }
  6204. 80028c6: bd38 pop {r3, r4, r5, pc}
  6205. UART_GETCLOCKSOURCE(huart, clocksource);
  6206. 80028c8: 4b92 ldr r3, [pc, #584] ; (8002b14 <UART_SetConfig+0x2c8>)
  6207. 80028ca: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
  6208. 80028ce: f003 0303 and.w r3, r3, #3
  6209. 80028d2: 3b01 subs r3, #1
  6210. 80028d4: 2b02 cmp r3, #2
  6211. 80028d6: f240 808e bls.w 80029f6 <UART_SetConfig+0x1aa>
  6212. else if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
  6213. 80028da: f5b0 4f00 cmp.w r0, #32768 ; 0x8000
  6214. 80028de: f000 80fe beq.w 8002ade <UART_SetConfig+0x292>
  6215. pclk = HAL_RCC_GetPCLK2Freq();
  6216. 80028e2: f7ff fa55 bl 8001d90 <HAL_RCC_GetPCLK2Freq>
  6217. if (pclk != 0U)
  6218. 80028e6: 2800 cmp r0, #0
  6219. 80028e8: f000 80da beq.w 8002aa0 <UART_SetConfig+0x254>
  6220. usartdiv = (uint32_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler));
  6221. 80028ec: 6a61 ldr r1, [r4, #36] ; 0x24
  6222. 80028ee: 6862 ldr r2, [r4, #4]
  6223. 80028f0: 4b89 ldr r3, [pc, #548] ; (8002b18 <UART_SetConfig+0x2cc>)
  6224. 80028f2: f833 3011 ldrh.w r3, [r3, r1, lsl #1]
  6225. 80028f6: fbb0 f0f3 udiv r0, r0, r3
  6226. if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
  6227. 80028fa: f64f 71ef movw r1, #65519 ; 0xffef
  6228. usartdiv = (uint32_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler));
  6229. 80028fe: eb00 0352 add.w r3, r0, r2, lsr #1
  6230. 8002902: fbb3 f3f2 udiv r3, r3, r2
  6231. if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
  6232. 8002906: f1a3 0210 sub.w r2, r3, #16
  6233. 800290a: 428a cmp r2, r1
  6234. 800290c: d8d4 bhi.n 80028b8 <UART_SetConfig+0x6c>
  6235. huart->Instance->BRR = (uint16_t)usartdiv;
  6236. 800290e: 6822 ldr r2, [r4, #0]
  6237. 8002910: 2000 movs r0, #0
  6238. 8002912: 60d3 str r3, [r2, #12]
  6239. 8002914: e7d1 b.n 80028ba <UART_SetConfig+0x6e>
  6240. UART_GETCLOCKSOURCE(huart, clocksource);
  6241. 8002916: 4b7f ldr r3, [pc, #508] ; (8002b14 <UART_SetConfig+0x2c8>)
  6242. 8002918: 4a80 ldr r2, [pc, #512] ; (8002b1c <UART_SetConfig+0x2d0>)
  6243. 800291a: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
  6244. 800291e: f003 030c and.w r3, r3, #12
  6245. 8002922: 5cd3 ldrb r3, [r2, r3]
  6246. else if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
  6247. 8002924: f5b0 4f00 cmp.w r0, #32768 ; 0x8000
  6248. 8002928: d07d beq.n 8002a26 <UART_SetConfig+0x1da>
  6249. switch (clocksource)
  6250. 800292a: 2b08 cmp r3, #8
  6251. 800292c: d8c4 bhi.n 80028b8 <UART_SetConfig+0x6c>
  6252. 800292e: a201 add r2, pc, #4 ; (adr r2, 8002934 <UART_SetConfig+0xe8>)
  6253. 8002930: f852 f023 ldr.w pc, [r2, r3, lsl #2]
  6254. 8002934: 08002a5f .word 0x08002a5f
  6255. 8002938: 080028e3 .word 0x080028e3
  6256. 800293c: 08002adb .word 0x08002adb
  6257. 8002940: 080028b9 .word 0x080028b9
  6258. 8002944: 08002a21 .word 0x08002a21
  6259. 8002948: 080028b9 .word 0x080028b9
  6260. 800294c: 080028b9 .word 0x080028b9
  6261. 8002950: 080028b9 .word 0x080028b9
  6262. 8002954: 08002acb .word 0x08002acb
  6263. MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg);
  6264. 8002958: f021 416e bic.w r1, r1, #3992977408 ; 0xee000000
  6265. 800295c: f421 6130 bic.w r1, r1, #2816 ; 0xb00
  6266. 8002960: 430a orrs r2, r1
  6267. 8002962: 609a str r2, [r3, #8]
  6268. MODIFY_REG(huart->Instance->PRESC, USART_PRESC_PRESCALER, huart->Init.ClockPrescaler);
  6269. 8002964: 6ada ldr r2, [r3, #44] ; 0x2c
  6270. 8002966: 6a61 ldr r1, [r4, #36] ; 0x24
  6271. UART_GETCLOCKSOURCE(huart, clocksource);
  6272. 8002968: 486a ldr r0, [pc, #424] ; (8002b14 <UART_SetConfig+0x2c8>)
  6273. MODIFY_REG(huart->Instance->PRESC, USART_PRESC_PRESCALER, huart->Init.ClockPrescaler);
  6274. 800296a: f022 020f bic.w r2, r2, #15
  6275. 800296e: 430a orrs r2, r1
  6276. 8002970: 62da str r2, [r3, #44] ; 0x2c
  6277. UART_GETCLOCKSOURCE(huart, clocksource);
  6278. 8002972: f8d0 3088 ldr.w r3, [r0, #136] ; 0x88
  6279. 8002976: f403 6340 and.w r3, r3, #3072 ; 0xc00
  6280. 800297a: f5b3 6f00 cmp.w r3, #2048 ; 0x800
  6281. 800297e: f000 80aa beq.w 8002ad6 <UART_SetConfig+0x28a>
  6282. 8002982: d80b bhi.n 800299c <UART_SetConfig+0x150>
  6283. 8002984: 2b00 cmp r3, #0
  6284. 8002986: d039 beq.n 80029fc <UART_SetConfig+0x1b0>
  6285. 8002988: f5b3 6f80 cmp.w r3, #1024 ; 0x400
  6286. 800298c: d194 bne.n 80028b8 <UART_SetConfig+0x6c>
  6287. pclk = HAL_RCC_GetSysClockFreq();
  6288. 800298e: f7ff f8a3 bl 8001ad8 <HAL_RCC_GetSysClockFreq>
  6289. if (pclk != 0U)
  6290. 8002992: 2800 cmp r0, #0
  6291. 8002994: f000 8084 beq.w 8002aa0 <UART_SetConfig+0x254>
  6292. lpuart_ker_ck_pres = (pclk / UARTPrescTable[huart->Init.ClockPrescaler]);
  6293. 8002998: 6a61 ldr r1, [r4, #36] ; 0x24
  6294. 800299a: e004 b.n 80029a6 <UART_SetConfig+0x15a>
  6295. UART_GETCLOCKSOURCE(huart, clocksource);
  6296. 800299c: f5b3 6f40 cmp.w r3, #3072 ; 0xc00
  6297. 80029a0: d18a bne.n 80028b8 <UART_SetConfig+0x6c>
  6298. pclk = (uint32_t) LSE_VALUE;
  6299. 80029a2: f44f 4000 mov.w r0, #32768 ; 0x8000
  6300. lpuart_ker_ck_pres = (pclk / UARTPrescTable[huart->Init.ClockPrescaler]);
  6301. 80029a6: 4b5c ldr r3, [pc, #368] ; (8002b18 <UART_SetConfig+0x2cc>)
  6302. if ((lpuart_ker_ck_pres < (3U * huart->Init.BaudRate)) ||
  6303. 80029a8: 6865 ldr r5, [r4, #4]
  6304. lpuart_ker_ck_pres = (pclk / UARTPrescTable[huart->Init.ClockPrescaler]);
  6305. 80029aa: f833 2011 ldrh.w r2, [r3, r1, lsl #1]
  6306. 80029ae: fbb0 f3f2 udiv r3, r0, r2
  6307. if ((lpuart_ker_ck_pres < (3U * huart->Init.BaudRate)) ||
  6308. 80029b2: eb05 0145 add.w r1, r5, r5, lsl #1
  6309. 80029b6: 4299 cmp r1, r3
  6310. 80029b8: f63f af7e bhi.w 80028b8 <UART_SetConfig+0x6c>
  6311. 80029bc: ebb3 3f05 cmp.w r3, r5, lsl #12
  6312. 80029c0: f63f af7a bhi.w 80028b8 <UART_SetConfig+0x6c>
  6313. usartdiv = (uint32_t)(UART_DIV_LPUART(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler));
  6314. 80029c4: 2300 movs r3, #0
  6315. 80029c6: 4619 mov r1, r3
  6316. 80029c8: f7fd fc26 bl 8000218 <__aeabi_uldivmod>
  6317. 80029cc: 0209 lsls r1, r1, #8
  6318. 80029ce: 0203 lsls r3, r0, #8
  6319. 80029d0: ea41 6110 orr.w r1, r1, r0, lsr #24
  6320. 80029d4: 0868 lsrs r0, r5, #1
  6321. 80029d6: 1818 adds r0, r3, r0
  6322. 80029d8: 462a mov r2, r5
  6323. 80029da: f04f 0300 mov.w r3, #0
  6324. 80029de: f141 0100 adc.w r1, r1, #0
  6325. 80029e2: f7fd fc19 bl 8000218 <__aeabi_uldivmod>
  6326. if ((usartdiv >= LPUART_BRR_MIN) && (usartdiv <= LPUART_BRR_MAX))
  6327. 80029e6: 4a4e ldr r2, [pc, #312] ; (8002b20 <UART_SetConfig+0x2d4>)
  6328. 80029e8: f5a0 7140 sub.w r1, r0, #768 ; 0x300
  6329. 80029ec: 4291 cmp r1, r2
  6330. usartdiv = (uint32_t)(UART_DIV_LPUART(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler));
  6331. 80029ee: 4603 mov r3, r0
  6332. if ((usartdiv >= LPUART_BRR_MIN) && (usartdiv <= LPUART_BRR_MAX))
  6333. 80029f0: f63f af62 bhi.w 80028b8 <UART_SetConfig+0x6c>
  6334. 80029f4: e78b b.n 800290e <UART_SetConfig+0xc2>
  6335. 80029f6: 4a4b ldr r2, [pc, #300] ; (8002b24 <UART_SetConfig+0x2d8>)
  6336. 80029f8: 5cd3 ldrb r3, [r2, r3]
  6337. if (UART_INSTANCE_LOWPOWER(huart))
  6338. 80029fa: e793 b.n 8002924 <UART_SetConfig+0xd8>
  6339. pclk = HAL_RCC_GetPCLK1Freq();
  6340. 80029fc: f7ff f9b6 bl 8001d6c <HAL_RCC_GetPCLK1Freq>
  6341. break;
  6342. 8002a00: e7c7 b.n 8002992 <UART_SetConfig+0x146>
  6343. UART_GETCLOCKSOURCE(huart, clocksource);
  6344. 8002a02: 4b44 ldr r3, [pc, #272] ; (8002b14 <UART_SetConfig+0x2c8>)
  6345. 8002a04: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
  6346. 8002a08: f003 03c0 and.w r3, r3, #192 ; 0xc0
  6347. 8002a0c: 2b80 cmp r3, #128 ; 0x80
  6348. 8002a0e: d06e beq.n 8002aee <UART_SetConfig+0x2a2>
  6349. 8002a10: d85e bhi.n 8002ad0 <UART_SetConfig+0x284>
  6350. 8002a12: b30b cbz r3, 8002a58 <UART_SetConfig+0x20c>
  6351. 8002a14: 2b40 cmp r3, #64 ; 0x40
  6352. 8002a16: f47f af4f bne.w 80028b8 <UART_SetConfig+0x6c>
  6353. else if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
  6354. 8002a1a: f5b0 4f00 cmp.w r0, #32768 ; 0x8000
  6355. 8002a1e: d021 beq.n 8002a64 <UART_SetConfig+0x218>
  6356. pclk = HAL_RCC_GetSysClockFreq();
  6357. 8002a20: f7ff f85a bl 8001ad8 <HAL_RCC_GetSysClockFreq>
  6358. break;
  6359. 8002a24: e75f b.n 80028e6 <UART_SetConfig+0x9a>
  6360. switch (clocksource)
  6361. 8002a26: 2b08 cmp r3, #8
  6362. 8002a28: f63f af46 bhi.w 80028b8 <UART_SetConfig+0x6c>
  6363. 8002a2c: a201 add r2, pc, #4 ; (adr r2, 8002a34 <UART_SetConfig+0x1e8>)
  6364. 8002a2e: f852 f023 ldr.w pc, [r2, r3, lsl #2]
  6365. 8002a32: bf00 nop
  6366. 8002a34: 08002ae5 .word 0x08002ae5
  6367. 8002a38: 08002adf .word 0x08002adf
  6368. 8002a3c: 08002aeb .word 0x08002aeb
  6369. 8002a40: 080028b9 .word 0x080028b9
  6370. 8002a44: 08002a65 .word 0x08002a65
  6371. 8002a48: 080028b9 .word 0x080028b9
  6372. 8002a4c: 080028b9 .word 0x080028b9
  6373. 8002a50: 080028b9 .word 0x080028b9
  6374. 8002a54: 08002a6d .word 0x08002a6d
  6375. else if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
  6376. 8002a58: f5b0 4f00 cmp.w r0, #32768 ; 0x8000
  6377. 8002a5c: d042 beq.n 8002ae4 <UART_SetConfig+0x298>
  6378. pclk = HAL_RCC_GetPCLK1Freq();
  6379. 8002a5e: f7ff f985 bl 8001d6c <HAL_RCC_GetPCLK1Freq>
  6380. break;
  6381. 8002a62: e740 b.n 80028e6 <UART_SetConfig+0x9a>
  6382. pclk = HAL_RCC_GetSysClockFreq();
  6383. 8002a64: f7ff f838 bl 8001ad8 <HAL_RCC_GetSysClockFreq>
  6384. if (pclk != 0U)
  6385. 8002a68: b1d0 cbz r0, 8002aa0 <UART_SetConfig+0x254>
  6386. usartdiv = (uint32_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler));
  6387. 8002a6a: 6a61 ldr r1, [r4, #36] ; 0x24
  6388. 8002a6c: 6862 ldr r2, [r4, #4]
  6389. 8002a6e: 4b2a ldr r3, [pc, #168] ; (8002b18 <UART_SetConfig+0x2cc>)
  6390. 8002a70: f833 1011 ldrh.w r1, [r3, r1, lsl #1]
  6391. 8002a74: fbb0 f0f1 udiv r0, r0, r1
  6392. 8002a78: 0853 lsrs r3, r2, #1
  6393. 8002a7a: eb03 0040 add.w r0, r3, r0, lsl #1
  6394. if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
  6395. 8002a7e: f64f 73ef movw r3, #65519 ; 0xffef
  6396. usartdiv = (uint32_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler));
  6397. 8002a82: fbb0 f0f2 udiv r0, r0, r2
  6398. if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
  6399. 8002a86: f1a0 0210 sub.w r2, r0, #16
  6400. 8002a8a: 429a cmp r2, r3
  6401. 8002a8c: f63f af14 bhi.w 80028b8 <UART_SetConfig+0x6c>
  6402. brrtemp = (uint16_t)(usartdiv & 0xFFF0U);
  6403. 8002a90: f020 030f bic.w r3, r0, #15
  6404. huart->Instance->BRR = brrtemp;
  6405. 8002a94: 6822 ldr r2, [r4, #0]
  6406. brrtemp = (uint16_t)(usartdiv & 0xFFF0U);
  6407. 8002a96: b29b uxth r3, r3
  6408. brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U);
  6409. 8002a98: f3c0 0042 ubfx r0, r0, #1, #3
  6410. huart->Instance->BRR = brrtemp;
  6411. 8002a9c: 4318 orrs r0, r3
  6412. 8002a9e: 60d0 str r0, [r2, #12]
  6413. 8002aa0: 2000 movs r0, #0
  6414. 8002aa2: e70a b.n 80028ba <UART_SetConfig+0x6e>
  6415. UART_GETCLOCKSOURCE(huart, clocksource);
  6416. 8002aa4: 4b1b ldr r3, [pc, #108] ; (8002b14 <UART_SetConfig+0x2c8>)
  6417. 8002aa6: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
  6418. 8002aaa: f003 0330 and.w r3, r3, #48 ; 0x30
  6419. 8002aae: 2b20 cmp r3, #32
  6420. 8002ab0: d01d beq.n 8002aee <UART_SetConfig+0x2a2>
  6421. 8002ab2: d804 bhi.n 8002abe <UART_SetConfig+0x272>
  6422. 8002ab4: 2b00 cmp r3, #0
  6423. 8002ab6: d0cf beq.n 8002a58 <UART_SetConfig+0x20c>
  6424. 8002ab8: 2b10 cmp r3, #16
  6425. 8002aba: d0ae beq.n 8002a1a <UART_SetConfig+0x1ce>
  6426. 8002abc: e6fc b.n 80028b8 <UART_SetConfig+0x6c>
  6427. 8002abe: 2b30 cmp r3, #48 ; 0x30
  6428. 8002ac0: f47f aefa bne.w 80028b8 <UART_SetConfig+0x6c>
  6429. else if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
  6430. 8002ac4: f5b0 4f00 cmp.w r0, #32768 ; 0x8000
  6431. 8002ac8: d0d0 beq.n 8002a6c <UART_SetConfig+0x220>
  6432. switch (clocksource)
  6433. 8002aca: f44f 4000 mov.w r0, #32768 ; 0x8000
  6434. 8002ace: e70e b.n 80028ee <UART_SetConfig+0xa2>
  6435. UART_GETCLOCKSOURCE(huart, clocksource);
  6436. 8002ad0: 2bc0 cmp r3, #192 ; 0xc0
  6437. 8002ad2: d0f7 beq.n 8002ac4 <UART_SetConfig+0x278>
  6438. 8002ad4: e6f0 b.n 80028b8 <UART_SetConfig+0x6c>
  6439. 8002ad6: 4814 ldr r0, [pc, #80] ; (8002b28 <UART_SetConfig+0x2dc>)
  6440. 8002ad8: e765 b.n 80029a6 <UART_SetConfig+0x15a>
  6441. pclk = (uint32_t) HSI_VALUE;
  6442. 8002ada: 4813 ldr r0, [pc, #76] ; (8002b28 <UART_SetConfig+0x2dc>)
  6443. 8002adc: e707 b.n 80028ee <UART_SetConfig+0xa2>
  6444. pclk = HAL_RCC_GetPCLK2Freq();
  6445. 8002ade: f7ff f957 bl 8001d90 <HAL_RCC_GetPCLK2Freq>
  6446. break;
  6447. 8002ae2: e7c1 b.n 8002a68 <UART_SetConfig+0x21c>
  6448. pclk = HAL_RCC_GetPCLK1Freq();
  6449. 8002ae4: f7ff f942 bl 8001d6c <HAL_RCC_GetPCLK1Freq>
  6450. break;
  6451. 8002ae8: e7be b.n 8002a68 <UART_SetConfig+0x21c>
  6452. pclk = (uint32_t) HSI_VALUE;
  6453. 8002aea: 480f ldr r0, [pc, #60] ; (8002b28 <UART_SetConfig+0x2dc>)
  6454. 8002aec: e7be b.n 8002a6c <UART_SetConfig+0x220>
  6455. else if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
  6456. 8002aee: f5b0 4f00 cmp.w r0, #32768 ; 0x8000
  6457. pclk = (uint32_t) HSI_VALUE;
  6458. 8002af2: 480d ldr r0, [pc, #52] ; (8002b28 <UART_SetConfig+0x2dc>)
  6459. else if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
  6460. 8002af4: f47f aefb bne.w 80028ee <UART_SetConfig+0xa2>
  6461. 8002af8: e7b8 b.n 8002a6c <UART_SetConfig+0x220>
  6462. 8002afa: bf00 nop
  6463. 8002afc: cfff69f3 .word 0xcfff69f3
  6464. 8002b00: 40008000 .word 0x40008000
  6465. 8002b04: 40013800 .word 0x40013800
  6466. 8002b08: 40004400 .word 0x40004400
  6467. 8002b0c: 40004800 .word 0x40004800
  6468. 8002b10: 40004c00 .word 0x40004c00
  6469. 8002b14: 40021000 .word 0x40021000
  6470. 8002b18: 08003094 .word 0x08003094
  6471. 8002b1c: 08003084 .word 0x08003084
  6472. 8002b20: 000ffcff .word 0x000ffcff
  6473. 8002b24: 08003080 .word 0x08003080
  6474. 8002b28: 00f42400 .word 0x00f42400
  6475. 08002b2c <UART_AdvFeatureConfig>:
  6476. if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT))
  6477. 8002b2c: 6a83 ldr r3, [r0, #40] ; 0x28
  6478. 8002b2e: 071a lsls r2, r3, #28
  6479. {
  6480. 8002b30: b410 push {r4}
  6481. if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT))
  6482. 8002b32: d506 bpl.n 8002b42 <UART_AdvFeatureConfig+0x16>
  6483. MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap);
  6484. 8002b34: 6801 ldr r1, [r0, #0]
  6485. 8002b36: 6b84 ldr r4, [r0, #56] ; 0x38
  6486. 8002b38: 684a ldr r2, [r1, #4]
  6487. 8002b3a: f422 4200 bic.w r2, r2, #32768 ; 0x8000
  6488. 8002b3e: 4322 orrs r2, r4
  6489. 8002b40: 604a str r2, [r1, #4]
  6490. if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT))
  6491. 8002b42: 07dc lsls r4, r3, #31
  6492. 8002b44: d506 bpl.n 8002b54 <UART_AdvFeatureConfig+0x28>
  6493. MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert);
  6494. 8002b46: 6801 ldr r1, [r0, #0]
  6495. 8002b48: 6ac4 ldr r4, [r0, #44] ; 0x2c
  6496. 8002b4a: 684a ldr r2, [r1, #4]
  6497. 8002b4c: f422 3200 bic.w r2, r2, #131072 ; 0x20000
  6498. 8002b50: 4322 orrs r2, r4
  6499. 8002b52: 604a str r2, [r1, #4]
  6500. if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT))
  6501. 8002b54: 0799 lsls r1, r3, #30
  6502. 8002b56: d506 bpl.n 8002b66 <UART_AdvFeatureConfig+0x3a>
  6503. MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert);
  6504. 8002b58: 6801 ldr r1, [r0, #0]
  6505. 8002b5a: 6b04 ldr r4, [r0, #48] ; 0x30
  6506. 8002b5c: 684a ldr r2, [r1, #4]
  6507. 8002b5e: f422 3280 bic.w r2, r2, #65536 ; 0x10000
  6508. 8002b62: 4322 orrs r2, r4
  6509. 8002b64: 604a str r2, [r1, #4]
  6510. if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT))
  6511. 8002b66: 075a lsls r2, r3, #29
  6512. 8002b68: d506 bpl.n 8002b78 <UART_AdvFeatureConfig+0x4c>
  6513. MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert);
  6514. 8002b6a: 6801 ldr r1, [r0, #0]
  6515. 8002b6c: 6b44 ldr r4, [r0, #52] ; 0x34
  6516. 8002b6e: 684a ldr r2, [r1, #4]
  6517. 8002b70: f422 2280 bic.w r2, r2, #262144 ; 0x40000
  6518. 8002b74: 4322 orrs r2, r4
  6519. 8002b76: 604a str r2, [r1, #4]
  6520. if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT))
  6521. 8002b78: 06dc lsls r4, r3, #27
  6522. 8002b7a: d506 bpl.n 8002b8a <UART_AdvFeatureConfig+0x5e>
  6523. MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable);
  6524. 8002b7c: 6801 ldr r1, [r0, #0]
  6525. 8002b7e: 6bc4 ldr r4, [r0, #60] ; 0x3c
  6526. 8002b80: 688a ldr r2, [r1, #8]
  6527. 8002b82: f422 5280 bic.w r2, r2, #4096 ; 0x1000
  6528. 8002b86: 4322 orrs r2, r4
  6529. 8002b88: 608a str r2, [r1, #8]
  6530. if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT))
  6531. 8002b8a: 0699 lsls r1, r3, #26
  6532. 8002b8c: d506 bpl.n 8002b9c <UART_AdvFeatureConfig+0x70>
  6533. MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError);
  6534. 8002b8e: 6801 ldr r1, [r0, #0]
  6535. 8002b90: 6c04 ldr r4, [r0, #64] ; 0x40
  6536. 8002b92: 688a ldr r2, [r1, #8]
  6537. 8002b94: f422 5200 bic.w r2, r2, #8192 ; 0x2000
  6538. 8002b98: 4322 orrs r2, r4
  6539. 8002b9a: 608a str r2, [r1, #8]
  6540. if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT))
  6541. 8002b9c: 065a lsls r2, r3, #25
  6542. 8002b9e: d509 bpl.n 8002bb4 <UART_AdvFeatureConfig+0x88>
  6543. MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable);
  6544. 8002ba0: 6801 ldr r1, [r0, #0]
  6545. 8002ba2: 6c44 ldr r4, [r0, #68] ; 0x44
  6546. 8002ba4: 684a ldr r2, [r1, #4]
  6547. 8002ba6: f422 1280 bic.w r2, r2, #1048576 ; 0x100000
  6548. 8002baa: 4322 orrs r2, r4
  6549. if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE)
  6550. 8002bac: f5b4 1f80 cmp.w r4, #1048576 ; 0x100000
  6551. MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable);
  6552. 8002bb0: 604a str r2, [r1, #4]
  6553. if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE)
  6554. 8002bb2: d00b beq.n 8002bcc <UART_AdvFeatureConfig+0xa0>
  6555. if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT))
  6556. 8002bb4: 061b lsls r3, r3, #24
  6557. 8002bb6: d506 bpl.n 8002bc6 <UART_AdvFeatureConfig+0x9a>
  6558. MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst);
  6559. 8002bb8: 6802 ldr r2, [r0, #0]
  6560. 8002bba: 6cc1 ldr r1, [r0, #76] ; 0x4c
  6561. 8002bbc: 6853 ldr r3, [r2, #4]
  6562. 8002bbe: f423 2300 bic.w r3, r3, #524288 ; 0x80000
  6563. 8002bc2: 430b orrs r3, r1
  6564. 8002bc4: 6053 str r3, [r2, #4]
  6565. }
  6566. 8002bc6: f85d 4b04 ldr.w r4, [sp], #4
  6567. 8002bca: 4770 bx lr
  6568. MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode);
  6569. 8002bcc: 684a ldr r2, [r1, #4]
  6570. 8002bce: 6c84 ldr r4, [r0, #72] ; 0x48
  6571. 8002bd0: f422 02c0 bic.w r2, r2, #6291456 ; 0x600000
  6572. 8002bd4: 4322 orrs r2, r4
  6573. 8002bd6: 604a str r2, [r1, #4]
  6574. 8002bd8: e7ec b.n 8002bb4 <UART_AdvFeatureConfig+0x88>
  6575. 8002bda: bf00 nop
  6576. 08002bdc <UART_CheckIdleState>:
  6577. {
  6578. 8002bdc: b538 push {r3, r4, r5, lr}
  6579. huart->ErrorCode = HAL_UART_ERROR_NONE;
  6580. 8002bde: 2300 movs r3, #0
  6581. {
  6582. 8002be0: 4604 mov r4, r0
  6583. huart->ErrorCode = HAL_UART_ERROR_NONE;
  6584. 8002be2: f8c0 3090 str.w r3, [r0, #144] ; 0x90
  6585. tickstart = HAL_GetTick();
  6586. 8002be6: f7fe f877 bl 8000cd8 <HAL_GetTick>
  6587. if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE)
  6588. 8002bea: 6822 ldr r2, [r4, #0]
  6589. 8002bec: 6813 ldr r3, [r2, #0]
  6590. 8002bee: 071b lsls r3, r3, #28
  6591. tickstart = HAL_GetTick();
  6592. 8002bf0: 4605 mov r5, r0
  6593. if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE)
  6594. 8002bf2: d40e bmi.n 8002c12 <UART_CheckIdleState+0x36>
  6595. if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE)
  6596. 8002bf4: 6813 ldr r3, [r2, #0]
  6597. 8002bf6: 0759 lsls r1, r3, #29
  6598. 8002bf8: d432 bmi.n 8002c60 <UART_CheckIdleState+0x84>
  6599. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6600. 8002bfa: 2300 movs r3, #0
  6601. huart->gState = HAL_UART_STATE_READY;
  6602. 8002bfc: 2220 movs r2, #32
  6603. __HAL_UNLOCK(huart);
  6604. 8002bfe: f884 3084 strb.w r3, [r4, #132] ; 0x84
  6605. huart->gState = HAL_UART_STATE_READY;
  6606. 8002c02: f8c4 2088 str.w r2, [r4, #136] ; 0x88
  6607. return HAL_OK;
  6608. 8002c06: 4618 mov r0, r3
  6609. huart->RxState = HAL_UART_STATE_READY;
  6610. 8002c08: f8c4 208c str.w r2, [r4, #140] ; 0x8c
  6611. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6612. 8002c0c: 66e3 str r3, [r4, #108] ; 0x6c
  6613. huart->RxEventType = HAL_UART_RXEVENT_TC;
  6614. 8002c0e: 6723 str r3, [r4, #112] ; 0x70
  6615. }
  6616. 8002c10: bd38 pop {r3, r4, r5, pc}
  6617. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  6618. 8002c12: 69d3 ldr r3, [r2, #28]
  6619. 8002c14: 0298 lsls r0, r3, #10
  6620. 8002c16: d4ed bmi.n 8002bf4 <UART_CheckIdleState+0x18>
  6621. 8002c18: e00c b.n 8002c34 <UART_CheckIdleState+0x58>
  6622. if ((READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) && (Flag != UART_FLAG_TXE) && (Flag != UART_FLAG_TC))
  6623. 8002c1a: 6819 ldr r1, [r3, #0]
  6624. 8002c1c: 0749 lsls r1, r1, #29
  6625. 8002c1e: 461a mov r2, r3
  6626. 8002c20: d505 bpl.n 8002c2e <UART_CheckIdleState+0x52>
  6627. if (__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) == SET)
  6628. 8002c22: 69d9 ldr r1, [r3, #28]
  6629. 8002c24: 0708 lsls r0, r1, #28
  6630. 8002c26: d44f bmi.n 8002cc8 <UART_CheckIdleState+0xec>
  6631. if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET)
  6632. 8002c28: 69d9 ldr r1, [r3, #28]
  6633. 8002c2a: 0509 lsls r1, r1, #20
  6634. 8002c2c: d47a bmi.n 8002d24 <UART_CheckIdleState+0x148>
  6635. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  6636. 8002c2e: 69db ldr r3, [r3, #28]
  6637. 8002c30: 0298 lsls r0, r3, #10
  6638. 8002c32: d4df bmi.n 8002bf4 <UART_CheckIdleState+0x18>
  6639. if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
  6640. 8002c34: f7fe f850 bl 8000cd8 <HAL_GetTick>
  6641. 8002c38: 1b43 subs r3, r0, r5
  6642. 8002c3a: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000
  6643. 8002c3e: 6823 ldr r3, [r4, #0]
  6644. 8002c40: d3eb bcc.n 8002c1a <UART_CheckIdleState+0x3e>
  6645. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6646. 8002c42: e853 2f00 ldrex r2, [r3]
  6647. ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE));
  6648. 8002c46: f022 0280 bic.w r2, r2, #128 ; 0x80
  6649. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6650. 8002c4a: e843 2100 strex r1, r2, [r3]
  6651. 8002c4e: 2900 cmp r1, #0
  6652. 8002c50: d1f7 bne.n 8002c42 <UART_CheckIdleState+0x66>
  6653. huart->gState = HAL_UART_STATE_READY;
  6654. 8002c52: 2320 movs r3, #32
  6655. __HAL_UNLOCK(huart);
  6656. 8002c54: f884 1084 strb.w r1, [r4, #132] ; 0x84
  6657. huart->gState = HAL_UART_STATE_READY;
  6658. 8002c58: f8c4 3088 str.w r3, [r4, #136] ; 0x88
  6659. return HAL_TIMEOUT;
  6660. 8002c5c: 2003 movs r0, #3
  6661. }
  6662. 8002c5e: bd38 pop {r3, r4, r5, pc}
  6663. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  6664. 8002c60: 69d3 ldr r3, [r2, #28]
  6665. 8002c62: 025b lsls r3, r3, #9
  6666. 8002c64: d4c9 bmi.n 8002bfa <UART_CheckIdleState+0x1e>
  6667. 8002c66: e00d b.n 8002c84 <UART_CheckIdleState+0xa8>
  6668. if ((READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) && (Flag != UART_FLAG_TXE) && (Flag != UART_FLAG_TC))
  6669. 8002c68: 681a ldr r2, [r3, #0]
  6670. 8002c6a: 0750 lsls r0, r2, #29
  6671. 8002c6c: d507 bpl.n 8002c7e <UART_CheckIdleState+0xa2>
  6672. if (__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) == SET)
  6673. 8002c6e: 69da ldr r2, [r3, #28]
  6674. 8002c70: 0711 lsls r1, r2, #28
  6675. 8002c72: f100 8085 bmi.w 8002d80 <UART_CheckIdleState+0x1a4>
  6676. if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET)
  6677. 8002c76: 69da ldr r2, [r3, #28]
  6678. 8002c78: 0512 lsls r2, r2, #20
  6679. 8002c7a: f100 80af bmi.w 8002ddc <UART_CheckIdleState+0x200>
  6680. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  6681. 8002c7e: 69db ldr r3, [r3, #28]
  6682. 8002c80: 025b lsls r3, r3, #9
  6683. 8002c82: d4ba bmi.n 8002bfa <UART_CheckIdleState+0x1e>
  6684. if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
  6685. 8002c84: f7fe f828 bl 8000cd8 <HAL_GetTick>
  6686. 8002c88: 1b43 subs r3, r0, r5
  6687. 8002c8a: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000
  6688. 8002c8e: 6823 ldr r3, [r4, #0]
  6689. 8002c90: d3ea bcc.n 8002c68 <UART_CheckIdleState+0x8c>
  6690. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6691. 8002c92: e853 2f00 ldrex r2, [r3]
  6692. ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));
  6693. 8002c96: f422 7290 bic.w r2, r2, #288 ; 0x120
  6694. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6695. 8002c9a: e843 2100 strex r1, r2, [r3]
  6696. 8002c9e: 2900 cmp r1, #0
  6697. 8002ca0: d1f7 bne.n 8002c92 <UART_CheckIdleState+0xb6>
  6698. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6699. 8002ca2: f103 0208 add.w r2, r3, #8
  6700. 8002ca6: e852 2f00 ldrex r2, [r2]
  6701. ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
  6702. 8002caa: f022 0201 bic.w r2, r2, #1
  6703. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6704. 8002cae: f103 0008 add.w r0, r3, #8
  6705. 8002cb2: e840 2100 strex r1, r2, [r0]
  6706. 8002cb6: 2900 cmp r1, #0
  6707. 8002cb8: d1f3 bne.n 8002ca2 <UART_CheckIdleState+0xc6>
  6708. huart->RxState = HAL_UART_STATE_READY;
  6709. 8002cba: 2320 movs r3, #32
  6710. __HAL_UNLOCK(huart);
  6711. 8002cbc: f884 1084 strb.w r1, [r4, #132] ; 0x84
  6712. huart->RxState = HAL_UART_STATE_READY;
  6713. 8002cc0: f8c4 308c str.w r3, [r4, #140] ; 0x8c
  6714. return HAL_TIMEOUT;
  6715. 8002cc4: 2003 movs r0, #3
  6716. }
  6717. 8002cc6: bd38 pop {r3, r4, r5, pc}
  6718. __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);
  6719. 8002cc8: 2208 movs r2, #8
  6720. 8002cca: 621a str r2, [r3, #32]
  6721. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6722. 8002ccc: e853 2f00 ldrex r2, [r3]
  6723. ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));
  6724. 8002cd0: f422 7290 bic.w r2, r2, #288 ; 0x120
  6725. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6726. 8002cd4: e843 2100 strex r1, r2, [r3]
  6727. 8002cd8: 2900 cmp r1, #0
  6728. 8002cda: d1f7 bne.n 8002ccc <UART_CheckIdleState+0xf0>
  6729. ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE));
  6730. 8002cdc: 4856 ldr r0, [pc, #344] ; (8002e38 <UART_CheckIdleState+0x25c>)
  6731. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6732. 8002cde: f103 0208 add.w r2, r3, #8
  6733. 8002ce2: e852 2f00 ldrex r2, [r2]
  6734. 8002ce6: 4002 ands r2, r0
  6735. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6736. 8002ce8: f103 0508 add.w r5, r3, #8
  6737. 8002cec: e845 2100 strex r1, r2, [r5]
  6738. 8002cf0: 2900 cmp r1, #0
  6739. 8002cf2: d1f4 bne.n 8002cde <UART_CheckIdleState+0x102>
  6740. if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
  6741. 8002cf4: 6ee2 ldr r2, [r4, #108] ; 0x6c
  6742. 8002cf6: 2a01 cmp r2, #1
  6743. 8002cf8: d00b beq.n 8002d12 <UART_CheckIdleState+0x136>
  6744. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6745. 8002cfa: 2200 movs r2, #0
  6746. huart->RxState = HAL_UART_STATE_READY;
  6747. 8002cfc: 2020 movs r0, #32
  6748. huart->ErrorCode = HAL_UART_ERROR_ORE;
  6749. 8002cfe: 2108 movs r1, #8
  6750. huart->RxState = HAL_UART_STATE_READY;
  6751. 8002d00: f8c4 008c str.w r0, [r4, #140] ; 0x8c
  6752. huart->RxISR = NULL;
  6753. 8002d04: 6762 str r2, [r4, #116] ; 0x74
  6754. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6755. 8002d06: 66e2 str r2, [r4, #108] ; 0x6c
  6756. __HAL_UNLOCK(huart);
  6757. 8002d08: f884 2084 strb.w r2, [r4, #132] ; 0x84
  6758. huart->ErrorCode = HAL_UART_ERROR_ORE;
  6759. 8002d0c: f8c4 1090 str.w r1, [r4, #144] ; 0x90
  6760. return HAL_ERROR;
  6761. 8002d10: e797 b.n 8002c42 <UART_CheckIdleState+0x66>
  6762. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6763. 8002d12: e853 2f00 ldrex r2, [r3]
  6764. ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
  6765. 8002d16: f022 0210 bic.w r2, r2, #16
  6766. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6767. 8002d1a: e843 2100 strex r1, r2, [r3]
  6768. 8002d1e: 2900 cmp r1, #0
  6769. 8002d20: d1f7 bne.n 8002d12 <UART_CheckIdleState+0x136>
  6770. 8002d22: e7ea b.n 8002cfa <UART_CheckIdleState+0x11e>
  6771. __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);
  6772. 8002d24: f44f 6200 mov.w r2, #2048 ; 0x800
  6773. 8002d28: 621a str r2, [r3, #32]
  6774. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6775. 8002d2a: e853 2f00 ldrex r2, [r3]
  6776. ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));
  6777. 8002d2e: f422 7290 bic.w r2, r2, #288 ; 0x120
  6778. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6779. 8002d32: e843 2100 strex r1, r2, [r3]
  6780. 8002d36: 2900 cmp r1, #0
  6781. 8002d38: d1f7 bne.n 8002d2a <UART_CheckIdleState+0x14e>
  6782. ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE));
  6783. 8002d3a: 483f ldr r0, [pc, #252] ; (8002e38 <UART_CheckIdleState+0x25c>)
  6784. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6785. 8002d3c: f103 0208 add.w r2, r3, #8
  6786. 8002d40: e852 2f00 ldrex r2, [r2]
  6787. 8002d44: 4002 ands r2, r0
  6788. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6789. 8002d46: f103 0508 add.w r5, r3, #8
  6790. 8002d4a: e845 2100 strex r1, r2, [r5]
  6791. 8002d4e: 2900 cmp r1, #0
  6792. 8002d50: d1f4 bne.n 8002d3c <UART_CheckIdleState+0x160>
  6793. if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
  6794. 8002d52: 6ee2 ldr r2, [r4, #108] ; 0x6c
  6795. 8002d54: 2a01 cmp r2, #1
  6796. 8002d56: d00a beq.n 8002d6e <UART_CheckIdleState+0x192>
  6797. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6798. 8002d58: 2200 movs r2, #0
  6799. huart->RxState = HAL_UART_STATE_READY;
  6800. 8002d5a: 2120 movs r1, #32
  6801. 8002d5c: f8c4 108c str.w r1, [r4, #140] ; 0x8c
  6802. huart->RxISR = NULL;
  6803. 8002d60: 6762 str r2, [r4, #116] ; 0x74
  6804. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6805. 8002d62: 66e2 str r2, [r4, #108] ; 0x6c
  6806. __HAL_UNLOCK(huart);
  6807. 8002d64: f884 2084 strb.w r2, [r4, #132] ; 0x84
  6808. huart->ErrorCode = HAL_UART_ERROR_RTO;
  6809. 8002d68: f8c4 1090 str.w r1, [r4, #144] ; 0x90
  6810. return HAL_TIMEOUT;
  6811. 8002d6c: e769 b.n 8002c42 <UART_CheckIdleState+0x66>
  6812. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6813. 8002d6e: e853 2f00 ldrex r2, [r3]
  6814. ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
  6815. 8002d72: f022 0210 bic.w r2, r2, #16
  6816. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6817. 8002d76: e843 2100 strex r1, r2, [r3]
  6818. 8002d7a: 2900 cmp r1, #0
  6819. 8002d7c: d1f7 bne.n 8002d6e <UART_CheckIdleState+0x192>
  6820. 8002d7e: e7eb b.n 8002d58 <UART_CheckIdleState+0x17c>
  6821. __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);
  6822. 8002d80: 2208 movs r2, #8
  6823. 8002d82: 621a str r2, [r3, #32]
  6824. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6825. 8002d84: e853 2f00 ldrex r2, [r3]
  6826. ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));
  6827. 8002d88: f422 7290 bic.w r2, r2, #288 ; 0x120
  6828. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6829. 8002d8c: e843 2100 strex r1, r2, [r3]
  6830. 8002d90: 2900 cmp r1, #0
  6831. 8002d92: d1f7 bne.n 8002d84 <UART_CheckIdleState+0x1a8>
  6832. ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE));
  6833. 8002d94: 4828 ldr r0, [pc, #160] ; (8002e38 <UART_CheckIdleState+0x25c>)
  6834. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6835. 8002d96: f103 0208 add.w r2, r3, #8
  6836. 8002d9a: e852 2f00 ldrex r2, [r2]
  6837. 8002d9e: 4002 ands r2, r0
  6838. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6839. 8002da0: f103 0508 add.w r5, r3, #8
  6840. 8002da4: e845 2100 strex r1, r2, [r5]
  6841. 8002da8: 2900 cmp r1, #0
  6842. 8002daa: d1f4 bne.n 8002d96 <UART_CheckIdleState+0x1ba>
  6843. if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
  6844. 8002dac: 6ee2 ldr r2, [r4, #108] ; 0x6c
  6845. 8002dae: 2a01 cmp r2, #1
  6846. 8002db0: d00b beq.n 8002dca <UART_CheckIdleState+0x1ee>
  6847. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6848. 8002db2: 2200 movs r2, #0
  6849. huart->RxState = HAL_UART_STATE_READY;
  6850. 8002db4: 2020 movs r0, #32
  6851. huart->ErrorCode = HAL_UART_ERROR_ORE;
  6852. 8002db6: 2108 movs r1, #8
  6853. huart->RxState = HAL_UART_STATE_READY;
  6854. 8002db8: f8c4 008c str.w r0, [r4, #140] ; 0x8c
  6855. huart->RxISR = NULL;
  6856. 8002dbc: 6762 str r2, [r4, #116] ; 0x74
  6857. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6858. 8002dbe: 66e2 str r2, [r4, #108] ; 0x6c
  6859. __HAL_UNLOCK(huart);
  6860. 8002dc0: f884 2084 strb.w r2, [r4, #132] ; 0x84
  6861. huart->ErrorCode = HAL_UART_ERROR_ORE;
  6862. 8002dc4: f8c4 1090 str.w r1, [r4, #144] ; 0x90
  6863. return HAL_ERROR;
  6864. 8002dc8: e763 b.n 8002c92 <UART_CheckIdleState+0xb6>
  6865. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6866. 8002dca: e853 2f00 ldrex r2, [r3]
  6867. ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
  6868. 8002dce: f022 0210 bic.w r2, r2, #16
  6869. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6870. 8002dd2: e843 2100 strex r1, r2, [r3]
  6871. 8002dd6: 2900 cmp r1, #0
  6872. 8002dd8: d1f7 bne.n 8002dca <UART_CheckIdleState+0x1ee>
  6873. 8002dda: e7ea b.n 8002db2 <UART_CheckIdleState+0x1d6>
  6874. __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);
  6875. 8002ddc: f44f 6200 mov.w r2, #2048 ; 0x800
  6876. 8002de0: 621a str r2, [r3, #32]
  6877. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6878. 8002de2: e853 2f00 ldrex r2, [r3]
  6879. ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));
  6880. 8002de6: f422 7290 bic.w r2, r2, #288 ; 0x120
  6881. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6882. 8002dea: e843 2100 strex r1, r2, [r3]
  6883. 8002dee: 2900 cmp r1, #0
  6884. 8002df0: d1f7 bne.n 8002de2 <UART_CheckIdleState+0x206>
  6885. ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE));
  6886. 8002df2: 4811 ldr r0, [pc, #68] ; (8002e38 <UART_CheckIdleState+0x25c>)
  6887. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6888. 8002df4: f103 0208 add.w r2, r3, #8
  6889. 8002df8: e852 2f00 ldrex r2, [r2]
  6890. 8002dfc: 4002 ands r2, r0
  6891. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6892. 8002dfe: f103 0508 add.w r5, r3, #8
  6893. 8002e02: e845 2100 strex r1, r2, [r5]
  6894. 8002e06: 2900 cmp r1, #0
  6895. 8002e08: d1f4 bne.n 8002df4 <UART_CheckIdleState+0x218>
  6896. if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
  6897. 8002e0a: 6ee2 ldr r2, [r4, #108] ; 0x6c
  6898. 8002e0c: 2a01 cmp r2, #1
  6899. 8002e0e: d00a beq.n 8002e26 <UART_CheckIdleState+0x24a>
  6900. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6901. 8002e10: 2200 movs r2, #0
  6902. huart->RxState = HAL_UART_STATE_READY;
  6903. 8002e12: 2120 movs r1, #32
  6904. 8002e14: f8c4 108c str.w r1, [r4, #140] ; 0x8c
  6905. huart->RxISR = NULL;
  6906. 8002e18: 6762 str r2, [r4, #116] ; 0x74
  6907. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
  6908. 8002e1a: 66e2 str r2, [r4, #108] ; 0x6c
  6909. __HAL_UNLOCK(huart);
  6910. 8002e1c: f884 2084 strb.w r2, [r4, #132] ; 0x84
  6911. huart->ErrorCode = HAL_UART_ERROR_RTO;
  6912. 8002e20: f8c4 1090 str.w r1, [r4, #144] ; 0x90
  6913. return HAL_TIMEOUT;
  6914. 8002e24: e735 b.n 8002c92 <UART_CheckIdleState+0xb6>
  6915. __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
  6916. 8002e26: e853 2f00 ldrex r2, [r3]
  6917. ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
  6918. 8002e2a: f022 0210 bic.w r2, r2, #16
  6919. __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
  6920. 8002e2e: e843 2100 strex r1, r2, [r3]
  6921. 8002e32: 2900 cmp r1, #0
  6922. 8002e34: d1f7 bne.n 8002e26 <UART_CheckIdleState+0x24a>
  6923. 8002e36: e7eb b.n 8002e10 <UART_CheckIdleState+0x234>
  6924. 8002e38: effffffe .word 0xeffffffe
  6925. 08002e3c <HAL_UART_Init>:
  6926. if (huart == NULL)
  6927. 8002e3c: b380 cbz r0, 8002ea0 <HAL_UART_Init+0x64>
  6928. if (huart->gState == HAL_UART_STATE_RESET)
  6929. 8002e3e: f8d0 3088 ldr.w r3, [r0, #136] ; 0x88
  6930. {
  6931. 8002e42: b510 push {r4, lr}
  6932. 8002e44: 4604 mov r4, r0
  6933. if (huart->gState == HAL_UART_STATE_RESET)
  6934. 8002e46: b333 cbz r3, 8002e96 <HAL_UART_Init+0x5a>
  6935. __HAL_UART_DISABLE(huart);
  6936. 8002e48: 6822 ldr r2, [r4, #0]
  6937. if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)
  6938. 8002e4a: 6aa1 ldr r1, [r4, #40] ; 0x28
  6939. huart->gState = HAL_UART_STATE_BUSY;
  6940. 8002e4c: 2324 movs r3, #36 ; 0x24
  6941. 8002e4e: f8c4 3088 str.w r3, [r4, #136] ; 0x88
  6942. __HAL_UART_DISABLE(huart);
  6943. 8002e52: 6813 ldr r3, [r2, #0]
  6944. 8002e54: f023 0301 bic.w r3, r3, #1
  6945. 8002e58: 6013 str r3, [r2, #0]
  6946. if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)
  6947. 8002e5a: b9c1 cbnz r1, 8002e8e <HAL_UART_Init+0x52>
  6948. if (UART_SetConfig(huart) == HAL_ERROR)
  6949. 8002e5c: 4620 mov r0, r4
  6950. 8002e5e: f7ff fcf5 bl 800284c <UART_SetConfig>
  6951. 8002e62: 2801 cmp r0, #1
  6952. 8002e64: d011 beq.n 8002e8a <HAL_UART_Init+0x4e>
  6953. CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
  6954. 8002e66: 6823 ldr r3, [r4, #0]
  6955. 8002e68: 685a ldr r2, [r3, #4]
  6956. 8002e6a: f422 4290 bic.w r2, r2, #18432 ; 0x4800
  6957. 8002e6e: 605a str r2, [r3, #4]
  6958. CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
  6959. 8002e70: 689a ldr r2, [r3, #8]
  6960. 8002e72: f022 022a bic.w r2, r2, #42 ; 0x2a
  6961. 8002e76: 609a str r2, [r3, #8]
  6962. __HAL_UART_ENABLE(huart);
  6963. 8002e78: 681a ldr r2, [r3, #0]
  6964. 8002e7a: f042 0201 orr.w r2, r2, #1
  6965. return (UART_CheckIdleState(huart));
  6966. 8002e7e: 4620 mov r0, r4
  6967. __HAL_UART_ENABLE(huart);
  6968. 8002e80: 601a str r2, [r3, #0]
  6969. }
  6970. 8002e82: e8bd 4010 ldmia.w sp!, {r4, lr}
  6971. return (UART_CheckIdleState(huart));
  6972. 8002e86: f7ff bea9 b.w 8002bdc <UART_CheckIdleState>
  6973. }
  6974. 8002e8a: 2001 movs r0, #1
  6975. 8002e8c: bd10 pop {r4, pc}
  6976. UART_AdvFeatureConfig(huart);
  6977. 8002e8e: 4620 mov r0, r4
  6978. 8002e90: f7ff fe4c bl 8002b2c <UART_AdvFeatureConfig>
  6979. 8002e94: e7e2 b.n 8002e5c <HAL_UART_Init+0x20>
  6980. huart->Lock = HAL_UNLOCKED;
  6981. 8002e96: f880 3084 strb.w r3, [r0, #132] ; 0x84
  6982. HAL_UART_MspInit(huart);
  6983. 8002e9a: f7fd fdf9 bl 8000a90 <HAL_UART_MspInit>
  6984. 8002e9e: e7d3 b.n 8002e48 <HAL_UART_Init+0xc>
  6985. }
  6986. 8002ea0: 2001 movs r0, #1
  6987. 8002ea2: 4770 bx lr
  6988. 08002ea4 <HAL_UARTEx_DisableFifoMode>:
  6989. /* Check parameters */
  6990. assert_param(IS_UART_FIFO_INSTANCE(huart->Instance));
  6991. /* Process Locked */
  6992. __HAL_LOCK(huart);
  6993. 8002ea4: f890 3084 ldrb.w r3, [r0, #132] ; 0x84
  6994. 8002ea8: 2b01 cmp r3, #1
  6995. 8002eaa: d017 beq.n 8002edc <HAL_UARTEx_DisableFifoMode+0x38>
  6996. huart->gState = HAL_UART_STATE_BUSY;
  6997. /* Save actual UART configuration */
  6998. tmpcr1 = READ_REG(huart->Instance->CR1);
  6999. 8002eac: 6802 ldr r2, [r0, #0]
  7000. huart->gState = HAL_UART_STATE_BUSY;
  7001. 8002eae: 2324 movs r3, #36 ; 0x24
  7002. {
  7003. 8002eb0: b410 push {r4}
  7004. huart->gState = HAL_UART_STATE_BUSY;
  7005. 8002eb2: f8c0 3088 str.w r3, [r0, #136] ; 0x88
  7006. tmpcr1 = READ_REG(huart->Instance->CR1);
  7007. 8002eb6: 6811 ldr r1, [r2, #0]
  7008. /* Disable UART */
  7009. __HAL_UART_DISABLE(huart);
  7010. 8002eb8: 6814 ldr r4, [r2, #0]
  7011. /* Disable FIFO mode */
  7012. CLEAR_BIT(tmpcr1, USART_CR1_FIFOEN);
  7013. huart->FifoMode = UART_FIFOMODE_DISABLE;
  7014. 8002eba: 2300 movs r3, #0
  7015. __HAL_UART_DISABLE(huart);
  7016. 8002ebc: f024 0401 bic.w r4, r4, #1
  7017. CLEAR_BIT(tmpcr1, USART_CR1_FIFOEN);
  7018. 8002ec0: f021 5100 bic.w r1, r1, #536870912 ; 0x20000000
  7019. __HAL_UART_DISABLE(huart);
  7020. 8002ec4: 6014 str r4, [r2, #0]
  7021. huart->FifoMode = UART_FIFOMODE_DISABLE;
  7022. 8002ec6: 6643 str r3, [r0, #100] ; 0x64
  7023. /* Restore UART configuration */
  7024. WRITE_REG(huart->Instance->CR1, tmpcr1);
  7025. 8002ec8: 6011 str r1, [r2, #0]
  7026. huart->gState = HAL_UART_STATE_READY;
  7027. /* Process Unlocked */
  7028. __HAL_UNLOCK(huart);
  7029. 8002eca: f880 3084 strb.w r3, [r0, #132] ; 0x84
  7030. huart->gState = HAL_UART_STATE_READY;
  7031. 8002ece: 2220 movs r2, #32
  7032. 8002ed0: f8c0 2088 str.w r2, [r0, #136] ; 0x88
  7033. return HAL_OK;
  7034. }
  7035. 8002ed4: f85d 4b04 ldr.w r4, [sp], #4
  7036. return HAL_OK;
  7037. 8002ed8: 4618 mov r0, r3
  7038. }
  7039. 8002eda: 4770 bx lr
  7040. __HAL_LOCK(huart);
  7041. 8002edc: 2002 movs r0, #2
  7042. }
  7043. 8002ede: 4770 bx lr
  7044. 08002ee0 <HAL_UARTEx_SetTxFifoThreshold>:
  7045. /* Check parameters */
  7046. assert_param(IS_UART_FIFO_INSTANCE(huart->Instance));
  7047. assert_param(IS_UART_TXFIFO_THRESHOLD(Threshold));
  7048. /* Process Locked */
  7049. __HAL_LOCK(huart);
  7050. 8002ee0: f890 2084 ldrb.w r2, [r0, #132] ; 0x84
  7051. 8002ee4: 2a01 cmp r2, #1
  7052. 8002ee6: d037 beq.n 8002f58 <HAL_UARTEx_SetTxFifoThreshold+0x78>
  7053. huart->gState = HAL_UART_STATE_BUSY;
  7054. 8002ee8: 4603 mov r3, r0
  7055. /* Save actual UART configuration */
  7056. tmpcr1 = READ_REG(huart->Instance->CR1);
  7057. 8002eea: 6802 ldr r2, [r0, #0]
  7058. huart->gState = HAL_UART_STATE_BUSY;
  7059. 8002eec: 2024 movs r0, #36 ; 0x24
  7060. {
  7061. 8002eee: b530 push {r4, r5, lr}
  7062. huart->gState = HAL_UART_STATE_BUSY;
  7063. 8002ef0: f8c3 0088 str.w r0, [r3, #136] ; 0x88
  7064. tmpcr1 = READ_REG(huart->Instance->CR1);
  7065. 8002ef4: 6814 ldr r4, [r2, #0]
  7066. /* Disable UART */
  7067. __HAL_UART_DISABLE(huart);
  7068. 8002ef6: 6810 ldr r0, [r2, #0]
  7069. 8002ef8: f020 0001 bic.w r0, r0, #1
  7070. 8002efc: 6010 str r0, [r2, #0]
  7071. /* Update TX threshold configuration */
  7072. MODIFY_REG(huart->Instance->CR3, USART_CR3_TXFTCFG, Threshold);
  7073. 8002efe: 6890 ldr r0, [r2, #8]
  7074. 8002f00: f020 4060 bic.w r0, r0, #3758096384 ; 0xe0000000
  7075. 8002f04: 4301 orrs r1, r0
  7076. uint8_t rx_fifo_threshold;
  7077. uint8_t tx_fifo_threshold;
  7078. static const uint8_t numerator[] = {1U, 1U, 1U, 3U, 7U, 1U, 0U, 0U};
  7079. static const uint8_t denominator[] = {8U, 4U, 2U, 4U, 8U, 1U, 1U, 1U};
  7080. if (huart->FifoMode == UART_FIFOMODE_DISABLE)
  7081. 8002f06: 6e58 ldr r0, [r3, #100] ; 0x64
  7082. MODIFY_REG(huart->Instance->CR3, USART_CR3_TXFTCFG, Threshold);
  7083. 8002f08: 6091 str r1, [r2, #8]
  7084. if (huart->FifoMode == UART_FIFOMODE_DISABLE)
  7085. 8002f0a: b310 cbz r0, 8002f52 <HAL_UARTEx_SetTxFifoThreshold+0x72>
  7086. }
  7087. else
  7088. {
  7089. rx_fifo_depth = RX_FIFO_DEPTH;
  7090. tx_fifo_depth = TX_FIFO_DEPTH;
  7091. rx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_RXFTCFG) >> USART_CR3_RXFTCFG_Pos);
  7092. 8002f0c: 6891 ldr r1, [r2, #8]
  7093. tx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos);
  7094. 8002f0e: 6890 ldr r0, [r2, #8]
  7095. huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) /
  7096. (uint16_t)denominator[tx_fifo_threshold];
  7097. 8002f10: 4d12 ldr r5, [pc, #72] ; (8002f5c <HAL_UARTEx_SetTxFifoThreshold+0x7c>)
  7098. huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) /
  7099. 8002f12: f3c1 6c42 ubfx ip, r1, #25, #3
  7100. tx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos);
  7101. 8002f16: ea4f 7e50 mov.w lr, r0, lsr #29
  7102. huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) /
  7103. 8002f1a: 4911 ldr r1, [pc, #68] ; (8002f60 <HAL_UARTEx_SetTxFifoThreshold+0x80>)
  7104. 8002f1c: f811 000e ldrb.w r0, [r1, lr]
  7105. huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) /
  7106. 8002f20: f811 100c ldrb.w r1, [r1, ip]
  7107. (uint16_t)denominator[tx_fifo_threshold];
  7108. 8002f24: f815 e00e ldrb.w lr, [r5, lr]
  7109. (uint16_t)denominator[rx_fifo_threshold];
  7110. 8002f28: f815 500c ldrb.w r5, [r5, ip]
  7111. huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) /
  7112. 8002f2c: 00c0 lsls r0, r0, #3
  7113. huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) /
  7114. 8002f2e: 00c9 lsls r1, r1, #3
  7115. huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) /
  7116. 8002f30: fbb0 f0fe udiv r0, r0, lr
  7117. huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) /
  7118. 8002f34: fbb1 f1f5 udiv r1, r1, r5
  7119. 8002f38: f8a3 1068 strh.w r1, [r3, #104] ; 0x68
  7120. __HAL_UNLOCK(huart);
  7121. 8002f3c: 2100 movs r1, #0
  7122. 8002f3e: f8a3 006a strh.w r0, [r3, #106] ; 0x6a
  7123. huart->gState = HAL_UART_STATE_READY;
  7124. 8002f42: 2520 movs r5, #32
  7125. WRITE_REG(huart->Instance->CR1, tmpcr1);
  7126. 8002f44: 6014 str r4, [r2, #0]
  7127. __HAL_UNLOCK(huart);
  7128. 8002f46: f883 1084 strb.w r1, [r3, #132] ; 0x84
  7129. return HAL_OK;
  7130. 8002f4a: 4608 mov r0, r1
  7131. huart->gState = HAL_UART_STATE_READY;
  7132. 8002f4c: f8c3 5088 str.w r5, [r3, #136] ; 0x88
  7133. }
  7134. 8002f50: bd30 pop {r4, r5, pc}
  7135. huart->NbRxDataToProcess = 1U;
  7136. 8002f52: 2101 movs r1, #1
  7137. huart->NbTxDataToProcess = 1U;
  7138. 8002f54: 4608 mov r0, r1
  7139. 8002f56: e7ef b.n 8002f38 <HAL_UARTEx_SetTxFifoThreshold+0x58>
  7140. __HAL_LOCK(huart);
  7141. 8002f58: 2002 movs r0, #2
  7142. }
  7143. 8002f5a: 4770 bx lr
  7144. 8002f5c: 080030ac .word 0x080030ac
  7145. 8002f60: 080030b4 .word 0x080030b4
  7146. 08002f64 <HAL_UARTEx_SetRxFifoThreshold>:
  7147. __HAL_LOCK(huart);
  7148. 8002f64: f890 2084 ldrb.w r2, [r0, #132] ; 0x84
  7149. 8002f68: 2a01 cmp r2, #1
  7150. 8002f6a: d037 beq.n 8002fdc <HAL_UARTEx_SetRxFifoThreshold+0x78>
  7151. huart->gState = HAL_UART_STATE_BUSY;
  7152. 8002f6c: 4603 mov r3, r0
  7153. tmpcr1 = READ_REG(huart->Instance->CR1);
  7154. 8002f6e: 6802 ldr r2, [r0, #0]
  7155. huart->gState = HAL_UART_STATE_BUSY;
  7156. 8002f70: 2024 movs r0, #36 ; 0x24
  7157. {
  7158. 8002f72: b530 push {r4, r5, lr}
  7159. huart->gState = HAL_UART_STATE_BUSY;
  7160. 8002f74: f8c3 0088 str.w r0, [r3, #136] ; 0x88
  7161. tmpcr1 = READ_REG(huart->Instance->CR1);
  7162. 8002f78: 6814 ldr r4, [r2, #0]
  7163. __HAL_UART_DISABLE(huart);
  7164. 8002f7a: 6810 ldr r0, [r2, #0]
  7165. 8002f7c: f020 0001 bic.w r0, r0, #1
  7166. 8002f80: 6010 str r0, [r2, #0]
  7167. MODIFY_REG(huart->Instance->CR3, USART_CR3_RXFTCFG, Threshold);
  7168. 8002f82: 6890 ldr r0, [r2, #8]
  7169. 8002f84: f020 6060 bic.w r0, r0, #234881024 ; 0xe000000
  7170. 8002f88: 4301 orrs r1, r0
  7171. if (huart->FifoMode == UART_FIFOMODE_DISABLE)
  7172. 8002f8a: 6e58 ldr r0, [r3, #100] ; 0x64
  7173. MODIFY_REG(huart->Instance->CR3, USART_CR3_RXFTCFG, Threshold);
  7174. 8002f8c: 6091 str r1, [r2, #8]
  7175. if (huart->FifoMode == UART_FIFOMODE_DISABLE)
  7176. 8002f8e: b310 cbz r0, 8002fd6 <HAL_UARTEx_SetRxFifoThreshold+0x72>
  7177. rx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_RXFTCFG) >> USART_CR3_RXFTCFG_Pos);
  7178. 8002f90: 6891 ldr r1, [r2, #8]
  7179. tx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos);
  7180. 8002f92: 6890 ldr r0, [r2, #8]
  7181. (uint16_t)denominator[tx_fifo_threshold];
  7182. 8002f94: 4d12 ldr r5, [pc, #72] ; (8002fe0 <HAL_UARTEx_SetRxFifoThreshold+0x7c>)
  7183. huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) /
  7184. 8002f96: f3c1 6c42 ubfx ip, r1, #25, #3
  7185. tx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos);
  7186. 8002f9a: ea4f 7e50 mov.w lr, r0, lsr #29
  7187. huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) /
  7188. 8002f9e: 4911 ldr r1, [pc, #68] ; (8002fe4 <HAL_UARTEx_SetRxFifoThreshold+0x80>)
  7189. 8002fa0: f811 000e ldrb.w r0, [r1, lr]
  7190. huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) /
  7191. 8002fa4: f811 100c ldrb.w r1, [r1, ip]
  7192. (uint16_t)denominator[tx_fifo_threshold];
  7193. 8002fa8: f815 e00e ldrb.w lr, [r5, lr]
  7194. (uint16_t)denominator[rx_fifo_threshold];
  7195. 8002fac: f815 500c ldrb.w r5, [r5, ip]
  7196. huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) /
  7197. 8002fb0: 00c0 lsls r0, r0, #3
  7198. huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) /
  7199. 8002fb2: 00c9 lsls r1, r1, #3
  7200. huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) /
  7201. 8002fb4: fbb0 f0fe udiv r0, r0, lr
  7202. huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) /
  7203. 8002fb8: fbb1 f1f5 udiv r1, r1, r5
  7204. 8002fbc: f8a3 1068 strh.w r1, [r3, #104] ; 0x68
  7205. __HAL_UNLOCK(huart);
  7206. 8002fc0: 2100 movs r1, #0
  7207. 8002fc2: f8a3 006a strh.w r0, [r3, #106] ; 0x6a
  7208. huart->gState = HAL_UART_STATE_READY;
  7209. 8002fc6: 2520 movs r5, #32
  7210. WRITE_REG(huart->Instance->CR1, tmpcr1);
  7211. 8002fc8: 6014 str r4, [r2, #0]
  7212. __HAL_UNLOCK(huart);
  7213. 8002fca: f883 1084 strb.w r1, [r3, #132] ; 0x84
  7214. return HAL_OK;
  7215. 8002fce: 4608 mov r0, r1
  7216. huart->gState = HAL_UART_STATE_READY;
  7217. 8002fd0: f8c3 5088 str.w r5, [r3, #136] ; 0x88
  7218. }
  7219. 8002fd4: bd30 pop {r4, r5, pc}
  7220. huart->NbRxDataToProcess = 1U;
  7221. 8002fd6: 2101 movs r1, #1
  7222. huart->NbTxDataToProcess = 1U;
  7223. 8002fd8: 4608 mov r0, r1
  7224. 8002fda: e7ef b.n 8002fbc <HAL_UARTEx_SetRxFifoThreshold+0x58>
  7225. __HAL_LOCK(huart);
  7226. 8002fdc: 2002 movs r0, #2
  7227. }
  7228. 8002fde: 4770 bx lr
  7229. 8002fe0: 080030ac .word 0x080030ac
  7230. 8002fe4: 080030b4 .word 0x080030b4
  7231. 08002fe8 <__libc_init_array>:
  7232. 8002fe8: b570 push {r4, r5, r6, lr}
  7233. 8002fea: 4d0d ldr r5, [pc, #52] ; (8003020 <__libc_init_array+0x38>)
  7234. 8002fec: 4c0d ldr r4, [pc, #52] ; (8003024 <__libc_init_array+0x3c>)
  7235. 8002fee: 1b64 subs r4, r4, r5
  7236. 8002ff0: 10a4 asrs r4, r4, #2
  7237. 8002ff2: 2600 movs r6, #0
  7238. 8002ff4: 42a6 cmp r6, r4
  7239. 8002ff6: d109 bne.n 800300c <__libc_init_array+0x24>
  7240. 8002ff8: 4d0b ldr r5, [pc, #44] ; (8003028 <__libc_init_array+0x40>)
  7241. 8002ffa: 4c0c ldr r4, [pc, #48] ; (800302c <__libc_init_array+0x44>)
  7242. 8002ffc: f000 f820 bl 8003040 <_init>
  7243. 8003000: 1b64 subs r4, r4, r5
  7244. 8003002: 10a4 asrs r4, r4, #2
  7245. 8003004: 2600 movs r6, #0
  7246. 8003006: 42a6 cmp r6, r4
  7247. 8003008: d105 bne.n 8003016 <__libc_init_array+0x2e>
  7248. 800300a: bd70 pop {r4, r5, r6, pc}
  7249. 800300c: f855 3b04 ldr.w r3, [r5], #4
  7250. 8003010: 4798 blx r3
  7251. 8003012: 3601 adds r6, #1
  7252. 8003014: e7ee b.n 8002ff4 <__libc_init_array+0xc>
  7253. 8003016: f855 3b04 ldr.w r3, [r5], #4
  7254. 800301a: 4798 blx r3
  7255. 800301c: 3601 adds r6, #1
  7256. 800301e: e7f2 b.n 8003006 <__libc_init_array+0x1e>
  7257. 8003020: 080030c4 .word 0x080030c4
  7258. 8003024: 080030c4 .word 0x080030c4
  7259. 8003028: 080030c4 .word 0x080030c4
  7260. 800302c: 080030c8 .word 0x080030c8
  7261. 08003030 <memset>:
  7262. 8003030: 4402 add r2, r0
  7263. 8003032: 4603 mov r3, r0
  7264. 8003034: 4293 cmp r3, r2
  7265. 8003036: d100 bne.n 800303a <memset+0xa>
  7266. 8003038: 4770 bx lr
  7267. 800303a: f803 1b01 strb.w r1, [r3], #1
  7268. 800303e: e7f9 b.n 8003034 <memset+0x4>
  7269. 08003040 <_init>:
  7270. 8003040: b5f8 push {r3, r4, r5, r6, r7, lr}
  7271. 8003042: bf00 nop
  7272. 8003044: bcf8 pop {r3, r4, r5, r6, r7}
  7273. 8003046: bc08 pop {r3}
  7274. 8003048: 469e mov lr, r3
  7275. 800304a: 4770 bx lr
  7276. 0800304c <_fini>:
  7277. 800304c: b5f8 push {r3, r4, r5, r6, r7, lr}
  7278. 800304e: bf00 nop
  7279. 8003050: bcf8 pop {r3, r4, r5, r6, r7}
  7280. 8003052: bc08 pop {r3}
  7281. 8003054: 469e mov lr, r3
  7282. 8003056: 4770 bx lr