Nesslab_200M_System.list 768 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429
  1. Nesslab_200M_System.elf: file format elf32-littlearm
  2. Sections:
  3. Idx Name Size VMA LMA File off Algn
  4. 0 .isr_vector 000001d0 08000000 08000000 00010000 2**0
  5. CONTENTS, ALLOC, LOAD, READONLY, DATA
  6. 1 .text 00008784 080001d0 080001d0 000101d0 2**3
  7. CONTENTS, ALLOC, LOAD, READONLY, CODE
  8. 2 .rodata 00000670 08008958 08008958 00018958 2**3
  9. CONTENTS, ALLOC, LOAD, READONLY, DATA
  10. 3 .ARM.extab 00000000 08008fc8 08008fc8 000201dc 2**0
  11. CONTENTS
  12. 4 .ARM 00000000 08008fc8 08008fc8 000201dc 2**0
  13. CONTENTS
  14. 5 .preinit_array 00000000 08008fc8 08008fc8 000201dc 2**0
  15. CONTENTS, ALLOC, LOAD, DATA
  16. 6 .init_array 00000004 08008fc8 08008fc8 00018fc8 2**2
  17. CONTENTS, ALLOC, LOAD, DATA
  18. 7 .fini_array 00000004 08008fcc 08008fcc 00018fcc 2**2
  19. CONTENTS, ALLOC, LOAD, DATA
  20. 8 .data 000001dc 20000000 08008fd0 00020000 2**2
  21. CONTENTS, ALLOC, LOAD, DATA
  22. 9 .bss 000009b8 200001e0 080091ac 000201e0 2**3
  23. ALLOC
  24. 10 ._user_heap_stack 00000600 20000b98 080091ac 00020b98 2**0
  25. ALLOC
  26. 11 .ARM.attributes 00000029 00000000 00000000 000201dc 2**0
  27. CONTENTS, READONLY
  28. 12 .debug_info 000147e5 00000000 00000000 00020205 2**0
  29. CONTENTS, READONLY, DEBUGGING
  30. 13 .debug_abbrev 00003669 00000000 00000000 000349ea 2**0
  31. CONTENTS, READONLY, DEBUGGING
  32. 14 .debug_aranges 00001160 00000000 00000000 00038058 2**3
  33. CONTENTS, READONLY, DEBUGGING
  34. 15 .debug_ranges 00000fb8 00000000 00000000 000391b8 2**3
  35. CONTENTS, READONLY, DEBUGGING
  36. 16 .debug_macro 00010efd 00000000 00000000 0003a170 2**0
  37. CONTENTS, READONLY, DEBUGGING
  38. 17 .debug_line 0000f594 00000000 00000000 0004b06d 2**0
  39. CONTENTS, READONLY, DEBUGGING
  40. 18 .debug_str 000587b4 00000000 00000000 0005a601 2**0
  41. CONTENTS, READONLY, DEBUGGING
  42. 19 .comment 0000007b 00000000 00000000 000b2db5 2**0
  43. CONTENTS, READONLY
  44. 20 .debug_frame 00005490 00000000 00000000 000b2e30 2**2
  45. CONTENTS, READONLY, DEBUGGING
  46. Disassembly of section .text:
  47. 080001d0 <__do_global_dtors_aux>:
  48. 80001d0: b510 push {r4, lr}
  49. 80001d2: 4c05 ldr r4, [pc, #20] ; (80001e8 <__do_global_dtors_aux+0x18>)
  50. 80001d4: 7823 ldrb r3, [r4, #0]
  51. 80001d6: b933 cbnz r3, 80001e6 <__do_global_dtors_aux+0x16>
  52. 80001d8: 4b04 ldr r3, [pc, #16] ; (80001ec <__do_global_dtors_aux+0x1c>)
  53. 80001da: b113 cbz r3, 80001e2 <__do_global_dtors_aux+0x12>
  54. 80001dc: 4804 ldr r0, [pc, #16] ; (80001f0 <__do_global_dtors_aux+0x20>)
  55. 80001de: f3af 8000 nop.w
  56. 80001e2: 2301 movs r3, #1
  57. 80001e4: 7023 strb r3, [r4, #0]
  58. 80001e6: bd10 pop {r4, pc}
  59. 80001e8: 200001e0 .word 0x200001e0
  60. 80001ec: 00000000 .word 0x00000000
  61. 80001f0: 0800893c .word 0x0800893c
  62. 080001f4 <frame_dummy>:
  63. 80001f4: b508 push {r3, lr}
  64. 80001f6: 4b03 ldr r3, [pc, #12] ; (8000204 <frame_dummy+0x10>)
  65. 80001f8: b11b cbz r3, 8000202 <frame_dummy+0xe>
  66. 80001fa: 4903 ldr r1, [pc, #12] ; (8000208 <frame_dummy+0x14>)
  67. 80001fc: 4803 ldr r0, [pc, #12] ; (800020c <frame_dummy+0x18>)
  68. 80001fe: f3af 8000 nop.w
  69. 8000202: bd08 pop {r3, pc}
  70. 8000204: 00000000 .word 0x00000000
  71. 8000208: 200001e4 .word 0x200001e4
  72. 800020c: 0800893c .word 0x0800893c
  73. 08000210 <strlen>:
  74. 8000210: 4603 mov r3, r0
  75. 8000212: f813 2b01 ldrb.w r2, [r3], #1
  76. 8000216: 2a00 cmp r2, #0
  77. 8000218: d1fb bne.n 8000212 <strlen+0x2>
  78. 800021a: 1a18 subs r0, r3, r0
  79. 800021c: 3801 subs r0, #1
  80. 800021e: 4770 bx lr
  81. 08000220 <__aeabi_drsub>:
  82. 8000220: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000
  83. 8000224: e002 b.n 800022c <__adddf3>
  84. 8000226: bf00 nop
  85. 08000228 <__aeabi_dsub>:
  86. 8000228: f083 4300 eor.w r3, r3, #2147483648 ; 0x80000000
  87. 0800022c <__adddf3>:
  88. 800022c: b530 push {r4, r5, lr}
  89. 800022e: ea4f 0441 mov.w r4, r1, lsl #1
  90. 8000232: ea4f 0543 mov.w r5, r3, lsl #1
  91. 8000236: ea94 0f05 teq r4, r5
  92. 800023a: bf08 it eq
  93. 800023c: ea90 0f02 teqeq r0, r2
  94. 8000240: bf1f itttt ne
  95. 8000242: ea54 0c00 orrsne.w ip, r4, r0
  96. 8000246: ea55 0c02 orrsne.w ip, r5, r2
  97. 800024a: ea7f 5c64 mvnsne.w ip, r4, asr #21
  98. 800024e: ea7f 5c65 mvnsne.w ip, r5, asr #21
  99. 8000252: f000 80e2 beq.w 800041a <__adddf3+0x1ee>
  100. 8000256: ea4f 5454 mov.w r4, r4, lsr #21
  101. 800025a: ebd4 5555 rsbs r5, r4, r5, lsr #21
  102. 800025e: bfb8 it lt
  103. 8000260: 426d neglt r5, r5
  104. 8000262: dd0c ble.n 800027e <__adddf3+0x52>
  105. 8000264: 442c add r4, r5
  106. 8000266: ea80 0202 eor.w r2, r0, r2
  107. 800026a: ea81 0303 eor.w r3, r1, r3
  108. 800026e: ea82 0000 eor.w r0, r2, r0
  109. 8000272: ea83 0101 eor.w r1, r3, r1
  110. 8000276: ea80 0202 eor.w r2, r0, r2
  111. 800027a: ea81 0303 eor.w r3, r1, r3
  112. 800027e: 2d36 cmp r5, #54 ; 0x36
  113. 8000280: bf88 it hi
  114. 8000282: bd30 pophi {r4, r5, pc}
  115. 8000284: f011 4f00 tst.w r1, #2147483648 ; 0x80000000
  116. 8000288: ea4f 3101 mov.w r1, r1, lsl #12
  117. 800028c: f44f 1c80 mov.w ip, #1048576 ; 0x100000
  118. 8000290: ea4c 3111 orr.w r1, ip, r1, lsr #12
  119. 8000294: d002 beq.n 800029c <__adddf3+0x70>
  120. 8000296: 4240 negs r0, r0
  121. 8000298: eb61 0141 sbc.w r1, r1, r1, lsl #1
  122. 800029c: f013 4f00 tst.w r3, #2147483648 ; 0x80000000
  123. 80002a0: ea4f 3303 mov.w r3, r3, lsl #12
  124. 80002a4: ea4c 3313 orr.w r3, ip, r3, lsr #12
  125. 80002a8: d002 beq.n 80002b0 <__adddf3+0x84>
  126. 80002aa: 4252 negs r2, r2
  127. 80002ac: eb63 0343 sbc.w r3, r3, r3, lsl #1
  128. 80002b0: ea94 0f05 teq r4, r5
  129. 80002b4: f000 80a7 beq.w 8000406 <__adddf3+0x1da>
  130. 80002b8: f1a4 0401 sub.w r4, r4, #1
  131. 80002bc: f1d5 0e20 rsbs lr, r5, #32
  132. 80002c0: db0d blt.n 80002de <__adddf3+0xb2>
  133. 80002c2: fa02 fc0e lsl.w ip, r2, lr
  134. 80002c6: fa22 f205 lsr.w r2, r2, r5
  135. 80002ca: 1880 adds r0, r0, r2
  136. 80002cc: f141 0100 adc.w r1, r1, #0
  137. 80002d0: fa03 f20e lsl.w r2, r3, lr
  138. 80002d4: 1880 adds r0, r0, r2
  139. 80002d6: fa43 f305 asr.w r3, r3, r5
  140. 80002da: 4159 adcs r1, r3
  141. 80002dc: e00e b.n 80002fc <__adddf3+0xd0>
  142. 80002de: f1a5 0520 sub.w r5, r5, #32
  143. 80002e2: f10e 0e20 add.w lr, lr, #32
  144. 80002e6: 2a01 cmp r2, #1
  145. 80002e8: fa03 fc0e lsl.w ip, r3, lr
  146. 80002ec: bf28 it cs
  147. 80002ee: f04c 0c02 orrcs.w ip, ip, #2
  148. 80002f2: fa43 f305 asr.w r3, r3, r5
  149. 80002f6: 18c0 adds r0, r0, r3
  150. 80002f8: eb51 71e3 adcs.w r1, r1, r3, asr #31
  151. 80002fc: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
  152. 8000300: d507 bpl.n 8000312 <__adddf3+0xe6>
  153. 8000302: f04f 0e00 mov.w lr, #0
  154. 8000306: f1dc 0c00 rsbs ip, ip, #0
  155. 800030a: eb7e 0000 sbcs.w r0, lr, r0
  156. 800030e: eb6e 0101 sbc.w r1, lr, r1
  157. 8000312: f5b1 1f80 cmp.w r1, #1048576 ; 0x100000
  158. 8000316: d31b bcc.n 8000350 <__adddf3+0x124>
  159. 8000318: f5b1 1f00 cmp.w r1, #2097152 ; 0x200000
  160. 800031c: d30c bcc.n 8000338 <__adddf3+0x10c>
  161. 800031e: 0849 lsrs r1, r1, #1
  162. 8000320: ea5f 0030 movs.w r0, r0, rrx
  163. 8000324: ea4f 0c3c mov.w ip, ip, rrx
  164. 8000328: f104 0401 add.w r4, r4, #1
  165. 800032c: ea4f 5244 mov.w r2, r4, lsl #21
  166. 8000330: f512 0f80 cmn.w r2, #4194304 ; 0x400000
  167. 8000334: f080 809a bcs.w 800046c <__adddf3+0x240>
  168. 8000338: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000
  169. 800033c: bf08 it eq
  170. 800033e: ea5f 0c50 movseq.w ip, r0, lsr #1
  171. 8000342: f150 0000 adcs.w r0, r0, #0
  172. 8000346: eb41 5104 adc.w r1, r1, r4, lsl #20
  173. 800034a: ea41 0105 orr.w r1, r1, r5
  174. 800034e: bd30 pop {r4, r5, pc}
  175. 8000350: ea5f 0c4c movs.w ip, ip, lsl #1
  176. 8000354: 4140 adcs r0, r0
  177. 8000356: eb41 0101 adc.w r1, r1, r1
  178. 800035a: f411 1f80 tst.w r1, #1048576 ; 0x100000
  179. 800035e: f1a4 0401 sub.w r4, r4, #1
  180. 8000362: d1e9 bne.n 8000338 <__adddf3+0x10c>
  181. 8000364: f091 0f00 teq r1, #0
  182. 8000368: bf04 itt eq
  183. 800036a: 4601 moveq r1, r0
  184. 800036c: 2000 moveq r0, #0
  185. 800036e: fab1 f381 clz r3, r1
  186. 8000372: bf08 it eq
  187. 8000374: 3320 addeq r3, #32
  188. 8000376: f1a3 030b sub.w r3, r3, #11
  189. 800037a: f1b3 0220 subs.w r2, r3, #32
  190. 800037e: da0c bge.n 800039a <__adddf3+0x16e>
  191. 8000380: 320c adds r2, #12
  192. 8000382: dd08 ble.n 8000396 <__adddf3+0x16a>
  193. 8000384: f102 0c14 add.w ip, r2, #20
  194. 8000388: f1c2 020c rsb r2, r2, #12
  195. 800038c: fa01 f00c lsl.w r0, r1, ip
  196. 8000390: fa21 f102 lsr.w r1, r1, r2
  197. 8000394: e00c b.n 80003b0 <__adddf3+0x184>
  198. 8000396: f102 0214 add.w r2, r2, #20
  199. 800039a: bfd8 it le
  200. 800039c: f1c2 0c20 rsble ip, r2, #32
  201. 80003a0: fa01 f102 lsl.w r1, r1, r2
  202. 80003a4: fa20 fc0c lsr.w ip, r0, ip
  203. 80003a8: bfdc itt le
  204. 80003aa: ea41 010c orrle.w r1, r1, ip
  205. 80003ae: 4090 lslle r0, r2
  206. 80003b0: 1ae4 subs r4, r4, r3
  207. 80003b2: bfa2 ittt ge
  208. 80003b4: eb01 5104 addge.w r1, r1, r4, lsl #20
  209. 80003b8: 4329 orrge r1, r5
  210. 80003ba: bd30 popge {r4, r5, pc}
  211. 80003bc: ea6f 0404 mvn.w r4, r4
  212. 80003c0: 3c1f subs r4, #31
  213. 80003c2: da1c bge.n 80003fe <__adddf3+0x1d2>
  214. 80003c4: 340c adds r4, #12
  215. 80003c6: dc0e bgt.n 80003e6 <__adddf3+0x1ba>
  216. 80003c8: f104 0414 add.w r4, r4, #20
  217. 80003cc: f1c4 0220 rsb r2, r4, #32
  218. 80003d0: fa20 f004 lsr.w r0, r0, r4
  219. 80003d4: fa01 f302 lsl.w r3, r1, r2
  220. 80003d8: ea40 0003 orr.w r0, r0, r3
  221. 80003dc: fa21 f304 lsr.w r3, r1, r4
  222. 80003e0: ea45 0103 orr.w r1, r5, r3
  223. 80003e4: bd30 pop {r4, r5, pc}
  224. 80003e6: f1c4 040c rsb r4, r4, #12
  225. 80003ea: f1c4 0220 rsb r2, r4, #32
  226. 80003ee: fa20 f002 lsr.w r0, r0, r2
  227. 80003f2: fa01 f304 lsl.w r3, r1, r4
  228. 80003f6: ea40 0003 orr.w r0, r0, r3
  229. 80003fa: 4629 mov r1, r5
  230. 80003fc: bd30 pop {r4, r5, pc}
  231. 80003fe: fa21 f004 lsr.w r0, r1, r4
  232. 8000402: 4629 mov r1, r5
  233. 8000404: bd30 pop {r4, r5, pc}
  234. 8000406: f094 0f00 teq r4, #0
  235. 800040a: f483 1380 eor.w r3, r3, #1048576 ; 0x100000
  236. 800040e: bf06 itte eq
  237. 8000410: f481 1180 eoreq.w r1, r1, #1048576 ; 0x100000
  238. 8000414: 3401 addeq r4, #1
  239. 8000416: 3d01 subne r5, #1
  240. 8000418: e74e b.n 80002b8 <__adddf3+0x8c>
  241. 800041a: ea7f 5c64 mvns.w ip, r4, asr #21
  242. 800041e: bf18 it ne
  243. 8000420: ea7f 5c65 mvnsne.w ip, r5, asr #21
  244. 8000424: d029 beq.n 800047a <__adddf3+0x24e>
  245. 8000426: ea94 0f05 teq r4, r5
  246. 800042a: bf08 it eq
  247. 800042c: ea90 0f02 teqeq r0, r2
  248. 8000430: d005 beq.n 800043e <__adddf3+0x212>
  249. 8000432: ea54 0c00 orrs.w ip, r4, r0
  250. 8000436: bf04 itt eq
  251. 8000438: 4619 moveq r1, r3
  252. 800043a: 4610 moveq r0, r2
  253. 800043c: bd30 pop {r4, r5, pc}
  254. 800043e: ea91 0f03 teq r1, r3
  255. 8000442: bf1e ittt ne
  256. 8000444: 2100 movne r1, #0
  257. 8000446: 2000 movne r0, #0
  258. 8000448: bd30 popne {r4, r5, pc}
  259. 800044a: ea5f 5c54 movs.w ip, r4, lsr #21
  260. 800044e: d105 bne.n 800045c <__adddf3+0x230>
  261. 8000450: 0040 lsls r0, r0, #1
  262. 8000452: 4149 adcs r1, r1
  263. 8000454: bf28 it cs
  264. 8000456: f041 4100 orrcs.w r1, r1, #2147483648 ; 0x80000000
  265. 800045a: bd30 pop {r4, r5, pc}
  266. 800045c: f514 0480 adds.w r4, r4, #4194304 ; 0x400000
  267. 8000460: bf3c itt cc
  268. 8000462: f501 1180 addcc.w r1, r1, #1048576 ; 0x100000
  269. 8000466: bd30 popcc {r4, r5, pc}
  270. 8000468: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
  271. 800046c: f045 41fe orr.w r1, r5, #2130706432 ; 0x7f000000
  272. 8000470: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000
  273. 8000474: f04f 0000 mov.w r0, #0
  274. 8000478: bd30 pop {r4, r5, pc}
  275. 800047a: ea7f 5c64 mvns.w ip, r4, asr #21
  276. 800047e: bf1a itte ne
  277. 8000480: 4619 movne r1, r3
  278. 8000482: 4610 movne r0, r2
  279. 8000484: ea7f 5c65 mvnseq.w ip, r5, asr #21
  280. 8000488: bf1c itt ne
  281. 800048a: 460b movne r3, r1
  282. 800048c: 4602 movne r2, r0
  283. 800048e: ea50 3401 orrs.w r4, r0, r1, lsl #12
  284. 8000492: bf06 itte eq
  285. 8000494: ea52 3503 orrseq.w r5, r2, r3, lsl #12
  286. 8000498: ea91 0f03 teqeq r1, r3
  287. 800049c: f441 2100 orrne.w r1, r1, #524288 ; 0x80000
  288. 80004a0: bd30 pop {r4, r5, pc}
  289. 80004a2: bf00 nop
  290. 080004a4 <__aeabi_ui2d>:
  291. 80004a4: f090 0f00 teq r0, #0
  292. 80004a8: bf04 itt eq
  293. 80004aa: 2100 moveq r1, #0
  294. 80004ac: 4770 bxeq lr
  295. 80004ae: b530 push {r4, r5, lr}
  296. 80004b0: f44f 6480 mov.w r4, #1024 ; 0x400
  297. 80004b4: f104 0432 add.w r4, r4, #50 ; 0x32
  298. 80004b8: f04f 0500 mov.w r5, #0
  299. 80004bc: f04f 0100 mov.w r1, #0
  300. 80004c0: e750 b.n 8000364 <__adddf3+0x138>
  301. 80004c2: bf00 nop
  302. 080004c4 <__aeabi_i2d>:
  303. 80004c4: f090 0f00 teq r0, #0
  304. 80004c8: bf04 itt eq
  305. 80004ca: 2100 moveq r1, #0
  306. 80004cc: 4770 bxeq lr
  307. 80004ce: b530 push {r4, r5, lr}
  308. 80004d0: f44f 6480 mov.w r4, #1024 ; 0x400
  309. 80004d4: f104 0432 add.w r4, r4, #50 ; 0x32
  310. 80004d8: f010 4500 ands.w r5, r0, #2147483648 ; 0x80000000
  311. 80004dc: bf48 it mi
  312. 80004de: 4240 negmi r0, r0
  313. 80004e0: f04f 0100 mov.w r1, #0
  314. 80004e4: e73e b.n 8000364 <__adddf3+0x138>
  315. 80004e6: bf00 nop
  316. 080004e8 <__aeabi_f2d>:
  317. 80004e8: 0042 lsls r2, r0, #1
  318. 80004ea: ea4f 01e2 mov.w r1, r2, asr #3
  319. 80004ee: ea4f 0131 mov.w r1, r1, rrx
  320. 80004f2: ea4f 7002 mov.w r0, r2, lsl #28
  321. 80004f6: bf1f itttt ne
  322. 80004f8: f012 437f andsne.w r3, r2, #4278190080 ; 0xff000000
  323. 80004fc: f093 4f7f teqne r3, #4278190080 ; 0xff000000
  324. 8000500: f081 5160 eorne.w r1, r1, #939524096 ; 0x38000000
  325. 8000504: 4770 bxne lr
  326. 8000506: f032 427f bics.w r2, r2, #4278190080 ; 0xff000000
  327. 800050a: bf08 it eq
  328. 800050c: 4770 bxeq lr
  329. 800050e: f093 4f7f teq r3, #4278190080 ; 0xff000000
  330. 8000512: bf04 itt eq
  331. 8000514: f441 2100 orreq.w r1, r1, #524288 ; 0x80000
  332. 8000518: 4770 bxeq lr
  333. 800051a: b530 push {r4, r5, lr}
  334. 800051c: f44f 7460 mov.w r4, #896 ; 0x380
  335. 8000520: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
  336. 8000524: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000
  337. 8000528: e71c b.n 8000364 <__adddf3+0x138>
  338. 800052a: bf00 nop
  339. 0800052c <__aeabi_ul2d>:
  340. 800052c: ea50 0201 orrs.w r2, r0, r1
  341. 8000530: bf08 it eq
  342. 8000532: 4770 bxeq lr
  343. 8000534: b530 push {r4, r5, lr}
  344. 8000536: f04f 0500 mov.w r5, #0
  345. 800053a: e00a b.n 8000552 <__aeabi_l2d+0x16>
  346. 0800053c <__aeabi_l2d>:
  347. 800053c: ea50 0201 orrs.w r2, r0, r1
  348. 8000540: bf08 it eq
  349. 8000542: 4770 bxeq lr
  350. 8000544: b530 push {r4, r5, lr}
  351. 8000546: f011 4500 ands.w r5, r1, #2147483648 ; 0x80000000
  352. 800054a: d502 bpl.n 8000552 <__aeabi_l2d+0x16>
  353. 800054c: 4240 negs r0, r0
  354. 800054e: eb61 0141 sbc.w r1, r1, r1, lsl #1
  355. 8000552: f44f 6480 mov.w r4, #1024 ; 0x400
  356. 8000556: f104 0432 add.w r4, r4, #50 ; 0x32
  357. 800055a: ea5f 5c91 movs.w ip, r1, lsr #22
  358. 800055e: f43f aed8 beq.w 8000312 <__adddf3+0xe6>
  359. 8000562: f04f 0203 mov.w r2, #3
  360. 8000566: ea5f 0cdc movs.w ip, ip, lsr #3
  361. 800056a: bf18 it ne
  362. 800056c: 3203 addne r2, #3
  363. 800056e: ea5f 0cdc movs.w ip, ip, lsr #3
  364. 8000572: bf18 it ne
  365. 8000574: 3203 addne r2, #3
  366. 8000576: eb02 02dc add.w r2, r2, ip, lsr #3
  367. 800057a: f1c2 0320 rsb r3, r2, #32
  368. 800057e: fa00 fc03 lsl.w ip, r0, r3
  369. 8000582: fa20 f002 lsr.w r0, r0, r2
  370. 8000586: fa01 fe03 lsl.w lr, r1, r3
  371. 800058a: ea40 000e orr.w r0, r0, lr
  372. 800058e: fa21 f102 lsr.w r1, r1, r2
  373. 8000592: 4414 add r4, r2
  374. 8000594: e6bd b.n 8000312 <__adddf3+0xe6>
  375. 8000596: bf00 nop
  376. 08000598 <__aeabi_dmul>:
  377. 8000598: b570 push {r4, r5, r6, lr}
  378. 800059a: f04f 0cff mov.w ip, #255 ; 0xff
  379. 800059e: f44c 6ce0 orr.w ip, ip, #1792 ; 0x700
  380. 80005a2: ea1c 5411 ands.w r4, ip, r1, lsr #20
  381. 80005a6: bf1d ittte ne
  382. 80005a8: ea1c 5513 andsne.w r5, ip, r3, lsr #20
  383. 80005ac: ea94 0f0c teqne r4, ip
  384. 80005b0: ea95 0f0c teqne r5, ip
  385. 80005b4: f000 f8de bleq 8000774 <__aeabi_dmul+0x1dc>
  386. 80005b8: 442c add r4, r5
  387. 80005ba: ea81 0603 eor.w r6, r1, r3
  388. 80005be: ea21 514c bic.w r1, r1, ip, lsl #21
  389. 80005c2: ea23 534c bic.w r3, r3, ip, lsl #21
  390. 80005c6: ea50 3501 orrs.w r5, r0, r1, lsl #12
  391. 80005ca: bf18 it ne
  392. 80005cc: ea52 3503 orrsne.w r5, r2, r3, lsl #12
  393. 80005d0: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
  394. 80005d4: f443 1380 orr.w r3, r3, #1048576 ; 0x100000
  395. 80005d8: d038 beq.n 800064c <__aeabi_dmul+0xb4>
  396. 80005da: fba0 ce02 umull ip, lr, r0, r2
  397. 80005de: f04f 0500 mov.w r5, #0
  398. 80005e2: fbe1 e502 umlal lr, r5, r1, r2
  399. 80005e6: f006 4200 and.w r2, r6, #2147483648 ; 0x80000000
  400. 80005ea: fbe0 e503 umlal lr, r5, r0, r3
  401. 80005ee: f04f 0600 mov.w r6, #0
  402. 80005f2: fbe1 5603 umlal r5, r6, r1, r3
  403. 80005f6: f09c 0f00 teq ip, #0
  404. 80005fa: bf18 it ne
  405. 80005fc: f04e 0e01 orrne.w lr, lr, #1
  406. 8000600: f1a4 04ff sub.w r4, r4, #255 ; 0xff
  407. 8000604: f5b6 7f00 cmp.w r6, #512 ; 0x200
  408. 8000608: f564 7440 sbc.w r4, r4, #768 ; 0x300
  409. 800060c: d204 bcs.n 8000618 <__aeabi_dmul+0x80>
  410. 800060e: ea5f 0e4e movs.w lr, lr, lsl #1
  411. 8000612: 416d adcs r5, r5
  412. 8000614: eb46 0606 adc.w r6, r6, r6
  413. 8000618: ea42 21c6 orr.w r1, r2, r6, lsl #11
  414. 800061c: ea41 5155 orr.w r1, r1, r5, lsr #21
  415. 8000620: ea4f 20c5 mov.w r0, r5, lsl #11
  416. 8000624: ea40 505e orr.w r0, r0, lr, lsr #21
  417. 8000628: ea4f 2ece mov.w lr, lr, lsl #11
  418. 800062c: f1b4 0cfd subs.w ip, r4, #253 ; 0xfd
  419. 8000630: bf88 it hi
  420. 8000632: f5bc 6fe0 cmphi.w ip, #1792 ; 0x700
  421. 8000636: d81e bhi.n 8000676 <__aeabi_dmul+0xde>
  422. 8000638: f1be 4f00 cmp.w lr, #2147483648 ; 0x80000000
  423. 800063c: bf08 it eq
  424. 800063e: ea5f 0e50 movseq.w lr, r0, lsr #1
  425. 8000642: f150 0000 adcs.w r0, r0, #0
  426. 8000646: eb41 5104 adc.w r1, r1, r4, lsl #20
  427. 800064a: bd70 pop {r4, r5, r6, pc}
  428. 800064c: f006 4600 and.w r6, r6, #2147483648 ; 0x80000000
  429. 8000650: ea46 0101 orr.w r1, r6, r1
  430. 8000654: ea40 0002 orr.w r0, r0, r2
  431. 8000658: ea81 0103 eor.w r1, r1, r3
  432. 800065c: ebb4 045c subs.w r4, r4, ip, lsr #1
  433. 8000660: bfc2 ittt gt
  434. 8000662: ebd4 050c rsbsgt r5, r4, ip
  435. 8000666: ea41 5104 orrgt.w r1, r1, r4, lsl #20
  436. 800066a: bd70 popgt {r4, r5, r6, pc}
  437. 800066c: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
  438. 8000670: f04f 0e00 mov.w lr, #0
  439. 8000674: 3c01 subs r4, #1
  440. 8000676: f300 80ab bgt.w 80007d0 <__aeabi_dmul+0x238>
  441. 800067a: f114 0f36 cmn.w r4, #54 ; 0x36
  442. 800067e: bfde ittt le
  443. 8000680: 2000 movle r0, #0
  444. 8000682: f001 4100 andle.w r1, r1, #2147483648 ; 0x80000000
  445. 8000686: bd70 pople {r4, r5, r6, pc}
  446. 8000688: f1c4 0400 rsb r4, r4, #0
  447. 800068c: 3c20 subs r4, #32
  448. 800068e: da35 bge.n 80006fc <__aeabi_dmul+0x164>
  449. 8000690: 340c adds r4, #12
  450. 8000692: dc1b bgt.n 80006cc <__aeabi_dmul+0x134>
  451. 8000694: f104 0414 add.w r4, r4, #20
  452. 8000698: f1c4 0520 rsb r5, r4, #32
  453. 800069c: fa00 f305 lsl.w r3, r0, r5
  454. 80006a0: fa20 f004 lsr.w r0, r0, r4
  455. 80006a4: fa01 f205 lsl.w r2, r1, r5
  456. 80006a8: ea40 0002 orr.w r0, r0, r2
  457. 80006ac: f001 4200 and.w r2, r1, #2147483648 ; 0x80000000
  458. 80006b0: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000
  459. 80006b4: eb10 70d3 adds.w r0, r0, r3, lsr #31
  460. 80006b8: fa21 f604 lsr.w r6, r1, r4
  461. 80006bc: eb42 0106 adc.w r1, r2, r6
  462. 80006c0: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
  463. 80006c4: bf08 it eq
  464. 80006c6: ea20 70d3 biceq.w r0, r0, r3, lsr #31
  465. 80006ca: bd70 pop {r4, r5, r6, pc}
  466. 80006cc: f1c4 040c rsb r4, r4, #12
  467. 80006d0: f1c4 0520 rsb r5, r4, #32
  468. 80006d4: fa00 f304 lsl.w r3, r0, r4
  469. 80006d8: fa20 f005 lsr.w r0, r0, r5
  470. 80006dc: fa01 f204 lsl.w r2, r1, r4
  471. 80006e0: ea40 0002 orr.w r0, r0, r2
  472. 80006e4: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
  473. 80006e8: eb10 70d3 adds.w r0, r0, r3, lsr #31
  474. 80006ec: f141 0100 adc.w r1, r1, #0
  475. 80006f0: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
  476. 80006f4: bf08 it eq
  477. 80006f6: ea20 70d3 biceq.w r0, r0, r3, lsr #31
  478. 80006fa: bd70 pop {r4, r5, r6, pc}
  479. 80006fc: f1c4 0520 rsb r5, r4, #32
  480. 8000700: fa00 f205 lsl.w r2, r0, r5
  481. 8000704: ea4e 0e02 orr.w lr, lr, r2
  482. 8000708: fa20 f304 lsr.w r3, r0, r4
  483. 800070c: fa01 f205 lsl.w r2, r1, r5
  484. 8000710: ea43 0302 orr.w r3, r3, r2
  485. 8000714: fa21 f004 lsr.w r0, r1, r4
  486. 8000718: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
  487. 800071c: fa21 f204 lsr.w r2, r1, r4
  488. 8000720: ea20 0002 bic.w r0, r0, r2
  489. 8000724: eb00 70d3 add.w r0, r0, r3, lsr #31
  490. 8000728: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
  491. 800072c: bf08 it eq
  492. 800072e: ea20 70d3 biceq.w r0, r0, r3, lsr #31
  493. 8000732: bd70 pop {r4, r5, r6, pc}
  494. 8000734: f094 0f00 teq r4, #0
  495. 8000738: d10f bne.n 800075a <__aeabi_dmul+0x1c2>
  496. 800073a: f001 4600 and.w r6, r1, #2147483648 ; 0x80000000
  497. 800073e: 0040 lsls r0, r0, #1
  498. 8000740: eb41 0101 adc.w r1, r1, r1
  499. 8000744: f411 1f80 tst.w r1, #1048576 ; 0x100000
  500. 8000748: bf08 it eq
  501. 800074a: 3c01 subeq r4, #1
  502. 800074c: d0f7 beq.n 800073e <__aeabi_dmul+0x1a6>
  503. 800074e: ea41 0106 orr.w r1, r1, r6
  504. 8000752: f095 0f00 teq r5, #0
  505. 8000756: bf18 it ne
  506. 8000758: 4770 bxne lr
  507. 800075a: f003 4600 and.w r6, r3, #2147483648 ; 0x80000000
  508. 800075e: 0052 lsls r2, r2, #1
  509. 8000760: eb43 0303 adc.w r3, r3, r3
  510. 8000764: f413 1f80 tst.w r3, #1048576 ; 0x100000
  511. 8000768: bf08 it eq
  512. 800076a: 3d01 subeq r5, #1
  513. 800076c: d0f7 beq.n 800075e <__aeabi_dmul+0x1c6>
  514. 800076e: ea43 0306 orr.w r3, r3, r6
  515. 8000772: 4770 bx lr
  516. 8000774: ea94 0f0c teq r4, ip
  517. 8000778: ea0c 5513 and.w r5, ip, r3, lsr #20
  518. 800077c: bf18 it ne
  519. 800077e: ea95 0f0c teqne r5, ip
  520. 8000782: d00c beq.n 800079e <__aeabi_dmul+0x206>
  521. 8000784: ea50 0641 orrs.w r6, r0, r1, lsl #1
  522. 8000788: bf18 it ne
  523. 800078a: ea52 0643 orrsne.w r6, r2, r3, lsl #1
  524. 800078e: d1d1 bne.n 8000734 <__aeabi_dmul+0x19c>
  525. 8000790: ea81 0103 eor.w r1, r1, r3
  526. 8000794: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
  527. 8000798: f04f 0000 mov.w r0, #0
  528. 800079c: bd70 pop {r4, r5, r6, pc}
  529. 800079e: ea50 0641 orrs.w r6, r0, r1, lsl #1
  530. 80007a2: bf06 itte eq
  531. 80007a4: 4610 moveq r0, r2
  532. 80007a6: 4619 moveq r1, r3
  533. 80007a8: ea52 0643 orrsne.w r6, r2, r3, lsl #1
  534. 80007ac: d019 beq.n 80007e2 <__aeabi_dmul+0x24a>
  535. 80007ae: ea94 0f0c teq r4, ip
  536. 80007b2: d102 bne.n 80007ba <__aeabi_dmul+0x222>
  537. 80007b4: ea50 3601 orrs.w r6, r0, r1, lsl #12
  538. 80007b8: d113 bne.n 80007e2 <__aeabi_dmul+0x24a>
  539. 80007ba: ea95 0f0c teq r5, ip
  540. 80007be: d105 bne.n 80007cc <__aeabi_dmul+0x234>
  541. 80007c0: ea52 3603 orrs.w r6, r2, r3, lsl #12
  542. 80007c4: bf1c itt ne
  543. 80007c6: 4610 movne r0, r2
  544. 80007c8: 4619 movne r1, r3
  545. 80007ca: d10a bne.n 80007e2 <__aeabi_dmul+0x24a>
  546. 80007cc: ea81 0103 eor.w r1, r1, r3
  547. 80007d0: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
  548. 80007d4: f041 41fe orr.w r1, r1, #2130706432 ; 0x7f000000
  549. 80007d8: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000
  550. 80007dc: f04f 0000 mov.w r0, #0
  551. 80007e0: bd70 pop {r4, r5, r6, pc}
  552. 80007e2: f041 41fe orr.w r1, r1, #2130706432 ; 0x7f000000
  553. 80007e6: f441 0178 orr.w r1, r1, #16252928 ; 0xf80000
  554. 80007ea: bd70 pop {r4, r5, r6, pc}
  555. 080007ec <__aeabi_ddiv>:
  556. 80007ec: b570 push {r4, r5, r6, lr}
  557. 80007ee: f04f 0cff mov.w ip, #255 ; 0xff
  558. 80007f2: f44c 6ce0 orr.w ip, ip, #1792 ; 0x700
  559. 80007f6: ea1c 5411 ands.w r4, ip, r1, lsr #20
  560. 80007fa: bf1d ittte ne
  561. 80007fc: ea1c 5513 andsne.w r5, ip, r3, lsr #20
  562. 8000800: ea94 0f0c teqne r4, ip
  563. 8000804: ea95 0f0c teqne r5, ip
  564. 8000808: f000 f8a7 bleq 800095a <__aeabi_ddiv+0x16e>
  565. 800080c: eba4 0405 sub.w r4, r4, r5
  566. 8000810: ea81 0e03 eor.w lr, r1, r3
  567. 8000814: ea52 3503 orrs.w r5, r2, r3, lsl #12
  568. 8000818: ea4f 3101 mov.w r1, r1, lsl #12
  569. 800081c: f000 8088 beq.w 8000930 <__aeabi_ddiv+0x144>
  570. 8000820: ea4f 3303 mov.w r3, r3, lsl #12
  571. 8000824: f04f 5580 mov.w r5, #268435456 ; 0x10000000
  572. 8000828: ea45 1313 orr.w r3, r5, r3, lsr #4
  573. 800082c: ea43 6312 orr.w r3, r3, r2, lsr #24
  574. 8000830: ea4f 2202 mov.w r2, r2, lsl #8
  575. 8000834: ea45 1511 orr.w r5, r5, r1, lsr #4
  576. 8000838: ea45 6510 orr.w r5, r5, r0, lsr #24
  577. 800083c: ea4f 2600 mov.w r6, r0, lsl #8
  578. 8000840: f00e 4100 and.w r1, lr, #2147483648 ; 0x80000000
  579. 8000844: 429d cmp r5, r3
  580. 8000846: bf08 it eq
  581. 8000848: 4296 cmpeq r6, r2
  582. 800084a: f144 04fd adc.w r4, r4, #253 ; 0xfd
  583. 800084e: f504 7440 add.w r4, r4, #768 ; 0x300
  584. 8000852: d202 bcs.n 800085a <__aeabi_ddiv+0x6e>
  585. 8000854: 085b lsrs r3, r3, #1
  586. 8000856: ea4f 0232 mov.w r2, r2, rrx
  587. 800085a: 1ab6 subs r6, r6, r2
  588. 800085c: eb65 0503 sbc.w r5, r5, r3
  589. 8000860: 085b lsrs r3, r3, #1
  590. 8000862: ea4f 0232 mov.w r2, r2, rrx
  591. 8000866: f44f 1080 mov.w r0, #1048576 ; 0x100000
  592. 800086a: f44f 2c00 mov.w ip, #524288 ; 0x80000
  593. 800086e: ebb6 0e02 subs.w lr, r6, r2
  594. 8000872: eb75 0e03 sbcs.w lr, r5, r3
  595. 8000876: bf22 ittt cs
  596. 8000878: 1ab6 subcs r6, r6, r2
  597. 800087a: 4675 movcs r5, lr
  598. 800087c: ea40 000c orrcs.w r0, r0, ip
  599. 8000880: 085b lsrs r3, r3, #1
  600. 8000882: ea4f 0232 mov.w r2, r2, rrx
  601. 8000886: ebb6 0e02 subs.w lr, r6, r2
  602. 800088a: eb75 0e03 sbcs.w lr, r5, r3
  603. 800088e: bf22 ittt cs
  604. 8000890: 1ab6 subcs r6, r6, r2
  605. 8000892: 4675 movcs r5, lr
  606. 8000894: ea40 005c orrcs.w r0, r0, ip, lsr #1
  607. 8000898: 085b lsrs r3, r3, #1
  608. 800089a: ea4f 0232 mov.w r2, r2, rrx
  609. 800089e: ebb6 0e02 subs.w lr, r6, r2
  610. 80008a2: eb75 0e03 sbcs.w lr, r5, r3
  611. 80008a6: bf22 ittt cs
  612. 80008a8: 1ab6 subcs r6, r6, r2
  613. 80008aa: 4675 movcs r5, lr
  614. 80008ac: ea40 009c orrcs.w r0, r0, ip, lsr #2
  615. 80008b0: 085b lsrs r3, r3, #1
  616. 80008b2: ea4f 0232 mov.w r2, r2, rrx
  617. 80008b6: ebb6 0e02 subs.w lr, r6, r2
  618. 80008ba: eb75 0e03 sbcs.w lr, r5, r3
  619. 80008be: bf22 ittt cs
  620. 80008c0: 1ab6 subcs r6, r6, r2
  621. 80008c2: 4675 movcs r5, lr
  622. 80008c4: ea40 00dc orrcs.w r0, r0, ip, lsr #3
  623. 80008c8: ea55 0e06 orrs.w lr, r5, r6
  624. 80008cc: d018 beq.n 8000900 <__aeabi_ddiv+0x114>
  625. 80008ce: ea4f 1505 mov.w r5, r5, lsl #4
  626. 80008d2: ea45 7516 orr.w r5, r5, r6, lsr #28
  627. 80008d6: ea4f 1606 mov.w r6, r6, lsl #4
  628. 80008da: ea4f 03c3 mov.w r3, r3, lsl #3
  629. 80008de: ea43 7352 orr.w r3, r3, r2, lsr #29
  630. 80008e2: ea4f 02c2 mov.w r2, r2, lsl #3
  631. 80008e6: ea5f 1c1c movs.w ip, ip, lsr #4
  632. 80008ea: d1c0 bne.n 800086e <__aeabi_ddiv+0x82>
  633. 80008ec: f411 1f80 tst.w r1, #1048576 ; 0x100000
  634. 80008f0: d10b bne.n 800090a <__aeabi_ddiv+0x11e>
  635. 80008f2: ea41 0100 orr.w r1, r1, r0
  636. 80008f6: f04f 0000 mov.w r0, #0
  637. 80008fa: f04f 4c00 mov.w ip, #2147483648 ; 0x80000000
  638. 80008fe: e7b6 b.n 800086e <__aeabi_ddiv+0x82>
  639. 8000900: f411 1f80 tst.w r1, #1048576 ; 0x100000
  640. 8000904: bf04 itt eq
  641. 8000906: 4301 orreq r1, r0
  642. 8000908: 2000 moveq r0, #0
  643. 800090a: f1b4 0cfd subs.w ip, r4, #253 ; 0xfd
  644. 800090e: bf88 it hi
  645. 8000910: f5bc 6fe0 cmphi.w ip, #1792 ; 0x700
  646. 8000914: f63f aeaf bhi.w 8000676 <__aeabi_dmul+0xde>
  647. 8000918: ebb5 0c03 subs.w ip, r5, r3
  648. 800091c: bf04 itt eq
  649. 800091e: ebb6 0c02 subseq.w ip, r6, r2
  650. 8000922: ea5f 0c50 movseq.w ip, r0, lsr #1
  651. 8000926: f150 0000 adcs.w r0, r0, #0
  652. 800092a: eb41 5104 adc.w r1, r1, r4, lsl #20
  653. 800092e: bd70 pop {r4, r5, r6, pc}
  654. 8000930: f00e 4e00 and.w lr, lr, #2147483648 ; 0x80000000
  655. 8000934: ea4e 3111 orr.w r1, lr, r1, lsr #12
  656. 8000938: eb14 045c adds.w r4, r4, ip, lsr #1
  657. 800093c: bfc2 ittt gt
  658. 800093e: ebd4 050c rsbsgt r5, r4, ip
  659. 8000942: ea41 5104 orrgt.w r1, r1, r4, lsl #20
  660. 8000946: bd70 popgt {r4, r5, r6, pc}
  661. 8000948: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
  662. 800094c: f04f 0e00 mov.w lr, #0
  663. 8000950: 3c01 subs r4, #1
  664. 8000952: e690 b.n 8000676 <__aeabi_dmul+0xde>
  665. 8000954: ea45 0e06 orr.w lr, r5, r6
  666. 8000958: e68d b.n 8000676 <__aeabi_dmul+0xde>
  667. 800095a: ea0c 5513 and.w r5, ip, r3, lsr #20
  668. 800095e: ea94 0f0c teq r4, ip
  669. 8000962: bf08 it eq
  670. 8000964: ea95 0f0c teqeq r5, ip
  671. 8000968: f43f af3b beq.w 80007e2 <__aeabi_dmul+0x24a>
  672. 800096c: ea94 0f0c teq r4, ip
  673. 8000970: d10a bne.n 8000988 <__aeabi_ddiv+0x19c>
  674. 8000972: ea50 3401 orrs.w r4, r0, r1, lsl #12
  675. 8000976: f47f af34 bne.w 80007e2 <__aeabi_dmul+0x24a>
  676. 800097a: ea95 0f0c teq r5, ip
  677. 800097e: f47f af25 bne.w 80007cc <__aeabi_dmul+0x234>
  678. 8000982: 4610 mov r0, r2
  679. 8000984: 4619 mov r1, r3
  680. 8000986: e72c b.n 80007e2 <__aeabi_dmul+0x24a>
  681. 8000988: ea95 0f0c teq r5, ip
  682. 800098c: d106 bne.n 800099c <__aeabi_ddiv+0x1b0>
  683. 800098e: ea52 3503 orrs.w r5, r2, r3, lsl #12
  684. 8000992: f43f aefd beq.w 8000790 <__aeabi_dmul+0x1f8>
  685. 8000996: 4610 mov r0, r2
  686. 8000998: 4619 mov r1, r3
  687. 800099a: e722 b.n 80007e2 <__aeabi_dmul+0x24a>
  688. 800099c: ea50 0641 orrs.w r6, r0, r1, lsl #1
  689. 80009a0: bf18 it ne
  690. 80009a2: ea52 0643 orrsne.w r6, r2, r3, lsl #1
  691. 80009a6: f47f aec5 bne.w 8000734 <__aeabi_dmul+0x19c>
  692. 80009aa: ea50 0441 orrs.w r4, r0, r1, lsl #1
  693. 80009ae: f47f af0d bne.w 80007cc <__aeabi_dmul+0x234>
  694. 80009b2: ea52 0543 orrs.w r5, r2, r3, lsl #1
  695. 80009b6: f47f aeeb bne.w 8000790 <__aeabi_dmul+0x1f8>
  696. 80009ba: e712 b.n 80007e2 <__aeabi_dmul+0x24a>
  697. 080009bc <__gedf2>:
  698. 80009bc: f04f 3cff mov.w ip, #4294967295
  699. 80009c0: e006 b.n 80009d0 <__cmpdf2+0x4>
  700. 80009c2: bf00 nop
  701. 080009c4 <__ledf2>:
  702. 80009c4: f04f 0c01 mov.w ip, #1
  703. 80009c8: e002 b.n 80009d0 <__cmpdf2+0x4>
  704. 80009ca: bf00 nop
  705. 080009cc <__cmpdf2>:
  706. 80009cc: f04f 0c01 mov.w ip, #1
  707. 80009d0: f84d cd04 str.w ip, [sp, #-4]!
  708. 80009d4: ea4f 0c41 mov.w ip, r1, lsl #1
  709. 80009d8: ea7f 5c6c mvns.w ip, ip, asr #21
  710. 80009dc: ea4f 0c43 mov.w ip, r3, lsl #1
  711. 80009e0: bf18 it ne
  712. 80009e2: ea7f 5c6c mvnsne.w ip, ip, asr #21
  713. 80009e6: d01b beq.n 8000a20 <__cmpdf2+0x54>
  714. 80009e8: b001 add sp, #4
  715. 80009ea: ea50 0c41 orrs.w ip, r0, r1, lsl #1
  716. 80009ee: bf0c ite eq
  717. 80009f0: ea52 0c43 orrseq.w ip, r2, r3, lsl #1
  718. 80009f4: ea91 0f03 teqne r1, r3
  719. 80009f8: bf02 ittt eq
  720. 80009fa: ea90 0f02 teqeq r0, r2
  721. 80009fe: 2000 moveq r0, #0
  722. 8000a00: 4770 bxeq lr
  723. 8000a02: f110 0f00 cmn.w r0, #0
  724. 8000a06: ea91 0f03 teq r1, r3
  725. 8000a0a: bf58 it pl
  726. 8000a0c: 4299 cmppl r1, r3
  727. 8000a0e: bf08 it eq
  728. 8000a10: 4290 cmpeq r0, r2
  729. 8000a12: bf2c ite cs
  730. 8000a14: 17d8 asrcs r0, r3, #31
  731. 8000a16: ea6f 70e3 mvncc.w r0, r3, asr #31
  732. 8000a1a: f040 0001 orr.w r0, r0, #1
  733. 8000a1e: 4770 bx lr
  734. 8000a20: ea4f 0c41 mov.w ip, r1, lsl #1
  735. 8000a24: ea7f 5c6c mvns.w ip, ip, asr #21
  736. 8000a28: d102 bne.n 8000a30 <__cmpdf2+0x64>
  737. 8000a2a: ea50 3c01 orrs.w ip, r0, r1, lsl #12
  738. 8000a2e: d107 bne.n 8000a40 <__cmpdf2+0x74>
  739. 8000a30: ea4f 0c43 mov.w ip, r3, lsl #1
  740. 8000a34: ea7f 5c6c mvns.w ip, ip, asr #21
  741. 8000a38: d1d6 bne.n 80009e8 <__cmpdf2+0x1c>
  742. 8000a3a: ea52 3c03 orrs.w ip, r2, r3, lsl #12
  743. 8000a3e: d0d3 beq.n 80009e8 <__cmpdf2+0x1c>
  744. 8000a40: f85d 0b04 ldr.w r0, [sp], #4
  745. 8000a44: 4770 bx lr
  746. 8000a46: bf00 nop
  747. 08000a48 <__aeabi_cdrcmple>:
  748. 8000a48: 4684 mov ip, r0
  749. 8000a4a: 4610 mov r0, r2
  750. 8000a4c: 4662 mov r2, ip
  751. 8000a4e: 468c mov ip, r1
  752. 8000a50: 4619 mov r1, r3
  753. 8000a52: 4663 mov r3, ip
  754. 8000a54: e000 b.n 8000a58 <__aeabi_cdcmpeq>
  755. 8000a56: bf00 nop
  756. 08000a58 <__aeabi_cdcmpeq>:
  757. 8000a58: b501 push {r0, lr}
  758. 8000a5a: f7ff ffb7 bl 80009cc <__cmpdf2>
  759. 8000a5e: 2800 cmp r0, #0
  760. 8000a60: bf48 it mi
  761. 8000a62: f110 0f00 cmnmi.w r0, #0
  762. 8000a66: bd01 pop {r0, pc}
  763. 08000a68 <__aeabi_dcmpeq>:
  764. 8000a68: f84d ed08 str.w lr, [sp, #-8]!
  765. 8000a6c: f7ff fff4 bl 8000a58 <__aeabi_cdcmpeq>
  766. 8000a70: bf0c ite eq
  767. 8000a72: 2001 moveq r0, #1
  768. 8000a74: 2000 movne r0, #0
  769. 8000a76: f85d fb08 ldr.w pc, [sp], #8
  770. 8000a7a: bf00 nop
  771. 08000a7c <__aeabi_dcmplt>:
  772. 8000a7c: f84d ed08 str.w lr, [sp, #-8]!
  773. 8000a80: f7ff ffea bl 8000a58 <__aeabi_cdcmpeq>
  774. 8000a84: bf34 ite cc
  775. 8000a86: 2001 movcc r0, #1
  776. 8000a88: 2000 movcs r0, #0
  777. 8000a8a: f85d fb08 ldr.w pc, [sp], #8
  778. 8000a8e: bf00 nop
  779. 08000a90 <__aeabi_dcmple>:
  780. 8000a90: f84d ed08 str.w lr, [sp, #-8]!
  781. 8000a94: f7ff ffe0 bl 8000a58 <__aeabi_cdcmpeq>
  782. 8000a98: bf94 ite ls
  783. 8000a9a: 2001 movls r0, #1
  784. 8000a9c: 2000 movhi r0, #0
  785. 8000a9e: f85d fb08 ldr.w pc, [sp], #8
  786. 8000aa2: bf00 nop
  787. 08000aa4 <__aeabi_dcmpge>:
  788. 8000aa4: f84d ed08 str.w lr, [sp, #-8]!
  789. 8000aa8: f7ff ffce bl 8000a48 <__aeabi_cdrcmple>
  790. 8000aac: bf94 ite ls
  791. 8000aae: 2001 movls r0, #1
  792. 8000ab0: 2000 movhi r0, #0
  793. 8000ab2: f85d fb08 ldr.w pc, [sp], #8
  794. 8000ab6: bf00 nop
  795. 08000ab8 <__aeabi_dcmpgt>:
  796. 8000ab8: f84d ed08 str.w lr, [sp, #-8]!
  797. 8000abc: f7ff ffc4 bl 8000a48 <__aeabi_cdrcmple>
  798. 8000ac0: bf34 ite cc
  799. 8000ac2: 2001 movcc r0, #1
  800. 8000ac4: 2000 movcs r0, #0
  801. 8000ac6: f85d fb08 ldr.w pc, [sp], #8
  802. 8000aca: bf00 nop
  803. 08000acc <__aeabi_dcmpun>:
  804. 8000acc: ea4f 0c41 mov.w ip, r1, lsl #1
  805. 8000ad0: ea7f 5c6c mvns.w ip, ip, asr #21
  806. 8000ad4: d102 bne.n 8000adc <__aeabi_dcmpun+0x10>
  807. 8000ad6: ea50 3c01 orrs.w ip, r0, r1, lsl #12
  808. 8000ada: d10a bne.n 8000af2 <__aeabi_dcmpun+0x26>
  809. 8000adc: ea4f 0c43 mov.w ip, r3, lsl #1
  810. 8000ae0: ea7f 5c6c mvns.w ip, ip, asr #21
  811. 8000ae4: d102 bne.n 8000aec <__aeabi_dcmpun+0x20>
  812. 8000ae6: ea52 3c03 orrs.w ip, r2, r3, lsl #12
  813. 8000aea: d102 bne.n 8000af2 <__aeabi_dcmpun+0x26>
  814. 8000aec: f04f 0000 mov.w r0, #0
  815. 8000af0: 4770 bx lr
  816. 8000af2: f04f 0001 mov.w r0, #1
  817. 8000af6: 4770 bx lr
  818. 08000af8 <__aeabi_d2iz>:
  819. 8000af8: ea4f 0241 mov.w r2, r1, lsl #1
  820. 8000afc: f512 1200 adds.w r2, r2, #2097152 ; 0x200000
  821. 8000b00: d215 bcs.n 8000b2e <__aeabi_d2iz+0x36>
  822. 8000b02: d511 bpl.n 8000b28 <__aeabi_d2iz+0x30>
  823. 8000b04: f46f 7378 mvn.w r3, #992 ; 0x3e0
  824. 8000b08: ebb3 5262 subs.w r2, r3, r2, asr #21
  825. 8000b0c: d912 bls.n 8000b34 <__aeabi_d2iz+0x3c>
  826. 8000b0e: ea4f 23c1 mov.w r3, r1, lsl #11
  827. 8000b12: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000
  828. 8000b16: ea43 5350 orr.w r3, r3, r0, lsr #21
  829. 8000b1a: f011 4f00 tst.w r1, #2147483648 ; 0x80000000
  830. 8000b1e: fa23 f002 lsr.w r0, r3, r2
  831. 8000b22: bf18 it ne
  832. 8000b24: 4240 negne r0, r0
  833. 8000b26: 4770 bx lr
  834. 8000b28: f04f 0000 mov.w r0, #0
  835. 8000b2c: 4770 bx lr
  836. 8000b2e: ea50 3001 orrs.w r0, r0, r1, lsl #12
  837. 8000b32: d105 bne.n 8000b40 <__aeabi_d2iz+0x48>
  838. 8000b34: f011 4000 ands.w r0, r1, #2147483648 ; 0x80000000
  839. 8000b38: bf08 it eq
  840. 8000b3a: f06f 4000 mvneq.w r0, #2147483648 ; 0x80000000
  841. 8000b3e: 4770 bx lr
  842. 8000b40: f04f 0000 mov.w r0, #0
  843. 8000b44: 4770 bx lr
  844. 8000b46: bf00 nop
  845. 08000b48 <__aeabi_d2uiz>:
  846. 8000b48: 004a lsls r2, r1, #1
  847. 8000b4a: d211 bcs.n 8000b70 <__aeabi_d2uiz+0x28>
  848. 8000b4c: f512 1200 adds.w r2, r2, #2097152 ; 0x200000
  849. 8000b50: d211 bcs.n 8000b76 <__aeabi_d2uiz+0x2e>
  850. 8000b52: d50d bpl.n 8000b70 <__aeabi_d2uiz+0x28>
  851. 8000b54: f46f 7378 mvn.w r3, #992 ; 0x3e0
  852. 8000b58: ebb3 5262 subs.w r2, r3, r2, asr #21
  853. 8000b5c: d40e bmi.n 8000b7c <__aeabi_d2uiz+0x34>
  854. 8000b5e: ea4f 23c1 mov.w r3, r1, lsl #11
  855. 8000b62: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000
  856. 8000b66: ea43 5350 orr.w r3, r3, r0, lsr #21
  857. 8000b6a: fa23 f002 lsr.w r0, r3, r2
  858. 8000b6e: 4770 bx lr
  859. 8000b70: f04f 0000 mov.w r0, #0
  860. 8000b74: 4770 bx lr
  861. 8000b76: ea50 3001 orrs.w r0, r0, r1, lsl #12
  862. 8000b7a: d102 bne.n 8000b82 <__aeabi_d2uiz+0x3a>
  863. 8000b7c: f04f 30ff mov.w r0, #4294967295
  864. 8000b80: 4770 bx lr
  865. 8000b82: f04f 0000 mov.w r0, #0
  866. 8000b86: 4770 bx lr
  867. 08000b88 <__aeabi_d2f>:
  868. 8000b88: ea4f 0241 mov.w r2, r1, lsl #1
  869. 8000b8c: f1b2 43e0 subs.w r3, r2, #1879048192 ; 0x70000000
  870. 8000b90: bf24 itt cs
  871. 8000b92: f5b3 1c00 subscs.w ip, r3, #2097152 ; 0x200000
  872. 8000b96: f1dc 5cfe rsbscs ip, ip, #532676608 ; 0x1fc00000
  873. 8000b9a: d90d bls.n 8000bb8 <__aeabi_d2f+0x30>
  874. 8000b9c: f001 4c00 and.w ip, r1, #2147483648 ; 0x80000000
  875. 8000ba0: ea4f 02c0 mov.w r2, r0, lsl #3
  876. 8000ba4: ea4c 7050 orr.w r0, ip, r0, lsr #29
  877. 8000ba8: f1b2 4f00 cmp.w r2, #2147483648 ; 0x80000000
  878. 8000bac: eb40 0083 adc.w r0, r0, r3, lsl #2
  879. 8000bb0: bf08 it eq
  880. 8000bb2: f020 0001 biceq.w r0, r0, #1
  881. 8000bb6: 4770 bx lr
  882. 8000bb8: f011 4f80 tst.w r1, #1073741824 ; 0x40000000
  883. 8000bbc: d121 bne.n 8000c02 <__aeabi_d2f+0x7a>
  884. 8000bbe: f113 7238 adds.w r2, r3, #48234496 ; 0x2e00000
  885. 8000bc2: bfbc itt lt
  886. 8000bc4: f001 4000 andlt.w r0, r1, #2147483648 ; 0x80000000
  887. 8000bc8: 4770 bxlt lr
  888. 8000bca: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
  889. 8000bce: ea4f 5252 mov.w r2, r2, lsr #21
  890. 8000bd2: f1c2 0218 rsb r2, r2, #24
  891. 8000bd6: f1c2 0c20 rsb ip, r2, #32
  892. 8000bda: fa10 f30c lsls.w r3, r0, ip
  893. 8000bde: fa20 f002 lsr.w r0, r0, r2
  894. 8000be2: bf18 it ne
  895. 8000be4: f040 0001 orrne.w r0, r0, #1
  896. 8000be8: ea4f 23c1 mov.w r3, r1, lsl #11
  897. 8000bec: ea4f 23d3 mov.w r3, r3, lsr #11
  898. 8000bf0: fa03 fc0c lsl.w ip, r3, ip
  899. 8000bf4: ea40 000c orr.w r0, r0, ip
  900. 8000bf8: fa23 f302 lsr.w r3, r3, r2
  901. 8000bfc: ea4f 0343 mov.w r3, r3, lsl #1
  902. 8000c00: e7cc b.n 8000b9c <__aeabi_d2f+0x14>
  903. 8000c02: ea7f 5362 mvns.w r3, r2, asr #21
  904. 8000c06: d107 bne.n 8000c18 <__aeabi_d2f+0x90>
  905. 8000c08: ea50 3301 orrs.w r3, r0, r1, lsl #12
  906. 8000c0c: bf1e ittt ne
  907. 8000c0e: f04f 40fe movne.w r0, #2130706432 ; 0x7f000000
  908. 8000c12: f440 0040 orrne.w r0, r0, #12582912 ; 0xc00000
  909. 8000c16: 4770 bxne lr
  910. 8000c18: f001 4000 and.w r0, r1, #2147483648 ; 0x80000000
  911. 8000c1c: f040 40fe orr.w r0, r0, #2130706432 ; 0x7f000000
  912. 8000c20: f440 0000 orr.w r0, r0, #8388608 ; 0x800000
  913. 8000c24: 4770 bx lr
  914. 8000c26: bf00 nop
  915. 08000c28 <NessLab_Init>:
  916. volatile uint8_t NessLab_TxData[200] = {0,};
  917. uint8_t Flash_DataArray[200] = {0,};
  918. uint8_t DB_Define[100];
  919. void NessLab_Init(){
  920. 8000c28: b580 push {r7, lr}
  921. 8000c2a: af00 add r7, sp, #0
  922. FLASH_Read_Func(FLASH_USER_USE_START_ADDR + 2,&DB_Define[0],104);
  923. 8000c2c: 2268 movs r2, #104 ; 0x68
  924. 8000c2e: 4906 ldr r1, [pc, #24] ; (8000c48 <NessLab_Init+0x20>)
  925. 8000c30: 4806 ldr r0, [pc, #24] ; (8000c4c <NessLab_Init+0x24>)
  926. 8000c32: f000 fef5 bl 8001a20 <FLASH_Read_Func>
  927. HAL_GPIO_WritePin(PAU_RESET_GPIO_Port,PAU_RESET_Pin, GPIO_PIN_SET);
  928. 8000c36: 2201 movs r2, #1
  929. 8000c38: f44f 4180 mov.w r1, #16384 ; 0x4000
  930. 8000c3c: 4804 ldr r0, [pc, #16] ; (8000c50 <NessLab_Init+0x28>)
  931. 8000c3e: f002 fc86 bl 800354e <HAL_GPIO_WritePin>
  932. }
  933. 8000c42: bf00 nop
  934. 8000c44: bd80 pop {r7, pc}
  935. 8000c46: bf00 nop
  936. 8000c48: 20000648 .word 0x20000648
  937. 8000c4c: 0800ff3a .word 0x0800ff3a
  938. 8000c50: 40010c00 .word 0x40010c00
  939. 8000c54: 00000000 .word 0x00000000
  940. 08000c58 <Round_Function>:
  941. double Round_Function(double value){
  942. 8000c58: b590 push {r4, r7, lr}
  943. 8000c5a: b085 sub sp, #20
  944. 8000c5c: af00 add r7, sp, #0
  945. 8000c5e: e9c7 0100 strd r0, r1, [r7]
  946. double val = value * 100;
  947. 8000c62: f04f 0200 mov.w r2, #0
  948. 8000c66: 4b2a ldr r3, [pc, #168] ; (8000d10 <Round_Function+0xb8>)
  949. 8000c68: e9d7 0100 ldrd r0, r1, [r7]
  950. 8000c6c: f7ff fc94 bl 8000598 <__aeabi_dmul>
  951. 8000c70: 4603 mov r3, r0
  952. 8000c72: 460c mov r4, r1
  953. 8000c74: e9c7 3402 strd r3, r4, [r7, #8]
  954. val = (int)(val + 0.5);
  955. 8000c78: f04f 0200 mov.w r2, #0
  956. 8000c7c: 4b25 ldr r3, [pc, #148] ; (8000d14 <Round_Function+0xbc>)
  957. 8000c7e: e9d7 0102 ldrd r0, r1, [r7, #8]
  958. 8000c82: f7ff fad3 bl 800022c <__adddf3>
  959. 8000c86: 4603 mov r3, r0
  960. 8000c88: 460c mov r4, r1
  961. 8000c8a: 4618 mov r0, r3
  962. 8000c8c: 4621 mov r1, r4
  963. 8000c8e: f7ff ff33 bl 8000af8 <__aeabi_d2iz>
  964. 8000c92: 4603 mov r3, r0
  965. 8000c94: 4618 mov r0, r3
  966. 8000c96: f7ff fc15 bl 80004c4 <__aeabi_i2d>
  967. 8000c9a: 4603 mov r3, r0
  968. 8000c9c: 460c mov r4, r1
  969. 8000c9e: e9c7 3402 strd r3, r4, [r7, #8]
  970. val *= 0.1;
  971. 8000ca2: a319 add r3, pc, #100 ; (adr r3, 8000d08 <Round_Function+0xb0>)
  972. 8000ca4: e9d3 2300 ldrd r2, r3, [r3]
  973. 8000ca8: e9d7 0102 ldrd r0, r1, [r7, #8]
  974. 8000cac: f7ff fc74 bl 8000598 <__aeabi_dmul>
  975. 8000cb0: 4603 mov r3, r0
  976. 8000cb2: 460c mov r4, r1
  977. 8000cb4: e9c7 3402 strd r3, r4, [r7, #8]
  978. val = (int)(val + 0.5);
  979. 8000cb8: f04f 0200 mov.w r2, #0
  980. 8000cbc: 4b15 ldr r3, [pc, #84] ; (8000d14 <Round_Function+0xbc>)
  981. 8000cbe: e9d7 0102 ldrd r0, r1, [r7, #8]
  982. 8000cc2: f7ff fab3 bl 800022c <__adddf3>
  983. 8000cc6: 4603 mov r3, r0
  984. 8000cc8: 460c mov r4, r1
  985. 8000cca: 4618 mov r0, r3
  986. 8000ccc: 4621 mov r1, r4
  987. 8000cce: f7ff ff13 bl 8000af8 <__aeabi_d2iz>
  988. 8000cd2: 4603 mov r3, r0
  989. 8000cd4: 4618 mov r0, r3
  990. 8000cd6: f7ff fbf5 bl 80004c4 <__aeabi_i2d>
  991. 8000cda: 4603 mov r3, r0
  992. 8000cdc: 460c mov r4, r1
  993. 8000cde: e9c7 3402 strd r3, r4, [r7, #8]
  994. val *= 0.1;
  995. 8000ce2: a309 add r3, pc, #36 ; (adr r3, 8000d08 <Round_Function+0xb0>)
  996. 8000ce4: e9d3 2300 ldrd r2, r3, [r3]
  997. 8000ce8: e9d7 0102 ldrd r0, r1, [r7, #8]
  998. 8000cec: f7ff fc54 bl 8000598 <__aeabi_dmul>
  999. 8000cf0: 4603 mov r3, r0
  1000. 8000cf2: 460c mov r4, r1
  1001. 8000cf4: e9c7 3402 strd r3, r4, [r7, #8]
  1002. return val;
  1003. 8000cf8: e9d7 3402 ldrd r3, r4, [r7, #8]
  1004. }
  1005. 8000cfc: 4618 mov r0, r3
  1006. 8000cfe: 4621 mov r1, r4
  1007. 8000d00: 3714 adds r7, #20
  1008. 8000d02: 46bd mov sp, r7
  1009. 8000d04: bd90 pop {r4, r7, pc}
  1010. 8000d06: bf00 nop
  1011. 8000d08: 9999999a .word 0x9999999a
  1012. 8000d0c: 3fb99999 .word 0x3fb99999
  1013. 8000d10: 40590000 .word 0x40590000
  1014. 8000d14: 3fe00000 .word 0x3fe00000
  1015. 08000d18 <Absolute_value_Convert>:
  1016. uint16_t Absolute_value_Convert(int16_t val){
  1017. 8000d18: b480 push {r7}
  1018. 8000d1a: b083 sub sp, #12
  1019. 8000d1c: af00 add r7, sp, #0
  1020. 8000d1e: 4603 mov r3, r0
  1021. 8000d20: 80fb strh r3, [r7, #6]
  1022. if(val < 0)
  1023. 8000d22: f9b7 3006 ldrsh.w r3, [r7, #6]
  1024. 8000d26: 2b00 cmp r3, #0
  1025. 8000d28: da03 bge.n 8000d32 <Absolute_value_Convert+0x1a>
  1026. val *= -1;
  1027. 8000d2a: 88fb ldrh r3, [r7, #6]
  1028. 8000d2c: 425b negs r3, r3
  1029. 8000d2e: b29b uxth r3, r3
  1030. 8000d30: 80fb strh r3, [r7, #6]
  1031. return val;
  1032. 8000d32: 88fb ldrh r3, [r7, #6]
  1033. }
  1034. 8000d34: 4618 mov r0, r3
  1035. 8000d36: 370c adds r7, #12
  1036. 8000d38: 46bd mov sp, r7
  1037. 8000d3a: bc80 pop {r7}
  1038. 8000d3c: 4770 bx lr
  1039. ...
  1040. 08000d40 <NessLab_Adc_Convert_db>:
  1041. uint8_t NessLab_Adc_Convert_db() // ?占쏙옙湲고븿?占쏙옙
  1042. {
  1043. 8000d40: b590 push {r4, r7, lr}
  1044. 8000d42: b08b sub sp, #44 ; 0x2c
  1045. 8000d44: af00 add r7, sp, #0
  1046. double CurrAdc = (float)((Currstatus.DownLink_Forward_Det_H << 8 | Currstatus.DownLink_Forward_Det_L)*0.001);
  1047. 8000d46: 4b4a ldr r3, [pc, #296] ; (8000e70 <NessLab_Adc_Convert_db+0x130>)
  1048. 8000d48: 79db ldrb r3, [r3, #7]
  1049. 8000d4a: 021b lsls r3, r3, #8
  1050. 8000d4c: 4a48 ldr r2, [pc, #288] ; (8000e70 <NessLab_Adc_Convert_db+0x130>)
  1051. 8000d4e: 7a12 ldrb r2, [r2, #8]
  1052. 8000d50: 4313 orrs r3, r2
  1053. 8000d52: 4618 mov r0, r3
  1054. 8000d54: f7ff fbb6 bl 80004c4 <__aeabi_i2d>
  1055. 8000d58: a343 add r3, pc, #268 ; (adr r3, 8000e68 <NessLab_Adc_Convert_db+0x128>)
  1056. 8000d5a: e9d3 2300 ldrd r2, r3, [r3]
  1057. 8000d5e: f7ff fc1b bl 8000598 <__aeabi_dmul>
  1058. 8000d62: 4603 mov r3, r0
  1059. 8000d64: 460c mov r4, r1
  1060. 8000d66: 4618 mov r0, r3
  1061. 8000d68: 4621 mov r1, r4
  1062. 8000d6a: f7ff ff0d bl 8000b88 <__aeabi_d2f>
  1063. 8000d6e: 4603 mov r3, r0
  1064. 8000d70: 4618 mov r0, r3
  1065. 8000d72: f7ff fbb9 bl 80004e8 <__aeabi_f2d>
  1066. 8000d76: 4603 mov r3, r0
  1067. 8000d78: 460c mov r4, r1
  1068. 8000d7a: e9c7 3406 strd r3, r4, [r7, #24]
  1069. double TableVal = 0;
  1070. 8000d7e: f04f 0300 mov.w r3, #0
  1071. 8000d82: f04f 0400 mov.w r4, #0
  1072. 8000d86: e9c7 3404 strd r3, r4, [r7, #16]
  1073. float ret = 0;
  1074. 8000d8a: f04f 0300 mov.w r3, #0
  1075. 8000d8e: 60fb str r3, [r7, #12]
  1076. int16_t calc_val = 0,Prev_calc_val = 3300 ;
  1077. 8000d90: 2300 movs r3, #0
  1078. 8000d92: 817b strh r3, [r7, #10]
  1079. 8000d94: f640 43e4 movw r3, #3300 ; 0xce4
  1080. 8000d98: 84fb strh r3, [r7, #38] ; 0x26
  1081. uint8_t Curr_DB = 0 ;
  1082. 8000d9a: 2300 movs r3, #0
  1083. 8000d9c: f887 3025 strb.w r3, [r7, #37] ; 0x25
  1084. uint16_t CurrAdc_Temp = 0,TableVal_Temp = 0;
  1085. 8000da0: 2300 movs r3, #0
  1086. 8000da2: 813b strh r3, [r7, #8]
  1087. 8000da4: 2300 movs r3, #0
  1088. 8000da6: 80fb strh r3, [r7, #6]
  1089. ret = Round_Function(CurrAdc);
  1090. 8000da8: e9d7 0106 ldrd r0, r1, [r7, #24]
  1091. 8000dac: f7ff ff54 bl 8000c58 <Round_Function>
  1092. 8000db0: 4603 mov r3, r0
  1093. 8000db2: 460c mov r4, r1
  1094. 8000db4: 4618 mov r0, r3
  1095. 8000db6: 4621 mov r1, r4
  1096. 8000db8: f7ff fee6 bl 8000b88 <__aeabi_d2f>
  1097. 8000dbc: 4603 mov r3, r0
  1098. 8000dbe: 60fb str r3, [r7, #12]
  1099. // CurrAdc *= 1000;
  1100. CurrAdc_Temp = CurrAdc * 1000;
  1101. 8000dc0: f04f 0200 mov.w r2, #0
  1102. 8000dc4: 4b2b ldr r3, [pc, #172] ; (8000e74 <NessLab_Adc_Convert_db+0x134>)
  1103. 8000dc6: e9d7 0106 ldrd r0, r1, [r7, #24]
  1104. 8000dca: f7ff fbe5 bl 8000598 <__aeabi_dmul>
  1105. 8000dce: 4603 mov r3, r0
  1106. 8000dd0: 460c mov r4, r1
  1107. 8000dd2: 4618 mov r0, r3
  1108. 8000dd4: 4621 mov r1, r4
  1109. 8000dd6: f7ff feb7 bl 8000b48 <__aeabi_d2uiz>
  1110. 8000dda: 4603 mov r3, r0
  1111. 8000ddc: 813b strh r3, [r7, #8]
  1112. for(int i = 0; i <= 50; i++){
  1113. 8000dde: 2300 movs r3, #0
  1114. 8000de0: 623b str r3, [r7, #32]
  1115. 8000de2: e030 b.n 8000e46 <NessLab_Adc_Convert_db+0x106>
  1116. TableVal_Temp = ((DB_Define[i * 2] << 8 | DB_Define[(i * 2)+ 1]));
  1117. 8000de4: 6a3b ldr r3, [r7, #32]
  1118. 8000de6: 005b lsls r3, r3, #1
  1119. 8000de8: 4a23 ldr r2, [pc, #140] ; (8000e78 <NessLab_Adc_Convert_db+0x138>)
  1120. 8000dea: 5cd3 ldrb r3, [r2, r3]
  1121. 8000dec: 021b lsls r3, r3, #8
  1122. 8000dee: b21a sxth r2, r3
  1123. 8000df0: 6a3b ldr r3, [r7, #32]
  1124. 8000df2: 005b lsls r3, r3, #1
  1125. 8000df4: 3301 adds r3, #1
  1126. 8000df6: 4920 ldr r1, [pc, #128] ; (8000e78 <NessLab_Adc_Convert_db+0x138>)
  1127. 8000df8: 5ccb ldrb r3, [r1, r3]
  1128. 8000dfa: b21b sxth r3, r3
  1129. 8000dfc: 4313 orrs r3, r2
  1130. 8000dfe: b21b sxth r3, r3
  1131. 8000e00: 80fb strh r3, [r7, #6]
  1132. if(TableVal_Temp == 0)
  1133. 8000e02: 88fb ldrh r3, [r7, #6]
  1134. 8000e04: 2b00 cmp r3, #0
  1135. 8000e06: d01a beq.n 8000e3e <NessLab_Adc_Convert_db+0xfe>
  1136. continue;
  1137. calc_val = CurrAdc_Temp - TableVal_Temp;
  1138. 8000e08: 893a ldrh r2, [r7, #8]
  1139. 8000e0a: 88fb ldrh r3, [r7, #6]
  1140. 8000e0c: 1ad3 subs r3, r2, r3
  1141. 8000e0e: b29b uxth r3, r3
  1142. 8000e10: 817b strh r3, [r7, #10]
  1143. calc_val = Absolute_value_Convert(calc_val);
  1144. 8000e12: f9b7 300a ldrsh.w r3, [r7, #10]
  1145. 8000e16: 4618 mov r0, r3
  1146. 8000e18: f7ff ff7e bl 8000d18 <Absolute_value_Convert>
  1147. 8000e1c: 4603 mov r3, r0
  1148. 8000e1e: 817b strh r3, [r7, #10]
  1149. // printf("%d - %d calc_val : %d \r\n",CurrAdc_Temp,TableVal_Temp,calc_val);
  1150. if(Prev_calc_val > calc_val && TableVal_Temp != 0){
  1151. 8000e20: f9b7 2026 ldrsh.w r2, [r7, #38] ; 0x26
  1152. 8000e24: f9b7 300a ldrsh.w r3, [r7, #10]
  1153. 8000e28: 429a cmp r2, r3
  1154. 8000e2a: dd09 ble.n 8000e40 <NessLab_Adc_Convert_db+0x100>
  1155. 8000e2c: 88fb ldrh r3, [r7, #6]
  1156. 8000e2e: 2b00 cmp r3, #0
  1157. 8000e30: d006 beq.n 8000e40 <NessLab_Adc_Convert_db+0x100>
  1158. Prev_calc_val = calc_val;
  1159. 8000e32: 897b ldrh r3, [r7, #10]
  1160. 8000e34: 84fb strh r3, [r7, #38] ; 0x26
  1161. Curr_DB = i ;
  1162. 8000e36: 6a3b ldr r3, [r7, #32]
  1163. 8000e38: f887 3025 strb.w r3, [r7, #37] ; 0x25
  1164. 8000e3c: e000 b.n 8000e40 <NessLab_Adc_Convert_db+0x100>
  1165. continue;
  1166. 8000e3e: bf00 nop
  1167. for(int i = 0; i <= 50; i++){
  1168. 8000e40: 6a3b ldr r3, [r7, #32]
  1169. 8000e42: 3301 adds r3, #1
  1170. 8000e44: 623b str r3, [r7, #32]
  1171. 8000e46: 6a3b ldr r3, [r7, #32]
  1172. 8000e48: 2b32 cmp r3, #50 ; 0x32
  1173. 8000e4a: ddcb ble.n 8000de4 <NessLab_Adc_Convert_db+0xa4>
  1174. // printf("%d %d \r\n",Prev_calc_val , calc_val);
  1175. }
  1176. }
  1177. // DB_Define[]
  1178. printf("Curr Db : %d \r\n",Curr_DB);
  1179. 8000e4c: f897 3025 ldrb.w r3, [r7, #37] ; 0x25
  1180. 8000e50: 4619 mov r1, r3
  1181. 8000e52: 480a ldr r0, [pc, #40] ; (8000e7c <NessLab_Adc_Convert_db+0x13c>)
  1182. 8000e54: f005 fd84 bl 8006960 <iprintf>
  1183. return Curr_DB;
  1184. 8000e58: f897 3025 ldrb.w r3, [r7, #37] ; 0x25
  1185. }
  1186. 8000e5c: 4618 mov r0, r3
  1187. 8000e5e: 372c adds r7, #44 ; 0x2c
  1188. 8000e60: 46bd mov sp, r7
  1189. 8000e62: bd90 pop {r4, r7, pc}
  1190. 8000e64: f3af 8000 nop.w
  1191. 8000e68: d2f1a9fc .word 0xd2f1a9fc
  1192. 8000e6c: 3f50624d .word 0x3f50624d
  1193. 8000e70: 200006ac .word 0x200006ac
  1194. 8000e74: 408f4000 .word 0x408f4000
  1195. 8000e78: 20000648 .word 0x20000648
  1196. 8000e7c: 08008958 .word 0x08008958
  1197. 08000e80 <NessLab_Operate>:
  1198. void NessLab_Operate(uint8_t* data){
  1199. 8000e80: b580 push {r7, lr}
  1200. 8000e82: b086 sub sp, #24
  1201. 8000e84: af00 add r7, sp, #0
  1202. 8000e86: 6078 str r0, [r7, #4]
  1203. uint8_t datatype = data[NessLab_MsgID0];
  1204. 8000e88: 687b ldr r3, [r7, #4]
  1205. 8000e8a: 789b ldrb r3, [r3, #2]
  1206. 8000e8c: 73fb strb r3, [r7, #15]
  1207. uint8_t UartLength = 0;
  1208. 8000e8e: 2300 movs r3, #0
  1209. 8000e90: 75fb strb r3, [r7, #23]
  1210. static uint16_t MSG_SNCnt = 0;
  1211. switch(datatype){
  1212. 8000e92: 7bfb ldrb r3, [r7, #15]
  1213. 8000e94: 2bcb cmp r3, #203 ; 0xcb
  1214. 8000e96: d049 beq.n 8000f2c <NessLab_Operate+0xac>
  1215. 8000e98: 2bcb cmp r3, #203 ; 0xcb
  1216. 8000e9a: dc04 bgt.n 8000ea6 <NessLab_Operate+0x26>
  1217. 8000e9c: 2b65 cmp r3, #101 ; 0x65
  1218. 8000e9e: d008 beq.n 8000eb2 <NessLab_Operate+0x32>
  1219. 8000ea0: 2bc9 cmp r3, #201 ; 0xc9
  1220. 8000ea2: d030 beq.n 8000f06 <NessLab_Operate+0x86>
  1221. 8000ea4: e08f b.n 8000fc6 <NessLab_Operate+0x146>
  1222. 8000ea6: 2bcd cmp r3, #205 ; 0xcd
  1223. 8000ea8: d07f beq.n 8000faa <NessLab_Operate+0x12a>
  1224. 8000eaa: 2bce cmp r3, #206 ; 0xce
  1225. 8000eac: f000 8084 beq.w 8000fb8 <NessLab_Operate+0x138>
  1226. 8000eb0: e089 b.n 8000fc6 <NessLab_Operate+0x146>
  1227. case NessLab_STATUS_REQ:
  1228. ADC_Check();
  1229. 8000eb2: f000 fbb1 bl 8001618 <ADC_Check>
  1230. UartLength = NessLab_MAX_INDEX + 1;
  1231. 8000eb6: 2316 movs r3, #22
  1232. 8000eb8: 75fb strb r3, [r7, #23]
  1233. MSG_SNCnt = data[NessLab_Req_MsgSN0] << 8 | data[NessLab_Req_MsgSN1];
  1234. 8000eba: 687b ldr r3, [r7, #4]
  1235. 8000ebc: 3303 adds r3, #3
  1236. 8000ebe: 781b ldrb r3, [r3, #0]
  1237. 8000ec0: 021b lsls r3, r3, #8
  1238. 8000ec2: b21a sxth r2, r3
  1239. 8000ec4: 687b ldr r3, [r7, #4]
  1240. 8000ec6: 3304 adds r3, #4
  1241. 8000ec8: 781b ldrb r3, [r3, #0]
  1242. 8000eca: b21b sxth r3, r3
  1243. 8000ecc: 4313 orrs r3, r2
  1244. 8000ece: b21b sxth r3, r3
  1245. 8000ed0: b29a uxth r2, r3
  1246. 8000ed2: 4b41 ldr r3, [pc, #260] ; (8000fd8 <NessLab_Operate+0x158>)
  1247. 8000ed4: 801a strh r2, [r3, #0]
  1248. MSG_SNCnt++;
  1249. 8000ed6: 4b40 ldr r3, [pc, #256] ; (8000fd8 <NessLab_Operate+0x158>)
  1250. 8000ed8: 881b ldrh r3, [r3, #0]
  1251. 8000eda: 3301 adds r3, #1
  1252. 8000edc: b29a uxth r2, r3
  1253. 8000ede: 4b3e ldr r3, [pc, #248] ; (8000fd8 <NessLab_Operate+0x158>)
  1254. 8000ee0: 801a strh r2, [r3, #0]
  1255. // if(data[NessLab_Req_Data_Cnt1] > 0)
  1256. // NessLab_TxData[NessLab_VSWR_ALARM] = 1;
  1257. // else
  1258. // NessLab_TxData[NessLab_VSWR_ALARM] = 0;
  1259. NessLab_TxData[NessLab_MsgSN0] = (uint8_t)((MSG_SNCnt & 0xFF00) >>8);//data[NessLab_Req_MsgSN0];
  1260. 8000ee2: 4b3d ldr r3, [pc, #244] ; (8000fd8 <NessLab_Operate+0x158>)
  1261. 8000ee4: 881b ldrh r3, [r3, #0]
  1262. 8000ee6: 0a1b lsrs r3, r3, #8
  1263. 8000ee8: b29b uxth r3, r3
  1264. 8000eea: b2da uxtb r2, r3
  1265. 8000eec: 4b3b ldr r3, [pc, #236] ; (8000fdc <NessLab_Operate+0x15c>)
  1266. 8000eee: 70da strb r2, [r3, #3]
  1267. NessLab_TxData[NessLab_MsgSN1] = (uint8_t)((MSG_SNCnt & 0x00FF));//data[NessLab_Req_MsgSN1] ;
  1268. 8000ef0: 4b39 ldr r3, [pc, #228] ; (8000fd8 <NessLab_Operate+0x158>)
  1269. 8000ef2: 881b ldrh r3, [r3, #0]
  1270. 8000ef4: b2da uxtb r2, r3
  1271. 8000ef6: 4b39 ldr r3, [pc, #228] ; (8000fdc <NessLab_Operate+0x15c>)
  1272. 8000ef8: 711a strb r2, [r3, #4]
  1273. NessLab_Frame_Set(NessLab_TxData,12,NessLab_STATUS_RES);
  1274. 8000efa: 2266 movs r2, #102 ; 0x66
  1275. 8000efc: 210c movs r1, #12
  1276. 8000efe: 4837 ldr r0, [pc, #220] ; (8000fdc <NessLab_Operate+0x15c>)
  1277. 8000f00: f000 f882 bl 8001008 <NessLab_Frame_Set>
  1278. // NessLab_TxData[14] = 1;
  1279. // NessLab_TxData[15] = 0;
  1280. // NessLab_TxData[16] = 1;
  1281. // NessLab_TxData[17] = 0;
  1282. break;
  1283. 8000f04: e05f b.n 8000fc6 <NessLab_Operate+0x146>
  1284. case NessLab_Table_REQ:
  1285. UartLength = NESSLAB_TABLE_LENGTH;
  1286. 8000f06: 236e movs r3, #110 ; 0x6e
  1287. 8000f08: 75fb strb r3, [r7, #23]
  1288. FLASH_Read_Func(FLASH_USER_USE_START_ADDR,&NessLab_TxData[NessLab_Req_Data_Cnt0],data[NessLab_DataLength]);
  1289. 8000f0a: 687b ldr r3, [r7, #4]
  1290. 8000f0c: 3306 adds r3, #6
  1291. 8000f0e: 781b ldrb r3, [r3, #0]
  1292. 8000f10: 461a mov r2, r3
  1293. 8000f12: 4933 ldr r1, [pc, #204] ; (8000fe0 <NessLab_Operate+0x160>)
  1294. 8000f14: 4833 ldr r0, [pc, #204] ; (8000fe4 <NessLab_Operate+0x164>)
  1295. 8000f16: f000 fd83 bl 8001a20 <FLASH_Read_Func>
  1296. NessLab_Table_Frame_Set(NessLab_TxData,102,NessLab_Table_RES);
  1297. 8000f1a: 22ca movs r2, #202 ; 0xca
  1298. 8000f1c: 2166 movs r1, #102 ; 0x66
  1299. 8000f1e: 482f ldr r0, [pc, #188] ; (8000fdc <NessLab_Operate+0x15c>)
  1300. 8000f20: f000 f97e bl 8001220 <NessLab_Table_Frame_Set>
  1301. printf("NessLab_Table_REQ \r\n");
  1302. 8000f24: 4830 ldr r0, [pc, #192] ; (8000fe8 <NessLab_Operate+0x168>)
  1303. 8000f26: f005 fd8f bl 8006a48 <puts>
  1304. break;
  1305. 8000f2a: e04c b.n 8000fc6 <NessLab_Operate+0x146>
  1306. case NessLab_TableSet_REQ:
  1307. DataErase_Func(FLASH_USER_USE_START_ADDR,200);
  1308. 8000f2c: 21c8 movs r1, #200 ; 0xc8
  1309. 8000f2e: 482d ldr r0, [pc, #180] ; (8000fe4 <NessLab_Operate+0x164>)
  1310. 8000f30: f000 fc9c bl 800186c <DataErase_Func>
  1311. printf("Ram Data Display \r\n");
  1312. 8000f34: 482d ldr r0, [pc, #180] ; (8000fec <NessLab_Operate+0x16c>)
  1313. 8000f36: f005 fd87 bl 8006a48 <puts>
  1314. for(int i = 0; i < data[NessLab_DataLength]; i++){
  1315. 8000f3a: 2300 movs r3, #0
  1316. 8000f3c: 613b str r3, [r7, #16]
  1317. 8000f3e: e015 b.n 8000f6c <NessLab_Operate+0xec>
  1318. Flash_DataArray[i] = data[NessLab_Data_ADC1_H + i];
  1319. 8000f40: 693b ldr r3, [r7, #16]
  1320. 8000f42: 3307 adds r3, #7
  1321. 8000f44: 461a mov r2, r3
  1322. 8000f46: 687b ldr r3, [r7, #4]
  1323. 8000f48: 4413 add r3, r2
  1324. 8000f4a: 7819 ldrb r1, [r3, #0]
  1325. 8000f4c: 4a28 ldr r2, [pc, #160] ; (8000ff0 <NessLab_Operate+0x170>)
  1326. 8000f4e: 693b ldr r3, [r7, #16]
  1327. 8000f50: 4413 add r3, r2
  1328. 8000f52: 460a mov r2, r1
  1329. 8000f54: 701a strb r2, [r3, #0]
  1330. printf("%x ",Flash_DataArray[i]);
  1331. 8000f56: 4a26 ldr r2, [pc, #152] ; (8000ff0 <NessLab_Operate+0x170>)
  1332. 8000f58: 693b ldr r3, [r7, #16]
  1333. 8000f5a: 4413 add r3, r2
  1334. 8000f5c: 781b ldrb r3, [r3, #0]
  1335. 8000f5e: 4619 mov r1, r3
  1336. 8000f60: 4824 ldr r0, [pc, #144] ; (8000ff4 <NessLab_Operate+0x174>)
  1337. 8000f62: f005 fcfd bl 8006960 <iprintf>
  1338. for(int i = 0; i < data[NessLab_DataLength]; i++){
  1339. 8000f66: 693b ldr r3, [r7, #16]
  1340. 8000f68: 3301 adds r3, #1
  1341. 8000f6a: 613b str r3, [r7, #16]
  1342. 8000f6c: 687b ldr r3, [r7, #4]
  1343. 8000f6e: 3306 adds r3, #6
  1344. 8000f70: 781b ldrb r3, [r3, #0]
  1345. 8000f72: 461a mov r2, r3
  1346. 8000f74: 693b ldr r3, [r7, #16]
  1347. 8000f76: 4293 cmp r3, r2
  1348. 8000f78: dbe2 blt.n 8000f40 <NessLab_Operate+0xc0>
  1349. }
  1350. FLASH_Write_Func(FLASH_USER_USE_START_ADDR,&Flash_DataArray[0],data[NessLab_DataLength]);
  1351. 8000f7a: 687b ldr r3, [r7, #4]
  1352. 8000f7c: 3306 adds r3, #6
  1353. 8000f7e: 781b ldrb r3, [r3, #0]
  1354. 8000f80: 461a mov r2, r3
  1355. 8000f82: 491b ldr r1, [pc, #108] ; (8000ff0 <NessLab_Operate+0x170>)
  1356. 8000f84: 4817 ldr r0, [pc, #92] ; (8000fe4 <NessLab_Operate+0x164>)
  1357. 8000f86: f000 fcc3 bl 8001910 <FLASH_Write_Func>
  1358. UartLength = NESSLAB_TABLE_LENGTH;
  1359. 8000f8a: 236e movs r3, #110 ; 0x6e
  1360. 8000f8c: 75fb strb r3, [r7, #23]
  1361. NessLab_Table_Frame_Set(NessLab_TxData,104,NessLab_TableSet_RES);
  1362. 8000f8e: 22cc movs r2, #204 ; 0xcc
  1363. 8000f90: 2168 movs r1, #104 ; 0x68
  1364. 8000f92: 4812 ldr r0, [pc, #72] ; (8000fdc <NessLab_Operate+0x15c>)
  1365. 8000f94: f000 f944 bl 8001220 <NessLab_Table_Frame_Set>
  1366. FLASH_Read_Func(FLASH_USER_USE_START_ADDR + 2,&DB_Define[0],104);
  1367. 8000f98: 2268 movs r2, #104 ; 0x68
  1368. 8000f9a: 4917 ldr r1, [pc, #92] ; (8000ff8 <NessLab_Operate+0x178>)
  1369. 8000f9c: 4817 ldr r0, [pc, #92] ; (8000ffc <NessLab_Operate+0x17c>)
  1370. 8000f9e: f000 fd3f bl 8001a20 <FLASH_Read_Func>
  1371. // NessLab_Init();
  1372. printf("\r\nNessLab_TableSet_REQ \r\n");
  1373. 8000fa2: 4817 ldr r0, [pc, #92] ; (8001000 <NessLab_Operate+0x180>)
  1374. 8000fa4: f005 fd50 bl 8006a48 <puts>
  1375. break;
  1376. 8000fa8: e00d b.n 8000fc6 <NessLab_Operate+0x146>
  1377. case NessLab_PAU_Enable_Req:
  1378. HAL_GPIO_WritePin(AMP_EN_GPIO_Port,AMP_EN_Pin, GPIO_PIN_SET);
  1379. 8000faa: 2201 movs r2, #1
  1380. 8000fac: f44f 7180 mov.w r1, #256 ; 0x100
  1381. 8000fb0: 4814 ldr r0, [pc, #80] ; (8001004 <NessLab_Operate+0x184>)
  1382. 8000fb2: f002 facc bl 800354e <HAL_GPIO_WritePin>
  1383. break;
  1384. 8000fb6: e006 b.n 8000fc6 <NessLab_Operate+0x146>
  1385. case NessLab_PAU_Disable_Req:
  1386. HAL_GPIO_WritePin(AMP_EN_GPIO_Port,AMP_EN_Pin, GPIO_PIN_RESET);
  1387. 8000fb8: 2200 movs r2, #0
  1388. 8000fba: f44f 7180 mov.w r1, #256 ; 0x100
  1389. 8000fbe: 4811 ldr r0, [pc, #68] ; (8001004 <NessLab_Operate+0x184>)
  1390. 8000fc0: f002 fac5 bl 800354e <HAL_GPIO_WritePin>
  1391. break;
  1392. 8000fc4: bf00 nop
  1393. }
  1394. Uart1_Data_Send(&NessLab_TxData[NessLab_Header0], UartLength);
  1395. 8000fc6: 7dfb ldrb r3, [r7, #23]
  1396. 8000fc8: 4619 mov r1, r3
  1397. 8000fca: 4804 ldr r0, [pc, #16] ; (8000fdc <NessLab_Operate+0x15c>)
  1398. 8000fcc: f000 feae bl 8001d2c <Uart1_Data_Send>
  1399. }
  1400. 8000fd0: bf00 nop
  1401. 8000fd2: 3718 adds r7, #24
  1402. 8000fd4: 46bd mov sp, r7
  1403. 8000fd6: bd80 pop {r7, pc}
  1404. 8000fd8: 2000038c .word 0x2000038c
  1405. 8000fdc: 200001fc .word 0x200001fc
  1406. 8000fe0: 20000203 .word 0x20000203
  1407. 8000fe4: 0800ff38 .word 0x0800ff38
  1408. 8000fe8: 08008968 .word 0x08008968
  1409. 8000fec: 0800897c .word 0x0800897c
  1410. 8000ff0: 200002c4 .word 0x200002c4
  1411. 8000ff4: 08008990 .word 0x08008990
  1412. 8000ff8: 20000648 .word 0x20000648
  1413. 8000ffc: 0800ff3a .word 0x0800ff3a
  1414. 8001000: 08008994 .word 0x08008994
  1415. 8001004: 40010800 .word 0x40010800
  1416. 08001008 <NessLab_Frame_Set>:
  1417. 7e 7e 66 00 02 00 0c 04 20 00 00 00 00 00 00 00 00 00 68 7e 7e 0a
  1418. */
  1419. void NessLab_Frame_Set(uint8_t* data,uint8_t size){
  1420. 8001008: b590 push {r4, r7, lr}
  1421. 800100a: b083 sub sp, #12
  1422. 800100c: af00 add r7, sp, #0
  1423. 800100e: 6078 str r0, [r7, #4]
  1424. 8001010: 460b mov r3, r1
  1425. 8001012: 70fb strb r3, [r7, #3]
  1426. data[NessLab_Header0] = 0x7E;
  1427. 8001014: 687b ldr r3, [r7, #4]
  1428. 8001016: 227e movs r2, #126 ; 0x7e
  1429. 8001018: 701a strb r2, [r3, #0]
  1430. data[NessLab_Header1] = 0x7E;
  1431. 800101a: 687b ldr r3, [r7, #4]
  1432. 800101c: 3301 adds r3, #1
  1433. 800101e: 227e movs r2, #126 ; 0x7e
  1434. 8001020: 701a strb r2, [r3, #0]
  1435. data[NessLab_MsgID0] = NessLab_STATUS_RES;// ID
  1436. 8001022: 687b ldr r3, [r7, #4]
  1437. 8001024: 3302 adds r3, #2
  1438. 8001026: 2266 movs r2, #102 ; 0x66
  1439. 8001028: 701a strb r2, [r3, #0]
  1440. // data[NessLab_MsgSN0] = 0; // SEQ NUMBER
  1441. // data[NessLab_MsgSN1] = 0; // SEQ NUMBER
  1442. data[NessLab_Reserve0] = 0; // NessLab_Reserve0
  1443. 800102a: 687b ldr r3, [r7, #4]
  1444. 800102c: 3305 adds r3, #5
  1445. 800102e: 2200 movs r2, #0
  1446. 8001030: 701a strb r2, [r3, #0]
  1447. data[NessLab_DataLength] = size; // Nesslab Size
  1448. 8001032: 687b ldr r3, [r7, #4]
  1449. 8001034: 3306 adds r3, #6
  1450. 8001036: 78fa ldrb r2, [r7, #3]
  1451. 8001038: 701a strb r2, [r3, #0]
  1452. data[NessLab_Data_ADC1_H] = Currstatus.DownLink_Forward_Det_H;//(uint8_t)((ADC1value[0] & 0xFF00) >> 8);
  1453. 800103a: 687b ldr r3, [r7, #4]
  1454. 800103c: 3307 adds r3, #7
  1455. 800103e: 4a49 ldr r2, [pc, #292] ; (8001164 <NessLab_Frame_Set+0x15c>)
  1456. 8001040: 79d2 ldrb r2, [r2, #7]
  1457. 8001042: 701a strb r2, [r3, #0]
  1458. data[NessLab_Data_ADC1_L] = Currstatus.DownLink_Forward_Det_L;//(uint8_t)(ADC1value[0] & 0x00FF);
  1459. 8001044: 687b ldr r3, [r7, #4]
  1460. 8001046: 3308 adds r3, #8
  1461. 8001048: 4a46 ldr r2, [pc, #280] ; (8001164 <NessLab_Frame_Set+0x15c>)
  1462. 800104a: 7a12 ldrb r2, [r2, #8]
  1463. 800104c: 701a strb r2, [r3, #0]
  1464. data[NessLab_Data_ADC1_Table_Value] = NessLab_Adc_Convert_db();
  1465. 800104e: 687b ldr r3, [r7, #4]
  1466. 8001050: f103 0409 add.w r4, r3, #9
  1467. 8001054: f7ff fe74 bl 8000d40 <NessLab_Adc_Convert_db>
  1468. 8001058: 4603 mov r3, r0
  1469. 800105a: 7023 strb r3, [r4, #0]
  1470. if(DC_FAIL_ALARM_CNT > 3000)
  1471. 800105c: 4b42 ldr r3, [pc, #264] ; (8001168 <NessLab_Frame_Set+0x160>)
  1472. 800105e: 681b ldr r3, [r3, #0]
  1473. 8001060: f640 32b8 movw r2, #3000 ; 0xbb8
  1474. 8001064: 4293 cmp r3, r2
  1475. 8001066: d904 bls.n 8001072 <NessLab_Frame_Set+0x6a>
  1476. data[NessLab_DC_FAIL_ALARM] = 1;
  1477. 8001068: 687b ldr r3, [r7, #4]
  1478. 800106a: 330a adds r3, #10
  1479. 800106c: 2201 movs r2, #1
  1480. 800106e: 701a strb r2, [r3, #0]
  1481. 8001070: e003 b.n 800107a <NessLab_Frame_Set+0x72>
  1482. else
  1483. data[NessLab_DC_FAIL_ALARM] = 0;
  1484. 8001072: 687b ldr r3, [r7, #4]
  1485. 8001074: 330a adds r3, #10
  1486. 8001076: 2200 movs r2, #0
  1487. 8001078: 701a strb r2, [r3, #0]
  1488. if(OVER_INPUT_ALARM_CNT > 3000)
  1489. 800107a: 4b3c ldr r3, [pc, #240] ; (800116c <NessLab_Frame_Set+0x164>)
  1490. 800107c: 681b ldr r3, [r3, #0]
  1491. 800107e: f640 32b8 movw r2, #3000 ; 0xbb8
  1492. 8001082: 4293 cmp r3, r2
  1493. 8001084: d904 bls.n 8001090 <NessLab_Frame_Set+0x88>
  1494. data[NessLab_Over_Input_Alarm] = 1;
  1495. 8001086: 687b ldr r3, [r7, #4]
  1496. 8001088: 330e adds r3, #14
  1497. 800108a: 2201 movs r2, #1
  1498. 800108c: 701a strb r2, [r3, #0]
  1499. 800108e: e003 b.n 8001098 <NessLab_Frame_Set+0x90>
  1500. else
  1501. data[NessLab_Over_Input_Alarm] = 0;
  1502. 8001090: 687b ldr r3, [r7, #4]
  1503. 8001092: 330e adds r3, #14
  1504. 8001094: 2200 movs r2, #0
  1505. 8001096: 701a strb r2, [r3, #0]
  1506. if(OVER_TEMP_ALARM_CNT > 3000)
  1507. 8001098: 4b35 ldr r3, [pc, #212] ; (8001170 <NessLab_Frame_Set+0x168>)
  1508. 800109a: 681b ldr r3, [r3, #0]
  1509. 800109c: f640 32b8 movw r2, #3000 ; 0xbb8
  1510. 80010a0: 4293 cmp r3, r2
  1511. 80010a2: d904 bls.n 80010ae <NessLab_Frame_Set+0xa6>
  1512. data[NessLab_Over_Temp_Alarm] = 1;
  1513. 80010a4: 687b ldr r3, [r7, #4]
  1514. 80010a6: 330f adds r3, #15
  1515. 80010a8: 2201 movs r2, #1
  1516. 80010aa: 701a strb r2, [r3, #0]
  1517. 80010ac: e003 b.n 80010b6 <NessLab_Frame_Set+0xae>
  1518. else
  1519. data[NessLab_Over_Temp_Alarm] = 0;
  1520. 80010ae: 687b ldr r3, [r7, #4]
  1521. 80010b0: 330f adds r3, #15
  1522. 80010b2: 2200 movs r2, #0
  1523. 80010b4: 701a strb r2, [r3, #0]
  1524. if(ALC_ALARM_CNT > 3000)
  1525. 80010b6: 4b2f ldr r3, [pc, #188] ; (8001174 <NessLab_Frame_Set+0x16c>)
  1526. 80010b8: 681b ldr r3, [r3, #0]
  1527. 80010ba: f640 32b8 movw r2, #3000 ; 0xbb8
  1528. 80010be: 4293 cmp r3, r2
  1529. 80010c0: d904 bls.n 80010cc <NessLab_Frame_Set+0xc4>
  1530. data[NessLab_ALC_ALARM] = 1;
  1531. 80010c2: 687b ldr r3, [r7, #4]
  1532. 80010c4: 3311 adds r3, #17
  1533. 80010c6: 2201 movs r2, #1
  1534. 80010c8: 701a strb r2, [r3, #0]
  1535. 80010ca: e003 b.n 80010d4 <NessLab_Frame_Set+0xcc>
  1536. else
  1537. data[NessLab_ALC_ALARM] = 0;
  1538. 80010cc: 687b ldr r3, [r7, #4]
  1539. 80010ce: 3311 adds r3, #17
  1540. 80010d0: 2200 movs r2, #0
  1541. 80010d2: 701a strb r2, [r3, #0]
  1542. if(OVER_POWER_ALARM_CNT > 3000)
  1543. 80010d4: 4b28 ldr r3, [pc, #160] ; (8001178 <NessLab_Frame_Set+0x170>)
  1544. 80010d6: 681b ldr r3, [r3, #0]
  1545. 80010d8: f640 32b8 movw r2, #3000 ; 0xbb8
  1546. 80010dc: 4293 cmp r3, r2
  1547. 80010de: d904 bls.n 80010ea <NessLab_Frame_Set+0xe2>
  1548. data[NessLab_Over_Power_Alarm] = 1;
  1549. 80010e0: 687b ldr r3, [r7, #4]
  1550. 80010e2: 330c adds r3, #12
  1551. 80010e4: 2201 movs r2, #1
  1552. 80010e6: 701a strb r2, [r3, #0]
  1553. 80010e8: e003 b.n 80010f2 <NessLab_Frame_Set+0xea>
  1554. else
  1555. data[NessLab_Over_Power_Alarm] = 0;
  1556. 80010ea: 687b ldr r3, [r7, #4]
  1557. 80010ec: 330c adds r3, #12
  1558. 80010ee: 2200 movs r2, #0
  1559. 80010f0: 701a strb r2, [r3, #0]
  1560. if(VSWR_ALARM_CNT > 3000)
  1561. 80010f2: 4b22 ldr r3, [pc, #136] ; (800117c <NessLab_Frame_Set+0x174>)
  1562. 80010f4: 681b ldr r3, [r3, #0]
  1563. 80010f6: f640 32b8 movw r2, #3000 ; 0xbb8
  1564. 80010fa: 4293 cmp r3, r2
  1565. 80010fc: d904 bls.n 8001108 <NessLab_Frame_Set+0x100>
  1566. data[NessLab_VSWR_ALARM] = 1;
  1567. 80010fe: 687b ldr r3, [r7, #4]
  1568. 8001100: 330d adds r3, #13
  1569. 8001102: 2201 movs r2, #1
  1570. 8001104: 701a strb r2, [r3, #0]
  1571. 8001106: e003 b.n 8001110 <NessLab_Frame_Set+0x108>
  1572. else
  1573. data[NessLab_VSWR_ALARM] = 0;
  1574. 8001108: 687b ldr r3, [r7, #4]
  1575. 800110a: 330d adds r3, #13
  1576. 800110c: 2200 movs r2, #0
  1577. 800110e: 701a strb r2, [r3, #0]
  1578. data[NessLab_DownLink_Status] = 0;
  1579. 8001110: 687b ldr r3, [r7, #4]
  1580. 8001112: 330b adds r3, #11
  1581. 8001114: 2200 movs r2, #0
  1582. 8001116: 701a strb r2, [r3, #0]
  1583. data[NessLab_Temp_Monitor] = Currstatus.Temp_Monitor;
  1584. 8001118: 687b ldr r3, [r7, #4]
  1585. 800111a: 3310 adds r3, #16
  1586. 800111c: 4a11 ldr r2, [pc, #68] ; (8001164 <NessLab_Frame_Set+0x15c>)
  1587. 800111e: 7c52 ldrb r2, [r2, #17]
  1588. 8001120: 701a strb r2, [r3, #0]
  1589. data[NessLab_ChecksumVal] = NessLab_Checksum(&data[NessLab_MsgID0], NessLab_MAX_INDEX - 5);
  1590. 8001122: 687b ldr r3, [r7, #4]
  1591. 8001124: 1c9a adds r2, r3, #2
  1592. 8001126: 687b ldr r3, [r7, #4]
  1593. 8001128: f103 0412 add.w r4, r3, #18
  1594. 800112c: 2110 movs r1, #16
  1595. 800112e: 4610 mov r0, r2
  1596. 8001130: f000 fb40 bl 80017b4 <NessLab_Checksum>
  1597. 8001134: 4603 mov r3, r0
  1598. 8001136: 7023 strb r3, [r4, #0]
  1599. /* Exception Header Tail Checksum */
  1600. data[NessLab_Tail0] = 0x7E;
  1601. 8001138: 687b ldr r3, [r7, #4]
  1602. 800113a: 3313 adds r3, #19
  1603. 800113c: 227e movs r2, #126 ; 0x7e
  1604. 800113e: 701a strb r2, [r3, #0]
  1605. data[NessLab_Tail1] = 0x7E;
  1606. 8001140: 687b ldr r3, [r7, #4]
  1607. 8001142: 3314 adds r3, #20
  1608. 8001144: 227e movs r2, #126 ; 0x7e
  1609. 8001146: 701a strb r2, [r3, #0]
  1610. data[NessLab_Tail1 + 1] = 0x0A;
  1611. 8001148: 687b ldr r3, [r7, #4]
  1612. 800114a: 3315 adds r3, #21
  1613. 800114c: 220a movs r2, #10
  1614. 800114e: 701a strb r2, [r3, #0]
  1615. NessLab_Protocol_LastCheck(&data[NessLab_MsgID0],16);
  1616. 8001150: 687b ldr r3, [r7, #4]
  1617. 8001152: 3302 adds r3, #2
  1618. 8001154: 2110 movs r1, #16
  1619. 8001156: 4618 mov r0, r3
  1620. 8001158: f000 f812 bl 8001180 <NessLab_Protocol_LastCheck>
  1621. }
  1622. 800115c: bf00 nop
  1623. 800115e: 370c adds r7, #12
  1624. 8001160: 46bd mov sp, r7
  1625. 8001162: bd90 pop {r4, r7, pc}
  1626. 8001164: 200006ac .word 0x200006ac
  1627. 8001168: 2000061c .word 0x2000061c
  1628. 800116c: 20000620 .word 0x20000620
  1629. 8001170: 20000624 .word 0x20000624
  1630. 8001174: 20000628 .word 0x20000628
  1631. 8001178: 2000062c .word 0x2000062c
  1632. 800117c: 20000630 .word 0x20000630
  1633. 08001180 <NessLab_Protocol_LastCheck>:
  1634. void NessLab_Protocol_LastCheck(uint8_t* data,uint8_t size){
  1635. 8001180: b480 push {r7}
  1636. 8001182: b085 sub sp, #20
  1637. 8001184: af00 add r7, sp, #0
  1638. 8001186: 6078 str r0, [r7, #4]
  1639. 8001188: 460b mov r3, r1
  1640. 800118a: 70fb strb r3, [r7, #3]
  1641. int cnt = NessLab_MsgID0;
  1642. 800118c: 2302 movs r3, #2
  1643. 800118e: 60fb str r3, [r7, #12]
  1644. for(int i = cnt; i < 17; i++){
  1645. 8001190: 68fb ldr r3, [r7, #12]
  1646. 8001192: 60bb str r3, [r7, #8]
  1647. 8001194: e03b b.n 800120e <NessLab_Protocol_LastCheck+0x8e>
  1648. if(data[i] == 0x7e){
  1649. 8001196: 68bb ldr r3, [r7, #8]
  1650. 8001198: 687a ldr r2, [r7, #4]
  1651. 800119a: 4413 add r3, r2
  1652. 800119c: 781b ldrb r3, [r3, #0]
  1653. 800119e: 2b7e cmp r3, #126 ; 0x7e
  1654. 80011a0: d110 bne.n 80011c4 <NessLab_Protocol_LastCheck+0x44>
  1655. data[cnt++] = 0x7d;
  1656. 80011a2: 68fb ldr r3, [r7, #12]
  1657. 80011a4: 1c5a adds r2, r3, #1
  1658. 80011a6: 60fa str r2, [r7, #12]
  1659. 80011a8: 461a mov r2, r3
  1660. 80011aa: 687b ldr r3, [r7, #4]
  1661. 80011ac: 4413 add r3, r2
  1662. 80011ae: 227d movs r2, #125 ; 0x7d
  1663. 80011b0: 701a strb r2, [r3, #0]
  1664. data[cnt++] = 0x5e;
  1665. 80011b2: 68fb ldr r3, [r7, #12]
  1666. 80011b4: 1c5a adds r2, r3, #1
  1667. 80011b6: 60fa str r2, [r7, #12]
  1668. 80011b8: 461a mov r2, r3
  1669. 80011ba: 687b ldr r3, [r7, #4]
  1670. 80011bc: 4413 add r3, r2
  1671. 80011be: 225e movs r2, #94 ; 0x5e
  1672. 80011c0: 701a strb r2, [r3, #0]
  1673. 80011c2: e021 b.n 8001208 <NessLab_Protocol_LastCheck+0x88>
  1674. }
  1675. else if(data[i] == 0x7d){
  1676. 80011c4: 68bb ldr r3, [r7, #8]
  1677. 80011c6: 687a ldr r2, [r7, #4]
  1678. 80011c8: 4413 add r3, r2
  1679. 80011ca: 781b ldrb r3, [r3, #0]
  1680. 80011cc: 2b7d cmp r3, #125 ; 0x7d
  1681. 80011ce: d110 bne.n 80011f2 <NessLab_Protocol_LastCheck+0x72>
  1682. data[cnt++] = 0x7d;
  1683. 80011d0: 68fb ldr r3, [r7, #12]
  1684. 80011d2: 1c5a adds r2, r3, #1
  1685. 80011d4: 60fa str r2, [r7, #12]
  1686. 80011d6: 461a mov r2, r3
  1687. 80011d8: 687b ldr r3, [r7, #4]
  1688. 80011da: 4413 add r3, r2
  1689. 80011dc: 227d movs r2, #125 ; 0x7d
  1690. 80011de: 701a strb r2, [r3, #0]
  1691. data[cnt++] = 0x5d;
  1692. 80011e0: 68fb ldr r3, [r7, #12]
  1693. 80011e2: 1c5a adds r2, r3, #1
  1694. 80011e4: 60fa str r2, [r7, #12]
  1695. 80011e6: 461a mov r2, r3
  1696. 80011e8: 687b ldr r3, [r7, #4]
  1697. 80011ea: 4413 add r3, r2
  1698. 80011ec: 225d movs r2, #93 ; 0x5d
  1699. 80011ee: 701a strb r2, [r3, #0]
  1700. 80011f0: e00a b.n 8001208 <NessLab_Protocol_LastCheck+0x88>
  1701. }else{
  1702. data[i++] = data[i];
  1703. 80011f2: 68bb ldr r3, [r7, #8]
  1704. 80011f4: 687a ldr r2, [r7, #4]
  1705. 80011f6: 441a add r2, r3
  1706. 80011f8: 68bb ldr r3, [r7, #8]
  1707. 80011fa: 1c59 adds r1, r3, #1
  1708. 80011fc: 60b9 str r1, [r7, #8]
  1709. 80011fe: 4619 mov r1, r3
  1710. 8001200: 687b ldr r3, [r7, #4]
  1711. 8001202: 440b add r3, r1
  1712. 8001204: 7812 ldrb r2, [r2, #0]
  1713. 8001206: 701a strb r2, [r3, #0]
  1714. for(int i = cnt; i < 17; i++){
  1715. 8001208: 68bb ldr r3, [r7, #8]
  1716. 800120a: 3301 adds r3, #1
  1717. 800120c: 60bb str r3, [r7, #8]
  1718. 800120e: 68bb ldr r3, [r7, #8]
  1719. 8001210: 2b10 cmp r3, #16
  1720. 8001212: ddc0 ble.n 8001196 <NessLab_Protocol_LastCheck+0x16>
  1721. }
  1722. }
  1723. }
  1724. 8001214: bf00 nop
  1725. 8001216: 3714 adds r7, #20
  1726. 8001218: 46bd mov sp, r7
  1727. 800121a: bc80 pop {r7}
  1728. 800121c: 4770 bx lr
  1729. ...
  1730. 08001220 <NessLab_Table_Frame_Set>:
  1731. void NessLab_Table_Frame_Set(uint8_t* data,uint8_t size,uint8_t mode){
  1732. 8001220: b590 push {r4, r7, lr}
  1733. 8001222: b087 sub sp, #28
  1734. 8001224: af00 add r7, sp, #0
  1735. 8001226: 6078 str r0, [r7, #4]
  1736. 8001228: 460b mov r3, r1
  1737. 800122a: 70fb strb r3, [r7, #3]
  1738. 800122c: 4613 mov r3, r2
  1739. 800122e: 70bb strb r3, [r7, #2]
  1740. uint32_t i = 0;
  1741. 8001230: 2300 movs r3, #0
  1742. 8001232: 617b str r3, [r7, #20]
  1743. uint32_t CurrApiAddress = 0;
  1744. 8001234: 2300 movs r3, #0
  1745. 8001236: 60fb str r3, [r7, #12]
  1746. CurrApiAddress = FLASH_USER_USE_START_ADDR;
  1747. 8001238: 4b33 ldr r3, [pc, #204] ; (8001308 <NessLab_Table_Frame_Set+0xe8>)
  1748. 800123a: 60fb str r3, [r7, #12]
  1749. uint8_t* Currdata = (uint8_t*)CurrApiAddress;
  1750. 800123c: 68fb ldr r3, [r7, #12]
  1751. 800123e: 60bb str r3, [r7, #8]
  1752. uint8_t* pdata;
  1753. data[i++] = 0x7E;
  1754. 8001240: 697b ldr r3, [r7, #20]
  1755. 8001242: 1c5a adds r2, r3, #1
  1756. 8001244: 617a str r2, [r7, #20]
  1757. 8001246: 687a ldr r2, [r7, #4]
  1758. 8001248: 4413 add r3, r2
  1759. 800124a: 227e movs r2, #126 ; 0x7e
  1760. 800124c: 701a strb r2, [r3, #0]
  1761. data[i++] = 0x7E;
  1762. 800124e: 697b ldr r3, [r7, #20]
  1763. 8001250: 1c5a adds r2, r3, #1
  1764. 8001252: 617a str r2, [r7, #20]
  1765. 8001254: 687a ldr r2, [r7, #4]
  1766. 8001256: 4413 add r3, r2
  1767. 8001258: 227e movs r2, #126 ; 0x7e
  1768. 800125a: 701a strb r2, [r3, #0]
  1769. data[i++] = mode;// ID
  1770. 800125c: 697b ldr r3, [r7, #20]
  1771. 800125e: 1c5a adds r2, r3, #1
  1772. 8001260: 617a str r2, [r7, #20]
  1773. 8001262: 687a ldr r2, [r7, #4]
  1774. 8001264: 4413 add r3, r2
  1775. 8001266: 78ba ldrb r2, [r7, #2]
  1776. 8001268: 701a strb r2, [r3, #0]
  1777. data[i++] = 0; // SEQ NUMBER
  1778. 800126a: 697b ldr r3, [r7, #20]
  1779. 800126c: 1c5a adds r2, r3, #1
  1780. 800126e: 617a str r2, [r7, #20]
  1781. 8001270: 687a ldr r2, [r7, #4]
  1782. 8001272: 4413 add r3, r2
  1783. 8001274: 2200 movs r2, #0
  1784. 8001276: 701a strb r2, [r3, #0]
  1785. data[i++] = 0; // SEQ NUMBER
  1786. 8001278: 697b ldr r3, [r7, #20]
  1787. 800127a: 1c5a adds r2, r3, #1
  1788. 800127c: 617a str r2, [r7, #20]
  1789. 800127e: 687a ldr r2, [r7, #4]
  1790. 8001280: 4413 add r3, r2
  1791. 8001282: 2200 movs r2, #0
  1792. 8001284: 701a strb r2, [r3, #0]
  1793. data[i++] = 0; // NessLab_Reserve0
  1794. 8001286: 697b ldr r3, [r7, #20]
  1795. 8001288: 1c5a adds r2, r3, #1
  1796. 800128a: 617a str r2, [r7, #20]
  1797. 800128c: 687a ldr r2, [r7, #4]
  1798. 800128e: 4413 add r3, r2
  1799. 8001290: 2200 movs r2, #0
  1800. 8001292: 701a strb r2, [r3, #0]
  1801. data[i++] = size; // Nesslab Size
  1802. 8001294: 697b ldr r3, [r7, #20]
  1803. 8001296: 1c5a adds r2, r3, #1
  1804. 8001298: 617a str r2, [r7, #20]
  1805. 800129a: 687a ldr r2, [r7, #4]
  1806. 800129c: 4413 add r3, r2
  1807. 800129e: 78fa ldrb r2, [r7, #3]
  1808. 80012a0: 701a strb r2, [r3, #0]
  1809. // NessLab_TalbleFlash_Read(&data[NessLab_DataLength + 1],100);
  1810. for(int a = 0; a < size; a++){
  1811. 80012a2: 2300 movs r3, #0
  1812. 80012a4: 613b str r3, [r7, #16]
  1813. 80012a6: e00c b.n 80012c2 <NessLab_Table_Frame_Set+0xa2>
  1814. data[i++] = Currdata[a];
  1815. 80012a8: 693b ldr r3, [r7, #16]
  1816. 80012aa: 68ba ldr r2, [r7, #8]
  1817. 80012ac: 441a add r2, r3
  1818. 80012ae: 697b ldr r3, [r7, #20]
  1819. 80012b0: 1c59 adds r1, r3, #1
  1820. 80012b2: 6179 str r1, [r7, #20]
  1821. 80012b4: 6879 ldr r1, [r7, #4]
  1822. 80012b6: 440b add r3, r1
  1823. 80012b8: 7812 ldrb r2, [r2, #0]
  1824. 80012ba: 701a strb r2, [r3, #0]
  1825. for(int a = 0; a < size; a++){
  1826. 80012bc: 693b ldr r3, [r7, #16]
  1827. 80012be: 3301 adds r3, #1
  1828. 80012c0: 613b str r3, [r7, #16]
  1829. 80012c2: 78fb ldrb r3, [r7, #3]
  1830. 80012c4: 693a ldr r2, [r7, #16]
  1831. 80012c6: 429a cmp r2, r3
  1832. 80012c8: dbee blt.n 80012a8 <NessLab_Table_Frame_Set+0x88>
  1833. // printf("%02x ",Currdata[i]);
  1834. }
  1835. data[i++] = NessLab_Checksum(&data[NessLab_MsgID0], 100 + 5);
  1836. 80012ca: 687b ldr r3, [r7, #4]
  1837. 80012cc: 1c98 adds r0, r3, #2
  1838. 80012ce: 697b ldr r3, [r7, #20]
  1839. 80012d0: 1c5a adds r2, r3, #1
  1840. 80012d2: 617a str r2, [r7, #20]
  1841. 80012d4: 687a ldr r2, [r7, #4]
  1842. 80012d6: 18d4 adds r4, r2, r3
  1843. 80012d8: 2169 movs r1, #105 ; 0x69
  1844. 80012da: f000 fa6b bl 80017b4 <NessLab_Checksum>
  1845. 80012de: 4603 mov r3, r0
  1846. 80012e0: 7023 strb r3, [r4, #0]
  1847. /* Exception Header Tail Checksum */
  1848. data[i++] = 0x7E;
  1849. 80012e2: 697b ldr r3, [r7, #20]
  1850. 80012e4: 1c5a adds r2, r3, #1
  1851. 80012e6: 617a str r2, [r7, #20]
  1852. 80012e8: 687a ldr r2, [r7, #4]
  1853. 80012ea: 4413 add r3, r2
  1854. 80012ec: 227e movs r2, #126 ; 0x7e
  1855. 80012ee: 701a strb r2, [r3, #0]
  1856. data[i++] = 0x7E;
  1857. 80012f0: 697b ldr r3, [r7, #20]
  1858. 80012f2: 1c5a adds r2, r3, #1
  1859. 80012f4: 617a str r2, [r7, #20]
  1860. 80012f6: 687a ldr r2, [r7, #4]
  1861. 80012f8: 4413 add r3, r2
  1862. 80012fa: 227e movs r2, #126 ; 0x7e
  1863. 80012fc: 701a strb r2, [r3, #0]
  1864. }
  1865. 80012fe: bf00 nop
  1866. 8001300: 371c adds r7, #28
  1867. 8001302: 46bd mov sp, r7
  1868. 8001304: bd90 pop {r4, r7, pc}
  1869. 8001306: bf00 nop
  1870. 8001308: 0800ff38 .word 0x0800ff38
  1871. 0800130c <NessLab_PAU_Enable>:
  1872. void NessLab_Status_Check(){
  1873. //HAL_GPIO_ReadPin(, GPIO_Pin)
  1874. }
  1875. void NessLab_PAU_Enable(){
  1876. 800130c: b598 push {r3, r4, r7, lr}
  1877. 800130e: af00 add r7, sp, #0
  1878. #if 1
  1879. if( HAL_GPIO_ReadPin(PAU_EN_GPIO_Port, PAU_EN_Pin) != HAL_GPIO_ReadPin(AMP_EN_GPIO_Port, AMP_EN_Pin) ){
  1880. 8001310: f44f 4100 mov.w r1, #32768 ; 0x8000
  1881. 8001314: 4817 ldr r0, [pc, #92] ; (8001374 <NessLab_PAU_Enable+0x68>)
  1882. 8001316: f002 f903 bl 8003520 <HAL_GPIO_ReadPin>
  1883. 800131a: 4603 mov r3, r0
  1884. 800131c: 461c mov r4, r3
  1885. 800131e: f44f 7180 mov.w r1, #256 ; 0x100
  1886. 8001322: 4815 ldr r0, [pc, #84] ; (8001378 <NessLab_PAU_Enable+0x6c>)
  1887. 8001324: f002 f8fc bl 8003520 <HAL_GPIO_ReadPin>
  1888. 8001328: 4603 mov r3, r0
  1889. 800132a: 429c cmp r4, r3
  1890. 800132c: d01f beq.n 800136e <NessLab_PAU_Enable+0x62>
  1891. HAL_GPIO_WritePin(AMP_EN_GPIO_Port,AMP_EN_Pin, HAL_GPIO_ReadPin(PAU_EN_GPIO_Port, PAU_EN_Pin));
  1892. 800132e: f44f 4100 mov.w r1, #32768 ; 0x8000
  1893. 8001332: 4810 ldr r0, [pc, #64] ; (8001374 <NessLab_PAU_Enable+0x68>)
  1894. 8001334: f002 f8f4 bl 8003520 <HAL_GPIO_ReadPin>
  1895. 8001338: 4603 mov r3, r0
  1896. 800133a: 461a mov r2, r3
  1897. 800133c: f44f 7180 mov.w r1, #256 ; 0x100
  1898. 8001340: 480d ldr r0, [pc, #52] ; (8001378 <NessLab_PAU_Enable+0x6c>)
  1899. 8001342: f002 f904 bl 800354e <HAL_GPIO_WritePin>
  1900. printf("HAL_GPIO_ReadPin(PAU_EN_GPIO_Port, PAU_EN_Pin) : %d \r\n",HAL_GPIO_ReadPin(PAU_EN_GPIO_Port, PAU_EN_Pin));
  1901. 8001346: f44f 4100 mov.w r1, #32768 ; 0x8000
  1902. 800134a: 480a ldr r0, [pc, #40] ; (8001374 <NessLab_PAU_Enable+0x68>)
  1903. 800134c: f002 f8e8 bl 8003520 <HAL_GPIO_ReadPin>
  1904. 8001350: 4603 mov r3, r0
  1905. 8001352: 4619 mov r1, r3
  1906. 8001354: 4809 ldr r0, [pc, #36] ; (800137c <NessLab_PAU_Enable+0x70>)
  1907. 8001356: f005 fb03 bl 8006960 <iprintf>
  1908. printf("AMP_EN_GPIO_Port : %d \r\n",HAL_GPIO_ReadPin(AMP_EN_GPIO_Port, AMP_EN_Pin));
  1909. 800135a: f44f 7180 mov.w r1, #256 ; 0x100
  1910. 800135e: 4806 ldr r0, [pc, #24] ; (8001378 <NessLab_PAU_Enable+0x6c>)
  1911. 8001360: f002 f8de bl 8003520 <HAL_GPIO_ReadPin>
  1912. 8001364: 4603 mov r3, r0
  1913. 8001366: 4619 mov r1, r3
  1914. 8001368: 4805 ldr r0, [pc, #20] ; (8001380 <NessLab_PAU_Enable+0x74>)
  1915. 800136a: f005 faf9 bl 8006960 <iprintf>
  1916. #else
  1917. HAL_GPIO_WritePin(AMP_EN_GPIO_Port,AMP_EN_Pin, 0);
  1918. printf("AMP_EN_GPIO_Port : %d \r\n",HAL_GPIO_ReadPin(AMP_EN_GPIO_Port, AMP_EN_Pin));
  1919. #endif
  1920. }
  1921. 800136e: bf00 nop
  1922. 8001370: bd98 pop {r3, r4, r7, pc}
  1923. 8001372: bf00 nop
  1924. 8001374: 40010c00 .word 0x40010c00
  1925. 8001378: 40010800 .word 0x40010800
  1926. 800137c: 080089b0 .word 0x080089b0
  1927. 8001380: 080089e8 .word 0x080089e8
  1928. 08001384 <NessLab_GPIO_Operate>:
  1929. void NessLab_GPIO_Operate(){
  1930. 8001384: b580 push {r7, lr}
  1931. 8001386: af00 add r7, sp, #0
  1932. NessLab_PAU_Enable();
  1933. 8001388: f7ff ffc0 bl 800130c <NessLab_PAU_Enable>
  1934. }
  1935. 800138c: bf00 nop
  1936. 800138e: bd80 pop {r7, pc}
  1937. 08001390 <ADC_Value_Get>:
  1938. * ADC 0 :DL TX
  1939. * ADC 1 :DL RX
  1940. * ADC 2 :TEMP
  1941. * */
  1942. void ADC_Value_Get(){
  1943. 8001390: b590 push {r4, r7, lr}
  1944. 8001392: b083 sub sp, #12
  1945. 8001394: af00 add r7, sp, #0
  1946. uint16_t CalcRet = 0 ;
  1947. 8001396: 2300 movs r3, #0
  1948. 8001398: 80fb strh r3, [r7, #6]
  1949. uint16_t Tx_Det_Volt = ((ADC1value[0] * (3.3 / 4095))* 1000);
  1950. 800139a: 4b31 ldr r3, [pc, #196] ; (8001460 <ADC_Value_Get+0xd0>)
  1951. 800139c: 881b ldrh r3, [r3, #0]
  1952. 800139e: b29b uxth r3, r3
  1953. 80013a0: 4618 mov r0, r3
  1954. 80013a2: f7ff f88f bl 80004c4 <__aeabi_i2d>
  1955. 80013a6: a32c add r3, pc, #176 ; (adr r3, 8001458 <ADC_Value_Get+0xc8>)
  1956. 80013a8: e9d3 2300 ldrd r2, r3, [r3]
  1957. 80013ac: f7ff f8f4 bl 8000598 <__aeabi_dmul>
  1958. 80013b0: 4603 mov r3, r0
  1959. 80013b2: 460c mov r4, r1
  1960. 80013b4: 4618 mov r0, r3
  1961. 80013b6: 4621 mov r1, r4
  1962. 80013b8: f04f 0200 mov.w r2, #0
  1963. 80013bc: 4b29 ldr r3, [pc, #164] ; (8001464 <ADC_Value_Get+0xd4>)
  1964. 80013be: f7ff f8eb bl 8000598 <__aeabi_dmul>
  1965. 80013c2: 4603 mov r3, r0
  1966. 80013c4: 460c mov r4, r1
  1967. 80013c6: 4618 mov r0, r3
  1968. 80013c8: 4621 mov r1, r4
  1969. 80013ca: f7ff fbbd bl 8000b48 <__aeabi_d2uiz>
  1970. 80013ce: 4603 mov r3, r0
  1971. 80013d0: 80bb strh r3, [r7, #4]
  1972. uint16_t Rx_Det_Volt = ((ADC1value[1] * (3.3 / 4095))* 1000);
  1973. 80013d2: 4b23 ldr r3, [pc, #140] ; (8001460 <ADC_Value_Get+0xd0>)
  1974. 80013d4: 885b ldrh r3, [r3, #2]
  1975. 80013d6: b29b uxth r3, r3
  1976. 80013d8: 4618 mov r0, r3
  1977. 80013da: f7ff f873 bl 80004c4 <__aeabi_i2d>
  1978. 80013de: a31e add r3, pc, #120 ; (adr r3, 8001458 <ADC_Value_Get+0xc8>)
  1979. 80013e0: e9d3 2300 ldrd r2, r3, [r3]
  1980. 80013e4: f7ff f8d8 bl 8000598 <__aeabi_dmul>
  1981. 80013e8: 4603 mov r3, r0
  1982. 80013ea: 460c mov r4, r1
  1983. 80013ec: 4618 mov r0, r3
  1984. 80013ee: 4621 mov r1, r4
  1985. 80013f0: f04f 0200 mov.w r2, #0
  1986. 80013f4: 4b1b ldr r3, [pc, #108] ; (8001464 <ADC_Value_Get+0xd4>)
  1987. 80013f6: f7ff f8cf bl 8000598 <__aeabi_dmul>
  1988. 80013fa: 4603 mov r3, r0
  1989. 80013fc: 460c mov r4, r1
  1990. 80013fe: 4618 mov r0, r3
  1991. 8001400: 4621 mov r1, r4
  1992. 8001402: f7ff fba1 bl 8000b48 <__aeabi_d2uiz>
  1993. 8001406: 4603 mov r3, r0
  1994. 8001408: 807b strh r3, [r7, #2]
  1995. int8_t Real_Temperature = ADC_Convert_Temperature((ADC1value[2] * (3.3 / 4095)));
  1996. 800140a: 4b15 ldr r3, [pc, #84] ; (8001460 <ADC_Value_Get+0xd0>)
  1997. 800140c: 889b ldrh r3, [r3, #4]
  1998. 800140e: b29b uxth r3, r3
  1999. 8001410: 4618 mov r0, r3
  2000. 8001412: f7ff f857 bl 80004c4 <__aeabi_i2d>
  2001. 8001416: a310 add r3, pc, #64 ; (adr r3, 8001458 <ADC_Value_Get+0xc8>)
  2002. 8001418: e9d3 2300 ldrd r2, r3, [r3]
  2003. 800141c: f7ff f8bc bl 8000598 <__aeabi_dmul>
  2004. 8001420: 4603 mov r3, r0
  2005. 8001422: 460c mov r4, r1
  2006. 8001424: 4618 mov r0, r3
  2007. 8001426: 4621 mov r1, r4
  2008. 8001428: f000 f834 bl 8001494 <ADC_Convert_Temperature>
  2009. 800142c: 4603 mov r3, r0
  2010. 800142e: 707b strb r3, [r7, #1]
  2011. // Currstatus.DownLink_Forward_Det_H = ((Tx_Det_Volt & 0xFF00) >> 8);
  2012. // Currstatus.DownLink_Forward_Det_L = (Tx_Det_Volt & 0x00FF);
  2013. // printf("Tx_Det_Volt : %d \r\n",Tx_Det_Volt);
  2014. /*DL RX Calc*/
  2015. Currstatus.DownLink_Reverse_Det_H = ((Rx_Det_Volt & 0xFF00) >> 8);
  2016. 8001430: 887b ldrh r3, [r7, #2]
  2017. 8001432: 0a1b lsrs r3, r3, #8
  2018. 8001434: b29b uxth r3, r3
  2019. 8001436: b2da uxtb r2, r3
  2020. 8001438: 4b0b ldr r3, [pc, #44] ; (8001468 <ADC_Value_Get+0xd8>)
  2021. 800143a: 725a strb r2, [r3, #9]
  2022. Currstatus.DownLink_Reverse_Det_L = (Rx_Det_Volt & 0x00FF);
  2023. 800143c: 887b ldrh r3, [r7, #2]
  2024. 800143e: b2da uxtb r2, r3
  2025. 8001440: 4b09 ldr r3, [pc, #36] ; (8001468 <ADC_Value_Get+0xd8>)
  2026. 8001442: 729a strb r2, [r3, #10]
  2027. /*Temp Calc*/
  2028. Currstatus.Temp_Monitor = Real_Temperature;
  2029. 8001444: 787a ldrb r2, [r7, #1]
  2030. 8001446: 4b08 ldr r3, [pc, #32] ; (8001468 <ADC_Value_Get+0xd8>)
  2031. 8001448: 745a strb r2, [r3, #17]
  2032. }
  2033. 800144a: bf00 nop
  2034. 800144c: 370c adds r7, #12
  2035. 800144e: 46bd mov sp, r7
  2036. 8001450: bd90 pop {r4, r7, pc}
  2037. 8001452: bf00 nop
  2038. 8001454: f3af 8000 nop.w
  2039. 8001458: e734d9b4 .word 0xe734d9b4
  2040. 800145c: 3f4a680c .word 0x3f4a680c
  2041. 8001460: 200006c4 .word 0x200006c4
  2042. 8001464: 408f4000 .word 0x408f4000
  2043. 8001468: 200006ac .word 0x200006ac
  2044. 0800146c <ADC_Initialize>:
  2045. void ADC_Initialize(){
  2046. 800146c: b580 push {r7, lr}
  2047. 800146e: af00 add r7, sp, #0
  2048. while(!(HAL_ADCEx_Calibration_Start(&hadc1)==HAL_OK));
  2049. 8001470: bf00 nop
  2050. 8001472: 4806 ldr r0, [pc, #24] ; (800148c <ADC_Initialize+0x20>)
  2051. 8001474: f001 f910 bl 8002698 <HAL_ADCEx_Calibration_Start>
  2052. 8001478: 4603 mov r3, r0
  2053. 800147a: 2b00 cmp r3, #0
  2054. 800147c: d1f9 bne.n 8001472 <ADC_Initialize+0x6>
  2055. HAL_ADC_Start_DMA(&hadc1, (uint16_t*)ADC1value,(uint32_t) 3);
  2056. 800147e: 2203 movs r2, #3
  2057. 8001480: 4903 ldr r1, [pc, #12] ; (8001490 <ADC_Initialize+0x24>)
  2058. 8001482: 4802 ldr r0, [pc, #8] ; (800148c <ADC_Initialize+0x20>)
  2059. 8001484: f000 fda6 bl 8001fd4 <HAL_ADC_Start_DMA>
  2060. }
  2061. 8001488: bf00 nop
  2062. 800148a: bd80 pop {r7, pc}
  2063. 800148c: 20000a1c .word 0x20000a1c
  2064. 8001490: 200006c4 .word 0x200006c4
  2065. 08001494 <ADC_Convert_Temperature>:
  2066. uint8_t ADC_Convert_Temperature(double val){
  2067. 8001494: b590 push {r4, r7, lr}
  2068. 8001496: b087 sub sp, #28
  2069. 8001498: af00 add r7, sp, #0
  2070. 800149a: e9c7 0100 strd r0, r1, [r7]
  2071. int16_t ref_0temp = 500;
  2072. 800149e: f44f 73fa mov.w r3, #500 ; 0x1f4
  2073. 80014a2: 817b strh r3, [r7, #10]
  2074. int16_t ret = val * 1000;
  2075. 80014a4: f04f 0200 mov.w r2, #0
  2076. 80014a8: 4b27 ldr r3, [pc, #156] ; (8001548 <ADC_Convert_Temperature+0xb4>)
  2077. 80014aa: e9d7 0100 ldrd r0, r1, [r7]
  2078. 80014ae: f7ff f873 bl 8000598 <__aeabi_dmul>
  2079. 80014b2: 4603 mov r3, r0
  2080. 80014b4: 460c mov r4, r1
  2081. 80014b6: 4618 mov r0, r3
  2082. 80014b8: 4621 mov r1, r4
  2083. 80014ba: f7ff fb1d bl 8000af8 <__aeabi_d2iz>
  2084. 80014be: 4603 mov r3, r0
  2085. 80014c0: 813b strh r3, [r7, #8]
  2086. int8_t cnt = 0;
  2087. 80014c2: 2300 movs r3, #0
  2088. 80014c4: 75fb strb r3, [r7, #23]
  2089. printf("ret : %d \r\n", ret);
  2090. 80014c6: f9b7 3008 ldrsh.w r3, [r7, #8]
  2091. 80014ca: 4619 mov r1, r3
  2092. 80014cc: 481f ldr r0, [pc, #124] ; (800154c <ADC_Convert_Temperature+0xb8>)
  2093. 80014ce: f005 fa47 bl 8006960 <iprintf>
  2094. if( ret - ref_0temp > 0){
  2095. 80014d2: f9b7 2008 ldrsh.w r2, [r7, #8]
  2096. 80014d6: f9b7 300a ldrsh.w r3, [r7, #10]
  2097. 80014da: 1ad3 subs r3, r2, r3
  2098. 80014dc: 2b00 cmp r3, #0
  2099. 80014de: dd14 ble.n 800150a <ADC_Convert_Temperature+0x76>
  2100. for(int i = 0; i < ret - ref_0temp; i += 10){
  2101. 80014e0: 2300 movs r3, #0
  2102. 80014e2: 613b str r3, [r7, #16]
  2103. 80014e4: e008 b.n 80014f8 <ADC_Convert_Temperature+0x64>
  2104. cnt++;
  2105. 80014e6: f997 3017 ldrsb.w r3, [r7, #23]
  2106. 80014ea: b2db uxtb r3, r3
  2107. 80014ec: 3301 adds r3, #1
  2108. 80014ee: b2db uxtb r3, r3
  2109. 80014f0: 75fb strb r3, [r7, #23]
  2110. for(int i = 0; i < ret - ref_0temp; i += 10){
  2111. 80014f2: 693b ldr r3, [r7, #16]
  2112. 80014f4: 330a adds r3, #10
  2113. 80014f6: 613b str r3, [r7, #16]
  2114. 80014f8: f9b7 2008 ldrsh.w r2, [r7, #8]
  2115. 80014fc: f9b7 300a ldrsh.w r3, [r7, #10]
  2116. 8001500: 1ad3 subs r3, r2, r3
  2117. 8001502: 693a ldr r2, [r7, #16]
  2118. 8001504: 429a cmp r2, r3
  2119. 8001506: dbee blt.n 80014e6 <ADC_Convert_Temperature+0x52>
  2120. 8001508: e013 b.n 8001532 <ADC_Convert_Temperature+0x9e>
  2121. }
  2122. }else{
  2123. for(int i = 0; i > ret - ref_0temp; i -= 10){
  2124. 800150a: 2300 movs r3, #0
  2125. 800150c: 60fb str r3, [r7, #12]
  2126. 800150e: e008 b.n 8001522 <ADC_Convert_Temperature+0x8e>
  2127. cnt--;
  2128. 8001510: f997 3017 ldrsb.w r3, [r7, #23]
  2129. 8001514: b2db uxtb r3, r3
  2130. 8001516: 3b01 subs r3, #1
  2131. 8001518: b2db uxtb r3, r3
  2132. 800151a: 75fb strb r3, [r7, #23]
  2133. for(int i = 0; i > ret - ref_0temp; i -= 10){
  2134. 800151c: 68fb ldr r3, [r7, #12]
  2135. 800151e: 3b0a subs r3, #10
  2136. 8001520: 60fb str r3, [r7, #12]
  2137. 8001522: f9b7 2008 ldrsh.w r2, [r7, #8]
  2138. 8001526: f9b7 300a ldrsh.w r3, [r7, #10]
  2139. 800152a: 1ad3 subs r3, r2, r3
  2140. 800152c: 68fa ldr r2, [r7, #12]
  2141. 800152e: 429a cmp r2, r3
  2142. 8001530: dcee bgt.n 8001510 <ADC_Convert_Temperature+0x7c>
  2143. }
  2144. }
  2145. printf("Temp : %d\r\n",cnt);
  2146. 8001532: f997 3017 ldrsb.w r3, [r7, #23]
  2147. 8001536: 4619 mov r1, r3
  2148. 8001538: 4805 ldr r0, [pc, #20] ; (8001550 <ADC_Convert_Temperature+0xbc>)
  2149. 800153a: f005 fa11 bl 8006960 <iprintf>
  2150. return cnt;
  2151. 800153e: 7dfb ldrb r3, [r7, #23]
  2152. }
  2153. 8001540: 4618 mov r0, r3
  2154. 8001542: 371c adds r7, #28
  2155. 8001544: 46bd mov sp, r7
  2156. 8001546: bd90 pop {r4, r7, pc}
  2157. 8001548: 408f4000 .word 0x408f4000
  2158. 800154c: 08008a04 .word 0x08008a04
  2159. 8001550: 08008a10 .word 0x08008a10
  2160. 08001554 <SumFunc>:
  2161. uint32_t SumFunc(uint32_t* data,uint16_t size){
  2162. 8001554: b480 push {r7}
  2163. 8001556: b085 sub sp, #20
  2164. 8001558: af00 add r7, sp, #0
  2165. 800155a: 6078 str r0, [r7, #4]
  2166. 800155c: 460b mov r3, r1
  2167. 800155e: 807b strh r3, [r7, #2]
  2168. uint32_t ret = 0;
  2169. 8001560: 2300 movs r3, #0
  2170. 8001562: 60fb str r3, [r7, #12]
  2171. for (uint16_t i = 0; i < size; i++) // 배열의 요소 개수만큼 반복
  2172. 8001564: 2300 movs r3, #0
  2173. 8001566: 817b strh r3, [r7, #10]
  2174. 8001568: e00a b.n 8001580 <SumFunc+0x2c>
  2175. {
  2176. ret += data[i]; // sum과 배열의 요소를 더해서 다시 sum에 저장
  2177. 800156a: 897b ldrh r3, [r7, #10]
  2178. 800156c: 009b lsls r3, r3, #2
  2179. 800156e: 687a ldr r2, [r7, #4]
  2180. 8001570: 4413 add r3, r2
  2181. 8001572: 681b ldr r3, [r3, #0]
  2182. 8001574: 68fa ldr r2, [r7, #12]
  2183. 8001576: 4413 add r3, r2
  2184. 8001578: 60fb str r3, [r7, #12]
  2185. for (uint16_t i = 0; i < size; i++) // 배열의 요소 개수만큼 반복
  2186. 800157a: 897b ldrh r3, [r7, #10]
  2187. 800157c: 3301 adds r3, #1
  2188. 800157e: 817b strh r3, [r7, #10]
  2189. 8001580: 897a ldrh r2, [r7, #10]
  2190. 8001582: 887b ldrh r3, [r7, #2]
  2191. 8001584: 429a cmp r2, r3
  2192. 8001586: d3f0 bcc.n 800156a <SumFunc+0x16>
  2193. // printf("ret : %d data[%d] \r\n",ret,i,data[i]);
  2194. }
  2195. return ret;
  2196. 8001588: 68fb ldr r3, [r7, #12]
  2197. }
  2198. 800158a: 4618 mov r0, r3
  2199. 800158c: 3714 adds r7, #20
  2200. 800158e: 46bd mov sp, r7
  2201. 8001590: bc80 pop {r7}
  2202. 8001592: 4770 bx lr
  2203. 08001594 <DascendigFunc>:
  2204. void DascendigFunc(int32_t* src,uint32_t size ){
  2205. 8001594: b480 push {r7}
  2206. 8001596: b087 sub sp, #28
  2207. 8001598: af00 add r7, sp, #0
  2208. 800159a: 6078 str r0, [r7, #4]
  2209. 800159c: 6039 str r1, [r7, #0]
  2210. int32_t temp;
  2211. for(int i = 0 ; i < size - 1 ; i ++) {
  2212. 800159e: 2300 movs r3, #0
  2213. 80015a0: 617b str r3, [r7, #20]
  2214. 80015a2: e02f b.n 8001604 <DascendigFunc+0x70>
  2215. for(int j = i+1 ; j < size ; j ++) {
  2216. 80015a4: 697b ldr r3, [r7, #20]
  2217. 80015a6: 3301 adds r3, #1
  2218. 80015a8: 613b str r3, [r7, #16]
  2219. 80015aa: e024 b.n 80015f6 <DascendigFunc+0x62>
  2220. if(src[i] < src[j]) {
  2221. 80015ac: 697b ldr r3, [r7, #20]
  2222. 80015ae: 009b lsls r3, r3, #2
  2223. 80015b0: 687a ldr r2, [r7, #4]
  2224. 80015b2: 4413 add r3, r2
  2225. 80015b4: 681a ldr r2, [r3, #0]
  2226. 80015b6: 693b ldr r3, [r7, #16]
  2227. 80015b8: 009b lsls r3, r3, #2
  2228. 80015ba: 6879 ldr r1, [r7, #4]
  2229. 80015bc: 440b add r3, r1
  2230. 80015be: 681b ldr r3, [r3, #0]
  2231. 80015c0: 429a cmp r2, r3
  2232. 80015c2: da15 bge.n 80015f0 <DascendigFunc+0x5c>
  2233. temp = src[j];
  2234. 80015c4: 693b ldr r3, [r7, #16]
  2235. 80015c6: 009b lsls r3, r3, #2
  2236. 80015c8: 687a ldr r2, [r7, #4]
  2237. 80015ca: 4413 add r3, r2
  2238. 80015cc: 681b ldr r3, [r3, #0]
  2239. 80015ce: 60fb str r3, [r7, #12]
  2240. src[j] = src[i];
  2241. 80015d0: 697b ldr r3, [r7, #20]
  2242. 80015d2: 009b lsls r3, r3, #2
  2243. 80015d4: 687a ldr r2, [r7, #4]
  2244. 80015d6: 441a add r2, r3
  2245. 80015d8: 693b ldr r3, [r7, #16]
  2246. 80015da: 009b lsls r3, r3, #2
  2247. 80015dc: 6879 ldr r1, [r7, #4]
  2248. 80015de: 440b add r3, r1
  2249. 80015e0: 6812 ldr r2, [r2, #0]
  2250. 80015e2: 601a str r2, [r3, #0]
  2251. src[i] = temp;
  2252. 80015e4: 697b ldr r3, [r7, #20]
  2253. 80015e6: 009b lsls r3, r3, #2
  2254. 80015e8: 687a ldr r2, [r7, #4]
  2255. 80015ea: 4413 add r3, r2
  2256. 80015ec: 68fa ldr r2, [r7, #12]
  2257. 80015ee: 601a str r2, [r3, #0]
  2258. for(int j = i+1 ; j < size ; j ++) {
  2259. 80015f0: 693b ldr r3, [r7, #16]
  2260. 80015f2: 3301 adds r3, #1
  2261. 80015f4: 613b str r3, [r7, #16]
  2262. 80015f6: 693b ldr r3, [r7, #16]
  2263. 80015f8: 683a ldr r2, [r7, #0]
  2264. 80015fa: 429a cmp r2, r3
  2265. 80015fc: d8d6 bhi.n 80015ac <DascendigFunc+0x18>
  2266. for(int i = 0 ; i < size - 1 ; i ++) {
  2267. 80015fe: 697b ldr r3, [r7, #20]
  2268. 8001600: 3301 adds r3, #1
  2269. 8001602: 617b str r3, [r7, #20]
  2270. 8001604: 683b ldr r3, [r7, #0]
  2271. 8001606: 1e5a subs r2, r3, #1
  2272. 8001608: 697b ldr r3, [r7, #20]
  2273. 800160a: 429a cmp r2, r3
  2274. 800160c: d8ca bhi.n 80015a4 <DascendigFunc+0x10>
  2275. // printf("temp");
  2276. }
  2277. }
  2278. }
  2279. }
  2280. 800160e: bf00 nop
  2281. 8001610: 371c adds r7, #28
  2282. 8001612: 46bd mov sp, r7
  2283. 8001614: bc80 pop {r7}
  2284. 8001616: 4770 bx lr
  2285. 08001618 <ADC_Check>:
  2286. #define Percent100 5
  2287. void ADC_Check(){
  2288. 8001618: b580 push {r7, lr}
  2289. 800161a: b082 sub sp, #8
  2290. 800161c: af00 add r7, sp, #0
  2291. float tempval = 0;
  2292. 800161e: f04f 0300 mov.w r3, #0
  2293. 8001622: 603b str r3, [r7, #0]
  2294. for(int i = 0; i < 3 ; i++)
  2295. 8001624: 2300 movs r3, #0
  2296. 8001626: 607b str r3, [r7, #4]
  2297. 8001628: e00c b.n 8001644 <ADC_Check+0x2c>
  2298. printf("ADC1value[%d] : %d \r\n",i,ADC1value[i]);
  2299. 800162a: 4a0b ldr r2, [pc, #44] ; (8001658 <ADC_Check+0x40>)
  2300. 800162c: 687b ldr r3, [r7, #4]
  2301. 800162e: f832 3013 ldrh.w r3, [r2, r3, lsl #1]
  2302. 8001632: b29b uxth r3, r3
  2303. 8001634: 461a mov r2, r3
  2304. 8001636: 6879 ldr r1, [r7, #4]
  2305. 8001638: 4808 ldr r0, [pc, #32] ; (800165c <ADC_Check+0x44>)
  2306. 800163a: f005 f991 bl 8006960 <iprintf>
  2307. for(int i = 0; i < 3 ; i++)
  2308. 800163e: 687b ldr r3, [r7, #4]
  2309. 8001640: 3301 adds r3, #1
  2310. 8001642: 607b str r3, [r7, #4]
  2311. 8001644: 687b ldr r3, [r7, #4]
  2312. 8001646: 2b02 cmp r3, #2
  2313. 8001648: ddef ble.n 800162a <ADC_Check+0x12>
  2314. Currstatus.DownLink_Forward_Det_H
  2315. = (((uint16_t)tempval & 0xFF00) >> 8);
  2316. Currstatus.DownLink_Forward_Det_L
  2317. = (((uint16_t)tempval & 0x00FF) );
  2318. #endif // PYJ.2020.09.09_END --
  2319. ADC_Value_Get();
  2320. 800164a: f7ff fea1 bl 8001390 <ADC_Value_Get>
  2321. // Currstatus.Temp_Monitor = ADC_Convert_Temperature((ADC1value[2]/1000));
  2322. // printf("Currstatus.DownLink_Forward_Det : %d \r\n",Currstatus.DownLink_Forward_Det_H << 8 | Currstatus.DownLink_Forward_Det_L);
  2323. }
  2324. 800164e: bf00 nop
  2325. 8001650: 3708 adds r7, #8
  2326. 8001652: 46bd mov sp, r7
  2327. 8001654: bd80 pop {r7, pc}
  2328. 8001656: bf00 nop
  2329. 8001658: 200006c4 .word 0x200006c4
  2330. 800165c: 08008a1c .word 0x08008a1c
  2331. 08001660 <ADC_TDD_Arrange>:
  2332. void ADC_TDD_Arrange(){
  2333. 8001660: b580 push {r7, lr}
  2334. 8001662: b082 sub sp, #8
  2335. 8001664: af00 add r7, sp, #0
  2336. uint32_t ADC1_Average_value = 0;
  2337. 8001666: 2300 movs r3, #0
  2338. 8001668: 603b str r3, [r7, #0]
  2339. if(TDD_125ms_Cnt > 125)
  2340. 800166a: 4b1b ldr r3, [pc, #108] ; (80016d8 <ADC_TDD_Arrange+0x78>)
  2341. 800166c: 681b ldr r3, [r3, #0]
  2342. 800166e: 2b7d cmp r3, #125 ; 0x7d
  2343. 8001670: d92d bls.n 80016ce <ADC_TDD_Arrange+0x6e>
  2344. {
  2345. // printf("================TotalCnt %d =================\r\n",TotalCnt);
  2346. #if 1 // PYJ.2020.09.09_BEGIN --
  2347. DascendigFunc(&ADC1_Arrage_Ret[0],ADC_AVERAGECNT);
  2348. 8001672: 2164 movs r1, #100 ; 0x64
  2349. 8001674: 4819 ldr r0, [pc, #100] ; (80016dc <ADC_TDD_Arrange+0x7c>)
  2350. 8001676: f7ff ff8d bl 8001594 <DascendigFunc>
  2351. // for(int i = 0; i < 100; i++){/*ADC Data Dascending Complete*/
  2352. // printf("ADC1_Arrage_Ret[%d] : %d \r\n",i,ADC1_Arrage_Ret[i]);
  2353. // }
  2354. ADC1_Average_value = SumFunc(&ADC1_Arrage_Ret[0],Percent100);
  2355. 800167a: 2105 movs r1, #5
  2356. 800167c: 4817 ldr r0, [pc, #92] ; (80016dc <ADC_TDD_Arrange+0x7c>)
  2357. 800167e: f7ff ff69 bl 8001554 <SumFunc>
  2358. 8001682: 6038 str r0, [r7, #0]
  2359. // printf("ADC1_Average_value Sum : %d \r\n",ADC1_Average_value);
  2360. ADC1_Average_value /=Percent100;
  2361. 8001684: 683b ldr r3, [r7, #0]
  2362. 8001686: 4a16 ldr r2, [pc, #88] ; (80016e0 <ADC_TDD_Arrange+0x80>)
  2363. 8001688: fba2 2303 umull r2, r3, r2, r3
  2364. 800168c: 089b lsrs r3, r3, #2
  2365. 800168e: 603b str r3, [r7, #0]
  2366. // printf("ADC1_Average_value : %d \r\n",ADC1_Average_value);
  2367. for(int i = 0; i < ADC_AVERAGECNT; i++){
  2368. 8001690: 2300 movs r3, #0
  2369. 8001692: 607b str r3, [r7, #4]
  2370. 8001694: e007 b.n 80016a6 <ADC_TDD_Arrange+0x46>
  2371. ADC1_Arrage_Ret[i] = 0;
  2372. 8001696: 4a11 ldr r2, [pc, #68] ; (80016dc <ADC_TDD_Arrange+0x7c>)
  2373. 8001698: 687b ldr r3, [r7, #4]
  2374. 800169a: 2100 movs r1, #0
  2375. 800169c: f842 1023 str.w r1, [r2, r3, lsl #2]
  2376. for(int i = 0; i < ADC_AVERAGECNT; i++){
  2377. 80016a0: 687b ldr r3, [r7, #4]
  2378. 80016a2: 3301 adds r3, #1
  2379. 80016a4: 607b str r3, [r7, #4]
  2380. 80016a6: 687b ldr r3, [r7, #4]
  2381. 80016a8: 2b63 cmp r3, #99 ; 0x63
  2382. 80016aa: ddf4 ble.n 8001696 <ADC_TDD_Arrange+0x36>
  2383. }
  2384. Currstatus.DownLink_Forward_Det_H
  2385. = (((uint16_t)ADC1_Average_value & 0xFF00) >> 8);
  2386. 80016ac: 683b ldr r3, [r7, #0]
  2387. 80016ae: b29b uxth r3, r3
  2388. 80016b0: 0a1b lsrs r3, r3, #8
  2389. 80016b2: b29b uxth r3, r3
  2390. 80016b4: b2da uxtb r2, r3
  2391. 80016b6: 4b0b ldr r3, [pc, #44] ; (80016e4 <ADC_TDD_Arrange+0x84>)
  2392. 80016b8: 71da strb r2, [r3, #7]
  2393. Currstatus.DownLink_Forward_Det_L
  2394. = (((uint16_t)ADC1_Average_value & 0x00FF) );
  2395. 80016ba: 683b ldr r3, [r7, #0]
  2396. 80016bc: b2da uxtb r2, r3
  2397. 80016be: 4b09 ldr r3, [pc, #36] ; (80016e4 <ADC_TDD_Arrange+0x84>)
  2398. 80016c0: 721a strb r2, [r3, #8]
  2399. ADC1_Arrage_Ret[i] = ADC1_Arrage[i];
  2400. }
  2401. #endif // PYJ.2020.09.09_END --
  2402. TotalCnt = 0;
  2403. 80016c2: 4b09 ldr r3, [pc, #36] ; (80016e8 <ADC_TDD_Arrange+0x88>)
  2404. 80016c4: 2200 movs r2, #0
  2405. 80016c6: 601a str r2, [r3, #0]
  2406. TDD_125ms_Cnt = 0;
  2407. 80016c8: 4b03 ldr r3, [pc, #12] ; (80016d8 <ADC_TDD_Arrange+0x78>)
  2408. 80016ca: 2200 movs r2, #0
  2409. 80016cc: 601a str r2, [r3, #0]
  2410. }
  2411. }
  2412. 80016ce: bf00 nop
  2413. 80016d0: 3708 adds r7, #8
  2414. 80016d2: 46bd mov sp, r7
  2415. 80016d4: bd80 pop {r7, pc}
  2416. 80016d6: bf00 nop
  2417. 80016d8: 20000634 .word 0x20000634
  2418. 80016dc: 20000458 .word 0x20000458
  2419. 80016e0: cccccccd .word 0xcccccccd
  2420. 80016e4: 200006ac .word 0x200006ac
  2421. 80016e8: 200005ec .word 0x200005ec
  2422. 080016ec <HAL_ADC_ConvCpltCallback>:
  2423. void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
  2424. {
  2425. 80016ec: b580 push {r7, lr}
  2426. 80016ee: b084 sub sp, #16
  2427. 80016f0: af00 add r7, sp, #0
  2428. 80016f2: 6078 str r0, [r7, #4]
  2429. if(hadc->Instance == hadc1.Instance && TDD_125ms_Cnt < 125)
  2430. 80016f4: 687b ldr r3, [r7, #4]
  2431. 80016f6: 681a ldr r2, [r3, #0]
  2432. 80016f8: 4b27 ldr r3, [pc, #156] ; (8001798 <HAL_ADC_ConvCpltCallback+0xac>)
  2433. 80016fa: 681b ldr r3, [r3, #0]
  2434. 80016fc: 429a cmp r2, r3
  2435. 80016fe: d147 bne.n 8001790 <HAL_ADC_ConvCpltCallback+0xa4>
  2436. 8001700: 4b26 ldr r3, [pc, #152] ; (800179c <HAL_ADC_ConvCpltCallback+0xb0>)
  2437. 8001702: 681b ldr r3, [r3, #0]
  2438. 8001704: 2b7c cmp r3, #124 ; 0x7c
  2439. 8001706: d843 bhi.n 8001790 <HAL_ADC_ConvCpltCallback+0xa4>
  2440. {
  2441. ADC1_Arrage[adc1cnt] = ADC1value[0];
  2442. 8001708: 4b25 ldr r3, [pc, #148] ; (80017a0 <HAL_ADC_ConvCpltCallback+0xb4>)
  2443. 800170a: 881b ldrh r3, [r3, #0]
  2444. 800170c: 461a mov r2, r3
  2445. 800170e: 4b25 ldr r3, [pc, #148] ; (80017a4 <HAL_ADC_ConvCpltCallback+0xb8>)
  2446. 8001710: 881b ldrh r3, [r3, #0]
  2447. 8001712: b299 uxth r1, r3
  2448. 8001714: 4b24 ldr r3, [pc, #144] ; (80017a8 <HAL_ADC_ConvCpltCallback+0xbc>)
  2449. 8001716: f823 1012 strh.w r1, [r3, r2, lsl #1]
  2450. // for(int i = 0; i < 2; i++){
  2451. // printf("ADC1value[%d] : %d , %f\r\n",i,ADC1value[i],(float)((ADC1value[i]) *3.3 /4095));
  2452. // }
  2453. adc1cnt++;
  2454. 800171a: 4b21 ldr r3, [pc, #132] ; (80017a0 <HAL_ADC_ConvCpltCallback+0xb4>)
  2455. 800171c: 881b ldrh r3, [r3, #0]
  2456. 800171e: 3301 adds r3, #1
  2457. 8001720: b29a uxth r2, r3
  2458. 8001722: 4b1f ldr r3, [pc, #124] ; (80017a0 <HAL_ADC_ConvCpltCallback+0xb4>)
  2459. 8001724: 801a strh r2, [r3, #0]
  2460. if(adc1cnt == ADC_AVERAGECNT){
  2461. 8001726: 4b1e ldr r3, [pc, #120] ; (80017a0 <HAL_ADC_ConvCpltCallback+0xb4>)
  2462. 8001728: 881b ldrh r3, [r3, #0]
  2463. 800172a: 2b64 cmp r3, #100 ; 0x64
  2464. 800172c: d130 bne.n 8001790 <HAL_ADC_ConvCpltCallback+0xa4>
  2465. // DascendigFunc(&ADC1_Arrage[0],ADC_AVERAGECNT);
  2466. adc1cnt = 0;
  2467. 800172e: 4b1c ldr r3, [pc, #112] ; (80017a0 <HAL_ADC_ConvCpltCallback+0xb4>)
  2468. 8001730: 2200 movs r2, #0
  2469. 8001732: 801a strh r2, [r3, #0]
  2470. TotalCnt++;
  2471. 8001734: 4b1d ldr r3, [pc, #116] ; (80017ac <HAL_ADC_ConvCpltCallback+0xc0>)
  2472. 8001736: 681b ldr r3, [r3, #0]
  2473. 8001738: 3301 adds r3, #1
  2474. 800173a: 4a1c ldr r2, [pc, #112] ; (80017ac <HAL_ADC_ConvCpltCallback+0xc0>)
  2475. 800173c: 6013 str r3, [r2, #0]
  2476. if(TotalCnt > 2)
  2477. 800173e: 4b1b ldr r3, [pc, #108] ; (80017ac <HAL_ADC_ConvCpltCallback+0xc0>)
  2478. 8001740: 681b ldr r3, [r3, #0]
  2479. 8001742: 2b02 cmp r3, #2
  2480. 8001744: d902 bls.n 800174c <HAL_ADC_ConvCpltCallback+0x60>
  2481. TotalCnt = 2;
  2482. 8001746: 4b19 ldr r3, [pc, #100] ; (80017ac <HAL_ADC_ConvCpltCallback+0xc0>)
  2483. 8001748: 2202 movs r2, #2
  2484. 800174a: 601a str r2, [r3, #0]
  2485. for(int i = 0; i < 100; i++){/*ADC Data Dascending Complete*/
  2486. 800174c: 2300 movs r3, #0
  2487. 800174e: 60fb str r3, [r7, #12]
  2488. 8001750: e017 b.n 8001782 <HAL_ADC_ConvCpltCallback+0x96>
  2489. if(ADC1_Arrage_Ret[i] <= ADC1_Arrage[i])
  2490. 8001752: 4a17 ldr r2, [pc, #92] ; (80017b0 <HAL_ADC_ConvCpltCallback+0xc4>)
  2491. 8001754: 68fb ldr r3, [r7, #12]
  2492. 8001756: f852 3023 ldr.w r3, [r2, r3, lsl #2]
  2493. 800175a: 4913 ldr r1, [pc, #76] ; (80017a8 <HAL_ADC_ConvCpltCallback+0xbc>)
  2494. 800175c: 68fa ldr r2, [r7, #12]
  2495. 800175e: f831 2012 ldrh.w r2, [r1, r2, lsl #1]
  2496. 8001762: b292 uxth r2, r2
  2497. 8001764: 4293 cmp r3, r2
  2498. 8001766: d809 bhi.n 800177c <HAL_ADC_ConvCpltCallback+0x90>
  2499. ADC1_Arrage_Ret[i] = ADC1_Arrage[i];
  2500. 8001768: 4a0f ldr r2, [pc, #60] ; (80017a8 <HAL_ADC_ConvCpltCallback+0xbc>)
  2501. 800176a: 68fb ldr r3, [r7, #12]
  2502. 800176c: f832 3013 ldrh.w r3, [r2, r3, lsl #1]
  2503. 8001770: b29b uxth r3, r3
  2504. 8001772: 4619 mov r1, r3
  2505. 8001774: 4a0e ldr r2, [pc, #56] ; (80017b0 <HAL_ADC_ConvCpltCallback+0xc4>)
  2506. 8001776: 68fb ldr r3, [r7, #12]
  2507. 8001778: f842 1023 str.w r1, [r2, r3, lsl #2]
  2508. for(int i = 0; i < 100; i++){/*ADC Data Dascending Complete*/
  2509. 800177c: 68fb ldr r3, [r7, #12]
  2510. 800177e: 3301 adds r3, #1
  2511. 8001780: 60fb str r3, [r7, #12]
  2512. 8001782: 68fb ldr r3, [r7, #12]
  2513. 8001784: 2b63 cmp r3, #99 ; 0x63
  2514. 8001786: dde4 ble.n 8001752 <HAL_ADC_ConvCpltCallback+0x66>
  2515. }
  2516. DascendigFunc(&ADC1_Arrage_Ret[0],ADC_AVERAGECNT);
  2517. 8001788: 2164 movs r1, #100 ; 0x64
  2518. 800178a: 4809 ldr r0, [pc, #36] ; (80017b0 <HAL_ADC_ConvCpltCallback+0xc4>)
  2519. 800178c: f7ff ff02 bl 8001594 <DascendigFunc>
  2520. // ADC1valuearray[i][adc1cnt] = ADC1value[i];
  2521. // }
  2522. // adc1cnt++;
  2523. // }
  2524. }
  2525. }
  2526. 8001790: bf00 nop
  2527. 8001792: 3710 adds r7, #16
  2528. 8001794: 46bd mov sp, r7
  2529. 8001796: bd80 pop {r7, pc}
  2530. 8001798: 20000a1c .word 0x20000a1c
  2531. 800179c: 20000634 .word 0x20000634
  2532. 80017a0: 200005e8 .word 0x200005e8
  2533. 80017a4: 200006c4 .word 0x200006c4
  2534. 80017a8: 20000390 .word 0x20000390
  2535. 80017ac: 200005ec .word 0x200005ec
  2536. 80017b0: 20000458 .word 0x20000458
  2537. 080017b4 <NessLab_Checksum>:
  2538. crcret ^ ~0U;
  2539. return (crcret == checksum ? CHECKSUM_ERROR : NO_ERROR);
  2540. }
  2541. uint8_t NessLab_Checksum(uint8_t *data,uint8_t size){
  2542. 80017b4: b480 push {r7}
  2543. 80017b6: b085 sub sp, #20
  2544. 80017b8: af00 add r7, sp, #0
  2545. 80017ba: 6078 str r0, [r7, #4]
  2546. 80017bc: 460b mov r3, r1
  2547. 80017be: 70fb strb r3, [r7, #3]
  2548. uint16_t ret = 0;
  2549. 80017c0: 2300 movs r3, #0
  2550. 80017c2: 81fb strh r3, [r7, #14]
  2551. // printf("Crc Process : ");
  2552. for(int i = 0; i < size; i++){
  2553. 80017c4: 2300 movs r3, #0
  2554. 80017c6: 60bb str r3, [r7, #8]
  2555. 80017c8: e00c b.n 80017e4 <NessLab_Checksum+0x30>
  2556. ret = ((ret + data[i]) & 0xFF);
  2557. 80017ca: 68bb ldr r3, [r7, #8]
  2558. 80017cc: 687a ldr r2, [r7, #4]
  2559. 80017ce: 4413 add r3, r2
  2560. 80017d0: 781b ldrb r3, [r3, #0]
  2561. 80017d2: b29a uxth r2, r3
  2562. 80017d4: 89fb ldrh r3, [r7, #14]
  2563. 80017d6: 4413 add r3, r2
  2564. 80017d8: b29b uxth r3, r3
  2565. 80017da: b2db uxtb r3, r3
  2566. 80017dc: 81fb strh r3, [r7, #14]
  2567. for(int i = 0; i < size; i++){
  2568. 80017de: 68bb ldr r3, [r7, #8]
  2569. 80017e0: 3301 adds r3, #1
  2570. 80017e2: 60bb str r3, [r7, #8]
  2571. 80017e4: 78fb ldrb r3, [r7, #3]
  2572. 80017e6: 68ba ldr r2, [r7, #8]
  2573. 80017e8: 429a cmp r2, r3
  2574. 80017ea: dbee blt.n 80017ca <NessLab_Checksum+0x16>
  2575. // printf(" %x + %x \r\n",ret,data[i]);
  2576. }
  2577. // printf("Result : ");
  2578. ret = (~ret) + 1;
  2579. 80017ec: 89fb ldrh r3, [r7, #14]
  2580. 80017ee: 425b negs r3, r3
  2581. 80017f0: 81fb strh r3, [r7, #14]
  2582. // printf("ret [i] : %x \r\n",ret);
  2583. return (uint8_t)(ret & 0x00FF);
  2584. 80017f2: 89fb ldrh r3, [r7, #14]
  2585. 80017f4: b2db uxtb r3, r3
  2586. }
  2587. 80017f6: 4618 mov r0, r3
  2588. 80017f8: 3714 adds r7, #20
  2589. 80017fa: 46bd mov sp, r7
  2590. 80017fc: bc80 pop {r7}
  2591. 80017fe: 4770 bx lr
  2592. 08001800 <NessLab_CheckSum_Check>:
  2593. bool NessLab_CheckSum_Check(uint8_t* data,uint8_t size,uint8_t checksum){
  2594. 8001800: b580 push {r7, lr}
  2595. 8001802: b084 sub sp, #16
  2596. 8001804: af00 add r7, sp, #0
  2597. 8001806: 6078 str r0, [r7, #4]
  2598. 8001808: 460b mov r3, r1
  2599. 800180a: 70fb strb r3, [r7, #3]
  2600. 800180c: 4613 mov r3, r2
  2601. 800180e: 70bb strb r3, [r7, #2]
  2602. uint8_t dataret = 0;
  2603. 8001810: 2300 movs r3, #0
  2604. 8001812: 73fb strb r3, [r7, #15]
  2605. bool ret = false;
  2606. 8001814: 2300 movs r3, #0
  2607. 8001816: 73bb strb r3, [r7, #14]
  2608. // printf("size : %d \r\n",size);
  2609. for(int i = 0; i < size; i++){
  2610. 8001818: 2300 movs r3, #0
  2611. 800181a: 60bb str r3, [r7, #8]
  2612. 800181c: e009 b.n 8001832 <NessLab_CheckSum_Check+0x32>
  2613. dataret += data[i];
  2614. 800181e: 68bb ldr r3, [r7, #8]
  2615. 8001820: 687a ldr r2, [r7, #4]
  2616. 8001822: 4413 add r3, r2
  2617. 8001824: 781a ldrb r2, [r3, #0]
  2618. 8001826: 7bfb ldrb r3, [r7, #15]
  2619. 8001828: 4413 add r3, r2
  2620. 800182a: 73fb strb r3, [r7, #15]
  2621. for(int i = 0; i < size; i++){
  2622. 800182c: 68bb ldr r3, [r7, #8]
  2623. 800182e: 3301 adds r3, #1
  2624. 8001830: 60bb str r3, [r7, #8]
  2625. 8001832: 78fb ldrb r3, [r7, #3]
  2626. 8001834: 68ba ldr r2, [r7, #8]
  2627. 8001836: 429a cmp r2, r3
  2628. 8001838: dbf1 blt.n 800181e <NessLab_CheckSum_Check+0x1e>
  2629. // printf("data [i] : %x \r\n",data[i]);
  2630. }
  2631. dataret = (~dataret) + 1;
  2632. 800183a: 7bfb ldrb r3, [r7, #15]
  2633. 800183c: 425b negs r3, r3
  2634. 800183e: 73fb strb r3, [r7, #15]
  2635. printf("\r\ndataret : %x /// checksum : %x \r\n",dataret,checksum);
  2636. 8001840: 7bfb ldrb r3, [r7, #15]
  2637. 8001842: 78ba ldrb r2, [r7, #2]
  2638. 8001844: 4619 mov r1, r3
  2639. 8001846: 4808 ldr r0, [pc, #32] ; (8001868 <NessLab_CheckSum_Check+0x68>)
  2640. 8001848: f005 f88a bl 8006960 <iprintf>
  2641. if(dataret != checksum){
  2642. 800184c: 7bfa ldrb r2, [r7, #15]
  2643. 800184e: 78bb ldrb r3, [r7, #2]
  2644. 8001850: 429a cmp r2, r3
  2645. 8001852: d002 beq.n 800185a <NessLab_CheckSum_Check+0x5a>
  2646. ret = false;
  2647. 8001854: 2300 movs r3, #0
  2648. 8001856: 73bb strb r3, [r7, #14]
  2649. 8001858: e001 b.n 800185e <NessLab_CheckSum_Check+0x5e>
  2650. }else{
  2651. ret = true;
  2652. 800185a: 2301 movs r3, #1
  2653. 800185c: 73bb strb r3, [r7, #14]
  2654. }
  2655. return ret;
  2656. 800185e: 7bbb ldrb r3, [r7, #14]
  2657. }
  2658. 8001860: 4618 mov r0, r3
  2659. 8001862: 3710 adds r7, #16
  2660. 8001864: 46bd mov sp, r7
  2661. 8001866: bd80 pop {r7, pc}
  2662. 8001868: 08008a34 .word 0x08008a34
  2663. 0800186c <DataErase_Func>:
  2664. __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
  2665. jump_to_app();
  2666. }
  2667. bool EraseInit = false;
  2668. void DataErase_Func(uint32_t User_Address,uint32_t size){
  2669. 800186c: b580 push {r7, lr}
  2670. 800186e: b082 sub sp, #8
  2671. 8001870: af00 add r7, sp, #0
  2672. 8001872: 6078 str r0, [r7, #4]
  2673. 8001874: 6039 str r1, [r7, #0]
  2674. static FLASH_EraseInitTypeDef EraseInitStruct;
  2675. static uint32_t PAGEError = 0;
  2676. HAL_FLASH_Unlock();
  2677. 8001876: f001 fb69 bl 8002f4c <HAL_FLASH_Unlock>
  2678. EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
  2679. 800187a: 4b1b ldr r3, [pc, #108] ; (80018e8 <DataErase_Func+0x7c>)
  2680. 800187c: 2200 movs r2, #0
  2681. 800187e: 601a str r2, [r3, #0]
  2682. EraseInitStruct.PageAddress = FLASH_USER_USE_START_ADDR;
  2683. 8001880: 4b19 ldr r3, [pc, #100] ; (80018e8 <DataErase_Func+0x7c>)
  2684. 8001882: 4a1a ldr r2, [pc, #104] ; (80018ec <DataErase_Func+0x80>)
  2685. 8001884: 609a str r2, [r3, #8]
  2686. EraseInitStruct.NbPages = ((FLASH_USER_END_ADDR - FLASH_USER_USE_START_ADDR) / FLASH_PAGE_SIZE) + 1;
  2687. 8001886: 4b18 ldr r3, [pc, #96] ; (80018e8 <DataErase_Func+0x7c>)
  2688. 8001888: 2201 movs r2, #1
  2689. 800188a: 60da str r2, [r3, #12]
  2690. UserAddress = User_Address;
  2691. 800188c: 4a18 ldr r2, [pc, #96] ; (80018f0 <DataErase_Func+0x84>)
  2692. 800188e: 687b ldr r3, [r7, #4]
  2693. 8001890: 6013 str r3, [r2, #0]
  2694. printf("NbPages : %x \r\n",EraseInitStruct.NbPages );
  2695. 8001892: 4b15 ldr r3, [pc, #84] ; (80018e8 <DataErase_Func+0x7c>)
  2696. 8001894: 68db ldr r3, [r3, #12]
  2697. 8001896: 4619 mov r1, r3
  2698. 8001898: 4816 ldr r0, [pc, #88] ; (80018f4 <DataErase_Func+0x88>)
  2699. 800189a: f005 f861 bl 8006960 <iprintf>
  2700. printf("EraseInitStruct.PageAddress : %x \r\n",EraseInitStruct.PageAddress);
  2701. 800189e: 4b12 ldr r3, [pc, #72] ; (80018e8 <DataErase_Func+0x7c>)
  2702. 80018a0: 689b ldr r3, [r3, #8]
  2703. 80018a2: 4619 mov r1, r3
  2704. 80018a4: 4814 ldr r0, [pc, #80] ; (80018f8 <DataErase_Func+0x8c>)
  2705. 80018a6: f005 f85b bl 8006960 <iprintf>
  2706. printf("Erase Start\r\n");
  2707. 80018aa: 4814 ldr r0, [pc, #80] ; (80018fc <DataErase_Func+0x90>)
  2708. 80018ac: f005 f8cc bl 8006a48 <puts>
  2709. if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK)
  2710. 80018b0: 4913 ldr r1, [pc, #76] ; (8001900 <DataErase_Func+0x94>)
  2711. 80018b2: 480d ldr r0, [pc, #52] ; (80018e8 <DataErase_Func+0x7c>)
  2712. 80018b4: f001 fc32 bl 800311c <HAL_FLASHEx_Erase>
  2713. 80018b8: 4603 mov r3, r0
  2714. 80018ba: 2b00 cmp r3, #0
  2715. 80018bc: d007 beq.n 80018ce <DataErase_Func+0x62>
  2716. */
  2717. /* Infinite loop */
  2718. while (1)
  2719. {
  2720. /* Make LED2 blink (100ms on, 2s off) to indicate error in Erase operation */
  2721. printf("HAL_FLASHEx_Erase Error\r\n");
  2722. 80018be: 4811 ldr r0, [pc, #68] ; (8001904 <DataErase_Func+0x98>)
  2723. 80018c0: f005 f8c2 bl 8006a48 <puts>
  2724. HAL_Delay(2000);
  2725. 80018c4: f44f 60fa mov.w r0, #2000 ; 0x7d0
  2726. 80018c8: f000 fa8a bl 8001de0 <HAL_Delay>
  2727. printf("HAL_FLASHEx_Erase Error\r\n");
  2728. 80018cc: e7f7 b.n 80018be <DataErase_Func+0x52>
  2729. }
  2730. }
  2731. EraseInit = true;
  2732. 80018ce: 4b0e ldr r3, [pc, #56] ; (8001908 <DataErase_Func+0x9c>)
  2733. 80018d0: 2201 movs r2, #1
  2734. 80018d2: 701a strb r2, [r3, #0]
  2735. printf("Erase End\r\n");
  2736. 80018d4: 480d ldr r0, [pc, #52] ; (800190c <DataErase_Func+0xa0>)
  2737. 80018d6: f005 f8b7 bl 8006a48 <puts>
  2738. HAL_FLASH_Lock();
  2739. 80018da: f001 fb5d bl 8002f98 <HAL_FLASH_Lock>
  2740. }
  2741. 80018de: bf00 nop
  2742. 80018e0: 3708 adds r7, #8
  2743. 80018e2: 46bd mov sp, r7
  2744. 80018e4: bd80 pop {r7, pc}
  2745. 80018e6: bf00 nop
  2746. 80018e8: 200005f8 .word 0x200005f8
  2747. 80018ec: 0800ff38 .word 0x0800ff38
  2748. 80018f0: 200005f0 .word 0x200005f0
  2749. 80018f4: 08008a74 .word 0x08008a74
  2750. 80018f8: 08008a84 .word 0x08008a84
  2751. 80018fc: 08008aa8 .word 0x08008aa8
  2752. 8001900: 20000608 .word 0x20000608
  2753. 8001904: 08008ab8 .word 0x08008ab8
  2754. 8001908: 200005f4 .word 0x200005f4
  2755. 800190c: 08008ad4 .word 0x08008ad4
  2756. 08001910 <FLASH_Write_Func>:
  2757. uint8_t FLASH_Write_Func(uint32_t User_Address,uint8_t* data,uint32_t size){
  2758. 8001910: b590 push {r4, r7, lr}
  2759. 8001912: b08b sub sp, #44 ; 0x2c
  2760. 8001914: af00 add r7, sp, #0
  2761. 8001916: 60f8 str r0, [r7, #12]
  2762. 8001918: 60b9 str r1, [r7, #8]
  2763. 800191a: 607a str r2, [r7, #4]
  2764. //static FLASH_EraseInitTypeDef EraseInitStruct;
  2765. //static uint32_t PAGEError = 0;
  2766. static uint32_t DownloadIndex;
  2767. static __IO uint32_t data32 = 0 , MemoryProgramStatus = 0;
  2768. int dataindex = 0;
  2769. 800191c: 2300 movs r3, #0
  2770. 800191e: 623b str r3, [r7, #32]
  2771. uint32_t writedata = 0;
  2772. 8001920: 2300 movs r3, #0
  2773. 8001922: 61fb str r3, [r7, #28]
  2774. uint32_t CurrApiAddress = 0;
  2775. 8001924: 2300 movs r3, #0
  2776. 8001926: 61bb str r3, [r7, #24]
  2777. uint8_t ret = 0;
  2778. 8001928: 2300 movs r3, #0
  2779. 800192a: 75fb strb r3, [r7, #23]
  2780. CurrApiAddress = User_Address;
  2781. 800192c: 68fb ldr r3, [r7, #12]
  2782. 800192e: 61bb str r3, [r7, #24]
  2783. uint8_t* Currdata = (uint8_t*)CurrApiAddress;
  2784. 8001930: 69bb ldr r3, [r7, #24]
  2785. 8001932: 613b str r3, [r7, #16]
  2786. printf("HAL_FLASH_Program Start\r\n");
  2787. 8001934: 4833 ldr r0, [pc, #204] ; (8001a04 <FLASH_Write_Func+0xf4>)
  2788. 8001936: f005 f887 bl 8006a48 <puts>
  2789. DownloadIndex += size;
  2790. 800193a: 4b33 ldr r3, [pc, #204] ; (8001a08 <FLASH_Write_Func+0xf8>)
  2791. 800193c: 681a ldr r2, [r3, #0]
  2792. 800193e: 687b ldr r3, [r7, #4]
  2793. 8001940: 4413 add r3, r2
  2794. 8001942: 4a31 ldr r2, [pc, #196] ; (8001a08 <FLASH_Write_Func+0xf8>)
  2795. 8001944: 6013 str r3, [r2, #0]
  2796. printf("User_Address : %x \r\n",UserAddress);
  2797. 8001946: 4b31 ldr r3, [pc, #196] ; (8001a0c <FLASH_Write_Func+0xfc>)
  2798. 8001948: 681b ldr r3, [r3, #0]
  2799. 800194a: 4619 mov r1, r3
  2800. 800194c: 4830 ldr r0, [pc, #192] ; (8001a10 <FLASH_Write_Func+0x100>)
  2801. 800194e: f005 f807 bl 8006960 <iprintf>
  2802. HAL_FLASH_Unlock();
  2803. 8001952: f001 fafb bl 8002f4c <HAL_FLASH_Unlock>
  2804. for(int downindex = 0; downindex < size; downindex+=4)
  2805. 8001956: 2300 movs r3, #0
  2806. 8001958: 627b str r3, [r7, #36] ; 0x24
  2807. 800195a: e041 b.n 80019e0 <FLASH_Write_Func+0xd0>
  2808. {
  2809. writedata = data[downindex + 0] ;
  2810. 800195c: 6a7b ldr r3, [r7, #36] ; 0x24
  2811. 800195e: 68ba ldr r2, [r7, #8]
  2812. 8001960: 4413 add r3, r2
  2813. 8001962: 781b ldrb r3, [r3, #0]
  2814. 8001964: 61fb str r3, [r7, #28]
  2815. writedata += data[downindex + 1] << 8 ;
  2816. 8001966: 6a7b ldr r3, [r7, #36] ; 0x24
  2817. 8001968: 3301 adds r3, #1
  2818. 800196a: 68ba ldr r2, [r7, #8]
  2819. 800196c: 4413 add r3, r2
  2820. 800196e: 781b ldrb r3, [r3, #0]
  2821. 8001970: 021b lsls r3, r3, #8
  2822. 8001972: 461a mov r2, r3
  2823. 8001974: 69fb ldr r3, [r7, #28]
  2824. 8001976: 4413 add r3, r2
  2825. 8001978: 61fb str r3, [r7, #28]
  2826. writedata += data[downindex + 2] << 16;
  2827. 800197a: 6a7b ldr r3, [r7, #36] ; 0x24
  2828. 800197c: 3302 adds r3, #2
  2829. 800197e: 68ba ldr r2, [r7, #8]
  2830. 8001980: 4413 add r3, r2
  2831. 8001982: 781b ldrb r3, [r3, #0]
  2832. 8001984: 041b lsls r3, r3, #16
  2833. 8001986: 461a mov r2, r3
  2834. 8001988: 69fb ldr r3, [r7, #28]
  2835. 800198a: 4413 add r3, r2
  2836. 800198c: 61fb str r3, [r7, #28]
  2837. writedata += data[downindex + 3] << 24;
  2838. 800198e: 6a7b ldr r3, [r7, #36] ; 0x24
  2839. 8001990: 3303 adds r3, #3
  2840. 8001992: 68ba ldr r2, [r7, #8]
  2841. 8001994: 4413 add r3, r2
  2842. 8001996: 781b ldrb r3, [r3, #0]
  2843. 8001998: 061b lsls r3, r3, #24
  2844. 800199a: 461a mov r2, r3
  2845. 800199c: 69fb ldr r3, [r7, #28]
  2846. 800199e: 4413 add r3, r2
  2847. 80019a0: 61fb str r3, [r7, #28]
  2848. if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, UserAddress,writedata) == HAL_OK)
  2849. 80019a2: 4b1a ldr r3, [pc, #104] ; (8001a0c <FLASH_Write_Func+0xfc>)
  2850. 80019a4: 6819 ldr r1, [r3, #0]
  2851. 80019a6: 69fb ldr r3, [r7, #28]
  2852. 80019a8: f04f 0400 mov.w r4, #0
  2853. 80019ac: 461a mov r2, r3
  2854. 80019ae: 4623 mov r3, r4
  2855. 80019b0: 2002 movs r0, #2
  2856. 80019b2: f001 fa5b bl 8002e6c <HAL_FLASH_Program>
  2857. 80019b6: 4603 mov r3, r0
  2858. 80019b8: 2b00 cmp r3, #0
  2859. 80019ba: d105 bne.n 80019c8 <FLASH_Write_Func+0xb8>
  2860. {
  2861. UserAddress += 4;
  2862. 80019bc: 4b13 ldr r3, [pc, #76] ; (8001a0c <FLASH_Write_Func+0xfc>)
  2863. 80019be: 681b ldr r3, [r3, #0]
  2864. 80019c0: 3304 adds r3, #4
  2865. 80019c2: 4a12 ldr r2, [pc, #72] ; (8001a0c <FLASH_Write_Func+0xfc>)
  2866. 80019c4: 6013 str r3, [r2, #0]
  2867. 80019c6: e008 b.n 80019da <FLASH_Write_Func+0xca>
  2868. }
  2869. else
  2870. {
  2871. printf("HAL_FLASH_Program Error\r\n");
  2872. 80019c8: 4812 ldr r0, [pc, #72] ; (8001a14 <FLASH_Write_Func+0x104>)
  2873. 80019ca: f005 f83d bl 8006a48 <puts>
  2874. printf("Flash Failed %x \r\n",UserAddress);
  2875. 80019ce: 4b0f ldr r3, [pc, #60] ; (8001a0c <FLASH_Write_Func+0xfc>)
  2876. 80019d0: 681b ldr r3, [r3, #0]
  2877. 80019d2: 4619 mov r1, r3
  2878. 80019d4: 4810 ldr r0, [pc, #64] ; (8001a18 <FLASH_Write_Func+0x108>)
  2879. 80019d6: f004 ffc3 bl 8006960 <iprintf>
  2880. for(int downindex = 0; downindex < size; downindex+=4)
  2881. 80019da: 6a7b ldr r3, [r7, #36] ; 0x24
  2882. 80019dc: 3304 adds r3, #4
  2883. 80019de: 627b str r3, [r7, #36] ; 0x24
  2884. 80019e0: 6a7b ldr r3, [r7, #36] ; 0x24
  2885. 80019e2: 687a ldr r2, [r7, #4]
  2886. 80019e4: 429a cmp r2, r3
  2887. 80019e6: d8b9 bhi.n 800195c <FLASH_Write_Func+0x4c>
  2888. }
  2889. }
  2890. printf("HAL_FLASH_Program END %x \r\n",UserAddress);
  2891. 80019e8: 4b08 ldr r3, [pc, #32] ; (8001a0c <FLASH_Write_Func+0xfc>)
  2892. 80019ea: 681b ldr r3, [r3, #0]
  2893. 80019ec: 4619 mov r1, r3
  2894. 80019ee: 480b ldr r0, [pc, #44] ; (8001a1c <FLASH_Write_Func+0x10c>)
  2895. 80019f0: f004 ffb6 bl 8006960 <iprintf>
  2896. /* Lock the Flash to disable the flash control register access (recommended
  2897. to protect the FLASH memory against possible unwanted operation) *********/
  2898. HAL_FLASH_Lock();
  2899. 80019f4: f001 fad0 bl 8002f98 <HAL_FLASH_Lock>
  2900. return 0;
  2901. 80019f8: 2300 movs r3, #0
  2902. /* Check if the programmed data is OK
  2903. MemoryProgramStatus = 0: data programmed correctly
  2904. MemoryProgramStatus != 0: number of words not programmed correctly ******/
  2905. }
  2906. 80019fa: 4618 mov r0, r3
  2907. 80019fc: 372c adds r7, #44 ; 0x2c
  2908. 80019fe: 46bd mov sp, r7
  2909. 8001a00: bd90 pop {r4, r7, pc}
  2910. 8001a02: bf00 nop
  2911. 8001a04: 08008ae0 .word 0x08008ae0
  2912. 8001a08: 2000060c .word 0x2000060c
  2913. 8001a0c: 200005f0 .word 0x200005f0
  2914. 8001a10: 08008afc .word 0x08008afc
  2915. 8001a14: 08008b14 .word 0x08008b14
  2916. 8001a18: 08008b30 .word 0x08008b30
  2917. 8001a1c: 08008b44 .word 0x08008b44
  2918. 08001a20 <FLASH_Read_Func>:
  2919. void FLASH_Read_Func(uint32_t User_Address,uint8_t* dst,uint32_t size){
  2920. 8001a20: b580 push {r7, lr}
  2921. 8001a22: b088 sub sp, #32
  2922. 8001a24: af00 add r7, sp, #0
  2923. 8001a26: 60f8 str r0, [r7, #12]
  2924. 8001a28: 60b9 str r1, [r7, #8]
  2925. 8001a2a: 607a str r2, [r7, #4]
  2926. uint32_t CurrApiAddress = 0;
  2927. 8001a2c: 2300 movs r3, #0
  2928. 8001a2e: 61bb str r3, [r7, #24]
  2929. uint32_t i = 0;
  2930. 8001a30: 2300 movs r3, #0
  2931. 8001a32: 617b str r3, [r7, #20]
  2932. //uint8_t ret = 0;
  2933. CurrApiAddress = User_Address;
  2934. 8001a34: 68fb ldr r3, [r7, #12]
  2935. 8001a36: 61bb str r3, [r7, #24]
  2936. uint8_t* Currdata = (uint8_t*)CurrApiAddress;
  2937. 8001a38: 69bb ldr r3, [r7, #24]
  2938. 8001a3a: 613b str r3, [r7, #16]
  2939. printf("Flash Read size : %d \r\n",size);
  2940. 8001a3c: 6879 ldr r1, [r7, #4]
  2941. 8001a3e: 4810 ldr r0, [pc, #64] ; (8001a80 <FLASH_Read_Func+0x60>)
  2942. 8001a40: f004 ff8e bl 8006960 <iprintf>
  2943. for(int i = 0; i < size; i++){
  2944. 8001a44: 2300 movs r3, #0
  2945. 8001a46: 61fb str r3, [r7, #28]
  2946. 8001a48: e012 b.n 8001a70 <FLASH_Read_Func+0x50>
  2947. dst[i] = Currdata[i];
  2948. 8001a4a: 69fb ldr r3, [r7, #28]
  2949. 8001a4c: 693a ldr r2, [r7, #16]
  2950. 8001a4e: 441a add r2, r3
  2951. 8001a50: 69fb ldr r3, [r7, #28]
  2952. 8001a52: 68b9 ldr r1, [r7, #8]
  2953. 8001a54: 440b add r3, r1
  2954. 8001a56: 7812 ldrb r2, [r2, #0]
  2955. 8001a58: 701a strb r2, [r3, #0]
  2956. printf("%02x ",dst[i]);
  2957. 8001a5a: 69fb ldr r3, [r7, #28]
  2958. 8001a5c: 68ba ldr r2, [r7, #8]
  2959. 8001a5e: 4413 add r3, r2
  2960. 8001a60: 781b ldrb r3, [r3, #0]
  2961. 8001a62: 4619 mov r1, r3
  2962. 8001a64: 4807 ldr r0, [pc, #28] ; (8001a84 <FLASH_Read_Func+0x64>)
  2963. 8001a66: f004 ff7b bl 8006960 <iprintf>
  2964. for(int i = 0; i < size; i++){
  2965. 8001a6a: 69fb ldr r3, [r7, #28]
  2966. 8001a6c: 3301 adds r3, #1
  2967. 8001a6e: 61fb str r3, [r7, #28]
  2968. 8001a70: 69fb ldr r3, [r7, #28]
  2969. 8001a72: 687a ldr r2, [r7, #4]
  2970. 8001a74: 429a cmp r2, r3
  2971. 8001a76: d8e8 bhi.n 8001a4a <FLASH_Read_Func+0x2a>
  2972. }
  2973. }
  2974. 8001a78: bf00 nop
  2975. 8001a7a: 3720 adds r7, #32
  2976. 8001a7c: 46bd mov sp, r7
  2977. 8001a7e: bd80 pop {r7, pc}
  2978. 8001a80: 08008b64 .word 0x08008b64
  2979. 8001a84: 08008b7c .word 0x08008b7c
  2980. 08001a88 <LedTimerCnt_Get>:
  2981. #include "main.h"
  2982. #include "led.h"
  2983. volatile uint32_t LED_TimerCnt = 0;
  2984. uint32_t LedTimerCnt_Get(){
  2985. 8001a88: b480 push {r7}
  2986. 8001a8a: af00 add r7, sp, #0
  2987. return LED_TimerCnt;
  2988. 8001a8c: 4b02 ldr r3, [pc, #8] ; (8001a98 <LedTimerCnt_Get+0x10>)
  2989. 8001a8e: 681b ldr r3, [r3, #0]
  2990. }
  2991. 8001a90: 4618 mov r0, r3
  2992. 8001a92: 46bd mov sp, r7
  2993. 8001a94: bc80 pop {r7}
  2994. 8001a96: 4770 bx lr
  2995. 8001a98: 20000610 .word 0x20000610
  2996. 08001a9c <LedTimerCnt_Set>:
  2997. void LedTimerCnt_Set(uint32_t val){
  2998. 8001a9c: b480 push {r7}
  2999. 8001a9e: b083 sub sp, #12
  3000. 8001aa0: af00 add r7, sp, #0
  3001. 8001aa2: 6078 str r0, [r7, #4]
  3002. LED_TimerCnt = val;
  3003. 8001aa4: 4a03 ldr r2, [pc, #12] ; (8001ab4 <LedTimerCnt_Set+0x18>)
  3004. 8001aa6: 687b ldr r3, [r7, #4]
  3005. 8001aa8: 6013 str r3, [r2, #0]
  3006. }
  3007. 8001aaa: bf00 nop
  3008. 8001aac: 370c adds r7, #12
  3009. 8001aae: 46bd mov sp, r7
  3010. 8001ab0: bc80 pop {r7}
  3011. 8001ab2: 4770 bx lr
  3012. 8001ab4: 20000610 .word 0x20000610
  3013. 08001ab8 <Boot_LED_Toggle>:
  3014. void Boot_LED_Toggle(){ /*LED Check*/
  3015. 8001ab8: b580 push {r7, lr}
  3016. 8001aba: b082 sub sp, #8
  3017. 8001abc: af00 add r7, sp, #0
  3018. uint32_t Led_Cnt = LedTimerCnt_Get();
  3019. 8001abe: f7ff ffe3 bl 8001a88 <LedTimerCnt_Get>
  3020. 8001ac2: 6078 str r0, [r7, #4]
  3021. if(Led_Cnt >= LED_TOGGLE_CNT_REF){
  3022. 8001ac4: 687b ldr r3, [r7, #4]
  3023. 8001ac6: f5b3 7ffa cmp.w r3, #500 ; 0x1f4
  3024. 8001aca: d307 bcc.n 8001adc <Boot_LED_Toggle+0x24>
  3025. HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port, BOOT_LED_Pin);
  3026. 8001acc: f44f 4100 mov.w r1, #32768 ; 0x8000
  3027. 8001ad0: 4804 ldr r0, [pc, #16] ; (8001ae4 <Boot_LED_Toggle+0x2c>)
  3028. 8001ad2: f001 fd54 bl 800357e <HAL_GPIO_TogglePin>
  3029. LedTimerCnt_Set(0);
  3030. 8001ad6: 2000 movs r0, #0
  3031. 8001ad8: f7ff ffe0 bl 8001a9c <LedTimerCnt_Set>
  3032. }
  3033. }
  3034. 8001adc: bf00 nop
  3035. 8001ade: 3708 adds r7, #8
  3036. 8001ae0: 46bd mov sp, r7
  3037. 8001ae2: bd80 pop {r7, pc}
  3038. 8001ae4: 40011000 .word 0x40011000
  3039. 08001ae8 <InitUartQueue>:
  3040. extern bool Bluecell_Operate(uint8_t* data);
  3041. extern void MBIC_Operate(uint8_t * data);
  3042. extern bool NessLab_CheckSum_Check(uint8_t* data,uint8_t size,uint8_t checksum);
  3043. void InitUartQueue(pUARTQUEUE pQueue)
  3044. {
  3045. 8001ae8: b580 push {r7, lr}
  3046. 8001aea: b082 sub sp, #8
  3047. 8001aec: af00 add r7, sp, #0
  3048. 8001aee: 6078 str r0, [r7, #4]
  3049. pQueue->data = pQueue->head = pQueue->tail = 0;
  3050. 8001af0: 687b ldr r3, [r7, #4]
  3051. 8001af2: 2200 movs r2, #0
  3052. 8001af4: 605a str r2, [r3, #4]
  3053. 8001af6: 687b ldr r3, [r7, #4]
  3054. 8001af8: 685a ldr r2, [r3, #4]
  3055. 8001afa: 687b ldr r3, [r7, #4]
  3056. 8001afc: 601a str r2, [r3, #0]
  3057. 8001afe: 687b ldr r3, [r7, #4]
  3058. 8001b00: 681a ldr r2, [r3, #0]
  3059. 8001b02: 687b ldr r3, [r7, #4]
  3060. 8001b04: 609a str r2, [r3, #8]
  3061. uart_hal_tx.output_p = uart_hal_tx.input_p = 0;
  3062. 8001b06: 2100 movs r1, #0
  3063. 8001b08: 4b08 ldr r3, [pc, #32] ; (8001b2c <InitUartQueue+0x44>)
  3064. 8001b0a: 460a mov r2, r1
  3065. 8001b0c: f8a3 2080 strh.w r2, [r3, #128] ; 0x80
  3066. 8001b10: 4b06 ldr r3, [pc, #24] ; (8001b2c <InitUartQueue+0x44>)
  3067. 8001b12: 460a mov r2, r1
  3068. 8001b14: f8a3 2082 strh.w r2, [r3, #130] ; 0x82
  3069. // HAL_UART_Receive_IT(&huart2,rxBuf,5);
  3070. if (HAL_UART_Receive_DMA(&hMain, MainQueue.Buffer, 1) != HAL_OK)
  3071. 8001b18: 2201 movs r2, #1
  3072. 8001b1a: 4905 ldr r1, [pc, #20] ; (8001b30 <InitUartQueue+0x48>)
  3073. 8001b1c: 4805 ldr r0, [pc, #20] ; (8001b34 <InitUartQueue+0x4c>)
  3074. 8001b1e: f002 fe53 bl 80047c8 <HAL_UART_Receive_DMA>
  3075. // {
  3076. //// _Error_Handler(__FILE__, __LINE__);
  3077. // }
  3078. //HAL_UART_Receive_DMA(&hTerminal, TerminalQueue.Buffer, 1);
  3079. //HAL_UART_Receive_IT(hTerminal, pQueue->Buffer + pQueue->head, 1);
  3080. }
  3081. 8001b22: bf00 nop
  3082. 8001b24: 3708 adds r7, #8
  3083. 8001b26: 46bd mov sp, r7
  3084. 8001b28: bd80 pop {r7, pc}
  3085. 8001b2a: bf00 nop
  3086. 8001b2c: 20000864 .word 0x20000864
  3087. 8001b30: 20000758 .word 0x20000758
  3088. 8001b34: 20000a90 .word 0x20000a90
  3089. 08001b38 <HAL_UART_RxCpltCallback>:
  3090. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  3091. {
  3092. 8001b38: b580 push {r7, lr}
  3093. 8001b3a: b084 sub sp, #16
  3094. 8001b3c: af00 add r7, sp, #0
  3095. 8001b3e: 6078 str r0, [r7, #4]
  3096. // UART_HandleTypeDef *dst = (huart->Instance == USART2 ? &hTest:&hTerminal);
  3097. pUARTQUEUE pQueue;
  3098. // printf("Function : %s : \r\n",__func__);
  3099. //printf("%02x ",uart_buf[i]);
  3100. UartRxTimerCnt = 0;
  3101. 8001b40: 4b15 ldr r3, [pc, #84] ; (8001b98 <HAL_UART_RxCpltCallback+0x60>)
  3102. 8001b42: 2200 movs r2, #0
  3103. 8001b44: 601a str r2, [r3, #0]
  3104. pQueue = &MainQueue;
  3105. 8001b46: 4b15 ldr r3, [pc, #84] ; (8001b9c <HAL_UART_RxCpltCallback+0x64>)
  3106. 8001b48: 60fb str r3, [r7, #12]
  3107. pQueue->head++;
  3108. 8001b4a: 68fb ldr r3, [r7, #12]
  3109. 8001b4c: 681b ldr r3, [r3, #0]
  3110. 8001b4e: 1c5a adds r2, r3, #1
  3111. 8001b50: 68fb ldr r3, [r7, #12]
  3112. 8001b52: 601a str r2, [r3, #0]
  3113. if (pQueue->head >= QUEUE_BUFFER_LENGTH) pQueue->head = 0;
  3114. 8001b54: 68fb ldr r3, [r7, #12]
  3115. 8001b56: 681b ldr r3, [r3, #0]
  3116. 8001b58: 2b7f cmp r3, #127 ; 0x7f
  3117. 8001b5a: dd02 ble.n 8001b62 <HAL_UART_RxCpltCallback+0x2a>
  3118. 8001b5c: 68fb ldr r3, [r7, #12]
  3119. 8001b5e: 2200 movs r2, #0
  3120. 8001b60: 601a str r2, [r3, #0]
  3121. pQueue->data++;
  3122. 8001b62: 68fb ldr r3, [r7, #12]
  3123. 8001b64: 689b ldr r3, [r3, #8]
  3124. 8001b66: 1c5a adds r2, r3, #1
  3125. 8001b68: 68fb ldr r3, [r7, #12]
  3126. 8001b6a: 609a str r2, [r3, #8]
  3127. if (pQueue->data >= QUEUE_BUFFER_LENGTH)
  3128. 8001b6c: 68fb ldr r3, [r7, #12]
  3129. 8001b6e: 689b ldr r3, [r3, #8]
  3130. 8001b70: 2b7f cmp r3, #127 ; 0x7f
  3131. 8001b72: dd02 ble.n 8001b7a <HAL_UART_RxCpltCallback+0x42>
  3132. GetDataFromUartQueue(huart);
  3133. 8001b74: 6878 ldr r0, [r7, #4]
  3134. 8001b76: f000 f815 bl 8001ba4 <GetDataFromUartQueue>
  3135. HAL_UART_Receive_IT(&hMain, pQueue->Buffer + pQueue->head, 1);
  3136. 8001b7a: 68fb ldr r3, [r7, #12]
  3137. 8001b7c: 330c adds r3, #12
  3138. 8001b7e: 68fa ldr r2, [r7, #12]
  3139. 8001b80: 6812 ldr r2, [r2, #0]
  3140. 8001b82: 4413 add r3, r2
  3141. 8001b84: 2201 movs r2, #1
  3142. 8001b86: 4619 mov r1, r3
  3143. 8001b88: 4805 ldr r0, [pc, #20] ; (8001ba0 <HAL_UART_RxCpltCallback+0x68>)
  3144. 8001b8a: f002 fd5d bl 8004648 <HAL_UART_Receive_IT>
  3145. // HAL_UART_Receive_DMA(&hTest, pQueue->Buffer + pQueue->head, 1);
  3146. // Set_UartRcv(true);
  3147. }
  3148. 8001b8e: bf00 nop
  3149. 8001b90: 3710 adds r7, #16
  3150. 8001b92: 46bd mov sp, r7
  3151. 8001b94: bd80 pop {r7, pc}
  3152. 8001b96: bf00 nop
  3153. 8001b98: 20000618 .word 0x20000618
  3154. 8001b9c: 2000074c .word 0x2000074c
  3155. 8001ba0: 20000a90 .word 0x20000a90
  3156. 08001ba4 <GetDataFromUartQueue>:
  3157. // HAL_UART_Receive_DMA(&hTerminal, pQueue->Buffer + pQueue->head, 10);
  3158. }
  3159. void GetDataFromUartQueue(UART_HandleTypeDef *huart)
  3160. {
  3161. 8001ba4: b580 push {r7, lr}
  3162. 8001ba6: b086 sub sp, #24
  3163. 8001ba8: af00 add r7, sp, #0
  3164. 8001baa: 6078 str r0, [r7, #4]
  3165. volatile static int cnt;
  3166. bool ret = 0;
  3167. 8001bac: 2300 movs r3, #0
  3168. 8001bae: 75fb strb r3, [r7, #23]
  3169. /* bool chksumret = 0;
  3170. uint16_t Length = 0;
  3171. uint16_t CrcChk = 0;
  3172. UART_HandleTypeDef *dst = (huart->Instance == USART2 ? &hTest:&hTerminal);*/
  3173. // UART_HandleTypeDef *dst = &hTerminal;
  3174. pUARTQUEUE pQueue = &MainQueue;
  3175. 8001bb0: 4b47 ldr r3, [pc, #284] ; (8001cd0 <GetDataFromUartQueue+0x12c>)
  3176. 8001bb2: 60fb str r3, [r7, #12]
  3177. // if (HAL_UART_Transmit(dst, pQueue->Buffer + pQueue->tail, 1, 3000) != HAL_OK)
  3178. // {
  3179. // _Error_Handler(__FILE__, __LINE__);
  3180. // }
  3181. uart_buf[cnt++] = *(pQueue->Buffer + pQueue->tail);
  3182. 8001bb4: 68fb ldr r3, [r7, #12]
  3183. 8001bb6: 330c adds r3, #12
  3184. 8001bb8: 68fa ldr r2, [r7, #12]
  3185. 8001bba: 6852 ldr r2, [r2, #4]
  3186. 8001bbc: 441a add r2, r3
  3187. 8001bbe: 4b45 ldr r3, [pc, #276] ; (8001cd4 <GetDataFromUartQueue+0x130>)
  3188. 8001bc0: 681b ldr r3, [r3, #0]
  3189. 8001bc2: 1c59 adds r1, r3, #1
  3190. 8001bc4: 4843 ldr r0, [pc, #268] ; (8001cd4 <GetDataFromUartQueue+0x130>)
  3191. 8001bc6: 6001 str r1, [r0, #0]
  3192. 8001bc8: 7811 ldrb r1, [r2, #0]
  3193. 8001bca: 4a43 ldr r2, [pc, #268] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3194. 8001bcc: 54d1 strb r1, [r2, r3]
  3195. //#ifdef DEBUG_PRINT
  3196. // printf("%02x ",*(pQueue->Buffer + pQueue->tail)) ;
  3197. //#endif /* DEBUG_PRINT */
  3198. pQueue->tail++;
  3199. 8001bce: 68fb ldr r3, [r7, #12]
  3200. 8001bd0: 685b ldr r3, [r3, #4]
  3201. 8001bd2: 1c5a adds r2, r3, #1
  3202. 8001bd4: 68fb ldr r3, [r7, #12]
  3203. 8001bd6: 605a str r2, [r3, #4]
  3204. if (pQueue->tail >= QUEUE_BUFFER_LENGTH) pQueue->tail = 0;
  3205. 8001bd8: 68fb ldr r3, [r7, #12]
  3206. 8001bda: 685b ldr r3, [r3, #4]
  3207. 8001bdc: 2b7f cmp r3, #127 ; 0x7f
  3208. 8001bde: dd02 ble.n 8001be6 <GetDataFromUartQueue+0x42>
  3209. 8001be0: 68fb ldr r3, [r7, #12]
  3210. 8001be2: 2200 movs r2, #0
  3211. 8001be4: 605a str r2, [r3, #4]
  3212. pQueue->data--;
  3213. 8001be6: 68fb ldr r3, [r7, #12]
  3214. 8001be8: 689b ldr r3, [r3, #8]
  3215. 8001bea: 1e5a subs r2, r3, #1
  3216. 8001bec: 68fb ldr r3, [r7, #12]
  3217. 8001bee: 609a str r2, [r3, #8]
  3218. if(pQueue->data == 0){
  3219. 8001bf0: 68fb ldr r3, [r7, #12]
  3220. 8001bf2: 689b ldr r3, [r3, #8]
  3221. 8001bf4: 2b00 cmp r3, #0
  3222. 8001bf6: d167 bne.n 8001cc8 <GetDataFromUartQueue+0x124>
  3223. // printf("data cnt zero !!! \r\n");
  3224. //RF_Ctrl_Main(&uart_buf[Header]);
  3225. // HAL_UART_Transmit(dst, &temp_buf[BLUECELL_HEADER00], 11, 3000);
  3226. #if 1// PYJ.2019.07.15_BEGIN --
  3227. printf("\r\n[RX]");
  3228. 8001bf8: 4838 ldr r0, [pc, #224] ; (8001cdc <GetDataFromUartQueue+0x138>)
  3229. 8001bfa: f004 feb1 bl 8006960 <iprintf>
  3230. for(int i = 0; i < cnt; i++){
  3231. 8001bfe: 2300 movs r3, #0
  3232. 8001c00: 613b str r3, [r7, #16]
  3233. 8001c02: e00b b.n 8001c1c <GetDataFromUartQueue+0x78>
  3234. printf("%02x ",uart_buf[i]);
  3235. 8001c04: 4a34 ldr r2, [pc, #208] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3236. 8001c06: 693b ldr r3, [r7, #16]
  3237. 8001c08: 4413 add r3, r2
  3238. 8001c0a: 781b ldrb r3, [r3, #0]
  3239. 8001c0c: b2db uxtb r3, r3
  3240. 8001c0e: 4619 mov r1, r3
  3241. 8001c10: 4833 ldr r0, [pc, #204] ; (8001ce0 <GetDataFromUartQueue+0x13c>)
  3242. 8001c12: f004 fea5 bl 8006960 <iprintf>
  3243. for(int i = 0; i < cnt; i++){
  3244. 8001c16: 693b ldr r3, [r7, #16]
  3245. 8001c18: 3301 adds r3, #1
  3246. 8001c1a: 613b str r3, [r7, #16]
  3247. 8001c1c: 4b2d ldr r3, [pc, #180] ; (8001cd4 <GetDataFromUartQueue+0x130>)
  3248. 8001c1e: 681b ldr r3, [r3, #0]
  3249. 8001c20: 693a ldr r2, [r7, #16]
  3250. 8001c22: 429a cmp r2, r3
  3251. 8001c24: dbee blt.n 8001c04 <GetDataFromUartQueue+0x60>
  3252. }
  3253. printf("\r\n");
  3254. 8001c26: 482f ldr r0, [pc, #188] ; (8001ce4 <GetDataFromUartQueue+0x140>)
  3255. 8001c28: f004 ff0e bl 8006a48 <puts>
  3256. // printf("Checksum Index : %d %x\r\n",uart_buf[NessLab_Req_DataLength] + NessLab_Req_DataLength + 1,uart_buf[uart_buf[NessLab_Req_DataLength] + NessLab_Req_DataLength + 1]);
  3257. // printf(ANSI_COLOR_GREEN"\r\n CNT : %d \r\n"ANSI_COLOR_RESET,cnt);
  3258. #endif // PYJ.2019.07.15_END --
  3259. if(uart_buf[NessLab_Req_MsgID0] == NessLab_Table_REQ)
  3260. 8001c2c: 4b2a ldr r3, [pc, #168] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3261. 8001c2e: 789b ldrb r3, [r3, #2]
  3262. 8001c30: b2db uxtb r3, r3
  3263. 8001c32: 2bc9 cmp r3, #201 ; 0xc9
  3264. 8001c34: d10c bne.n 8001c50 <GetDataFromUartQueue+0xac>
  3265. ret = NessLab_CheckSum_Check(&uart_buf[NessLab_Req_MsgID0],uart_buf[NessLab_Req_DataLength] ,uart_buf[NessLab_Req_ChecksumVal]);
  3266. 8001c36: 4b28 ldr r3, [pc, #160] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3267. 8001c38: 799b ldrb r3, [r3, #6]
  3268. 8001c3a: b2d9 uxtb r1, r3
  3269. 8001c3c: 4b26 ldr r3, [pc, #152] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3270. 8001c3e: 7a5b ldrb r3, [r3, #9]
  3271. 8001c40: b2db uxtb r3, r3
  3272. 8001c42: 461a mov r2, r3
  3273. 8001c44: 4828 ldr r0, [pc, #160] ; (8001ce8 <GetDataFromUartQueue+0x144>)
  3274. 8001c46: f7ff fddb bl 8001800 <NessLab_CheckSum_Check>
  3275. 8001c4a: 4603 mov r3, r0
  3276. 8001c4c: 75fb strb r3, [r7, #23]
  3277. 8001c4e: e011 b.n 8001c74 <GetDataFromUartQueue+0xd0>
  3278. else
  3279. ret = NessLab_CheckSum_Check(&uart_buf[NessLab_Req_MsgID0],uart_buf[NessLab_DataLength] + 5 ,uart_buf[uart_buf[NessLab_Req_DataLength] + NessLab_Req_DataLength + 1]);
  3280. 8001c50: 4b21 ldr r3, [pc, #132] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3281. 8001c52: 799b ldrb r3, [r3, #6]
  3282. 8001c54: b2db uxtb r3, r3
  3283. 8001c56: 3305 adds r3, #5
  3284. 8001c58: b2d9 uxtb r1, r3
  3285. 8001c5a: 4b1f ldr r3, [pc, #124] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3286. 8001c5c: 799b ldrb r3, [r3, #6]
  3287. 8001c5e: b2db uxtb r3, r3
  3288. 8001c60: 3307 adds r3, #7
  3289. 8001c62: 4a1d ldr r2, [pc, #116] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3290. 8001c64: 5cd3 ldrb r3, [r2, r3]
  3291. 8001c66: b2db uxtb r3, r3
  3292. 8001c68: 461a mov r2, r3
  3293. 8001c6a: 481f ldr r0, [pc, #124] ; (8001ce8 <GetDataFromUartQueue+0x144>)
  3294. 8001c6c: f7ff fdc8 bl 8001800 <NessLab_CheckSum_Check>
  3295. 8001c70: 4603 mov r3, r0
  3296. 8001c72: 75fb strb r3, [r7, #23]
  3297. if(ret == true){
  3298. 8001c74: 7dfb ldrb r3, [r7, #23]
  3299. 8001c76: 2b00 cmp r3, #0
  3300. 8001c78: d006 beq.n 8001c88 <GetDataFromUartQueue+0xe4>
  3301. NessLab_Operate(&uart_buf[0]);
  3302. 8001c7a: 4817 ldr r0, [pc, #92] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3303. 8001c7c: f7ff f900 bl 8000e80 <NessLab_Operate>
  3304. printf("Checksum OK \r\n");
  3305. 8001c80: 481a ldr r0, [pc, #104] ; (8001cec <GetDataFromUartQueue+0x148>)
  3306. 8001c82: f004 fee1 bl 8006a48 <puts>
  3307. 8001c86: e01c b.n 8001cc2 <GetDataFromUartQueue+0x11e>
  3308. }else{
  3309. printf("Checksum Error \r\n");
  3310. 8001c88: 4819 ldr r0, [pc, #100] ; (8001cf0 <GetDataFromUartQueue+0x14c>)
  3311. 8001c8a: f004 fedd bl 8006a48 <puts>
  3312. printf("uart_buf[NessLab_Req_DataLength] : %x \r\n",uart_buf[NessLab_Req_DataLength]);
  3313. 8001c8e: 4b12 ldr r3, [pc, #72] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3314. 8001c90: 799b ldrb r3, [r3, #6]
  3315. 8001c92: b2db uxtb r3, r3
  3316. 8001c94: 4619 mov r1, r3
  3317. 8001c96: 4817 ldr r0, [pc, #92] ; (8001cf4 <GetDataFromUartQueue+0x150>)
  3318. 8001c98: f004 fe62 bl 8006960 <iprintf>
  3319. printf("NessLab_Req_DataLength : %d \r\n",NessLab_Req_DataLength);
  3320. 8001c9c: 2106 movs r1, #6
  3321. 8001c9e: 4816 ldr r0, [pc, #88] ; (8001cf8 <GetDataFromUartQueue+0x154>)
  3322. 8001ca0: f004 fe5e bl 8006960 <iprintf>
  3323. printf("Checksum Index : %d %x\r\n",uart_buf[NessLab_Req_DataLength] + NessLab_Req_DataLength + 1,uart_buf[uart_buf[NessLab_Req_DataLength] + NessLab_Req_DataLength + 1]);
  3324. 8001ca4: 4b0c ldr r3, [pc, #48] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3325. 8001ca6: 799b ldrb r3, [r3, #6]
  3326. 8001ca8: b2db uxtb r3, r3
  3327. 8001caa: 1dd9 adds r1, r3, #7
  3328. 8001cac: 4b0a ldr r3, [pc, #40] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3329. 8001cae: 799b ldrb r3, [r3, #6]
  3330. 8001cb0: b2db uxtb r3, r3
  3331. 8001cb2: 3307 adds r3, #7
  3332. 8001cb4: 4a08 ldr r2, [pc, #32] ; (8001cd8 <GetDataFromUartQueue+0x134>)
  3333. 8001cb6: 5cd3 ldrb r3, [r2, r3]
  3334. 8001cb8: b2db uxtb r3, r3
  3335. 8001cba: 461a mov r2, r3
  3336. 8001cbc: 480f ldr r0, [pc, #60] ; (8001cfc <GetDataFromUartQueue+0x158>)
  3337. 8001cbe: f004 fe4f bl 8006960 <iprintf>
  3338. }
  3339. cnt = 0;
  3340. 8001cc2: 4b04 ldr r3, [pc, #16] ; (8001cd4 <GetDataFromUartQueue+0x130>)
  3341. 8001cc4: 2200 movs r2, #0
  3342. 8001cc6: 601a str r2, [r3, #0]
  3343. }
  3344. }
  3345. 8001cc8: bf00 nop
  3346. 8001cca: 3718 adds r7, #24
  3347. 8001ccc: 46bd mov sp, r7
  3348. 8001cce: bd80 pop {r7, pc}
  3349. 8001cd0: 2000074c .word 0x2000074c
  3350. 8001cd4: 20000614 .word 0x20000614
  3351. 8001cd8: 200006cc .word 0x200006cc
  3352. 8001cdc: 08008b94 .word 0x08008b94
  3353. 8001ce0: 08008b9c .word 0x08008b9c
  3354. 8001ce4: 08008ba4 .word 0x08008ba4
  3355. 8001ce8: 200006ce .word 0x200006ce
  3356. 8001cec: 08008ba8 .word 0x08008ba8
  3357. 8001cf0: 08008bb8 .word 0x08008bb8
  3358. 8001cf4: 08008bcc .word 0x08008bcc
  3359. 8001cf8: 08008bf8 .word 0x08008bf8
  3360. 8001cfc: 08008c18 .word 0x08008c18
  3361. 08001d00 <Uart_Check>:
  3362. void Uart_Check(void){
  3363. 8001d00: b580 push {r7, lr}
  3364. 8001d02: af00 add r7, sp, #0
  3365. while (MainQueue.data > 0 && UartRxTimerCnt > 50) GetDataFromUartQueue(&hMain);
  3366. 8001d04: e002 b.n 8001d0c <Uart_Check+0xc>
  3367. 8001d06: 4806 ldr r0, [pc, #24] ; (8001d20 <Uart_Check+0x20>)
  3368. 8001d08: f7ff ff4c bl 8001ba4 <GetDataFromUartQueue>
  3369. 8001d0c: 4b05 ldr r3, [pc, #20] ; (8001d24 <Uart_Check+0x24>)
  3370. 8001d0e: 689b ldr r3, [r3, #8]
  3371. 8001d10: 2b00 cmp r3, #0
  3372. 8001d12: dd03 ble.n 8001d1c <Uart_Check+0x1c>
  3373. 8001d14: 4b04 ldr r3, [pc, #16] ; (8001d28 <Uart_Check+0x28>)
  3374. 8001d16: 681b ldr r3, [r3, #0]
  3375. 8001d18: 2b32 cmp r3, #50 ; 0x32
  3376. 8001d1a: d8f4 bhi.n 8001d06 <Uart_Check+0x6>
  3377. }
  3378. 8001d1c: bf00 nop
  3379. 8001d1e: bd80 pop {r7, pc}
  3380. 8001d20: 20000a90 .word 0x20000a90
  3381. 8001d24: 2000074c .word 0x2000074c
  3382. 8001d28: 20000618 .word 0x20000618
  3383. 08001d2c <Uart1_Data_Send>:
  3384. void Uart1_Data_Send(uint8_t* data,uint16_t size){
  3385. 8001d2c: b580 push {r7, lr}
  3386. 8001d2e: b084 sub sp, #16
  3387. 8001d30: af00 add r7, sp, #0
  3388. 8001d32: 6078 str r0, [r7, #4]
  3389. 8001d34: 460b mov r3, r1
  3390. 8001d36: 807b strh r3, [r7, #2]
  3391. HAL_UART_Transmit_DMA(&hMain, &data[0],size);
  3392. 8001d38: 887b ldrh r3, [r7, #2]
  3393. 8001d3a: 461a mov r2, r3
  3394. 8001d3c: 6879 ldr r1, [r7, #4]
  3395. 8001d3e: 480f ldr r0, [pc, #60] ; (8001d7c <Uart1_Data_Send+0x50>)
  3396. 8001d40: f002 fcd6 bl 80046f0 <HAL_UART_Transmit_DMA>
  3397. //HAL_UART_Transmit_IT(&hTerminal, &data[0],size);
  3398. // printf("data[278] : %x \r\n",data[278]);
  3399. //// HAL_Delay(1);
  3400. #if 1 // PYJ.2020.07.19_BEGIN --
  3401. printf("\r\n [TX] : ");
  3402. 8001d44: 480e ldr r0, [pc, #56] ; (8001d80 <Uart1_Data_Send+0x54>)
  3403. 8001d46: f004 fe0b bl 8006960 <iprintf>
  3404. for(int i = 0; i< size; i++)
  3405. 8001d4a: 2300 movs r3, #0
  3406. 8001d4c: 60fb str r3, [r7, #12]
  3407. 8001d4e: e00a b.n 8001d66 <Uart1_Data_Send+0x3a>
  3408. printf("%02x ",data[i]);
  3409. 8001d50: 68fb ldr r3, [r7, #12]
  3410. 8001d52: 687a ldr r2, [r7, #4]
  3411. 8001d54: 4413 add r3, r2
  3412. 8001d56: 781b ldrb r3, [r3, #0]
  3413. 8001d58: 4619 mov r1, r3
  3414. 8001d5a: 480a ldr r0, [pc, #40] ; (8001d84 <Uart1_Data_Send+0x58>)
  3415. 8001d5c: f004 fe00 bl 8006960 <iprintf>
  3416. for(int i = 0; i< size; i++)
  3417. 8001d60: 68fb ldr r3, [r7, #12]
  3418. 8001d62: 3301 adds r3, #1
  3419. 8001d64: 60fb str r3, [r7, #12]
  3420. 8001d66: 887b ldrh r3, [r7, #2]
  3421. 8001d68: 68fa ldr r2, [r7, #12]
  3422. 8001d6a: 429a cmp r2, r3
  3423. 8001d6c: dbf0 blt.n 8001d50 <Uart1_Data_Send+0x24>
  3424. // printf("};\r\n\tCOUNT : %d \r\n",size);
  3425. printf("\r\n");
  3426. 8001d6e: 4806 ldr r0, [pc, #24] ; (8001d88 <Uart1_Data_Send+0x5c>)
  3427. 8001d70: f004 fe6a bl 8006a48 <puts>
  3428. // data[i] = 0;
  3429. // }
  3430. // printf("};\r\n\tCOUNT : %d \r\n",size);
  3431. // printf("\r\n");
  3432. }
  3433. 8001d74: bf00 nop
  3434. 8001d76: 3710 adds r7, #16
  3435. 8001d78: 46bd mov sp, r7
  3436. 8001d7a: bd80 pop {r7, pc}
  3437. 8001d7c: 20000a90 .word 0x20000a90
  3438. 8001d80: 08008c34 .word 0x08008c34
  3439. 8001d84: 08008b9c .word 0x08008b9c
  3440. 8001d88: 08008ba4 .word 0x08008ba4
  3441. 08001d8c <HAL_Init>:
  3442. * need to ensure that the SysTick time base is always set to 1 millisecond
  3443. * to have correct HAL operation.
  3444. * @retval HAL status
  3445. */
  3446. HAL_StatusTypeDef HAL_Init(void)
  3447. {
  3448. 8001d8c: b580 push {r7, lr}
  3449. 8001d8e: af00 add r7, sp, #0
  3450. __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
  3451. #endif
  3452. #endif /* PREFETCH_ENABLE */
  3453. /* Set Interrupt Group Priority */
  3454. HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
  3455. 8001d90: 2003 movs r0, #3
  3456. 8001d92: f000 fdd1 bl 8002938 <HAL_NVIC_SetPriorityGrouping>
  3457. /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
  3458. HAL_InitTick(TICK_INT_PRIORITY);
  3459. 8001d96: 2000 movs r0, #0
  3460. 8001d98: f003 ffaa bl 8005cf0 <HAL_InitTick>
  3461. /* Init the low level hardware */
  3462. HAL_MspInit();
  3463. 8001d9c: f003 fdc0 bl 8005920 <HAL_MspInit>
  3464. /* Return function status */
  3465. return HAL_OK;
  3466. 8001da0: 2300 movs r3, #0
  3467. }
  3468. 8001da2: 4618 mov r0, r3
  3469. 8001da4: bd80 pop {r7, pc}
  3470. ...
  3471. 08001da8 <HAL_IncTick>:
  3472. * @note This function is declared as __weak to be overwritten in case of other
  3473. * implementations in user file.
  3474. * @retval None
  3475. */
  3476. __weak void HAL_IncTick(void)
  3477. {
  3478. 8001da8: b480 push {r7}
  3479. 8001daa: af00 add r7, sp, #0
  3480. uwTick += uwTickFreq;
  3481. 8001dac: 4b05 ldr r3, [pc, #20] ; (8001dc4 <HAL_IncTick+0x1c>)
  3482. 8001dae: 781b ldrb r3, [r3, #0]
  3483. 8001db0: 461a mov r2, r3
  3484. 8001db2: 4b05 ldr r3, [pc, #20] ; (8001dc8 <HAL_IncTick+0x20>)
  3485. 8001db4: 681b ldr r3, [r3, #0]
  3486. 8001db6: 4413 add r3, r2
  3487. 8001db8: 4a03 ldr r2, [pc, #12] ; (8001dc8 <HAL_IncTick+0x20>)
  3488. 8001dba: 6013 str r3, [r2, #0]
  3489. }
  3490. 8001dbc: bf00 nop
  3491. 8001dbe: 46bd mov sp, r7
  3492. 8001dc0: bc80 pop {r7}
  3493. 8001dc2: 4770 bx lr
  3494. 8001dc4: 20000004 .word 0x20000004
  3495. 8001dc8: 200008e8 .word 0x200008e8
  3496. 08001dcc <HAL_GetTick>:
  3497. * @note This function is declared as __weak to be overwritten in case of other
  3498. * implementations in user file.
  3499. * @retval tick value
  3500. */
  3501. __weak uint32_t HAL_GetTick(void)
  3502. {
  3503. 8001dcc: b480 push {r7}
  3504. 8001dce: af00 add r7, sp, #0
  3505. return uwTick;
  3506. 8001dd0: 4b02 ldr r3, [pc, #8] ; (8001ddc <HAL_GetTick+0x10>)
  3507. 8001dd2: 681b ldr r3, [r3, #0]
  3508. }
  3509. 8001dd4: 4618 mov r0, r3
  3510. 8001dd6: 46bd mov sp, r7
  3511. 8001dd8: bc80 pop {r7}
  3512. 8001dda: 4770 bx lr
  3513. 8001ddc: 200008e8 .word 0x200008e8
  3514. 08001de0 <HAL_Delay>:
  3515. * implementations in user file.
  3516. * @param Delay specifies the delay time length, in milliseconds.
  3517. * @retval None
  3518. */
  3519. __weak void HAL_Delay(uint32_t Delay)
  3520. {
  3521. 8001de0: b580 push {r7, lr}
  3522. 8001de2: b084 sub sp, #16
  3523. 8001de4: af00 add r7, sp, #0
  3524. 8001de6: 6078 str r0, [r7, #4]
  3525. uint32_t tickstart = HAL_GetTick();
  3526. 8001de8: f7ff fff0 bl 8001dcc <HAL_GetTick>
  3527. 8001dec: 60b8 str r0, [r7, #8]
  3528. uint32_t wait = Delay;
  3529. 8001dee: 687b ldr r3, [r7, #4]
  3530. 8001df0: 60fb str r3, [r7, #12]
  3531. /* Add a freq to guarantee minimum wait */
  3532. if (wait < HAL_MAX_DELAY)
  3533. 8001df2: 68fb ldr r3, [r7, #12]
  3534. 8001df4: f1b3 3fff cmp.w r3, #4294967295
  3535. 8001df8: d005 beq.n 8001e06 <HAL_Delay+0x26>
  3536. {
  3537. wait += (uint32_t)(uwTickFreq);
  3538. 8001dfa: 4b09 ldr r3, [pc, #36] ; (8001e20 <HAL_Delay+0x40>)
  3539. 8001dfc: 781b ldrb r3, [r3, #0]
  3540. 8001dfe: 461a mov r2, r3
  3541. 8001e00: 68fb ldr r3, [r7, #12]
  3542. 8001e02: 4413 add r3, r2
  3543. 8001e04: 60fb str r3, [r7, #12]
  3544. }
  3545. while ((HAL_GetTick() - tickstart) < wait)
  3546. 8001e06: bf00 nop
  3547. 8001e08: f7ff ffe0 bl 8001dcc <HAL_GetTick>
  3548. 8001e0c: 4602 mov r2, r0
  3549. 8001e0e: 68bb ldr r3, [r7, #8]
  3550. 8001e10: 1ad3 subs r3, r2, r3
  3551. 8001e12: 68fa ldr r2, [r7, #12]
  3552. 8001e14: 429a cmp r2, r3
  3553. 8001e16: d8f7 bhi.n 8001e08 <HAL_Delay+0x28>
  3554. {
  3555. }
  3556. }
  3557. 8001e18: bf00 nop
  3558. 8001e1a: 3710 adds r7, #16
  3559. 8001e1c: 46bd mov sp, r7
  3560. 8001e1e: bd80 pop {r7, pc}
  3561. 8001e20: 20000004 .word 0x20000004
  3562. 08001e24 <HAL_ADC_Init>:
  3563. * of structure "ADC_InitTypeDef".
  3564. * @param hadc: ADC handle
  3565. * @retval HAL status
  3566. */
  3567. HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc)
  3568. {
  3569. 8001e24: b580 push {r7, lr}
  3570. 8001e26: b086 sub sp, #24
  3571. 8001e28: af00 add r7, sp, #0
  3572. 8001e2a: 6078 str r0, [r7, #4]
  3573. HAL_StatusTypeDef tmp_hal_status = HAL_OK;
  3574. 8001e2c: 2300 movs r3, #0
  3575. 8001e2e: 75fb strb r3, [r7, #23]
  3576. uint32_t tmp_cr1 = 0U;
  3577. 8001e30: 2300 movs r3, #0
  3578. 8001e32: 613b str r3, [r7, #16]
  3579. uint32_t tmp_cr2 = 0U;
  3580. 8001e34: 2300 movs r3, #0
  3581. 8001e36: 60bb str r3, [r7, #8]
  3582. uint32_t tmp_sqr1 = 0U;
  3583. 8001e38: 2300 movs r3, #0
  3584. 8001e3a: 60fb str r3, [r7, #12]
  3585. /* Check ADC handle */
  3586. if(hadc == NULL)
  3587. 8001e3c: 687b ldr r3, [r7, #4]
  3588. 8001e3e: 2b00 cmp r3, #0
  3589. 8001e40: d101 bne.n 8001e46 <HAL_ADC_Init+0x22>
  3590. {
  3591. return HAL_ERROR;
  3592. 8001e42: 2301 movs r3, #1
  3593. 8001e44: e0be b.n 8001fc4 <HAL_ADC_Init+0x1a0>
  3594. assert_param(IS_ADC_DATA_ALIGN(hadc->Init.DataAlign));
  3595. assert_param(IS_ADC_SCAN_MODE(hadc->Init.ScanConvMode));
  3596. assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
  3597. assert_param(IS_ADC_EXTTRIG(hadc->Init.ExternalTrigConv));
  3598. if(hadc->Init.ScanConvMode != ADC_SCAN_DISABLE)
  3599. 8001e46: 687b ldr r3, [r7, #4]
  3600. 8001e48: 689b ldr r3, [r3, #8]
  3601. 8001e4a: 2b00 cmp r3, #0
  3602. /* Refer to header of this file for more details on clock enabling */
  3603. /* procedure. */
  3604. /* Actions performed only if ADC is coming from state reset: */
  3605. /* - Initialization of ADC MSP */
  3606. if (hadc->State == HAL_ADC_STATE_RESET)
  3607. 8001e4c: 687b ldr r3, [r7, #4]
  3608. 8001e4e: 6a9b ldr r3, [r3, #40] ; 0x28
  3609. 8001e50: 2b00 cmp r3, #0
  3610. 8001e52: d109 bne.n 8001e68 <HAL_ADC_Init+0x44>
  3611. {
  3612. /* Initialize ADC error code */
  3613. ADC_CLEAR_ERRORCODE(hadc);
  3614. 8001e54: 687b ldr r3, [r7, #4]
  3615. 8001e56: 2200 movs r2, #0
  3616. 8001e58: 62da str r2, [r3, #44] ; 0x2c
  3617. /* Allocate lock resource and initialize it */
  3618. hadc->Lock = HAL_UNLOCKED;
  3619. 8001e5a: 687b ldr r3, [r7, #4]
  3620. 8001e5c: 2200 movs r2, #0
  3621. 8001e5e: f883 2024 strb.w r2, [r3, #36] ; 0x24
  3622. /* Init the low level hardware */
  3623. hadc->MspInitCallback(hadc);
  3624. #else
  3625. /* Init the low level hardware */
  3626. HAL_ADC_MspInit(hadc);
  3627. 8001e62: 6878 ldr r0, [r7, #4]
  3628. 8001e64: f003 fd8e bl 8005984 <HAL_ADC_MspInit>
  3629. /* Stop potential conversion on going, on regular and injected groups */
  3630. /* Disable ADC peripheral */
  3631. /* Note: In case of ADC already enabled, precaution to not launch an */
  3632. /* unwanted conversion while modifying register CR2 by writing 1 to */
  3633. /* bit ADON. */
  3634. tmp_hal_status = ADC_ConversionStop_Disable(hadc);
  3635. 8001e68: 6878 ldr r0, [r7, #4]
  3636. 8001e6a: f000 fb75 bl 8002558 <ADC_ConversionStop_Disable>
  3637. 8001e6e: 4603 mov r3, r0
  3638. 8001e70: 75fb strb r3, [r7, #23]
  3639. /* Configuration of ADC parameters if previous preliminary actions are */
  3640. /* correctly completed. */
  3641. if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL) &&
  3642. 8001e72: 687b ldr r3, [r7, #4]
  3643. 8001e74: 6a9b ldr r3, [r3, #40] ; 0x28
  3644. 8001e76: f003 0310 and.w r3, r3, #16
  3645. 8001e7a: 2b00 cmp r3, #0
  3646. 8001e7c: f040 8099 bne.w 8001fb2 <HAL_ADC_Init+0x18e>
  3647. 8001e80: 7dfb ldrb r3, [r7, #23]
  3648. 8001e82: 2b00 cmp r3, #0
  3649. 8001e84: f040 8095 bne.w 8001fb2 <HAL_ADC_Init+0x18e>
  3650. (tmp_hal_status == HAL_OK) )
  3651. {
  3652. /* Set ADC state */
  3653. ADC_STATE_CLR_SET(hadc->State,
  3654. 8001e88: 687b ldr r3, [r7, #4]
  3655. 8001e8a: 6a9b ldr r3, [r3, #40] ; 0x28
  3656. 8001e8c: f423 5388 bic.w r3, r3, #4352 ; 0x1100
  3657. 8001e90: f023 0302 bic.w r3, r3, #2
  3658. 8001e94: f043 0202 orr.w r2, r3, #2
  3659. 8001e98: 687b ldr r3, [r7, #4]
  3660. 8001e9a: 629a str r2, [r3, #40] ; 0x28
  3661. /* - continuous conversion mode */
  3662. /* Note: External trigger polarity (ADC_CR2_EXTTRIG) is set into */
  3663. /* HAL_ADC_Start_xxx functions because if set in this function, */
  3664. /* a conversion on injected group would start a conversion also on */
  3665. /* regular group after ADC enabling. */
  3666. tmp_cr2 |= (hadc->Init.DataAlign |
  3667. 8001e9c: 687b ldr r3, [r7, #4]
  3668. 8001e9e: 685a ldr r2, [r3, #4]
  3669. ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv) |
  3670. 8001ea0: 687b ldr r3, [r7, #4]
  3671. 8001ea2: 69db ldr r3, [r3, #28]
  3672. tmp_cr2 |= (hadc->Init.DataAlign |
  3673. 8001ea4: 431a orrs r2, r3
  3674. ADC_CR2_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) );
  3675. 8001ea6: 687b ldr r3, [r7, #4]
  3676. 8001ea8: 7b1b ldrb r3, [r3, #12]
  3677. 8001eaa: 005b lsls r3, r3, #1
  3678. ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv) |
  3679. 8001eac: 4313 orrs r3, r2
  3680. tmp_cr2 |= (hadc->Init.DataAlign |
  3681. 8001eae: 68ba ldr r2, [r7, #8]
  3682. 8001eb0: 4313 orrs r3, r2
  3683. 8001eb2: 60bb str r3, [r7, #8]
  3684. /* Configuration of ADC: */
  3685. /* - scan mode */
  3686. /* - discontinuous mode disable/enable */
  3687. /* - discontinuous mode number of conversions */
  3688. tmp_cr1 |= (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode));
  3689. 8001eb4: 687b ldr r3, [r7, #4]
  3690. 8001eb6: 689b ldr r3, [r3, #8]
  3691. 8001eb8: f5b3 7f80 cmp.w r3, #256 ; 0x100
  3692. 8001ebc: d003 beq.n 8001ec6 <HAL_ADC_Init+0xa2>
  3693. 8001ebe: 687b ldr r3, [r7, #4]
  3694. 8001ec0: 689b ldr r3, [r3, #8]
  3695. 8001ec2: 2b01 cmp r3, #1
  3696. 8001ec4: d102 bne.n 8001ecc <HAL_ADC_Init+0xa8>
  3697. 8001ec6: f44f 7380 mov.w r3, #256 ; 0x100
  3698. 8001eca: e000 b.n 8001ece <HAL_ADC_Init+0xaa>
  3699. 8001ecc: 2300 movs r3, #0
  3700. 8001ece: 693a ldr r2, [r7, #16]
  3701. 8001ed0: 4313 orrs r3, r2
  3702. 8001ed2: 613b str r3, [r7, #16]
  3703. /* Enable discontinuous mode only if continuous mode is disabled */
  3704. /* Note: If parameter "Init.ScanConvMode" is set to disable, parameter */
  3705. /* discontinuous is set anyway, but will have no effect on ADC HW. */
  3706. if (hadc->Init.DiscontinuousConvMode == ENABLE)
  3707. 8001ed4: 687b ldr r3, [r7, #4]
  3708. 8001ed6: 7d1b ldrb r3, [r3, #20]
  3709. 8001ed8: 2b01 cmp r3, #1
  3710. 8001eda: d119 bne.n 8001f10 <HAL_ADC_Init+0xec>
  3711. {
  3712. if (hadc->Init.ContinuousConvMode == DISABLE)
  3713. 8001edc: 687b ldr r3, [r7, #4]
  3714. 8001ede: 7b1b ldrb r3, [r3, #12]
  3715. 8001ee0: 2b00 cmp r3, #0
  3716. 8001ee2: d109 bne.n 8001ef8 <HAL_ADC_Init+0xd4>
  3717. {
  3718. /* Enable the selected ADC regular discontinuous mode */
  3719. /* Set the number of channels to be converted in discontinuous mode */
  3720. SET_BIT(tmp_cr1, ADC_CR1_DISCEN |
  3721. 8001ee4: 687b ldr r3, [r7, #4]
  3722. 8001ee6: 699b ldr r3, [r3, #24]
  3723. 8001ee8: 3b01 subs r3, #1
  3724. 8001eea: 035a lsls r2, r3, #13
  3725. 8001eec: 693b ldr r3, [r7, #16]
  3726. 8001eee: 4313 orrs r3, r2
  3727. 8001ef0: f443 6300 orr.w r3, r3, #2048 ; 0x800
  3728. 8001ef4: 613b str r3, [r7, #16]
  3729. 8001ef6: e00b b.n 8001f10 <HAL_ADC_Init+0xec>
  3730. {
  3731. /* ADC regular group settings continuous and sequencer discontinuous*/
  3732. /* cannot be enabled simultaneously. */
  3733. /* Update ADC state machine to error */
  3734. SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
  3735. 8001ef8: 687b ldr r3, [r7, #4]
  3736. 8001efa: 6a9b ldr r3, [r3, #40] ; 0x28
  3737. 8001efc: f043 0220 orr.w r2, r3, #32
  3738. 8001f00: 687b ldr r3, [r7, #4]
  3739. 8001f02: 629a str r2, [r3, #40] ; 0x28
  3740. /* Set ADC error code to ADC IP internal error */
  3741. SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
  3742. 8001f04: 687b ldr r3, [r7, #4]
  3743. 8001f06: 6adb ldr r3, [r3, #44] ; 0x2c
  3744. 8001f08: f043 0201 orr.w r2, r3, #1
  3745. 8001f0c: 687b ldr r3, [r7, #4]
  3746. 8001f0e: 62da str r2, [r3, #44] ; 0x2c
  3747. }
  3748. }
  3749. /* Update ADC configuration register CR1 with previous settings */
  3750. MODIFY_REG(hadc->Instance->CR1,
  3751. 8001f10: 687b ldr r3, [r7, #4]
  3752. 8001f12: 681b ldr r3, [r3, #0]
  3753. 8001f14: 685b ldr r3, [r3, #4]
  3754. 8001f16: f423 4169 bic.w r1, r3, #59648 ; 0xe900
  3755. 8001f1a: 687b ldr r3, [r7, #4]
  3756. 8001f1c: 681b ldr r3, [r3, #0]
  3757. 8001f1e: 693a ldr r2, [r7, #16]
  3758. 8001f20: 430a orrs r2, r1
  3759. 8001f22: 605a str r2, [r3, #4]
  3760. ADC_CR1_DISCEN |
  3761. ADC_CR1_DISCNUM ,
  3762. tmp_cr1 );
  3763. /* Update ADC configuration register CR2 with previous settings */
  3764. MODIFY_REG(hadc->Instance->CR2,
  3765. 8001f24: 687b ldr r3, [r7, #4]
  3766. 8001f26: 681b ldr r3, [r3, #0]
  3767. 8001f28: 689a ldr r2, [r3, #8]
  3768. 8001f2a: 4b28 ldr r3, [pc, #160] ; (8001fcc <HAL_ADC_Init+0x1a8>)
  3769. 8001f2c: 4013 ands r3, r2
  3770. 8001f2e: 687a ldr r2, [r7, #4]
  3771. 8001f30: 6812 ldr r2, [r2, #0]
  3772. 8001f32: 68b9 ldr r1, [r7, #8]
  3773. 8001f34: 430b orrs r3, r1
  3774. 8001f36: 6093 str r3, [r2, #8]
  3775. /* Note: Scan mode is present by hardware on this device and, if */
  3776. /* disabled, discards automatically nb of conversions. Anyway, nb of */
  3777. /* conversions is forced to 0x00 for alignment over all STM32 devices. */
  3778. /* - if scan mode is enabled, regular channels sequence length is set to */
  3779. /* parameter "NbrOfConversion" */
  3780. if (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode) == ADC_SCAN_ENABLE)
  3781. 8001f38: 687b ldr r3, [r7, #4]
  3782. 8001f3a: 689b ldr r3, [r3, #8]
  3783. 8001f3c: f5b3 7f80 cmp.w r3, #256 ; 0x100
  3784. 8001f40: d003 beq.n 8001f4a <HAL_ADC_Init+0x126>
  3785. 8001f42: 687b ldr r3, [r7, #4]
  3786. 8001f44: 689b ldr r3, [r3, #8]
  3787. 8001f46: 2b01 cmp r3, #1
  3788. 8001f48: d104 bne.n 8001f54 <HAL_ADC_Init+0x130>
  3789. {
  3790. tmp_sqr1 = ADC_SQR1_L_SHIFT(hadc->Init.NbrOfConversion);
  3791. 8001f4a: 687b ldr r3, [r7, #4]
  3792. 8001f4c: 691b ldr r3, [r3, #16]
  3793. 8001f4e: 3b01 subs r3, #1
  3794. 8001f50: 051b lsls r3, r3, #20
  3795. 8001f52: 60fb str r3, [r7, #12]
  3796. }
  3797. MODIFY_REG(hadc->Instance->SQR1,
  3798. 8001f54: 687b ldr r3, [r7, #4]
  3799. 8001f56: 681b ldr r3, [r3, #0]
  3800. 8001f58: 6adb ldr r3, [r3, #44] ; 0x2c
  3801. 8001f5a: f423 0170 bic.w r1, r3, #15728640 ; 0xf00000
  3802. 8001f5e: 687b ldr r3, [r7, #4]
  3803. 8001f60: 681b ldr r3, [r3, #0]
  3804. 8001f62: 68fa ldr r2, [r7, #12]
  3805. 8001f64: 430a orrs r2, r1
  3806. 8001f66: 62da str r2, [r3, #44] ; 0x2c
  3807. /* ensure of no potential problem of ADC core IP clocking. */
  3808. /* Check through register CR2 (excluding bits set in other functions: */
  3809. /* execution control bits (ADON, JSWSTART, SWSTART), regular group bits */
  3810. /* (DMA), injected group bits (JEXTTRIG and JEXTSEL), channel internal */
  3811. /* measurement path bit (TSVREFE). */
  3812. if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA |
  3813. 8001f68: 687b ldr r3, [r7, #4]
  3814. 8001f6a: 681b ldr r3, [r3, #0]
  3815. 8001f6c: 689a ldr r2, [r3, #8]
  3816. 8001f6e: 4b18 ldr r3, [pc, #96] ; (8001fd0 <HAL_ADC_Init+0x1ac>)
  3817. 8001f70: 4013 ands r3, r2
  3818. 8001f72: 68ba ldr r2, [r7, #8]
  3819. 8001f74: 429a cmp r2, r3
  3820. 8001f76: d10b bne.n 8001f90 <HAL_ADC_Init+0x16c>
  3821. ADC_CR2_JEXTTRIG | ADC_CR2_JEXTSEL |
  3822. ADC_CR2_TSVREFE ))
  3823. == tmp_cr2)
  3824. {
  3825. /* Set ADC error code to none */
  3826. ADC_CLEAR_ERRORCODE(hadc);
  3827. 8001f78: 687b ldr r3, [r7, #4]
  3828. 8001f7a: 2200 movs r2, #0
  3829. 8001f7c: 62da str r2, [r3, #44] ; 0x2c
  3830. /* Set the ADC state */
  3831. ADC_STATE_CLR_SET(hadc->State,
  3832. 8001f7e: 687b ldr r3, [r7, #4]
  3833. 8001f80: 6a9b ldr r3, [r3, #40] ; 0x28
  3834. 8001f82: f023 0303 bic.w r3, r3, #3
  3835. 8001f86: f043 0201 orr.w r2, r3, #1
  3836. 8001f8a: 687b ldr r3, [r7, #4]
  3837. 8001f8c: 629a str r2, [r3, #40] ; 0x28
  3838. if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA |
  3839. 8001f8e: e018 b.n 8001fc2 <HAL_ADC_Init+0x19e>
  3840. HAL_ADC_STATE_READY);
  3841. }
  3842. else
  3843. {
  3844. /* Update ADC state machine to error */
  3845. ADC_STATE_CLR_SET(hadc->State,
  3846. 8001f90: 687b ldr r3, [r7, #4]
  3847. 8001f92: 6a9b ldr r3, [r3, #40] ; 0x28
  3848. 8001f94: f023 0312 bic.w r3, r3, #18
  3849. 8001f98: f043 0210 orr.w r2, r3, #16
  3850. 8001f9c: 687b ldr r3, [r7, #4]
  3851. 8001f9e: 629a str r2, [r3, #40] ; 0x28
  3852. HAL_ADC_STATE_BUSY_INTERNAL,
  3853. HAL_ADC_STATE_ERROR_INTERNAL);
  3854. /* Set ADC error code to ADC IP internal error */
  3855. SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
  3856. 8001fa0: 687b ldr r3, [r7, #4]
  3857. 8001fa2: 6adb ldr r3, [r3, #44] ; 0x2c
  3858. 8001fa4: f043 0201 orr.w r2, r3, #1
  3859. 8001fa8: 687b ldr r3, [r7, #4]
  3860. 8001faa: 62da str r2, [r3, #44] ; 0x2c
  3861. tmp_hal_status = HAL_ERROR;
  3862. 8001fac: 2301 movs r3, #1
  3863. 8001fae: 75fb strb r3, [r7, #23]
  3864. if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA |
  3865. 8001fb0: e007 b.n 8001fc2 <HAL_ADC_Init+0x19e>
  3866. }
  3867. else
  3868. {
  3869. /* Update ADC state machine to error */
  3870. SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
  3871. 8001fb2: 687b ldr r3, [r7, #4]
  3872. 8001fb4: 6a9b ldr r3, [r3, #40] ; 0x28
  3873. 8001fb6: f043 0210 orr.w r2, r3, #16
  3874. 8001fba: 687b ldr r3, [r7, #4]
  3875. 8001fbc: 629a str r2, [r3, #40] ; 0x28
  3876. tmp_hal_status = HAL_ERROR;
  3877. 8001fbe: 2301 movs r3, #1
  3878. 8001fc0: 75fb strb r3, [r7, #23]
  3879. }
  3880. /* Return function status */
  3881. return tmp_hal_status;
  3882. 8001fc2: 7dfb ldrb r3, [r7, #23]
  3883. }
  3884. 8001fc4: 4618 mov r0, r3
  3885. 8001fc6: 3718 adds r7, #24
  3886. 8001fc8: 46bd mov sp, r7
  3887. 8001fca: bd80 pop {r7, pc}
  3888. 8001fcc: ffe1f7fd .word 0xffe1f7fd
  3889. 8001fd0: ff1f0efe .word 0xff1f0efe
  3890. 08001fd4 <HAL_ADC_Start_DMA>:
  3891. * @param pData: The destination Buffer address.
  3892. * @param Length: The length of data to be transferred from ADC peripheral to memory.
  3893. * @retval None
  3894. */
  3895. HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length)
  3896. {
  3897. 8001fd4: b580 push {r7, lr}
  3898. 8001fd6: b086 sub sp, #24
  3899. 8001fd8: af00 add r7, sp, #0
  3900. 8001fda: 60f8 str r0, [r7, #12]
  3901. 8001fdc: 60b9 str r1, [r7, #8]
  3902. 8001fde: 607a str r2, [r7, #4]
  3903. HAL_StatusTypeDef tmp_hal_status = HAL_OK;
  3904. 8001fe0: 2300 movs r3, #0
  3905. 8001fe2: 75fb strb r3, [r7, #23]
  3906. /* If multimode is enabled, dedicated function multimode conversion */
  3907. /* start DMA must be used. */
  3908. if(ADC_MULTIMODE_IS_ENABLE(hadc) == RESET)
  3909. {
  3910. /* Process locked */
  3911. __HAL_LOCK(hadc);
  3912. 8001fe4: 68fb ldr r3, [r7, #12]
  3913. 8001fe6: f893 3024 ldrb.w r3, [r3, #36] ; 0x24
  3914. 8001fea: 2b01 cmp r3, #1
  3915. 8001fec: d101 bne.n 8001ff2 <HAL_ADC_Start_DMA+0x1e>
  3916. 8001fee: 2302 movs r3, #2
  3917. 8001ff0: e080 b.n 80020f4 <HAL_ADC_Start_DMA+0x120>
  3918. 8001ff2: 68fb ldr r3, [r7, #12]
  3919. 8001ff4: 2201 movs r2, #1
  3920. 8001ff6: f883 2024 strb.w r2, [r3, #36] ; 0x24
  3921. /* Enable the ADC peripheral */
  3922. tmp_hal_status = ADC_Enable(hadc);
  3923. 8001ffa: 68f8 ldr r0, [r7, #12]
  3924. 8001ffc: f000 fa5a bl 80024b4 <ADC_Enable>
  3925. 8002000: 4603 mov r3, r0
  3926. 8002002: 75fb strb r3, [r7, #23]
  3927. /* Start conversion if ADC is effectively enabled */
  3928. if (tmp_hal_status == HAL_OK)
  3929. 8002004: 7dfb ldrb r3, [r7, #23]
  3930. 8002006: 2b00 cmp r3, #0
  3931. 8002008: d16f bne.n 80020ea <HAL_ADC_Start_DMA+0x116>
  3932. {
  3933. /* Set ADC state */
  3934. /* - Clear state bitfield related to regular group conversion results */
  3935. /* - Set state bitfield related to regular operation */
  3936. ADC_STATE_CLR_SET(hadc->State,
  3937. 800200a: 68fb ldr r3, [r7, #12]
  3938. 800200c: 6a9b ldr r3, [r3, #40] ; 0x28
  3939. 800200e: f423 6370 bic.w r3, r3, #3840 ; 0xf00
  3940. 8002012: f023 0301 bic.w r3, r3, #1
  3941. 8002016: f443 7280 orr.w r2, r3, #256 ; 0x100
  3942. 800201a: 68fb ldr r3, [r7, #12]
  3943. 800201c: 629a str r2, [r3, #40] ; 0x28
  3944. /* for all cases of multimode: independent mode, multimode ADC master */
  3945. /* or multimode ADC slave (for devices with several ADCs): */
  3946. if (ADC_NONMULTIMODE_OR_MULTIMODEMASTER(hadc))
  3947. {
  3948. /* Set ADC state (ADC independent or master) */
  3949. CLEAR_BIT(hadc->State, HAL_ADC_STATE_MULTIMODE_SLAVE);
  3950. 800201e: 68fb ldr r3, [r7, #12]
  3951. 8002020: 6a9b ldr r3, [r3, #40] ; 0x28
  3952. 8002022: f423 1280 bic.w r2, r3, #1048576 ; 0x100000
  3953. 8002026: 68fb ldr r3, [r7, #12]
  3954. 8002028: 629a str r2, [r3, #40] ; 0x28
  3955. /* If conversions on group regular are also triggering group injected, */
  3956. /* update ADC state. */
  3957. if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET)
  3958. 800202a: 68fb ldr r3, [r7, #12]
  3959. 800202c: 681b ldr r3, [r3, #0]
  3960. 800202e: 685b ldr r3, [r3, #4]
  3961. 8002030: f403 6380 and.w r3, r3, #1024 ; 0x400
  3962. 8002034: 2b00 cmp r3, #0
  3963. 8002036: d007 beq.n 8002048 <HAL_ADC_Start_DMA+0x74>
  3964. {
  3965. ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
  3966. 8002038: 68fb ldr r3, [r7, #12]
  3967. 800203a: 6a9b ldr r3, [r3, #40] ; 0x28
  3968. 800203c: f423 5340 bic.w r3, r3, #12288 ; 0x3000
  3969. 8002040: f443 5280 orr.w r2, r3, #4096 ; 0x1000
  3970. 8002044: 68fb ldr r3, [r7, #12]
  3971. 8002046: 629a str r2, [r3, #40] ; 0x28
  3972. ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
  3973. }
  3974. }
  3975. /* State machine update: Check if an injected conversion is ongoing */
  3976. if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY))
  3977. 8002048: 68fb ldr r3, [r7, #12]
  3978. 800204a: 6a9b ldr r3, [r3, #40] ; 0x28
  3979. 800204c: f403 5380 and.w r3, r3, #4096 ; 0x1000
  3980. 8002050: 2b00 cmp r3, #0
  3981. 8002052: d006 beq.n 8002062 <HAL_ADC_Start_DMA+0x8e>
  3982. {
  3983. /* Reset ADC error code fields related to conversions on group regular */
  3984. CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA));
  3985. 8002054: 68fb ldr r3, [r7, #12]
  3986. 8002056: 6adb ldr r3, [r3, #44] ; 0x2c
  3987. 8002058: f023 0206 bic.w r2, r3, #6
  3988. 800205c: 68fb ldr r3, [r7, #12]
  3989. 800205e: 62da str r2, [r3, #44] ; 0x2c
  3990. 8002060: e002 b.n 8002068 <HAL_ADC_Start_DMA+0x94>
  3991. }
  3992. else
  3993. {
  3994. /* Reset ADC all error code fields */
  3995. ADC_CLEAR_ERRORCODE(hadc);
  3996. 8002062: 68fb ldr r3, [r7, #12]
  3997. 8002064: 2200 movs r2, #0
  3998. 8002066: 62da str r2, [r3, #44] ; 0x2c
  3999. }
  4000. /* Process unlocked */
  4001. /* Unlock before starting ADC conversions: in case of potential */
  4002. /* interruption, to let the process to ADC IRQ Handler. */
  4003. __HAL_UNLOCK(hadc);
  4004. 8002068: 68fb ldr r3, [r7, #12]
  4005. 800206a: 2200 movs r2, #0
  4006. 800206c: f883 2024 strb.w r2, [r3, #36] ; 0x24
  4007. /* Set the DMA transfer complete callback */
  4008. hadc->DMA_Handle->XferCpltCallback = ADC_DMAConvCplt;
  4009. 8002070: 68fb ldr r3, [r7, #12]
  4010. 8002072: 6a1b ldr r3, [r3, #32]
  4011. 8002074: 4a21 ldr r2, [pc, #132] ; (80020fc <HAL_ADC_Start_DMA+0x128>)
  4012. 8002076: 629a str r2, [r3, #40] ; 0x28
  4013. /* Set the DMA half transfer complete callback */
  4014. hadc->DMA_Handle->XferHalfCpltCallback = ADC_DMAHalfConvCplt;
  4015. 8002078: 68fb ldr r3, [r7, #12]
  4016. 800207a: 6a1b ldr r3, [r3, #32]
  4017. 800207c: 4a20 ldr r2, [pc, #128] ; (8002100 <HAL_ADC_Start_DMA+0x12c>)
  4018. 800207e: 62da str r2, [r3, #44] ; 0x2c
  4019. /* Set the DMA error callback */
  4020. hadc->DMA_Handle->XferErrorCallback = ADC_DMAError;
  4021. 8002080: 68fb ldr r3, [r7, #12]
  4022. 8002082: 6a1b ldr r3, [r3, #32]
  4023. 8002084: 4a1f ldr r2, [pc, #124] ; (8002104 <HAL_ADC_Start_DMA+0x130>)
  4024. 8002086: 631a str r2, [r3, #48] ; 0x30
  4025. /* start (in case of SW start): */
  4026. /* Clear regular group conversion flag and overrun flag */
  4027. /* (To ensure of no unknown state from potential previous ADC */
  4028. /* operations) */
  4029. __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC);
  4030. 8002088: 68fb ldr r3, [r7, #12]
  4031. 800208a: 681b ldr r3, [r3, #0]
  4032. 800208c: f06f 0202 mvn.w r2, #2
  4033. 8002090: 601a str r2, [r3, #0]
  4034. /* Enable ADC DMA mode */
  4035. SET_BIT(hadc->Instance->CR2, ADC_CR2_DMA);
  4036. 8002092: 68fb ldr r3, [r7, #12]
  4037. 8002094: 681b ldr r3, [r3, #0]
  4038. 8002096: 689a ldr r2, [r3, #8]
  4039. 8002098: 68fb ldr r3, [r7, #12]
  4040. 800209a: 681b ldr r3, [r3, #0]
  4041. 800209c: f442 7280 orr.w r2, r2, #256 ; 0x100
  4042. 80020a0: 609a str r2, [r3, #8]
  4043. /* Start the DMA channel */
  4044. HAL_DMA_Start_IT(hadc->DMA_Handle, (uint32_t)&hadc->Instance->DR, (uint32_t)pData, Length);
  4045. 80020a2: 68fb ldr r3, [r7, #12]
  4046. 80020a4: 6a18 ldr r0, [r3, #32]
  4047. 80020a6: 68fb ldr r3, [r7, #12]
  4048. 80020a8: 681b ldr r3, [r3, #0]
  4049. 80020aa: 334c adds r3, #76 ; 0x4c
  4050. 80020ac: 4619 mov r1, r3
  4051. 80020ae: 68ba ldr r2, [r7, #8]
  4052. 80020b0: 687b ldr r3, [r7, #4]
  4053. 80020b2: f000 fcd1 bl 8002a58 <HAL_DMA_Start_IT>
  4054. /* Enable conversion of regular group. */
  4055. /* If software start has been selected, conversion starts immediately. */
  4056. /* If external trigger has been selected, conversion will start at next */
  4057. /* trigger event. */
  4058. if (ADC_IS_SOFTWARE_START_REGULAR(hadc))
  4059. 80020b6: 68fb ldr r3, [r7, #12]
  4060. 80020b8: 681b ldr r3, [r3, #0]
  4061. 80020ba: 689b ldr r3, [r3, #8]
  4062. 80020bc: f403 2360 and.w r3, r3, #917504 ; 0xe0000
  4063. 80020c0: f5b3 2f60 cmp.w r3, #917504 ; 0xe0000
  4064. 80020c4: d108 bne.n 80020d8 <HAL_ADC_Start_DMA+0x104>
  4065. {
  4066. /* Start ADC conversion on regular group with SW start */
  4067. SET_BIT(hadc->Instance->CR2, (ADC_CR2_SWSTART | ADC_CR2_EXTTRIG));
  4068. 80020c6: 68fb ldr r3, [r7, #12]
  4069. 80020c8: 681b ldr r3, [r3, #0]
  4070. 80020ca: 689a ldr r2, [r3, #8]
  4071. 80020cc: 68fb ldr r3, [r7, #12]
  4072. 80020ce: 681b ldr r3, [r3, #0]
  4073. 80020d0: f442 02a0 orr.w r2, r2, #5242880 ; 0x500000
  4074. 80020d4: 609a str r2, [r3, #8]
  4075. 80020d6: e00c b.n 80020f2 <HAL_ADC_Start_DMA+0x11e>
  4076. }
  4077. else
  4078. {
  4079. /* Start ADC conversion on regular group with external trigger */
  4080. SET_BIT(hadc->Instance->CR2, ADC_CR2_EXTTRIG);
  4081. 80020d8: 68fb ldr r3, [r7, #12]
  4082. 80020da: 681b ldr r3, [r3, #0]
  4083. 80020dc: 689a ldr r2, [r3, #8]
  4084. 80020de: 68fb ldr r3, [r7, #12]
  4085. 80020e0: 681b ldr r3, [r3, #0]
  4086. 80020e2: f442 1280 orr.w r2, r2, #1048576 ; 0x100000
  4087. 80020e6: 609a str r2, [r3, #8]
  4088. 80020e8: e003 b.n 80020f2 <HAL_ADC_Start_DMA+0x11e>
  4089. }
  4090. }
  4091. else
  4092. {
  4093. /* Process unlocked */
  4094. __HAL_UNLOCK(hadc);
  4095. 80020ea: 68fb ldr r3, [r7, #12]
  4096. 80020ec: 2200 movs r2, #0
  4097. 80020ee: f883 2024 strb.w r2, [r3, #36] ; 0x24
  4098. {
  4099. tmp_hal_status = HAL_ERROR;
  4100. }
  4101. /* Return function status */
  4102. return tmp_hal_status;
  4103. 80020f2: 7dfb ldrb r3, [r7, #23]
  4104. }
  4105. 80020f4: 4618 mov r0, r3
  4106. 80020f6: 3718 adds r7, #24
  4107. 80020f8: 46bd mov sp, r7
  4108. 80020fa: bd80 pop {r7, pc}
  4109. 80020fc: 080025cd .word 0x080025cd
  4110. 8002100: 08002649 .word 0x08002649
  4111. 8002104: 08002665 .word 0x08002665
  4112. 08002108 <HAL_ADC_IRQHandler>:
  4113. * @brief Handles ADC interrupt request
  4114. * @param hadc: ADC handle
  4115. * @retval None
  4116. */
  4117. void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc)
  4118. {
  4119. 8002108: b580 push {r7, lr}
  4120. 800210a: b082 sub sp, #8
  4121. 800210c: af00 add r7, sp, #0
  4122. 800210e: 6078 str r0, [r7, #4]
  4123. assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
  4124. assert_param(IS_ADC_REGULAR_NB_CONV(hadc->Init.NbrOfConversion));
  4125. /* ========== Check End of Conversion flag for regular group ========== */
  4126. if(__HAL_ADC_GET_IT_SOURCE(hadc, ADC_IT_EOC))
  4127. 8002110: 687b ldr r3, [r7, #4]
  4128. 8002112: 681b ldr r3, [r3, #0]
  4129. 8002114: 685b ldr r3, [r3, #4]
  4130. 8002116: f003 0320 and.w r3, r3, #32
  4131. 800211a: 2b20 cmp r3, #32
  4132. 800211c: d140 bne.n 80021a0 <HAL_ADC_IRQHandler+0x98>
  4133. {
  4134. if(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC) )
  4135. 800211e: 687b ldr r3, [r7, #4]
  4136. 8002120: 681b ldr r3, [r3, #0]
  4137. 8002122: 681b ldr r3, [r3, #0]
  4138. 8002124: f003 0302 and.w r3, r3, #2
  4139. 8002128: 2b02 cmp r3, #2
  4140. 800212a: d139 bne.n 80021a0 <HAL_ADC_IRQHandler+0x98>
  4141. {
  4142. /* Update state machine on conversion status if not in error state */
  4143. if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL))
  4144. 800212c: 687b ldr r3, [r7, #4]
  4145. 800212e: 6a9b ldr r3, [r3, #40] ; 0x28
  4146. 8002130: f003 0310 and.w r3, r3, #16
  4147. 8002134: 2b00 cmp r3, #0
  4148. 8002136: d105 bne.n 8002144 <HAL_ADC_IRQHandler+0x3c>
  4149. {
  4150. /* Set ADC state */
  4151. SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC);
  4152. 8002138: 687b ldr r3, [r7, #4]
  4153. 800213a: 6a9b ldr r3, [r3, #40] ; 0x28
  4154. 800213c: f443 7200 orr.w r2, r3, #512 ; 0x200
  4155. 8002140: 687b ldr r3, [r7, #4]
  4156. 8002142: 629a str r2, [r3, #40] ; 0x28
  4157. /* Determine whether any further conversion upcoming on group regular */
  4158. /* by external trigger, continuous mode or scan sequence on going. */
  4159. /* Note: On STM32F1 devices, in case of sequencer enabled */
  4160. /* (several ranks selected), end of conversion flag is raised */
  4161. /* at the end of the sequence. */
  4162. if(ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
  4163. 8002144: 687b ldr r3, [r7, #4]
  4164. 8002146: 681b ldr r3, [r3, #0]
  4165. 8002148: 689b ldr r3, [r3, #8]
  4166. 800214a: f403 2360 and.w r3, r3, #917504 ; 0xe0000
  4167. 800214e: f5b3 2f60 cmp.w r3, #917504 ; 0xe0000
  4168. 8002152: d11d bne.n 8002190 <HAL_ADC_IRQHandler+0x88>
  4169. (hadc->Init.ContinuousConvMode == DISABLE) )
  4170. 8002154: 687b ldr r3, [r7, #4]
  4171. 8002156: 7b1b ldrb r3, [r3, #12]
  4172. if(ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
  4173. 8002158: 2b00 cmp r3, #0
  4174. 800215a: d119 bne.n 8002190 <HAL_ADC_IRQHandler+0x88>
  4175. {
  4176. /* Disable ADC end of conversion interrupt on group regular */
  4177. __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC);
  4178. 800215c: 687b ldr r3, [r7, #4]
  4179. 800215e: 681b ldr r3, [r3, #0]
  4180. 8002160: 685a ldr r2, [r3, #4]
  4181. 8002162: 687b ldr r3, [r7, #4]
  4182. 8002164: 681b ldr r3, [r3, #0]
  4183. 8002166: f022 0220 bic.w r2, r2, #32
  4184. 800216a: 605a str r2, [r3, #4]
  4185. /* Set ADC state */
  4186. CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
  4187. 800216c: 687b ldr r3, [r7, #4]
  4188. 800216e: 6a9b ldr r3, [r3, #40] ; 0x28
  4189. 8002170: f423 7280 bic.w r2, r3, #256 ; 0x100
  4190. 8002174: 687b ldr r3, [r7, #4]
  4191. 8002176: 629a str r2, [r3, #40] ; 0x28
  4192. if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY))
  4193. 8002178: 687b ldr r3, [r7, #4]
  4194. 800217a: 6a9b ldr r3, [r3, #40] ; 0x28
  4195. 800217c: f403 5380 and.w r3, r3, #4096 ; 0x1000
  4196. 8002180: 2b00 cmp r3, #0
  4197. 8002182: d105 bne.n 8002190 <HAL_ADC_IRQHandler+0x88>
  4198. {
  4199. SET_BIT(hadc->State, HAL_ADC_STATE_READY);
  4200. 8002184: 687b ldr r3, [r7, #4]
  4201. 8002186: 6a9b ldr r3, [r3, #40] ; 0x28
  4202. 8002188: f043 0201 orr.w r2, r3, #1
  4203. 800218c: 687b ldr r3, [r7, #4]
  4204. 800218e: 629a str r2, [r3, #40] ; 0x28
  4205. /* Conversion complete callback */
  4206. #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
  4207. hadc->ConvCpltCallback(hadc);
  4208. #else
  4209. HAL_ADC_ConvCpltCallback(hadc);
  4210. 8002190: 6878 ldr r0, [r7, #4]
  4211. 8002192: f7ff faab bl 80016ec <HAL_ADC_ConvCpltCallback>
  4212. #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
  4213. /* Clear regular group conversion flag */
  4214. __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC);
  4215. 8002196: 687b ldr r3, [r7, #4]
  4216. 8002198: 681b ldr r3, [r3, #0]
  4217. 800219a: f06f 0212 mvn.w r2, #18
  4218. 800219e: 601a str r2, [r3, #0]
  4219. }
  4220. }
  4221. /* ========== Check End of Conversion flag for injected group ========== */
  4222. if(__HAL_ADC_GET_IT_SOURCE(hadc, ADC_IT_JEOC))
  4223. 80021a0: 687b ldr r3, [r7, #4]
  4224. 80021a2: 681b ldr r3, [r3, #0]
  4225. 80021a4: 685b ldr r3, [r3, #4]
  4226. 80021a6: f003 0380 and.w r3, r3, #128 ; 0x80
  4227. 80021aa: 2b80 cmp r3, #128 ; 0x80
  4228. 80021ac: d14f bne.n 800224e <HAL_ADC_IRQHandler+0x146>
  4229. {
  4230. if(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_JEOC))
  4231. 80021ae: 687b ldr r3, [r7, #4]
  4232. 80021b0: 681b ldr r3, [r3, #0]
  4233. 80021b2: 681b ldr r3, [r3, #0]
  4234. 80021b4: f003 0304 and.w r3, r3, #4
  4235. 80021b8: 2b04 cmp r3, #4
  4236. 80021ba: d148 bne.n 800224e <HAL_ADC_IRQHandler+0x146>
  4237. {
  4238. /* Update state machine on conversion status if not in error state */
  4239. if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL))
  4240. 80021bc: 687b ldr r3, [r7, #4]
  4241. 80021be: 6a9b ldr r3, [r3, #40] ; 0x28
  4242. 80021c0: f003 0310 and.w r3, r3, #16
  4243. 80021c4: 2b00 cmp r3, #0
  4244. 80021c6: d105 bne.n 80021d4 <HAL_ADC_IRQHandler+0xcc>
  4245. {
  4246. /* Set ADC state */
  4247. SET_BIT(hadc->State, HAL_ADC_STATE_INJ_EOC);
  4248. 80021c8: 687b ldr r3, [r7, #4]
  4249. 80021ca: 6a9b ldr r3, [r3, #40] ; 0x28
  4250. 80021cc: f443 5200 orr.w r2, r3, #8192 ; 0x2000
  4251. 80021d0: 687b ldr r3, [r7, #4]
  4252. 80021d2: 629a str r2, [r3, #40] ; 0x28
  4253. /* conversion from group regular (same conditions as group regular */
  4254. /* interruption disabling above). */
  4255. /* Note: On STM32F1 devices, in case of sequencer enabled */
  4256. /* (several ranks selected), end of conversion flag is raised */
  4257. /* at the end of the sequence. */
  4258. if(ADC_IS_SOFTWARE_START_INJECTED(hadc) ||
  4259. 80021d4: 687b ldr r3, [r7, #4]
  4260. 80021d6: 681b ldr r3, [r3, #0]
  4261. 80021d8: 689b ldr r3, [r3, #8]
  4262. 80021da: f403 43e0 and.w r3, r3, #28672 ; 0x7000
  4263. 80021de: f5b3 4fe0 cmp.w r3, #28672 ; 0x7000
  4264. 80021e2: d012 beq.n 800220a <HAL_ADC_IRQHandler+0x102>
  4265. (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) &&
  4266. 80021e4: 687b ldr r3, [r7, #4]
  4267. 80021e6: 681b ldr r3, [r3, #0]
  4268. 80021e8: 685b ldr r3, [r3, #4]
  4269. 80021ea: f403 6380 and.w r3, r3, #1024 ; 0x400
  4270. if(ADC_IS_SOFTWARE_START_INJECTED(hadc) ||
  4271. 80021ee: 2b00 cmp r3, #0
  4272. 80021f0: d125 bne.n 800223e <HAL_ADC_IRQHandler+0x136>
  4273. (ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
  4274. 80021f2: 687b ldr r3, [r7, #4]
  4275. 80021f4: 681b ldr r3, [r3, #0]
  4276. 80021f6: 689b ldr r3, [r3, #8]
  4277. 80021f8: f403 2360 and.w r3, r3, #917504 ; 0xe0000
  4278. (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) &&
  4279. 80021fc: f5b3 2f60 cmp.w r3, #917504 ; 0xe0000
  4280. 8002200: d11d bne.n 800223e <HAL_ADC_IRQHandler+0x136>
  4281. (hadc->Init.ContinuousConvMode == DISABLE) ) ) )
  4282. 8002202: 687b ldr r3, [r7, #4]
  4283. 8002204: 7b1b ldrb r3, [r3, #12]
  4284. (ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
  4285. 8002206: 2b00 cmp r3, #0
  4286. 8002208: d119 bne.n 800223e <HAL_ADC_IRQHandler+0x136>
  4287. {
  4288. /* Disable ADC end of conversion interrupt on group injected */
  4289. __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC);
  4290. 800220a: 687b ldr r3, [r7, #4]
  4291. 800220c: 681b ldr r3, [r3, #0]
  4292. 800220e: 685a ldr r2, [r3, #4]
  4293. 8002210: 687b ldr r3, [r7, #4]
  4294. 8002212: 681b ldr r3, [r3, #0]
  4295. 8002214: f022 0280 bic.w r2, r2, #128 ; 0x80
  4296. 8002218: 605a str r2, [r3, #4]
  4297. /* Set ADC state */
  4298. CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY);
  4299. 800221a: 687b ldr r3, [r7, #4]
  4300. 800221c: 6a9b ldr r3, [r3, #40] ; 0x28
  4301. 800221e: f423 5280 bic.w r2, r3, #4096 ; 0x1000
  4302. 8002222: 687b ldr r3, [r7, #4]
  4303. 8002224: 629a str r2, [r3, #40] ; 0x28
  4304. if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY))
  4305. 8002226: 687b ldr r3, [r7, #4]
  4306. 8002228: 6a9b ldr r3, [r3, #40] ; 0x28
  4307. 800222a: f403 7380 and.w r3, r3, #256 ; 0x100
  4308. 800222e: 2b00 cmp r3, #0
  4309. 8002230: d105 bne.n 800223e <HAL_ADC_IRQHandler+0x136>
  4310. {
  4311. SET_BIT(hadc->State, HAL_ADC_STATE_READY);
  4312. 8002232: 687b ldr r3, [r7, #4]
  4313. 8002234: 6a9b ldr r3, [r3, #40] ; 0x28
  4314. 8002236: f043 0201 orr.w r2, r3, #1
  4315. 800223a: 687b ldr r3, [r7, #4]
  4316. 800223c: 629a str r2, [r3, #40] ; 0x28
  4317. /* Conversion complete callback */
  4318. #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
  4319. hadc->InjectedConvCpltCallback(hadc);
  4320. #else
  4321. HAL_ADCEx_InjectedConvCpltCallback(hadc);
  4322. 800223e: 6878 ldr r0, [r7, #4]
  4323. 8002240: f000 fac6 bl 80027d0 <HAL_ADCEx_InjectedConvCpltCallback>
  4324. #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
  4325. /* Clear injected group conversion flag */
  4326. __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_JSTRT | ADC_FLAG_JEOC));
  4327. 8002244: 687b ldr r3, [r7, #4]
  4328. 8002246: 681b ldr r3, [r3, #0]
  4329. 8002248: f06f 020c mvn.w r2, #12
  4330. 800224c: 601a str r2, [r3, #0]
  4331. }
  4332. }
  4333. /* ========== Check Analog watchdog flags ========== */
  4334. if(__HAL_ADC_GET_IT_SOURCE(hadc, ADC_IT_AWD))
  4335. 800224e: 687b ldr r3, [r7, #4]
  4336. 8002250: 681b ldr r3, [r3, #0]
  4337. 8002252: 685b ldr r3, [r3, #4]
  4338. 8002254: f003 0340 and.w r3, r3, #64 ; 0x40
  4339. 8002258: 2b40 cmp r3, #64 ; 0x40
  4340. 800225a: d114 bne.n 8002286 <HAL_ADC_IRQHandler+0x17e>
  4341. {
  4342. if(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_AWD))
  4343. 800225c: 687b ldr r3, [r7, #4]
  4344. 800225e: 681b ldr r3, [r3, #0]
  4345. 8002260: 681b ldr r3, [r3, #0]
  4346. 8002262: f003 0301 and.w r3, r3, #1
  4347. 8002266: 2b01 cmp r3, #1
  4348. 8002268: d10d bne.n 8002286 <HAL_ADC_IRQHandler+0x17e>
  4349. {
  4350. /* Set ADC state */
  4351. SET_BIT(hadc->State, HAL_ADC_STATE_AWD1);
  4352. 800226a: 687b ldr r3, [r7, #4]
  4353. 800226c: 6a9b ldr r3, [r3, #40] ; 0x28
  4354. 800226e: f443 3280 orr.w r2, r3, #65536 ; 0x10000
  4355. 8002272: 687b ldr r3, [r7, #4]
  4356. 8002274: 629a str r2, [r3, #40] ; 0x28
  4357. /* Level out of window callback */
  4358. #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
  4359. hadc->LevelOutOfWindowCallback(hadc);
  4360. #else
  4361. HAL_ADC_LevelOutOfWindowCallback(hadc);
  4362. 8002276: 6878 ldr r0, [r7, #4]
  4363. 8002278: f000 f812 bl 80022a0 <HAL_ADC_LevelOutOfWindowCallback>
  4364. #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
  4365. /* Clear the ADC analog watchdog flag */
  4366. __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD);
  4367. 800227c: 687b ldr r3, [r7, #4]
  4368. 800227e: 681b ldr r3, [r3, #0]
  4369. 8002280: f06f 0201 mvn.w r2, #1
  4370. 8002284: 601a str r2, [r3, #0]
  4371. }
  4372. }
  4373. }
  4374. 8002286: bf00 nop
  4375. 8002288: 3708 adds r7, #8
  4376. 800228a: 46bd mov sp, r7
  4377. 800228c: bd80 pop {r7, pc}
  4378. 0800228e <HAL_ADC_ConvHalfCpltCallback>:
  4379. * @brief Conversion DMA half-transfer callback in non blocking mode
  4380. * @param hadc: ADC handle
  4381. * @retval None
  4382. */
  4383. __weak void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc)
  4384. {
  4385. 800228e: b480 push {r7}
  4386. 8002290: b083 sub sp, #12
  4387. 8002292: af00 add r7, sp, #0
  4388. 8002294: 6078 str r0, [r7, #4]
  4389. /* Prevent unused argument(s) compilation warning */
  4390. UNUSED(hadc);
  4391. /* NOTE : This function should not be modified. When the callback is needed,
  4392. function HAL_ADC_ConvHalfCpltCallback must be implemented in the user file.
  4393. */
  4394. }
  4395. 8002296: bf00 nop
  4396. 8002298: 370c adds r7, #12
  4397. 800229a: 46bd mov sp, r7
  4398. 800229c: bc80 pop {r7}
  4399. 800229e: 4770 bx lr
  4400. 080022a0 <HAL_ADC_LevelOutOfWindowCallback>:
  4401. * @brief Analog watchdog callback in non blocking mode.
  4402. * @param hadc: ADC handle
  4403. * @retval None
  4404. */
  4405. __weak void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc)
  4406. {
  4407. 80022a0: b480 push {r7}
  4408. 80022a2: b083 sub sp, #12
  4409. 80022a4: af00 add r7, sp, #0
  4410. 80022a6: 6078 str r0, [r7, #4]
  4411. /* Prevent unused argument(s) compilation warning */
  4412. UNUSED(hadc);
  4413. /* NOTE : This function should not be modified. When the callback is needed,
  4414. function HAL_ADC_LevelOutOfWindowCallback must be implemented in the user file.
  4415. */
  4416. }
  4417. 80022a8: bf00 nop
  4418. 80022aa: 370c adds r7, #12
  4419. 80022ac: 46bd mov sp, r7
  4420. 80022ae: bc80 pop {r7}
  4421. 80022b0: 4770 bx lr
  4422. 080022b2 <HAL_ADC_ErrorCallback>:
  4423. * (ADC conversion with interruption or transfer by DMA)
  4424. * @param hadc: ADC handle
  4425. * @retval None
  4426. */
  4427. __weak void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc)
  4428. {
  4429. 80022b2: b480 push {r7}
  4430. 80022b4: b083 sub sp, #12
  4431. 80022b6: af00 add r7, sp, #0
  4432. 80022b8: 6078 str r0, [r7, #4]
  4433. /* Prevent unused argument(s) compilation warning */
  4434. UNUSED(hadc);
  4435. /* NOTE : This function should not be modified. When the callback is needed,
  4436. function HAL_ADC_ErrorCallback must be implemented in the user file.
  4437. */
  4438. }
  4439. 80022ba: bf00 nop
  4440. 80022bc: 370c adds r7, #12
  4441. 80022be: 46bd mov sp, r7
  4442. 80022c0: bc80 pop {r7}
  4443. 80022c2: 4770 bx lr
  4444. 080022c4 <HAL_ADC_ConfigChannel>:
  4445. * @param hadc: ADC handle
  4446. * @param sConfig: Structure of ADC channel for regular group.
  4447. * @retval HAL status
  4448. */
  4449. HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig)
  4450. {
  4451. 80022c4: b480 push {r7}
  4452. 80022c6: b085 sub sp, #20
  4453. 80022c8: af00 add r7, sp, #0
  4454. 80022ca: 6078 str r0, [r7, #4]
  4455. 80022cc: 6039 str r1, [r7, #0]
  4456. HAL_StatusTypeDef tmp_hal_status = HAL_OK;
  4457. 80022ce: 2300 movs r3, #0
  4458. 80022d0: 73fb strb r3, [r7, #15]
  4459. __IO uint32_t wait_loop_index = 0U;
  4460. 80022d2: 2300 movs r3, #0
  4461. 80022d4: 60bb str r3, [r7, #8]
  4462. assert_param(IS_ADC_CHANNEL(sConfig->Channel));
  4463. assert_param(IS_ADC_REGULAR_RANK(sConfig->Rank));
  4464. assert_param(IS_ADC_SAMPLE_TIME(sConfig->SamplingTime));
  4465. /* Process locked */
  4466. __HAL_LOCK(hadc);
  4467. 80022d6: 687b ldr r3, [r7, #4]
  4468. 80022d8: f893 3024 ldrb.w r3, [r3, #36] ; 0x24
  4469. 80022dc: 2b01 cmp r3, #1
  4470. 80022de: d101 bne.n 80022e4 <HAL_ADC_ConfigChannel+0x20>
  4471. 80022e0: 2302 movs r3, #2
  4472. 80022e2: e0dc b.n 800249e <HAL_ADC_ConfigChannel+0x1da>
  4473. 80022e4: 687b ldr r3, [r7, #4]
  4474. 80022e6: 2201 movs r2, #1
  4475. 80022e8: f883 2024 strb.w r2, [r3, #36] ; 0x24
  4476. /* Regular sequence configuration */
  4477. /* For Rank 1 to 6 */
  4478. if (sConfig->Rank < 7U)
  4479. 80022ec: 683b ldr r3, [r7, #0]
  4480. 80022ee: 685b ldr r3, [r3, #4]
  4481. 80022f0: 2b06 cmp r3, #6
  4482. 80022f2: d81c bhi.n 800232e <HAL_ADC_ConfigChannel+0x6a>
  4483. {
  4484. MODIFY_REG(hadc->Instance->SQR3 ,
  4485. 80022f4: 687b ldr r3, [r7, #4]
  4486. 80022f6: 681b ldr r3, [r3, #0]
  4487. 80022f8: 6b59 ldr r1, [r3, #52] ; 0x34
  4488. 80022fa: 683b ldr r3, [r7, #0]
  4489. 80022fc: 685a ldr r2, [r3, #4]
  4490. 80022fe: 4613 mov r3, r2
  4491. 8002300: 009b lsls r3, r3, #2
  4492. 8002302: 4413 add r3, r2
  4493. 8002304: 3b05 subs r3, #5
  4494. 8002306: 221f movs r2, #31
  4495. 8002308: fa02 f303 lsl.w r3, r2, r3
  4496. 800230c: 43db mvns r3, r3
  4497. 800230e: 4019 ands r1, r3
  4498. 8002310: 683b ldr r3, [r7, #0]
  4499. 8002312: 6818 ldr r0, [r3, #0]
  4500. 8002314: 683b ldr r3, [r7, #0]
  4501. 8002316: 685a ldr r2, [r3, #4]
  4502. 8002318: 4613 mov r3, r2
  4503. 800231a: 009b lsls r3, r3, #2
  4504. 800231c: 4413 add r3, r2
  4505. 800231e: 3b05 subs r3, #5
  4506. 8002320: fa00 f203 lsl.w r2, r0, r3
  4507. 8002324: 687b ldr r3, [r7, #4]
  4508. 8002326: 681b ldr r3, [r3, #0]
  4509. 8002328: 430a orrs r2, r1
  4510. 800232a: 635a str r2, [r3, #52] ; 0x34
  4511. 800232c: e03c b.n 80023a8 <HAL_ADC_ConfigChannel+0xe4>
  4512. ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->Rank) ,
  4513. ADC_SQR3_RK(sConfig->Channel, sConfig->Rank) );
  4514. }
  4515. /* For Rank 7 to 12 */
  4516. else if (sConfig->Rank < 13U)
  4517. 800232e: 683b ldr r3, [r7, #0]
  4518. 8002330: 685b ldr r3, [r3, #4]
  4519. 8002332: 2b0c cmp r3, #12
  4520. 8002334: d81c bhi.n 8002370 <HAL_ADC_ConfigChannel+0xac>
  4521. {
  4522. MODIFY_REG(hadc->Instance->SQR2 ,
  4523. 8002336: 687b ldr r3, [r7, #4]
  4524. 8002338: 681b ldr r3, [r3, #0]
  4525. 800233a: 6b19 ldr r1, [r3, #48] ; 0x30
  4526. 800233c: 683b ldr r3, [r7, #0]
  4527. 800233e: 685a ldr r2, [r3, #4]
  4528. 8002340: 4613 mov r3, r2
  4529. 8002342: 009b lsls r3, r3, #2
  4530. 8002344: 4413 add r3, r2
  4531. 8002346: 3b23 subs r3, #35 ; 0x23
  4532. 8002348: 221f movs r2, #31
  4533. 800234a: fa02 f303 lsl.w r3, r2, r3
  4534. 800234e: 43db mvns r3, r3
  4535. 8002350: 4019 ands r1, r3
  4536. 8002352: 683b ldr r3, [r7, #0]
  4537. 8002354: 6818 ldr r0, [r3, #0]
  4538. 8002356: 683b ldr r3, [r7, #0]
  4539. 8002358: 685a ldr r2, [r3, #4]
  4540. 800235a: 4613 mov r3, r2
  4541. 800235c: 009b lsls r3, r3, #2
  4542. 800235e: 4413 add r3, r2
  4543. 8002360: 3b23 subs r3, #35 ; 0x23
  4544. 8002362: fa00 f203 lsl.w r2, r0, r3
  4545. 8002366: 687b ldr r3, [r7, #4]
  4546. 8002368: 681b ldr r3, [r3, #0]
  4547. 800236a: 430a orrs r2, r1
  4548. 800236c: 631a str r2, [r3, #48] ; 0x30
  4549. 800236e: e01b b.n 80023a8 <HAL_ADC_ConfigChannel+0xe4>
  4550. ADC_SQR2_RK(sConfig->Channel, sConfig->Rank) );
  4551. }
  4552. /* For Rank 13 to 16 */
  4553. else
  4554. {
  4555. MODIFY_REG(hadc->Instance->SQR1 ,
  4556. 8002370: 687b ldr r3, [r7, #4]
  4557. 8002372: 681b ldr r3, [r3, #0]
  4558. 8002374: 6ad9 ldr r1, [r3, #44] ; 0x2c
  4559. 8002376: 683b ldr r3, [r7, #0]
  4560. 8002378: 685a ldr r2, [r3, #4]
  4561. 800237a: 4613 mov r3, r2
  4562. 800237c: 009b lsls r3, r3, #2
  4563. 800237e: 4413 add r3, r2
  4564. 8002380: 3b41 subs r3, #65 ; 0x41
  4565. 8002382: 221f movs r2, #31
  4566. 8002384: fa02 f303 lsl.w r3, r2, r3
  4567. 8002388: 43db mvns r3, r3
  4568. 800238a: 4019 ands r1, r3
  4569. 800238c: 683b ldr r3, [r7, #0]
  4570. 800238e: 6818 ldr r0, [r3, #0]
  4571. 8002390: 683b ldr r3, [r7, #0]
  4572. 8002392: 685a ldr r2, [r3, #4]
  4573. 8002394: 4613 mov r3, r2
  4574. 8002396: 009b lsls r3, r3, #2
  4575. 8002398: 4413 add r3, r2
  4576. 800239a: 3b41 subs r3, #65 ; 0x41
  4577. 800239c: fa00 f203 lsl.w r2, r0, r3
  4578. 80023a0: 687b ldr r3, [r7, #4]
  4579. 80023a2: 681b ldr r3, [r3, #0]
  4580. 80023a4: 430a orrs r2, r1
  4581. 80023a6: 62da str r2, [r3, #44] ; 0x2c
  4582. }
  4583. /* Channel sampling time configuration */
  4584. /* For channels 10 to 17 */
  4585. if (sConfig->Channel >= ADC_CHANNEL_10)
  4586. 80023a8: 683b ldr r3, [r7, #0]
  4587. 80023aa: 681b ldr r3, [r3, #0]
  4588. 80023ac: 2b09 cmp r3, #9
  4589. 80023ae: d91c bls.n 80023ea <HAL_ADC_ConfigChannel+0x126>
  4590. {
  4591. MODIFY_REG(hadc->Instance->SMPR1 ,
  4592. 80023b0: 687b ldr r3, [r7, #4]
  4593. 80023b2: 681b ldr r3, [r3, #0]
  4594. 80023b4: 68d9 ldr r1, [r3, #12]
  4595. 80023b6: 683b ldr r3, [r7, #0]
  4596. 80023b8: 681a ldr r2, [r3, #0]
  4597. 80023ba: 4613 mov r3, r2
  4598. 80023bc: 005b lsls r3, r3, #1
  4599. 80023be: 4413 add r3, r2
  4600. 80023c0: 3b1e subs r3, #30
  4601. 80023c2: 2207 movs r2, #7
  4602. 80023c4: fa02 f303 lsl.w r3, r2, r3
  4603. 80023c8: 43db mvns r3, r3
  4604. 80023ca: 4019 ands r1, r3
  4605. 80023cc: 683b ldr r3, [r7, #0]
  4606. 80023ce: 6898 ldr r0, [r3, #8]
  4607. 80023d0: 683b ldr r3, [r7, #0]
  4608. 80023d2: 681a ldr r2, [r3, #0]
  4609. 80023d4: 4613 mov r3, r2
  4610. 80023d6: 005b lsls r3, r3, #1
  4611. 80023d8: 4413 add r3, r2
  4612. 80023da: 3b1e subs r3, #30
  4613. 80023dc: fa00 f203 lsl.w r2, r0, r3
  4614. 80023e0: 687b ldr r3, [r7, #4]
  4615. 80023e2: 681b ldr r3, [r3, #0]
  4616. 80023e4: 430a orrs r2, r1
  4617. 80023e6: 60da str r2, [r3, #12]
  4618. 80023e8: e019 b.n 800241e <HAL_ADC_ConfigChannel+0x15a>
  4619. ADC_SMPR1(ADC_SMPR1_SMP10, sConfig->Channel) ,
  4620. ADC_SMPR1(sConfig->SamplingTime, sConfig->Channel) );
  4621. }
  4622. else /* For channels 0 to 9 */
  4623. {
  4624. MODIFY_REG(hadc->Instance->SMPR2 ,
  4625. 80023ea: 687b ldr r3, [r7, #4]
  4626. 80023ec: 681b ldr r3, [r3, #0]
  4627. 80023ee: 6919 ldr r1, [r3, #16]
  4628. 80023f0: 683b ldr r3, [r7, #0]
  4629. 80023f2: 681a ldr r2, [r3, #0]
  4630. 80023f4: 4613 mov r3, r2
  4631. 80023f6: 005b lsls r3, r3, #1
  4632. 80023f8: 4413 add r3, r2
  4633. 80023fa: 2207 movs r2, #7
  4634. 80023fc: fa02 f303 lsl.w r3, r2, r3
  4635. 8002400: 43db mvns r3, r3
  4636. 8002402: 4019 ands r1, r3
  4637. 8002404: 683b ldr r3, [r7, #0]
  4638. 8002406: 6898 ldr r0, [r3, #8]
  4639. 8002408: 683b ldr r3, [r7, #0]
  4640. 800240a: 681a ldr r2, [r3, #0]
  4641. 800240c: 4613 mov r3, r2
  4642. 800240e: 005b lsls r3, r3, #1
  4643. 8002410: 4413 add r3, r2
  4644. 8002412: fa00 f203 lsl.w r2, r0, r3
  4645. 8002416: 687b ldr r3, [r7, #4]
  4646. 8002418: 681b ldr r3, [r3, #0]
  4647. 800241a: 430a orrs r2, r1
  4648. 800241c: 611a str r2, [r3, #16]
  4649. ADC_SMPR2(sConfig->SamplingTime, sConfig->Channel) );
  4650. }
  4651. /* If ADC1 Channel_16 or Channel_17 is selected, enable Temperature sensor */
  4652. /* and VREFINT measurement path. */
  4653. if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) ||
  4654. 800241e: 683b ldr r3, [r7, #0]
  4655. 8002420: 681b ldr r3, [r3, #0]
  4656. 8002422: 2b10 cmp r3, #16
  4657. 8002424: d003 beq.n 800242e <HAL_ADC_ConfigChannel+0x16a>
  4658. (sConfig->Channel == ADC_CHANNEL_VREFINT) )
  4659. 8002426: 683b ldr r3, [r7, #0]
  4660. 8002428: 681b ldr r3, [r3, #0]
  4661. if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) ||
  4662. 800242a: 2b11 cmp r3, #17
  4663. 800242c: d132 bne.n 8002494 <HAL_ADC_ConfigChannel+0x1d0>
  4664. {
  4665. /* For STM32F1 devices with several ADC: Only ADC1 can access internal */
  4666. /* measurement channels (VrefInt/TempSensor). If these channels are */
  4667. /* intended to be set on other ADC instances, an error is reported. */
  4668. if (hadc->Instance == ADC1)
  4669. 800242e: 687b ldr r3, [r7, #4]
  4670. 8002430: 681b ldr r3, [r3, #0]
  4671. 8002432: 4a1d ldr r2, [pc, #116] ; (80024a8 <HAL_ADC_ConfigChannel+0x1e4>)
  4672. 8002434: 4293 cmp r3, r2
  4673. 8002436: d125 bne.n 8002484 <HAL_ADC_ConfigChannel+0x1c0>
  4674. {
  4675. if (READ_BIT(hadc->Instance->CR2, ADC_CR2_TSVREFE) == RESET)
  4676. 8002438: 687b ldr r3, [r7, #4]
  4677. 800243a: 681b ldr r3, [r3, #0]
  4678. 800243c: 689b ldr r3, [r3, #8]
  4679. 800243e: f403 0300 and.w r3, r3, #8388608 ; 0x800000
  4680. 8002442: 2b00 cmp r3, #0
  4681. 8002444: d126 bne.n 8002494 <HAL_ADC_ConfigChannel+0x1d0>
  4682. {
  4683. SET_BIT(hadc->Instance->CR2, ADC_CR2_TSVREFE);
  4684. 8002446: 687b ldr r3, [r7, #4]
  4685. 8002448: 681b ldr r3, [r3, #0]
  4686. 800244a: 689a ldr r2, [r3, #8]
  4687. 800244c: 687b ldr r3, [r7, #4]
  4688. 800244e: 681b ldr r3, [r3, #0]
  4689. 8002450: f442 0200 orr.w r2, r2, #8388608 ; 0x800000
  4690. 8002454: 609a str r2, [r3, #8]
  4691. if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR))
  4692. 8002456: 683b ldr r3, [r7, #0]
  4693. 8002458: 681b ldr r3, [r3, #0]
  4694. 800245a: 2b10 cmp r3, #16
  4695. 800245c: d11a bne.n 8002494 <HAL_ADC_ConfigChannel+0x1d0>
  4696. {
  4697. /* Delay for temperature sensor stabilization time */
  4698. /* Compute number of CPU cycles to wait for */
  4699. wait_loop_index = (ADC_TEMPSENSOR_DELAY_US * (SystemCoreClock / 1000000U));
  4700. 800245e: 4b13 ldr r3, [pc, #76] ; (80024ac <HAL_ADC_ConfigChannel+0x1e8>)
  4701. 8002460: 681b ldr r3, [r3, #0]
  4702. 8002462: 4a13 ldr r2, [pc, #76] ; (80024b0 <HAL_ADC_ConfigChannel+0x1ec>)
  4703. 8002464: fba2 2303 umull r2, r3, r2, r3
  4704. 8002468: 0c9a lsrs r2, r3, #18
  4705. 800246a: 4613 mov r3, r2
  4706. 800246c: 009b lsls r3, r3, #2
  4707. 800246e: 4413 add r3, r2
  4708. 8002470: 005b lsls r3, r3, #1
  4709. 8002472: 60bb str r3, [r7, #8]
  4710. while(wait_loop_index != 0U)
  4711. 8002474: e002 b.n 800247c <HAL_ADC_ConfigChannel+0x1b8>
  4712. {
  4713. wait_loop_index--;
  4714. 8002476: 68bb ldr r3, [r7, #8]
  4715. 8002478: 3b01 subs r3, #1
  4716. 800247a: 60bb str r3, [r7, #8]
  4717. while(wait_loop_index != 0U)
  4718. 800247c: 68bb ldr r3, [r7, #8]
  4719. 800247e: 2b00 cmp r3, #0
  4720. 8002480: d1f9 bne.n 8002476 <HAL_ADC_ConfigChannel+0x1b2>
  4721. 8002482: e007 b.n 8002494 <HAL_ADC_ConfigChannel+0x1d0>
  4722. }
  4723. }
  4724. else
  4725. {
  4726. /* Update ADC state machine to error */
  4727. SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
  4728. 8002484: 687b ldr r3, [r7, #4]
  4729. 8002486: 6a9b ldr r3, [r3, #40] ; 0x28
  4730. 8002488: f043 0220 orr.w r2, r3, #32
  4731. 800248c: 687b ldr r3, [r7, #4]
  4732. 800248e: 629a str r2, [r3, #40] ; 0x28
  4733. tmp_hal_status = HAL_ERROR;
  4734. 8002490: 2301 movs r3, #1
  4735. 8002492: 73fb strb r3, [r7, #15]
  4736. }
  4737. }
  4738. /* Process unlocked */
  4739. __HAL_UNLOCK(hadc);
  4740. 8002494: 687b ldr r3, [r7, #4]
  4741. 8002496: 2200 movs r2, #0
  4742. 8002498: f883 2024 strb.w r2, [r3, #36] ; 0x24
  4743. /* Return function status */
  4744. return tmp_hal_status;
  4745. 800249c: 7bfb ldrb r3, [r7, #15]
  4746. }
  4747. 800249e: 4618 mov r0, r3
  4748. 80024a0: 3714 adds r7, #20
  4749. 80024a2: 46bd mov sp, r7
  4750. 80024a4: bc80 pop {r7}
  4751. 80024a6: 4770 bx lr
  4752. 80024a8: 40012400 .word 0x40012400
  4753. 80024ac: 20000008 .word 0x20000008
  4754. 80024b0: 431bde83 .word 0x431bde83
  4755. 080024b4 <ADC_Enable>:
  4756. * and voltage regulator must be enabled (done into HAL_ADC_Init()).
  4757. * @param hadc: ADC handle
  4758. * @retval HAL status.
  4759. */
  4760. HAL_StatusTypeDef ADC_Enable(ADC_HandleTypeDef* hadc)
  4761. {
  4762. 80024b4: b580 push {r7, lr}
  4763. 80024b6: b084 sub sp, #16
  4764. 80024b8: af00 add r7, sp, #0
  4765. 80024ba: 6078 str r0, [r7, #4]
  4766. uint32_t tickstart = 0U;
  4767. 80024bc: 2300 movs r3, #0
  4768. 80024be: 60fb str r3, [r7, #12]
  4769. __IO uint32_t wait_loop_index = 0U;
  4770. 80024c0: 2300 movs r3, #0
  4771. 80024c2: 60bb str r3, [r7, #8]
  4772. /* ADC enable and wait for ADC ready (in case of ADC is disabled or */
  4773. /* enabling phase not yet completed: flag ADC ready not yet set). */
  4774. /* Timeout implemented to not be stuck if ADC cannot be enabled (possible */
  4775. /* causes: ADC clock not running, ...). */
  4776. if (ADC_IS_ENABLE(hadc) == RESET)
  4777. 80024c4: 687b ldr r3, [r7, #4]
  4778. 80024c6: 681b ldr r3, [r3, #0]
  4779. 80024c8: 689b ldr r3, [r3, #8]
  4780. 80024ca: f003 0301 and.w r3, r3, #1
  4781. 80024ce: 2b01 cmp r3, #1
  4782. 80024d0: d039 beq.n 8002546 <ADC_Enable+0x92>
  4783. {
  4784. /* Enable the Peripheral */
  4785. __HAL_ADC_ENABLE(hadc);
  4786. 80024d2: 687b ldr r3, [r7, #4]
  4787. 80024d4: 681b ldr r3, [r3, #0]
  4788. 80024d6: 689a ldr r2, [r3, #8]
  4789. 80024d8: 687b ldr r3, [r7, #4]
  4790. 80024da: 681b ldr r3, [r3, #0]
  4791. 80024dc: f042 0201 orr.w r2, r2, #1
  4792. 80024e0: 609a str r2, [r3, #8]
  4793. /* Delay for ADC stabilization time */
  4794. /* Compute number of CPU cycles to wait for */
  4795. wait_loop_index = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000U));
  4796. 80024e2: 4b1b ldr r3, [pc, #108] ; (8002550 <ADC_Enable+0x9c>)
  4797. 80024e4: 681b ldr r3, [r3, #0]
  4798. 80024e6: 4a1b ldr r2, [pc, #108] ; (8002554 <ADC_Enable+0xa0>)
  4799. 80024e8: fba2 2303 umull r2, r3, r2, r3
  4800. 80024ec: 0c9b lsrs r3, r3, #18
  4801. 80024ee: 60bb str r3, [r7, #8]
  4802. while(wait_loop_index != 0U)
  4803. 80024f0: e002 b.n 80024f8 <ADC_Enable+0x44>
  4804. {
  4805. wait_loop_index--;
  4806. 80024f2: 68bb ldr r3, [r7, #8]
  4807. 80024f4: 3b01 subs r3, #1
  4808. 80024f6: 60bb str r3, [r7, #8]
  4809. while(wait_loop_index != 0U)
  4810. 80024f8: 68bb ldr r3, [r7, #8]
  4811. 80024fa: 2b00 cmp r3, #0
  4812. 80024fc: d1f9 bne.n 80024f2 <ADC_Enable+0x3e>
  4813. }
  4814. /* Get tick count */
  4815. tickstart = HAL_GetTick();
  4816. 80024fe: f7ff fc65 bl 8001dcc <HAL_GetTick>
  4817. 8002502: 60f8 str r0, [r7, #12]
  4818. /* Wait for ADC effectively enabled */
  4819. while(ADC_IS_ENABLE(hadc) == RESET)
  4820. 8002504: e018 b.n 8002538 <ADC_Enable+0x84>
  4821. {
  4822. if((HAL_GetTick() - tickstart) > ADC_ENABLE_TIMEOUT)
  4823. 8002506: f7ff fc61 bl 8001dcc <HAL_GetTick>
  4824. 800250a: 4602 mov r2, r0
  4825. 800250c: 68fb ldr r3, [r7, #12]
  4826. 800250e: 1ad3 subs r3, r2, r3
  4827. 8002510: 2b02 cmp r3, #2
  4828. 8002512: d911 bls.n 8002538 <ADC_Enable+0x84>
  4829. {
  4830. /* Update ADC state machine to error */
  4831. SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
  4832. 8002514: 687b ldr r3, [r7, #4]
  4833. 8002516: 6a9b ldr r3, [r3, #40] ; 0x28
  4834. 8002518: f043 0210 orr.w r2, r3, #16
  4835. 800251c: 687b ldr r3, [r7, #4]
  4836. 800251e: 629a str r2, [r3, #40] ; 0x28
  4837. /* Set ADC error code to ADC IP internal error */
  4838. SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
  4839. 8002520: 687b ldr r3, [r7, #4]
  4840. 8002522: 6adb ldr r3, [r3, #44] ; 0x2c
  4841. 8002524: f043 0201 orr.w r2, r3, #1
  4842. 8002528: 687b ldr r3, [r7, #4]
  4843. 800252a: 62da str r2, [r3, #44] ; 0x2c
  4844. /* Process unlocked */
  4845. __HAL_UNLOCK(hadc);
  4846. 800252c: 687b ldr r3, [r7, #4]
  4847. 800252e: 2200 movs r2, #0
  4848. 8002530: f883 2024 strb.w r2, [r3, #36] ; 0x24
  4849. return HAL_ERROR;
  4850. 8002534: 2301 movs r3, #1
  4851. 8002536: e007 b.n 8002548 <ADC_Enable+0x94>
  4852. while(ADC_IS_ENABLE(hadc) == RESET)
  4853. 8002538: 687b ldr r3, [r7, #4]
  4854. 800253a: 681b ldr r3, [r3, #0]
  4855. 800253c: 689b ldr r3, [r3, #8]
  4856. 800253e: f003 0301 and.w r3, r3, #1
  4857. 8002542: 2b01 cmp r3, #1
  4858. 8002544: d1df bne.n 8002506 <ADC_Enable+0x52>
  4859. }
  4860. }
  4861. }
  4862. /* Return HAL status */
  4863. return HAL_OK;
  4864. 8002546: 2300 movs r3, #0
  4865. }
  4866. 8002548: 4618 mov r0, r3
  4867. 800254a: 3710 adds r7, #16
  4868. 800254c: 46bd mov sp, r7
  4869. 800254e: bd80 pop {r7, pc}
  4870. 8002550: 20000008 .word 0x20000008
  4871. 8002554: 431bde83 .word 0x431bde83
  4872. 08002558 <ADC_ConversionStop_Disable>:
  4873. * stopped to disable the ADC.
  4874. * @param hadc: ADC handle
  4875. * @retval HAL status.
  4876. */
  4877. HAL_StatusTypeDef ADC_ConversionStop_Disable(ADC_HandleTypeDef* hadc)
  4878. {
  4879. 8002558: b580 push {r7, lr}
  4880. 800255a: b084 sub sp, #16
  4881. 800255c: af00 add r7, sp, #0
  4882. 800255e: 6078 str r0, [r7, #4]
  4883. uint32_t tickstart = 0U;
  4884. 8002560: 2300 movs r3, #0
  4885. 8002562: 60fb str r3, [r7, #12]
  4886. /* Verification if ADC is not already disabled */
  4887. if (ADC_IS_ENABLE(hadc) != RESET)
  4888. 8002564: 687b ldr r3, [r7, #4]
  4889. 8002566: 681b ldr r3, [r3, #0]
  4890. 8002568: 689b ldr r3, [r3, #8]
  4891. 800256a: f003 0301 and.w r3, r3, #1
  4892. 800256e: 2b01 cmp r3, #1
  4893. 8002570: d127 bne.n 80025c2 <ADC_ConversionStop_Disable+0x6a>
  4894. {
  4895. /* Disable the ADC peripheral */
  4896. __HAL_ADC_DISABLE(hadc);
  4897. 8002572: 687b ldr r3, [r7, #4]
  4898. 8002574: 681b ldr r3, [r3, #0]
  4899. 8002576: 689a ldr r2, [r3, #8]
  4900. 8002578: 687b ldr r3, [r7, #4]
  4901. 800257a: 681b ldr r3, [r3, #0]
  4902. 800257c: f022 0201 bic.w r2, r2, #1
  4903. 8002580: 609a str r2, [r3, #8]
  4904. /* Get tick count */
  4905. tickstart = HAL_GetTick();
  4906. 8002582: f7ff fc23 bl 8001dcc <HAL_GetTick>
  4907. 8002586: 60f8 str r0, [r7, #12]
  4908. /* Wait for ADC effectively disabled */
  4909. while(ADC_IS_ENABLE(hadc) != RESET)
  4910. 8002588: e014 b.n 80025b4 <ADC_ConversionStop_Disable+0x5c>
  4911. {
  4912. if((HAL_GetTick() - tickstart) > ADC_DISABLE_TIMEOUT)
  4913. 800258a: f7ff fc1f bl 8001dcc <HAL_GetTick>
  4914. 800258e: 4602 mov r2, r0
  4915. 8002590: 68fb ldr r3, [r7, #12]
  4916. 8002592: 1ad3 subs r3, r2, r3
  4917. 8002594: 2b02 cmp r3, #2
  4918. 8002596: d90d bls.n 80025b4 <ADC_ConversionStop_Disable+0x5c>
  4919. {
  4920. /* Update ADC state machine to error */
  4921. SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
  4922. 8002598: 687b ldr r3, [r7, #4]
  4923. 800259a: 6a9b ldr r3, [r3, #40] ; 0x28
  4924. 800259c: f043 0210 orr.w r2, r3, #16
  4925. 80025a0: 687b ldr r3, [r7, #4]
  4926. 80025a2: 629a str r2, [r3, #40] ; 0x28
  4927. /* Set ADC error code to ADC IP internal error */
  4928. SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
  4929. 80025a4: 687b ldr r3, [r7, #4]
  4930. 80025a6: 6adb ldr r3, [r3, #44] ; 0x2c
  4931. 80025a8: f043 0201 orr.w r2, r3, #1
  4932. 80025ac: 687b ldr r3, [r7, #4]
  4933. 80025ae: 62da str r2, [r3, #44] ; 0x2c
  4934. return HAL_ERROR;
  4935. 80025b0: 2301 movs r3, #1
  4936. 80025b2: e007 b.n 80025c4 <ADC_ConversionStop_Disable+0x6c>
  4937. while(ADC_IS_ENABLE(hadc) != RESET)
  4938. 80025b4: 687b ldr r3, [r7, #4]
  4939. 80025b6: 681b ldr r3, [r3, #0]
  4940. 80025b8: 689b ldr r3, [r3, #8]
  4941. 80025ba: f003 0301 and.w r3, r3, #1
  4942. 80025be: 2b01 cmp r3, #1
  4943. 80025c0: d0e3 beq.n 800258a <ADC_ConversionStop_Disable+0x32>
  4944. }
  4945. }
  4946. }
  4947. /* Return HAL status */
  4948. return HAL_OK;
  4949. 80025c2: 2300 movs r3, #0
  4950. }
  4951. 80025c4: 4618 mov r0, r3
  4952. 80025c6: 3710 adds r7, #16
  4953. 80025c8: 46bd mov sp, r7
  4954. 80025ca: bd80 pop {r7, pc}
  4955. 080025cc <ADC_DMAConvCplt>:
  4956. * @brief DMA transfer complete callback.
  4957. * @param hdma: pointer to DMA handle.
  4958. * @retval None
  4959. */
  4960. void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma)
  4961. {
  4962. 80025cc: b580 push {r7, lr}
  4963. 80025ce: b084 sub sp, #16
  4964. 80025d0: af00 add r7, sp, #0
  4965. 80025d2: 6078 str r0, [r7, #4]
  4966. /* Retrieve ADC handle corresponding to current DMA handle */
  4967. ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
  4968. 80025d4: 687b ldr r3, [r7, #4]
  4969. 80025d6: 6a5b ldr r3, [r3, #36] ; 0x24
  4970. 80025d8: 60fb str r3, [r7, #12]
  4971. /* Update state machine on conversion status if not in error state */
  4972. if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL | HAL_ADC_STATE_ERROR_DMA))
  4973. 80025da: 68fb ldr r3, [r7, #12]
  4974. 80025dc: 6a9b ldr r3, [r3, #40] ; 0x28
  4975. 80025de: f003 0350 and.w r3, r3, #80 ; 0x50
  4976. 80025e2: 2b00 cmp r3, #0
  4977. 80025e4: d127 bne.n 8002636 <ADC_DMAConvCplt+0x6a>
  4978. {
  4979. /* Update ADC state machine */
  4980. SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC);
  4981. 80025e6: 68fb ldr r3, [r7, #12]
  4982. 80025e8: 6a9b ldr r3, [r3, #40] ; 0x28
  4983. 80025ea: f443 7200 orr.w r2, r3, #512 ; 0x200
  4984. 80025ee: 68fb ldr r3, [r7, #12]
  4985. 80025f0: 629a str r2, [r3, #40] ; 0x28
  4986. /* Determine whether any further conversion upcoming on group regular */
  4987. /* by external trigger, continuous mode or scan sequence on going. */
  4988. /* Note: On STM32F1 devices, in case of sequencer enabled */
  4989. /* (several ranks selected), end of conversion flag is raised */
  4990. /* at the end of the sequence. */
  4991. if(ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
  4992. 80025f2: 68fb ldr r3, [r7, #12]
  4993. 80025f4: 681b ldr r3, [r3, #0]
  4994. 80025f6: 689b ldr r3, [r3, #8]
  4995. 80025f8: f403 2360 and.w r3, r3, #917504 ; 0xe0000
  4996. 80025fc: f5b3 2f60 cmp.w r3, #917504 ; 0xe0000
  4997. 8002600: d115 bne.n 800262e <ADC_DMAConvCplt+0x62>
  4998. (hadc->Init.ContinuousConvMode == DISABLE) )
  4999. 8002602: 68fb ldr r3, [r7, #12]
  5000. 8002604: 7b1b ldrb r3, [r3, #12]
  5001. if(ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
  5002. 8002606: 2b00 cmp r3, #0
  5003. 8002608: d111 bne.n 800262e <ADC_DMAConvCplt+0x62>
  5004. {
  5005. /* Set ADC state */
  5006. CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
  5007. 800260a: 68fb ldr r3, [r7, #12]
  5008. 800260c: 6a9b ldr r3, [r3, #40] ; 0x28
  5009. 800260e: f423 7280 bic.w r2, r3, #256 ; 0x100
  5010. 8002612: 68fb ldr r3, [r7, #12]
  5011. 8002614: 629a str r2, [r3, #40] ; 0x28
  5012. if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY))
  5013. 8002616: 68fb ldr r3, [r7, #12]
  5014. 8002618: 6a9b ldr r3, [r3, #40] ; 0x28
  5015. 800261a: f403 5380 and.w r3, r3, #4096 ; 0x1000
  5016. 800261e: 2b00 cmp r3, #0
  5017. 8002620: d105 bne.n 800262e <ADC_DMAConvCplt+0x62>
  5018. {
  5019. SET_BIT(hadc->State, HAL_ADC_STATE_READY);
  5020. 8002622: 68fb ldr r3, [r7, #12]
  5021. 8002624: 6a9b ldr r3, [r3, #40] ; 0x28
  5022. 8002626: f043 0201 orr.w r2, r3, #1
  5023. 800262a: 68fb ldr r3, [r7, #12]
  5024. 800262c: 629a str r2, [r3, #40] ; 0x28
  5025. /* Conversion complete callback */
  5026. #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
  5027. hadc->ConvCpltCallback(hadc);
  5028. #else
  5029. HAL_ADC_ConvCpltCallback(hadc);
  5030. 800262e: 68f8 ldr r0, [r7, #12]
  5031. 8002630: f7ff f85c bl 80016ec <HAL_ADC_ConvCpltCallback>
  5032. else
  5033. {
  5034. /* Call DMA error callback */
  5035. hadc->DMA_Handle->XferErrorCallback(hdma);
  5036. }
  5037. }
  5038. 8002634: e004 b.n 8002640 <ADC_DMAConvCplt+0x74>
  5039. hadc->DMA_Handle->XferErrorCallback(hdma);
  5040. 8002636: 68fb ldr r3, [r7, #12]
  5041. 8002638: 6a1b ldr r3, [r3, #32]
  5042. 800263a: 6b1b ldr r3, [r3, #48] ; 0x30
  5043. 800263c: 6878 ldr r0, [r7, #4]
  5044. 800263e: 4798 blx r3
  5045. }
  5046. 8002640: bf00 nop
  5047. 8002642: 3710 adds r7, #16
  5048. 8002644: 46bd mov sp, r7
  5049. 8002646: bd80 pop {r7, pc}
  5050. 08002648 <ADC_DMAHalfConvCplt>:
  5051. * @brief DMA half transfer complete callback.
  5052. * @param hdma: pointer to DMA handle.
  5053. * @retval None
  5054. */
  5055. void ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma)
  5056. {
  5057. 8002648: b580 push {r7, lr}
  5058. 800264a: b084 sub sp, #16
  5059. 800264c: af00 add r7, sp, #0
  5060. 800264e: 6078 str r0, [r7, #4]
  5061. /* Retrieve ADC handle corresponding to current DMA handle */
  5062. ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
  5063. 8002650: 687b ldr r3, [r7, #4]
  5064. 8002652: 6a5b ldr r3, [r3, #36] ; 0x24
  5065. 8002654: 60fb str r3, [r7, #12]
  5066. /* Half conversion callback */
  5067. #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
  5068. hadc->ConvHalfCpltCallback(hadc);
  5069. #else
  5070. HAL_ADC_ConvHalfCpltCallback(hadc);
  5071. 8002656: 68f8 ldr r0, [r7, #12]
  5072. 8002658: f7ff fe19 bl 800228e <HAL_ADC_ConvHalfCpltCallback>
  5073. #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
  5074. }
  5075. 800265c: bf00 nop
  5076. 800265e: 3710 adds r7, #16
  5077. 8002660: 46bd mov sp, r7
  5078. 8002662: bd80 pop {r7, pc}
  5079. 08002664 <ADC_DMAError>:
  5080. * @brief DMA error callback
  5081. * @param hdma: pointer to DMA handle.
  5082. * @retval None
  5083. */
  5084. void ADC_DMAError(DMA_HandleTypeDef *hdma)
  5085. {
  5086. 8002664: b580 push {r7, lr}
  5087. 8002666: b084 sub sp, #16
  5088. 8002668: af00 add r7, sp, #0
  5089. 800266a: 6078 str r0, [r7, #4]
  5090. /* Retrieve ADC handle corresponding to current DMA handle */
  5091. ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
  5092. 800266c: 687b ldr r3, [r7, #4]
  5093. 800266e: 6a5b ldr r3, [r3, #36] ; 0x24
  5094. 8002670: 60fb str r3, [r7, #12]
  5095. /* Set ADC state */
  5096. SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA);
  5097. 8002672: 68fb ldr r3, [r7, #12]
  5098. 8002674: 6a9b ldr r3, [r3, #40] ; 0x28
  5099. 8002676: f043 0240 orr.w r2, r3, #64 ; 0x40
  5100. 800267a: 68fb ldr r3, [r7, #12]
  5101. 800267c: 629a str r2, [r3, #40] ; 0x28
  5102. /* Set ADC error code to DMA error */
  5103. SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_DMA);
  5104. 800267e: 68fb ldr r3, [r7, #12]
  5105. 8002680: 6adb ldr r3, [r3, #44] ; 0x2c
  5106. 8002682: f043 0204 orr.w r2, r3, #4
  5107. 8002686: 68fb ldr r3, [r7, #12]
  5108. 8002688: 62da str r2, [r3, #44] ; 0x2c
  5109. /* Error callback */
  5110. #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
  5111. hadc->ErrorCallback(hadc);
  5112. #else
  5113. HAL_ADC_ErrorCallback(hadc);
  5114. 800268a: 68f8 ldr r0, [r7, #12]
  5115. 800268c: f7ff fe11 bl 80022b2 <HAL_ADC_ErrorCallback>
  5116. #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
  5117. }
  5118. 8002690: bf00 nop
  5119. 8002692: 3710 adds r7, #16
  5120. 8002694: 46bd mov sp, r7
  5121. 8002696: bd80 pop {r7, pc}
  5122. 08002698 <HAL_ADCEx_Calibration_Start>:
  5123. * the completion of this function.
  5124. * @param hadc: ADC handle
  5125. * @retval HAL status
  5126. */
  5127. HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef* hadc)
  5128. {
  5129. 8002698: b590 push {r4, r7, lr}
  5130. 800269a: b087 sub sp, #28
  5131. 800269c: af00 add r7, sp, #0
  5132. 800269e: 6078 str r0, [r7, #4]
  5133. HAL_StatusTypeDef tmp_hal_status = HAL_OK;
  5134. 80026a0: 2300 movs r3, #0
  5135. 80026a2: 75fb strb r3, [r7, #23]
  5136. uint32_t tickstart;
  5137. __IO uint32_t wait_loop_index = 0U;
  5138. 80026a4: 2300 movs r3, #0
  5139. 80026a6: 60fb str r3, [r7, #12]
  5140. /* Check the parameters */
  5141. assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance));
  5142. /* Process locked */
  5143. __HAL_LOCK(hadc);
  5144. 80026a8: 687b ldr r3, [r7, #4]
  5145. 80026aa: f893 3024 ldrb.w r3, [r3, #36] ; 0x24
  5146. 80026ae: 2b01 cmp r3, #1
  5147. 80026b0: d101 bne.n 80026b6 <HAL_ADCEx_Calibration_Start+0x1e>
  5148. 80026b2: 2302 movs r3, #2
  5149. 80026b4: e086 b.n 80027c4 <HAL_ADCEx_Calibration_Start+0x12c>
  5150. 80026b6: 687b ldr r3, [r7, #4]
  5151. 80026b8: 2201 movs r2, #1
  5152. 80026ba: f883 2024 strb.w r2, [r3, #36] ; 0x24
  5153. /* 1. Calibration prerequisite: */
  5154. /* - ADC must be disabled for at least two ADC clock cycles in disable */
  5155. /* mode before ADC enable */
  5156. /* Stop potential conversion on going, on regular and injected groups */
  5157. /* Disable ADC peripheral */
  5158. tmp_hal_status = ADC_ConversionStop_Disable(hadc);
  5159. 80026be: 6878 ldr r0, [r7, #4]
  5160. 80026c0: f7ff ff4a bl 8002558 <ADC_ConversionStop_Disable>
  5161. 80026c4: 4603 mov r3, r0
  5162. 80026c6: 75fb strb r3, [r7, #23]
  5163. /* Check if ADC is effectively disabled */
  5164. if (tmp_hal_status == HAL_OK)
  5165. 80026c8: 7dfb ldrb r3, [r7, #23]
  5166. 80026ca: 2b00 cmp r3, #0
  5167. 80026cc: d175 bne.n 80027ba <HAL_ADCEx_Calibration_Start+0x122>
  5168. {
  5169. /* Set ADC state */
  5170. ADC_STATE_CLR_SET(hadc->State,
  5171. 80026ce: 687b ldr r3, [r7, #4]
  5172. 80026d0: 6a9b ldr r3, [r3, #40] ; 0x28
  5173. 80026d2: f423 5388 bic.w r3, r3, #4352 ; 0x1100
  5174. 80026d6: f023 0302 bic.w r3, r3, #2
  5175. 80026da: f043 0202 orr.w r2, r3, #2
  5176. 80026de: 687b ldr r3, [r7, #4]
  5177. 80026e0: 629a str r2, [r3, #40] ; 0x28
  5178. /* Hardware prerequisite: delay before starting the calibration. */
  5179. /* - Computation of CPU clock cycles corresponding to ADC clock cycles. */
  5180. /* - Wait for the expected ADC clock cycles delay */
  5181. wait_loop_index = ((SystemCoreClock
  5182. / HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_ADC))
  5183. 80026e2: 4b3a ldr r3, [pc, #232] ; (80027cc <HAL_ADCEx_Calibration_Start+0x134>)
  5184. 80026e4: 681c ldr r4, [r3, #0]
  5185. 80026e6: 2002 movs r0, #2
  5186. 80026e8: f001 fc20 bl 8003f2c <HAL_RCCEx_GetPeriphCLKFreq>
  5187. 80026ec: 4603 mov r3, r0
  5188. 80026ee: fbb4 f3f3 udiv r3, r4, r3
  5189. * ADC_PRECALIBRATION_DELAY_ADCCLOCKCYCLES );
  5190. 80026f2: 005b lsls r3, r3, #1
  5191. wait_loop_index = ((SystemCoreClock
  5192. 80026f4: 60fb str r3, [r7, #12]
  5193. while(wait_loop_index != 0U)
  5194. 80026f6: e002 b.n 80026fe <HAL_ADCEx_Calibration_Start+0x66>
  5195. {
  5196. wait_loop_index--;
  5197. 80026f8: 68fb ldr r3, [r7, #12]
  5198. 80026fa: 3b01 subs r3, #1
  5199. 80026fc: 60fb str r3, [r7, #12]
  5200. while(wait_loop_index != 0U)
  5201. 80026fe: 68fb ldr r3, [r7, #12]
  5202. 8002700: 2b00 cmp r3, #0
  5203. 8002702: d1f9 bne.n 80026f8 <HAL_ADCEx_Calibration_Start+0x60>
  5204. }
  5205. /* 2. Enable the ADC peripheral */
  5206. ADC_Enable(hadc);
  5207. 8002704: 6878 ldr r0, [r7, #4]
  5208. 8002706: f7ff fed5 bl 80024b4 <ADC_Enable>
  5209. /* 3. Resets ADC calibration registers */
  5210. SET_BIT(hadc->Instance->CR2, ADC_CR2_RSTCAL);
  5211. 800270a: 687b ldr r3, [r7, #4]
  5212. 800270c: 681b ldr r3, [r3, #0]
  5213. 800270e: 689a ldr r2, [r3, #8]
  5214. 8002710: 687b ldr r3, [r7, #4]
  5215. 8002712: 681b ldr r3, [r3, #0]
  5216. 8002714: f042 0208 orr.w r2, r2, #8
  5217. 8002718: 609a str r2, [r3, #8]
  5218. tickstart = HAL_GetTick();
  5219. 800271a: f7ff fb57 bl 8001dcc <HAL_GetTick>
  5220. 800271e: 6138 str r0, [r7, #16]
  5221. /* Wait for calibration reset completion */
  5222. while(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_RSTCAL))
  5223. 8002720: e014 b.n 800274c <HAL_ADCEx_Calibration_Start+0xb4>
  5224. {
  5225. if((HAL_GetTick() - tickstart) > ADC_CALIBRATION_TIMEOUT)
  5226. 8002722: f7ff fb53 bl 8001dcc <HAL_GetTick>
  5227. 8002726: 4602 mov r2, r0
  5228. 8002728: 693b ldr r3, [r7, #16]
  5229. 800272a: 1ad3 subs r3, r2, r3
  5230. 800272c: 2b0a cmp r3, #10
  5231. 800272e: d90d bls.n 800274c <HAL_ADCEx_Calibration_Start+0xb4>
  5232. {
  5233. /* Update ADC state machine to error */
  5234. ADC_STATE_CLR_SET(hadc->State,
  5235. 8002730: 687b ldr r3, [r7, #4]
  5236. 8002732: 6a9b ldr r3, [r3, #40] ; 0x28
  5237. 8002734: f023 0312 bic.w r3, r3, #18
  5238. 8002738: f043 0210 orr.w r2, r3, #16
  5239. 800273c: 687b ldr r3, [r7, #4]
  5240. 800273e: 629a str r2, [r3, #40] ; 0x28
  5241. HAL_ADC_STATE_BUSY_INTERNAL,
  5242. HAL_ADC_STATE_ERROR_INTERNAL);
  5243. /* Process unlocked */
  5244. __HAL_UNLOCK(hadc);
  5245. 8002740: 687b ldr r3, [r7, #4]
  5246. 8002742: 2200 movs r2, #0
  5247. 8002744: f883 2024 strb.w r2, [r3, #36] ; 0x24
  5248. return HAL_ERROR;
  5249. 8002748: 2301 movs r3, #1
  5250. 800274a: e03b b.n 80027c4 <HAL_ADCEx_Calibration_Start+0x12c>
  5251. while(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_RSTCAL))
  5252. 800274c: 687b ldr r3, [r7, #4]
  5253. 800274e: 681b ldr r3, [r3, #0]
  5254. 8002750: 689b ldr r3, [r3, #8]
  5255. 8002752: f003 0308 and.w r3, r3, #8
  5256. 8002756: 2b00 cmp r3, #0
  5257. 8002758: d1e3 bne.n 8002722 <HAL_ADCEx_Calibration_Start+0x8a>
  5258. }
  5259. }
  5260. /* 4. Start ADC calibration */
  5261. SET_BIT(hadc->Instance->CR2, ADC_CR2_CAL);
  5262. 800275a: 687b ldr r3, [r7, #4]
  5263. 800275c: 681b ldr r3, [r3, #0]
  5264. 800275e: 689a ldr r2, [r3, #8]
  5265. 8002760: 687b ldr r3, [r7, #4]
  5266. 8002762: 681b ldr r3, [r3, #0]
  5267. 8002764: f042 0204 orr.w r2, r2, #4
  5268. 8002768: 609a str r2, [r3, #8]
  5269. tickstart = HAL_GetTick();
  5270. 800276a: f7ff fb2f bl 8001dcc <HAL_GetTick>
  5271. 800276e: 6138 str r0, [r7, #16]
  5272. /* Wait for calibration completion */
  5273. while(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_CAL))
  5274. 8002770: e014 b.n 800279c <HAL_ADCEx_Calibration_Start+0x104>
  5275. {
  5276. if((HAL_GetTick() - tickstart) > ADC_CALIBRATION_TIMEOUT)
  5277. 8002772: f7ff fb2b bl 8001dcc <HAL_GetTick>
  5278. 8002776: 4602 mov r2, r0
  5279. 8002778: 693b ldr r3, [r7, #16]
  5280. 800277a: 1ad3 subs r3, r2, r3
  5281. 800277c: 2b0a cmp r3, #10
  5282. 800277e: d90d bls.n 800279c <HAL_ADCEx_Calibration_Start+0x104>
  5283. {
  5284. /* Update ADC state machine to error */
  5285. ADC_STATE_CLR_SET(hadc->State,
  5286. 8002780: 687b ldr r3, [r7, #4]
  5287. 8002782: 6a9b ldr r3, [r3, #40] ; 0x28
  5288. 8002784: f023 0312 bic.w r3, r3, #18
  5289. 8002788: f043 0210 orr.w r2, r3, #16
  5290. 800278c: 687b ldr r3, [r7, #4]
  5291. 800278e: 629a str r2, [r3, #40] ; 0x28
  5292. HAL_ADC_STATE_BUSY_INTERNAL,
  5293. HAL_ADC_STATE_ERROR_INTERNAL);
  5294. /* Process unlocked */
  5295. __HAL_UNLOCK(hadc);
  5296. 8002790: 687b ldr r3, [r7, #4]
  5297. 8002792: 2200 movs r2, #0
  5298. 8002794: f883 2024 strb.w r2, [r3, #36] ; 0x24
  5299. return HAL_ERROR;
  5300. 8002798: 2301 movs r3, #1
  5301. 800279a: e013 b.n 80027c4 <HAL_ADCEx_Calibration_Start+0x12c>
  5302. while(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_CAL))
  5303. 800279c: 687b ldr r3, [r7, #4]
  5304. 800279e: 681b ldr r3, [r3, #0]
  5305. 80027a0: 689b ldr r3, [r3, #8]
  5306. 80027a2: f003 0304 and.w r3, r3, #4
  5307. 80027a6: 2b00 cmp r3, #0
  5308. 80027a8: d1e3 bne.n 8002772 <HAL_ADCEx_Calibration_Start+0xda>
  5309. }
  5310. }
  5311. /* Set ADC state */
  5312. ADC_STATE_CLR_SET(hadc->State,
  5313. 80027aa: 687b ldr r3, [r7, #4]
  5314. 80027ac: 6a9b ldr r3, [r3, #40] ; 0x28
  5315. 80027ae: f023 0303 bic.w r3, r3, #3
  5316. 80027b2: f043 0201 orr.w r2, r3, #1
  5317. 80027b6: 687b ldr r3, [r7, #4]
  5318. 80027b8: 629a str r2, [r3, #40] ; 0x28
  5319. HAL_ADC_STATE_BUSY_INTERNAL,
  5320. HAL_ADC_STATE_READY);
  5321. }
  5322. /* Process unlocked */
  5323. __HAL_UNLOCK(hadc);
  5324. 80027ba: 687b ldr r3, [r7, #4]
  5325. 80027bc: 2200 movs r2, #0
  5326. 80027be: f883 2024 strb.w r2, [r3, #36] ; 0x24
  5327. /* Return function status */
  5328. return tmp_hal_status;
  5329. 80027c2: 7dfb ldrb r3, [r7, #23]
  5330. }
  5331. 80027c4: 4618 mov r0, r3
  5332. 80027c6: 371c adds r7, #28
  5333. 80027c8: 46bd mov sp, r7
  5334. 80027ca: bd90 pop {r4, r7, pc}
  5335. 80027cc: 20000008 .word 0x20000008
  5336. 080027d0 <HAL_ADCEx_InjectedConvCpltCallback>:
  5337. * @brief Injected conversion complete callback in non blocking mode
  5338. * @param hadc: ADC handle
  5339. * @retval None
  5340. */
  5341. __weak void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef* hadc)
  5342. {
  5343. 80027d0: b480 push {r7}
  5344. 80027d2: b083 sub sp, #12
  5345. 80027d4: af00 add r7, sp, #0
  5346. 80027d6: 6078 str r0, [r7, #4]
  5347. /* Prevent unused argument(s) compilation warning */
  5348. UNUSED(hadc);
  5349. /* NOTE : This function Should not be modified, when the callback is needed,
  5350. the HAL_ADCEx_InjectedConvCpltCallback could be implemented in the user file
  5351. */
  5352. }
  5353. 80027d8: bf00 nop
  5354. 80027da: 370c adds r7, #12
  5355. 80027dc: 46bd mov sp, r7
  5356. 80027de: bc80 pop {r7}
  5357. 80027e0: 4770 bx lr
  5358. ...
  5359. 080027e4 <__NVIC_SetPriorityGrouping>:
  5360. In case of a conflict between priority grouping and available
  5361. priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
  5362. \param [in] PriorityGroup Priority grouping field.
  5363. */
  5364. __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
  5365. {
  5366. 80027e4: b480 push {r7}
  5367. 80027e6: b085 sub sp, #20
  5368. 80027e8: af00 add r7, sp, #0
  5369. 80027ea: 6078 str r0, [r7, #4]
  5370. uint32_t reg_value;
  5371. uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
  5372. 80027ec: 687b ldr r3, [r7, #4]
  5373. 80027ee: f003 0307 and.w r3, r3, #7
  5374. 80027f2: 60fb str r3, [r7, #12]
  5375. reg_value = SCB->AIRCR; /* read old register configuration */
  5376. 80027f4: 4b0c ldr r3, [pc, #48] ; (8002828 <__NVIC_SetPriorityGrouping+0x44>)
  5377. 80027f6: 68db ldr r3, [r3, #12]
  5378. 80027f8: 60bb str r3, [r7, #8]
  5379. reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */
  5380. 80027fa: 68ba ldr r2, [r7, #8]
  5381. 80027fc: f64f 03ff movw r3, #63743 ; 0xf8ff
  5382. 8002800: 4013 ands r3, r2
  5383. 8002802: 60bb str r3, [r7, #8]
  5384. reg_value = (reg_value |
  5385. ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
  5386. (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */
  5387. 8002804: 68fb ldr r3, [r7, #12]
  5388. 8002806: 021a lsls r2, r3, #8
  5389. ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
  5390. 8002808: 68bb ldr r3, [r7, #8]
  5391. 800280a: 4313 orrs r3, r2
  5392. reg_value = (reg_value |
  5393. 800280c: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000
  5394. 8002810: f443 3300 orr.w r3, r3, #131072 ; 0x20000
  5395. 8002814: 60bb str r3, [r7, #8]
  5396. SCB->AIRCR = reg_value;
  5397. 8002816: 4a04 ldr r2, [pc, #16] ; (8002828 <__NVIC_SetPriorityGrouping+0x44>)
  5398. 8002818: 68bb ldr r3, [r7, #8]
  5399. 800281a: 60d3 str r3, [r2, #12]
  5400. }
  5401. 800281c: bf00 nop
  5402. 800281e: 3714 adds r7, #20
  5403. 8002820: 46bd mov sp, r7
  5404. 8002822: bc80 pop {r7}
  5405. 8002824: 4770 bx lr
  5406. 8002826: bf00 nop
  5407. 8002828: e000ed00 .word 0xe000ed00
  5408. 0800282c <__NVIC_GetPriorityGrouping>:
  5409. \brief Get Priority Grouping
  5410. \details Reads the priority grouping field from the NVIC Interrupt Controller.
  5411. \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
  5412. */
  5413. __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
  5414. {
  5415. 800282c: b480 push {r7}
  5416. 800282e: af00 add r7, sp, #0
  5417. return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
  5418. 8002830: 4b04 ldr r3, [pc, #16] ; (8002844 <__NVIC_GetPriorityGrouping+0x18>)
  5419. 8002832: 68db ldr r3, [r3, #12]
  5420. 8002834: 0a1b lsrs r3, r3, #8
  5421. 8002836: f003 0307 and.w r3, r3, #7
  5422. }
  5423. 800283a: 4618 mov r0, r3
  5424. 800283c: 46bd mov sp, r7
  5425. 800283e: bc80 pop {r7}
  5426. 8002840: 4770 bx lr
  5427. 8002842: bf00 nop
  5428. 8002844: e000ed00 .word 0xe000ed00
  5429. 08002848 <__NVIC_EnableIRQ>:
  5430. \details Enables a device specific interrupt in the NVIC interrupt controller.
  5431. \param [in] IRQn Device specific interrupt number.
  5432. \note IRQn must not be negative.
  5433. */
  5434. __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
  5435. {
  5436. 8002848: b480 push {r7}
  5437. 800284a: b083 sub sp, #12
  5438. 800284c: af00 add r7, sp, #0
  5439. 800284e: 4603 mov r3, r0
  5440. 8002850: 71fb strb r3, [r7, #7]
  5441. if ((int32_t)(IRQn) >= 0)
  5442. 8002852: f997 3007 ldrsb.w r3, [r7, #7]
  5443. 8002856: 2b00 cmp r3, #0
  5444. 8002858: db0b blt.n 8002872 <__NVIC_EnableIRQ+0x2a>
  5445. {
  5446. NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
  5447. 800285a: 79fb ldrb r3, [r7, #7]
  5448. 800285c: f003 021f and.w r2, r3, #31
  5449. 8002860: 4906 ldr r1, [pc, #24] ; (800287c <__NVIC_EnableIRQ+0x34>)
  5450. 8002862: f997 3007 ldrsb.w r3, [r7, #7]
  5451. 8002866: 095b lsrs r3, r3, #5
  5452. 8002868: 2001 movs r0, #1
  5453. 800286a: fa00 f202 lsl.w r2, r0, r2
  5454. 800286e: f841 2023 str.w r2, [r1, r3, lsl #2]
  5455. }
  5456. }
  5457. 8002872: bf00 nop
  5458. 8002874: 370c adds r7, #12
  5459. 8002876: 46bd mov sp, r7
  5460. 8002878: bc80 pop {r7}
  5461. 800287a: 4770 bx lr
  5462. 800287c: e000e100 .word 0xe000e100
  5463. 08002880 <__NVIC_SetPriority>:
  5464. \param [in] IRQn Interrupt number.
  5465. \param [in] priority Priority to set.
  5466. \note The priority cannot be set for every processor exception.
  5467. */
  5468. __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
  5469. {
  5470. 8002880: b480 push {r7}
  5471. 8002882: b083 sub sp, #12
  5472. 8002884: af00 add r7, sp, #0
  5473. 8002886: 4603 mov r3, r0
  5474. 8002888: 6039 str r1, [r7, #0]
  5475. 800288a: 71fb strb r3, [r7, #7]
  5476. if ((int32_t)(IRQn) >= 0)
  5477. 800288c: f997 3007 ldrsb.w r3, [r7, #7]
  5478. 8002890: 2b00 cmp r3, #0
  5479. 8002892: db0a blt.n 80028aa <__NVIC_SetPriority+0x2a>
  5480. {
  5481. NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  5482. 8002894: 683b ldr r3, [r7, #0]
  5483. 8002896: b2da uxtb r2, r3
  5484. 8002898: 490c ldr r1, [pc, #48] ; (80028cc <__NVIC_SetPriority+0x4c>)
  5485. 800289a: f997 3007 ldrsb.w r3, [r7, #7]
  5486. 800289e: 0112 lsls r2, r2, #4
  5487. 80028a0: b2d2 uxtb r2, r2
  5488. 80028a2: 440b add r3, r1
  5489. 80028a4: f883 2300 strb.w r2, [r3, #768] ; 0x300
  5490. }
  5491. else
  5492. {
  5493. SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  5494. }
  5495. }
  5496. 80028a8: e00a b.n 80028c0 <__NVIC_SetPriority+0x40>
  5497. SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  5498. 80028aa: 683b ldr r3, [r7, #0]
  5499. 80028ac: b2da uxtb r2, r3
  5500. 80028ae: 4908 ldr r1, [pc, #32] ; (80028d0 <__NVIC_SetPriority+0x50>)
  5501. 80028b0: 79fb ldrb r3, [r7, #7]
  5502. 80028b2: f003 030f and.w r3, r3, #15
  5503. 80028b6: 3b04 subs r3, #4
  5504. 80028b8: 0112 lsls r2, r2, #4
  5505. 80028ba: b2d2 uxtb r2, r2
  5506. 80028bc: 440b add r3, r1
  5507. 80028be: 761a strb r2, [r3, #24]
  5508. }
  5509. 80028c0: bf00 nop
  5510. 80028c2: 370c adds r7, #12
  5511. 80028c4: 46bd mov sp, r7
  5512. 80028c6: bc80 pop {r7}
  5513. 80028c8: 4770 bx lr
  5514. 80028ca: bf00 nop
  5515. 80028cc: e000e100 .word 0xe000e100
  5516. 80028d0: e000ed00 .word 0xe000ed00
  5517. 080028d4 <NVIC_EncodePriority>:
  5518. \param [in] PreemptPriority Preemptive priority value (starting from 0).
  5519. \param [in] SubPriority Subpriority value (starting from 0).
  5520. \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
  5521. */
  5522. __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
  5523. {
  5524. 80028d4: b480 push {r7}
  5525. 80028d6: b089 sub sp, #36 ; 0x24
  5526. 80028d8: af00 add r7, sp, #0
  5527. 80028da: 60f8 str r0, [r7, #12]
  5528. 80028dc: 60b9 str r1, [r7, #8]
  5529. 80028de: 607a str r2, [r7, #4]
  5530. uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
  5531. 80028e0: 68fb ldr r3, [r7, #12]
  5532. 80028e2: f003 0307 and.w r3, r3, #7
  5533. 80028e6: 61fb str r3, [r7, #28]
  5534. uint32_t PreemptPriorityBits;
  5535. uint32_t SubPriorityBits;
  5536. PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
  5537. 80028e8: 69fb ldr r3, [r7, #28]
  5538. 80028ea: f1c3 0307 rsb r3, r3, #7
  5539. 80028ee: 2b04 cmp r3, #4
  5540. 80028f0: bf28 it cs
  5541. 80028f2: 2304 movcs r3, #4
  5542. 80028f4: 61bb str r3, [r7, #24]
  5543. SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
  5544. 80028f6: 69fb ldr r3, [r7, #28]
  5545. 80028f8: 3304 adds r3, #4
  5546. 80028fa: 2b06 cmp r3, #6
  5547. 80028fc: d902 bls.n 8002904 <NVIC_EncodePriority+0x30>
  5548. 80028fe: 69fb ldr r3, [r7, #28]
  5549. 8002900: 3b03 subs r3, #3
  5550. 8002902: e000 b.n 8002906 <NVIC_EncodePriority+0x32>
  5551. 8002904: 2300 movs r3, #0
  5552. 8002906: 617b str r3, [r7, #20]
  5553. return (
  5554. ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
  5555. 8002908: f04f 32ff mov.w r2, #4294967295
  5556. 800290c: 69bb ldr r3, [r7, #24]
  5557. 800290e: fa02 f303 lsl.w r3, r2, r3
  5558. 8002912: 43da mvns r2, r3
  5559. 8002914: 68bb ldr r3, [r7, #8]
  5560. 8002916: 401a ands r2, r3
  5561. 8002918: 697b ldr r3, [r7, #20]
  5562. 800291a: 409a lsls r2, r3
  5563. ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))
  5564. 800291c: f04f 31ff mov.w r1, #4294967295
  5565. 8002920: 697b ldr r3, [r7, #20]
  5566. 8002922: fa01 f303 lsl.w r3, r1, r3
  5567. 8002926: 43d9 mvns r1, r3
  5568. 8002928: 687b ldr r3, [r7, #4]
  5569. 800292a: 400b ands r3, r1
  5570. ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
  5571. 800292c: 4313 orrs r3, r2
  5572. );
  5573. }
  5574. 800292e: 4618 mov r0, r3
  5575. 8002930: 3724 adds r7, #36 ; 0x24
  5576. 8002932: 46bd mov sp, r7
  5577. 8002934: bc80 pop {r7}
  5578. 8002936: 4770 bx lr
  5579. 08002938 <HAL_NVIC_SetPriorityGrouping>:
  5580. * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible.
  5581. * The pending IRQ priority will be managed only by the subpriority.
  5582. * @retval None
  5583. */
  5584. void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
  5585. {
  5586. 8002938: b580 push {r7, lr}
  5587. 800293a: b082 sub sp, #8
  5588. 800293c: af00 add r7, sp, #0
  5589. 800293e: 6078 str r0, [r7, #4]
  5590. /* Check the parameters */
  5591. assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
  5592. /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
  5593. NVIC_SetPriorityGrouping(PriorityGroup);
  5594. 8002940: 6878 ldr r0, [r7, #4]
  5595. 8002942: f7ff ff4f bl 80027e4 <__NVIC_SetPriorityGrouping>
  5596. }
  5597. 8002946: bf00 nop
  5598. 8002948: 3708 adds r7, #8
  5599. 800294a: 46bd mov sp, r7
  5600. 800294c: bd80 pop {r7, pc}
  5601. 0800294e <HAL_NVIC_SetPriority>:
  5602. * This parameter can be a value between 0 and 15
  5603. * A lower priority value indicates a higher priority.
  5604. * @retval None
  5605. */
  5606. void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
  5607. {
  5608. 800294e: b580 push {r7, lr}
  5609. 8002950: b086 sub sp, #24
  5610. 8002952: af00 add r7, sp, #0
  5611. 8002954: 4603 mov r3, r0
  5612. 8002956: 60b9 str r1, [r7, #8]
  5613. 8002958: 607a str r2, [r7, #4]
  5614. 800295a: 73fb strb r3, [r7, #15]
  5615. uint32_t prioritygroup = 0x00U;
  5616. 800295c: 2300 movs r3, #0
  5617. 800295e: 617b str r3, [r7, #20]
  5618. /* Check the parameters */
  5619. assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));
  5620. assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
  5621. prioritygroup = NVIC_GetPriorityGrouping();
  5622. 8002960: f7ff ff64 bl 800282c <__NVIC_GetPriorityGrouping>
  5623. 8002964: 6178 str r0, [r7, #20]
  5624. NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
  5625. 8002966: 687a ldr r2, [r7, #4]
  5626. 8002968: 68b9 ldr r1, [r7, #8]
  5627. 800296a: 6978 ldr r0, [r7, #20]
  5628. 800296c: f7ff ffb2 bl 80028d4 <NVIC_EncodePriority>
  5629. 8002970: 4602 mov r2, r0
  5630. 8002972: f997 300f ldrsb.w r3, [r7, #15]
  5631. 8002976: 4611 mov r1, r2
  5632. 8002978: 4618 mov r0, r3
  5633. 800297a: f7ff ff81 bl 8002880 <__NVIC_SetPriority>
  5634. }
  5635. 800297e: bf00 nop
  5636. 8002980: 3718 adds r7, #24
  5637. 8002982: 46bd mov sp, r7
  5638. 8002984: bd80 pop {r7, pc}
  5639. 08002986 <HAL_NVIC_EnableIRQ>:
  5640. * This parameter can be an enumerator of IRQn_Type enumeration
  5641. * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h))
  5642. * @retval None
  5643. */
  5644. void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
  5645. {
  5646. 8002986: b580 push {r7, lr}
  5647. 8002988: b082 sub sp, #8
  5648. 800298a: af00 add r7, sp, #0
  5649. 800298c: 4603 mov r3, r0
  5650. 800298e: 71fb strb r3, [r7, #7]
  5651. /* Check the parameters */
  5652. assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
  5653. /* Enable interrupt */
  5654. NVIC_EnableIRQ(IRQn);
  5655. 8002990: f997 3007 ldrsb.w r3, [r7, #7]
  5656. 8002994: 4618 mov r0, r3
  5657. 8002996: f7ff ff57 bl 8002848 <__NVIC_EnableIRQ>
  5658. }
  5659. 800299a: bf00 nop
  5660. 800299c: 3708 adds r7, #8
  5661. 800299e: 46bd mov sp, r7
  5662. 80029a0: bd80 pop {r7, pc}
  5663. ...
  5664. 080029a4 <HAL_DMA_Init>:
  5665. * @param hdma: Pointer to a DMA_HandleTypeDef structure that contains
  5666. * the configuration information for the specified DMA Channel.
  5667. * @retval HAL status
  5668. */
  5669. HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma)
  5670. {
  5671. 80029a4: b480 push {r7}
  5672. 80029a6: b085 sub sp, #20
  5673. 80029a8: af00 add r7, sp, #0
  5674. 80029aa: 6078 str r0, [r7, #4]
  5675. uint32_t tmp = 0U;
  5676. 80029ac: 2300 movs r3, #0
  5677. 80029ae: 60fb str r3, [r7, #12]
  5678. /* Check the DMA handle allocation */
  5679. if(hdma == NULL)
  5680. 80029b0: 687b ldr r3, [r7, #4]
  5681. 80029b2: 2b00 cmp r3, #0
  5682. 80029b4: d101 bne.n 80029ba <HAL_DMA_Init+0x16>
  5683. {
  5684. return HAL_ERROR;
  5685. 80029b6: 2301 movs r3, #1
  5686. 80029b8: e043 b.n 8002a42 <HAL_DMA_Init+0x9e>
  5687. hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Channel2 - (uint32_t)DMA2_Channel1)) << 2;
  5688. hdma->DmaBaseAddress = DMA2;
  5689. }
  5690. #else
  5691. /* DMA1 */
  5692. hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2;
  5693. 80029ba: 687b ldr r3, [r7, #4]
  5694. 80029bc: 681b ldr r3, [r3, #0]
  5695. 80029be: 461a mov r2, r3
  5696. 80029c0: 4b22 ldr r3, [pc, #136] ; (8002a4c <HAL_DMA_Init+0xa8>)
  5697. 80029c2: 4413 add r3, r2
  5698. 80029c4: 4a22 ldr r2, [pc, #136] ; (8002a50 <HAL_DMA_Init+0xac>)
  5699. 80029c6: fba2 2303 umull r2, r3, r2, r3
  5700. 80029ca: 091b lsrs r3, r3, #4
  5701. 80029cc: 009a lsls r2, r3, #2
  5702. 80029ce: 687b ldr r3, [r7, #4]
  5703. 80029d0: 641a str r2, [r3, #64] ; 0x40
  5704. hdma->DmaBaseAddress = DMA1;
  5705. 80029d2: 687b ldr r3, [r7, #4]
  5706. 80029d4: 4a1f ldr r2, [pc, #124] ; (8002a54 <HAL_DMA_Init+0xb0>)
  5707. 80029d6: 63da str r2, [r3, #60] ; 0x3c
  5708. #endif /* DMA2 */
  5709. /* Change DMA peripheral state */
  5710. hdma->State = HAL_DMA_STATE_BUSY;
  5711. 80029d8: 687b ldr r3, [r7, #4]
  5712. 80029da: 2202 movs r2, #2
  5713. 80029dc: f883 2021 strb.w r2, [r3, #33] ; 0x21
  5714. /* Get the CR register value */
  5715. tmp = hdma->Instance->CCR;
  5716. 80029e0: 687b ldr r3, [r7, #4]
  5717. 80029e2: 681b ldr r3, [r3, #0]
  5718. 80029e4: 681b ldr r3, [r3, #0]
  5719. 80029e6: 60fb str r3, [r7, #12]
  5720. /* Clear PL, MSIZE, PSIZE, MINC, PINC, CIRC and DIR bits */
  5721. tmp &= ((uint32_t)~(DMA_CCR_PL | DMA_CCR_MSIZE | DMA_CCR_PSIZE | \
  5722. 80029e8: 68fb ldr r3, [r7, #12]
  5723. 80029ea: f423 537f bic.w r3, r3, #16320 ; 0x3fc0
  5724. 80029ee: f023 0330 bic.w r3, r3, #48 ; 0x30
  5725. 80029f2: 60fb str r3, [r7, #12]
  5726. DMA_CCR_MINC | DMA_CCR_PINC | DMA_CCR_CIRC | \
  5727. DMA_CCR_DIR));
  5728. /* Prepare the DMA Channel configuration */
  5729. tmp |= hdma->Init.Direction |
  5730. 80029f4: 687b ldr r3, [r7, #4]
  5731. 80029f6: 685a ldr r2, [r3, #4]
  5732. hdma->Init.PeriphInc | hdma->Init.MemInc |
  5733. 80029f8: 687b ldr r3, [r7, #4]
  5734. 80029fa: 689b ldr r3, [r3, #8]
  5735. tmp |= hdma->Init.Direction |
  5736. 80029fc: 431a orrs r2, r3
  5737. hdma->Init.PeriphInc | hdma->Init.MemInc |
  5738. 80029fe: 687b ldr r3, [r7, #4]
  5739. 8002a00: 68db ldr r3, [r3, #12]
  5740. 8002a02: 431a orrs r2, r3
  5741. hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment |
  5742. 8002a04: 687b ldr r3, [r7, #4]
  5743. 8002a06: 691b ldr r3, [r3, #16]
  5744. hdma->Init.PeriphInc | hdma->Init.MemInc |
  5745. 8002a08: 431a orrs r2, r3
  5746. hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment |
  5747. 8002a0a: 687b ldr r3, [r7, #4]
  5748. 8002a0c: 695b ldr r3, [r3, #20]
  5749. 8002a0e: 431a orrs r2, r3
  5750. hdma->Init.Mode | hdma->Init.Priority;
  5751. 8002a10: 687b ldr r3, [r7, #4]
  5752. 8002a12: 699b ldr r3, [r3, #24]
  5753. hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment |
  5754. 8002a14: 431a orrs r2, r3
  5755. hdma->Init.Mode | hdma->Init.Priority;
  5756. 8002a16: 687b ldr r3, [r7, #4]
  5757. 8002a18: 69db ldr r3, [r3, #28]
  5758. 8002a1a: 4313 orrs r3, r2
  5759. tmp |= hdma->Init.Direction |
  5760. 8002a1c: 68fa ldr r2, [r7, #12]
  5761. 8002a1e: 4313 orrs r3, r2
  5762. 8002a20: 60fb str r3, [r7, #12]
  5763. /* Write to DMA Channel CR register */
  5764. hdma->Instance->CCR = tmp;
  5765. 8002a22: 687b ldr r3, [r7, #4]
  5766. 8002a24: 681b ldr r3, [r3, #0]
  5767. 8002a26: 68fa ldr r2, [r7, #12]
  5768. 8002a28: 601a str r2, [r3, #0]
  5769. /* Initialise the error code */
  5770. hdma->ErrorCode = HAL_DMA_ERROR_NONE;
  5771. 8002a2a: 687b ldr r3, [r7, #4]
  5772. 8002a2c: 2200 movs r2, #0
  5773. 8002a2e: 639a str r2, [r3, #56] ; 0x38
  5774. /* Initialize the DMA state*/
  5775. hdma->State = HAL_DMA_STATE_READY;
  5776. 8002a30: 687b ldr r3, [r7, #4]
  5777. 8002a32: 2201 movs r2, #1
  5778. 8002a34: f883 2021 strb.w r2, [r3, #33] ; 0x21
  5779. /* Allocate lock resource and initialize it */
  5780. hdma->Lock = HAL_UNLOCKED;
  5781. 8002a38: 687b ldr r3, [r7, #4]
  5782. 8002a3a: 2200 movs r2, #0
  5783. 8002a3c: f883 2020 strb.w r2, [r3, #32]
  5784. return HAL_OK;
  5785. 8002a40: 2300 movs r3, #0
  5786. }
  5787. 8002a42: 4618 mov r0, r3
  5788. 8002a44: 3714 adds r7, #20
  5789. 8002a46: 46bd mov sp, r7
  5790. 8002a48: bc80 pop {r7}
  5791. 8002a4a: 4770 bx lr
  5792. 8002a4c: bffdfff8 .word 0xbffdfff8
  5793. 8002a50: cccccccd .word 0xcccccccd
  5794. 8002a54: 40020000 .word 0x40020000
  5795. 08002a58 <HAL_DMA_Start_IT>:
  5796. * @param DstAddress: The destination memory Buffer address
  5797. * @param DataLength: The length of data to be transferred from source to destination
  5798. * @retval HAL status
  5799. */
  5800. HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
  5801. {
  5802. 8002a58: b580 push {r7, lr}
  5803. 8002a5a: b086 sub sp, #24
  5804. 8002a5c: af00 add r7, sp, #0
  5805. 8002a5e: 60f8 str r0, [r7, #12]
  5806. 8002a60: 60b9 str r1, [r7, #8]
  5807. 8002a62: 607a str r2, [r7, #4]
  5808. 8002a64: 603b str r3, [r7, #0]
  5809. HAL_StatusTypeDef status = HAL_OK;
  5810. 8002a66: 2300 movs r3, #0
  5811. 8002a68: 75fb strb r3, [r7, #23]
  5812. /* Check the parameters */
  5813. assert_param(IS_DMA_BUFFER_SIZE(DataLength));
  5814. /* Process locked */
  5815. __HAL_LOCK(hdma);
  5816. 8002a6a: 68fb ldr r3, [r7, #12]
  5817. 8002a6c: f893 3020 ldrb.w r3, [r3, #32]
  5818. 8002a70: 2b01 cmp r3, #1
  5819. 8002a72: d101 bne.n 8002a78 <HAL_DMA_Start_IT+0x20>
  5820. 8002a74: 2302 movs r3, #2
  5821. 8002a76: e04a b.n 8002b0e <HAL_DMA_Start_IT+0xb6>
  5822. 8002a78: 68fb ldr r3, [r7, #12]
  5823. 8002a7a: 2201 movs r2, #1
  5824. 8002a7c: f883 2020 strb.w r2, [r3, #32]
  5825. if(HAL_DMA_STATE_READY == hdma->State)
  5826. 8002a80: 68fb ldr r3, [r7, #12]
  5827. 8002a82: f893 3021 ldrb.w r3, [r3, #33] ; 0x21
  5828. 8002a86: 2b01 cmp r3, #1
  5829. 8002a88: d13a bne.n 8002b00 <HAL_DMA_Start_IT+0xa8>
  5830. {
  5831. /* Change DMA peripheral state */
  5832. hdma->State = HAL_DMA_STATE_BUSY;
  5833. 8002a8a: 68fb ldr r3, [r7, #12]
  5834. 8002a8c: 2202 movs r2, #2
  5835. 8002a8e: f883 2021 strb.w r2, [r3, #33] ; 0x21
  5836. hdma->ErrorCode = HAL_DMA_ERROR_NONE;
  5837. 8002a92: 68fb ldr r3, [r7, #12]
  5838. 8002a94: 2200 movs r2, #0
  5839. 8002a96: 639a str r2, [r3, #56] ; 0x38
  5840. /* Disable the peripheral */
  5841. __HAL_DMA_DISABLE(hdma);
  5842. 8002a98: 68fb ldr r3, [r7, #12]
  5843. 8002a9a: 681b ldr r3, [r3, #0]
  5844. 8002a9c: 681a ldr r2, [r3, #0]
  5845. 8002a9e: 68fb ldr r3, [r7, #12]
  5846. 8002aa0: 681b ldr r3, [r3, #0]
  5847. 8002aa2: f022 0201 bic.w r2, r2, #1
  5848. 8002aa6: 601a str r2, [r3, #0]
  5849. /* Configure the source, destination address and the data length & clear flags*/
  5850. DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength);
  5851. 8002aa8: 683b ldr r3, [r7, #0]
  5852. 8002aaa: 687a ldr r2, [r7, #4]
  5853. 8002aac: 68b9 ldr r1, [r7, #8]
  5854. 8002aae: 68f8 ldr r0, [r7, #12]
  5855. 8002ab0: f000 f9ae bl 8002e10 <DMA_SetConfig>
  5856. /* Enable the transfer complete interrupt */
  5857. /* Enable the transfer Error interrupt */
  5858. if(NULL != hdma->XferHalfCpltCallback)
  5859. 8002ab4: 68fb ldr r3, [r7, #12]
  5860. 8002ab6: 6adb ldr r3, [r3, #44] ; 0x2c
  5861. 8002ab8: 2b00 cmp r3, #0
  5862. 8002aba: d008 beq.n 8002ace <HAL_DMA_Start_IT+0x76>
  5863. {
  5864. /* Enable the Half transfer complete interrupt as well */
  5865. __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));
  5866. 8002abc: 68fb ldr r3, [r7, #12]
  5867. 8002abe: 681b ldr r3, [r3, #0]
  5868. 8002ac0: 681a ldr r2, [r3, #0]
  5869. 8002ac2: 68fb ldr r3, [r7, #12]
  5870. 8002ac4: 681b ldr r3, [r3, #0]
  5871. 8002ac6: f042 020e orr.w r2, r2, #14
  5872. 8002aca: 601a str r2, [r3, #0]
  5873. 8002acc: e00f b.n 8002aee <HAL_DMA_Start_IT+0x96>
  5874. }
  5875. else
  5876. {
  5877. __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT);
  5878. 8002ace: 68fb ldr r3, [r7, #12]
  5879. 8002ad0: 681b ldr r3, [r3, #0]
  5880. 8002ad2: 681a ldr r2, [r3, #0]
  5881. 8002ad4: 68fb ldr r3, [r7, #12]
  5882. 8002ad6: 681b ldr r3, [r3, #0]
  5883. 8002ad8: f022 0204 bic.w r2, r2, #4
  5884. 8002adc: 601a str r2, [r3, #0]
  5885. __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_TE));
  5886. 8002ade: 68fb ldr r3, [r7, #12]
  5887. 8002ae0: 681b ldr r3, [r3, #0]
  5888. 8002ae2: 681a ldr r2, [r3, #0]
  5889. 8002ae4: 68fb ldr r3, [r7, #12]
  5890. 8002ae6: 681b ldr r3, [r3, #0]
  5891. 8002ae8: f042 020a orr.w r2, r2, #10
  5892. 8002aec: 601a str r2, [r3, #0]
  5893. }
  5894. /* Enable the Peripheral */
  5895. __HAL_DMA_ENABLE(hdma);
  5896. 8002aee: 68fb ldr r3, [r7, #12]
  5897. 8002af0: 681b ldr r3, [r3, #0]
  5898. 8002af2: 681a ldr r2, [r3, #0]
  5899. 8002af4: 68fb ldr r3, [r7, #12]
  5900. 8002af6: 681b ldr r3, [r3, #0]
  5901. 8002af8: f042 0201 orr.w r2, r2, #1
  5902. 8002afc: 601a str r2, [r3, #0]
  5903. 8002afe: e005 b.n 8002b0c <HAL_DMA_Start_IT+0xb4>
  5904. }
  5905. else
  5906. {
  5907. /* Process Unlocked */
  5908. __HAL_UNLOCK(hdma);
  5909. 8002b00: 68fb ldr r3, [r7, #12]
  5910. 8002b02: 2200 movs r2, #0
  5911. 8002b04: f883 2020 strb.w r2, [r3, #32]
  5912. /* Remain BUSY */
  5913. status = HAL_BUSY;
  5914. 8002b08: 2302 movs r3, #2
  5915. 8002b0a: 75fb strb r3, [r7, #23]
  5916. }
  5917. return status;
  5918. 8002b0c: 7dfb ldrb r3, [r7, #23]
  5919. }
  5920. 8002b0e: 4618 mov r0, r3
  5921. 8002b10: 3718 adds r7, #24
  5922. 8002b12: 46bd mov sp, r7
  5923. 8002b14: bd80 pop {r7, pc}
  5924. ...
  5925. 08002b18 <HAL_DMA_Abort_IT>:
  5926. * @param hdma : pointer to a DMA_HandleTypeDef structure that contains
  5927. * the configuration information for the specified DMA Channel.
  5928. * @retval HAL status
  5929. */
  5930. HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
  5931. {
  5932. 8002b18: b580 push {r7, lr}
  5933. 8002b1a: b084 sub sp, #16
  5934. 8002b1c: af00 add r7, sp, #0
  5935. 8002b1e: 6078 str r0, [r7, #4]
  5936. HAL_StatusTypeDef status = HAL_OK;
  5937. 8002b20: 2300 movs r3, #0
  5938. 8002b22: 73fb strb r3, [r7, #15]
  5939. if(HAL_DMA_STATE_BUSY != hdma->State)
  5940. 8002b24: 687b ldr r3, [r7, #4]
  5941. 8002b26: f893 3021 ldrb.w r3, [r3, #33] ; 0x21
  5942. 8002b2a: 2b02 cmp r3, #2
  5943. 8002b2c: d005 beq.n 8002b3a <HAL_DMA_Abort_IT+0x22>
  5944. {
  5945. /* no transfer ongoing */
  5946. hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER;
  5947. 8002b2e: 687b ldr r3, [r7, #4]
  5948. 8002b30: 2204 movs r2, #4
  5949. 8002b32: 639a str r2, [r3, #56] ; 0x38
  5950. status = HAL_ERROR;
  5951. 8002b34: 2301 movs r3, #1
  5952. 8002b36: 73fb strb r3, [r7, #15]
  5953. 8002b38: e051 b.n 8002bde <HAL_DMA_Abort_IT+0xc6>
  5954. }
  5955. else
  5956. {
  5957. /* Disable DMA IT */
  5958. __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));
  5959. 8002b3a: 687b ldr r3, [r7, #4]
  5960. 8002b3c: 681b ldr r3, [r3, #0]
  5961. 8002b3e: 681a ldr r2, [r3, #0]
  5962. 8002b40: 687b ldr r3, [r7, #4]
  5963. 8002b42: 681b ldr r3, [r3, #0]
  5964. 8002b44: f022 020e bic.w r2, r2, #14
  5965. 8002b48: 601a str r2, [r3, #0]
  5966. /* Disable the channel */
  5967. __HAL_DMA_DISABLE(hdma);
  5968. 8002b4a: 687b ldr r3, [r7, #4]
  5969. 8002b4c: 681b ldr r3, [r3, #0]
  5970. 8002b4e: 681a ldr r2, [r3, #0]
  5971. 8002b50: 687b ldr r3, [r7, #4]
  5972. 8002b52: 681b ldr r3, [r3, #0]
  5973. 8002b54: f022 0201 bic.w r2, r2, #1
  5974. 8002b58: 601a str r2, [r3, #0]
  5975. /* Clear all flags */
  5976. __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_GI_FLAG_INDEX(hdma));
  5977. 8002b5a: 687b ldr r3, [r7, #4]
  5978. 8002b5c: 681b ldr r3, [r3, #0]
  5979. 8002b5e: 4a22 ldr r2, [pc, #136] ; (8002be8 <HAL_DMA_Abort_IT+0xd0>)
  5980. 8002b60: 4293 cmp r3, r2
  5981. 8002b62: d029 beq.n 8002bb8 <HAL_DMA_Abort_IT+0xa0>
  5982. 8002b64: 687b ldr r3, [r7, #4]
  5983. 8002b66: 681b ldr r3, [r3, #0]
  5984. 8002b68: 4a20 ldr r2, [pc, #128] ; (8002bec <HAL_DMA_Abort_IT+0xd4>)
  5985. 8002b6a: 4293 cmp r3, r2
  5986. 8002b6c: d022 beq.n 8002bb4 <HAL_DMA_Abort_IT+0x9c>
  5987. 8002b6e: 687b ldr r3, [r7, #4]
  5988. 8002b70: 681b ldr r3, [r3, #0]
  5989. 8002b72: 4a1f ldr r2, [pc, #124] ; (8002bf0 <HAL_DMA_Abort_IT+0xd8>)
  5990. 8002b74: 4293 cmp r3, r2
  5991. 8002b76: d01a beq.n 8002bae <HAL_DMA_Abort_IT+0x96>
  5992. 8002b78: 687b ldr r3, [r7, #4]
  5993. 8002b7a: 681b ldr r3, [r3, #0]
  5994. 8002b7c: 4a1d ldr r2, [pc, #116] ; (8002bf4 <HAL_DMA_Abort_IT+0xdc>)
  5995. 8002b7e: 4293 cmp r3, r2
  5996. 8002b80: d012 beq.n 8002ba8 <HAL_DMA_Abort_IT+0x90>
  5997. 8002b82: 687b ldr r3, [r7, #4]
  5998. 8002b84: 681b ldr r3, [r3, #0]
  5999. 8002b86: 4a1c ldr r2, [pc, #112] ; (8002bf8 <HAL_DMA_Abort_IT+0xe0>)
  6000. 8002b88: 4293 cmp r3, r2
  6001. 8002b8a: d00a beq.n 8002ba2 <HAL_DMA_Abort_IT+0x8a>
  6002. 8002b8c: 687b ldr r3, [r7, #4]
  6003. 8002b8e: 681b ldr r3, [r3, #0]
  6004. 8002b90: 4a1a ldr r2, [pc, #104] ; (8002bfc <HAL_DMA_Abort_IT+0xe4>)
  6005. 8002b92: 4293 cmp r3, r2
  6006. 8002b94: d102 bne.n 8002b9c <HAL_DMA_Abort_IT+0x84>
  6007. 8002b96: f44f 1380 mov.w r3, #1048576 ; 0x100000
  6008. 8002b9a: e00e b.n 8002bba <HAL_DMA_Abort_IT+0xa2>
  6009. 8002b9c: f04f 7380 mov.w r3, #16777216 ; 0x1000000
  6010. 8002ba0: e00b b.n 8002bba <HAL_DMA_Abort_IT+0xa2>
  6011. 8002ba2: f44f 3380 mov.w r3, #65536 ; 0x10000
  6012. 8002ba6: e008 b.n 8002bba <HAL_DMA_Abort_IT+0xa2>
  6013. 8002ba8: f44f 5380 mov.w r3, #4096 ; 0x1000
  6014. 8002bac: e005 b.n 8002bba <HAL_DMA_Abort_IT+0xa2>
  6015. 8002bae: f44f 7380 mov.w r3, #256 ; 0x100
  6016. 8002bb2: e002 b.n 8002bba <HAL_DMA_Abort_IT+0xa2>
  6017. 8002bb4: 2310 movs r3, #16
  6018. 8002bb6: e000 b.n 8002bba <HAL_DMA_Abort_IT+0xa2>
  6019. 8002bb8: 2301 movs r3, #1
  6020. 8002bba: 4a11 ldr r2, [pc, #68] ; (8002c00 <HAL_DMA_Abort_IT+0xe8>)
  6021. 8002bbc: 6053 str r3, [r2, #4]
  6022. /* Change the DMA state */
  6023. hdma->State = HAL_DMA_STATE_READY;
  6024. 8002bbe: 687b ldr r3, [r7, #4]
  6025. 8002bc0: 2201 movs r2, #1
  6026. 8002bc2: f883 2021 strb.w r2, [r3, #33] ; 0x21
  6027. /* Process Unlocked */
  6028. __HAL_UNLOCK(hdma);
  6029. 8002bc6: 687b ldr r3, [r7, #4]
  6030. 8002bc8: 2200 movs r2, #0
  6031. 8002bca: f883 2020 strb.w r2, [r3, #32]
  6032. /* Call User Abort callback */
  6033. if(hdma->XferAbortCallback != NULL)
  6034. 8002bce: 687b ldr r3, [r7, #4]
  6035. 8002bd0: 6b5b ldr r3, [r3, #52] ; 0x34
  6036. 8002bd2: 2b00 cmp r3, #0
  6037. 8002bd4: d003 beq.n 8002bde <HAL_DMA_Abort_IT+0xc6>
  6038. {
  6039. hdma->XferAbortCallback(hdma);
  6040. 8002bd6: 687b ldr r3, [r7, #4]
  6041. 8002bd8: 6b5b ldr r3, [r3, #52] ; 0x34
  6042. 8002bda: 6878 ldr r0, [r7, #4]
  6043. 8002bdc: 4798 blx r3
  6044. }
  6045. }
  6046. return status;
  6047. 8002bde: 7bfb ldrb r3, [r7, #15]
  6048. }
  6049. 8002be0: 4618 mov r0, r3
  6050. 8002be2: 3710 adds r7, #16
  6051. 8002be4: 46bd mov sp, r7
  6052. 8002be6: bd80 pop {r7, pc}
  6053. 8002be8: 40020008 .word 0x40020008
  6054. 8002bec: 4002001c .word 0x4002001c
  6055. 8002bf0: 40020030 .word 0x40020030
  6056. 8002bf4: 40020044 .word 0x40020044
  6057. 8002bf8: 40020058 .word 0x40020058
  6058. 8002bfc: 4002006c .word 0x4002006c
  6059. 8002c00: 40020000 .word 0x40020000
  6060. 08002c04 <HAL_DMA_IRQHandler>:
  6061. * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
  6062. * the configuration information for the specified DMA Channel.
  6063. * @retval None
  6064. */
  6065. void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
  6066. {
  6067. 8002c04: b580 push {r7, lr}
  6068. 8002c06: b084 sub sp, #16
  6069. 8002c08: af00 add r7, sp, #0
  6070. 8002c0a: 6078 str r0, [r7, #4]
  6071. uint32_t flag_it = hdma->DmaBaseAddress->ISR;
  6072. 8002c0c: 687b ldr r3, [r7, #4]
  6073. 8002c0e: 6bdb ldr r3, [r3, #60] ; 0x3c
  6074. 8002c10: 681b ldr r3, [r3, #0]
  6075. 8002c12: 60fb str r3, [r7, #12]
  6076. uint32_t source_it = hdma->Instance->CCR;
  6077. 8002c14: 687b ldr r3, [r7, #4]
  6078. 8002c16: 681b ldr r3, [r3, #0]
  6079. 8002c18: 681b ldr r3, [r3, #0]
  6080. 8002c1a: 60bb str r3, [r7, #8]
  6081. /* Half Transfer Complete Interrupt management ******************************/
  6082. if (((flag_it & (DMA_FLAG_HT1 << hdma->ChannelIndex)) != RESET) && ((source_it & DMA_IT_HT) != RESET))
  6083. 8002c1c: 687b ldr r3, [r7, #4]
  6084. 8002c1e: 6c1b ldr r3, [r3, #64] ; 0x40
  6085. 8002c20: 2204 movs r2, #4
  6086. 8002c22: 409a lsls r2, r3
  6087. 8002c24: 68fb ldr r3, [r7, #12]
  6088. 8002c26: 4013 ands r3, r2
  6089. 8002c28: 2b00 cmp r3, #0
  6090. 8002c2a: d04f beq.n 8002ccc <HAL_DMA_IRQHandler+0xc8>
  6091. 8002c2c: 68bb ldr r3, [r7, #8]
  6092. 8002c2e: f003 0304 and.w r3, r3, #4
  6093. 8002c32: 2b00 cmp r3, #0
  6094. 8002c34: d04a beq.n 8002ccc <HAL_DMA_IRQHandler+0xc8>
  6095. {
  6096. /* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */
  6097. if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U)
  6098. 8002c36: 687b ldr r3, [r7, #4]
  6099. 8002c38: 681b ldr r3, [r3, #0]
  6100. 8002c3a: 681b ldr r3, [r3, #0]
  6101. 8002c3c: f003 0320 and.w r3, r3, #32
  6102. 8002c40: 2b00 cmp r3, #0
  6103. 8002c42: d107 bne.n 8002c54 <HAL_DMA_IRQHandler+0x50>
  6104. {
  6105. /* Disable the half transfer interrupt */
  6106. __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT);
  6107. 8002c44: 687b ldr r3, [r7, #4]
  6108. 8002c46: 681b ldr r3, [r3, #0]
  6109. 8002c48: 681a ldr r2, [r3, #0]
  6110. 8002c4a: 687b ldr r3, [r7, #4]
  6111. 8002c4c: 681b ldr r3, [r3, #0]
  6112. 8002c4e: f022 0204 bic.w r2, r2, #4
  6113. 8002c52: 601a str r2, [r3, #0]
  6114. }
  6115. /* Clear the half transfer complete flag */
  6116. __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma));
  6117. 8002c54: 687b ldr r3, [r7, #4]
  6118. 8002c56: 681b ldr r3, [r3, #0]
  6119. 8002c58: 4a66 ldr r2, [pc, #408] ; (8002df4 <HAL_DMA_IRQHandler+0x1f0>)
  6120. 8002c5a: 4293 cmp r3, r2
  6121. 8002c5c: d029 beq.n 8002cb2 <HAL_DMA_IRQHandler+0xae>
  6122. 8002c5e: 687b ldr r3, [r7, #4]
  6123. 8002c60: 681b ldr r3, [r3, #0]
  6124. 8002c62: 4a65 ldr r2, [pc, #404] ; (8002df8 <HAL_DMA_IRQHandler+0x1f4>)
  6125. 8002c64: 4293 cmp r3, r2
  6126. 8002c66: d022 beq.n 8002cae <HAL_DMA_IRQHandler+0xaa>
  6127. 8002c68: 687b ldr r3, [r7, #4]
  6128. 8002c6a: 681b ldr r3, [r3, #0]
  6129. 8002c6c: 4a63 ldr r2, [pc, #396] ; (8002dfc <HAL_DMA_IRQHandler+0x1f8>)
  6130. 8002c6e: 4293 cmp r3, r2
  6131. 8002c70: d01a beq.n 8002ca8 <HAL_DMA_IRQHandler+0xa4>
  6132. 8002c72: 687b ldr r3, [r7, #4]
  6133. 8002c74: 681b ldr r3, [r3, #0]
  6134. 8002c76: 4a62 ldr r2, [pc, #392] ; (8002e00 <HAL_DMA_IRQHandler+0x1fc>)
  6135. 8002c78: 4293 cmp r3, r2
  6136. 8002c7a: d012 beq.n 8002ca2 <HAL_DMA_IRQHandler+0x9e>
  6137. 8002c7c: 687b ldr r3, [r7, #4]
  6138. 8002c7e: 681b ldr r3, [r3, #0]
  6139. 8002c80: 4a60 ldr r2, [pc, #384] ; (8002e04 <HAL_DMA_IRQHandler+0x200>)
  6140. 8002c82: 4293 cmp r3, r2
  6141. 8002c84: d00a beq.n 8002c9c <HAL_DMA_IRQHandler+0x98>
  6142. 8002c86: 687b ldr r3, [r7, #4]
  6143. 8002c88: 681b ldr r3, [r3, #0]
  6144. 8002c8a: 4a5f ldr r2, [pc, #380] ; (8002e08 <HAL_DMA_IRQHandler+0x204>)
  6145. 8002c8c: 4293 cmp r3, r2
  6146. 8002c8e: d102 bne.n 8002c96 <HAL_DMA_IRQHandler+0x92>
  6147. 8002c90: f44f 0380 mov.w r3, #4194304 ; 0x400000
  6148. 8002c94: e00e b.n 8002cb4 <HAL_DMA_IRQHandler+0xb0>
  6149. 8002c96: f04f 6380 mov.w r3, #67108864 ; 0x4000000
  6150. 8002c9a: e00b b.n 8002cb4 <HAL_DMA_IRQHandler+0xb0>
  6151. 8002c9c: f44f 2380 mov.w r3, #262144 ; 0x40000
  6152. 8002ca0: e008 b.n 8002cb4 <HAL_DMA_IRQHandler+0xb0>
  6153. 8002ca2: f44f 4380 mov.w r3, #16384 ; 0x4000
  6154. 8002ca6: e005 b.n 8002cb4 <HAL_DMA_IRQHandler+0xb0>
  6155. 8002ca8: f44f 6380 mov.w r3, #1024 ; 0x400
  6156. 8002cac: e002 b.n 8002cb4 <HAL_DMA_IRQHandler+0xb0>
  6157. 8002cae: 2340 movs r3, #64 ; 0x40
  6158. 8002cb0: e000 b.n 8002cb4 <HAL_DMA_IRQHandler+0xb0>
  6159. 8002cb2: 2304 movs r3, #4
  6160. 8002cb4: 4a55 ldr r2, [pc, #340] ; (8002e0c <HAL_DMA_IRQHandler+0x208>)
  6161. 8002cb6: 6053 str r3, [r2, #4]
  6162. /* DMA peripheral state is not updated in Half Transfer */
  6163. /* but in Transfer Complete case */
  6164. if(hdma->XferHalfCpltCallback != NULL)
  6165. 8002cb8: 687b ldr r3, [r7, #4]
  6166. 8002cba: 6adb ldr r3, [r3, #44] ; 0x2c
  6167. 8002cbc: 2b00 cmp r3, #0
  6168. 8002cbe: f000 8094 beq.w 8002dea <HAL_DMA_IRQHandler+0x1e6>
  6169. {
  6170. /* Half transfer callback */
  6171. hdma->XferHalfCpltCallback(hdma);
  6172. 8002cc2: 687b ldr r3, [r7, #4]
  6173. 8002cc4: 6adb ldr r3, [r3, #44] ; 0x2c
  6174. 8002cc6: 6878 ldr r0, [r7, #4]
  6175. 8002cc8: 4798 blx r3
  6176. if(hdma->XferHalfCpltCallback != NULL)
  6177. 8002cca: e08e b.n 8002dea <HAL_DMA_IRQHandler+0x1e6>
  6178. }
  6179. }
  6180. /* Transfer Complete Interrupt management ***********************************/
  6181. else if (((flag_it & (DMA_FLAG_TC1 << hdma->ChannelIndex)) != RESET) && ((source_it & DMA_IT_TC) != RESET))
  6182. 8002ccc: 687b ldr r3, [r7, #4]
  6183. 8002cce: 6c1b ldr r3, [r3, #64] ; 0x40
  6184. 8002cd0: 2202 movs r2, #2
  6185. 8002cd2: 409a lsls r2, r3
  6186. 8002cd4: 68fb ldr r3, [r7, #12]
  6187. 8002cd6: 4013 ands r3, r2
  6188. 8002cd8: 2b00 cmp r3, #0
  6189. 8002cda: d056 beq.n 8002d8a <HAL_DMA_IRQHandler+0x186>
  6190. 8002cdc: 68bb ldr r3, [r7, #8]
  6191. 8002cde: f003 0302 and.w r3, r3, #2
  6192. 8002ce2: 2b00 cmp r3, #0
  6193. 8002ce4: d051 beq.n 8002d8a <HAL_DMA_IRQHandler+0x186>
  6194. {
  6195. if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U)
  6196. 8002ce6: 687b ldr r3, [r7, #4]
  6197. 8002ce8: 681b ldr r3, [r3, #0]
  6198. 8002cea: 681b ldr r3, [r3, #0]
  6199. 8002cec: f003 0320 and.w r3, r3, #32
  6200. 8002cf0: 2b00 cmp r3, #0
  6201. 8002cf2: d10b bne.n 8002d0c <HAL_DMA_IRQHandler+0x108>
  6202. {
  6203. /* Disable the transfer complete and error interrupt */
  6204. __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE | DMA_IT_TC);
  6205. 8002cf4: 687b ldr r3, [r7, #4]
  6206. 8002cf6: 681b ldr r3, [r3, #0]
  6207. 8002cf8: 681a ldr r2, [r3, #0]
  6208. 8002cfa: 687b ldr r3, [r7, #4]
  6209. 8002cfc: 681b ldr r3, [r3, #0]
  6210. 8002cfe: f022 020a bic.w r2, r2, #10
  6211. 8002d02: 601a str r2, [r3, #0]
  6212. /* Change the DMA state */
  6213. hdma->State = HAL_DMA_STATE_READY;
  6214. 8002d04: 687b ldr r3, [r7, #4]
  6215. 8002d06: 2201 movs r2, #1
  6216. 8002d08: f883 2021 strb.w r2, [r3, #33] ; 0x21
  6217. }
  6218. /* Clear the transfer complete flag */
  6219. __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_TC_FLAG_INDEX(hdma));
  6220. 8002d0c: 687b ldr r3, [r7, #4]
  6221. 8002d0e: 681b ldr r3, [r3, #0]
  6222. 8002d10: 4a38 ldr r2, [pc, #224] ; (8002df4 <HAL_DMA_IRQHandler+0x1f0>)
  6223. 8002d12: 4293 cmp r3, r2
  6224. 8002d14: d029 beq.n 8002d6a <HAL_DMA_IRQHandler+0x166>
  6225. 8002d16: 687b ldr r3, [r7, #4]
  6226. 8002d18: 681b ldr r3, [r3, #0]
  6227. 8002d1a: 4a37 ldr r2, [pc, #220] ; (8002df8 <HAL_DMA_IRQHandler+0x1f4>)
  6228. 8002d1c: 4293 cmp r3, r2
  6229. 8002d1e: d022 beq.n 8002d66 <HAL_DMA_IRQHandler+0x162>
  6230. 8002d20: 687b ldr r3, [r7, #4]
  6231. 8002d22: 681b ldr r3, [r3, #0]
  6232. 8002d24: 4a35 ldr r2, [pc, #212] ; (8002dfc <HAL_DMA_IRQHandler+0x1f8>)
  6233. 8002d26: 4293 cmp r3, r2
  6234. 8002d28: d01a beq.n 8002d60 <HAL_DMA_IRQHandler+0x15c>
  6235. 8002d2a: 687b ldr r3, [r7, #4]
  6236. 8002d2c: 681b ldr r3, [r3, #0]
  6237. 8002d2e: 4a34 ldr r2, [pc, #208] ; (8002e00 <HAL_DMA_IRQHandler+0x1fc>)
  6238. 8002d30: 4293 cmp r3, r2
  6239. 8002d32: d012 beq.n 8002d5a <HAL_DMA_IRQHandler+0x156>
  6240. 8002d34: 687b ldr r3, [r7, #4]
  6241. 8002d36: 681b ldr r3, [r3, #0]
  6242. 8002d38: 4a32 ldr r2, [pc, #200] ; (8002e04 <HAL_DMA_IRQHandler+0x200>)
  6243. 8002d3a: 4293 cmp r3, r2
  6244. 8002d3c: d00a beq.n 8002d54 <HAL_DMA_IRQHandler+0x150>
  6245. 8002d3e: 687b ldr r3, [r7, #4]
  6246. 8002d40: 681b ldr r3, [r3, #0]
  6247. 8002d42: 4a31 ldr r2, [pc, #196] ; (8002e08 <HAL_DMA_IRQHandler+0x204>)
  6248. 8002d44: 4293 cmp r3, r2
  6249. 8002d46: d102 bne.n 8002d4e <HAL_DMA_IRQHandler+0x14a>
  6250. 8002d48: f44f 1300 mov.w r3, #2097152 ; 0x200000
  6251. 8002d4c: e00e b.n 8002d6c <HAL_DMA_IRQHandler+0x168>
  6252. 8002d4e: f04f 7300 mov.w r3, #33554432 ; 0x2000000
  6253. 8002d52: e00b b.n 8002d6c <HAL_DMA_IRQHandler+0x168>
  6254. 8002d54: f44f 3300 mov.w r3, #131072 ; 0x20000
  6255. 8002d58: e008 b.n 8002d6c <HAL_DMA_IRQHandler+0x168>
  6256. 8002d5a: f44f 5300 mov.w r3, #8192 ; 0x2000
  6257. 8002d5e: e005 b.n 8002d6c <HAL_DMA_IRQHandler+0x168>
  6258. 8002d60: f44f 7300 mov.w r3, #512 ; 0x200
  6259. 8002d64: e002 b.n 8002d6c <HAL_DMA_IRQHandler+0x168>
  6260. 8002d66: 2320 movs r3, #32
  6261. 8002d68: e000 b.n 8002d6c <HAL_DMA_IRQHandler+0x168>
  6262. 8002d6a: 2302 movs r3, #2
  6263. 8002d6c: 4a27 ldr r2, [pc, #156] ; (8002e0c <HAL_DMA_IRQHandler+0x208>)
  6264. 8002d6e: 6053 str r3, [r2, #4]
  6265. /* Process Unlocked */
  6266. __HAL_UNLOCK(hdma);
  6267. 8002d70: 687b ldr r3, [r7, #4]
  6268. 8002d72: 2200 movs r2, #0
  6269. 8002d74: f883 2020 strb.w r2, [r3, #32]
  6270. if(hdma->XferCpltCallback != NULL)
  6271. 8002d78: 687b ldr r3, [r7, #4]
  6272. 8002d7a: 6a9b ldr r3, [r3, #40] ; 0x28
  6273. 8002d7c: 2b00 cmp r3, #0
  6274. 8002d7e: d034 beq.n 8002dea <HAL_DMA_IRQHandler+0x1e6>
  6275. {
  6276. /* Transfer complete callback */
  6277. hdma->XferCpltCallback(hdma);
  6278. 8002d80: 687b ldr r3, [r7, #4]
  6279. 8002d82: 6a9b ldr r3, [r3, #40] ; 0x28
  6280. 8002d84: 6878 ldr r0, [r7, #4]
  6281. 8002d86: 4798 blx r3
  6282. if(hdma->XferCpltCallback != NULL)
  6283. 8002d88: e02f b.n 8002dea <HAL_DMA_IRQHandler+0x1e6>
  6284. }
  6285. }
  6286. /* Transfer Error Interrupt management **************************************/
  6287. else if (( RESET != (flag_it & (DMA_FLAG_TE1 << hdma->ChannelIndex))) && (RESET != (source_it & DMA_IT_TE)))
  6288. 8002d8a: 687b ldr r3, [r7, #4]
  6289. 8002d8c: 6c1b ldr r3, [r3, #64] ; 0x40
  6290. 8002d8e: 2208 movs r2, #8
  6291. 8002d90: 409a lsls r2, r3
  6292. 8002d92: 68fb ldr r3, [r7, #12]
  6293. 8002d94: 4013 ands r3, r2
  6294. 8002d96: 2b00 cmp r3, #0
  6295. 8002d98: d028 beq.n 8002dec <HAL_DMA_IRQHandler+0x1e8>
  6296. 8002d9a: 68bb ldr r3, [r7, #8]
  6297. 8002d9c: f003 0308 and.w r3, r3, #8
  6298. 8002da0: 2b00 cmp r3, #0
  6299. 8002da2: d023 beq.n 8002dec <HAL_DMA_IRQHandler+0x1e8>
  6300. {
  6301. /* When a DMA transfer error occurs */
  6302. /* A hardware clear of its EN bits is performed */
  6303. /* Disable ALL DMA IT */
  6304. __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));
  6305. 8002da4: 687b ldr r3, [r7, #4]
  6306. 8002da6: 681b ldr r3, [r3, #0]
  6307. 8002da8: 681a ldr r2, [r3, #0]
  6308. 8002daa: 687b ldr r3, [r7, #4]
  6309. 8002dac: 681b ldr r3, [r3, #0]
  6310. 8002dae: f022 020e bic.w r2, r2, #14
  6311. 8002db2: 601a str r2, [r3, #0]
  6312. /* Clear all flags */
  6313. hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << hdma->ChannelIndex);
  6314. 8002db4: 687b ldr r3, [r7, #4]
  6315. 8002db6: 6c1a ldr r2, [r3, #64] ; 0x40
  6316. 8002db8: 687b ldr r3, [r7, #4]
  6317. 8002dba: 6bdb ldr r3, [r3, #60] ; 0x3c
  6318. 8002dbc: 2101 movs r1, #1
  6319. 8002dbe: fa01 f202 lsl.w r2, r1, r2
  6320. 8002dc2: 605a str r2, [r3, #4]
  6321. /* Update error code */
  6322. hdma->ErrorCode = HAL_DMA_ERROR_TE;
  6323. 8002dc4: 687b ldr r3, [r7, #4]
  6324. 8002dc6: 2201 movs r2, #1
  6325. 8002dc8: 639a str r2, [r3, #56] ; 0x38
  6326. /* Change the DMA state */
  6327. hdma->State = HAL_DMA_STATE_READY;
  6328. 8002dca: 687b ldr r3, [r7, #4]
  6329. 8002dcc: 2201 movs r2, #1
  6330. 8002dce: f883 2021 strb.w r2, [r3, #33] ; 0x21
  6331. /* Process Unlocked */
  6332. __HAL_UNLOCK(hdma);
  6333. 8002dd2: 687b ldr r3, [r7, #4]
  6334. 8002dd4: 2200 movs r2, #0
  6335. 8002dd6: f883 2020 strb.w r2, [r3, #32]
  6336. if (hdma->XferErrorCallback != NULL)
  6337. 8002dda: 687b ldr r3, [r7, #4]
  6338. 8002ddc: 6b1b ldr r3, [r3, #48] ; 0x30
  6339. 8002dde: 2b00 cmp r3, #0
  6340. 8002de0: d004 beq.n 8002dec <HAL_DMA_IRQHandler+0x1e8>
  6341. {
  6342. /* Transfer error callback */
  6343. hdma->XferErrorCallback(hdma);
  6344. 8002de2: 687b ldr r3, [r7, #4]
  6345. 8002de4: 6b1b ldr r3, [r3, #48] ; 0x30
  6346. 8002de6: 6878 ldr r0, [r7, #4]
  6347. 8002de8: 4798 blx r3
  6348. }
  6349. }
  6350. return;
  6351. 8002dea: bf00 nop
  6352. 8002dec: bf00 nop
  6353. }
  6354. 8002dee: 3710 adds r7, #16
  6355. 8002df0: 46bd mov sp, r7
  6356. 8002df2: bd80 pop {r7, pc}
  6357. 8002df4: 40020008 .word 0x40020008
  6358. 8002df8: 4002001c .word 0x4002001c
  6359. 8002dfc: 40020030 .word 0x40020030
  6360. 8002e00: 40020044 .word 0x40020044
  6361. 8002e04: 40020058 .word 0x40020058
  6362. 8002e08: 4002006c .word 0x4002006c
  6363. 8002e0c: 40020000 .word 0x40020000
  6364. 08002e10 <DMA_SetConfig>:
  6365. * @param DstAddress: The destination memory Buffer address
  6366. * @param DataLength: The length of data to be transferred from source to destination
  6367. * @retval HAL status
  6368. */
  6369. static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
  6370. {
  6371. 8002e10: b480 push {r7}
  6372. 8002e12: b085 sub sp, #20
  6373. 8002e14: af00 add r7, sp, #0
  6374. 8002e16: 60f8 str r0, [r7, #12]
  6375. 8002e18: 60b9 str r1, [r7, #8]
  6376. 8002e1a: 607a str r2, [r7, #4]
  6377. 8002e1c: 603b str r3, [r7, #0]
  6378. /* Clear all flags */
  6379. hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << hdma->ChannelIndex);
  6380. 8002e1e: 68fb ldr r3, [r7, #12]
  6381. 8002e20: 6c1a ldr r2, [r3, #64] ; 0x40
  6382. 8002e22: 68fb ldr r3, [r7, #12]
  6383. 8002e24: 6bdb ldr r3, [r3, #60] ; 0x3c
  6384. 8002e26: 2101 movs r1, #1
  6385. 8002e28: fa01 f202 lsl.w r2, r1, r2
  6386. 8002e2c: 605a str r2, [r3, #4]
  6387. /* Configure DMA Channel data length */
  6388. hdma->Instance->CNDTR = DataLength;
  6389. 8002e2e: 68fb ldr r3, [r7, #12]
  6390. 8002e30: 681b ldr r3, [r3, #0]
  6391. 8002e32: 683a ldr r2, [r7, #0]
  6392. 8002e34: 605a str r2, [r3, #4]
  6393. /* Memory to Peripheral */
  6394. if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH)
  6395. 8002e36: 68fb ldr r3, [r7, #12]
  6396. 8002e38: 685b ldr r3, [r3, #4]
  6397. 8002e3a: 2b10 cmp r3, #16
  6398. 8002e3c: d108 bne.n 8002e50 <DMA_SetConfig+0x40>
  6399. {
  6400. /* Configure DMA Channel destination address */
  6401. hdma->Instance->CPAR = DstAddress;
  6402. 8002e3e: 68fb ldr r3, [r7, #12]
  6403. 8002e40: 681b ldr r3, [r3, #0]
  6404. 8002e42: 687a ldr r2, [r7, #4]
  6405. 8002e44: 609a str r2, [r3, #8]
  6406. /* Configure DMA Channel source address */
  6407. hdma->Instance->CMAR = SrcAddress;
  6408. 8002e46: 68fb ldr r3, [r7, #12]
  6409. 8002e48: 681b ldr r3, [r3, #0]
  6410. 8002e4a: 68ba ldr r2, [r7, #8]
  6411. 8002e4c: 60da str r2, [r3, #12]
  6412. hdma->Instance->CPAR = SrcAddress;
  6413. /* Configure DMA Channel destination address */
  6414. hdma->Instance->CMAR = DstAddress;
  6415. }
  6416. }
  6417. 8002e4e: e007 b.n 8002e60 <DMA_SetConfig+0x50>
  6418. hdma->Instance->CPAR = SrcAddress;
  6419. 8002e50: 68fb ldr r3, [r7, #12]
  6420. 8002e52: 681b ldr r3, [r3, #0]
  6421. 8002e54: 68ba ldr r2, [r7, #8]
  6422. 8002e56: 609a str r2, [r3, #8]
  6423. hdma->Instance->CMAR = DstAddress;
  6424. 8002e58: 68fb ldr r3, [r7, #12]
  6425. 8002e5a: 681b ldr r3, [r3, #0]
  6426. 8002e5c: 687a ldr r2, [r7, #4]
  6427. 8002e5e: 60da str r2, [r3, #12]
  6428. }
  6429. 8002e60: bf00 nop
  6430. 8002e62: 3714 adds r7, #20
  6431. 8002e64: 46bd mov sp, r7
  6432. 8002e66: bc80 pop {r7}
  6433. 8002e68: 4770 bx lr
  6434. ...
  6435. 08002e6c <HAL_FLASH_Program>:
  6436. * @param Data: Specifies the data to be programmed
  6437. *
  6438. * @retval HAL_StatusTypeDef HAL Status
  6439. */
  6440. HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
  6441. {
  6442. 8002e6c: b5f0 push {r4, r5, r6, r7, lr}
  6443. 8002e6e: b087 sub sp, #28
  6444. 8002e70: af00 add r7, sp, #0
  6445. 8002e72: 60f8 str r0, [r7, #12]
  6446. 8002e74: 60b9 str r1, [r7, #8]
  6447. 8002e76: e9c7 2300 strd r2, r3, [r7]
  6448. HAL_StatusTypeDef status = HAL_ERROR;
  6449. 8002e7a: 2301 movs r3, #1
  6450. 8002e7c: 75fb strb r3, [r7, #23]
  6451. uint8_t index = 0;
  6452. 8002e7e: 2300 movs r3, #0
  6453. 8002e80: 75bb strb r3, [r7, #22]
  6454. uint8_t nbiterations = 0;
  6455. 8002e82: 2300 movs r3, #0
  6456. 8002e84: 757b strb r3, [r7, #21]
  6457. /* Process Locked */
  6458. __HAL_LOCK(&pFlash);
  6459. 8002e86: 4b2f ldr r3, [pc, #188] ; (8002f44 <HAL_FLASH_Program+0xd8>)
  6460. 8002e88: 7e1b ldrb r3, [r3, #24]
  6461. 8002e8a: 2b01 cmp r3, #1
  6462. 8002e8c: d101 bne.n 8002e92 <HAL_FLASH_Program+0x26>
  6463. 8002e8e: 2302 movs r3, #2
  6464. 8002e90: e054 b.n 8002f3c <HAL_FLASH_Program+0xd0>
  6465. 8002e92: 4b2c ldr r3, [pc, #176] ; (8002f44 <HAL_FLASH_Program+0xd8>)
  6466. 8002e94: 2201 movs r2, #1
  6467. 8002e96: 761a strb r2, [r3, #24]
  6468. #if defined(FLASH_BANK2_END)
  6469. if(Address <= FLASH_BANK1_END)
  6470. {
  6471. #endif /* FLASH_BANK2_END */
  6472. /* Wait for last operation to be completed */
  6473. status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE);
  6474. 8002e98: f24c 3050 movw r0, #50000 ; 0xc350
  6475. 8002e9c: f000 f8a8 bl 8002ff0 <FLASH_WaitForLastOperation>
  6476. 8002ea0: 4603 mov r3, r0
  6477. 8002ea2: 75fb strb r3, [r7, #23]
  6478. /* Wait for last operation to be completed */
  6479. status = FLASH_WaitForLastOperationBank2(FLASH_TIMEOUT_VALUE);
  6480. }
  6481. #endif /* FLASH_BANK2_END */
  6482. if(status == HAL_OK)
  6483. 8002ea4: 7dfb ldrb r3, [r7, #23]
  6484. 8002ea6: 2b00 cmp r3, #0
  6485. 8002ea8: d144 bne.n 8002f34 <HAL_FLASH_Program+0xc8>
  6486. {
  6487. if(TypeProgram == FLASH_TYPEPROGRAM_HALFWORD)
  6488. 8002eaa: 68fb ldr r3, [r7, #12]
  6489. 8002eac: 2b01 cmp r3, #1
  6490. 8002eae: d102 bne.n 8002eb6 <HAL_FLASH_Program+0x4a>
  6491. {
  6492. /* Program halfword (16-bit) at a specified address. */
  6493. nbiterations = 1U;
  6494. 8002eb0: 2301 movs r3, #1
  6495. 8002eb2: 757b strb r3, [r7, #21]
  6496. 8002eb4: e007 b.n 8002ec6 <HAL_FLASH_Program+0x5a>
  6497. }
  6498. else if(TypeProgram == FLASH_TYPEPROGRAM_WORD)
  6499. 8002eb6: 68fb ldr r3, [r7, #12]
  6500. 8002eb8: 2b02 cmp r3, #2
  6501. 8002eba: d102 bne.n 8002ec2 <HAL_FLASH_Program+0x56>
  6502. {
  6503. /* Program word (32-bit = 2*16-bit) at a specified address. */
  6504. nbiterations = 2U;
  6505. 8002ebc: 2302 movs r3, #2
  6506. 8002ebe: 757b strb r3, [r7, #21]
  6507. 8002ec0: e001 b.n 8002ec6 <HAL_FLASH_Program+0x5a>
  6508. }
  6509. else
  6510. {
  6511. /* Program double word (64-bit = 4*16-bit) at a specified address. */
  6512. nbiterations = 4U;
  6513. 8002ec2: 2304 movs r3, #4
  6514. 8002ec4: 757b strb r3, [r7, #21]
  6515. }
  6516. for (index = 0U; index < nbiterations; index++)
  6517. 8002ec6: 2300 movs r3, #0
  6518. 8002ec8: 75bb strb r3, [r7, #22]
  6519. 8002eca: e02d b.n 8002f28 <HAL_FLASH_Program+0xbc>
  6520. {
  6521. FLASH_Program_HalfWord((Address + (2U*index)), (uint16_t)(Data >> (16U*index)));
  6522. 8002ecc: 7dbb ldrb r3, [r7, #22]
  6523. 8002ece: 005a lsls r2, r3, #1
  6524. 8002ed0: 68bb ldr r3, [r7, #8]
  6525. 8002ed2: eb02 0c03 add.w ip, r2, r3
  6526. 8002ed6: 7dbb ldrb r3, [r7, #22]
  6527. 8002ed8: 0119 lsls r1, r3, #4
  6528. 8002eda: e9d7 2300 ldrd r2, r3, [r7]
  6529. 8002ede: f1c1 0620 rsb r6, r1, #32
  6530. 8002ee2: f1a1 0020 sub.w r0, r1, #32
  6531. 8002ee6: fa22 f401 lsr.w r4, r2, r1
  6532. 8002eea: fa03 f606 lsl.w r6, r3, r6
  6533. 8002eee: 4334 orrs r4, r6
  6534. 8002ef0: fa23 f000 lsr.w r0, r3, r0
  6535. 8002ef4: 4304 orrs r4, r0
  6536. 8002ef6: fa23 f501 lsr.w r5, r3, r1
  6537. 8002efa: b2a3 uxth r3, r4
  6538. 8002efc: 4619 mov r1, r3
  6539. 8002efe: 4660 mov r0, ip
  6540. 8002f00: f000 f85a bl 8002fb8 <FLASH_Program_HalfWord>
  6541. #if defined(FLASH_BANK2_END)
  6542. if(Address <= FLASH_BANK1_END)
  6543. {
  6544. #endif /* FLASH_BANK2_END */
  6545. /* Wait for last operation to be completed */
  6546. status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE);
  6547. 8002f04: f24c 3050 movw r0, #50000 ; 0xc350
  6548. 8002f08: f000 f872 bl 8002ff0 <FLASH_WaitForLastOperation>
  6549. 8002f0c: 4603 mov r3, r0
  6550. 8002f0e: 75fb strb r3, [r7, #23]
  6551. /* If the program operation is completed, disable the PG Bit */
  6552. CLEAR_BIT(FLASH->CR, FLASH_CR_PG);
  6553. 8002f10: 4b0d ldr r3, [pc, #52] ; (8002f48 <HAL_FLASH_Program+0xdc>)
  6554. 8002f12: 691b ldr r3, [r3, #16]
  6555. 8002f14: 4a0c ldr r2, [pc, #48] ; (8002f48 <HAL_FLASH_Program+0xdc>)
  6556. 8002f16: f023 0301 bic.w r3, r3, #1
  6557. 8002f1a: 6113 str r3, [r2, #16]
  6558. /* If the program operation is completed, disable the PG Bit */
  6559. CLEAR_BIT(FLASH->CR2, FLASH_CR2_PG);
  6560. }
  6561. #endif /* FLASH_BANK2_END */
  6562. /* In case of error, stop programation procedure */
  6563. if (status != HAL_OK)
  6564. 8002f1c: 7dfb ldrb r3, [r7, #23]
  6565. 8002f1e: 2b00 cmp r3, #0
  6566. 8002f20: d107 bne.n 8002f32 <HAL_FLASH_Program+0xc6>
  6567. for (index = 0U; index < nbiterations; index++)
  6568. 8002f22: 7dbb ldrb r3, [r7, #22]
  6569. 8002f24: 3301 adds r3, #1
  6570. 8002f26: 75bb strb r3, [r7, #22]
  6571. 8002f28: 7dba ldrb r2, [r7, #22]
  6572. 8002f2a: 7d7b ldrb r3, [r7, #21]
  6573. 8002f2c: 429a cmp r2, r3
  6574. 8002f2e: d3cd bcc.n 8002ecc <HAL_FLASH_Program+0x60>
  6575. 8002f30: e000 b.n 8002f34 <HAL_FLASH_Program+0xc8>
  6576. {
  6577. break;
  6578. 8002f32: bf00 nop
  6579. }
  6580. }
  6581. }
  6582. /* Process Unlocked */
  6583. __HAL_UNLOCK(&pFlash);
  6584. 8002f34: 4b03 ldr r3, [pc, #12] ; (8002f44 <HAL_FLASH_Program+0xd8>)
  6585. 8002f36: 2200 movs r2, #0
  6586. 8002f38: 761a strb r2, [r3, #24]
  6587. return status;
  6588. 8002f3a: 7dfb ldrb r3, [r7, #23]
  6589. }
  6590. 8002f3c: 4618 mov r0, r3
  6591. 8002f3e: 371c adds r7, #28
  6592. 8002f40: 46bd mov sp, r7
  6593. 8002f42: bdf0 pop {r4, r5, r6, r7, pc}
  6594. 8002f44: 200008f0 .word 0x200008f0
  6595. 8002f48: 40022000 .word 0x40022000
  6596. 08002f4c <HAL_FLASH_Unlock>:
  6597. /**
  6598. * @brief Unlock the FLASH control register access
  6599. * @retval HAL Status
  6600. */
  6601. HAL_StatusTypeDef HAL_FLASH_Unlock(void)
  6602. {
  6603. 8002f4c: b480 push {r7}
  6604. 8002f4e: b083 sub sp, #12
  6605. 8002f50: af00 add r7, sp, #0
  6606. HAL_StatusTypeDef status = HAL_OK;
  6607. 8002f52: 2300 movs r3, #0
  6608. 8002f54: 71fb strb r3, [r7, #7]
  6609. if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET)
  6610. 8002f56: 4b0d ldr r3, [pc, #52] ; (8002f8c <HAL_FLASH_Unlock+0x40>)
  6611. 8002f58: 691b ldr r3, [r3, #16]
  6612. 8002f5a: f003 0380 and.w r3, r3, #128 ; 0x80
  6613. 8002f5e: 2b00 cmp r3, #0
  6614. 8002f60: d00d beq.n 8002f7e <HAL_FLASH_Unlock+0x32>
  6615. {
  6616. /* Authorize the FLASH Registers access */
  6617. WRITE_REG(FLASH->KEYR, FLASH_KEY1);
  6618. 8002f62: 4b0a ldr r3, [pc, #40] ; (8002f8c <HAL_FLASH_Unlock+0x40>)
  6619. 8002f64: 4a0a ldr r2, [pc, #40] ; (8002f90 <HAL_FLASH_Unlock+0x44>)
  6620. 8002f66: 605a str r2, [r3, #4]
  6621. WRITE_REG(FLASH->KEYR, FLASH_KEY2);
  6622. 8002f68: 4b08 ldr r3, [pc, #32] ; (8002f8c <HAL_FLASH_Unlock+0x40>)
  6623. 8002f6a: 4a0a ldr r2, [pc, #40] ; (8002f94 <HAL_FLASH_Unlock+0x48>)
  6624. 8002f6c: 605a str r2, [r3, #4]
  6625. /* Verify Flash is unlocked */
  6626. if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET)
  6627. 8002f6e: 4b07 ldr r3, [pc, #28] ; (8002f8c <HAL_FLASH_Unlock+0x40>)
  6628. 8002f70: 691b ldr r3, [r3, #16]
  6629. 8002f72: f003 0380 and.w r3, r3, #128 ; 0x80
  6630. 8002f76: 2b00 cmp r3, #0
  6631. 8002f78: d001 beq.n 8002f7e <HAL_FLASH_Unlock+0x32>
  6632. {
  6633. status = HAL_ERROR;
  6634. 8002f7a: 2301 movs r3, #1
  6635. 8002f7c: 71fb strb r3, [r7, #7]
  6636. status = HAL_ERROR;
  6637. }
  6638. }
  6639. #endif /* FLASH_BANK2_END */
  6640. return status;
  6641. 8002f7e: 79fb ldrb r3, [r7, #7]
  6642. }
  6643. 8002f80: 4618 mov r0, r3
  6644. 8002f82: 370c adds r7, #12
  6645. 8002f84: 46bd mov sp, r7
  6646. 8002f86: bc80 pop {r7}
  6647. 8002f88: 4770 bx lr
  6648. 8002f8a: bf00 nop
  6649. 8002f8c: 40022000 .word 0x40022000
  6650. 8002f90: 45670123 .word 0x45670123
  6651. 8002f94: cdef89ab .word 0xcdef89ab
  6652. 08002f98 <HAL_FLASH_Lock>:
  6653. /**
  6654. * @brief Locks the FLASH control register access
  6655. * @retval HAL Status
  6656. */
  6657. HAL_StatusTypeDef HAL_FLASH_Lock(void)
  6658. {
  6659. 8002f98: b480 push {r7}
  6660. 8002f9a: af00 add r7, sp, #0
  6661. /* Set the LOCK Bit to lock the FLASH Registers access */
  6662. SET_BIT(FLASH->CR, FLASH_CR_LOCK);
  6663. 8002f9c: 4b05 ldr r3, [pc, #20] ; (8002fb4 <HAL_FLASH_Lock+0x1c>)
  6664. 8002f9e: 691b ldr r3, [r3, #16]
  6665. 8002fa0: 4a04 ldr r2, [pc, #16] ; (8002fb4 <HAL_FLASH_Lock+0x1c>)
  6666. 8002fa2: f043 0380 orr.w r3, r3, #128 ; 0x80
  6667. 8002fa6: 6113 str r3, [r2, #16]
  6668. #if defined(FLASH_BANK2_END)
  6669. /* Set the LOCK Bit to lock the FLASH BANK2 Registers access */
  6670. SET_BIT(FLASH->CR2, FLASH_CR2_LOCK);
  6671. #endif /* FLASH_BANK2_END */
  6672. return HAL_OK;
  6673. 8002fa8: 2300 movs r3, #0
  6674. }
  6675. 8002faa: 4618 mov r0, r3
  6676. 8002fac: 46bd mov sp, r7
  6677. 8002fae: bc80 pop {r7}
  6678. 8002fb0: 4770 bx lr
  6679. 8002fb2: bf00 nop
  6680. 8002fb4: 40022000 .word 0x40022000
  6681. 08002fb8 <FLASH_Program_HalfWord>:
  6682. * @param Address specify the address to be programmed.
  6683. * @param Data specify the data to be programmed.
  6684. * @retval None
  6685. */
  6686. static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data)
  6687. {
  6688. 8002fb8: b480 push {r7}
  6689. 8002fba: b083 sub sp, #12
  6690. 8002fbc: af00 add r7, sp, #0
  6691. 8002fbe: 6078 str r0, [r7, #4]
  6692. 8002fc0: 460b mov r3, r1
  6693. 8002fc2: 807b strh r3, [r7, #2]
  6694. /* Clean the error context */
  6695. pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
  6696. 8002fc4: 4b08 ldr r3, [pc, #32] ; (8002fe8 <FLASH_Program_HalfWord+0x30>)
  6697. 8002fc6: 2200 movs r2, #0
  6698. 8002fc8: 61da str r2, [r3, #28]
  6699. #if defined(FLASH_BANK2_END)
  6700. if(Address <= FLASH_BANK1_END)
  6701. {
  6702. #endif /* FLASH_BANK2_END */
  6703. /* Proceed to program the new data */
  6704. SET_BIT(FLASH->CR, FLASH_CR_PG);
  6705. 8002fca: 4b08 ldr r3, [pc, #32] ; (8002fec <FLASH_Program_HalfWord+0x34>)
  6706. 8002fcc: 691b ldr r3, [r3, #16]
  6707. 8002fce: 4a07 ldr r2, [pc, #28] ; (8002fec <FLASH_Program_HalfWord+0x34>)
  6708. 8002fd0: f043 0301 orr.w r3, r3, #1
  6709. 8002fd4: 6113 str r3, [r2, #16]
  6710. SET_BIT(FLASH->CR2, FLASH_CR2_PG);
  6711. }
  6712. #endif /* FLASH_BANK2_END */
  6713. /* Write data in the address */
  6714. *(__IO uint16_t*)Address = Data;
  6715. 8002fd6: 687b ldr r3, [r7, #4]
  6716. 8002fd8: 887a ldrh r2, [r7, #2]
  6717. 8002fda: 801a strh r2, [r3, #0]
  6718. }
  6719. 8002fdc: bf00 nop
  6720. 8002fde: 370c adds r7, #12
  6721. 8002fe0: 46bd mov sp, r7
  6722. 8002fe2: bc80 pop {r7}
  6723. 8002fe4: 4770 bx lr
  6724. 8002fe6: bf00 nop
  6725. 8002fe8: 200008f0 .word 0x200008f0
  6726. 8002fec: 40022000 .word 0x40022000
  6727. 08002ff0 <FLASH_WaitForLastOperation>:
  6728. * @brief Wait for a FLASH operation to complete.
  6729. * @param Timeout maximum flash operation timeout
  6730. * @retval HAL Status
  6731. */
  6732. HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout)
  6733. {
  6734. 8002ff0: b580 push {r7, lr}
  6735. 8002ff2: b084 sub sp, #16
  6736. 8002ff4: af00 add r7, sp, #0
  6737. 8002ff6: 6078 str r0, [r7, #4]
  6738. /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.
  6739. Even if the FLASH operation fails, the BUSY flag will be reset and an error
  6740. flag will be set */
  6741. uint32_t tickstart = HAL_GetTick();
  6742. 8002ff8: f7fe fee8 bl 8001dcc <HAL_GetTick>
  6743. 8002ffc: 60f8 str r0, [r7, #12]
  6744. while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
  6745. 8002ffe: e010 b.n 8003022 <FLASH_WaitForLastOperation+0x32>
  6746. {
  6747. if (Timeout != HAL_MAX_DELAY)
  6748. 8003000: 687b ldr r3, [r7, #4]
  6749. 8003002: f1b3 3fff cmp.w r3, #4294967295
  6750. 8003006: d00c beq.n 8003022 <FLASH_WaitForLastOperation+0x32>
  6751. {
  6752. if((Timeout == 0U) || ((HAL_GetTick()-tickstart) > Timeout))
  6753. 8003008: 687b ldr r3, [r7, #4]
  6754. 800300a: 2b00 cmp r3, #0
  6755. 800300c: d007 beq.n 800301e <FLASH_WaitForLastOperation+0x2e>
  6756. 800300e: f7fe fedd bl 8001dcc <HAL_GetTick>
  6757. 8003012: 4602 mov r2, r0
  6758. 8003014: 68fb ldr r3, [r7, #12]
  6759. 8003016: 1ad3 subs r3, r2, r3
  6760. 8003018: 687a ldr r2, [r7, #4]
  6761. 800301a: 429a cmp r2, r3
  6762. 800301c: d201 bcs.n 8003022 <FLASH_WaitForLastOperation+0x32>
  6763. {
  6764. return HAL_TIMEOUT;
  6765. 800301e: 2303 movs r3, #3
  6766. 8003020: e025 b.n 800306e <FLASH_WaitForLastOperation+0x7e>
  6767. while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY))
  6768. 8003022: 4b15 ldr r3, [pc, #84] ; (8003078 <FLASH_WaitForLastOperation+0x88>)
  6769. 8003024: 68db ldr r3, [r3, #12]
  6770. 8003026: f003 0301 and.w r3, r3, #1
  6771. 800302a: 2b00 cmp r3, #0
  6772. 800302c: d1e8 bne.n 8003000 <FLASH_WaitForLastOperation+0x10>
  6773. }
  6774. }
  6775. }
  6776. /* Check FLASH End of Operation flag */
  6777. if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP))
  6778. 800302e: 4b12 ldr r3, [pc, #72] ; (8003078 <FLASH_WaitForLastOperation+0x88>)
  6779. 8003030: 68db ldr r3, [r3, #12]
  6780. 8003032: f003 0320 and.w r3, r3, #32
  6781. 8003036: 2b00 cmp r3, #0
  6782. 8003038: d002 beq.n 8003040 <FLASH_WaitForLastOperation+0x50>
  6783. {
  6784. /* Clear FLASH End of Operation pending bit */
  6785. __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
  6786. 800303a: 4b0f ldr r3, [pc, #60] ; (8003078 <FLASH_WaitForLastOperation+0x88>)
  6787. 800303c: 2220 movs r2, #32
  6788. 800303e: 60da str r2, [r3, #12]
  6789. }
  6790. if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) ||
  6791. 8003040: 4b0d ldr r3, [pc, #52] ; (8003078 <FLASH_WaitForLastOperation+0x88>)
  6792. 8003042: 68db ldr r3, [r3, #12]
  6793. 8003044: f003 0310 and.w r3, r3, #16
  6794. 8003048: 2b00 cmp r3, #0
  6795. 800304a: d10b bne.n 8003064 <FLASH_WaitForLastOperation+0x74>
  6796. __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) ||
  6797. 800304c: 4b0a ldr r3, [pc, #40] ; (8003078 <FLASH_WaitForLastOperation+0x88>)
  6798. 800304e: 69db ldr r3, [r3, #28]
  6799. 8003050: f003 0301 and.w r3, r3, #1
  6800. if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) ||
  6801. 8003054: 2b00 cmp r3, #0
  6802. 8003056: d105 bne.n 8003064 <FLASH_WaitForLastOperation+0x74>
  6803. __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR))
  6804. 8003058: 4b07 ldr r3, [pc, #28] ; (8003078 <FLASH_WaitForLastOperation+0x88>)
  6805. 800305a: 68db ldr r3, [r3, #12]
  6806. 800305c: f003 0304 and.w r3, r3, #4
  6807. __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) ||
  6808. 8003060: 2b00 cmp r3, #0
  6809. 8003062: d003 beq.n 800306c <FLASH_WaitForLastOperation+0x7c>
  6810. {
  6811. /*Save the error code*/
  6812. FLASH_SetErrorCode();
  6813. 8003064: f000 f80a bl 800307c <FLASH_SetErrorCode>
  6814. return HAL_ERROR;
  6815. 8003068: 2301 movs r3, #1
  6816. 800306a: e000 b.n 800306e <FLASH_WaitForLastOperation+0x7e>
  6817. }
  6818. /* There is no error flag set */
  6819. return HAL_OK;
  6820. 800306c: 2300 movs r3, #0
  6821. }
  6822. 800306e: 4618 mov r0, r3
  6823. 8003070: 3710 adds r7, #16
  6824. 8003072: 46bd mov sp, r7
  6825. 8003074: bd80 pop {r7, pc}
  6826. 8003076: bf00 nop
  6827. 8003078: 40022000 .word 0x40022000
  6828. 0800307c <FLASH_SetErrorCode>:
  6829. /**
  6830. * @brief Set the specific FLASH error flag.
  6831. * @retval None
  6832. */
  6833. static void FLASH_SetErrorCode(void)
  6834. {
  6835. 800307c: b480 push {r7}
  6836. 800307e: b083 sub sp, #12
  6837. 8003080: af00 add r7, sp, #0
  6838. uint32_t flags = 0U;
  6839. 8003082: 2300 movs r3, #0
  6840. 8003084: 607b str r3, [r7, #4]
  6841. #if defined(FLASH_BANK2_END)
  6842. if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || __HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR_BANK2))
  6843. #else
  6844. if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR))
  6845. 8003086: 4b23 ldr r3, [pc, #140] ; (8003114 <FLASH_SetErrorCode+0x98>)
  6846. 8003088: 68db ldr r3, [r3, #12]
  6847. 800308a: f003 0310 and.w r3, r3, #16
  6848. 800308e: 2b00 cmp r3, #0
  6849. 8003090: d009 beq.n 80030a6 <FLASH_SetErrorCode+0x2a>
  6850. #endif /* FLASH_BANK2_END */
  6851. {
  6852. pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP;
  6853. 8003092: 4b21 ldr r3, [pc, #132] ; (8003118 <FLASH_SetErrorCode+0x9c>)
  6854. 8003094: 69db ldr r3, [r3, #28]
  6855. 8003096: f043 0302 orr.w r3, r3, #2
  6856. 800309a: 4a1f ldr r2, [pc, #124] ; (8003118 <FLASH_SetErrorCode+0x9c>)
  6857. 800309c: 61d3 str r3, [r2, #28]
  6858. #if defined(FLASH_BANK2_END)
  6859. flags |= FLASH_FLAG_WRPERR | FLASH_FLAG_WRPERR_BANK2;
  6860. #else
  6861. flags |= FLASH_FLAG_WRPERR;
  6862. 800309e: 687b ldr r3, [r7, #4]
  6863. 80030a0: f043 0310 orr.w r3, r3, #16
  6864. 80030a4: 607b str r3, [r7, #4]
  6865. #endif /* FLASH_BANK2_END */
  6866. }
  6867. #if defined(FLASH_BANK2_END)
  6868. if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR) || __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR_BANK2))
  6869. #else
  6870. if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR))
  6871. 80030a6: 4b1b ldr r3, [pc, #108] ; (8003114 <FLASH_SetErrorCode+0x98>)
  6872. 80030a8: 68db ldr r3, [r3, #12]
  6873. 80030aa: f003 0304 and.w r3, r3, #4
  6874. 80030ae: 2b00 cmp r3, #0
  6875. 80030b0: d009 beq.n 80030c6 <FLASH_SetErrorCode+0x4a>
  6876. #endif /* FLASH_BANK2_END */
  6877. {
  6878. pFlash.ErrorCode |= HAL_FLASH_ERROR_PROG;
  6879. 80030b2: 4b19 ldr r3, [pc, #100] ; (8003118 <FLASH_SetErrorCode+0x9c>)
  6880. 80030b4: 69db ldr r3, [r3, #28]
  6881. 80030b6: f043 0301 orr.w r3, r3, #1
  6882. 80030ba: 4a17 ldr r2, [pc, #92] ; (8003118 <FLASH_SetErrorCode+0x9c>)
  6883. 80030bc: 61d3 str r3, [r2, #28]
  6884. #if defined(FLASH_BANK2_END)
  6885. flags |= FLASH_FLAG_PGERR | FLASH_FLAG_PGERR_BANK2;
  6886. #else
  6887. flags |= FLASH_FLAG_PGERR;
  6888. 80030be: 687b ldr r3, [r7, #4]
  6889. 80030c0: f043 0304 orr.w r3, r3, #4
  6890. 80030c4: 607b str r3, [r7, #4]
  6891. #endif /* FLASH_BANK2_END */
  6892. }
  6893. if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR))
  6894. 80030c6: 4b13 ldr r3, [pc, #76] ; (8003114 <FLASH_SetErrorCode+0x98>)
  6895. 80030c8: 69db ldr r3, [r3, #28]
  6896. 80030ca: f003 0301 and.w r3, r3, #1
  6897. 80030ce: 2b00 cmp r3, #0
  6898. 80030d0: d00b beq.n 80030ea <FLASH_SetErrorCode+0x6e>
  6899. {
  6900. pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTV;
  6901. 80030d2: 4b11 ldr r3, [pc, #68] ; (8003118 <FLASH_SetErrorCode+0x9c>)
  6902. 80030d4: 69db ldr r3, [r3, #28]
  6903. 80030d6: f043 0304 orr.w r3, r3, #4
  6904. 80030da: 4a0f ldr r2, [pc, #60] ; (8003118 <FLASH_SetErrorCode+0x9c>)
  6905. 80030dc: 61d3 str r3, [r2, #28]
  6906. __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPTVERR);
  6907. 80030de: 4b0d ldr r3, [pc, #52] ; (8003114 <FLASH_SetErrorCode+0x98>)
  6908. 80030e0: 69db ldr r3, [r3, #28]
  6909. 80030e2: 4a0c ldr r2, [pc, #48] ; (8003114 <FLASH_SetErrorCode+0x98>)
  6910. 80030e4: f023 0301 bic.w r3, r3, #1
  6911. 80030e8: 61d3 str r3, [r2, #28]
  6912. }
  6913. /* Clear FLASH error pending bits */
  6914. __HAL_FLASH_CLEAR_FLAG(flags);
  6915. 80030ea: 687b ldr r3, [r7, #4]
  6916. 80030ec: f240 1201 movw r2, #257 ; 0x101
  6917. 80030f0: 4293 cmp r3, r2
  6918. 80030f2: d106 bne.n 8003102 <FLASH_SetErrorCode+0x86>
  6919. 80030f4: 4b07 ldr r3, [pc, #28] ; (8003114 <FLASH_SetErrorCode+0x98>)
  6920. 80030f6: 69db ldr r3, [r3, #28]
  6921. 80030f8: 4a06 ldr r2, [pc, #24] ; (8003114 <FLASH_SetErrorCode+0x98>)
  6922. 80030fa: f023 0301 bic.w r3, r3, #1
  6923. 80030fe: 61d3 str r3, [r2, #28]
  6924. }
  6925. 8003100: e002 b.n 8003108 <FLASH_SetErrorCode+0x8c>
  6926. __HAL_FLASH_CLEAR_FLAG(flags);
  6927. 8003102: 4a04 ldr r2, [pc, #16] ; (8003114 <FLASH_SetErrorCode+0x98>)
  6928. 8003104: 687b ldr r3, [r7, #4]
  6929. 8003106: 60d3 str r3, [r2, #12]
  6930. }
  6931. 8003108: bf00 nop
  6932. 800310a: 370c adds r7, #12
  6933. 800310c: 46bd mov sp, r7
  6934. 800310e: bc80 pop {r7}
  6935. 8003110: 4770 bx lr
  6936. 8003112: bf00 nop
  6937. 8003114: 40022000 .word 0x40022000
  6938. 8003118: 200008f0 .word 0x200008f0
  6939. 0800311c <HAL_FLASHEx_Erase>:
  6940. * (0xFFFFFFFF means that all the pages have been correctly erased)
  6941. *
  6942. * @retval HAL_StatusTypeDef HAL Status
  6943. */
  6944. HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError)
  6945. {
  6946. 800311c: b580 push {r7, lr}
  6947. 800311e: b084 sub sp, #16
  6948. 8003120: af00 add r7, sp, #0
  6949. 8003122: 6078 str r0, [r7, #4]
  6950. 8003124: 6039 str r1, [r7, #0]
  6951. HAL_StatusTypeDef status = HAL_ERROR;
  6952. 8003126: 2301 movs r3, #1
  6953. 8003128: 73fb strb r3, [r7, #15]
  6954. uint32_t address = 0U;
  6955. 800312a: 2300 movs r3, #0
  6956. 800312c: 60bb str r3, [r7, #8]
  6957. /* Process Locked */
  6958. __HAL_LOCK(&pFlash);
  6959. 800312e: 4b2f ldr r3, [pc, #188] ; (80031ec <HAL_FLASHEx_Erase+0xd0>)
  6960. 8003130: 7e1b ldrb r3, [r3, #24]
  6961. 8003132: 2b01 cmp r3, #1
  6962. 8003134: d101 bne.n 800313a <HAL_FLASHEx_Erase+0x1e>
  6963. 8003136: 2302 movs r3, #2
  6964. 8003138: e053 b.n 80031e2 <HAL_FLASHEx_Erase+0xc6>
  6965. 800313a: 4b2c ldr r3, [pc, #176] ; (80031ec <HAL_FLASHEx_Erase+0xd0>)
  6966. 800313c: 2201 movs r2, #1
  6967. 800313e: 761a strb r2, [r3, #24]
  6968. /* Check the parameters */
  6969. assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase));
  6970. if (pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE)
  6971. 8003140: 687b ldr r3, [r7, #4]
  6972. 8003142: 681b ldr r3, [r3, #0]
  6973. 8003144: 2b02 cmp r3, #2
  6974. 8003146: d116 bne.n 8003176 <HAL_FLASHEx_Erase+0x5a>
  6975. else
  6976. #endif /* FLASH_BANK2_END */
  6977. {
  6978. /* Mass Erase requested for Bank1 */
  6979. /* Wait for last operation to be completed */
  6980. if (FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK)
  6981. 8003148: f24c 3050 movw r0, #50000 ; 0xc350
  6982. 800314c: f7ff ff50 bl 8002ff0 <FLASH_WaitForLastOperation>
  6983. 8003150: 4603 mov r3, r0
  6984. 8003152: 2b00 cmp r3, #0
  6985. 8003154: d141 bne.n 80031da <HAL_FLASHEx_Erase+0xbe>
  6986. {
  6987. /*Mass erase to be done*/
  6988. FLASH_MassErase(FLASH_BANK_1);
  6989. 8003156: 2001 movs r0, #1
  6990. 8003158: f000 f84c bl 80031f4 <FLASH_MassErase>
  6991. /* Wait for last operation to be completed */
  6992. status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
  6993. 800315c: f24c 3050 movw r0, #50000 ; 0xc350
  6994. 8003160: f7ff ff46 bl 8002ff0 <FLASH_WaitForLastOperation>
  6995. 8003164: 4603 mov r3, r0
  6996. 8003166: 73fb strb r3, [r7, #15]
  6997. /* If the erase operation is completed, disable the MER Bit */
  6998. CLEAR_BIT(FLASH->CR, FLASH_CR_MER);
  6999. 8003168: 4b21 ldr r3, [pc, #132] ; (80031f0 <HAL_FLASHEx_Erase+0xd4>)
  7000. 800316a: 691b ldr r3, [r3, #16]
  7001. 800316c: 4a20 ldr r2, [pc, #128] ; (80031f0 <HAL_FLASHEx_Erase+0xd4>)
  7002. 800316e: f023 0304 bic.w r3, r3, #4
  7003. 8003172: 6113 str r3, [r2, #16]
  7004. 8003174: e031 b.n 80031da <HAL_FLASHEx_Erase+0xbe>
  7005. else
  7006. #endif /* FLASH_BANK2_END */
  7007. {
  7008. /* Page Erase requested on address located on bank1 */
  7009. /* Wait for last operation to be completed */
  7010. if (FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK)
  7011. 8003176: f24c 3050 movw r0, #50000 ; 0xc350
  7012. 800317a: f7ff ff39 bl 8002ff0 <FLASH_WaitForLastOperation>
  7013. 800317e: 4603 mov r3, r0
  7014. 8003180: 2b00 cmp r3, #0
  7015. 8003182: d12a bne.n 80031da <HAL_FLASHEx_Erase+0xbe>
  7016. {
  7017. /*Initialization of PageError variable*/
  7018. *PageError = 0xFFFFFFFFU;
  7019. 8003184: 683b ldr r3, [r7, #0]
  7020. 8003186: f04f 32ff mov.w r2, #4294967295
  7021. 800318a: 601a str r2, [r3, #0]
  7022. /* Erase page by page to be done*/
  7023. for(address = pEraseInit->PageAddress;
  7024. 800318c: 687b ldr r3, [r7, #4]
  7025. 800318e: 689b ldr r3, [r3, #8]
  7026. 8003190: 60bb str r3, [r7, #8]
  7027. 8003192: e019 b.n 80031c8 <HAL_FLASHEx_Erase+0xac>
  7028. address < ((pEraseInit->NbPages * FLASH_PAGE_SIZE) + pEraseInit->PageAddress);
  7029. address += FLASH_PAGE_SIZE)
  7030. {
  7031. FLASH_PageErase(address);
  7032. 8003194: 68b8 ldr r0, [r7, #8]
  7033. 8003196: f000 f849 bl 800322c <FLASH_PageErase>
  7034. /* Wait for last operation to be completed */
  7035. status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
  7036. 800319a: f24c 3050 movw r0, #50000 ; 0xc350
  7037. 800319e: f7ff ff27 bl 8002ff0 <FLASH_WaitForLastOperation>
  7038. 80031a2: 4603 mov r3, r0
  7039. 80031a4: 73fb strb r3, [r7, #15]
  7040. /* If the erase operation is completed, disable the PER Bit */
  7041. CLEAR_BIT(FLASH->CR, FLASH_CR_PER);
  7042. 80031a6: 4b12 ldr r3, [pc, #72] ; (80031f0 <HAL_FLASHEx_Erase+0xd4>)
  7043. 80031a8: 691b ldr r3, [r3, #16]
  7044. 80031aa: 4a11 ldr r2, [pc, #68] ; (80031f0 <HAL_FLASHEx_Erase+0xd4>)
  7045. 80031ac: f023 0302 bic.w r3, r3, #2
  7046. 80031b0: 6113 str r3, [r2, #16]
  7047. if (status != HAL_OK)
  7048. 80031b2: 7bfb ldrb r3, [r7, #15]
  7049. 80031b4: 2b00 cmp r3, #0
  7050. 80031b6: d003 beq.n 80031c0 <HAL_FLASHEx_Erase+0xa4>
  7051. {
  7052. /* In case of error, stop erase procedure and return the faulty address */
  7053. *PageError = address;
  7054. 80031b8: 683b ldr r3, [r7, #0]
  7055. 80031ba: 68ba ldr r2, [r7, #8]
  7056. 80031bc: 601a str r2, [r3, #0]
  7057. break;
  7058. 80031be: e00c b.n 80031da <HAL_FLASHEx_Erase+0xbe>
  7059. address += FLASH_PAGE_SIZE)
  7060. 80031c0: 68bb ldr r3, [r7, #8]
  7061. 80031c2: f503 6380 add.w r3, r3, #1024 ; 0x400
  7062. 80031c6: 60bb str r3, [r7, #8]
  7063. address < ((pEraseInit->NbPages * FLASH_PAGE_SIZE) + pEraseInit->PageAddress);
  7064. 80031c8: 687b ldr r3, [r7, #4]
  7065. 80031ca: 68db ldr r3, [r3, #12]
  7066. 80031cc: 029a lsls r2, r3, #10
  7067. 80031ce: 687b ldr r3, [r7, #4]
  7068. 80031d0: 689b ldr r3, [r3, #8]
  7069. 80031d2: 4413 add r3, r2
  7070. for(address = pEraseInit->PageAddress;
  7071. 80031d4: 68ba ldr r2, [r7, #8]
  7072. 80031d6: 429a cmp r2, r3
  7073. 80031d8: d3dc bcc.n 8003194 <HAL_FLASHEx_Erase+0x78>
  7074. }
  7075. }
  7076. }
  7077. /* Process Unlocked */
  7078. __HAL_UNLOCK(&pFlash);
  7079. 80031da: 4b04 ldr r3, [pc, #16] ; (80031ec <HAL_FLASHEx_Erase+0xd0>)
  7080. 80031dc: 2200 movs r2, #0
  7081. 80031de: 761a strb r2, [r3, #24]
  7082. return status;
  7083. 80031e0: 7bfb ldrb r3, [r7, #15]
  7084. }
  7085. 80031e2: 4618 mov r0, r3
  7086. 80031e4: 3710 adds r7, #16
  7087. 80031e6: 46bd mov sp, r7
  7088. 80031e8: bd80 pop {r7, pc}
  7089. 80031ea: bf00 nop
  7090. 80031ec: 200008f0 .word 0x200008f0
  7091. 80031f0: 40022000 .word 0x40022000
  7092. 080031f4 <FLASH_MassErase>:
  7093. @endif
  7094. *
  7095. * @retval None
  7096. */
  7097. static void FLASH_MassErase(uint32_t Banks)
  7098. {
  7099. 80031f4: b480 push {r7}
  7100. 80031f6: b083 sub sp, #12
  7101. 80031f8: af00 add r7, sp, #0
  7102. 80031fa: 6078 str r0, [r7, #4]
  7103. /* Check the parameters */
  7104. assert_param(IS_FLASH_BANK(Banks));
  7105. /* Clean the error context */
  7106. pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
  7107. 80031fc: 4b09 ldr r3, [pc, #36] ; (8003224 <FLASH_MassErase+0x30>)
  7108. 80031fe: 2200 movs r2, #0
  7109. 8003200: 61da str r2, [r3, #28]
  7110. #if !defined(FLASH_BANK2_END)
  7111. /* Prevent unused argument(s) compilation warning */
  7112. UNUSED(Banks);
  7113. #endif /* FLASH_BANK2_END */
  7114. /* Only bank1 will be erased*/
  7115. SET_BIT(FLASH->CR, FLASH_CR_MER);
  7116. 8003202: 4b09 ldr r3, [pc, #36] ; (8003228 <FLASH_MassErase+0x34>)
  7117. 8003204: 691b ldr r3, [r3, #16]
  7118. 8003206: 4a08 ldr r2, [pc, #32] ; (8003228 <FLASH_MassErase+0x34>)
  7119. 8003208: f043 0304 orr.w r3, r3, #4
  7120. 800320c: 6113 str r3, [r2, #16]
  7121. SET_BIT(FLASH->CR, FLASH_CR_STRT);
  7122. 800320e: 4b06 ldr r3, [pc, #24] ; (8003228 <FLASH_MassErase+0x34>)
  7123. 8003210: 691b ldr r3, [r3, #16]
  7124. 8003212: 4a05 ldr r2, [pc, #20] ; (8003228 <FLASH_MassErase+0x34>)
  7125. 8003214: f043 0340 orr.w r3, r3, #64 ; 0x40
  7126. 8003218: 6113 str r3, [r2, #16]
  7127. #if defined(FLASH_BANK2_END)
  7128. }
  7129. #endif /* FLASH_BANK2_END */
  7130. }
  7131. 800321a: bf00 nop
  7132. 800321c: 370c adds r7, #12
  7133. 800321e: 46bd mov sp, r7
  7134. 8003220: bc80 pop {r7}
  7135. 8003222: 4770 bx lr
  7136. 8003224: 200008f0 .word 0x200008f0
  7137. 8003228: 40022000 .word 0x40022000
  7138. 0800322c <FLASH_PageErase>:
  7139. * The value of this parameter depend on device used within the same series
  7140. *
  7141. * @retval None
  7142. */
  7143. void FLASH_PageErase(uint32_t PageAddress)
  7144. {
  7145. 800322c: b480 push {r7}
  7146. 800322e: b083 sub sp, #12
  7147. 8003230: af00 add r7, sp, #0
  7148. 8003232: 6078 str r0, [r7, #4]
  7149. /* Clean the error context */
  7150. pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
  7151. 8003234: 4b0b ldr r3, [pc, #44] ; (8003264 <FLASH_PageErase+0x38>)
  7152. 8003236: 2200 movs r2, #0
  7153. 8003238: 61da str r2, [r3, #28]
  7154. }
  7155. else
  7156. {
  7157. #endif /* FLASH_BANK2_END */
  7158. /* Proceed to erase the page */
  7159. SET_BIT(FLASH->CR, FLASH_CR_PER);
  7160. 800323a: 4b0b ldr r3, [pc, #44] ; (8003268 <FLASH_PageErase+0x3c>)
  7161. 800323c: 691b ldr r3, [r3, #16]
  7162. 800323e: 4a0a ldr r2, [pc, #40] ; (8003268 <FLASH_PageErase+0x3c>)
  7163. 8003240: f043 0302 orr.w r3, r3, #2
  7164. 8003244: 6113 str r3, [r2, #16]
  7165. WRITE_REG(FLASH->AR, PageAddress);
  7166. 8003246: 4a08 ldr r2, [pc, #32] ; (8003268 <FLASH_PageErase+0x3c>)
  7167. 8003248: 687b ldr r3, [r7, #4]
  7168. 800324a: 6153 str r3, [r2, #20]
  7169. SET_BIT(FLASH->CR, FLASH_CR_STRT);
  7170. 800324c: 4b06 ldr r3, [pc, #24] ; (8003268 <FLASH_PageErase+0x3c>)
  7171. 800324e: 691b ldr r3, [r3, #16]
  7172. 8003250: 4a05 ldr r2, [pc, #20] ; (8003268 <FLASH_PageErase+0x3c>)
  7173. 8003252: f043 0340 orr.w r3, r3, #64 ; 0x40
  7174. 8003256: 6113 str r3, [r2, #16]
  7175. #if defined(FLASH_BANK2_END)
  7176. }
  7177. #endif /* FLASH_BANK2_END */
  7178. }
  7179. 8003258: bf00 nop
  7180. 800325a: 370c adds r7, #12
  7181. 800325c: 46bd mov sp, r7
  7182. 800325e: bc80 pop {r7}
  7183. 8003260: 4770 bx lr
  7184. 8003262: bf00 nop
  7185. 8003264: 200008f0 .word 0x200008f0
  7186. 8003268: 40022000 .word 0x40022000
  7187. 0800326c <HAL_GPIO_Init>:
  7188. * @param GPIO_Init: pointer to a GPIO_InitTypeDef structure that contains
  7189. * the configuration information for the specified GPIO peripheral.
  7190. * @retval None
  7191. */
  7192. void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
  7193. {
  7194. 800326c: b480 push {r7}
  7195. 800326e: b08b sub sp, #44 ; 0x2c
  7196. 8003270: af00 add r7, sp, #0
  7197. 8003272: 6078 str r0, [r7, #4]
  7198. 8003274: 6039 str r1, [r7, #0]
  7199. uint32_t position = 0x00u;
  7200. 8003276: 2300 movs r3, #0
  7201. 8003278: 627b str r3, [r7, #36] ; 0x24
  7202. uint32_t ioposition;
  7203. uint32_t iocurrent;
  7204. uint32_t temp;
  7205. uint32_t config = 0x00u;
  7206. 800327a: 2300 movs r3, #0
  7207. 800327c: 623b str r3, [r7, #32]
  7208. assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
  7209. assert_param(IS_GPIO_PIN(GPIO_Init->Pin));
  7210. assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
  7211. /* Configure the port pins */
  7212. while (((GPIO_Init->Pin) >> position) != 0x00u)
  7213. 800327e: e127 b.n 80034d0 <HAL_GPIO_Init+0x264>
  7214. {
  7215. /* Get the IO position */
  7216. ioposition = (0x01uL << position);
  7217. 8003280: 2201 movs r2, #1
  7218. 8003282: 6a7b ldr r3, [r7, #36] ; 0x24
  7219. 8003284: fa02 f303 lsl.w r3, r2, r3
  7220. 8003288: 61fb str r3, [r7, #28]
  7221. /* Get the current IO position */
  7222. iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
  7223. 800328a: 683b ldr r3, [r7, #0]
  7224. 800328c: 681b ldr r3, [r3, #0]
  7225. 800328e: 69fa ldr r2, [r7, #28]
  7226. 8003290: 4013 ands r3, r2
  7227. 8003292: 61bb str r3, [r7, #24]
  7228. if (iocurrent == ioposition)
  7229. 8003294: 69ba ldr r2, [r7, #24]
  7230. 8003296: 69fb ldr r3, [r7, #28]
  7231. 8003298: 429a cmp r2, r3
  7232. 800329a: f040 8116 bne.w 80034ca <HAL_GPIO_Init+0x25e>
  7233. {
  7234. /* Check the Alternate function parameters */
  7235. assert_param(IS_GPIO_AF_INSTANCE(GPIOx));
  7236. /* Based on the required mode, filling config variable with MODEy[1:0] and CNFy[3:2] corresponding bits */
  7237. switch (GPIO_Init->Mode)
  7238. 800329e: 683b ldr r3, [r7, #0]
  7239. 80032a0: 685b ldr r3, [r3, #4]
  7240. 80032a2: 2b12 cmp r3, #18
  7241. 80032a4: d034 beq.n 8003310 <HAL_GPIO_Init+0xa4>
  7242. 80032a6: 2b12 cmp r3, #18
  7243. 80032a8: d80d bhi.n 80032c6 <HAL_GPIO_Init+0x5a>
  7244. 80032aa: 2b02 cmp r3, #2
  7245. 80032ac: d02b beq.n 8003306 <HAL_GPIO_Init+0x9a>
  7246. 80032ae: 2b02 cmp r3, #2
  7247. 80032b0: d804 bhi.n 80032bc <HAL_GPIO_Init+0x50>
  7248. 80032b2: 2b00 cmp r3, #0
  7249. 80032b4: d031 beq.n 800331a <HAL_GPIO_Init+0xae>
  7250. 80032b6: 2b01 cmp r3, #1
  7251. 80032b8: d01c beq.n 80032f4 <HAL_GPIO_Init+0x88>
  7252. config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG;
  7253. break;
  7254. /* Parameters are checked with assert_param */
  7255. default:
  7256. break;
  7257. 80032ba: e048 b.n 800334e <HAL_GPIO_Init+0xe2>
  7258. switch (GPIO_Init->Mode)
  7259. 80032bc: 2b03 cmp r3, #3
  7260. 80032be: d043 beq.n 8003348 <HAL_GPIO_Init+0xdc>
  7261. 80032c0: 2b11 cmp r3, #17
  7262. 80032c2: d01b beq.n 80032fc <HAL_GPIO_Init+0x90>
  7263. break;
  7264. 80032c4: e043 b.n 800334e <HAL_GPIO_Init+0xe2>
  7265. switch (GPIO_Init->Mode)
  7266. 80032c6: 4a89 ldr r2, [pc, #548] ; (80034ec <HAL_GPIO_Init+0x280>)
  7267. 80032c8: 4293 cmp r3, r2
  7268. 80032ca: d026 beq.n 800331a <HAL_GPIO_Init+0xae>
  7269. 80032cc: 4a87 ldr r2, [pc, #540] ; (80034ec <HAL_GPIO_Init+0x280>)
  7270. 80032ce: 4293 cmp r3, r2
  7271. 80032d0: d806 bhi.n 80032e0 <HAL_GPIO_Init+0x74>
  7272. 80032d2: 4a87 ldr r2, [pc, #540] ; (80034f0 <HAL_GPIO_Init+0x284>)
  7273. 80032d4: 4293 cmp r3, r2
  7274. 80032d6: d020 beq.n 800331a <HAL_GPIO_Init+0xae>
  7275. 80032d8: 4a86 ldr r2, [pc, #536] ; (80034f4 <HAL_GPIO_Init+0x288>)
  7276. 80032da: 4293 cmp r3, r2
  7277. 80032dc: d01d beq.n 800331a <HAL_GPIO_Init+0xae>
  7278. break;
  7279. 80032de: e036 b.n 800334e <HAL_GPIO_Init+0xe2>
  7280. switch (GPIO_Init->Mode)
  7281. 80032e0: 4a85 ldr r2, [pc, #532] ; (80034f8 <HAL_GPIO_Init+0x28c>)
  7282. 80032e2: 4293 cmp r3, r2
  7283. 80032e4: d019 beq.n 800331a <HAL_GPIO_Init+0xae>
  7284. 80032e6: 4a85 ldr r2, [pc, #532] ; (80034fc <HAL_GPIO_Init+0x290>)
  7285. 80032e8: 4293 cmp r3, r2
  7286. 80032ea: d016 beq.n 800331a <HAL_GPIO_Init+0xae>
  7287. 80032ec: 4a84 ldr r2, [pc, #528] ; (8003500 <HAL_GPIO_Init+0x294>)
  7288. 80032ee: 4293 cmp r3, r2
  7289. 80032f0: d013 beq.n 800331a <HAL_GPIO_Init+0xae>
  7290. break;
  7291. 80032f2: e02c b.n 800334e <HAL_GPIO_Init+0xe2>
  7292. config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_PP;
  7293. 80032f4: 683b ldr r3, [r7, #0]
  7294. 80032f6: 68db ldr r3, [r3, #12]
  7295. 80032f8: 623b str r3, [r7, #32]
  7296. break;
  7297. 80032fa: e028 b.n 800334e <HAL_GPIO_Init+0xe2>
  7298. config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_OD;
  7299. 80032fc: 683b ldr r3, [r7, #0]
  7300. 80032fe: 68db ldr r3, [r3, #12]
  7301. 8003300: 3304 adds r3, #4
  7302. 8003302: 623b str r3, [r7, #32]
  7303. break;
  7304. 8003304: e023 b.n 800334e <HAL_GPIO_Init+0xe2>
  7305. config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_PP;
  7306. 8003306: 683b ldr r3, [r7, #0]
  7307. 8003308: 68db ldr r3, [r3, #12]
  7308. 800330a: 3308 adds r3, #8
  7309. 800330c: 623b str r3, [r7, #32]
  7310. break;
  7311. 800330e: e01e b.n 800334e <HAL_GPIO_Init+0xe2>
  7312. config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_OD;
  7313. 8003310: 683b ldr r3, [r7, #0]
  7314. 8003312: 68db ldr r3, [r3, #12]
  7315. 8003314: 330c adds r3, #12
  7316. 8003316: 623b str r3, [r7, #32]
  7317. break;
  7318. 8003318: e019 b.n 800334e <HAL_GPIO_Init+0xe2>
  7319. if (GPIO_Init->Pull == GPIO_NOPULL)
  7320. 800331a: 683b ldr r3, [r7, #0]
  7321. 800331c: 689b ldr r3, [r3, #8]
  7322. 800331e: 2b00 cmp r3, #0
  7323. 8003320: d102 bne.n 8003328 <HAL_GPIO_Init+0xbc>
  7324. config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_FLOATING;
  7325. 8003322: 2304 movs r3, #4
  7326. 8003324: 623b str r3, [r7, #32]
  7327. break;
  7328. 8003326: e012 b.n 800334e <HAL_GPIO_Init+0xe2>
  7329. else if (GPIO_Init->Pull == GPIO_PULLUP)
  7330. 8003328: 683b ldr r3, [r7, #0]
  7331. 800332a: 689b ldr r3, [r3, #8]
  7332. 800332c: 2b01 cmp r3, #1
  7333. 800332e: d105 bne.n 800333c <HAL_GPIO_Init+0xd0>
  7334. config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD;
  7335. 8003330: 2308 movs r3, #8
  7336. 8003332: 623b str r3, [r7, #32]
  7337. GPIOx->BSRR = ioposition;
  7338. 8003334: 687b ldr r3, [r7, #4]
  7339. 8003336: 69fa ldr r2, [r7, #28]
  7340. 8003338: 611a str r2, [r3, #16]
  7341. break;
  7342. 800333a: e008 b.n 800334e <HAL_GPIO_Init+0xe2>
  7343. config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD;
  7344. 800333c: 2308 movs r3, #8
  7345. 800333e: 623b str r3, [r7, #32]
  7346. GPIOx->BRR = ioposition;
  7347. 8003340: 687b ldr r3, [r7, #4]
  7348. 8003342: 69fa ldr r2, [r7, #28]
  7349. 8003344: 615a str r2, [r3, #20]
  7350. break;
  7351. 8003346: e002 b.n 800334e <HAL_GPIO_Init+0xe2>
  7352. config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG;
  7353. 8003348: 2300 movs r3, #0
  7354. 800334a: 623b str r3, [r7, #32]
  7355. break;
  7356. 800334c: bf00 nop
  7357. }
  7358. /* Check if the current bit belongs to first half or last half of the pin count number
  7359. in order to address CRH or CRL register*/
  7360. configregister = (iocurrent < GPIO_PIN_8) ? &GPIOx->CRL : &GPIOx->CRH;
  7361. 800334e: 69bb ldr r3, [r7, #24]
  7362. 8003350: 2bff cmp r3, #255 ; 0xff
  7363. 8003352: d801 bhi.n 8003358 <HAL_GPIO_Init+0xec>
  7364. 8003354: 687b ldr r3, [r7, #4]
  7365. 8003356: e001 b.n 800335c <HAL_GPIO_Init+0xf0>
  7366. 8003358: 687b ldr r3, [r7, #4]
  7367. 800335a: 3304 adds r3, #4
  7368. 800335c: 617b str r3, [r7, #20]
  7369. registeroffset = (iocurrent < GPIO_PIN_8) ? (position << 2u) : ((position - 8u) << 2u);
  7370. 800335e: 69bb ldr r3, [r7, #24]
  7371. 8003360: 2bff cmp r3, #255 ; 0xff
  7372. 8003362: d802 bhi.n 800336a <HAL_GPIO_Init+0xfe>
  7373. 8003364: 6a7b ldr r3, [r7, #36] ; 0x24
  7374. 8003366: 009b lsls r3, r3, #2
  7375. 8003368: e002 b.n 8003370 <HAL_GPIO_Init+0x104>
  7376. 800336a: 6a7b ldr r3, [r7, #36] ; 0x24
  7377. 800336c: 3b08 subs r3, #8
  7378. 800336e: 009b lsls r3, r3, #2
  7379. 8003370: 613b str r3, [r7, #16]
  7380. /* Apply the new configuration of the pin to the register */
  7381. MODIFY_REG((*configregister), ((GPIO_CRL_MODE0 | GPIO_CRL_CNF0) << registeroffset), (config << registeroffset));
  7382. 8003372: 697b ldr r3, [r7, #20]
  7383. 8003374: 681a ldr r2, [r3, #0]
  7384. 8003376: 210f movs r1, #15
  7385. 8003378: 693b ldr r3, [r7, #16]
  7386. 800337a: fa01 f303 lsl.w r3, r1, r3
  7387. 800337e: 43db mvns r3, r3
  7388. 8003380: 401a ands r2, r3
  7389. 8003382: 6a39 ldr r1, [r7, #32]
  7390. 8003384: 693b ldr r3, [r7, #16]
  7391. 8003386: fa01 f303 lsl.w r3, r1, r3
  7392. 800338a: 431a orrs r2, r3
  7393. 800338c: 697b ldr r3, [r7, #20]
  7394. 800338e: 601a str r2, [r3, #0]
  7395. /*--------------------- EXTI Mode Configuration ------------------------*/
  7396. /* Configure the External Interrupt or event for the current IO */
  7397. if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
  7398. 8003390: 683b ldr r3, [r7, #0]
  7399. 8003392: 685b ldr r3, [r3, #4]
  7400. 8003394: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  7401. 8003398: 2b00 cmp r3, #0
  7402. 800339a: f000 8096 beq.w 80034ca <HAL_GPIO_Init+0x25e>
  7403. {
  7404. /* Enable AFIO Clock */
  7405. __HAL_RCC_AFIO_CLK_ENABLE();
  7406. 800339e: 4b59 ldr r3, [pc, #356] ; (8003504 <HAL_GPIO_Init+0x298>)
  7407. 80033a0: 699b ldr r3, [r3, #24]
  7408. 80033a2: 4a58 ldr r2, [pc, #352] ; (8003504 <HAL_GPIO_Init+0x298>)
  7409. 80033a4: f043 0301 orr.w r3, r3, #1
  7410. 80033a8: 6193 str r3, [r2, #24]
  7411. 80033aa: 4b56 ldr r3, [pc, #344] ; (8003504 <HAL_GPIO_Init+0x298>)
  7412. 80033ac: 699b ldr r3, [r3, #24]
  7413. 80033ae: f003 0301 and.w r3, r3, #1
  7414. 80033b2: 60bb str r3, [r7, #8]
  7415. 80033b4: 68bb ldr r3, [r7, #8]
  7416. temp = AFIO->EXTICR[position >> 2u];
  7417. 80033b6: 4a54 ldr r2, [pc, #336] ; (8003508 <HAL_GPIO_Init+0x29c>)
  7418. 80033b8: 6a7b ldr r3, [r7, #36] ; 0x24
  7419. 80033ba: 089b lsrs r3, r3, #2
  7420. 80033bc: 3302 adds r3, #2
  7421. 80033be: f852 3023 ldr.w r3, [r2, r3, lsl #2]
  7422. 80033c2: 60fb str r3, [r7, #12]
  7423. CLEAR_BIT(temp, (0x0Fu) << (4u * (position & 0x03u)));
  7424. 80033c4: 6a7b ldr r3, [r7, #36] ; 0x24
  7425. 80033c6: f003 0303 and.w r3, r3, #3
  7426. 80033ca: 009b lsls r3, r3, #2
  7427. 80033cc: 220f movs r2, #15
  7428. 80033ce: fa02 f303 lsl.w r3, r2, r3
  7429. 80033d2: 43db mvns r3, r3
  7430. 80033d4: 68fa ldr r2, [r7, #12]
  7431. 80033d6: 4013 ands r3, r2
  7432. 80033d8: 60fb str r3, [r7, #12]
  7433. SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4u * (position & 0x03u)));
  7434. 80033da: 687b ldr r3, [r7, #4]
  7435. 80033dc: 4a4b ldr r2, [pc, #300] ; (800350c <HAL_GPIO_Init+0x2a0>)
  7436. 80033de: 4293 cmp r3, r2
  7437. 80033e0: d013 beq.n 800340a <HAL_GPIO_Init+0x19e>
  7438. 80033e2: 687b ldr r3, [r7, #4]
  7439. 80033e4: 4a4a ldr r2, [pc, #296] ; (8003510 <HAL_GPIO_Init+0x2a4>)
  7440. 80033e6: 4293 cmp r3, r2
  7441. 80033e8: d00d beq.n 8003406 <HAL_GPIO_Init+0x19a>
  7442. 80033ea: 687b ldr r3, [r7, #4]
  7443. 80033ec: 4a49 ldr r2, [pc, #292] ; (8003514 <HAL_GPIO_Init+0x2a8>)
  7444. 80033ee: 4293 cmp r3, r2
  7445. 80033f0: d007 beq.n 8003402 <HAL_GPIO_Init+0x196>
  7446. 80033f2: 687b ldr r3, [r7, #4]
  7447. 80033f4: 4a48 ldr r2, [pc, #288] ; (8003518 <HAL_GPIO_Init+0x2ac>)
  7448. 80033f6: 4293 cmp r3, r2
  7449. 80033f8: d101 bne.n 80033fe <HAL_GPIO_Init+0x192>
  7450. 80033fa: 2303 movs r3, #3
  7451. 80033fc: e006 b.n 800340c <HAL_GPIO_Init+0x1a0>
  7452. 80033fe: 2304 movs r3, #4
  7453. 8003400: e004 b.n 800340c <HAL_GPIO_Init+0x1a0>
  7454. 8003402: 2302 movs r3, #2
  7455. 8003404: e002 b.n 800340c <HAL_GPIO_Init+0x1a0>
  7456. 8003406: 2301 movs r3, #1
  7457. 8003408: e000 b.n 800340c <HAL_GPIO_Init+0x1a0>
  7458. 800340a: 2300 movs r3, #0
  7459. 800340c: 6a7a ldr r2, [r7, #36] ; 0x24
  7460. 800340e: f002 0203 and.w r2, r2, #3
  7461. 8003412: 0092 lsls r2, r2, #2
  7462. 8003414: 4093 lsls r3, r2
  7463. 8003416: 68fa ldr r2, [r7, #12]
  7464. 8003418: 4313 orrs r3, r2
  7465. 800341a: 60fb str r3, [r7, #12]
  7466. AFIO->EXTICR[position >> 2u] = temp;
  7467. 800341c: 493a ldr r1, [pc, #232] ; (8003508 <HAL_GPIO_Init+0x29c>)
  7468. 800341e: 6a7b ldr r3, [r7, #36] ; 0x24
  7469. 8003420: 089b lsrs r3, r3, #2
  7470. 8003422: 3302 adds r3, #2
  7471. 8003424: 68fa ldr r2, [r7, #12]
  7472. 8003426: f841 2023 str.w r2, [r1, r3, lsl #2]
  7473. /* Configure the interrupt mask */
  7474. if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT)
  7475. 800342a: 683b ldr r3, [r7, #0]
  7476. 800342c: 685b ldr r3, [r3, #4]
  7477. 800342e: f403 3380 and.w r3, r3, #65536 ; 0x10000
  7478. 8003432: 2b00 cmp r3, #0
  7479. 8003434: d006 beq.n 8003444 <HAL_GPIO_Init+0x1d8>
  7480. {
  7481. SET_BIT(EXTI->IMR, iocurrent);
  7482. 8003436: 4b39 ldr r3, [pc, #228] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7483. 8003438: 681a ldr r2, [r3, #0]
  7484. 800343a: 4938 ldr r1, [pc, #224] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7485. 800343c: 69bb ldr r3, [r7, #24]
  7486. 800343e: 4313 orrs r3, r2
  7487. 8003440: 600b str r3, [r1, #0]
  7488. 8003442: e006 b.n 8003452 <HAL_GPIO_Init+0x1e6>
  7489. }
  7490. else
  7491. {
  7492. CLEAR_BIT(EXTI->IMR, iocurrent);
  7493. 8003444: 4b35 ldr r3, [pc, #212] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7494. 8003446: 681a ldr r2, [r3, #0]
  7495. 8003448: 69bb ldr r3, [r7, #24]
  7496. 800344a: 43db mvns r3, r3
  7497. 800344c: 4933 ldr r1, [pc, #204] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7498. 800344e: 4013 ands r3, r2
  7499. 8003450: 600b str r3, [r1, #0]
  7500. }
  7501. /* Configure the event mask */
  7502. if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)
  7503. 8003452: 683b ldr r3, [r7, #0]
  7504. 8003454: 685b ldr r3, [r3, #4]
  7505. 8003456: f403 3300 and.w r3, r3, #131072 ; 0x20000
  7506. 800345a: 2b00 cmp r3, #0
  7507. 800345c: d006 beq.n 800346c <HAL_GPIO_Init+0x200>
  7508. {
  7509. SET_BIT(EXTI->EMR, iocurrent);
  7510. 800345e: 4b2f ldr r3, [pc, #188] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7511. 8003460: 685a ldr r2, [r3, #4]
  7512. 8003462: 492e ldr r1, [pc, #184] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7513. 8003464: 69bb ldr r3, [r7, #24]
  7514. 8003466: 4313 orrs r3, r2
  7515. 8003468: 604b str r3, [r1, #4]
  7516. 800346a: e006 b.n 800347a <HAL_GPIO_Init+0x20e>
  7517. }
  7518. else
  7519. {
  7520. CLEAR_BIT(EXTI->EMR, iocurrent);
  7521. 800346c: 4b2b ldr r3, [pc, #172] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7522. 800346e: 685a ldr r2, [r3, #4]
  7523. 8003470: 69bb ldr r3, [r7, #24]
  7524. 8003472: 43db mvns r3, r3
  7525. 8003474: 4929 ldr r1, [pc, #164] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7526. 8003476: 4013 ands r3, r2
  7527. 8003478: 604b str r3, [r1, #4]
  7528. }
  7529. /* Enable or disable the rising trigger */
  7530. if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE)
  7531. 800347a: 683b ldr r3, [r7, #0]
  7532. 800347c: 685b ldr r3, [r3, #4]
  7533. 800347e: f403 1380 and.w r3, r3, #1048576 ; 0x100000
  7534. 8003482: 2b00 cmp r3, #0
  7535. 8003484: d006 beq.n 8003494 <HAL_GPIO_Init+0x228>
  7536. {
  7537. SET_BIT(EXTI->RTSR, iocurrent);
  7538. 8003486: 4b25 ldr r3, [pc, #148] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7539. 8003488: 689a ldr r2, [r3, #8]
  7540. 800348a: 4924 ldr r1, [pc, #144] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7541. 800348c: 69bb ldr r3, [r7, #24]
  7542. 800348e: 4313 orrs r3, r2
  7543. 8003490: 608b str r3, [r1, #8]
  7544. 8003492: e006 b.n 80034a2 <HAL_GPIO_Init+0x236>
  7545. }
  7546. else
  7547. {
  7548. CLEAR_BIT(EXTI->RTSR, iocurrent);
  7549. 8003494: 4b21 ldr r3, [pc, #132] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7550. 8003496: 689a ldr r2, [r3, #8]
  7551. 8003498: 69bb ldr r3, [r7, #24]
  7552. 800349a: 43db mvns r3, r3
  7553. 800349c: 491f ldr r1, [pc, #124] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7554. 800349e: 4013 ands r3, r2
  7555. 80034a0: 608b str r3, [r1, #8]
  7556. }
  7557. /* Enable or disable the falling trigger */
  7558. if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE)
  7559. 80034a2: 683b ldr r3, [r7, #0]
  7560. 80034a4: 685b ldr r3, [r3, #4]
  7561. 80034a6: f403 1300 and.w r3, r3, #2097152 ; 0x200000
  7562. 80034aa: 2b00 cmp r3, #0
  7563. 80034ac: d006 beq.n 80034bc <HAL_GPIO_Init+0x250>
  7564. {
  7565. SET_BIT(EXTI->FTSR, iocurrent);
  7566. 80034ae: 4b1b ldr r3, [pc, #108] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7567. 80034b0: 68da ldr r2, [r3, #12]
  7568. 80034b2: 491a ldr r1, [pc, #104] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7569. 80034b4: 69bb ldr r3, [r7, #24]
  7570. 80034b6: 4313 orrs r3, r2
  7571. 80034b8: 60cb str r3, [r1, #12]
  7572. 80034ba: e006 b.n 80034ca <HAL_GPIO_Init+0x25e>
  7573. }
  7574. else
  7575. {
  7576. CLEAR_BIT(EXTI->FTSR, iocurrent);
  7577. 80034bc: 4b17 ldr r3, [pc, #92] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7578. 80034be: 68da ldr r2, [r3, #12]
  7579. 80034c0: 69bb ldr r3, [r7, #24]
  7580. 80034c2: 43db mvns r3, r3
  7581. 80034c4: 4915 ldr r1, [pc, #84] ; (800351c <HAL_GPIO_Init+0x2b0>)
  7582. 80034c6: 4013 ands r3, r2
  7583. 80034c8: 60cb str r3, [r1, #12]
  7584. }
  7585. }
  7586. }
  7587. position++;
  7588. 80034ca: 6a7b ldr r3, [r7, #36] ; 0x24
  7589. 80034cc: 3301 adds r3, #1
  7590. 80034ce: 627b str r3, [r7, #36] ; 0x24
  7591. while (((GPIO_Init->Pin) >> position) != 0x00u)
  7592. 80034d0: 683b ldr r3, [r7, #0]
  7593. 80034d2: 681a ldr r2, [r3, #0]
  7594. 80034d4: 6a7b ldr r3, [r7, #36] ; 0x24
  7595. 80034d6: fa22 f303 lsr.w r3, r2, r3
  7596. 80034da: 2b00 cmp r3, #0
  7597. 80034dc: f47f aed0 bne.w 8003280 <HAL_GPIO_Init+0x14>
  7598. }
  7599. }
  7600. 80034e0: bf00 nop
  7601. 80034e2: 372c adds r7, #44 ; 0x2c
  7602. 80034e4: 46bd mov sp, r7
  7603. 80034e6: bc80 pop {r7}
  7604. 80034e8: 4770 bx lr
  7605. 80034ea: bf00 nop
  7606. 80034ec: 10210000 .word 0x10210000
  7607. 80034f0: 10110000 .word 0x10110000
  7608. 80034f4: 10120000 .word 0x10120000
  7609. 80034f8: 10310000 .word 0x10310000
  7610. 80034fc: 10320000 .word 0x10320000
  7611. 8003500: 10220000 .word 0x10220000
  7612. 8003504: 40021000 .word 0x40021000
  7613. 8003508: 40010000 .word 0x40010000
  7614. 800350c: 40010800 .word 0x40010800
  7615. 8003510: 40010c00 .word 0x40010c00
  7616. 8003514: 40011000 .word 0x40011000
  7617. 8003518: 40011400 .word 0x40011400
  7618. 800351c: 40010400 .word 0x40010400
  7619. 08003520 <HAL_GPIO_ReadPin>:
  7620. * @param GPIO_Pin: specifies the port bit to read.
  7621. * This parameter can be GPIO_PIN_x where x can be (0..15).
  7622. * @retval The input port pin value.
  7623. */
  7624. GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
  7625. {
  7626. 8003520: b480 push {r7}
  7627. 8003522: b085 sub sp, #20
  7628. 8003524: af00 add r7, sp, #0
  7629. 8003526: 6078 str r0, [r7, #4]
  7630. 8003528: 460b mov r3, r1
  7631. 800352a: 807b strh r3, [r7, #2]
  7632. GPIO_PinState bitstatus;
  7633. /* Check the parameters */
  7634. assert_param(IS_GPIO_PIN(GPIO_Pin));
  7635. if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET)
  7636. 800352c: 687b ldr r3, [r7, #4]
  7637. 800352e: 689a ldr r2, [r3, #8]
  7638. 8003530: 887b ldrh r3, [r7, #2]
  7639. 8003532: 4013 ands r3, r2
  7640. 8003534: 2b00 cmp r3, #0
  7641. 8003536: d002 beq.n 800353e <HAL_GPIO_ReadPin+0x1e>
  7642. {
  7643. bitstatus = GPIO_PIN_SET;
  7644. 8003538: 2301 movs r3, #1
  7645. 800353a: 73fb strb r3, [r7, #15]
  7646. 800353c: e001 b.n 8003542 <HAL_GPIO_ReadPin+0x22>
  7647. }
  7648. else
  7649. {
  7650. bitstatus = GPIO_PIN_RESET;
  7651. 800353e: 2300 movs r3, #0
  7652. 8003540: 73fb strb r3, [r7, #15]
  7653. }
  7654. return bitstatus;
  7655. 8003542: 7bfb ldrb r3, [r7, #15]
  7656. }
  7657. 8003544: 4618 mov r0, r3
  7658. 8003546: 3714 adds r7, #20
  7659. 8003548: 46bd mov sp, r7
  7660. 800354a: bc80 pop {r7}
  7661. 800354c: 4770 bx lr
  7662. 0800354e <HAL_GPIO_WritePin>:
  7663. * @arg GPIO_PIN_RESET: to clear the port pin
  7664. * @arg GPIO_PIN_SET: to set the port pin
  7665. * @retval None
  7666. */
  7667. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
  7668. {
  7669. 800354e: b480 push {r7}
  7670. 8003550: b083 sub sp, #12
  7671. 8003552: af00 add r7, sp, #0
  7672. 8003554: 6078 str r0, [r7, #4]
  7673. 8003556: 460b mov r3, r1
  7674. 8003558: 807b strh r3, [r7, #2]
  7675. 800355a: 4613 mov r3, r2
  7676. 800355c: 707b strb r3, [r7, #1]
  7677. /* Check the parameters */
  7678. assert_param(IS_GPIO_PIN(GPIO_Pin));
  7679. assert_param(IS_GPIO_PIN_ACTION(PinState));
  7680. if (PinState != GPIO_PIN_RESET)
  7681. 800355e: 787b ldrb r3, [r7, #1]
  7682. 8003560: 2b00 cmp r3, #0
  7683. 8003562: d003 beq.n 800356c <HAL_GPIO_WritePin+0x1e>
  7684. {
  7685. GPIOx->BSRR = GPIO_Pin;
  7686. 8003564: 887a ldrh r2, [r7, #2]
  7687. 8003566: 687b ldr r3, [r7, #4]
  7688. 8003568: 611a str r2, [r3, #16]
  7689. }
  7690. else
  7691. {
  7692. GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u;
  7693. }
  7694. }
  7695. 800356a: e003 b.n 8003574 <HAL_GPIO_WritePin+0x26>
  7696. GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u;
  7697. 800356c: 887b ldrh r3, [r7, #2]
  7698. 800356e: 041a lsls r2, r3, #16
  7699. 8003570: 687b ldr r3, [r7, #4]
  7700. 8003572: 611a str r2, [r3, #16]
  7701. }
  7702. 8003574: bf00 nop
  7703. 8003576: 370c adds r7, #12
  7704. 8003578: 46bd mov sp, r7
  7705. 800357a: bc80 pop {r7}
  7706. 800357c: 4770 bx lr
  7707. 0800357e <HAL_GPIO_TogglePin>:
  7708. * @param GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral
  7709. * @param GPIO_Pin: Specifies the pins to be toggled.
  7710. * @retval None
  7711. */
  7712. void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
  7713. {
  7714. 800357e: b480 push {r7}
  7715. 8003580: b083 sub sp, #12
  7716. 8003582: af00 add r7, sp, #0
  7717. 8003584: 6078 str r0, [r7, #4]
  7718. 8003586: 460b mov r3, r1
  7719. 8003588: 807b strh r3, [r7, #2]
  7720. /* Check the parameters */
  7721. assert_param(IS_GPIO_PIN(GPIO_Pin));
  7722. if ((GPIOx->ODR & GPIO_Pin) != 0x00u)
  7723. 800358a: 687b ldr r3, [r7, #4]
  7724. 800358c: 68da ldr r2, [r3, #12]
  7725. 800358e: 887b ldrh r3, [r7, #2]
  7726. 8003590: 4013 ands r3, r2
  7727. 8003592: 2b00 cmp r3, #0
  7728. 8003594: d003 beq.n 800359e <HAL_GPIO_TogglePin+0x20>
  7729. {
  7730. GPIOx->BRR = (uint32_t)GPIO_Pin;
  7731. 8003596: 887a ldrh r2, [r7, #2]
  7732. 8003598: 687b ldr r3, [r7, #4]
  7733. 800359a: 615a str r2, [r3, #20]
  7734. }
  7735. else
  7736. {
  7737. GPIOx->BSRR = (uint32_t)GPIO_Pin;
  7738. }
  7739. }
  7740. 800359c: e002 b.n 80035a4 <HAL_GPIO_TogglePin+0x26>
  7741. GPIOx->BSRR = (uint32_t)GPIO_Pin;
  7742. 800359e: 887a ldrh r2, [r7, #2]
  7743. 80035a0: 687b ldr r3, [r7, #4]
  7744. 80035a2: 611a str r2, [r3, #16]
  7745. }
  7746. 80035a4: bf00 nop
  7747. 80035a6: 370c adds r7, #12
  7748. 80035a8: 46bd mov sp, r7
  7749. 80035aa: bc80 pop {r7}
  7750. 80035ac: 4770 bx lr
  7751. ...
  7752. 080035b0 <HAL_RCC_OscConfig>:
  7753. * supported by this macro. User should request a transition to HSE Off
  7754. * first and then HSE On or HSE Bypass.
  7755. * @retval HAL status
  7756. */
  7757. HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
  7758. {
  7759. 80035b0: b580 push {r7, lr}
  7760. 80035b2: b086 sub sp, #24
  7761. 80035b4: af00 add r7, sp, #0
  7762. 80035b6: 6078 str r0, [r7, #4]
  7763. uint32_t tickstart;
  7764. uint32_t pll_config;
  7765. /* Check Null pointer */
  7766. if (RCC_OscInitStruct == NULL)
  7767. 80035b8: 687b ldr r3, [r7, #4]
  7768. 80035ba: 2b00 cmp r3, #0
  7769. 80035bc: d101 bne.n 80035c2 <HAL_RCC_OscConfig+0x12>
  7770. {
  7771. return HAL_ERROR;
  7772. 80035be: 2301 movs r3, #1
  7773. 80035c0: e26c b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  7774. /* Check the parameters */
  7775. assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
  7776. /*------------------------------- HSE Configuration ------------------------*/
  7777. if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
  7778. 80035c2: 687b ldr r3, [r7, #4]
  7779. 80035c4: 681b ldr r3, [r3, #0]
  7780. 80035c6: f003 0301 and.w r3, r3, #1
  7781. 80035ca: 2b00 cmp r3, #0
  7782. 80035cc: f000 8087 beq.w 80036de <HAL_RCC_OscConfig+0x12e>
  7783. {
  7784. /* Check the parameters */
  7785. assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
  7786. /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */
  7787. if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)
  7788. 80035d0: 4b92 ldr r3, [pc, #584] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7789. 80035d2: 685b ldr r3, [r3, #4]
  7790. 80035d4: f003 030c and.w r3, r3, #12
  7791. 80035d8: 2b04 cmp r3, #4
  7792. 80035da: d00c beq.n 80035f6 <HAL_RCC_OscConfig+0x46>
  7793. || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE)))
  7794. 80035dc: 4b8f ldr r3, [pc, #572] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7795. 80035de: 685b ldr r3, [r3, #4]
  7796. 80035e0: f003 030c and.w r3, r3, #12
  7797. 80035e4: 2b08 cmp r3, #8
  7798. 80035e6: d112 bne.n 800360e <HAL_RCC_OscConfig+0x5e>
  7799. 80035e8: 4b8c ldr r3, [pc, #560] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7800. 80035ea: 685b ldr r3, [r3, #4]
  7801. 80035ec: f403 3380 and.w r3, r3, #65536 ; 0x10000
  7802. 80035f0: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
  7803. 80035f4: d10b bne.n 800360e <HAL_RCC_OscConfig+0x5e>
  7804. {
  7805. if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
  7806. 80035f6: 4b89 ldr r3, [pc, #548] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7807. 80035f8: 681b ldr r3, [r3, #0]
  7808. 80035fa: f403 3300 and.w r3, r3, #131072 ; 0x20000
  7809. 80035fe: 2b00 cmp r3, #0
  7810. 8003600: d06c beq.n 80036dc <HAL_RCC_OscConfig+0x12c>
  7811. 8003602: 687b ldr r3, [r7, #4]
  7812. 8003604: 685b ldr r3, [r3, #4]
  7813. 8003606: 2b00 cmp r3, #0
  7814. 8003608: d168 bne.n 80036dc <HAL_RCC_OscConfig+0x12c>
  7815. {
  7816. return HAL_ERROR;
  7817. 800360a: 2301 movs r3, #1
  7818. 800360c: e246 b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  7819. }
  7820. }
  7821. else
  7822. {
  7823. /* Set the new HSE configuration ---------------------------------------*/
  7824. __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
  7825. 800360e: 687b ldr r3, [r7, #4]
  7826. 8003610: 685b ldr r3, [r3, #4]
  7827. 8003612: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
  7828. 8003616: d106 bne.n 8003626 <HAL_RCC_OscConfig+0x76>
  7829. 8003618: 4b80 ldr r3, [pc, #512] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7830. 800361a: 681b ldr r3, [r3, #0]
  7831. 800361c: 4a7f ldr r2, [pc, #508] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7832. 800361e: f443 3380 orr.w r3, r3, #65536 ; 0x10000
  7833. 8003622: 6013 str r3, [r2, #0]
  7834. 8003624: e02e b.n 8003684 <HAL_RCC_OscConfig+0xd4>
  7835. 8003626: 687b ldr r3, [r7, #4]
  7836. 8003628: 685b ldr r3, [r3, #4]
  7837. 800362a: 2b00 cmp r3, #0
  7838. 800362c: d10c bne.n 8003648 <HAL_RCC_OscConfig+0x98>
  7839. 800362e: 4b7b ldr r3, [pc, #492] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7840. 8003630: 681b ldr r3, [r3, #0]
  7841. 8003632: 4a7a ldr r2, [pc, #488] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7842. 8003634: f423 3380 bic.w r3, r3, #65536 ; 0x10000
  7843. 8003638: 6013 str r3, [r2, #0]
  7844. 800363a: 4b78 ldr r3, [pc, #480] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7845. 800363c: 681b ldr r3, [r3, #0]
  7846. 800363e: 4a77 ldr r2, [pc, #476] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7847. 8003640: f423 2380 bic.w r3, r3, #262144 ; 0x40000
  7848. 8003644: 6013 str r3, [r2, #0]
  7849. 8003646: e01d b.n 8003684 <HAL_RCC_OscConfig+0xd4>
  7850. 8003648: 687b ldr r3, [r7, #4]
  7851. 800364a: 685b ldr r3, [r3, #4]
  7852. 800364c: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000
  7853. 8003650: d10c bne.n 800366c <HAL_RCC_OscConfig+0xbc>
  7854. 8003652: 4b72 ldr r3, [pc, #456] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7855. 8003654: 681b ldr r3, [r3, #0]
  7856. 8003656: 4a71 ldr r2, [pc, #452] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7857. 8003658: f443 2380 orr.w r3, r3, #262144 ; 0x40000
  7858. 800365c: 6013 str r3, [r2, #0]
  7859. 800365e: 4b6f ldr r3, [pc, #444] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7860. 8003660: 681b ldr r3, [r3, #0]
  7861. 8003662: 4a6e ldr r2, [pc, #440] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7862. 8003664: f443 3380 orr.w r3, r3, #65536 ; 0x10000
  7863. 8003668: 6013 str r3, [r2, #0]
  7864. 800366a: e00b b.n 8003684 <HAL_RCC_OscConfig+0xd4>
  7865. 800366c: 4b6b ldr r3, [pc, #428] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7866. 800366e: 681b ldr r3, [r3, #0]
  7867. 8003670: 4a6a ldr r2, [pc, #424] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7868. 8003672: f423 3380 bic.w r3, r3, #65536 ; 0x10000
  7869. 8003676: 6013 str r3, [r2, #0]
  7870. 8003678: 4b68 ldr r3, [pc, #416] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7871. 800367a: 681b ldr r3, [r3, #0]
  7872. 800367c: 4a67 ldr r2, [pc, #412] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7873. 800367e: f423 2380 bic.w r3, r3, #262144 ; 0x40000
  7874. 8003682: 6013 str r3, [r2, #0]
  7875. /* Check the HSE State */
  7876. if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
  7877. 8003684: 687b ldr r3, [r7, #4]
  7878. 8003686: 685b ldr r3, [r3, #4]
  7879. 8003688: 2b00 cmp r3, #0
  7880. 800368a: d013 beq.n 80036b4 <HAL_RCC_OscConfig+0x104>
  7881. {
  7882. /* Get Start Tick */
  7883. tickstart = HAL_GetTick();
  7884. 800368c: f7fe fb9e bl 8001dcc <HAL_GetTick>
  7885. 8003690: 6138 str r0, [r7, #16]
  7886. /* Wait till HSE is ready */
  7887. while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
  7888. 8003692: e008 b.n 80036a6 <HAL_RCC_OscConfig+0xf6>
  7889. {
  7890. if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
  7891. 8003694: f7fe fb9a bl 8001dcc <HAL_GetTick>
  7892. 8003698: 4602 mov r2, r0
  7893. 800369a: 693b ldr r3, [r7, #16]
  7894. 800369c: 1ad3 subs r3, r2, r3
  7895. 800369e: 2b64 cmp r3, #100 ; 0x64
  7896. 80036a0: d901 bls.n 80036a6 <HAL_RCC_OscConfig+0xf6>
  7897. {
  7898. return HAL_TIMEOUT;
  7899. 80036a2: 2303 movs r3, #3
  7900. 80036a4: e1fa b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  7901. while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
  7902. 80036a6: 4b5d ldr r3, [pc, #372] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7903. 80036a8: 681b ldr r3, [r3, #0]
  7904. 80036aa: f403 3300 and.w r3, r3, #131072 ; 0x20000
  7905. 80036ae: 2b00 cmp r3, #0
  7906. 80036b0: d0f0 beq.n 8003694 <HAL_RCC_OscConfig+0xe4>
  7907. 80036b2: e014 b.n 80036de <HAL_RCC_OscConfig+0x12e>
  7908. }
  7909. }
  7910. else
  7911. {
  7912. /* Get Start Tick */
  7913. tickstart = HAL_GetTick();
  7914. 80036b4: f7fe fb8a bl 8001dcc <HAL_GetTick>
  7915. 80036b8: 6138 str r0, [r7, #16]
  7916. /* Wait till HSE is disabled */
  7917. while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
  7918. 80036ba: e008 b.n 80036ce <HAL_RCC_OscConfig+0x11e>
  7919. {
  7920. if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
  7921. 80036bc: f7fe fb86 bl 8001dcc <HAL_GetTick>
  7922. 80036c0: 4602 mov r2, r0
  7923. 80036c2: 693b ldr r3, [r7, #16]
  7924. 80036c4: 1ad3 subs r3, r2, r3
  7925. 80036c6: 2b64 cmp r3, #100 ; 0x64
  7926. 80036c8: d901 bls.n 80036ce <HAL_RCC_OscConfig+0x11e>
  7927. {
  7928. return HAL_TIMEOUT;
  7929. 80036ca: 2303 movs r3, #3
  7930. 80036cc: e1e6 b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  7931. while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
  7932. 80036ce: 4b53 ldr r3, [pc, #332] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7933. 80036d0: 681b ldr r3, [r3, #0]
  7934. 80036d2: f403 3300 and.w r3, r3, #131072 ; 0x20000
  7935. 80036d6: 2b00 cmp r3, #0
  7936. 80036d8: d1f0 bne.n 80036bc <HAL_RCC_OscConfig+0x10c>
  7937. 80036da: e000 b.n 80036de <HAL_RCC_OscConfig+0x12e>
  7938. if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
  7939. 80036dc: bf00 nop
  7940. }
  7941. }
  7942. }
  7943. }
  7944. /*----------------------------- HSI Configuration --------------------------*/
  7945. if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
  7946. 80036de: 687b ldr r3, [r7, #4]
  7947. 80036e0: 681b ldr r3, [r3, #0]
  7948. 80036e2: f003 0302 and.w r3, r3, #2
  7949. 80036e6: 2b00 cmp r3, #0
  7950. 80036e8: d063 beq.n 80037b2 <HAL_RCC_OscConfig+0x202>
  7951. /* Check the parameters */
  7952. assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
  7953. assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
  7954. /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
  7955. if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI)
  7956. 80036ea: 4b4c ldr r3, [pc, #304] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7957. 80036ec: 685b ldr r3, [r3, #4]
  7958. 80036ee: f003 030c and.w r3, r3, #12
  7959. 80036f2: 2b00 cmp r3, #0
  7960. 80036f4: d00b beq.n 800370e <HAL_RCC_OscConfig+0x15e>
  7961. || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSI_DIV2)))
  7962. 80036f6: 4b49 ldr r3, [pc, #292] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7963. 80036f8: 685b ldr r3, [r3, #4]
  7964. 80036fa: f003 030c and.w r3, r3, #12
  7965. 80036fe: 2b08 cmp r3, #8
  7966. 8003700: d11c bne.n 800373c <HAL_RCC_OscConfig+0x18c>
  7967. 8003702: 4b46 ldr r3, [pc, #280] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7968. 8003704: 685b ldr r3, [r3, #4]
  7969. 8003706: f403 3380 and.w r3, r3, #65536 ; 0x10000
  7970. 800370a: 2b00 cmp r3, #0
  7971. 800370c: d116 bne.n 800373c <HAL_RCC_OscConfig+0x18c>
  7972. {
  7973. /* When HSI is used as system clock it will not disabled */
  7974. if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
  7975. 800370e: 4b43 ldr r3, [pc, #268] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7976. 8003710: 681b ldr r3, [r3, #0]
  7977. 8003712: f003 0302 and.w r3, r3, #2
  7978. 8003716: 2b00 cmp r3, #0
  7979. 8003718: d005 beq.n 8003726 <HAL_RCC_OscConfig+0x176>
  7980. 800371a: 687b ldr r3, [r7, #4]
  7981. 800371c: 691b ldr r3, [r3, #16]
  7982. 800371e: 2b01 cmp r3, #1
  7983. 8003720: d001 beq.n 8003726 <HAL_RCC_OscConfig+0x176>
  7984. {
  7985. return HAL_ERROR;
  7986. 8003722: 2301 movs r3, #1
  7987. 8003724: e1ba b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  7988. }
  7989. /* Otherwise, just the calibration is allowed */
  7990. else
  7991. {
  7992. /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
  7993. __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
  7994. 8003726: 4b3d ldr r3, [pc, #244] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  7995. 8003728: 681b ldr r3, [r3, #0]
  7996. 800372a: f023 02f8 bic.w r2, r3, #248 ; 0xf8
  7997. 800372e: 687b ldr r3, [r7, #4]
  7998. 8003730: 695b ldr r3, [r3, #20]
  7999. 8003732: 00db lsls r3, r3, #3
  8000. 8003734: 4939 ldr r1, [pc, #228] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  8001. 8003736: 4313 orrs r3, r2
  8002. 8003738: 600b str r3, [r1, #0]
  8003. if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
  8004. 800373a: e03a b.n 80037b2 <HAL_RCC_OscConfig+0x202>
  8005. }
  8006. }
  8007. else
  8008. {
  8009. /* Check the HSI State */
  8010. if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF)
  8011. 800373c: 687b ldr r3, [r7, #4]
  8012. 800373e: 691b ldr r3, [r3, #16]
  8013. 8003740: 2b00 cmp r3, #0
  8014. 8003742: d020 beq.n 8003786 <HAL_RCC_OscConfig+0x1d6>
  8015. {
  8016. /* Enable the Internal High Speed oscillator (HSI). */
  8017. __HAL_RCC_HSI_ENABLE();
  8018. 8003744: 4b36 ldr r3, [pc, #216] ; (8003820 <HAL_RCC_OscConfig+0x270>)
  8019. 8003746: 2201 movs r2, #1
  8020. 8003748: 601a str r2, [r3, #0]
  8021. /* Get Start Tick */
  8022. tickstart = HAL_GetTick();
  8023. 800374a: f7fe fb3f bl 8001dcc <HAL_GetTick>
  8024. 800374e: 6138 str r0, [r7, #16]
  8025. /* Wait till HSI is ready */
  8026. while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
  8027. 8003750: e008 b.n 8003764 <HAL_RCC_OscConfig+0x1b4>
  8028. {
  8029. if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
  8030. 8003752: f7fe fb3b bl 8001dcc <HAL_GetTick>
  8031. 8003756: 4602 mov r2, r0
  8032. 8003758: 693b ldr r3, [r7, #16]
  8033. 800375a: 1ad3 subs r3, r2, r3
  8034. 800375c: 2b02 cmp r3, #2
  8035. 800375e: d901 bls.n 8003764 <HAL_RCC_OscConfig+0x1b4>
  8036. {
  8037. return HAL_TIMEOUT;
  8038. 8003760: 2303 movs r3, #3
  8039. 8003762: e19b b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8040. while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
  8041. 8003764: 4b2d ldr r3, [pc, #180] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  8042. 8003766: 681b ldr r3, [r3, #0]
  8043. 8003768: f003 0302 and.w r3, r3, #2
  8044. 800376c: 2b00 cmp r3, #0
  8045. 800376e: d0f0 beq.n 8003752 <HAL_RCC_OscConfig+0x1a2>
  8046. }
  8047. }
  8048. /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
  8049. __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
  8050. 8003770: 4b2a ldr r3, [pc, #168] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  8051. 8003772: 681b ldr r3, [r3, #0]
  8052. 8003774: f023 02f8 bic.w r2, r3, #248 ; 0xf8
  8053. 8003778: 687b ldr r3, [r7, #4]
  8054. 800377a: 695b ldr r3, [r3, #20]
  8055. 800377c: 00db lsls r3, r3, #3
  8056. 800377e: 4927 ldr r1, [pc, #156] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  8057. 8003780: 4313 orrs r3, r2
  8058. 8003782: 600b str r3, [r1, #0]
  8059. 8003784: e015 b.n 80037b2 <HAL_RCC_OscConfig+0x202>
  8060. }
  8061. else
  8062. {
  8063. /* Disable the Internal High Speed oscillator (HSI). */
  8064. __HAL_RCC_HSI_DISABLE();
  8065. 8003786: 4b26 ldr r3, [pc, #152] ; (8003820 <HAL_RCC_OscConfig+0x270>)
  8066. 8003788: 2200 movs r2, #0
  8067. 800378a: 601a str r2, [r3, #0]
  8068. /* Get Start Tick */
  8069. tickstart = HAL_GetTick();
  8070. 800378c: f7fe fb1e bl 8001dcc <HAL_GetTick>
  8071. 8003790: 6138 str r0, [r7, #16]
  8072. /* Wait till HSI is disabled */
  8073. while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
  8074. 8003792: e008 b.n 80037a6 <HAL_RCC_OscConfig+0x1f6>
  8075. {
  8076. if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
  8077. 8003794: f7fe fb1a bl 8001dcc <HAL_GetTick>
  8078. 8003798: 4602 mov r2, r0
  8079. 800379a: 693b ldr r3, [r7, #16]
  8080. 800379c: 1ad3 subs r3, r2, r3
  8081. 800379e: 2b02 cmp r3, #2
  8082. 80037a0: d901 bls.n 80037a6 <HAL_RCC_OscConfig+0x1f6>
  8083. {
  8084. return HAL_TIMEOUT;
  8085. 80037a2: 2303 movs r3, #3
  8086. 80037a4: e17a b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8087. while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
  8088. 80037a6: 4b1d ldr r3, [pc, #116] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  8089. 80037a8: 681b ldr r3, [r3, #0]
  8090. 80037aa: f003 0302 and.w r3, r3, #2
  8091. 80037ae: 2b00 cmp r3, #0
  8092. 80037b0: d1f0 bne.n 8003794 <HAL_RCC_OscConfig+0x1e4>
  8093. }
  8094. }
  8095. }
  8096. }
  8097. /*------------------------------ LSI Configuration -------------------------*/
  8098. if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
  8099. 80037b2: 687b ldr r3, [r7, #4]
  8100. 80037b4: 681b ldr r3, [r3, #0]
  8101. 80037b6: f003 0308 and.w r3, r3, #8
  8102. 80037ba: 2b00 cmp r3, #0
  8103. 80037bc: d03a beq.n 8003834 <HAL_RCC_OscConfig+0x284>
  8104. {
  8105. /* Check the parameters */
  8106. assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
  8107. /* Check the LSI State */
  8108. if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF)
  8109. 80037be: 687b ldr r3, [r7, #4]
  8110. 80037c0: 699b ldr r3, [r3, #24]
  8111. 80037c2: 2b00 cmp r3, #0
  8112. 80037c4: d019 beq.n 80037fa <HAL_RCC_OscConfig+0x24a>
  8113. {
  8114. /* Enable the Internal Low Speed oscillator (LSI). */
  8115. __HAL_RCC_LSI_ENABLE();
  8116. 80037c6: 4b17 ldr r3, [pc, #92] ; (8003824 <HAL_RCC_OscConfig+0x274>)
  8117. 80037c8: 2201 movs r2, #1
  8118. 80037ca: 601a str r2, [r3, #0]
  8119. /* Get Start Tick */
  8120. tickstart = HAL_GetTick();
  8121. 80037cc: f7fe fafe bl 8001dcc <HAL_GetTick>
  8122. 80037d0: 6138 str r0, [r7, #16]
  8123. /* Wait till LSI is ready */
  8124. while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
  8125. 80037d2: e008 b.n 80037e6 <HAL_RCC_OscConfig+0x236>
  8126. {
  8127. if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
  8128. 80037d4: f7fe fafa bl 8001dcc <HAL_GetTick>
  8129. 80037d8: 4602 mov r2, r0
  8130. 80037da: 693b ldr r3, [r7, #16]
  8131. 80037dc: 1ad3 subs r3, r2, r3
  8132. 80037de: 2b02 cmp r3, #2
  8133. 80037e0: d901 bls.n 80037e6 <HAL_RCC_OscConfig+0x236>
  8134. {
  8135. return HAL_TIMEOUT;
  8136. 80037e2: 2303 movs r3, #3
  8137. 80037e4: e15a b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8138. while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
  8139. 80037e6: 4b0d ldr r3, [pc, #52] ; (800381c <HAL_RCC_OscConfig+0x26c>)
  8140. 80037e8: 6a5b ldr r3, [r3, #36] ; 0x24
  8141. 80037ea: f003 0302 and.w r3, r3, #2
  8142. 80037ee: 2b00 cmp r3, #0
  8143. 80037f0: d0f0 beq.n 80037d4 <HAL_RCC_OscConfig+0x224>
  8144. }
  8145. }
  8146. /* To have a fully stabilized clock in the specified range, a software delay of 1ms
  8147. should be added.*/
  8148. RCC_Delay(1);
  8149. 80037f2: 2001 movs r0, #1
  8150. 80037f4: f000 fad6 bl 8003da4 <RCC_Delay>
  8151. 80037f8: e01c b.n 8003834 <HAL_RCC_OscConfig+0x284>
  8152. }
  8153. else
  8154. {
  8155. /* Disable the Internal Low Speed oscillator (LSI). */
  8156. __HAL_RCC_LSI_DISABLE();
  8157. 80037fa: 4b0a ldr r3, [pc, #40] ; (8003824 <HAL_RCC_OscConfig+0x274>)
  8158. 80037fc: 2200 movs r2, #0
  8159. 80037fe: 601a str r2, [r3, #0]
  8160. /* Get Start Tick */
  8161. tickstart = HAL_GetTick();
  8162. 8003800: f7fe fae4 bl 8001dcc <HAL_GetTick>
  8163. 8003804: 6138 str r0, [r7, #16]
  8164. /* Wait till LSI is disabled */
  8165. while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
  8166. 8003806: e00f b.n 8003828 <HAL_RCC_OscConfig+0x278>
  8167. {
  8168. if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
  8169. 8003808: f7fe fae0 bl 8001dcc <HAL_GetTick>
  8170. 800380c: 4602 mov r2, r0
  8171. 800380e: 693b ldr r3, [r7, #16]
  8172. 8003810: 1ad3 subs r3, r2, r3
  8173. 8003812: 2b02 cmp r3, #2
  8174. 8003814: d908 bls.n 8003828 <HAL_RCC_OscConfig+0x278>
  8175. {
  8176. return HAL_TIMEOUT;
  8177. 8003816: 2303 movs r3, #3
  8178. 8003818: e140 b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8179. 800381a: bf00 nop
  8180. 800381c: 40021000 .word 0x40021000
  8181. 8003820: 42420000 .word 0x42420000
  8182. 8003824: 42420480 .word 0x42420480
  8183. while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
  8184. 8003828: 4b9e ldr r3, [pc, #632] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8185. 800382a: 6a5b ldr r3, [r3, #36] ; 0x24
  8186. 800382c: f003 0302 and.w r3, r3, #2
  8187. 8003830: 2b00 cmp r3, #0
  8188. 8003832: d1e9 bne.n 8003808 <HAL_RCC_OscConfig+0x258>
  8189. }
  8190. }
  8191. }
  8192. }
  8193. /*------------------------------ LSE Configuration -------------------------*/
  8194. if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
  8195. 8003834: 687b ldr r3, [r7, #4]
  8196. 8003836: 681b ldr r3, [r3, #0]
  8197. 8003838: f003 0304 and.w r3, r3, #4
  8198. 800383c: 2b00 cmp r3, #0
  8199. 800383e: f000 80a6 beq.w 800398e <HAL_RCC_OscConfig+0x3de>
  8200. {
  8201. FlagStatus pwrclkchanged = RESET;
  8202. 8003842: 2300 movs r3, #0
  8203. 8003844: 75fb strb r3, [r7, #23]
  8204. /* Check the parameters */
  8205. assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
  8206. /* Update LSE configuration in Backup Domain control register */
  8207. /* Requires to enable write access to Backup Domain of necessary */
  8208. if (__HAL_RCC_PWR_IS_CLK_DISABLED())
  8209. 8003846: 4b97 ldr r3, [pc, #604] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8210. 8003848: 69db ldr r3, [r3, #28]
  8211. 800384a: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  8212. 800384e: 2b00 cmp r3, #0
  8213. 8003850: d10d bne.n 800386e <HAL_RCC_OscConfig+0x2be>
  8214. {
  8215. __HAL_RCC_PWR_CLK_ENABLE();
  8216. 8003852: 4b94 ldr r3, [pc, #592] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8217. 8003854: 69db ldr r3, [r3, #28]
  8218. 8003856: 4a93 ldr r2, [pc, #588] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8219. 8003858: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
  8220. 800385c: 61d3 str r3, [r2, #28]
  8221. 800385e: 4b91 ldr r3, [pc, #580] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8222. 8003860: 69db ldr r3, [r3, #28]
  8223. 8003862: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  8224. 8003866: 60bb str r3, [r7, #8]
  8225. 8003868: 68bb ldr r3, [r7, #8]
  8226. pwrclkchanged = SET;
  8227. 800386a: 2301 movs r3, #1
  8228. 800386c: 75fb strb r3, [r7, #23]
  8229. }
  8230. if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  8231. 800386e: 4b8e ldr r3, [pc, #568] ; (8003aa8 <HAL_RCC_OscConfig+0x4f8>)
  8232. 8003870: 681b ldr r3, [r3, #0]
  8233. 8003872: f403 7380 and.w r3, r3, #256 ; 0x100
  8234. 8003876: 2b00 cmp r3, #0
  8235. 8003878: d118 bne.n 80038ac <HAL_RCC_OscConfig+0x2fc>
  8236. {
  8237. /* Enable write access to Backup domain */
  8238. SET_BIT(PWR->CR, PWR_CR_DBP);
  8239. 800387a: 4b8b ldr r3, [pc, #556] ; (8003aa8 <HAL_RCC_OscConfig+0x4f8>)
  8240. 800387c: 681b ldr r3, [r3, #0]
  8241. 800387e: 4a8a ldr r2, [pc, #552] ; (8003aa8 <HAL_RCC_OscConfig+0x4f8>)
  8242. 8003880: f443 7380 orr.w r3, r3, #256 ; 0x100
  8243. 8003884: 6013 str r3, [r2, #0]
  8244. /* Wait for Backup domain Write protection disable */
  8245. tickstart = HAL_GetTick();
  8246. 8003886: f7fe faa1 bl 8001dcc <HAL_GetTick>
  8247. 800388a: 6138 str r0, [r7, #16]
  8248. while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  8249. 800388c: e008 b.n 80038a0 <HAL_RCC_OscConfig+0x2f0>
  8250. {
  8251. if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
  8252. 800388e: f7fe fa9d bl 8001dcc <HAL_GetTick>
  8253. 8003892: 4602 mov r2, r0
  8254. 8003894: 693b ldr r3, [r7, #16]
  8255. 8003896: 1ad3 subs r3, r2, r3
  8256. 8003898: 2b64 cmp r3, #100 ; 0x64
  8257. 800389a: d901 bls.n 80038a0 <HAL_RCC_OscConfig+0x2f0>
  8258. {
  8259. return HAL_TIMEOUT;
  8260. 800389c: 2303 movs r3, #3
  8261. 800389e: e0fd b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8262. while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  8263. 80038a0: 4b81 ldr r3, [pc, #516] ; (8003aa8 <HAL_RCC_OscConfig+0x4f8>)
  8264. 80038a2: 681b ldr r3, [r3, #0]
  8265. 80038a4: f403 7380 and.w r3, r3, #256 ; 0x100
  8266. 80038a8: 2b00 cmp r3, #0
  8267. 80038aa: d0f0 beq.n 800388e <HAL_RCC_OscConfig+0x2de>
  8268. }
  8269. }
  8270. }
  8271. /* Set the new LSE configuration -----------------------------------------*/
  8272. __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
  8273. 80038ac: 687b ldr r3, [r7, #4]
  8274. 80038ae: 68db ldr r3, [r3, #12]
  8275. 80038b0: 2b01 cmp r3, #1
  8276. 80038b2: d106 bne.n 80038c2 <HAL_RCC_OscConfig+0x312>
  8277. 80038b4: 4b7b ldr r3, [pc, #492] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8278. 80038b6: 6a1b ldr r3, [r3, #32]
  8279. 80038b8: 4a7a ldr r2, [pc, #488] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8280. 80038ba: f043 0301 orr.w r3, r3, #1
  8281. 80038be: 6213 str r3, [r2, #32]
  8282. 80038c0: e02d b.n 800391e <HAL_RCC_OscConfig+0x36e>
  8283. 80038c2: 687b ldr r3, [r7, #4]
  8284. 80038c4: 68db ldr r3, [r3, #12]
  8285. 80038c6: 2b00 cmp r3, #0
  8286. 80038c8: d10c bne.n 80038e4 <HAL_RCC_OscConfig+0x334>
  8287. 80038ca: 4b76 ldr r3, [pc, #472] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8288. 80038cc: 6a1b ldr r3, [r3, #32]
  8289. 80038ce: 4a75 ldr r2, [pc, #468] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8290. 80038d0: f023 0301 bic.w r3, r3, #1
  8291. 80038d4: 6213 str r3, [r2, #32]
  8292. 80038d6: 4b73 ldr r3, [pc, #460] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8293. 80038d8: 6a1b ldr r3, [r3, #32]
  8294. 80038da: 4a72 ldr r2, [pc, #456] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8295. 80038dc: f023 0304 bic.w r3, r3, #4
  8296. 80038e0: 6213 str r3, [r2, #32]
  8297. 80038e2: e01c b.n 800391e <HAL_RCC_OscConfig+0x36e>
  8298. 80038e4: 687b ldr r3, [r7, #4]
  8299. 80038e6: 68db ldr r3, [r3, #12]
  8300. 80038e8: 2b05 cmp r3, #5
  8301. 80038ea: d10c bne.n 8003906 <HAL_RCC_OscConfig+0x356>
  8302. 80038ec: 4b6d ldr r3, [pc, #436] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8303. 80038ee: 6a1b ldr r3, [r3, #32]
  8304. 80038f0: 4a6c ldr r2, [pc, #432] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8305. 80038f2: f043 0304 orr.w r3, r3, #4
  8306. 80038f6: 6213 str r3, [r2, #32]
  8307. 80038f8: 4b6a ldr r3, [pc, #424] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8308. 80038fa: 6a1b ldr r3, [r3, #32]
  8309. 80038fc: 4a69 ldr r2, [pc, #420] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8310. 80038fe: f043 0301 orr.w r3, r3, #1
  8311. 8003902: 6213 str r3, [r2, #32]
  8312. 8003904: e00b b.n 800391e <HAL_RCC_OscConfig+0x36e>
  8313. 8003906: 4b67 ldr r3, [pc, #412] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8314. 8003908: 6a1b ldr r3, [r3, #32]
  8315. 800390a: 4a66 ldr r2, [pc, #408] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8316. 800390c: f023 0301 bic.w r3, r3, #1
  8317. 8003910: 6213 str r3, [r2, #32]
  8318. 8003912: 4b64 ldr r3, [pc, #400] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8319. 8003914: 6a1b ldr r3, [r3, #32]
  8320. 8003916: 4a63 ldr r2, [pc, #396] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8321. 8003918: f023 0304 bic.w r3, r3, #4
  8322. 800391c: 6213 str r3, [r2, #32]
  8323. /* Check the LSE State */
  8324. if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF)
  8325. 800391e: 687b ldr r3, [r7, #4]
  8326. 8003920: 68db ldr r3, [r3, #12]
  8327. 8003922: 2b00 cmp r3, #0
  8328. 8003924: d015 beq.n 8003952 <HAL_RCC_OscConfig+0x3a2>
  8329. {
  8330. /* Get Start Tick */
  8331. tickstart = HAL_GetTick();
  8332. 8003926: f7fe fa51 bl 8001dcc <HAL_GetTick>
  8333. 800392a: 6138 str r0, [r7, #16]
  8334. /* Wait till LSE is ready */
  8335. while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
  8336. 800392c: e00a b.n 8003944 <HAL_RCC_OscConfig+0x394>
  8337. {
  8338. if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
  8339. 800392e: f7fe fa4d bl 8001dcc <HAL_GetTick>
  8340. 8003932: 4602 mov r2, r0
  8341. 8003934: 693b ldr r3, [r7, #16]
  8342. 8003936: 1ad3 subs r3, r2, r3
  8343. 8003938: f241 3288 movw r2, #5000 ; 0x1388
  8344. 800393c: 4293 cmp r3, r2
  8345. 800393e: d901 bls.n 8003944 <HAL_RCC_OscConfig+0x394>
  8346. {
  8347. return HAL_TIMEOUT;
  8348. 8003940: 2303 movs r3, #3
  8349. 8003942: e0ab b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8350. while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
  8351. 8003944: 4b57 ldr r3, [pc, #348] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8352. 8003946: 6a1b ldr r3, [r3, #32]
  8353. 8003948: f003 0302 and.w r3, r3, #2
  8354. 800394c: 2b00 cmp r3, #0
  8355. 800394e: d0ee beq.n 800392e <HAL_RCC_OscConfig+0x37e>
  8356. 8003950: e014 b.n 800397c <HAL_RCC_OscConfig+0x3cc>
  8357. }
  8358. }
  8359. else
  8360. {
  8361. /* Get Start Tick */
  8362. tickstart = HAL_GetTick();
  8363. 8003952: f7fe fa3b bl 8001dcc <HAL_GetTick>
  8364. 8003956: 6138 str r0, [r7, #16]
  8365. /* Wait till LSE is disabled */
  8366. while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
  8367. 8003958: e00a b.n 8003970 <HAL_RCC_OscConfig+0x3c0>
  8368. {
  8369. if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
  8370. 800395a: f7fe fa37 bl 8001dcc <HAL_GetTick>
  8371. 800395e: 4602 mov r2, r0
  8372. 8003960: 693b ldr r3, [r7, #16]
  8373. 8003962: 1ad3 subs r3, r2, r3
  8374. 8003964: f241 3288 movw r2, #5000 ; 0x1388
  8375. 8003968: 4293 cmp r3, r2
  8376. 800396a: d901 bls.n 8003970 <HAL_RCC_OscConfig+0x3c0>
  8377. {
  8378. return HAL_TIMEOUT;
  8379. 800396c: 2303 movs r3, #3
  8380. 800396e: e095 b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8381. while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
  8382. 8003970: 4b4c ldr r3, [pc, #304] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8383. 8003972: 6a1b ldr r3, [r3, #32]
  8384. 8003974: f003 0302 and.w r3, r3, #2
  8385. 8003978: 2b00 cmp r3, #0
  8386. 800397a: d1ee bne.n 800395a <HAL_RCC_OscConfig+0x3aa>
  8387. }
  8388. }
  8389. }
  8390. /* Require to disable power clock if necessary */
  8391. if (pwrclkchanged == SET)
  8392. 800397c: 7dfb ldrb r3, [r7, #23]
  8393. 800397e: 2b01 cmp r3, #1
  8394. 8003980: d105 bne.n 800398e <HAL_RCC_OscConfig+0x3de>
  8395. {
  8396. __HAL_RCC_PWR_CLK_DISABLE();
  8397. 8003982: 4b48 ldr r3, [pc, #288] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8398. 8003984: 69db ldr r3, [r3, #28]
  8399. 8003986: 4a47 ldr r2, [pc, #284] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8400. 8003988: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
  8401. 800398c: 61d3 str r3, [r2, #28]
  8402. #endif /* RCC_CR_PLL2ON */
  8403. /*-------------------------------- PLL Configuration -----------------------*/
  8404. /* Check the parameters */
  8405. assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));
  8406. if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
  8407. 800398e: 687b ldr r3, [r7, #4]
  8408. 8003990: 69db ldr r3, [r3, #28]
  8409. 8003992: 2b00 cmp r3, #0
  8410. 8003994: f000 8081 beq.w 8003a9a <HAL_RCC_OscConfig+0x4ea>
  8411. {
  8412. /* Check if the PLL is used as system clock or not */
  8413. if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
  8414. 8003998: 4b42 ldr r3, [pc, #264] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8415. 800399a: 685b ldr r3, [r3, #4]
  8416. 800399c: f003 030c and.w r3, r3, #12
  8417. 80039a0: 2b08 cmp r3, #8
  8418. 80039a2: d061 beq.n 8003a68 <HAL_RCC_OscConfig+0x4b8>
  8419. {
  8420. if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
  8421. 80039a4: 687b ldr r3, [r7, #4]
  8422. 80039a6: 69db ldr r3, [r3, #28]
  8423. 80039a8: 2b02 cmp r3, #2
  8424. 80039aa: d146 bne.n 8003a3a <HAL_RCC_OscConfig+0x48a>
  8425. /* Check the parameters */
  8426. assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));
  8427. assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL));
  8428. /* Disable the main PLL. */
  8429. __HAL_RCC_PLL_DISABLE();
  8430. 80039ac: 4b3f ldr r3, [pc, #252] ; (8003aac <HAL_RCC_OscConfig+0x4fc>)
  8431. 80039ae: 2200 movs r2, #0
  8432. 80039b0: 601a str r2, [r3, #0]
  8433. /* Get Start Tick */
  8434. tickstart = HAL_GetTick();
  8435. 80039b2: f7fe fa0b bl 8001dcc <HAL_GetTick>
  8436. 80039b6: 6138 str r0, [r7, #16]
  8437. /* Wait till PLL is disabled */
  8438. while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
  8439. 80039b8: e008 b.n 80039cc <HAL_RCC_OscConfig+0x41c>
  8440. {
  8441. if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
  8442. 80039ba: f7fe fa07 bl 8001dcc <HAL_GetTick>
  8443. 80039be: 4602 mov r2, r0
  8444. 80039c0: 693b ldr r3, [r7, #16]
  8445. 80039c2: 1ad3 subs r3, r2, r3
  8446. 80039c4: 2b02 cmp r3, #2
  8447. 80039c6: d901 bls.n 80039cc <HAL_RCC_OscConfig+0x41c>
  8448. {
  8449. return HAL_TIMEOUT;
  8450. 80039c8: 2303 movs r3, #3
  8451. 80039ca: e067 b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8452. while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
  8453. 80039cc: 4b35 ldr r3, [pc, #212] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8454. 80039ce: 681b ldr r3, [r3, #0]
  8455. 80039d0: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  8456. 80039d4: 2b00 cmp r3, #0
  8457. 80039d6: d1f0 bne.n 80039ba <HAL_RCC_OscConfig+0x40a>
  8458. }
  8459. }
  8460. /* Configure the HSE prediv factor --------------------------------*/
  8461. /* It can be written only when the PLL is disabled. Not used in PLL source is different than HSE */
  8462. if (RCC_OscInitStruct->PLL.PLLSource == RCC_PLLSOURCE_HSE)
  8463. 80039d8: 687b ldr r3, [r7, #4]
  8464. 80039da: 6a1b ldr r3, [r3, #32]
  8465. 80039dc: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
  8466. 80039e0: d108 bne.n 80039f4 <HAL_RCC_OscConfig+0x444>
  8467. /* Set PREDIV1 source */
  8468. SET_BIT(RCC->CFGR2, RCC_OscInitStruct->Prediv1Source);
  8469. #endif /* RCC_CFGR2_PREDIV1SRC */
  8470. /* Set PREDIV1 Value */
  8471. __HAL_RCC_HSE_PREDIV_CONFIG(RCC_OscInitStruct->HSEPredivValue);
  8472. 80039e2: 4b30 ldr r3, [pc, #192] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8473. 80039e4: 6adb ldr r3, [r3, #44] ; 0x2c
  8474. 80039e6: f023 020f bic.w r2, r3, #15
  8475. 80039ea: 687b ldr r3, [r7, #4]
  8476. 80039ec: 689b ldr r3, [r3, #8]
  8477. 80039ee: 492d ldr r1, [pc, #180] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8478. 80039f0: 4313 orrs r3, r2
  8479. 80039f2: 62cb str r3, [r1, #44] ; 0x2c
  8480. }
  8481. /* Configure the main PLL clock source and multiplication factors. */
  8482. __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
  8483. 80039f4: 4b2b ldr r3, [pc, #172] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8484. 80039f6: 685b ldr r3, [r3, #4]
  8485. 80039f8: f423 1274 bic.w r2, r3, #3997696 ; 0x3d0000
  8486. 80039fc: 687b ldr r3, [r7, #4]
  8487. 80039fe: 6a19 ldr r1, [r3, #32]
  8488. 8003a00: 687b ldr r3, [r7, #4]
  8489. 8003a02: 6a5b ldr r3, [r3, #36] ; 0x24
  8490. 8003a04: 430b orrs r3, r1
  8491. 8003a06: 4927 ldr r1, [pc, #156] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8492. 8003a08: 4313 orrs r3, r2
  8493. 8003a0a: 604b str r3, [r1, #4]
  8494. RCC_OscInitStruct->PLL.PLLMUL);
  8495. /* Enable the main PLL. */
  8496. __HAL_RCC_PLL_ENABLE();
  8497. 8003a0c: 4b27 ldr r3, [pc, #156] ; (8003aac <HAL_RCC_OscConfig+0x4fc>)
  8498. 8003a0e: 2201 movs r2, #1
  8499. 8003a10: 601a str r2, [r3, #0]
  8500. /* Get Start Tick */
  8501. tickstart = HAL_GetTick();
  8502. 8003a12: f7fe f9db bl 8001dcc <HAL_GetTick>
  8503. 8003a16: 6138 str r0, [r7, #16]
  8504. /* Wait till PLL is ready */
  8505. while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
  8506. 8003a18: e008 b.n 8003a2c <HAL_RCC_OscConfig+0x47c>
  8507. {
  8508. if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
  8509. 8003a1a: f7fe f9d7 bl 8001dcc <HAL_GetTick>
  8510. 8003a1e: 4602 mov r2, r0
  8511. 8003a20: 693b ldr r3, [r7, #16]
  8512. 8003a22: 1ad3 subs r3, r2, r3
  8513. 8003a24: 2b02 cmp r3, #2
  8514. 8003a26: d901 bls.n 8003a2c <HAL_RCC_OscConfig+0x47c>
  8515. {
  8516. return HAL_TIMEOUT;
  8517. 8003a28: 2303 movs r3, #3
  8518. 8003a2a: e037 b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8519. while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
  8520. 8003a2c: 4b1d ldr r3, [pc, #116] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8521. 8003a2e: 681b ldr r3, [r3, #0]
  8522. 8003a30: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  8523. 8003a34: 2b00 cmp r3, #0
  8524. 8003a36: d0f0 beq.n 8003a1a <HAL_RCC_OscConfig+0x46a>
  8525. 8003a38: e02f b.n 8003a9a <HAL_RCC_OscConfig+0x4ea>
  8526. }
  8527. }
  8528. else
  8529. {
  8530. /* Disable the main PLL. */
  8531. __HAL_RCC_PLL_DISABLE();
  8532. 8003a3a: 4b1c ldr r3, [pc, #112] ; (8003aac <HAL_RCC_OscConfig+0x4fc>)
  8533. 8003a3c: 2200 movs r2, #0
  8534. 8003a3e: 601a str r2, [r3, #0]
  8535. /* Get Start Tick */
  8536. tickstart = HAL_GetTick();
  8537. 8003a40: f7fe f9c4 bl 8001dcc <HAL_GetTick>
  8538. 8003a44: 6138 str r0, [r7, #16]
  8539. /* Wait till PLL is disabled */
  8540. while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
  8541. 8003a46: e008 b.n 8003a5a <HAL_RCC_OscConfig+0x4aa>
  8542. {
  8543. if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
  8544. 8003a48: f7fe f9c0 bl 8001dcc <HAL_GetTick>
  8545. 8003a4c: 4602 mov r2, r0
  8546. 8003a4e: 693b ldr r3, [r7, #16]
  8547. 8003a50: 1ad3 subs r3, r2, r3
  8548. 8003a52: 2b02 cmp r3, #2
  8549. 8003a54: d901 bls.n 8003a5a <HAL_RCC_OscConfig+0x4aa>
  8550. {
  8551. return HAL_TIMEOUT;
  8552. 8003a56: 2303 movs r3, #3
  8553. 8003a58: e020 b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8554. while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
  8555. 8003a5a: 4b12 ldr r3, [pc, #72] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8556. 8003a5c: 681b ldr r3, [r3, #0]
  8557. 8003a5e: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  8558. 8003a62: 2b00 cmp r3, #0
  8559. 8003a64: d1f0 bne.n 8003a48 <HAL_RCC_OscConfig+0x498>
  8560. 8003a66: e018 b.n 8003a9a <HAL_RCC_OscConfig+0x4ea>
  8561. }
  8562. }
  8563. else
  8564. {
  8565. /* Check if there is a request to disable the PLL used as System clock source */
  8566. if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF)
  8567. 8003a68: 687b ldr r3, [r7, #4]
  8568. 8003a6a: 69db ldr r3, [r3, #28]
  8569. 8003a6c: 2b01 cmp r3, #1
  8570. 8003a6e: d101 bne.n 8003a74 <HAL_RCC_OscConfig+0x4c4>
  8571. {
  8572. return HAL_ERROR;
  8573. 8003a70: 2301 movs r3, #1
  8574. 8003a72: e013 b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8575. }
  8576. else
  8577. {
  8578. /* Do not return HAL_ERROR if request repeats the current configuration */
  8579. pll_config = RCC->CFGR;
  8580. 8003a74: 4b0b ldr r3, [pc, #44] ; (8003aa4 <HAL_RCC_OscConfig+0x4f4>)
  8581. 8003a76: 685b ldr r3, [r3, #4]
  8582. 8003a78: 60fb str r3, [r7, #12]
  8583. if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
  8584. 8003a7a: 68fb ldr r3, [r7, #12]
  8585. 8003a7c: f403 3280 and.w r2, r3, #65536 ; 0x10000
  8586. 8003a80: 687b ldr r3, [r7, #4]
  8587. 8003a82: 6a1b ldr r3, [r3, #32]
  8588. 8003a84: 429a cmp r2, r3
  8589. 8003a86: d106 bne.n 8003a96 <HAL_RCC_OscConfig+0x4e6>
  8590. (READ_BIT(pll_config, RCC_CFGR_PLLMULL) != RCC_OscInitStruct->PLL.PLLMUL))
  8591. 8003a88: 68fb ldr r3, [r7, #12]
  8592. 8003a8a: f403 1270 and.w r2, r3, #3932160 ; 0x3c0000
  8593. 8003a8e: 687b ldr r3, [r7, #4]
  8594. 8003a90: 6a5b ldr r3, [r3, #36] ; 0x24
  8595. if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
  8596. 8003a92: 429a cmp r2, r3
  8597. 8003a94: d001 beq.n 8003a9a <HAL_RCC_OscConfig+0x4ea>
  8598. {
  8599. return HAL_ERROR;
  8600. 8003a96: 2301 movs r3, #1
  8601. 8003a98: e000 b.n 8003a9c <HAL_RCC_OscConfig+0x4ec>
  8602. }
  8603. }
  8604. }
  8605. }
  8606. return HAL_OK;
  8607. 8003a9a: 2300 movs r3, #0
  8608. }
  8609. 8003a9c: 4618 mov r0, r3
  8610. 8003a9e: 3718 adds r7, #24
  8611. 8003aa0: 46bd mov sp, r7
  8612. 8003aa2: bd80 pop {r7, pc}
  8613. 8003aa4: 40021000 .word 0x40021000
  8614. 8003aa8: 40007000 .word 0x40007000
  8615. 8003aac: 42420060 .word 0x42420060
  8616. 08003ab0 <HAL_RCC_ClockConfig>:
  8617. * You can use @ref HAL_RCC_GetClockConfig() function to know which clock is
  8618. * currently used as system clock source.
  8619. * @retval HAL status
  8620. */
  8621. HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
  8622. {
  8623. 8003ab0: b580 push {r7, lr}
  8624. 8003ab2: b084 sub sp, #16
  8625. 8003ab4: af00 add r7, sp, #0
  8626. 8003ab6: 6078 str r0, [r7, #4]
  8627. 8003ab8: 6039 str r1, [r7, #0]
  8628. uint32_t tickstart;
  8629. /* Check Null pointer */
  8630. if (RCC_ClkInitStruct == NULL)
  8631. 8003aba: 687b ldr r3, [r7, #4]
  8632. 8003abc: 2b00 cmp r3, #0
  8633. 8003abe: d101 bne.n 8003ac4 <HAL_RCC_ClockConfig+0x14>
  8634. {
  8635. return HAL_ERROR;
  8636. 8003ac0: 2301 movs r3, #1
  8637. 8003ac2: e0a0 b.n 8003c06 <HAL_RCC_ClockConfig+0x156>
  8638. }
  8639. }
  8640. #endif /* FLASH_ACR_LATENCY */
  8641. /*-------------------------- HCLK Configuration --------------------------*/
  8642. if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
  8643. 8003ac4: 687b ldr r3, [r7, #4]
  8644. 8003ac6: 681b ldr r3, [r3, #0]
  8645. 8003ac8: f003 0302 and.w r3, r3, #2
  8646. 8003acc: 2b00 cmp r3, #0
  8647. 8003ace: d020 beq.n 8003b12 <HAL_RCC_ClockConfig+0x62>
  8648. {
  8649. /* Set the highest APBx dividers in order to ensure that we do not go through
  8650. a non-spec phase whatever we decrease or increase HCLK. */
  8651. if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
  8652. 8003ad0: 687b ldr r3, [r7, #4]
  8653. 8003ad2: 681b ldr r3, [r3, #0]
  8654. 8003ad4: f003 0304 and.w r3, r3, #4
  8655. 8003ad8: 2b00 cmp r3, #0
  8656. 8003ada: d005 beq.n 8003ae8 <HAL_RCC_ClockConfig+0x38>
  8657. {
  8658. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
  8659. 8003adc: 4b4c ldr r3, [pc, #304] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8660. 8003ade: 685b ldr r3, [r3, #4]
  8661. 8003ae0: 4a4b ldr r2, [pc, #300] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8662. 8003ae2: f443 63e0 orr.w r3, r3, #1792 ; 0x700
  8663. 8003ae6: 6053 str r3, [r2, #4]
  8664. }
  8665. if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
  8666. 8003ae8: 687b ldr r3, [r7, #4]
  8667. 8003aea: 681b ldr r3, [r3, #0]
  8668. 8003aec: f003 0308 and.w r3, r3, #8
  8669. 8003af0: 2b00 cmp r3, #0
  8670. 8003af2: d005 beq.n 8003b00 <HAL_RCC_ClockConfig+0x50>
  8671. {
  8672. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
  8673. 8003af4: 4b46 ldr r3, [pc, #280] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8674. 8003af6: 685b ldr r3, [r3, #4]
  8675. 8003af8: 4a45 ldr r2, [pc, #276] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8676. 8003afa: f443 5360 orr.w r3, r3, #14336 ; 0x3800
  8677. 8003afe: 6053 str r3, [r2, #4]
  8678. }
  8679. /* Set the new HCLK clock divider */
  8680. assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));
  8681. MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);
  8682. 8003b00: 4b43 ldr r3, [pc, #268] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8683. 8003b02: 685b ldr r3, [r3, #4]
  8684. 8003b04: f023 02f0 bic.w r2, r3, #240 ; 0xf0
  8685. 8003b08: 687b ldr r3, [r7, #4]
  8686. 8003b0a: 689b ldr r3, [r3, #8]
  8687. 8003b0c: 4940 ldr r1, [pc, #256] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8688. 8003b0e: 4313 orrs r3, r2
  8689. 8003b10: 604b str r3, [r1, #4]
  8690. }
  8691. /*------------------------- SYSCLK Configuration ---------------------------*/
  8692. if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
  8693. 8003b12: 687b ldr r3, [r7, #4]
  8694. 8003b14: 681b ldr r3, [r3, #0]
  8695. 8003b16: f003 0301 and.w r3, r3, #1
  8696. 8003b1a: 2b00 cmp r3, #0
  8697. 8003b1c: d040 beq.n 8003ba0 <HAL_RCC_ClockConfig+0xf0>
  8698. {
  8699. assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
  8700. /* HSE is selected as System Clock Source */
  8701. if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
  8702. 8003b1e: 687b ldr r3, [r7, #4]
  8703. 8003b20: 685b ldr r3, [r3, #4]
  8704. 8003b22: 2b01 cmp r3, #1
  8705. 8003b24: d107 bne.n 8003b36 <HAL_RCC_ClockConfig+0x86>
  8706. {
  8707. /* Check the HSE ready flag */
  8708. if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
  8709. 8003b26: 4b3a ldr r3, [pc, #232] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8710. 8003b28: 681b ldr r3, [r3, #0]
  8711. 8003b2a: f403 3300 and.w r3, r3, #131072 ; 0x20000
  8712. 8003b2e: 2b00 cmp r3, #0
  8713. 8003b30: d115 bne.n 8003b5e <HAL_RCC_ClockConfig+0xae>
  8714. {
  8715. return HAL_ERROR;
  8716. 8003b32: 2301 movs r3, #1
  8717. 8003b34: e067 b.n 8003c06 <HAL_RCC_ClockConfig+0x156>
  8718. }
  8719. }
  8720. /* PLL is selected as System Clock Source */
  8721. else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
  8722. 8003b36: 687b ldr r3, [r7, #4]
  8723. 8003b38: 685b ldr r3, [r3, #4]
  8724. 8003b3a: 2b02 cmp r3, #2
  8725. 8003b3c: d107 bne.n 8003b4e <HAL_RCC_ClockConfig+0x9e>
  8726. {
  8727. /* Check the PLL ready flag */
  8728. if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
  8729. 8003b3e: 4b34 ldr r3, [pc, #208] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8730. 8003b40: 681b ldr r3, [r3, #0]
  8731. 8003b42: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  8732. 8003b46: 2b00 cmp r3, #0
  8733. 8003b48: d109 bne.n 8003b5e <HAL_RCC_ClockConfig+0xae>
  8734. {
  8735. return HAL_ERROR;
  8736. 8003b4a: 2301 movs r3, #1
  8737. 8003b4c: e05b b.n 8003c06 <HAL_RCC_ClockConfig+0x156>
  8738. }
  8739. /* HSI is selected as System Clock Source */
  8740. else
  8741. {
  8742. /* Check the HSI ready flag */
  8743. if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
  8744. 8003b4e: 4b30 ldr r3, [pc, #192] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8745. 8003b50: 681b ldr r3, [r3, #0]
  8746. 8003b52: f003 0302 and.w r3, r3, #2
  8747. 8003b56: 2b00 cmp r3, #0
  8748. 8003b58: d101 bne.n 8003b5e <HAL_RCC_ClockConfig+0xae>
  8749. {
  8750. return HAL_ERROR;
  8751. 8003b5a: 2301 movs r3, #1
  8752. 8003b5c: e053 b.n 8003c06 <HAL_RCC_ClockConfig+0x156>
  8753. }
  8754. }
  8755. __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource);
  8756. 8003b5e: 4b2c ldr r3, [pc, #176] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8757. 8003b60: 685b ldr r3, [r3, #4]
  8758. 8003b62: f023 0203 bic.w r2, r3, #3
  8759. 8003b66: 687b ldr r3, [r7, #4]
  8760. 8003b68: 685b ldr r3, [r3, #4]
  8761. 8003b6a: 4929 ldr r1, [pc, #164] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8762. 8003b6c: 4313 orrs r3, r2
  8763. 8003b6e: 604b str r3, [r1, #4]
  8764. /* Get Start Tick */
  8765. tickstart = HAL_GetTick();
  8766. 8003b70: f7fe f92c bl 8001dcc <HAL_GetTick>
  8767. 8003b74: 60f8 str r0, [r7, #12]
  8768. while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
  8769. 8003b76: e00a b.n 8003b8e <HAL_RCC_ClockConfig+0xde>
  8770. {
  8771. if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
  8772. 8003b78: f7fe f928 bl 8001dcc <HAL_GetTick>
  8773. 8003b7c: 4602 mov r2, r0
  8774. 8003b7e: 68fb ldr r3, [r7, #12]
  8775. 8003b80: 1ad3 subs r3, r2, r3
  8776. 8003b82: f241 3288 movw r2, #5000 ; 0x1388
  8777. 8003b86: 4293 cmp r3, r2
  8778. 8003b88: d901 bls.n 8003b8e <HAL_RCC_ClockConfig+0xde>
  8779. {
  8780. return HAL_TIMEOUT;
  8781. 8003b8a: 2303 movs r3, #3
  8782. 8003b8c: e03b b.n 8003c06 <HAL_RCC_ClockConfig+0x156>
  8783. while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
  8784. 8003b8e: 4b20 ldr r3, [pc, #128] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8785. 8003b90: 685b ldr r3, [r3, #4]
  8786. 8003b92: f003 020c and.w r2, r3, #12
  8787. 8003b96: 687b ldr r3, [r7, #4]
  8788. 8003b98: 685b ldr r3, [r3, #4]
  8789. 8003b9a: 009b lsls r3, r3, #2
  8790. 8003b9c: 429a cmp r2, r3
  8791. 8003b9e: d1eb bne.n 8003b78 <HAL_RCC_ClockConfig+0xc8>
  8792. }
  8793. }
  8794. #endif /* FLASH_ACR_LATENCY */
  8795. /*-------------------------- PCLK1 Configuration ---------------------------*/
  8796. if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
  8797. 8003ba0: 687b ldr r3, [r7, #4]
  8798. 8003ba2: 681b ldr r3, [r3, #0]
  8799. 8003ba4: f003 0304 and.w r3, r3, #4
  8800. 8003ba8: 2b00 cmp r3, #0
  8801. 8003baa: d008 beq.n 8003bbe <HAL_RCC_ClockConfig+0x10e>
  8802. {
  8803. assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
  8804. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
  8805. 8003bac: 4b18 ldr r3, [pc, #96] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8806. 8003bae: 685b ldr r3, [r3, #4]
  8807. 8003bb0: f423 62e0 bic.w r2, r3, #1792 ; 0x700
  8808. 8003bb4: 687b ldr r3, [r7, #4]
  8809. 8003bb6: 68db ldr r3, [r3, #12]
  8810. 8003bb8: 4915 ldr r1, [pc, #84] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8811. 8003bba: 4313 orrs r3, r2
  8812. 8003bbc: 604b str r3, [r1, #4]
  8813. }
  8814. /*-------------------------- PCLK2 Configuration ---------------------------*/
  8815. if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
  8816. 8003bbe: 687b ldr r3, [r7, #4]
  8817. 8003bc0: 681b ldr r3, [r3, #0]
  8818. 8003bc2: f003 0308 and.w r3, r3, #8
  8819. 8003bc6: 2b00 cmp r3, #0
  8820. 8003bc8: d009 beq.n 8003bde <HAL_RCC_ClockConfig+0x12e>
  8821. {
  8822. assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
  8823. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
  8824. 8003bca: 4b11 ldr r3, [pc, #68] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8825. 8003bcc: 685b ldr r3, [r3, #4]
  8826. 8003bce: f423 5260 bic.w r2, r3, #14336 ; 0x3800
  8827. 8003bd2: 687b ldr r3, [r7, #4]
  8828. 8003bd4: 691b ldr r3, [r3, #16]
  8829. 8003bd6: 00db lsls r3, r3, #3
  8830. 8003bd8: 490d ldr r1, [pc, #52] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8831. 8003bda: 4313 orrs r3, r2
  8832. 8003bdc: 604b str r3, [r1, #4]
  8833. }
  8834. /* Update the SystemCoreClock global variable */
  8835. SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos];
  8836. 8003bde: f000 f81f bl 8003c20 <HAL_RCC_GetSysClockFreq>
  8837. 8003be2: 4601 mov r1, r0
  8838. 8003be4: 4b0a ldr r3, [pc, #40] ; (8003c10 <HAL_RCC_ClockConfig+0x160>)
  8839. 8003be6: 685b ldr r3, [r3, #4]
  8840. 8003be8: 091b lsrs r3, r3, #4
  8841. 8003bea: f003 030f and.w r3, r3, #15
  8842. 8003bee: 4a09 ldr r2, [pc, #36] ; (8003c14 <HAL_RCC_ClockConfig+0x164>)
  8843. 8003bf0: 5cd3 ldrb r3, [r2, r3]
  8844. 8003bf2: fa21 f303 lsr.w r3, r1, r3
  8845. 8003bf6: 4a08 ldr r2, [pc, #32] ; (8003c18 <HAL_RCC_ClockConfig+0x168>)
  8846. 8003bf8: 6013 str r3, [r2, #0]
  8847. /* Configure the source of time base considering new system clocks settings*/
  8848. HAL_InitTick(uwTickPrio);
  8849. 8003bfa: 4b08 ldr r3, [pc, #32] ; (8003c1c <HAL_RCC_ClockConfig+0x16c>)
  8850. 8003bfc: 681b ldr r3, [r3, #0]
  8851. 8003bfe: 4618 mov r0, r3
  8852. 8003c00: f002 f876 bl 8005cf0 <HAL_InitTick>
  8853. return HAL_OK;
  8854. 8003c04: 2300 movs r3, #0
  8855. }
  8856. 8003c06: 4618 mov r0, r3
  8857. 8003c08: 3710 adds r7, #16
  8858. 8003c0a: 46bd mov sp, r7
  8859. 8003c0c: bd80 pop {r7, pc}
  8860. 8003c0e: bf00 nop
  8861. 8003c10: 40021000 .word 0x40021000
  8862. 8003c14: 08008cec .word 0x08008cec
  8863. 8003c18: 20000008 .word 0x20000008
  8864. 8003c1c: 20000000 .word 0x20000000
  8865. 08003c20 <HAL_RCC_GetSysClockFreq>:
  8866. * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect.
  8867. *
  8868. * @retval SYSCLK frequency
  8869. */
  8870. uint32_t HAL_RCC_GetSysClockFreq(void)
  8871. {
  8872. 8003c20: b490 push {r4, r7}
  8873. 8003c22: b08e sub sp, #56 ; 0x38
  8874. 8003c24: af00 add r7, sp, #0
  8875. #if defined(RCC_CFGR2_PREDIV1SRC)
  8876. const uint8_t aPLLMULFactorTable[14] = {0, 0, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 13};
  8877. const uint8_t aPredivFactorTable[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
  8878. #else
  8879. const uint8_t aPLLMULFactorTable[16] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16};
  8880. 8003c26: 4b2b ldr r3, [pc, #172] ; (8003cd4 <HAL_RCC_GetSysClockFreq+0xb4>)
  8881. 8003c28: f107 0414 add.w r4, r7, #20
  8882. 8003c2c: cb0f ldmia r3, {r0, r1, r2, r3}
  8883. 8003c2e: e884 000f stmia.w r4, {r0, r1, r2, r3}
  8884. #if defined(RCC_CFGR2_PREDIV1)
  8885. const uint8_t aPredivFactorTable[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
  8886. 8003c32: 4b29 ldr r3, [pc, #164] ; (8003cd8 <HAL_RCC_GetSysClockFreq+0xb8>)
  8887. 8003c34: 1d3c adds r4, r7, #4
  8888. 8003c36: cb0f ldmia r3, {r0, r1, r2, r3}
  8889. 8003c38: e884 000f stmia.w r4, {r0, r1, r2, r3}
  8890. #else
  8891. const uint8_t aPredivFactorTable[2] = {1, 2};
  8892. #endif /*RCC_CFGR2_PREDIV1*/
  8893. #endif
  8894. uint32_t tmpreg = 0U, prediv = 0U, pllclk = 0U, pllmul = 0U;
  8895. 8003c3c: 2300 movs r3, #0
  8896. 8003c3e: 62fb str r3, [r7, #44] ; 0x2c
  8897. 8003c40: 2300 movs r3, #0
  8898. 8003c42: 62bb str r3, [r7, #40] ; 0x28
  8899. 8003c44: 2300 movs r3, #0
  8900. 8003c46: 637b str r3, [r7, #52] ; 0x34
  8901. 8003c48: 2300 movs r3, #0
  8902. 8003c4a: 627b str r3, [r7, #36] ; 0x24
  8903. uint32_t sysclockfreq = 0U;
  8904. 8003c4c: 2300 movs r3, #0
  8905. 8003c4e: 633b str r3, [r7, #48] ; 0x30
  8906. #if defined(RCC_CFGR2_PREDIV1SRC)
  8907. uint32_t prediv2 = 0U, pll2mul = 0U;
  8908. #endif /*RCC_CFGR2_PREDIV1SRC*/
  8909. tmpreg = RCC->CFGR;
  8910. 8003c50: 4b22 ldr r3, [pc, #136] ; (8003cdc <HAL_RCC_GetSysClockFreq+0xbc>)
  8911. 8003c52: 685b ldr r3, [r3, #4]
  8912. 8003c54: 62fb str r3, [r7, #44] ; 0x2c
  8913. /* Get SYSCLK source -------------------------------------------------------*/
  8914. switch (tmpreg & RCC_CFGR_SWS)
  8915. 8003c56: 6afb ldr r3, [r7, #44] ; 0x2c
  8916. 8003c58: f003 030c and.w r3, r3, #12
  8917. 8003c5c: 2b04 cmp r3, #4
  8918. 8003c5e: d002 beq.n 8003c66 <HAL_RCC_GetSysClockFreq+0x46>
  8919. 8003c60: 2b08 cmp r3, #8
  8920. 8003c62: d003 beq.n 8003c6c <HAL_RCC_GetSysClockFreq+0x4c>
  8921. 8003c64: e02c b.n 8003cc0 <HAL_RCC_GetSysClockFreq+0xa0>
  8922. {
  8923. case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */
  8924. {
  8925. sysclockfreq = HSE_VALUE;
  8926. 8003c66: 4b1e ldr r3, [pc, #120] ; (8003ce0 <HAL_RCC_GetSysClockFreq+0xc0>)
  8927. 8003c68: 633b str r3, [r7, #48] ; 0x30
  8928. break;
  8929. 8003c6a: e02c b.n 8003cc6 <HAL_RCC_GetSysClockFreq+0xa6>
  8930. }
  8931. case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */
  8932. {
  8933. pllmul = aPLLMULFactorTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMULL) >> RCC_CFGR_PLLMULL_Pos];
  8934. 8003c6c: 6afb ldr r3, [r7, #44] ; 0x2c
  8935. 8003c6e: 0c9b lsrs r3, r3, #18
  8936. 8003c70: f003 030f and.w r3, r3, #15
  8937. 8003c74: f107 0238 add.w r2, r7, #56 ; 0x38
  8938. 8003c78: 4413 add r3, r2
  8939. 8003c7a: f813 3c24 ldrb.w r3, [r3, #-36]
  8940. 8003c7e: 627b str r3, [r7, #36] ; 0x24
  8941. if ((tmpreg & RCC_CFGR_PLLSRC) != RCC_PLLSOURCE_HSI_DIV2)
  8942. 8003c80: 6afb ldr r3, [r7, #44] ; 0x2c
  8943. 8003c82: f403 3380 and.w r3, r3, #65536 ; 0x10000
  8944. 8003c86: 2b00 cmp r3, #0
  8945. 8003c88: d012 beq.n 8003cb0 <HAL_RCC_GetSysClockFreq+0x90>
  8946. {
  8947. #if defined(RCC_CFGR2_PREDIV1)
  8948. prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV1) >> RCC_CFGR2_PREDIV1_Pos];
  8949. 8003c8a: 4b14 ldr r3, [pc, #80] ; (8003cdc <HAL_RCC_GetSysClockFreq+0xbc>)
  8950. 8003c8c: 6adb ldr r3, [r3, #44] ; 0x2c
  8951. 8003c8e: f003 030f and.w r3, r3, #15
  8952. 8003c92: f107 0238 add.w r2, r7, #56 ; 0x38
  8953. 8003c96: 4413 add r3, r2
  8954. 8003c98: f813 3c34 ldrb.w r3, [r3, #-52]
  8955. 8003c9c: 62bb str r3, [r7, #40] ; 0x28
  8956. {
  8957. pllclk = pllclk / 2;
  8958. }
  8959. #else
  8960. /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV1 * PLLMUL */
  8961. pllclk = (uint32_t)((HSE_VALUE * pllmul) / prediv);
  8962. 8003c9e: 6a7b ldr r3, [r7, #36] ; 0x24
  8963. 8003ca0: 4a0f ldr r2, [pc, #60] ; (8003ce0 <HAL_RCC_GetSysClockFreq+0xc0>)
  8964. 8003ca2: fb02 f203 mul.w r2, r2, r3
  8965. 8003ca6: 6abb ldr r3, [r7, #40] ; 0x28
  8966. 8003ca8: fbb2 f3f3 udiv r3, r2, r3
  8967. 8003cac: 637b str r3, [r7, #52] ; 0x34
  8968. 8003cae: e004 b.n 8003cba <HAL_RCC_GetSysClockFreq+0x9a>
  8969. #endif /*RCC_CFGR2_PREDIV1SRC*/
  8970. }
  8971. else
  8972. {
  8973. /* HSI used as PLL clock source : PLLCLK = HSI/2 * PLLMUL */
  8974. pllclk = (uint32_t)((HSI_VALUE >> 1) * pllmul);
  8975. 8003cb0: 6a7b ldr r3, [r7, #36] ; 0x24
  8976. 8003cb2: 4a0c ldr r2, [pc, #48] ; (8003ce4 <HAL_RCC_GetSysClockFreq+0xc4>)
  8977. 8003cb4: fb02 f303 mul.w r3, r2, r3
  8978. 8003cb8: 637b str r3, [r7, #52] ; 0x34
  8979. }
  8980. sysclockfreq = pllclk;
  8981. 8003cba: 6b7b ldr r3, [r7, #52] ; 0x34
  8982. 8003cbc: 633b str r3, [r7, #48] ; 0x30
  8983. break;
  8984. 8003cbe: e002 b.n 8003cc6 <HAL_RCC_GetSysClockFreq+0xa6>
  8985. }
  8986. case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
  8987. default: /* HSI used as system clock */
  8988. {
  8989. sysclockfreq = HSI_VALUE;
  8990. 8003cc0: 4b07 ldr r3, [pc, #28] ; (8003ce0 <HAL_RCC_GetSysClockFreq+0xc0>)
  8991. 8003cc2: 633b str r3, [r7, #48] ; 0x30
  8992. break;
  8993. 8003cc4: bf00 nop
  8994. }
  8995. }
  8996. return sysclockfreq;
  8997. 8003cc6: 6b3b ldr r3, [r7, #48] ; 0x30
  8998. }
  8999. 8003cc8: 4618 mov r0, r3
  9000. 8003cca: 3738 adds r7, #56 ; 0x38
  9001. 8003ccc: 46bd mov sp, r7
  9002. 8003cce: bc90 pop {r4, r7}
  9003. 8003cd0: 4770 bx lr
  9004. 8003cd2: bf00 nop
  9005. 8003cd4: 08008c40 .word 0x08008c40
  9006. 8003cd8: 08008c50 .word 0x08008c50
  9007. 8003cdc: 40021000 .word 0x40021000
  9008. 8003ce0: 007a1200 .word 0x007a1200
  9009. 8003ce4: 003d0900 .word 0x003d0900
  9010. 08003ce8 <HAL_RCC_GetHCLKFreq>:
  9011. * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency
  9012. * and updated within this function
  9013. * @retval HCLK frequency
  9014. */
  9015. uint32_t HAL_RCC_GetHCLKFreq(void)
  9016. {
  9017. 8003ce8: b480 push {r7}
  9018. 8003cea: af00 add r7, sp, #0
  9019. return SystemCoreClock;
  9020. 8003cec: 4b02 ldr r3, [pc, #8] ; (8003cf8 <HAL_RCC_GetHCLKFreq+0x10>)
  9021. 8003cee: 681b ldr r3, [r3, #0]
  9022. }
  9023. 8003cf0: 4618 mov r0, r3
  9024. 8003cf2: 46bd mov sp, r7
  9025. 8003cf4: bc80 pop {r7}
  9026. 8003cf6: 4770 bx lr
  9027. 8003cf8: 20000008 .word 0x20000008
  9028. 08003cfc <HAL_RCC_GetPCLK1Freq>:
  9029. * @note Each time PCLK1 changes, this function must be called to update the
  9030. * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect.
  9031. * @retval PCLK1 frequency
  9032. */
  9033. uint32_t HAL_RCC_GetPCLK1Freq(void)
  9034. {
  9035. 8003cfc: b580 push {r7, lr}
  9036. 8003cfe: af00 add r7, sp, #0
  9037. /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
  9038. return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]);
  9039. 8003d00: f7ff fff2 bl 8003ce8 <HAL_RCC_GetHCLKFreq>
  9040. 8003d04: 4601 mov r1, r0
  9041. 8003d06: 4b05 ldr r3, [pc, #20] ; (8003d1c <HAL_RCC_GetPCLK1Freq+0x20>)
  9042. 8003d08: 685b ldr r3, [r3, #4]
  9043. 8003d0a: 0a1b lsrs r3, r3, #8
  9044. 8003d0c: f003 0307 and.w r3, r3, #7
  9045. 8003d10: 4a03 ldr r2, [pc, #12] ; (8003d20 <HAL_RCC_GetPCLK1Freq+0x24>)
  9046. 8003d12: 5cd3 ldrb r3, [r2, r3]
  9047. 8003d14: fa21 f303 lsr.w r3, r1, r3
  9048. }
  9049. 8003d18: 4618 mov r0, r3
  9050. 8003d1a: bd80 pop {r7, pc}
  9051. 8003d1c: 40021000 .word 0x40021000
  9052. 8003d20: 08008cfc .word 0x08008cfc
  9053. 08003d24 <HAL_RCC_GetPCLK2Freq>:
  9054. * @note Each time PCLK2 changes, this function must be called to update the
  9055. * right PCLK2 value. Otherwise, any configuration based on this function will be incorrect.
  9056. * @retval PCLK2 frequency
  9057. */
  9058. uint32_t HAL_RCC_GetPCLK2Freq(void)
  9059. {
  9060. 8003d24: b580 push {r7, lr}
  9061. 8003d26: af00 add r7, sp, #0
  9062. /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
  9063. return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]);
  9064. 8003d28: f7ff ffde bl 8003ce8 <HAL_RCC_GetHCLKFreq>
  9065. 8003d2c: 4601 mov r1, r0
  9066. 8003d2e: 4b05 ldr r3, [pc, #20] ; (8003d44 <HAL_RCC_GetPCLK2Freq+0x20>)
  9067. 8003d30: 685b ldr r3, [r3, #4]
  9068. 8003d32: 0adb lsrs r3, r3, #11
  9069. 8003d34: f003 0307 and.w r3, r3, #7
  9070. 8003d38: 4a03 ldr r2, [pc, #12] ; (8003d48 <HAL_RCC_GetPCLK2Freq+0x24>)
  9071. 8003d3a: 5cd3 ldrb r3, [r2, r3]
  9072. 8003d3c: fa21 f303 lsr.w r3, r1, r3
  9073. }
  9074. 8003d40: 4618 mov r0, r3
  9075. 8003d42: bd80 pop {r7, pc}
  9076. 8003d44: 40021000 .word 0x40021000
  9077. 8003d48: 08008cfc .word 0x08008cfc
  9078. 08003d4c <HAL_RCC_GetClockConfig>:
  9079. * contains the current clock configuration.
  9080. * @param pFLatency Pointer on the Flash Latency.
  9081. * @retval None
  9082. */
  9083. void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency)
  9084. {
  9085. 8003d4c: b480 push {r7}
  9086. 8003d4e: b083 sub sp, #12
  9087. 8003d50: af00 add r7, sp, #0
  9088. 8003d52: 6078 str r0, [r7, #4]
  9089. 8003d54: 6039 str r1, [r7, #0]
  9090. /* Check the parameters */
  9091. assert_param(RCC_ClkInitStruct != NULL);
  9092. assert_param(pFLatency != NULL);
  9093. /* Set all possible values for the Clock type parameter --------------------*/
  9094. RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
  9095. 8003d56: 687b ldr r3, [r7, #4]
  9096. 8003d58: 220f movs r2, #15
  9097. 8003d5a: 601a str r2, [r3, #0]
  9098. /* Get the SYSCLK configuration --------------------------------------------*/
  9099. RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW);
  9100. 8003d5c: 4b10 ldr r3, [pc, #64] ; (8003da0 <HAL_RCC_GetClockConfig+0x54>)
  9101. 8003d5e: 685b ldr r3, [r3, #4]
  9102. 8003d60: f003 0203 and.w r2, r3, #3
  9103. 8003d64: 687b ldr r3, [r7, #4]
  9104. 8003d66: 605a str r2, [r3, #4]
  9105. /* Get the HCLK configuration ----------------------------------------------*/
  9106. RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE);
  9107. 8003d68: 4b0d ldr r3, [pc, #52] ; (8003da0 <HAL_RCC_GetClockConfig+0x54>)
  9108. 8003d6a: 685b ldr r3, [r3, #4]
  9109. 8003d6c: f003 02f0 and.w r2, r3, #240 ; 0xf0
  9110. 8003d70: 687b ldr r3, [r7, #4]
  9111. 8003d72: 609a str r2, [r3, #8]
  9112. /* Get the APB1 configuration ----------------------------------------------*/
  9113. RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE1);
  9114. 8003d74: 4b0a ldr r3, [pc, #40] ; (8003da0 <HAL_RCC_GetClockConfig+0x54>)
  9115. 8003d76: 685b ldr r3, [r3, #4]
  9116. 8003d78: f403 62e0 and.w r2, r3, #1792 ; 0x700
  9117. 8003d7c: 687b ldr r3, [r7, #4]
  9118. 8003d7e: 60da str r2, [r3, #12]
  9119. /* Get the APB2 configuration ----------------------------------------------*/
  9120. RCC_ClkInitStruct->APB2CLKDivider = (uint32_t)((RCC->CFGR & RCC_CFGR_PPRE2) >> 3);
  9121. 8003d80: 4b07 ldr r3, [pc, #28] ; (8003da0 <HAL_RCC_GetClockConfig+0x54>)
  9122. 8003d82: 685b ldr r3, [r3, #4]
  9123. 8003d84: 08db lsrs r3, r3, #3
  9124. 8003d86: f403 62e0 and.w r2, r3, #1792 ; 0x700
  9125. 8003d8a: 687b ldr r3, [r7, #4]
  9126. 8003d8c: 611a str r2, [r3, #16]
  9127. #if defined(FLASH_ACR_LATENCY)
  9128. /* Get the Flash Wait State (Latency) configuration ------------------------*/
  9129. *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY);
  9130. #else
  9131. /* For VALUE lines devices, only LATENCY_0 can be set*/
  9132. *pFLatency = (uint32_t)FLASH_LATENCY_0;
  9133. 8003d8e: 683b ldr r3, [r7, #0]
  9134. 8003d90: 2200 movs r2, #0
  9135. 8003d92: 601a str r2, [r3, #0]
  9136. #endif
  9137. }
  9138. 8003d94: bf00 nop
  9139. 8003d96: 370c adds r7, #12
  9140. 8003d98: 46bd mov sp, r7
  9141. 8003d9a: bc80 pop {r7}
  9142. 8003d9c: 4770 bx lr
  9143. 8003d9e: bf00 nop
  9144. 8003da0: 40021000 .word 0x40021000
  9145. 08003da4 <RCC_Delay>:
  9146. * @brief This function provides delay (in milliseconds) based on CPU cycles method.
  9147. * @param mdelay: specifies the delay time length, in milliseconds.
  9148. * @retval None
  9149. */
  9150. static void RCC_Delay(uint32_t mdelay)
  9151. {
  9152. 8003da4: b480 push {r7}
  9153. 8003da6: b085 sub sp, #20
  9154. 8003da8: af00 add r7, sp, #0
  9155. 8003daa: 6078 str r0, [r7, #4]
  9156. __IO uint32_t Delay = mdelay * (SystemCoreClock / 8U / 1000U);
  9157. 8003dac: 4b0a ldr r3, [pc, #40] ; (8003dd8 <RCC_Delay+0x34>)
  9158. 8003dae: 681b ldr r3, [r3, #0]
  9159. 8003db0: 4a0a ldr r2, [pc, #40] ; (8003ddc <RCC_Delay+0x38>)
  9160. 8003db2: fba2 2303 umull r2, r3, r2, r3
  9161. 8003db6: 0a5b lsrs r3, r3, #9
  9162. 8003db8: 687a ldr r2, [r7, #4]
  9163. 8003dba: fb02 f303 mul.w r3, r2, r3
  9164. 8003dbe: 60fb str r3, [r7, #12]
  9165. do
  9166. {
  9167. __NOP();
  9168. 8003dc0: bf00 nop
  9169. }
  9170. while (Delay --);
  9171. 8003dc2: 68fb ldr r3, [r7, #12]
  9172. 8003dc4: 1e5a subs r2, r3, #1
  9173. 8003dc6: 60fa str r2, [r7, #12]
  9174. 8003dc8: 2b00 cmp r3, #0
  9175. 8003dca: d1f9 bne.n 8003dc0 <RCC_Delay+0x1c>
  9176. }
  9177. 8003dcc: bf00 nop
  9178. 8003dce: 3714 adds r7, #20
  9179. 8003dd0: 46bd mov sp, r7
  9180. 8003dd2: bc80 pop {r7}
  9181. 8003dd4: 4770 bx lr
  9182. 8003dd6: bf00 nop
  9183. 8003dd8: 20000008 .word 0x20000008
  9184. 8003ddc: 10624dd3 .word 0x10624dd3
  9185. 08003de0 <HAL_RCCEx_PeriphCLKConfig>:
  9186. * manually disable it.
  9187. *
  9188. * @retval HAL status
  9189. */
  9190. HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
  9191. {
  9192. 8003de0: b580 push {r7, lr}
  9193. 8003de2: b086 sub sp, #24
  9194. 8003de4: af00 add r7, sp, #0
  9195. 8003de6: 6078 str r0, [r7, #4]
  9196. uint32_t tickstart = 0U, temp_reg = 0U;
  9197. 8003de8: 2300 movs r3, #0
  9198. 8003dea: 613b str r3, [r7, #16]
  9199. 8003dec: 2300 movs r3, #0
  9200. 8003dee: 60fb str r3, [r7, #12]
  9201. /* Check the parameters */
  9202. assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection));
  9203. /*------------------------------- RTC/LCD Configuration ------------------------*/
  9204. if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC))
  9205. 8003df0: 687b ldr r3, [r7, #4]
  9206. 8003df2: 681b ldr r3, [r3, #0]
  9207. 8003df4: f003 0301 and.w r3, r3, #1
  9208. 8003df8: 2b00 cmp r3, #0
  9209. 8003dfa: d07d beq.n 8003ef8 <HAL_RCCEx_PeriphCLKConfig+0x118>
  9210. {
  9211. /* check for RTC Parameters used to output RTCCLK */
  9212. assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection));
  9213. FlagStatus pwrclkchanged = RESET;
  9214. 8003dfc: 2300 movs r3, #0
  9215. 8003dfe: 75fb strb r3, [r7, #23]
  9216. /* As soon as function is called to change RTC clock source, activation of the
  9217. power domain is done. */
  9218. /* Requires to enable write access to Backup Domain of necessary */
  9219. if (__HAL_RCC_PWR_IS_CLK_DISABLED())
  9220. 8003e00: 4b47 ldr r3, [pc, #284] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9221. 8003e02: 69db ldr r3, [r3, #28]
  9222. 8003e04: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  9223. 8003e08: 2b00 cmp r3, #0
  9224. 8003e0a: d10d bne.n 8003e28 <HAL_RCCEx_PeriphCLKConfig+0x48>
  9225. {
  9226. __HAL_RCC_PWR_CLK_ENABLE();
  9227. 8003e0c: 4b44 ldr r3, [pc, #272] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9228. 8003e0e: 69db ldr r3, [r3, #28]
  9229. 8003e10: 4a43 ldr r2, [pc, #268] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9230. 8003e12: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
  9231. 8003e16: 61d3 str r3, [r2, #28]
  9232. 8003e18: 4b41 ldr r3, [pc, #260] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9233. 8003e1a: 69db ldr r3, [r3, #28]
  9234. 8003e1c: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  9235. 8003e20: 60bb str r3, [r7, #8]
  9236. 8003e22: 68bb ldr r3, [r7, #8]
  9237. pwrclkchanged = SET;
  9238. 8003e24: 2301 movs r3, #1
  9239. 8003e26: 75fb strb r3, [r7, #23]
  9240. }
  9241. if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  9242. 8003e28: 4b3e ldr r3, [pc, #248] ; (8003f24 <HAL_RCCEx_PeriphCLKConfig+0x144>)
  9243. 8003e2a: 681b ldr r3, [r3, #0]
  9244. 8003e2c: f403 7380 and.w r3, r3, #256 ; 0x100
  9245. 8003e30: 2b00 cmp r3, #0
  9246. 8003e32: d118 bne.n 8003e66 <HAL_RCCEx_PeriphCLKConfig+0x86>
  9247. {
  9248. /* Enable write access to Backup domain */
  9249. SET_BIT(PWR->CR, PWR_CR_DBP);
  9250. 8003e34: 4b3b ldr r3, [pc, #236] ; (8003f24 <HAL_RCCEx_PeriphCLKConfig+0x144>)
  9251. 8003e36: 681b ldr r3, [r3, #0]
  9252. 8003e38: 4a3a ldr r2, [pc, #232] ; (8003f24 <HAL_RCCEx_PeriphCLKConfig+0x144>)
  9253. 8003e3a: f443 7380 orr.w r3, r3, #256 ; 0x100
  9254. 8003e3e: 6013 str r3, [r2, #0]
  9255. /* Wait for Backup domain Write protection disable */
  9256. tickstart = HAL_GetTick();
  9257. 8003e40: f7fd ffc4 bl 8001dcc <HAL_GetTick>
  9258. 8003e44: 6138 str r0, [r7, #16]
  9259. while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  9260. 8003e46: e008 b.n 8003e5a <HAL_RCCEx_PeriphCLKConfig+0x7a>
  9261. {
  9262. if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
  9263. 8003e48: f7fd ffc0 bl 8001dcc <HAL_GetTick>
  9264. 8003e4c: 4602 mov r2, r0
  9265. 8003e4e: 693b ldr r3, [r7, #16]
  9266. 8003e50: 1ad3 subs r3, r2, r3
  9267. 8003e52: 2b64 cmp r3, #100 ; 0x64
  9268. 8003e54: d901 bls.n 8003e5a <HAL_RCCEx_PeriphCLKConfig+0x7a>
  9269. {
  9270. return HAL_TIMEOUT;
  9271. 8003e56: 2303 movs r3, #3
  9272. 8003e58: e05e b.n 8003f18 <HAL_RCCEx_PeriphCLKConfig+0x138>
  9273. while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  9274. 8003e5a: 4b32 ldr r3, [pc, #200] ; (8003f24 <HAL_RCCEx_PeriphCLKConfig+0x144>)
  9275. 8003e5c: 681b ldr r3, [r3, #0]
  9276. 8003e5e: f403 7380 and.w r3, r3, #256 ; 0x100
  9277. 8003e62: 2b00 cmp r3, #0
  9278. 8003e64: d0f0 beq.n 8003e48 <HAL_RCCEx_PeriphCLKConfig+0x68>
  9279. }
  9280. }
  9281. }
  9282. /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */
  9283. temp_reg = (RCC->BDCR & RCC_BDCR_RTCSEL);
  9284. 8003e66: 4b2e ldr r3, [pc, #184] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9285. 8003e68: 6a1b ldr r3, [r3, #32]
  9286. 8003e6a: f403 7340 and.w r3, r3, #768 ; 0x300
  9287. 8003e6e: 60fb str r3, [r7, #12]
  9288. if ((temp_reg != 0x00000000U) && (temp_reg != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL)))
  9289. 8003e70: 68fb ldr r3, [r7, #12]
  9290. 8003e72: 2b00 cmp r3, #0
  9291. 8003e74: d02e beq.n 8003ed4 <HAL_RCCEx_PeriphCLKConfig+0xf4>
  9292. 8003e76: 687b ldr r3, [r7, #4]
  9293. 8003e78: 685b ldr r3, [r3, #4]
  9294. 8003e7a: f403 7340 and.w r3, r3, #768 ; 0x300
  9295. 8003e7e: 68fa ldr r2, [r7, #12]
  9296. 8003e80: 429a cmp r2, r3
  9297. 8003e82: d027 beq.n 8003ed4 <HAL_RCCEx_PeriphCLKConfig+0xf4>
  9298. {
  9299. /* Store the content of BDCR register before the reset of Backup Domain */
  9300. temp_reg = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
  9301. 8003e84: 4b26 ldr r3, [pc, #152] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9302. 8003e86: 6a1b ldr r3, [r3, #32]
  9303. 8003e88: f423 7340 bic.w r3, r3, #768 ; 0x300
  9304. 8003e8c: 60fb str r3, [r7, #12]
  9305. /* RTC Clock selection can be changed only if the Backup Domain is reset */
  9306. __HAL_RCC_BACKUPRESET_FORCE();
  9307. 8003e8e: 4b26 ldr r3, [pc, #152] ; (8003f28 <HAL_RCCEx_PeriphCLKConfig+0x148>)
  9308. 8003e90: 2201 movs r2, #1
  9309. 8003e92: 601a str r2, [r3, #0]
  9310. __HAL_RCC_BACKUPRESET_RELEASE();
  9311. 8003e94: 4b24 ldr r3, [pc, #144] ; (8003f28 <HAL_RCCEx_PeriphCLKConfig+0x148>)
  9312. 8003e96: 2200 movs r2, #0
  9313. 8003e98: 601a str r2, [r3, #0]
  9314. /* Restore the Content of BDCR register */
  9315. RCC->BDCR = temp_reg;
  9316. 8003e9a: 4a21 ldr r2, [pc, #132] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9317. 8003e9c: 68fb ldr r3, [r7, #12]
  9318. 8003e9e: 6213 str r3, [r2, #32]
  9319. /* Wait for LSERDY if LSE was enabled */
  9320. if (HAL_IS_BIT_SET(temp_reg, RCC_BDCR_LSEON))
  9321. 8003ea0: 68fb ldr r3, [r7, #12]
  9322. 8003ea2: f003 0301 and.w r3, r3, #1
  9323. 8003ea6: 2b00 cmp r3, #0
  9324. 8003ea8: d014 beq.n 8003ed4 <HAL_RCCEx_PeriphCLKConfig+0xf4>
  9325. {
  9326. /* Get Start Tick */
  9327. tickstart = HAL_GetTick();
  9328. 8003eaa: f7fd ff8f bl 8001dcc <HAL_GetTick>
  9329. 8003eae: 6138 str r0, [r7, #16]
  9330. /* Wait till LSE is ready */
  9331. while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
  9332. 8003eb0: e00a b.n 8003ec8 <HAL_RCCEx_PeriphCLKConfig+0xe8>
  9333. {
  9334. if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
  9335. 8003eb2: f7fd ff8b bl 8001dcc <HAL_GetTick>
  9336. 8003eb6: 4602 mov r2, r0
  9337. 8003eb8: 693b ldr r3, [r7, #16]
  9338. 8003eba: 1ad3 subs r3, r2, r3
  9339. 8003ebc: f241 3288 movw r2, #5000 ; 0x1388
  9340. 8003ec0: 4293 cmp r3, r2
  9341. 8003ec2: d901 bls.n 8003ec8 <HAL_RCCEx_PeriphCLKConfig+0xe8>
  9342. {
  9343. return HAL_TIMEOUT;
  9344. 8003ec4: 2303 movs r3, #3
  9345. 8003ec6: e027 b.n 8003f18 <HAL_RCCEx_PeriphCLKConfig+0x138>
  9346. while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
  9347. 8003ec8: 4b15 ldr r3, [pc, #84] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9348. 8003eca: 6a1b ldr r3, [r3, #32]
  9349. 8003ecc: f003 0302 and.w r3, r3, #2
  9350. 8003ed0: 2b00 cmp r3, #0
  9351. 8003ed2: d0ee beq.n 8003eb2 <HAL_RCCEx_PeriphCLKConfig+0xd2>
  9352. }
  9353. }
  9354. }
  9355. }
  9356. __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);
  9357. 8003ed4: 4b12 ldr r3, [pc, #72] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9358. 8003ed6: 6a1b ldr r3, [r3, #32]
  9359. 8003ed8: f423 7240 bic.w r2, r3, #768 ; 0x300
  9360. 8003edc: 687b ldr r3, [r7, #4]
  9361. 8003ede: 685b ldr r3, [r3, #4]
  9362. 8003ee0: 490f ldr r1, [pc, #60] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9363. 8003ee2: 4313 orrs r3, r2
  9364. 8003ee4: 620b str r3, [r1, #32]
  9365. /* Require to disable power clock if necessary */
  9366. if (pwrclkchanged == SET)
  9367. 8003ee6: 7dfb ldrb r3, [r7, #23]
  9368. 8003ee8: 2b01 cmp r3, #1
  9369. 8003eea: d105 bne.n 8003ef8 <HAL_RCCEx_PeriphCLKConfig+0x118>
  9370. {
  9371. __HAL_RCC_PWR_CLK_DISABLE();
  9372. 8003eec: 4b0c ldr r3, [pc, #48] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9373. 8003eee: 69db ldr r3, [r3, #28]
  9374. 8003ef0: 4a0b ldr r2, [pc, #44] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9375. 8003ef2: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
  9376. 8003ef6: 61d3 str r3, [r2, #28]
  9377. }
  9378. }
  9379. /*------------------------------ ADC clock Configuration ------------------*/
  9380. if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC)
  9381. 8003ef8: 687b ldr r3, [r7, #4]
  9382. 8003efa: 681b ldr r3, [r3, #0]
  9383. 8003efc: f003 0302 and.w r3, r3, #2
  9384. 8003f00: 2b00 cmp r3, #0
  9385. 8003f02: d008 beq.n 8003f16 <HAL_RCCEx_PeriphCLKConfig+0x136>
  9386. {
  9387. /* Check the parameters */
  9388. assert_param(IS_RCC_ADCPLLCLK_DIV(PeriphClkInit->AdcClockSelection));
  9389. /* Configure the ADC clock source */
  9390. __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection);
  9391. 8003f04: 4b06 ldr r3, [pc, #24] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9392. 8003f06: 685b ldr r3, [r3, #4]
  9393. 8003f08: f423 4240 bic.w r2, r3, #49152 ; 0xc000
  9394. 8003f0c: 687b ldr r3, [r7, #4]
  9395. 8003f0e: 689b ldr r3, [r3, #8]
  9396. 8003f10: 4903 ldr r1, [pc, #12] ; (8003f20 <HAL_RCCEx_PeriphCLKConfig+0x140>)
  9397. 8003f12: 4313 orrs r3, r2
  9398. 8003f14: 604b str r3, [r1, #4]
  9399. /* Configure the USB clock source */
  9400. __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection);
  9401. }
  9402. #endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
  9403. return HAL_OK;
  9404. 8003f16: 2300 movs r3, #0
  9405. }
  9406. 8003f18: 4618 mov r0, r3
  9407. 8003f1a: 3718 adds r7, #24
  9408. 8003f1c: 46bd mov sp, r7
  9409. 8003f1e: bd80 pop {r7, pc}
  9410. 8003f20: 40021000 .word 0x40021000
  9411. 8003f24: 40007000 .word 0x40007000
  9412. 8003f28: 42420440 .word 0x42420440
  9413. 08003f2c <HAL_RCCEx_GetPeriphCLKFreq>:
  9414. * @arg @ref RCC_PERIPHCLK_USB USB peripheral clock
  9415. @endif
  9416. * @retval Frequency in Hz (0: means that no available frequency for the peripheral)
  9417. */
  9418. uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk)
  9419. {
  9420. 8003f2c: b580 push {r7, lr}
  9421. 8003f2e: b084 sub sp, #16
  9422. 8003f30: af00 add r7, sp, #0
  9423. 8003f32: 6078 str r0, [r7, #4]
  9424. const uint8_t aPLLMULFactorTable[16] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16};
  9425. const uint8_t aPredivFactorTable[2] = {1, 2};
  9426. uint32_t prediv1 = 0U, pllclk = 0U, pllmul = 0U;
  9427. #endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG */
  9428. uint32_t temp_reg = 0U, frequency = 0U;
  9429. 8003f34: 2300 movs r3, #0
  9430. 8003f36: 60bb str r3, [r7, #8]
  9431. 8003f38: 2300 movs r3, #0
  9432. 8003f3a: 60fb str r3, [r7, #12]
  9433. /* Check the parameters */
  9434. assert_param(IS_RCC_PERIPHCLOCK(PeriphClk));
  9435. switch (PeriphClk)
  9436. 8003f3c: 687b ldr r3, [r7, #4]
  9437. 8003f3e: 2b01 cmp r3, #1
  9438. 8003f40: d002 beq.n 8003f48 <HAL_RCCEx_GetPeriphCLKFreq+0x1c>
  9439. 8003f42: 2b02 cmp r3, #2
  9440. 8003f44: d033 beq.n 8003fae <HAL_RCCEx_GetPeriphCLKFreq+0x82>
  9441. frequency = HAL_RCC_GetPCLK2Freq() / (((__HAL_RCC_GET_ADC_SOURCE() >> RCC_CFGR_ADCPRE_Pos) + 1) * 2);
  9442. break;
  9443. }
  9444. default:
  9445. {
  9446. break;
  9447. 8003f46: e041 b.n 8003fcc <HAL_RCCEx_GetPeriphCLKFreq+0xa0>
  9448. temp_reg = RCC->BDCR;
  9449. 8003f48: 4b23 ldr r3, [pc, #140] ; (8003fd8 <HAL_RCCEx_GetPeriphCLKFreq+0xac>)
  9450. 8003f4a: 6a1b ldr r3, [r3, #32]
  9451. 8003f4c: 60bb str r3, [r7, #8]
  9452. if (((temp_reg & RCC_BDCR_RTCSEL) == RCC_RTCCLKSOURCE_LSE) && (HAL_IS_BIT_SET(temp_reg, RCC_BDCR_LSERDY)))
  9453. 8003f4e: 68bb ldr r3, [r7, #8]
  9454. 8003f50: f403 7340 and.w r3, r3, #768 ; 0x300
  9455. 8003f54: f5b3 7f80 cmp.w r3, #256 ; 0x100
  9456. 8003f58: d108 bne.n 8003f6c <HAL_RCCEx_GetPeriphCLKFreq+0x40>
  9457. 8003f5a: 68bb ldr r3, [r7, #8]
  9458. 8003f5c: f003 0302 and.w r3, r3, #2
  9459. 8003f60: 2b00 cmp r3, #0
  9460. 8003f62: d003 beq.n 8003f6c <HAL_RCCEx_GetPeriphCLKFreq+0x40>
  9461. frequency = LSE_VALUE;
  9462. 8003f64: f44f 4300 mov.w r3, #32768 ; 0x8000
  9463. 8003f68: 60fb str r3, [r7, #12]
  9464. 8003f6a: e01f b.n 8003fac <HAL_RCCEx_GetPeriphCLKFreq+0x80>
  9465. else if (((temp_reg & RCC_BDCR_RTCSEL) == RCC_RTCCLKSOURCE_LSI) && (HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIRDY)))
  9466. 8003f6c: 68bb ldr r3, [r7, #8]
  9467. 8003f6e: f403 7340 and.w r3, r3, #768 ; 0x300
  9468. 8003f72: f5b3 7f00 cmp.w r3, #512 ; 0x200
  9469. 8003f76: d109 bne.n 8003f8c <HAL_RCCEx_GetPeriphCLKFreq+0x60>
  9470. 8003f78: 4b17 ldr r3, [pc, #92] ; (8003fd8 <HAL_RCCEx_GetPeriphCLKFreq+0xac>)
  9471. 8003f7a: 6a5b ldr r3, [r3, #36] ; 0x24
  9472. 8003f7c: f003 0302 and.w r3, r3, #2
  9473. 8003f80: 2b00 cmp r3, #0
  9474. 8003f82: d003 beq.n 8003f8c <HAL_RCCEx_GetPeriphCLKFreq+0x60>
  9475. frequency = LSI_VALUE;
  9476. 8003f84: f649 4340 movw r3, #40000 ; 0x9c40
  9477. 8003f88: 60fb str r3, [r7, #12]
  9478. 8003f8a: e00f b.n 8003fac <HAL_RCCEx_GetPeriphCLKFreq+0x80>
  9479. else if (((temp_reg & RCC_BDCR_RTCSEL) == RCC_RTCCLKSOURCE_HSE_DIV128) && (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)))
  9480. 8003f8c: 68bb ldr r3, [r7, #8]
  9481. 8003f8e: f403 7340 and.w r3, r3, #768 ; 0x300
  9482. 8003f92: f5b3 7f40 cmp.w r3, #768 ; 0x300
  9483. 8003f96: d118 bne.n 8003fca <HAL_RCCEx_GetPeriphCLKFreq+0x9e>
  9484. 8003f98: 4b0f ldr r3, [pc, #60] ; (8003fd8 <HAL_RCCEx_GetPeriphCLKFreq+0xac>)
  9485. 8003f9a: 681b ldr r3, [r3, #0]
  9486. 8003f9c: f403 3300 and.w r3, r3, #131072 ; 0x20000
  9487. 8003fa0: 2b00 cmp r3, #0
  9488. 8003fa2: d012 beq.n 8003fca <HAL_RCCEx_GetPeriphCLKFreq+0x9e>
  9489. frequency = HSE_VALUE / 128U;
  9490. 8003fa4: f24f 4324 movw r3, #62500 ; 0xf424
  9491. 8003fa8: 60fb str r3, [r7, #12]
  9492. break;
  9493. 8003faa: e00e b.n 8003fca <HAL_RCCEx_GetPeriphCLKFreq+0x9e>
  9494. 8003fac: e00d b.n 8003fca <HAL_RCCEx_GetPeriphCLKFreq+0x9e>
  9495. frequency = HAL_RCC_GetPCLK2Freq() / (((__HAL_RCC_GET_ADC_SOURCE() >> RCC_CFGR_ADCPRE_Pos) + 1) * 2);
  9496. 8003fae: f7ff feb9 bl 8003d24 <HAL_RCC_GetPCLK2Freq>
  9497. 8003fb2: 4602 mov r2, r0
  9498. 8003fb4: 4b08 ldr r3, [pc, #32] ; (8003fd8 <HAL_RCCEx_GetPeriphCLKFreq+0xac>)
  9499. 8003fb6: 685b ldr r3, [r3, #4]
  9500. 8003fb8: 0b9b lsrs r3, r3, #14
  9501. 8003fba: f003 0303 and.w r3, r3, #3
  9502. 8003fbe: 3301 adds r3, #1
  9503. 8003fc0: 005b lsls r3, r3, #1
  9504. 8003fc2: fbb2 f3f3 udiv r3, r2, r3
  9505. 8003fc6: 60fb str r3, [r7, #12]
  9506. break;
  9507. 8003fc8: e000 b.n 8003fcc <HAL_RCCEx_GetPeriphCLKFreq+0xa0>
  9508. break;
  9509. 8003fca: bf00 nop
  9510. }
  9511. }
  9512. return (frequency);
  9513. 8003fcc: 68fb ldr r3, [r7, #12]
  9514. }
  9515. 8003fce: 4618 mov r0, r3
  9516. 8003fd0: 3710 adds r7, #16
  9517. 8003fd2: 46bd mov sp, r7
  9518. 8003fd4: bd80 pop {r7, pc}
  9519. 8003fd6: bf00 nop
  9520. 8003fd8: 40021000 .word 0x40021000
  9521. 08003fdc <HAL_TIM_Base_Init>:
  9522. * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init()
  9523. * @param htim TIM Base handle
  9524. * @retval HAL status
  9525. */
  9526. HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)
  9527. {
  9528. 8003fdc: b580 push {r7, lr}
  9529. 8003fde: b082 sub sp, #8
  9530. 8003fe0: af00 add r7, sp, #0
  9531. 8003fe2: 6078 str r0, [r7, #4]
  9532. /* Check the TIM handle allocation */
  9533. if (htim == NULL)
  9534. 8003fe4: 687b ldr r3, [r7, #4]
  9535. 8003fe6: 2b00 cmp r3, #0
  9536. 8003fe8: d101 bne.n 8003fee <HAL_TIM_Base_Init+0x12>
  9537. {
  9538. return HAL_ERROR;
  9539. 8003fea: 2301 movs r3, #1
  9540. 8003fec: e01d b.n 800402a <HAL_TIM_Base_Init+0x4e>
  9541. assert_param(IS_TIM_INSTANCE(htim->Instance));
  9542. assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
  9543. assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
  9544. assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
  9545. if (htim->State == HAL_TIM_STATE_RESET)
  9546. 8003fee: 687b ldr r3, [r7, #4]
  9547. 8003ff0: f893 303d ldrb.w r3, [r3, #61] ; 0x3d
  9548. 8003ff4: b2db uxtb r3, r3
  9549. 8003ff6: 2b00 cmp r3, #0
  9550. 8003ff8: d106 bne.n 8004008 <HAL_TIM_Base_Init+0x2c>
  9551. {
  9552. /* Allocate lock resource and initialize it */
  9553. htim->Lock = HAL_UNLOCKED;
  9554. 8003ffa: 687b ldr r3, [r7, #4]
  9555. 8003ffc: 2200 movs r2, #0
  9556. 8003ffe: f883 203c strb.w r2, [r3, #60] ; 0x3c
  9557. }
  9558. /* Init the low level hardware : GPIO, CLOCK, NVIC */
  9559. htim->Base_MspInitCallback(htim);
  9560. #else
  9561. /* Init the low level hardware : GPIO, CLOCK, NVIC */
  9562. HAL_TIM_Base_MspInit(htim);
  9563. 8004002: 6878 ldr r0, [r7, #4]
  9564. 8004004: f001 fd26 bl 8005a54 <HAL_TIM_Base_MspInit>
  9565. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  9566. }
  9567. /* Set the TIM state */
  9568. htim->State = HAL_TIM_STATE_BUSY;
  9569. 8004008: 687b ldr r3, [r7, #4]
  9570. 800400a: 2202 movs r2, #2
  9571. 800400c: f883 203d strb.w r2, [r3, #61] ; 0x3d
  9572. /* Set the Time Base configuration */
  9573. TIM_Base_SetConfig(htim->Instance, &htim->Init);
  9574. 8004010: 687b ldr r3, [r7, #4]
  9575. 8004012: 681a ldr r2, [r3, #0]
  9576. 8004014: 687b ldr r3, [r7, #4]
  9577. 8004016: 3304 adds r3, #4
  9578. 8004018: 4619 mov r1, r3
  9579. 800401a: 4610 mov r0, r2
  9580. 800401c: f000 f958 bl 80042d0 <TIM_Base_SetConfig>
  9581. /* Initialize the TIM state*/
  9582. htim->State = HAL_TIM_STATE_READY;
  9583. 8004020: 687b ldr r3, [r7, #4]
  9584. 8004022: 2201 movs r2, #1
  9585. 8004024: f883 203d strb.w r2, [r3, #61] ; 0x3d
  9586. return HAL_OK;
  9587. 8004028: 2300 movs r3, #0
  9588. }
  9589. 800402a: 4618 mov r0, r3
  9590. 800402c: 3708 adds r7, #8
  9591. 800402e: 46bd mov sp, r7
  9592. 8004030: bd80 pop {r7, pc}
  9593. 08004032 <HAL_TIM_Base_Start_IT>:
  9594. * @brief Starts the TIM Base generation in interrupt mode.
  9595. * @param htim TIM Base handle
  9596. * @retval HAL status
  9597. */
  9598. HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
  9599. {
  9600. 8004032: b480 push {r7}
  9601. 8004034: b085 sub sp, #20
  9602. 8004036: af00 add r7, sp, #0
  9603. 8004038: 6078 str r0, [r7, #4]
  9604. /* Check the parameters */
  9605. assert_param(IS_TIM_INSTANCE(htim->Instance));
  9606. /* Enable the TIM Update interrupt */
  9607. __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
  9608. 800403a: 687b ldr r3, [r7, #4]
  9609. 800403c: 681b ldr r3, [r3, #0]
  9610. 800403e: 68da ldr r2, [r3, #12]
  9611. 8004040: 687b ldr r3, [r7, #4]
  9612. 8004042: 681b ldr r3, [r3, #0]
  9613. 8004044: f042 0201 orr.w r2, r2, #1
  9614. 8004048: 60da str r2, [r3, #12]
  9615. /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
  9616. tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
  9617. 800404a: 687b ldr r3, [r7, #4]
  9618. 800404c: 681b ldr r3, [r3, #0]
  9619. 800404e: 689b ldr r3, [r3, #8]
  9620. 8004050: f003 0307 and.w r3, r3, #7
  9621. 8004054: 60fb str r3, [r7, #12]
  9622. if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
  9623. 8004056: 68fb ldr r3, [r7, #12]
  9624. 8004058: 2b06 cmp r3, #6
  9625. 800405a: d007 beq.n 800406c <HAL_TIM_Base_Start_IT+0x3a>
  9626. {
  9627. __HAL_TIM_ENABLE(htim);
  9628. 800405c: 687b ldr r3, [r7, #4]
  9629. 800405e: 681b ldr r3, [r3, #0]
  9630. 8004060: 681a ldr r2, [r3, #0]
  9631. 8004062: 687b ldr r3, [r7, #4]
  9632. 8004064: 681b ldr r3, [r3, #0]
  9633. 8004066: f042 0201 orr.w r2, r2, #1
  9634. 800406a: 601a str r2, [r3, #0]
  9635. }
  9636. /* Return function status */
  9637. return HAL_OK;
  9638. 800406c: 2300 movs r3, #0
  9639. }
  9640. 800406e: 4618 mov r0, r3
  9641. 8004070: 3714 adds r7, #20
  9642. 8004072: 46bd mov sp, r7
  9643. 8004074: bc80 pop {r7}
  9644. 8004076: 4770 bx lr
  9645. 08004078 <HAL_TIM_IRQHandler>:
  9646. * @brief This function handles TIM interrupts requests.
  9647. * @param htim TIM handle
  9648. * @retval None
  9649. */
  9650. void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
  9651. {
  9652. 8004078: b580 push {r7, lr}
  9653. 800407a: b082 sub sp, #8
  9654. 800407c: af00 add r7, sp, #0
  9655. 800407e: 6078 str r0, [r7, #4]
  9656. /* Capture compare 1 event */
  9657. if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET)
  9658. 8004080: 687b ldr r3, [r7, #4]
  9659. 8004082: 681b ldr r3, [r3, #0]
  9660. 8004084: 691b ldr r3, [r3, #16]
  9661. 8004086: f003 0302 and.w r3, r3, #2
  9662. 800408a: 2b02 cmp r3, #2
  9663. 800408c: d122 bne.n 80040d4 <HAL_TIM_IRQHandler+0x5c>
  9664. {
  9665. if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET)
  9666. 800408e: 687b ldr r3, [r7, #4]
  9667. 8004090: 681b ldr r3, [r3, #0]
  9668. 8004092: 68db ldr r3, [r3, #12]
  9669. 8004094: f003 0302 and.w r3, r3, #2
  9670. 8004098: 2b02 cmp r3, #2
  9671. 800409a: d11b bne.n 80040d4 <HAL_TIM_IRQHandler+0x5c>
  9672. {
  9673. {
  9674. __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);
  9675. 800409c: 687b ldr r3, [r7, #4]
  9676. 800409e: 681b ldr r3, [r3, #0]
  9677. 80040a0: f06f 0202 mvn.w r2, #2
  9678. 80040a4: 611a str r2, [r3, #16]
  9679. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
  9680. 80040a6: 687b ldr r3, [r7, #4]
  9681. 80040a8: 2201 movs r2, #1
  9682. 80040aa: 771a strb r2, [r3, #28]
  9683. /* Input capture event */
  9684. if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U)
  9685. 80040ac: 687b ldr r3, [r7, #4]
  9686. 80040ae: 681b ldr r3, [r3, #0]
  9687. 80040b0: 699b ldr r3, [r3, #24]
  9688. 80040b2: f003 0303 and.w r3, r3, #3
  9689. 80040b6: 2b00 cmp r3, #0
  9690. 80040b8: d003 beq.n 80040c2 <HAL_TIM_IRQHandler+0x4a>
  9691. {
  9692. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  9693. htim->IC_CaptureCallback(htim);
  9694. #else
  9695. HAL_TIM_IC_CaptureCallback(htim);
  9696. 80040ba: 6878 ldr r0, [r7, #4]
  9697. 80040bc: f000 f8ed bl 800429a <HAL_TIM_IC_CaptureCallback>
  9698. 80040c0: e005 b.n 80040ce <HAL_TIM_IRQHandler+0x56>
  9699. {
  9700. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  9701. htim->OC_DelayElapsedCallback(htim);
  9702. htim->PWM_PulseFinishedCallback(htim);
  9703. #else
  9704. HAL_TIM_OC_DelayElapsedCallback(htim);
  9705. 80040c2: 6878 ldr r0, [r7, #4]
  9706. 80040c4: f000 f8e0 bl 8004288 <HAL_TIM_OC_DelayElapsedCallback>
  9707. HAL_TIM_PWM_PulseFinishedCallback(htim);
  9708. 80040c8: 6878 ldr r0, [r7, #4]
  9709. 80040ca: f000 f8ef bl 80042ac <HAL_TIM_PWM_PulseFinishedCallback>
  9710. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  9711. }
  9712. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
  9713. 80040ce: 687b ldr r3, [r7, #4]
  9714. 80040d0: 2200 movs r2, #0
  9715. 80040d2: 771a strb r2, [r3, #28]
  9716. }
  9717. }
  9718. }
  9719. /* Capture compare 2 event */
  9720. if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET)
  9721. 80040d4: 687b ldr r3, [r7, #4]
  9722. 80040d6: 681b ldr r3, [r3, #0]
  9723. 80040d8: 691b ldr r3, [r3, #16]
  9724. 80040da: f003 0304 and.w r3, r3, #4
  9725. 80040de: 2b04 cmp r3, #4
  9726. 80040e0: d122 bne.n 8004128 <HAL_TIM_IRQHandler+0xb0>
  9727. {
  9728. if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET)
  9729. 80040e2: 687b ldr r3, [r7, #4]
  9730. 80040e4: 681b ldr r3, [r3, #0]
  9731. 80040e6: 68db ldr r3, [r3, #12]
  9732. 80040e8: f003 0304 and.w r3, r3, #4
  9733. 80040ec: 2b04 cmp r3, #4
  9734. 80040ee: d11b bne.n 8004128 <HAL_TIM_IRQHandler+0xb0>
  9735. {
  9736. __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2);
  9737. 80040f0: 687b ldr r3, [r7, #4]
  9738. 80040f2: 681b ldr r3, [r3, #0]
  9739. 80040f4: f06f 0204 mvn.w r2, #4
  9740. 80040f8: 611a str r2, [r3, #16]
  9741. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
  9742. 80040fa: 687b ldr r3, [r7, #4]
  9743. 80040fc: 2202 movs r2, #2
  9744. 80040fe: 771a strb r2, [r3, #28]
  9745. /* Input capture event */
  9746. if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U)
  9747. 8004100: 687b ldr r3, [r7, #4]
  9748. 8004102: 681b ldr r3, [r3, #0]
  9749. 8004104: 699b ldr r3, [r3, #24]
  9750. 8004106: f403 7340 and.w r3, r3, #768 ; 0x300
  9751. 800410a: 2b00 cmp r3, #0
  9752. 800410c: d003 beq.n 8004116 <HAL_TIM_IRQHandler+0x9e>
  9753. {
  9754. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  9755. htim->IC_CaptureCallback(htim);
  9756. #else
  9757. HAL_TIM_IC_CaptureCallback(htim);
  9758. 800410e: 6878 ldr r0, [r7, #4]
  9759. 8004110: f000 f8c3 bl 800429a <HAL_TIM_IC_CaptureCallback>
  9760. 8004114: e005 b.n 8004122 <HAL_TIM_IRQHandler+0xaa>
  9761. {
  9762. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  9763. htim->OC_DelayElapsedCallback(htim);
  9764. htim->PWM_PulseFinishedCallback(htim);
  9765. #else
  9766. HAL_TIM_OC_DelayElapsedCallback(htim);
  9767. 8004116: 6878 ldr r0, [r7, #4]
  9768. 8004118: f000 f8b6 bl 8004288 <HAL_TIM_OC_DelayElapsedCallback>
  9769. HAL_TIM_PWM_PulseFinishedCallback(htim);
  9770. 800411c: 6878 ldr r0, [r7, #4]
  9771. 800411e: f000 f8c5 bl 80042ac <HAL_TIM_PWM_PulseFinishedCallback>
  9772. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  9773. }
  9774. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
  9775. 8004122: 687b ldr r3, [r7, #4]
  9776. 8004124: 2200 movs r2, #0
  9777. 8004126: 771a strb r2, [r3, #28]
  9778. }
  9779. }
  9780. /* Capture compare 3 event */
  9781. if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET)
  9782. 8004128: 687b ldr r3, [r7, #4]
  9783. 800412a: 681b ldr r3, [r3, #0]
  9784. 800412c: 691b ldr r3, [r3, #16]
  9785. 800412e: f003 0308 and.w r3, r3, #8
  9786. 8004132: 2b08 cmp r3, #8
  9787. 8004134: d122 bne.n 800417c <HAL_TIM_IRQHandler+0x104>
  9788. {
  9789. if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET)
  9790. 8004136: 687b ldr r3, [r7, #4]
  9791. 8004138: 681b ldr r3, [r3, #0]
  9792. 800413a: 68db ldr r3, [r3, #12]
  9793. 800413c: f003 0308 and.w r3, r3, #8
  9794. 8004140: 2b08 cmp r3, #8
  9795. 8004142: d11b bne.n 800417c <HAL_TIM_IRQHandler+0x104>
  9796. {
  9797. __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3);
  9798. 8004144: 687b ldr r3, [r7, #4]
  9799. 8004146: 681b ldr r3, [r3, #0]
  9800. 8004148: f06f 0208 mvn.w r2, #8
  9801. 800414c: 611a str r2, [r3, #16]
  9802. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
  9803. 800414e: 687b ldr r3, [r7, #4]
  9804. 8004150: 2204 movs r2, #4
  9805. 8004152: 771a strb r2, [r3, #28]
  9806. /* Input capture event */
  9807. if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U)
  9808. 8004154: 687b ldr r3, [r7, #4]
  9809. 8004156: 681b ldr r3, [r3, #0]
  9810. 8004158: 69db ldr r3, [r3, #28]
  9811. 800415a: f003 0303 and.w r3, r3, #3
  9812. 800415e: 2b00 cmp r3, #0
  9813. 8004160: d003 beq.n 800416a <HAL_TIM_IRQHandler+0xf2>
  9814. {
  9815. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  9816. htim->IC_CaptureCallback(htim);
  9817. #else
  9818. HAL_TIM_IC_CaptureCallback(htim);
  9819. 8004162: 6878 ldr r0, [r7, #4]
  9820. 8004164: f000 f899 bl 800429a <HAL_TIM_IC_CaptureCallback>
  9821. 8004168: e005 b.n 8004176 <HAL_TIM_IRQHandler+0xfe>
  9822. {
  9823. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  9824. htim->OC_DelayElapsedCallback(htim);
  9825. htim->PWM_PulseFinishedCallback(htim);
  9826. #else
  9827. HAL_TIM_OC_DelayElapsedCallback(htim);
  9828. 800416a: 6878 ldr r0, [r7, #4]
  9829. 800416c: f000 f88c bl 8004288 <HAL_TIM_OC_DelayElapsedCallback>
  9830. HAL_TIM_PWM_PulseFinishedCallback(htim);
  9831. 8004170: 6878 ldr r0, [r7, #4]
  9832. 8004172: f000 f89b bl 80042ac <HAL_TIM_PWM_PulseFinishedCallback>
  9833. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  9834. }
  9835. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
  9836. 8004176: 687b ldr r3, [r7, #4]
  9837. 8004178: 2200 movs r2, #0
  9838. 800417a: 771a strb r2, [r3, #28]
  9839. }
  9840. }
  9841. /* Capture compare 4 event */
  9842. if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET)
  9843. 800417c: 687b ldr r3, [r7, #4]
  9844. 800417e: 681b ldr r3, [r3, #0]
  9845. 8004180: 691b ldr r3, [r3, #16]
  9846. 8004182: f003 0310 and.w r3, r3, #16
  9847. 8004186: 2b10 cmp r3, #16
  9848. 8004188: d122 bne.n 80041d0 <HAL_TIM_IRQHandler+0x158>
  9849. {
  9850. if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET)
  9851. 800418a: 687b ldr r3, [r7, #4]
  9852. 800418c: 681b ldr r3, [r3, #0]
  9853. 800418e: 68db ldr r3, [r3, #12]
  9854. 8004190: f003 0310 and.w r3, r3, #16
  9855. 8004194: 2b10 cmp r3, #16
  9856. 8004196: d11b bne.n 80041d0 <HAL_TIM_IRQHandler+0x158>
  9857. {
  9858. __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4);
  9859. 8004198: 687b ldr r3, [r7, #4]
  9860. 800419a: 681b ldr r3, [r3, #0]
  9861. 800419c: f06f 0210 mvn.w r2, #16
  9862. 80041a0: 611a str r2, [r3, #16]
  9863. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
  9864. 80041a2: 687b ldr r3, [r7, #4]
  9865. 80041a4: 2208 movs r2, #8
  9866. 80041a6: 771a strb r2, [r3, #28]
  9867. /* Input capture event */
  9868. if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U)
  9869. 80041a8: 687b ldr r3, [r7, #4]
  9870. 80041aa: 681b ldr r3, [r3, #0]
  9871. 80041ac: 69db ldr r3, [r3, #28]
  9872. 80041ae: f403 7340 and.w r3, r3, #768 ; 0x300
  9873. 80041b2: 2b00 cmp r3, #0
  9874. 80041b4: d003 beq.n 80041be <HAL_TIM_IRQHandler+0x146>
  9875. {
  9876. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  9877. htim->IC_CaptureCallback(htim);
  9878. #else
  9879. HAL_TIM_IC_CaptureCallback(htim);
  9880. 80041b6: 6878 ldr r0, [r7, #4]
  9881. 80041b8: f000 f86f bl 800429a <HAL_TIM_IC_CaptureCallback>
  9882. 80041bc: e005 b.n 80041ca <HAL_TIM_IRQHandler+0x152>
  9883. {
  9884. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  9885. htim->OC_DelayElapsedCallback(htim);
  9886. htim->PWM_PulseFinishedCallback(htim);
  9887. #else
  9888. HAL_TIM_OC_DelayElapsedCallback(htim);
  9889. 80041be: 6878 ldr r0, [r7, #4]
  9890. 80041c0: f000 f862 bl 8004288 <HAL_TIM_OC_DelayElapsedCallback>
  9891. HAL_TIM_PWM_PulseFinishedCallback(htim);
  9892. 80041c4: 6878 ldr r0, [r7, #4]
  9893. 80041c6: f000 f871 bl 80042ac <HAL_TIM_PWM_PulseFinishedCallback>
  9894. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  9895. }
  9896. htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
  9897. 80041ca: 687b ldr r3, [r7, #4]
  9898. 80041cc: 2200 movs r2, #0
  9899. 80041ce: 771a strb r2, [r3, #28]
  9900. }
  9901. }
  9902. /* TIM Update event */
  9903. if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
  9904. 80041d0: 687b ldr r3, [r7, #4]
  9905. 80041d2: 681b ldr r3, [r3, #0]
  9906. 80041d4: 691b ldr r3, [r3, #16]
  9907. 80041d6: f003 0301 and.w r3, r3, #1
  9908. 80041da: 2b01 cmp r3, #1
  9909. 80041dc: d10e bne.n 80041fc <HAL_TIM_IRQHandler+0x184>
  9910. {
  9911. if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET)
  9912. 80041de: 687b ldr r3, [r7, #4]
  9913. 80041e0: 681b ldr r3, [r3, #0]
  9914. 80041e2: 68db ldr r3, [r3, #12]
  9915. 80041e4: f003 0301 and.w r3, r3, #1
  9916. 80041e8: 2b01 cmp r3, #1
  9917. 80041ea: d107 bne.n 80041fc <HAL_TIM_IRQHandler+0x184>
  9918. {
  9919. __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
  9920. 80041ec: 687b ldr r3, [r7, #4]
  9921. 80041ee: 681b ldr r3, [r3, #0]
  9922. 80041f0: f06f 0201 mvn.w r2, #1
  9923. 80041f4: 611a str r2, [r3, #16]
  9924. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  9925. htim->PeriodElapsedCallback(htim);
  9926. #else
  9927. HAL_TIM_PeriodElapsedCallback(htim);
  9928. 80041f6: 6878 ldr r0, [r7, #4]
  9929. 80041f8: f001 fae6 bl 80057c8 <HAL_TIM_PeriodElapsedCallback>
  9930. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  9931. }
  9932. }
  9933. /* TIM Break input event */
  9934. if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET)
  9935. 80041fc: 687b ldr r3, [r7, #4]
  9936. 80041fe: 681b ldr r3, [r3, #0]
  9937. 8004200: 691b ldr r3, [r3, #16]
  9938. 8004202: f003 0380 and.w r3, r3, #128 ; 0x80
  9939. 8004206: 2b80 cmp r3, #128 ; 0x80
  9940. 8004208: d10e bne.n 8004228 <HAL_TIM_IRQHandler+0x1b0>
  9941. {
  9942. if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET)
  9943. 800420a: 687b ldr r3, [r7, #4]
  9944. 800420c: 681b ldr r3, [r3, #0]
  9945. 800420e: 68db ldr r3, [r3, #12]
  9946. 8004210: f003 0380 and.w r3, r3, #128 ; 0x80
  9947. 8004214: 2b80 cmp r3, #128 ; 0x80
  9948. 8004216: d107 bne.n 8004228 <HAL_TIM_IRQHandler+0x1b0>
  9949. {
  9950. __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK);
  9951. 8004218: 687b ldr r3, [r7, #4]
  9952. 800421a: 681b ldr r3, [r3, #0]
  9953. 800421c: f06f 0280 mvn.w r2, #128 ; 0x80
  9954. 8004220: 611a str r2, [r3, #16]
  9955. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  9956. htim->BreakCallback(htim);
  9957. #else
  9958. HAL_TIMEx_BreakCallback(htim);
  9959. 8004222: 6878 ldr r0, [r7, #4]
  9960. 8004224: f000 f921 bl 800446a <HAL_TIMEx_BreakCallback>
  9961. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  9962. }
  9963. }
  9964. /* TIM Trigger detection event */
  9965. if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET)
  9966. 8004228: 687b ldr r3, [r7, #4]
  9967. 800422a: 681b ldr r3, [r3, #0]
  9968. 800422c: 691b ldr r3, [r3, #16]
  9969. 800422e: f003 0340 and.w r3, r3, #64 ; 0x40
  9970. 8004232: 2b40 cmp r3, #64 ; 0x40
  9971. 8004234: d10e bne.n 8004254 <HAL_TIM_IRQHandler+0x1dc>
  9972. {
  9973. if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET)
  9974. 8004236: 687b ldr r3, [r7, #4]
  9975. 8004238: 681b ldr r3, [r3, #0]
  9976. 800423a: 68db ldr r3, [r3, #12]
  9977. 800423c: f003 0340 and.w r3, r3, #64 ; 0x40
  9978. 8004240: 2b40 cmp r3, #64 ; 0x40
  9979. 8004242: d107 bne.n 8004254 <HAL_TIM_IRQHandler+0x1dc>
  9980. {
  9981. __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER);
  9982. 8004244: 687b ldr r3, [r7, #4]
  9983. 8004246: 681b ldr r3, [r3, #0]
  9984. 8004248: f06f 0240 mvn.w r2, #64 ; 0x40
  9985. 800424c: 611a str r2, [r3, #16]
  9986. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  9987. htim->TriggerCallback(htim);
  9988. #else
  9989. HAL_TIM_TriggerCallback(htim);
  9990. 800424e: 6878 ldr r0, [r7, #4]
  9991. 8004250: f000 f835 bl 80042be <HAL_TIM_TriggerCallback>
  9992. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  9993. }
  9994. }
  9995. /* TIM commutation event */
  9996. if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET)
  9997. 8004254: 687b ldr r3, [r7, #4]
  9998. 8004256: 681b ldr r3, [r3, #0]
  9999. 8004258: 691b ldr r3, [r3, #16]
  10000. 800425a: f003 0320 and.w r3, r3, #32
  10001. 800425e: 2b20 cmp r3, #32
  10002. 8004260: d10e bne.n 8004280 <HAL_TIM_IRQHandler+0x208>
  10003. {
  10004. if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET)
  10005. 8004262: 687b ldr r3, [r7, #4]
  10006. 8004264: 681b ldr r3, [r3, #0]
  10007. 8004266: 68db ldr r3, [r3, #12]
  10008. 8004268: f003 0320 and.w r3, r3, #32
  10009. 800426c: 2b20 cmp r3, #32
  10010. 800426e: d107 bne.n 8004280 <HAL_TIM_IRQHandler+0x208>
  10011. {
  10012. __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM);
  10013. 8004270: 687b ldr r3, [r7, #4]
  10014. 8004272: 681b ldr r3, [r3, #0]
  10015. 8004274: f06f 0220 mvn.w r2, #32
  10016. 8004278: 611a str r2, [r3, #16]
  10017. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  10018. htim->CommutationCallback(htim);
  10019. #else
  10020. HAL_TIMEx_CommutCallback(htim);
  10021. 800427a: 6878 ldr r0, [r7, #4]
  10022. 800427c: f000 f8ec bl 8004458 <HAL_TIMEx_CommutCallback>
  10023. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  10024. }
  10025. }
  10026. }
  10027. 8004280: bf00 nop
  10028. 8004282: 3708 adds r7, #8
  10029. 8004284: 46bd mov sp, r7
  10030. 8004286: bd80 pop {r7, pc}
  10031. 08004288 <HAL_TIM_OC_DelayElapsedCallback>:
  10032. * @brief Output Compare callback in non-blocking mode
  10033. * @param htim TIM OC handle
  10034. * @retval None
  10035. */
  10036. __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
  10037. {
  10038. 8004288: b480 push {r7}
  10039. 800428a: b083 sub sp, #12
  10040. 800428c: af00 add r7, sp, #0
  10041. 800428e: 6078 str r0, [r7, #4]
  10042. UNUSED(htim);
  10043. /* NOTE : This function should not be modified, when the callback is needed,
  10044. the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file
  10045. */
  10046. }
  10047. 8004290: bf00 nop
  10048. 8004292: 370c adds r7, #12
  10049. 8004294: 46bd mov sp, r7
  10050. 8004296: bc80 pop {r7}
  10051. 8004298: 4770 bx lr
  10052. 0800429a <HAL_TIM_IC_CaptureCallback>:
  10053. * @brief Input Capture callback in non-blocking mode
  10054. * @param htim TIM IC handle
  10055. * @retval None
  10056. */
  10057. __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
  10058. {
  10059. 800429a: b480 push {r7}
  10060. 800429c: b083 sub sp, #12
  10061. 800429e: af00 add r7, sp, #0
  10062. 80042a0: 6078 str r0, [r7, #4]
  10063. UNUSED(htim);
  10064. /* NOTE : This function should not be modified, when the callback is needed,
  10065. the HAL_TIM_IC_CaptureCallback could be implemented in the user file
  10066. */
  10067. }
  10068. 80042a2: bf00 nop
  10069. 80042a4: 370c adds r7, #12
  10070. 80042a6: 46bd mov sp, r7
  10071. 80042a8: bc80 pop {r7}
  10072. 80042aa: 4770 bx lr
  10073. 080042ac <HAL_TIM_PWM_PulseFinishedCallback>:
  10074. * @brief PWM Pulse finished callback in non-blocking mode
  10075. * @param htim TIM handle
  10076. * @retval None
  10077. */
  10078. __weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
  10079. {
  10080. 80042ac: b480 push {r7}
  10081. 80042ae: b083 sub sp, #12
  10082. 80042b0: af00 add r7, sp, #0
  10083. 80042b2: 6078 str r0, [r7, #4]
  10084. UNUSED(htim);
  10085. /* NOTE : This function should not be modified, when the callback is needed,
  10086. the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file
  10087. */
  10088. }
  10089. 80042b4: bf00 nop
  10090. 80042b6: 370c adds r7, #12
  10091. 80042b8: 46bd mov sp, r7
  10092. 80042ba: bc80 pop {r7}
  10093. 80042bc: 4770 bx lr
  10094. 080042be <HAL_TIM_TriggerCallback>:
  10095. * @brief Hall Trigger detection callback in non-blocking mode
  10096. * @param htim TIM handle
  10097. * @retval None
  10098. */
  10099. __weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim)
  10100. {
  10101. 80042be: b480 push {r7}
  10102. 80042c0: b083 sub sp, #12
  10103. 80042c2: af00 add r7, sp, #0
  10104. 80042c4: 6078 str r0, [r7, #4]
  10105. UNUSED(htim);
  10106. /* NOTE : This function should not be modified, when the callback is needed,
  10107. the HAL_TIM_TriggerCallback could be implemented in the user file
  10108. */
  10109. }
  10110. 80042c6: bf00 nop
  10111. 80042c8: 370c adds r7, #12
  10112. 80042ca: 46bd mov sp, r7
  10113. 80042cc: bc80 pop {r7}
  10114. 80042ce: 4770 bx lr
  10115. 080042d0 <TIM_Base_SetConfig>:
  10116. * @param TIMx TIM peripheral
  10117. * @param Structure TIM Base configuration structure
  10118. * @retval None
  10119. */
  10120. void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure)
  10121. {
  10122. 80042d0: b480 push {r7}
  10123. 80042d2: b085 sub sp, #20
  10124. 80042d4: af00 add r7, sp, #0
  10125. 80042d6: 6078 str r0, [r7, #4]
  10126. 80042d8: 6039 str r1, [r7, #0]
  10127. uint32_t tmpcr1;
  10128. tmpcr1 = TIMx->CR1;
  10129. 80042da: 687b ldr r3, [r7, #4]
  10130. 80042dc: 681b ldr r3, [r3, #0]
  10131. 80042de: 60fb str r3, [r7, #12]
  10132. /* Set TIM Time Base Unit parameters ---------------------------------------*/
  10133. if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))
  10134. 80042e0: 687b ldr r3, [r7, #4]
  10135. 80042e2: 4a35 ldr r2, [pc, #212] ; (80043b8 <TIM_Base_SetConfig+0xe8>)
  10136. 80042e4: 4293 cmp r3, r2
  10137. 80042e6: d00b beq.n 8004300 <TIM_Base_SetConfig+0x30>
  10138. 80042e8: 687b ldr r3, [r7, #4]
  10139. 80042ea: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
  10140. 80042ee: d007 beq.n 8004300 <TIM_Base_SetConfig+0x30>
  10141. 80042f0: 687b ldr r3, [r7, #4]
  10142. 80042f2: 4a32 ldr r2, [pc, #200] ; (80043bc <TIM_Base_SetConfig+0xec>)
  10143. 80042f4: 4293 cmp r3, r2
  10144. 80042f6: d003 beq.n 8004300 <TIM_Base_SetConfig+0x30>
  10145. 80042f8: 687b ldr r3, [r7, #4]
  10146. 80042fa: 4a31 ldr r2, [pc, #196] ; (80043c0 <TIM_Base_SetConfig+0xf0>)
  10147. 80042fc: 4293 cmp r3, r2
  10148. 80042fe: d108 bne.n 8004312 <TIM_Base_SetConfig+0x42>
  10149. {
  10150. /* Select the Counter Mode */
  10151. tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
  10152. 8004300: 68fb ldr r3, [r7, #12]
  10153. 8004302: f023 0370 bic.w r3, r3, #112 ; 0x70
  10154. 8004306: 60fb str r3, [r7, #12]
  10155. tmpcr1 |= Structure->CounterMode;
  10156. 8004308: 683b ldr r3, [r7, #0]
  10157. 800430a: 685b ldr r3, [r3, #4]
  10158. 800430c: 68fa ldr r2, [r7, #12]
  10159. 800430e: 4313 orrs r3, r2
  10160. 8004310: 60fb str r3, [r7, #12]
  10161. }
  10162. if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx))
  10163. 8004312: 687b ldr r3, [r7, #4]
  10164. 8004314: 4a28 ldr r2, [pc, #160] ; (80043b8 <TIM_Base_SetConfig+0xe8>)
  10165. 8004316: 4293 cmp r3, r2
  10166. 8004318: d017 beq.n 800434a <TIM_Base_SetConfig+0x7a>
  10167. 800431a: 687b ldr r3, [r7, #4]
  10168. 800431c: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
  10169. 8004320: d013 beq.n 800434a <TIM_Base_SetConfig+0x7a>
  10170. 8004322: 687b ldr r3, [r7, #4]
  10171. 8004324: 4a25 ldr r2, [pc, #148] ; (80043bc <TIM_Base_SetConfig+0xec>)
  10172. 8004326: 4293 cmp r3, r2
  10173. 8004328: d00f beq.n 800434a <TIM_Base_SetConfig+0x7a>
  10174. 800432a: 687b ldr r3, [r7, #4]
  10175. 800432c: 4a24 ldr r2, [pc, #144] ; (80043c0 <TIM_Base_SetConfig+0xf0>)
  10176. 800432e: 4293 cmp r3, r2
  10177. 8004330: d00b beq.n 800434a <TIM_Base_SetConfig+0x7a>
  10178. 8004332: 687b ldr r3, [r7, #4]
  10179. 8004334: 4a23 ldr r2, [pc, #140] ; (80043c4 <TIM_Base_SetConfig+0xf4>)
  10180. 8004336: 4293 cmp r3, r2
  10181. 8004338: d007 beq.n 800434a <TIM_Base_SetConfig+0x7a>
  10182. 800433a: 687b ldr r3, [r7, #4]
  10183. 800433c: 4a22 ldr r2, [pc, #136] ; (80043c8 <TIM_Base_SetConfig+0xf8>)
  10184. 800433e: 4293 cmp r3, r2
  10185. 8004340: d003 beq.n 800434a <TIM_Base_SetConfig+0x7a>
  10186. 8004342: 687b ldr r3, [r7, #4]
  10187. 8004344: 4a21 ldr r2, [pc, #132] ; (80043cc <TIM_Base_SetConfig+0xfc>)
  10188. 8004346: 4293 cmp r3, r2
  10189. 8004348: d108 bne.n 800435c <TIM_Base_SetConfig+0x8c>
  10190. {
  10191. /* Set the clock division */
  10192. tmpcr1 &= ~TIM_CR1_CKD;
  10193. 800434a: 68fb ldr r3, [r7, #12]
  10194. 800434c: f423 7340 bic.w r3, r3, #768 ; 0x300
  10195. 8004350: 60fb str r3, [r7, #12]
  10196. tmpcr1 |= (uint32_t)Structure->ClockDivision;
  10197. 8004352: 683b ldr r3, [r7, #0]
  10198. 8004354: 68db ldr r3, [r3, #12]
  10199. 8004356: 68fa ldr r2, [r7, #12]
  10200. 8004358: 4313 orrs r3, r2
  10201. 800435a: 60fb str r3, [r7, #12]
  10202. }
  10203. /* Set the auto-reload preload */
  10204. MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
  10205. 800435c: 68fb ldr r3, [r7, #12]
  10206. 800435e: f023 0280 bic.w r2, r3, #128 ; 0x80
  10207. 8004362: 683b ldr r3, [r7, #0]
  10208. 8004364: 695b ldr r3, [r3, #20]
  10209. 8004366: 4313 orrs r3, r2
  10210. 8004368: 60fb str r3, [r7, #12]
  10211. TIMx->CR1 = tmpcr1;
  10212. 800436a: 687b ldr r3, [r7, #4]
  10213. 800436c: 68fa ldr r2, [r7, #12]
  10214. 800436e: 601a str r2, [r3, #0]
  10215. /* Set the Autoreload value */
  10216. TIMx->ARR = (uint32_t)Structure->Period ;
  10217. 8004370: 683b ldr r3, [r7, #0]
  10218. 8004372: 689a ldr r2, [r3, #8]
  10219. 8004374: 687b ldr r3, [r7, #4]
  10220. 8004376: 62da str r2, [r3, #44] ; 0x2c
  10221. /* Set the Prescaler value */
  10222. TIMx->PSC = Structure->Prescaler;
  10223. 8004378: 683b ldr r3, [r7, #0]
  10224. 800437a: 681a ldr r2, [r3, #0]
  10225. 800437c: 687b ldr r3, [r7, #4]
  10226. 800437e: 629a str r2, [r3, #40] ; 0x28
  10227. if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))
  10228. 8004380: 687b ldr r3, [r7, #4]
  10229. 8004382: 4a0d ldr r2, [pc, #52] ; (80043b8 <TIM_Base_SetConfig+0xe8>)
  10230. 8004384: 4293 cmp r3, r2
  10231. 8004386: d00b beq.n 80043a0 <TIM_Base_SetConfig+0xd0>
  10232. 8004388: 687b ldr r3, [r7, #4]
  10233. 800438a: 4a0e ldr r2, [pc, #56] ; (80043c4 <TIM_Base_SetConfig+0xf4>)
  10234. 800438c: 4293 cmp r3, r2
  10235. 800438e: d007 beq.n 80043a0 <TIM_Base_SetConfig+0xd0>
  10236. 8004390: 687b ldr r3, [r7, #4]
  10237. 8004392: 4a0d ldr r2, [pc, #52] ; (80043c8 <TIM_Base_SetConfig+0xf8>)
  10238. 8004394: 4293 cmp r3, r2
  10239. 8004396: d003 beq.n 80043a0 <TIM_Base_SetConfig+0xd0>
  10240. 8004398: 687b ldr r3, [r7, #4]
  10241. 800439a: 4a0c ldr r2, [pc, #48] ; (80043cc <TIM_Base_SetConfig+0xfc>)
  10242. 800439c: 4293 cmp r3, r2
  10243. 800439e: d103 bne.n 80043a8 <TIM_Base_SetConfig+0xd8>
  10244. {
  10245. /* Set the Repetition Counter value */
  10246. TIMx->RCR = Structure->RepetitionCounter;
  10247. 80043a0: 683b ldr r3, [r7, #0]
  10248. 80043a2: 691a ldr r2, [r3, #16]
  10249. 80043a4: 687b ldr r3, [r7, #4]
  10250. 80043a6: 631a str r2, [r3, #48] ; 0x30
  10251. }
  10252. /* Generate an update event to reload the Prescaler
  10253. and the repetition counter (only for advanced timer) value immediately */
  10254. TIMx->EGR = TIM_EGR_UG;
  10255. 80043a8: 687b ldr r3, [r7, #4]
  10256. 80043aa: 2201 movs r2, #1
  10257. 80043ac: 615a str r2, [r3, #20]
  10258. }
  10259. 80043ae: bf00 nop
  10260. 80043b0: 3714 adds r7, #20
  10261. 80043b2: 46bd mov sp, r7
  10262. 80043b4: bc80 pop {r7}
  10263. 80043b6: 4770 bx lr
  10264. 80043b8: 40012c00 .word 0x40012c00
  10265. 80043bc: 40000400 .word 0x40000400
  10266. 80043c0: 40000800 .word 0x40000800
  10267. 80043c4: 40014000 .word 0x40014000
  10268. 80043c8: 40014400 .word 0x40014400
  10269. 80043cc: 40014800 .word 0x40014800
  10270. 080043d0 <HAL_TIMEx_MasterConfigSynchronization>:
  10271. * mode.
  10272. * @retval HAL status
  10273. */
  10274. HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
  10275. TIM_MasterConfigTypeDef *sMasterConfig)
  10276. {
  10277. 80043d0: b480 push {r7}
  10278. 80043d2: b085 sub sp, #20
  10279. 80043d4: af00 add r7, sp, #0
  10280. 80043d6: 6078 str r0, [r7, #4]
  10281. 80043d8: 6039 str r1, [r7, #0]
  10282. assert_param(IS_TIM_SYNCHRO_INSTANCE(htim->Instance));
  10283. assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
  10284. assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
  10285. /* Check input state */
  10286. __HAL_LOCK(htim);
  10287. 80043da: 687b ldr r3, [r7, #4]
  10288. 80043dc: f893 303c ldrb.w r3, [r3, #60] ; 0x3c
  10289. 80043e0: 2b01 cmp r3, #1
  10290. 80043e2: d101 bne.n 80043e8 <HAL_TIMEx_MasterConfigSynchronization+0x18>
  10291. 80043e4: 2302 movs r3, #2
  10292. 80043e6: e032 b.n 800444e <HAL_TIMEx_MasterConfigSynchronization+0x7e>
  10293. 80043e8: 687b ldr r3, [r7, #4]
  10294. 80043ea: 2201 movs r2, #1
  10295. 80043ec: f883 203c strb.w r2, [r3, #60] ; 0x3c
  10296. /* Change the handler state */
  10297. htim->State = HAL_TIM_STATE_BUSY;
  10298. 80043f0: 687b ldr r3, [r7, #4]
  10299. 80043f2: 2202 movs r2, #2
  10300. 80043f4: f883 203d strb.w r2, [r3, #61] ; 0x3d
  10301. /* Get the TIMx CR2 register value */
  10302. tmpcr2 = htim->Instance->CR2;
  10303. 80043f8: 687b ldr r3, [r7, #4]
  10304. 80043fa: 681b ldr r3, [r3, #0]
  10305. 80043fc: 685b ldr r3, [r3, #4]
  10306. 80043fe: 60fb str r3, [r7, #12]
  10307. /* Get the TIMx SMCR register value */
  10308. tmpsmcr = htim->Instance->SMCR;
  10309. 8004400: 687b ldr r3, [r7, #4]
  10310. 8004402: 681b ldr r3, [r3, #0]
  10311. 8004404: 689b ldr r3, [r3, #8]
  10312. 8004406: 60bb str r3, [r7, #8]
  10313. /* Reset the MMS Bits */
  10314. tmpcr2 &= ~TIM_CR2_MMS;
  10315. 8004408: 68fb ldr r3, [r7, #12]
  10316. 800440a: f023 0370 bic.w r3, r3, #112 ; 0x70
  10317. 800440e: 60fb str r3, [r7, #12]
  10318. /* Select the TRGO source */
  10319. tmpcr2 |= sMasterConfig->MasterOutputTrigger;
  10320. 8004410: 683b ldr r3, [r7, #0]
  10321. 8004412: 681b ldr r3, [r3, #0]
  10322. 8004414: 68fa ldr r2, [r7, #12]
  10323. 8004416: 4313 orrs r3, r2
  10324. 8004418: 60fb str r3, [r7, #12]
  10325. /* Reset the MSM Bit */
  10326. tmpsmcr &= ~TIM_SMCR_MSM;
  10327. 800441a: 68bb ldr r3, [r7, #8]
  10328. 800441c: f023 0380 bic.w r3, r3, #128 ; 0x80
  10329. 8004420: 60bb str r3, [r7, #8]
  10330. /* Set master mode */
  10331. tmpsmcr |= sMasterConfig->MasterSlaveMode;
  10332. 8004422: 683b ldr r3, [r7, #0]
  10333. 8004424: 685b ldr r3, [r3, #4]
  10334. 8004426: 68ba ldr r2, [r7, #8]
  10335. 8004428: 4313 orrs r3, r2
  10336. 800442a: 60bb str r3, [r7, #8]
  10337. /* Update TIMx CR2 */
  10338. htim->Instance->CR2 = tmpcr2;
  10339. 800442c: 687b ldr r3, [r7, #4]
  10340. 800442e: 681b ldr r3, [r3, #0]
  10341. 8004430: 68fa ldr r2, [r7, #12]
  10342. 8004432: 605a str r2, [r3, #4]
  10343. /* Update TIMx SMCR */
  10344. htim->Instance->SMCR = tmpsmcr;
  10345. 8004434: 687b ldr r3, [r7, #4]
  10346. 8004436: 681b ldr r3, [r3, #0]
  10347. 8004438: 68ba ldr r2, [r7, #8]
  10348. 800443a: 609a str r2, [r3, #8]
  10349. /* Change the htim state */
  10350. htim->State = HAL_TIM_STATE_READY;
  10351. 800443c: 687b ldr r3, [r7, #4]
  10352. 800443e: 2201 movs r2, #1
  10353. 8004440: f883 203d strb.w r2, [r3, #61] ; 0x3d
  10354. __HAL_UNLOCK(htim);
  10355. 8004444: 687b ldr r3, [r7, #4]
  10356. 8004446: 2200 movs r2, #0
  10357. 8004448: f883 203c strb.w r2, [r3, #60] ; 0x3c
  10358. return HAL_OK;
  10359. 800444c: 2300 movs r3, #0
  10360. }
  10361. 800444e: 4618 mov r0, r3
  10362. 8004450: 3714 adds r7, #20
  10363. 8004452: 46bd mov sp, r7
  10364. 8004454: bc80 pop {r7}
  10365. 8004456: 4770 bx lr
  10366. 08004458 <HAL_TIMEx_CommutCallback>:
  10367. * @brief Hall commutation changed callback in non-blocking mode
  10368. * @param htim TIM handle
  10369. * @retval None
  10370. */
  10371. __weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim)
  10372. {
  10373. 8004458: b480 push {r7}
  10374. 800445a: b083 sub sp, #12
  10375. 800445c: af00 add r7, sp, #0
  10376. 800445e: 6078 str r0, [r7, #4]
  10377. UNUSED(htim);
  10378. /* NOTE : This function should not be modified, when the callback is needed,
  10379. the HAL_TIMEx_CommutCallback could be implemented in the user file
  10380. */
  10381. }
  10382. 8004460: bf00 nop
  10383. 8004462: 370c adds r7, #12
  10384. 8004464: 46bd mov sp, r7
  10385. 8004466: bc80 pop {r7}
  10386. 8004468: 4770 bx lr
  10387. 0800446a <HAL_TIMEx_BreakCallback>:
  10388. * @brief Hall Break detection callback in non-blocking mode
  10389. * @param htim TIM handle
  10390. * @retval None
  10391. */
  10392. __weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim)
  10393. {
  10394. 800446a: b480 push {r7}
  10395. 800446c: b083 sub sp, #12
  10396. 800446e: af00 add r7, sp, #0
  10397. 8004470: 6078 str r0, [r7, #4]
  10398. UNUSED(htim);
  10399. /* NOTE : This function should not be modified, when the callback is needed,
  10400. the HAL_TIMEx_BreakCallback could be implemented in the user file
  10401. */
  10402. }
  10403. 8004472: bf00 nop
  10404. 8004474: 370c adds r7, #12
  10405. 8004476: 46bd mov sp, r7
  10406. 8004478: bc80 pop {r7}
  10407. 800447a: 4770 bx lr
  10408. 0800447c <HAL_UART_Init>:
  10409. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  10410. * the configuration information for the specified UART module.
  10411. * @retval HAL status
  10412. */
  10413. HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
  10414. {
  10415. 800447c: b580 push {r7, lr}
  10416. 800447e: b082 sub sp, #8
  10417. 8004480: af00 add r7, sp, #0
  10418. 8004482: 6078 str r0, [r7, #4]
  10419. /* Check the UART handle allocation */
  10420. if (huart == NULL)
  10421. 8004484: 687b ldr r3, [r7, #4]
  10422. 8004486: 2b00 cmp r3, #0
  10423. 8004488: d101 bne.n 800448e <HAL_UART_Init+0x12>
  10424. {
  10425. return HAL_ERROR;
  10426. 800448a: 2301 movs r3, #1
  10427. 800448c: e03f b.n 800450e <HAL_UART_Init+0x92>
  10428. assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength));
  10429. #if defined(USART_CR1_OVER8)
  10430. assert_param(IS_UART_OVERSAMPLING(huart->Init.OverSampling));
  10431. #endif /* USART_CR1_OVER8 */
  10432. if (huart->gState == HAL_UART_STATE_RESET)
  10433. 800448e: 687b ldr r3, [r7, #4]
  10434. 8004490: f893 3039 ldrb.w r3, [r3, #57] ; 0x39
  10435. 8004494: b2db uxtb r3, r3
  10436. 8004496: 2b00 cmp r3, #0
  10437. 8004498: d106 bne.n 80044a8 <HAL_UART_Init+0x2c>
  10438. {
  10439. /* Allocate lock resource and initialize it */
  10440. huart->Lock = HAL_UNLOCKED;
  10441. 800449a: 687b ldr r3, [r7, #4]
  10442. 800449c: 2200 movs r2, #0
  10443. 800449e: f883 2038 strb.w r2, [r3, #56] ; 0x38
  10444. /* Init the low level hardware */
  10445. huart->MspInitCallback(huart);
  10446. #else
  10447. /* Init the low level hardware : GPIO, CLOCK */
  10448. HAL_UART_MspInit(huart);
  10449. 80044a2: 6878 ldr r0, [r7, #4]
  10450. 80044a4: f001 faf4 bl 8005a90 <HAL_UART_MspInit>
  10451. #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */
  10452. }
  10453. huart->gState = HAL_UART_STATE_BUSY;
  10454. 80044a8: 687b ldr r3, [r7, #4]
  10455. 80044aa: 2224 movs r2, #36 ; 0x24
  10456. 80044ac: f883 2039 strb.w r2, [r3, #57] ; 0x39
  10457. /* Disable the peripheral */
  10458. __HAL_UART_DISABLE(huart);
  10459. 80044b0: 687b ldr r3, [r7, #4]
  10460. 80044b2: 681b ldr r3, [r3, #0]
  10461. 80044b4: 68da ldr r2, [r3, #12]
  10462. 80044b6: 687b ldr r3, [r7, #4]
  10463. 80044b8: 681b ldr r3, [r3, #0]
  10464. 80044ba: f422 5200 bic.w r2, r2, #8192 ; 0x2000
  10465. 80044be: 60da str r2, [r3, #12]
  10466. /* Set the UART Communication parameters */
  10467. UART_SetConfig(huart);
  10468. 80044c0: 6878 ldr r0, [r7, #4]
  10469. 80044c2: f000 fd63 bl 8004f8c <UART_SetConfig>
  10470. /* In asynchronous mode, the following bits must be kept cleared:
  10471. - LINEN and CLKEN bits in the USART_CR2 register,
  10472. - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/
  10473. CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
  10474. 80044c6: 687b ldr r3, [r7, #4]
  10475. 80044c8: 681b ldr r3, [r3, #0]
  10476. 80044ca: 691a ldr r2, [r3, #16]
  10477. 80044cc: 687b ldr r3, [r7, #4]
  10478. 80044ce: 681b ldr r3, [r3, #0]
  10479. 80044d0: f422 4290 bic.w r2, r2, #18432 ; 0x4800
  10480. 80044d4: 611a str r2, [r3, #16]
  10481. CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
  10482. 80044d6: 687b ldr r3, [r7, #4]
  10483. 80044d8: 681b ldr r3, [r3, #0]
  10484. 80044da: 695a ldr r2, [r3, #20]
  10485. 80044dc: 687b ldr r3, [r7, #4]
  10486. 80044de: 681b ldr r3, [r3, #0]
  10487. 80044e0: f022 022a bic.w r2, r2, #42 ; 0x2a
  10488. 80044e4: 615a str r2, [r3, #20]
  10489. /* Enable the peripheral */
  10490. __HAL_UART_ENABLE(huart);
  10491. 80044e6: 687b ldr r3, [r7, #4]
  10492. 80044e8: 681b ldr r3, [r3, #0]
  10493. 80044ea: 68da ldr r2, [r3, #12]
  10494. 80044ec: 687b ldr r3, [r7, #4]
  10495. 80044ee: 681b ldr r3, [r3, #0]
  10496. 80044f0: f442 5200 orr.w r2, r2, #8192 ; 0x2000
  10497. 80044f4: 60da str r2, [r3, #12]
  10498. /* Initialize the UART state */
  10499. huart->ErrorCode = HAL_UART_ERROR_NONE;
  10500. 80044f6: 687b ldr r3, [r7, #4]
  10501. 80044f8: 2200 movs r2, #0
  10502. 80044fa: 63da str r2, [r3, #60] ; 0x3c
  10503. huart->gState = HAL_UART_STATE_READY;
  10504. 80044fc: 687b ldr r3, [r7, #4]
  10505. 80044fe: 2220 movs r2, #32
  10506. 8004500: f883 2039 strb.w r2, [r3, #57] ; 0x39
  10507. huart->RxState = HAL_UART_STATE_READY;
  10508. 8004504: 687b ldr r3, [r7, #4]
  10509. 8004506: 2220 movs r2, #32
  10510. 8004508: f883 203a strb.w r2, [r3, #58] ; 0x3a
  10511. return HAL_OK;
  10512. 800450c: 2300 movs r3, #0
  10513. }
  10514. 800450e: 4618 mov r0, r3
  10515. 8004510: 3708 adds r7, #8
  10516. 8004512: 46bd mov sp, r7
  10517. 8004514: bd80 pop {r7, pc}
  10518. 08004516 <HAL_UART_Transmit>:
  10519. * @param Size Amount of data elements (u8 or u16) to be sent
  10520. * @param Timeout Timeout duration
  10521. * @retval HAL status
  10522. */
  10523. HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
  10524. {
  10525. 8004516: b580 push {r7, lr}
  10526. 8004518: b088 sub sp, #32
  10527. 800451a: af02 add r7, sp, #8
  10528. 800451c: 60f8 str r0, [r7, #12]
  10529. 800451e: 60b9 str r1, [r7, #8]
  10530. 8004520: 603b str r3, [r7, #0]
  10531. 8004522: 4613 mov r3, r2
  10532. 8004524: 80fb strh r3, [r7, #6]
  10533. uint16_t *tmp;
  10534. uint32_t tickstart = 0U;
  10535. 8004526: 2300 movs r3, #0
  10536. 8004528: 617b str r3, [r7, #20]
  10537. /* Check that a Tx process is not already ongoing */
  10538. if (huart->gState == HAL_UART_STATE_READY)
  10539. 800452a: 68fb ldr r3, [r7, #12]
  10540. 800452c: f893 3039 ldrb.w r3, [r3, #57] ; 0x39
  10541. 8004530: b2db uxtb r3, r3
  10542. 8004532: 2b20 cmp r3, #32
  10543. 8004534: f040 8083 bne.w 800463e <HAL_UART_Transmit+0x128>
  10544. {
  10545. if ((pData == NULL) || (Size == 0U))
  10546. 8004538: 68bb ldr r3, [r7, #8]
  10547. 800453a: 2b00 cmp r3, #0
  10548. 800453c: d002 beq.n 8004544 <HAL_UART_Transmit+0x2e>
  10549. 800453e: 88fb ldrh r3, [r7, #6]
  10550. 8004540: 2b00 cmp r3, #0
  10551. 8004542: d101 bne.n 8004548 <HAL_UART_Transmit+0x32>
  10552. {
  10553. return HAL_ERROR;
  10554. 8004544: 2301 movs r3, #1
  10555. 8004546: e07b b.n 8004640 <HAL_UART_Transmit+0x12a>
  10556. }
  10557. /* Process Locked */
  10558. __HAL_LOCK(huart);
  10559. 8004548: 68fb ldr r3, [r7, #12]
  10560. 800454a: f893 3038 ldrb.w r3, [r3, #56] ; 0x38
  10561. 800454e: 2b01 cmp r3, #1
  10562. 8004550: d101 bne.n 8004556 <HAL_UART_Transmit+0x40>
  10563. 8004552: 2302 movs r3, #2
  10564. 8004554: e074 b.n 8004640 <HAL_UART_Transmit+0x12a>
  10565. 8004556: 68fb ldr r3, [r7, #12]
  10566. 8004558: 2201 movs r2, #1
  10567. 800455a: f883 2038 strb.w r2, [r3, #56] ; 0x38
  10568. huart->ErrorCode = HAL_UART_ERROR_NONE;
  10569. 800455e: 68fb ldr r3, [r7, #12]
  10570. 8004560: 2200 movs r2, #0
  10571. 8004562: 63da str r2, [r3, #60] ; 0x3c
  10572. huart->gState = HAL_UART_STATE_BUSY_TX;
  10573. 8004564: 68fb ldr r3, [r7, #12]
  10574. 8004566: 2221 movs r2, #33 ; 0x21
  10575. 8004568: f883 2039 strb.w r2, [r3, #57] ; 0x39
  10576. /* Init tickstart for timeout managment */
  10577. tickstart = HAL_GetTick();
  10578. 800456c: f7fd fc2e bl 8001dcc <HAL_GetTick>
  10579. 8004570: 6178 str r0, [r7, #20]
  10580. huart->TxXferSize = Size;
  10581. 8004572: 68fb ldr r3, [r7, #12]
  10582. 8004574: 88fa ldrh r2, [r7, #6]
  10583. 8004576: 849a strh r2, [r3, #36] ; 0x24
  10584. huart->TxXferCount = Size;
  10585. 8004578: 68fb ldr r3, [r7, #12]
  10586. 800457a: 88fa ldrh r2, [r7, #6]
  10587. 800457c: 84da strh r2, [r3, #38] ; 0x26
  10588. while (huart->TxXferCount > 0U)
  10589. 800457e: e042 b.n 8004606 <HAL_UART_Transmit+0xf0>
  10590. {
  10591. huart->TxXferCount--;
  10592. 8004580: 68fb ldr r3, [r7, #12]
  10593. 8004582: 8cdb ldrh r3, [r3, #38] ; 0x26
  10594. 8004584: b29b uxth r3, r3
  10595. 8004586: 3b01 subs r3, #1
  10596. 8004588: b29a uxth r2, r3
  10597. 800458a: 68fb ldr r3, [r7, #12]
  10598. 800458c: 84da strh r2, [r3, #38] ; 0x26
  10599. if (huart->Init.WordLength == UART_WORDLENGTH_9B)
  10600. 800458e: 68fb ldr r3, [r7, #12]
  10601. 8004590: 689b ldr r3, [r3, #8]
  10602. 8004592: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
  10603. 8004596: d122 bne.n 80045de <HAL_UART_Transmit+0xc8>
  10604. {
  10605. if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
  10606. 8004598: 683b ldr r3, [r7, #0]
  10607. 800459a: 9300 str r3, [sp, #0]
  10608. 800459c: 697b ldr r3, [r7, #20]
  10609. 800459e: 2200 movs r2, #0
  10610. 80045a0: 2180 movs r1, #128 ; 0x80
  10611. 80045a2: 68f8 ldr r0, [r7, #12]
  10612. 80045a4: f000 fb73 bl 8004c8e <UART_WaitOnFlagUntilTimeout>
  10613. 80045a8: 4603 mov r3, r0
  10614. 80045aa: 2b00 cmp r3, #0
  10615. 80045ac: d001 beq.n 80045b2 <HAL_UART_Transmit+0x9c>
  10616. {
  10617. return HAL_TIMEOUT;
  10618. 80045ae: 2303 movs r3, #3
  10619. 80045b0: e046 b.n 8004640 <HAL_UART_Transmit+0x12a>
  10620. }
  10621. tmp = (uint16_t *) pData;
  10622. 80045b2: 68bb ldr r3, [r7, #8]
  10623. 80045b4: 613b str r3, [r7, #16]
  10624. huart->Instance->DR = (*tmp & (uint16_t)0x01FF);
  10625. 80045b6: 693b ldr r3, [r7, #16]
  10626. 80045b8: 881b ldrh r3, [r3, #0]
  10627. 80045ba: 461a mov r2, r3
  10628. 80045bc: 68fb ldr r3, [r7, #12]
  10629. 80045be: 681b ldr r3, [r3, #0]
  10630. 80045c0: f3c2 0208 ubfx r2, r2, #0, #9
  10631. 80045c4: 605a str r2, [r3, #4]
  10632. if (huart->Init.Parity == UART_PARITY_NONE)
  10633. 80045c6: 68fb ldr r3, [r7, #12]
  10634. 80045c8: 691b ldr r3, [r3, #16]
  10635. 80045ca: 2b00 cmp r3, #0
  10636. 80045cc: d103 bne.n 80045d6 <HAL_UART_Transmit+0xc0>
  10637. {
  10638. pData += 2U;
  10639. 80045ce: 68bb ldr r3, [r7, #8]
  10640. 80045d0: 3302 adds r3, #2
  10641. 80045d2: 60bb str r3, [r7, #8]
  10642. 80045d4: e017 b.n 8004606 <HAL_UART_Transmit+0xf0>
  10643. }
  10644. else
  10645. {
  10646. pData += 1U;
  10647. 80045d6: 68bb ldr r3, [r7, #8]
  10648. 80045d8: 3301 adds r3, #1
  10649. 80045da: 60bb str r3, [r7, #8]
  10650. 80045dc: e013 b.n 8004606 <HAL_UART_Transmit+0xf0>
  10651. }
  10652. }
  10653. else
  10654. {
  10655. if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
  10656. 80045de: 683b ldr r3, [r7, #0]
  10657. 80045e0: 9300 str r3, [sp, #0]
  10658. 80045e2: 697b ldr r3, [r7, #20]
  10659. 80045e4: 2200 movs r2, #0
  10660. 80045e6: 2180 movs r1, #128 ; 0x80
  10661. 80045e8: 68f8 ldr r0, [r7, #12]
  10662. 80045ea: f000 fb50 bl 8004c8e <UART_WaitOnFlagUntilTimeout>
  10663. 80045ee: 4603 mov r3, r0
  10664. 80045f0: 2b00 cmp r3, #0
  10665. 80045f2: d001 beq.n 80045f8 <HAL_UART_Transmit+0xe2>
  10666. {
  10667. return HAL_TIMEOUT;
  10668. 80045f4: 2303 movs r3, #3
  10669. 80045f6: e023 b.n 8004640 <HAL_UART_Transmit+0x12a>
  10670. }
  10671. huart->Instance->DR = (*pData++ & (uint8_t)0xFF);
  10672. 80045f8: 68bb ldr r3, [r7, #8]
  10673. 80045fa: 1c5a adds r2, r3, #1
  10674. 80045fc: 60ba str r2, [r7, #8]
  10675. 80045fe: 781a ldrb r2, [r3, #0]
  10676. 8004600: 68fb ldr r3, [r7, #12]
  10677. 8004602: 681b ldr r3, [r3, #0]
  10678. 8004604: 605a str r2, [r3, #4]
  10679. while (huart->TxXferCount > 0U)
  10680. 8004606: 68fb ldr r3, [r7, #12]
  10681. 8004608: 8cdb ldrh r3, [r3, #38] ; 0x26
  10682. 800460a: b29b uxth r3, r3
  10683. 800460c: 2b00 cmp r3, #0
  10684. 800460e: d1b7 bne.n 8004580 <HAL_UART_Transmit+0x6a>
  10685. }
  10686. }
  10687. if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK)
  10688. 8004610: 683b ldr r3, [r7, #0]
  10689. 8004612: 9300 str r3, [sp, #0]
  10690. 8004614: 697b ldr r3, [r7, #20]
  10691. 8004616: 2200 movs r2, #0
  10692. 8004618: 2140 movs r1, #64 ; 0x40
  10693. 800461a: 68f8 ldr r0, [r7, #12]
  10694. 800461c: f000 fb37 bl 8004c8e <UART_WaitOnFlagUntilTimeout>
  10695. 8004620: 4603 mov r3, r0
  10696. 8004622: 2b00 cmp r3, #0
  10697. 8004624: d001 beq.n 800462a <HAL_UART_Transmit+0x114>
  10698. {
  10699. return HAL_TIMEOUT;
  10700. 8004626: 2303 movs r3, #3
  10701. 8004628: e00a b.n 8004640 <HAL_UART_Transmit+0x12a>
  10702. }
  10703. /* At end of Tx process, restore huart->gState to Ready */
  10704. huart->gState = HAL_UART_STATE_READY;
  10705. 800462a: 68fb ldr r3, [r7, #12]
  10706. 800462c: 2220 movs r2, #32
  10707. 800462e: f883 2039 strb.w r2, [r3, #57] ; 0x39
  10708. /* Process Unlocked */
  10709. __HAL_UNLOCK(huart);
  10710. 8004632: 68fb ldr r3, [r7, #12]
  10711. 8004634: 2200 movs r2, #0
  10712. 8004636: f883 2038 strb.w r2, [r3, #56] ; 0x38
  10713. return HAL_OK;
  10714. 800463a: 2300 movs r3, #0
  10715. 800463c: e000 b.n 8004640 <HAL_UART_Transmit+0x12a>
  10716. }
  10717. else
  10718. {
  10719. return HAL_BUSY;
  10720. 800463e: 2302 movs r3, #2
  10721. }
  10722. }
  10723. 8004640: 4618 mov r0, r3
  10724. 8004642: 3718 adds r7, #24
  10725. 8004644: 46bd mov sp, r7
  10726. 8004646: bd80 pop {r7, pc}
  10727. 08004648 <HAL_UART_Receive_IT>:
  10728. * @param pData Pointer to data buffer (u8 or u16 data elements).
  10729. * @param Size Amount of data elements (u8 or u16) to be received.
  10730. * @retval HAL status
  10731. */
  10732. HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
  10733. {
  10734. 8004648: b480 push {r7}
  10735. 800464a: b085 sub sp, #20
  10736. 800464c: af00 add r7, sp, #0
  10737. 800464e: 60f8 str r0, [r7, #12]
  10738. 8004650: 60b9 str r1, [r7, #8]
  10739. 8004652: 4613 mov r3, r2
  10740. 8004654: 80fb strh r3, [r7, #6]
  10741. /* Check that a Rx process is not already ongoing */
  10742. if (huart->RxState == HAL_UART_STATE_READY)
  10743. 8004656: 68fb ldr r3, [r7, #12]
  10744. 8004658: f893 303a ldrb.w r3, [r3, #58] ; 0x3a
  10745. 800465c: b2db uxtb r3, r3
  10746. 800465e: 2b20 cmp r3, #32
  10747. 8004660: d140 bne.n 80046e4 <HAL_UART_Receive_IT+0x9c>
  10748. {
  10749. if ((pData == NULL) || (Size == 0U))
  10750. 8004662: 68bb ldr r3, [r7, #8]
  10751. 8004664: 2b00 cmp r3, #0
  10752. 8004666: d002 beq.n 800466e <HAL_UART_Receive_IT+0x26>
  10753. 8004668: 88fb ldrh r3, [r7, #6]
  10754. 800466a: 2b00 cmp r3, #0
  10755. 800466c: d101 bne.n 8004672 <HAL_UART_Receive_IT+0x2a>
  10756. {
  10757. return HAL_ERROR;
  10758. 800466e: 2301 movs r3, #1
  10759. 8004670: e039 b.n 80046e6 <HAL_UART_Receive_IT+0x9e>
  10760. }
  10761. /* Process Locked */
  10762. __HAL_LOCK(huart);
  10763. 8004672: 68fb ldr r3, [r7, #12]
  10764. 8004674: f893 3038 ldrb.w r3, [r3, #56] ; 0x38
  10765. 8004678: 2b01 cmp r3, #1
  10766. 800467a: d101 bne.n 8004680 <HAL_UART_Receive_IT+0x38>
  10767. 800467c: 2302 movs r3, #2
  10768. 800467e: e032 b.n 80046e6 <HAL_UART_Receive_IT+0x9e>
  10769. 8004680: 68fb ldr r3, [r7, #12]
  10770. 8004682: 2201 movs r2, #1
  10771. 8004684: f883 2038 strb.w r2, [r3, #56] ; 0x38
  10772. huart->pRxBuffPtr = pData;
  10773. 8004688: 68fb ldr r3, [r7, #12]
  10774. 800468a: 68ba ldr r2, [r7, #8]
  10775. 800468c: 629a str r2, [r3, #40] ; 0x28
  10776. huart->RxXferSize = Size;
  10777. 800468e: 68fb ldr r3, [r7, #12]
  10778. 8004690: 88fa ldrh r2, [r7, #6]
  10779. 8004692: 859a strh r2, [r3, #44] ; 0x2c
  10780. huart->RxXferCount = Size;
  10781. 8004694: 68fb ldr r3, [r7, #12]
  10782. 8004696: 88fa ldrh r2, [r7, #6]
  10783. 8004698: 85da strh r2, [r3, #46] ; 0x2e
  10784. huart->ErrorCode = HAL_UART_ERROR_NONE;
  10785. 800469a: 68fb ldr r3, [r7, #12]
  10786. 800469c: 2200 movs r2, #0
  10787. 800469e: 63da str r2, [r3, #60] ; 0x3c
  10788. huart->RxState = HAL_UART_STATE_BUSY_RX;
  10789. 80046a0: 68fb ldr r3, [r7, #12]
  10790. 80046a2: 2222 movs r2, #34 ; 0x22
  10791. 80046a4: f883 203a strb.w r2, [r3, #58] ; 0x3a
  10792. /* Process Unlocked */
  10793. __HAL_UNLOCK(huart);
  10794. 80046a8: 68fb ldr r3, [r7, #12]
  10795. 80046aa: 2200 movs r2, #0
  10796. 80046ac: f883 2038 strb.w r2, [r3, #56] ; 0x38
  10797. /* Enable the UART Parity Error Interrupt */
  10798. __HAL_UART_ENABLE_IT(huart, UART_IT_PE);
  10799. 80046b0: 68fb ldr r3, [r7, #12]
  10800. 80046b2: 681b ldr r3, [r3, #0]
  10801. 80046b4: 68da ldr r2, [r3, #12]
  10802. 80046b6: 68fb ldr r3, [r7, #12]
  10803. 80046b8: 681b ldr r3, [r3, #0]
  10804. 80046ba: f442 7280 orr.w r2, r2, #256 ; 0x100
  10805. 80046be: 60da str r2, [r3, #12]
  10806. /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */
  10807. __HAL_UART_ENABLE_IT(huart, UART_IT_ERR);
  10808. 80046c0: 68fb ldr r3, [r7, #12]
  10809. 80046c2: 681b ldr r3, [r3, #0]
  10810. 80046c4: 695a ldr r2, [r3, #20]
  10811. 80046c6: 68fb ldr r3, [r7, #12]
  10812. 80046c8: 681b ldr r3, [r3, #0]
  10813. 80046ca: f042 0201 orr.w r2, r2, #1
  10814. 80046ce: 615a str r2, [r3, #20]
  10815. /* Enable the UART Data Register not empty Interrupt */
  10816. __HAL_UART_ENABLE_IT(huart, UART_IT_RXNE);
  10817. 80046d0: 68fb ldr r3, [r7, #12]
  10818. 80046d2: 681b ldr r3, [r3, #0]
  10819. 80046d4: 68da ldr r2, [r3, #12]
  10820. 80046d6: 68fb ldr r3, [r7, #12]
  10821. 80046d8: 681b ldr r3, [r3, #0]
  10822. 80046da: f042 0220 orr.w r2, r2, #32
  10823. 80046de: 60da str r2, [r3, #12]
  10824. return HAL_OK;
  10825. 80046e0: 2300 movs r3, #0
  10826. 80046e2: e000 b.n 80046e6 <HAL_UART_Receive_IT+0x9e>
  10827. }
  10828. else
  10829. {
  10830. return HAL_BUSY;
  10831. 80046e4: 2302 movs r3, #2
  10832. }
  10833. }
  10834. 80046e6: 4618 mov r0, r3
  10835. 80046e8: 3714 adds r7, #20
  10836. 80046ea: 46bd mov sp, r7
  10837. 80046ec: bc80 pop {r7}
  10838. 80046ee: 4770 bx lr
  10839. 080046f0 <HAL_UART_Transmit_DMA>:
  10840. * @param pData Pointer to data buffer (u8 or u16 data elements).
  10841. * @param Size Amount of data elements (u8 or u16) to be sent
  10842. * @retval HAL status
  10843. */
  10844. HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
  10845. {
  10846. 80046f0: b580 push {r7, lr}
  10847. 80046f2: b086 sub sp, #24
  10848. 80046f4: af00 add r7, sp, #0
  10849. 80046f6: 60f8 str r0, [r7, #12]
  10850. 80046f8: 60b9 str r1, [r7, #8]
  10851. 80046fa: 4613 mov r3, r2
  10852. 80046fc: 80fb strh r3, [r7, #6]
  10853. uint32_t *tmp;
  10854. /* Check that a Tx process is not already ongoing */
  10855. if (huart->gState == HAL_UART_STATE_READY)
  10856. 80046fe: 68fb ldr r3, [r7, #12]
  10857. 8004700: f893 3039 ldrb.w r3, [r3, #57] ; 0x39
  10858. 8004704: b2db uxtb r3, r3
  10859. 8004706: 2b20 cmp r3, #32
  10860. 8004708: d153 bne.n 80047b2 <HAL_UART_Transmit_DMA+0xc2>
  10861. {
  10862. if ((pData == NULL) || (Size == 0U))
  10863. 800470a: 68bb ldr r3, [r7, #8]
  10864. 800470c: 2b00 cmp r3, #0
  10865. 800470e: d002 beq.n 8004716 <HAL_UART_Transmit_DMA+0x26>
  10866. 8004710: 88fb ldrh r3, [r7, #6]
  10867. 8004712: 2b00 cmp r3, #0
  10868. 8004714: d101 bne.n 800471a <HAL_UART_Transmit_DMA+0x2a>
  10869. {
  10870. return HAL_ERROR;
  10871. 8004716: 2301 movs r3, #1
  10872. 8004718: e04c b.n 80047b4 <HAL_UART_Transmit_DMA+0xc4>
  10873. }
  10874. /* Process Locked */
  10875. __HAL_LOCK(huart);
  10876. 800471a: 68fb ldr r3, [r7, #12]
  10877. 800471c: f893 3038 ldrb.w r3, [r3, #56] ; 0x38
  10878. 8004720: 2b01 cmp r3, #1
  10879. 8004722: d101 bne.n 8004728 <HAL_UART_Transmit_DMA+0x38>
  10880. 8004724: 2302 movs r3, #2
  10881. 8004726: e045 b.n 80047b4 <HAL_UART_Transmit_DMA+0xc4>
  10882. 8004728: 68fb ldr r3, [r7, #12]
  10883. 800472a: 2201 movs r2, #1
  10884. 800472c: f883 2038 strb.w r2, [r3, #56] ; 0x38
  10885. huart->pTxBuffPtr = pData;
  10886. 8004730: 68ba ldr r2, [r7, #8]
  10887. 8004732: 68fb ldr r3, [r7, #12]
  10888. 8004734: 621a str r2, [r3, #32]
  10889. huart->TxXferSize = Size;
  10890. 8004736: 68fb ldr r3, [r7, #12]
  10891. 8004738: 88fa ldrh r2, [r7, #6]
  10892. 800473a: 849a strh r2, [r3, #36] ; 0x24
  10893. huart->TxXferCount = Size;
  10894. 800473c: 68fb ldr r3, [r7, #12]
  10895. 800473e: 88fa ldrh r2, [r7, #6]
  10896. 8004740: 84da strh r2, [r3, #38] ; 0x26
  10897. huart->ErrorCode = HAL_UART_ERROR_NONE;
  10898. 8004742: 68fb ldr r3, [r7, #12]
  10899. 8004744: 2200 movs r2, #0
  10900. 8004746: 63da str r2, [r3, #60] ; 0x3c
  10901. huart->gState = HAL_UART_STATE_BUSY_TX;
  10902. 8004748: 68fb ldr r3, [r7, #12]
  10903. 800474a: 2221 movs r2, #33 ; 0x21
  10904. 800474c: f883 2039 strb.w r2, [r3, #57] ; 0x39
  10905. /* Set the UART DMA transfer complete callback */
  10906. huart->hdmatx->XferCpltCallback = UART_DMATransmitCplt;
  10907. 8004750: 68fb ldr r3, [r7, #12]
  10908. 8004752: 6b1b ldr r3, [r3, #48] ; 0x30
  10909. 8004754: 4a19 ldr r2, [pc, #100] ; (80047bc <HAL_UART_Transmit_DMA+0xcc>)
  10910. 8004756: 629a str r2, [r3, #40] ; 0x28
  10911. /* Set the UART DMA Half transfer complete callback */
  10912. huart->hdmatx->XferHalfCpltCallback = UART_DMATxHalfCplt;
  10913. 8004758: 68fb ldr r3, [r7, #12]
  10914. 800475a: 6b1b ldr r3, [r3, #48] ; 0x30
  10915. 800475c: 4a18 ldr r2, [pc, #96] ; (80047c0 <HAL_UART_Transmit_DMA+0xd0>)
  10916. 800475e: 62da str r2, [r3, #44] ; 0x2c
  10917. /* Set the DMA error callback */
  10918. huart->hdmatx->XferErrorCallback = UART_DMAError;
  10919. 8004760: 68fb ldr r3, [r7, #12]
  10920. 8004762: 6b1b ldr r3, [r3, #48] ; 0x30
  10921. 8004764: 4a17 ldr r2, [pc, #92] ; (80047c4 <HAL_UART_Transmit_DMA+0xd4>)
  10922. 8004766: 631a str r2, [r3, #48] ; 0x30
  10923. /* Set the DMA abort callback */
  10924. huart->hdmatx->XferAbortCallback = NULL;
  10925. 8004768: 68fb ldr r3, [r7, #12]
  10926. 800476a: 6b1b ldr r3, [r3, #48] ; 0x30
  10927. 800476c: 2200 movs r2, #0
  10928. 800476e: 635a str r2, [r3, #52] ; 0x34
  10929. /* Enable the UART transmit DMA channel */
  10930. tmp = (uint32_t *)&pData;
  10931. 8004770: f107 0308 add.w r3, r7, #8
  10932. 8004774: 617b str r3, [r7, #20]
  10933. HAL_DMA_Start_IT(huart->hdmatx, *(uint32_t *)tmp, (uint32_t)&huart->Instance->DR, Size);
  10934. 8004776: 68fb ldr r3, [r7, #12]
  10935. 8004778: 6b18 ldr r0, [r3, #48] ; 0x30
  10936. 800477a: 697b ldr r3, [r7, #20]
  10937. 800477c: 6819 ldr r1, [r3, #0]
  10938. 800477e: 68fb ldr r3, [r7, #12]
  10939. 8004780: 681b ldr r3, [r3, #0]
  10940. 8004782: 3304 adds r3, #4
  10941. 8004784: 461a mov r2, r3
  10942. 8004786: 88fb ldrh r3, [r7, #6]
  10943. 8004788: f7fe f966 bl 8002a58 <HAL_DMA_Start_IT>
  10944. /* Clear the TC flag in the SR register by writing 0 to it */
  10945. __HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
  10946. 800478c: 68fb ldr r3, [r7, #12]
  10947. 800478e: 681b ldr r3, [r3, #0]
  10948. 8004790: f06f 0240 mvn.w r2, #64 ; 0x40
  10949. 8004794: 601a str r2, [r3, #0]
  10950. /* Process Unlocked */
  10951. __HAL_UNLOCK(huart);
  10952. 8004796: 68fb ldr r3, [r7, #12]
  10953. 8004798: 2200 movs r2, #0
  10954. 800479a: f883 2038 strb.w r2, [r3, #56] ; 0x38
  10955. /* Enable the DMA transfer for transmit request by setting the DMAT bit
  10956. in the UART CR3 register */
  10957. SET_BIT(huart->Instance->CR3, USART_CR3_DMAT);
  10958. 800479e: 68fb ldr r3, [r7, #12]
  10959. 80047a0: 681b ldr r3, [r3, #0]
  10960. 80047a2: 695a ldr r2, [r3, #20]
  10961. 80047a4: 68fb ldr r3, [r7, #12]
  10962. 80047a6: 681b ldr r3, [r3, #0]
  10963. 80047a8: f042 0280 orr.w r2, r2, #128 ; 0x80
  10964. 80047ac: 615a str r2, [r3, #20]
  10965. return HAL_OK;
  10966. 80047ae: 2300 movs r3, #0
  10967. 80047b0: e000 b.n 80047b4 <HAL_UART_Transmit_DMA+0xc4>
  10968. }
  10969. else
  10970. {
  10971. return HAL_BUSY;
  10972. 80047b2: 2302 movs r3, #2
  10973. }
  10974. }
  10975. 80047b4: 4618 mov r0, r3
  10976. 80047b6: 3718 adds r7, #24
  10977. 80047b8: 46bd mov sp, r7
  10978. 80047ba: bd80 pop {r7, pc}
  10979. 80047bc: 08004b09 .word 0x08004b09
  10980. 80047c0: 08004b5b .word 0x08004b5b
  10981. 80047c4: 08004bfb .word 0x08004bfb
  10982. 080047c8 <HAL_UART_Receive_DMA>:
  10983. * @param Size Amount of data elements (u8 or u16) to be received.
  10984. * @note When the UART parity is enabled (PCE = 1) the received data contains the parity bit.
  10985. * @retval HAL status
  10986. */
  10987. HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
  10988. {
  10989. 80047c8: b580 push {r7, lr}
  10990. 80047ca: b086 sub sp, #24
  10991. 80047cc: af00 add r7, sp, #0
  10992. 80047ce: 60f8 str r0, [r7, #12]
  10993. 80047d0: 60b9 str r1, [r7, #8]
  10994. 80047d2: 4613 mov r3, r2
  10995. 80047d4: 80fb strh r3, [r7, #6]
  10996. uint32_t *tmp;
  10997. /* Check that a Rx process is not already ongoing */
  10998. if (huart->RxState == HAL_UART_STATE_READY)
  10999. 80047d6: 68fb ldr r3, [r7, #12]
  11000. 80047d8: f893 303a ldrb.w r3, [r3, #58] ; 0x3a
  11001. 80047dc: b2db uxtb r3, r3
  11002. 80047de: 2b20 cmp r3, #32
  11003. 80047e0: d166 bne.n 80048b0 <HAL_UART_Receive_DMA+0xe8>
  11004. {
  11005. if ((pData == NULL) || (Size == 0U))
  11006. 80047e2: 68bb ldr r3, [r7, #8]
  11007. 80047e4: 2b00 cmp r3, #0
  11008. 80047e6: d002 beq.n 80047ee <HAL_UART_Receive_DMA+0x26>
  11009. 80047e8: 88fb ldrh r3, [r7, #6]
  11010. 80047ea: 2b00 cmp r3, #0
  11011. 80047ec: d101 bne.n 80047f2 <HAL_UART_Receive_DMA+0x2a>
  11012. {
  11013. return HAL_ERROR;
  11014. 80047ee: 2301 movs r3, #1
  11015. 80047f0: e05f b.n 80048b2 <HAL_UART_Receive_DMA+0xea>
  11016. }
  11017. /* Process Locked */
  11018. __HAL_LOCK(huart);
  11019. 80047f2: 68fb ldr r3, [r7, #12]
  11020. 80047f4: f893 3038 ldrb.w r3, [r3, #56] ; 0x38
  11021. 80047f8: 2b01 cmp r3, #1
  11022. 80047fa: d101 bne.n 8004800 <HAL_UART_Receive_DMA+0x38>
  11023. 80047fc: 2302 movs r3, #2
  11024. 80047fe: e058 b.n 80048b2 <HAL_UART_Receive_DMA+0xea>
  11025. 8004800: 68fb ldr r3, [r7, #12]
  11026. 8004802: 2201 movs r2, #1
  11027. 8004804: f883 2038 strb.w r2, [r3, #56] ; 0x38
  11028. huart->pRxBuffPtr = pData;
  11029. 8004808: 68ba ldr r2, [r7, #8]
  11030. 800480a: 68fb ldr r3, [r7, #12]
  11031. 800480c: 629a str r2, [r3, #40] ; 0x28
  11032. huart->RxXferSize = Size;
  11033. 800480e: 68fb ldr r3, [r7, #12]
  11034. 8004810: 88fa ldrh r2, [r7, #6]
  11035. 8004812: 859a strh r2, [r3, #44] ; 0x2c
  11036. huart->ErrorCode = HAL_UART_ERROR_NONE;
  11037. 8004814: 68fb ldr r3, [r7, #12]
  11038. 8004816: 2200 movs r2, #0
  11039. 8004818: 63da str r2, [r3, #60] ; 0x3c
  11040. huart->RxState = HAL_UART_STATE_BUSY_RX;
  11041. 800481a: 68fb ldr r3, [r7, #12]
  11042. 800481c: 2222 movs r2, #34 ; 0x22
  11043. 800481e: f883 203a strb.w r2, [r3, #58] ; 0x3a
  11044. /* Set the UART DMA transfer complete callback */
  11045. huart->hdmarx->XferCpltCallback = UART_DMAReceiveCplt;
  11046. 8004822: 68fb ldr r3, [r7, #12]
  11047. 8004824: 6b5b ldr r3, [r3, #52] ; 0x34
  11048. 8004826: 4a25 ldr r2, [pc, #148] ; (80048bc <HAL_UART_Receive_DMA+0xf4>)
  11049. 8004828: 629a str r2, [r3, #40] ; 0x28
  11050. /* Set the UART DMA Half transfer complete callback */
  11051. huart->hdmarx->XferHalfCpltCallback = UART_DMARxHalfCplt;
  11052. 800482a: 68fb ldr r3, [r7, #12]
  11053. 800482c: 6b5b ldr r3, [r3, #52] ; 0x34
  11054. 800482e: 4a24 ldr r2, [pc, #144] ; (80048c0 <HAL_UART_Receive_DMA+0xf8>)
  11055. 8004830: 62da str r2, [r3, #44] ; 0x2c
  11056. /* Set the DMA error callback */
  11057. huart->hdmarx->XferErrorCallback = UART_DMAError;
  11058. 8004832: 68fb ldr r3, [r7, #12]
  11059. 8004834: 6b5b ldr r3, [r3, #52] ; 0x34
  11060. 8004836: 4a23 ldr r2, [pc, #140] ; (80048c4 <HAL_UART_Receive_DMA+0xfc>)
  11061. 8004838: 631a str r2, [r3, #48] ; 0x30
  11062. /* Set the DMA abort callback */
  11063. huart->hdmarx->XferAbortCallback = NULL;
  11064. 800483a: 68fb ldr r3, [r7, #12]
  11065. 800483c: 6b5b ldr r3, [r3, #52] ; 0x34
  11066. 800483e: 2200 movs r2, #0
  11067. 8004840: 635a str r2, [r3, #52] ; 0x34
  11068. /* Enable the DMA channel */
  11069. tmp = (uint32_t *)&pData;
  11070. 8004842: f107 0308 add.w r3, r7, #8
  11071. 8004846: 617b str r3, [r7, #20]
  11072. HAL_DMA_Start_IT(huart->hdmarx, (uint32_t)&huart->Instance->DR, *(uint32_t *)tmp, Size);
  11073. 8004848: 68fb ldr r3, [r7, #12]
  11074. 800484a: 6b58 ldr r0, [r3, #52] ; 0x34
  11075. 800484c: 68fb ldr r3, [r7, #12]
  11076. 800484e: 681b ldr r3, [r3, #0]
  11077. 8004850: 3304 adds r3, #4
  11078. 8004852: 4619 mov r1, r3
  11079. 8004854: 697b ldr r3, [r7, #20]
  11080. 8004856: 681a ldr r2, [r3, #0]
  11081. 8004858: 88fb ldrh r3, [r7, #6]
  11082. 800485a: f7fe f8fd bl 8002a58 <HAL_DMA_Start_IT>
  11083. /* Clear the Overrun flag just before enabling the DMA Rx request: can be mandatory for the second transfer */
  11084. __HAL_UART_CLEAR_OREFLAG(huart);
  11085. 800485e: 2300 movs r3, #0
  11086. 8004860: 613b str r3, [r7, #16]
  11087. 8004862: 68fb ldr r3, [r7, #12]
  11088. 8004864: 681b ldr r3, [r3, #0]
  11089. 8004866: 681b ldr r3, [r3, #0]
  11090. 8004868: 613b str r3, [r7, #16]
  11091. 800486a: 68fb ldr r3, [r7, #12]
  11092. 800486c: 681b ldr r3, [r3, #0]
  11093. 800486e: 685b ldr r3, [r3, #4]
  11094. 8004870: 613b str r3, [r7, #16]
  11095. 8004872: 693b ldr r3, [r7, #16]
  11096. /* Process Unlocked */
  11097. __HAL_UNLOCK(huart);
  11098. 8004874: 68fb ldr r3, [r7, #12]
  11099. 8004876: 2200 movs r2, #0
  11100. 8004878: f883 2038 strb.w r2, [r3, #56] ; 0x38
  11101. /* Enable the UART Parity Error Interrupt */
  11102. SET_BIT(huart->Instance->CR1, USART_CR1_PEIE);
  11103. 800487c: 68fb ldr r3, [r7, #12]
  11104. 800487e: 681b ldr r3, [r3, #0]
  11105. 8004880: 68da ldr r2, [r3, #12]
  11106. 8004882: 68fb ldr r3, [r7, #12]
  11107. 8004884: 681b ldr r3, [r3, #0]
  11108. 8004886: f442 7280 orr.w r2, r2, #256 ; 0x100
  11109. 800488a: 60da str r2, [r3, #12]
  11110. /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */
  11111. SET_BIT(huart->Instance->CR3, USART_CR3_EIE);
  11112. 800488c: 68fb ldr r3, [r7, #12]
  11113. 800488e: 681b ldr r3, [r3, #0]
  11114. 8004890: 695a ldr r2, [r3, #20]
  11115. 8004892: 68fb ldr r3, [r7, #12]
  11116. 8004894: 681b ldr r3, [r3, #0]
  11117. 8004896: f042 0201 orr.w r2, r2, #1
  11118. 800489a: 615a str r2, [r3, #20]
  11119. /* Enable the DMA transfer for the receiver request by setting the DMAR bit
  11120. in the UART CR3 register */
  11121. SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);
  11122. 800489c: 68fb ldr r3, [r7, #12]
  11123. 800489e: 681b ldr r3, [r3, #0]
  11124. 80048a0: 695a ldr r2, [r3, #20]
  11125. 80048a2: 68fb ldr r3, [r7, #12]
  11126. 80048a4: 681b ldr r3, [r3, #0]
  11127. 80048a6: f042 0240 orr.w r2, r2, #64 ; 0x40
  11128. 80048aa: 615a str r2, [r3, #20]
  11129. return HAL_OK;
  11130. 80048ac: 2300 movs r3, #0
  11131. 80048ae: e000 b.n 80048b2 <HAL_UART_Receive_DMA+0xea>
  11132. }
  11133. else
  11134. {
  11135. return HAL_BUSY;
  11136. 80048b0: 2302 movs r3, #2
  11137. }
  11138. }
  11139. 80048b2: 4618 mov r0, r3
  11140. 80048b4: 3718 adds r7, #24
  11141. 80048b6: 46bd mov sp, r7
  11142. 80048b8: bd80 pop {r7, pc}
  11143. 80048ba: bf00 nop
  11144. 80048bc: 08004b77 .word 0x08004b77
  11145. 80048c0: 08004bdf .word 0x08004bdf
  11146. 80048c4: 08004bfb .word 0x08004bfb
  11147. 080048c8 <HAL_UART_IRQHandler>:
  11148. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  11149. * the configuration information for the specified UART module.
  11150. * @retval None
  11151. */
  11152. void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
  11153. {
  11154. 80048c8: b580 push {r7, lr}
  11155. 80048ca: b088 sub sp, #32
  11156. 80048cc: af00 add r7, sp, #0
  11157. 80048ce: 6078 str r0, [r7, #4]
  11158. uint32_t isrflags = READ_REG(huart->Instance->SR);
  11159. 80048d0: 687b ldr r3, [r7, #4]
  11160. 80048d2: 681b ldr r3, [r3, #0]
  11161. 80048d4: 681b ldr r3, [r3, #0]
  11162. 80048d6: 61fb str r3, [r7, #28]
  11163. uint32_t cr1its = READ_REG(huart->Instance->CR1);
  11164. 80048d8: 687b ldr r3, [r7, #4]
  11165. 80048da: 681b ldr r3, [r3, #0]
  11166. 80048dc: 68db ldr r3, [r3, #12]
  11167. 80048de: 61bb str r3, [r7, #24]
  11168. uint32_t cr3its = READ_REG(huart->Instance->CR3);
  11169. 80048e0: 687b ldr r3, [r7, #4]
  11170. 80048e2: 681b ldr r3, [r3, #0]
  11171. 80048e4: 695b ldr r3, [r3, #20]
  11172. 80048e6: 617b str r3, [r7, #20]
  11173. uint32_t errorflags = 0x00U;
  11174. 80048e8: 2300 movs r3, #0
  11175. 80048ea: 613b str r3, [r7, #16]
  11176. uint32_t dmarequest = 0x00U;
  11177. 80048ec: 2300 movs r3, #0
  11178. 80048ee: 60fb str r3, [r7, #12]
  11179. /* If no error occurs */
  11180. errorflags = (isrflags & (uint32_t)(USART_SR_PE | USART_SR_FE | USART_SR_ORE | USART_SR_NE));
  11181. 80048f0: 69fb ldr r3, [r7, #28]
  11182. 80048f2: f003 030f and.w r3, r3, #15
  11183. 80048f6: 613b str r3, [r7, #16]
  11184. if (errorflags == RESET)
  11185. 80048f8: 693b ldr r3, [r7, #16]
  11186. 80048fa: 2b00 cmp r3, #0
  11187. 80048fc: d10d bne.n 800491a <HAL_UART_IRQHandler+0x52>
  11188. {
  11189. /* UART in mode Receiver -------------------------------------------------*/
  11190. if (((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET))
  11191. 80048fe: 69fb ldr r3, [r7, #28]
  11192. 8004900: f003 0320 and.w r3, r3, #32
  11193. 8004904: 2b00 cmp r3, #0
  11194. 8004906: d008 beq.n 800491a <HAL_UART_IRQHandler+0x52>
  11195. 8004908: 69bb ldr r3, [r7, #24]
  11196. 800490a: f003 0320 and.w r3, r3, #32
  11197. 800490e: 2b00 cmp r3, #0
  11198. 8004910: d003 beq.n 800491a <HAL_UART_IRQHandler+0x52>
  11199. {
  11200. UART_Receive_IT(huart);
  11201. 8004912: 6878 ldr r0, [r7, #4]
  11202. 8004914: f000 fab8 bl 8004e88 <UART_Receive_IT>
  11203. return;
  11204. 8004918: e0cc b.n 8004ab4 <HAL_UART_IRQHandler+0x1ec>
  11205. }
  11206. }
  11207. /* If some errors occur */
  11208. if ((errorflags != RESET) && (((cr3its & USART_CR3_EIE) != RESET) || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != RESET)))
  11209. 800491a: 693b ldr r3, [r7, #16]
  11210. 800491c: 2b00 cmp r3, #0
  11211. 800491e: f000 80ab beq.w 8004a78 <HAL_UART_IRQHandler+0x1b0>
  11212. 8004922: 697b ldr r3, [r7, #20]
  11213. 8004924: f003 0301 and.w r3, r3, #1
  11214. 8004928: 2b00 cmp r3, #0
  11215. 800492a: d105 bne.n 8004938 <HAL_UART_IRQHandler+0x70>
  11216. 800492c: 69bb ldr r3, [r7, #24]
  11217. 800492e: f403 7390 and.w r3, r3, #288 ; 0x120
  11218. 8004932: 2b00 cmp r3, #0
  11219. 8004934: f000 80a0 beq.w 8004a78 <HAL_UART_IRQHandler+0x1b0>
  11220. {
  11221. /* UART parity error interrupt occurred ----------------------------------*/
  11222. if (((isrflags & USART_SR_PE) != RESET) && ((cr1its & USART_CR1_PEIE) != RESET))
  11223. 8004938: 69fb ldr r3, [r7, #28]
  11224. 800493a: f003 0301 and.w r3, r3, #1
  11225. 800493e: 2b00 cmp r3, #0
  11226. 8004940: d00a beq.n 8004958 <HAL_UART_IRQHandler+0x90>
  11227. 8004942: 69bb ldr r3, [r7, #24]
  11228. 8004944: f403 7380 and.w r3, r3, #256 ; 0x100
  11229. 8004948: 2b00 cmp r3, #0
  11230. 800494a: d005 beq.n 8004958 <HAL_UART_IRQHandler+0x90>
  11231. {
  11232. huart->ErrorCode |= HAL_UART_ERROR_PE;
  11233. 800494c: 687b ldr r3, [r7, #4]
  11234. 800494e: 6bdb ldr r3, [r3, #60] ; 0x3c
  11235. 8004950: f043 0201 orr.w r2, r3, #1
  11236. 8004954: 687b ldr r3, [r7, #4]
  11237. 8004956: 63da str r2, [r3, #60] ; 0x3c
  11238. }
  11239. /* UART noise error interrupt occurred -----------------------------------*/
  11240. if (((isrflags & USART_SR_NE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET))
  11241. 8004958: 69fb ldr r3, [r7, #28]
  11242. 800495a: f003 0304 and.w r3, r3, #4
  11243. 800495e: 2b00 cmp r3, #0
  11244. 8004960: d00a beq.n 8004978 <HAL_UART_IRQHandler+0xb0>
  11245. 8004962: 697b ldr r3, [r7, #20]
  11246. 8004964: f003 0301 and.w r3, r3, #1
  11247. 8004968: 2b00 cmp r3, #0
  11248. 800496a: d005 beq.n 8004978 <HAL_UART_IRQHandler+0xb0>
  11249. {
  11250. huart->ErrorCode |= HAL_UART_ERROR_NE;
  11251. 800496c: 687b ldr r3, [r7, #4]
  11252. 800496e: 6bdb ldr r3, [r3, #60] ; 0x3c
  11253. 8004970: f043 0202 orr.w r2, r3, #2
  11254. 8004974: 687b ldr r3, [r7, #4]
  11255. 8004976: 63da str r2, [r3, #60] ; 0x3c
  11256. }
  11257. /* UART frame error interrupt occurred -----------------------------------*/
  11258. if (((isrflags & USART_SR_FE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET))
  11259. 8004978: 69fb ldr r3, [r7, #28]
  11260. 800497a: f003 0302 and.w r3, r3, #2
  11261. 800497e: 2b00 cmp r3, #0
  11262. 8004980: d00a beq.n 8004998 <HAL_UART_IRQHandler+0xd0>
  11263. 8004982: 697b ldr r3, [r7, #20]
  11264. 8004984: f003 0301 and.w r3, r3, #1
  11265. 8004988: 2b00 cmp r3, #0
  11266. 800498a: d005 beq.n 8004998 <HAL_UART_IRQHandler+0xd0>
  11267. {
  11268. huart->ErrorCode |= HAL_UART_ERROR_FE;
  11269. 800498c: 687b ldr r3, [r7, #4]
  11270. 800498e: 6bdb ldr r3, [r3, #60] ; 0x3c
  11271. 8004990: f043 0204 orr.w r2, r3, #4
  11272. 8004994: 687b ldr r3, [r7, #4]
  11273. 8004996: 63da str r2, [r3, #60] ; 0x3c
  11274. }
  11275. /* UART Over-Run interrupt occurred --------------------------------------*/
  11276. if (((isrflags & USART_SR_ORE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET))
  11277. 8004998: 69fb ldr r3, [r7, #28]
  11278. 800499a: f003 0308 and.w r3, r3, #8
  11279. 800499e: 2b00 cmp r3, #0
  11280. 80049a0: d00a beq.n 80049b8 <HAL_UART_IRQHandler+0xf0>
  11281. 80049a2: 697b ldr r3, [r7, #20]
  11282. 80049a4: f003 0301 and.w r3, r3, #1
  11283. 80049a8: 2b00 cmp r3, #0
  11284. 80049aa: d005 beq.n 80049b8 <HAL_UART_IRQHandler+0xf0>
  11285. {
  11286. huart->ErrorCode |= HAL_UART_ERROR_ORE;
  11287. 80049ac: 687b ldr r3, [r7, #4]
  11288. 80049ae: 6bdb ldr r3, [r3, #60] ; 0x3c
  11289. 80049b0: f043 0208 orr.w r2, r3, #8
  11290. 80049b4: 687b ldr r3, [r7, #4]
  11291. 80049b6: 63da str r2, [r3, #60] ; 0x3c
  11292. }
  11293. /* Call UART Error Call back function if need be --------------------------*/
  11294. if (huart->ErrorCode != HAL_UART_ERROR_NONE)
  11295. 80049b8: 687b ldr r3, [r7, #4]
  11296. 80049ba: 6bdb ldr r3, [r3, #60] ; 0x3c
  11297. 80049bc: 2b00 cmp r3, #0
  11298. 80049be: d078 beq.n 8004ab2 <HAL_UART_IRQHandler+0x1ea>
  11299. {
  11300. /* UART in mode Receiver -----------------------------------------------*/
  11301. if (((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET))
  11302. 80049c0: 69fb ldr r3, [r7, #28]
  11303. 80049c2: f003 0320 and.w r3, r3, #32
  11304. 80049c6: 2b00 cmp r3, #0
  11305. 80049c8: d007 beq.n 80049da <HAL_UART_IRQHandler+0x112>
  11306. 80049ca: 69bb ldr r3, [r7, #24]
  11307. 80049cc: f003 0320 and.w r3, r3, #32
  11308. 80049d0: 2b00 cmp r3, #0
  11309. 80049d2: d002 beq.n 80049da <HAL_UART_IRQHandler+0x112>
  11310. {
  11311. UART_Receive_IT(huart);
  11312. 80049d4: 6878 ldr r0, [r7, #4]
  11313. 80049d6: f000 fa57 bl 8004e88 <UART_Receive_IT>
  11314. }
  11315. /* If Overrun error occurs, or if any error occurs in DMA mode reception,
  11316. consider error as blocking */
  11317. dmarequest = HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR);
  11318. 80049da: 687b ldr r3, [r7, #4]
  11319. 80049dc: 681b ldr r3, [r3, #0]
  11320. 80049de: 695b ldr r3, [r3, #20]
  11321. 80049e0: f003 0340 and.w r3, r3, #64 ; 0x40
  11322. 80049e4: 2b00 cmp r3, #0
  11323. 80049e6: bf14 ite ne
  11324. 80049e8: 2301 movne r3, #1
  11325. 80049ea: 2300 moveq r3, #0
  11326. 80049ec: b2db uxtb r3, r3
  11327. 80049ee: 60fb str r3, [r7, #12]
  11328. if (((huart->ErrorCode & HAL_UART_ERROR_ORE) != RESET) || dmarequest)
  11329. 80049f0: 687b ldr r3, [r7, #4]
  11330. 80049f2: 6bdb ldr r3, [r3, #60] ; 0x3c
  11331. 80049f4: f003 0308 and.w r3, r3, #8
  11332. 80049f8: 2b00 cmp r3, #0
  11333. 80049fa: d102 bne.n 8004a02 <HAL_UART_IRQHandler+0x13a>
  11334. 80049fc: 68fb ldr r3, [r7, #12]
  11335. 80049fe: 2b00 cmp r3, #0
  11336. 8004a00: d031 beq.n 8004a66 <HAL_UART_IRQHandler+0x19e>
  11337. {
  11338. /* Blocking error : transfer is aborted
  11339. Set the UART state ready to be able to start again the process,
  11340. Disable Rx Interrupts, and disable Rx DMA request, if ongoing */
  11341. UART_EndRxTransfer(huart);
  11342. 8004a02: 6878 ldr r0, [r7, #4]
  11343. 8004a04: f000 f9a2 bl 8004d4c <UART_EndRxTransfer>
  11344. /* Disable the UART DMA Rx request if enabled */
  11345. if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
  11346. 8004a08: 687b ldr r3, [r7, #4]
  11347. 8004a0a: 681b ldr r3, [r3, #0]
  11348. 8004a0c: 695b ldr r3, [r3, #20]
  11349. 8004a0e: f003 0340 and.w r3, r3, #64 ; 0x40
  11350. 8004a12: 2b00 cmp r3, #0
  11351. 8004a14: d023 beq.n 8004a5e <HAL_UART_IRQHandler+0x196>
  11352. {
  11353. CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
  11354. 8004a16: 687b ldr r3, [r7, #4]
  11355. 8004a18: 681b ldr r3, [r3, #0]
  11356. 8004a1a: 695a ldr r2, [r3, #20]
  11357. 8004a1c: 687b ldr r3, [r7, #4]
  11358. 8004a1e: 681b ldr r3, [r3, #0]
  11359. 8004a20: f022 0240 bic.w r2, r2, #64 ; 0x40
  11360. 8004a24: 615a str r2, [r3, #20]
  11361. /* Abort the UART DMA Rx channel */
  11362. if (huart->hdmarx != NULL)
  11363. 8004a26: 687b ldr r3, [r7, #4]
  11364. 8004a28: 6b5b ldr r3, [r3, #52] ; 0x34
  11365. 8004a2a: 2b00 cmp r3, #0
  11366. 8004a2c: d013 beq.n 8004a56 <HAL_UART_IRQHandler+0x18e>
  11367. {
  11368. /* Set the UART DMA Abort callback :
  11369. will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */
  11370. huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError;
  11371. 8004a2e: 687b ldr r3, [r7, #4]
  11372. 8004a30: 6b5b ldr r3, [r3, #52] ; 0x34
  11373. 8004a32: 4a22 ldr r2, [pc, #136] ; (8004abc <HAL_UART_IRQHandler+0x1f4>)
  11374. 8004a34: 635a str r2, [r3, #52] ; 0x34
  11375. if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)
  11376. 8004a36: 687b ldr r3, [r7, #4]
  11377. 8004a38: 6b5b ldr r3, [r3, #52] ; 0x34
  11378. 8004a3a: 4618 mov r0, r3
  11379. 8004a3c: f7fe f86c bl 8002b18 <HAL_DMA_Abort_IT>
  11380. 8004a40: 4603 mov r3, r0
  11381. 8004a42: 2b00 cmp r3, #0
  11382. 8004a44: d016 beq.n 8004a74 <HAL_UART_IRQHandler+0x1ac>
  11383. {
  11384. /* Call Directly XferAbortCallback function in case of error */
  11385. huart->hdmarx->XferAbortCallback(huart->hdmarx);
  11386. 8004a46: 687b ldr r3, [r7, #4]
  11387. 8004a48: 6b5b ldr r3, [r3, #52] ; 0x34
  11388. 8004a4a: 6b5b ldr r3, [r3, #52] ; 0x34
  11389. 8004a4c: 687a ldr r2, [r7, #4]
  11390. 8004a4e: 6b52 ldr r2, [r2, #52] ; 0x34
  11391. 8004a50: 4610 mov r0, r2
  11392. 8004a52: 4798 blx r3
  11393. if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
  11394. 8004a54: e00e b.n 8004a74 <HAL_UART_IRQHandler+0x1ac>
  11395. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  11396. /*Call registered error callback*/
  11397. huart->ErrorCallback(huart);
  11398. #else
  11399. /*Call legacy weak error callback*/
  11400. HAL_UART_ErrorCallback(huart);
  11401. 8004a56: 6878 ldr r0, [r7, #4]
  11402. 8004a58: f000 f84d bl 8004af6 <HAL_UART_ErrorCallback>
  11403. if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
  11404. 8004a5c: e00a b.n 8004a74 <HAL_UART_IRQHandler+0x1ac>
  11405. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  11406. /*Call registered error callback*/
  11407. huart->ErrorCallback(huart);
  11408. #else
  11409. /*Call legacy weak error callback*/
  11410. HAL_UART_ErrorCallback(huart);
  11411. 8004a5e: 6878 ldr r0, [r7, #4]
  11412. 8004a60: f000 f849 bl 8004af6 <HAL_UART_ErrorCallback>
  11413. if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
  11414. 8004a64: e006 b.n 8004a74 <HAL_UART_IRQHandler+0x1ac>
  11415. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  11416. /*Call registered error callback*/
  11417. huart->ErrorCallback(huart);
  11418. #else
  11419. /*Call legacy weak error callback*/
  11420. HAL_UART_ErrorCallback(huart);
  11421. 8004a66: 6878 ldr r0, [r7, #4]
  11422. 8004a68: f000 f845 bl 8004af6 <HAL_UART_ErrorCallback>
  11423. #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
  11424. huart->ErrorCode = HAL_UART_ERROR_NONE;
  11425. 8004a6c: 687b ldr r3, [r7, #4]
  11426. 8004a6e: 2200 movs r2, #0
  11427. 8004a70: 63da str r2, [r3, #60] ; 0x3c
  11428. }
  11429. }
  11430. return;
  11431. 8004a72: e01e b.n 8004ab2 <HAL_UART_IRQHandler+0x1ea>
  11432. if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
  11433. 8004a74: bf00 nop
  11434. return;
  11435. 8004a76: e01c b.n 8004ab2 <HAL_UART_IRQHandler+0x1ea>
  11436. } /* End if some error occurs */
  11437. /* UART in mode Transmitter ------------------------------------------------*/
  11438. if (((isrflags & USART_SR_TXE) != RESET) && ((cr1its & USART_CR1_TXEIE) != RESET))
  11439. 8004a78: 69fb ldr r3, [r7, #28]
  11440. 8004a7a: f003 0380 and.w r3, r3, #128 ; 0x80
  11441. 8004a7e: 2b00 cmp r3, #0
  11442. 8004a80: d008 beq.n 8004a94 <HAL_UART_IRQHandler+0x1cc>
  11443. 8004a82: 69bb ldr r3, [r7, #24]
  11444. 8004a84: f003 0380 and.w r3, r3, #128 ; 0x80
  11445. 8004a88: 2b00 cmp r3, #0
  11446. 8004a8a: d003 beq.n 8004a94 <HAL_UART_IRQHandler+0x1cc>
  11447. {
  11448. UART_Transmit_IT(huart);
  11449. 8004a8c: 6878 ldr r0, [r7, #4]
  11450. 8004a8e: f000 f98e bl 8004dae <UART_Transmit_IT>
  11451. return;
  11452. 8004a92: e00f b.n 8004ab4 <HAL_UART_IRQHandler+0x1ec>
  11453. }
  11454. /* UART in mode Transmitter end --------------------------------------------*/
  11455. if (((isrflags & USART_SR_TC) != RESET) && ((cr1its & USART_CR1_TCIE) != RESET))
  11456. 8004a94: 69fb ldr r3, [r7, #28]
  11457. 8004a96: f003 0340 and.w r3, r3, #64 ; 0x40
  11458. 8004a9a: 2b00 cmp r3, #0
  11459. 8004a9c: d00a beq.n 8004ab4 <HAL_UART_IRQHandler+0x1ec>
  11460. 8004a9e: 69bb ldr r3, [r7, #24]
  11461. 8004aa0: f003 0340 and.w r3, r3, #64 ; 0x40
  11462. 8004aa4: 2b00 cmp r3, #0
  11463. 8004aa6: d005 beq.n 8004ab4 <HAL_UART_IRQHandler+0x1ec>
  11464. {
  11465. UART_EndTransmit_IT(huart);
  11466. 8004aa8: 6878 ldr r0, [r7, #4]
  11467. 8004aaa: f000 f9d5 bl 8004e58 <UART_EndTransmit_IT>
  11468. return;
  11469. 8004aae: bf00 nop
  11470. 8004ab0: e000 b.n 8004ab4 <HAL_UART_IRQHandler+0x1ec>
  11471. return;
  11472. 8004ab2: bf00 nop
  11473. }
  11474. }
  11475. 8004ab4: 3720 adds r7, #32
  11476. 8004ab6: 46bd mov sp, r7
  11477. 8004ab8: bd80 pop {r7, pc}
  11478. 8004aba: bf00 nop
  11479. 8004abc: 08004d87 .word 0x08004d87
  11480. 08004ac0 <HAL_UART_TxCpltCallback>:
  11481. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  11482. * the configuration information for the specified UART module.
  11483. * @retval None
  11484. */
  11485. __weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
  11486. {
  11487. 8004ac0: b480 push {r7}
  11488. 8004ac2: b083 sub sp, #12
  11489. 8004ac4: af00 add r7, sp, #0
  11490. 8004ac6: 6078 str r0, [r7, #4]
  11491. /* Prevent unused argument(s) compilation warning */
  11492. UNUSED(huart);
  11493. /* NOTE: This function should not be modified, when the callback is needed,
  11494. the HAL_UART_TxCpltCallback could be implemented in the user file
  11495. */
  11496. }
  11497. 8004ac8: bf00 nop
  11498. 8004aca: 370c adds r7, #12
  11499. 8004acc: 46bd mov sp, r7
  11500. 8004ace: bc80 pop {r7}
  11501. 8004ad0: 4770 bx lr
  11502. 08004ad2 <HAL_UART_TxHalfCpltCallback>:
  11503. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  11504. * the configuration information for the specified UART module.
  11505. * @retval None
  11506. */
  11507. __weak void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart)
  11508. {
  11509. 8004ad2: b480 push {r7}
  11510. 8004ad4: b083 sub sp, #12
  11511. 8004ad6: af00 add r7, sp, #0
  11512. 8004ad8: 6078 str r0, [r7, #4]
  11513. /* Prevent unused argument(s) compilation warning */
  11514. UNUSED(huart);
  11515. /* NOTE: This function should not be modified, when the callback is needed,
  11516. the HAL_UART_TxHalfCpltCallback could be implemented in the user file
  11517. */
  11518. }
  11519. 8004ada: bf00 nop
  11520. 8004adc: 370c adds r7, #12
  11521. 8004ade: 46bd mov sp, r7
  11522. 8004ae0: bc80 pop {r7}
  11523. 8004ae2: 4770 bx lr
  11524. 08004ae4 <HAL_UART_RxHalfCpltCallback>:
  11525. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  11526. * the configuration information for the specified UART module.
  11527. * @retval None
  11528. */
  11529. __weak void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
  11530. {
  11531. 8004ae4: b480 push {r7}
  11532. 8004ae6: b083 sub sp, #12
  11533. 8004ae8: af00 add r7, sp, #0
  11534. 8004aea: 6078 str r0, [r7, #4]
  11535. /* Prevent unused argument(s) compilation warning */
  11536. UNUSED(huart);
  11537. /* NOTE: This function should not be modified, when the callback is needed,
  11538. the HAL_UART_RxHalfCpltCallback could be implemented in the user file
  11539. */
  11540. }
  11541. 8004aec: bf00 nop
  11542. 8004aee: 370c adds r7, #12
  11543. 8004af0: 46bd mov sp, r7
  11544. 8004af2: bc80 pop {r7}
  11545. 8004af4: 4770 bx lr
  11546. 08004af6 <HAL_UART_ErrorCallback>:
  11547. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  11548. * the configuration information for the specified UART module.
  11549. * @retval None
  11550. */
  11551. __weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
  11552. {
  11553. 8004af6: b480 push {r7}
  11554. 8004af8: b083 sub sp, #12
  11555. 8004afa: af00 add r7, sp, #0
  11556. 8004afc: 6078 str r0, [r7, #4]
  11557. /* Prevent unused argument(s) compilation warning */
  11558. UNUSED(huart);
  11559. /* NOTE: This function should not be modified, when the callback is needed,
  11560. the HAL_UART_ErrorCallback could be implemented in the user file
  11561. */
  11562. }
  11563. 8004afe: bf00 nop
  11564. 8004b00: 370c adds r7, #12
  11565. 8004b02: 46bd mov sp, r7
  11566. 8004b04: bc80 pop {r7}
  11567. 8004b06: 4770 bx lr
  11568. 08004b08 <UART_DMATransmitCplt>:
  11569. * @param hdma Pointer to a DMA_HandleTypeDef structure that contains
  11570. * the configuration information for the specified DMA module.
  11571. * @retval None
  11572. */
  11573. static void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma)
  11574. {
  11575. 8004b08: b580 push {r7, lr}
  11576. 8004b0a: b084 sub sp, #16
  11577. 8004b0c: af00 add r7, sp, #0
  11578. 8004b0e: 6078 str r0, [r7, #4]
  11579. UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
  11580. 8004b10: 687b ldr r3, [r7, #4]
  11581. 8004b12: 6a5b ldr r3, [r3, #36] ; 0x24
  11582. 8004b14: 60fb str r3, [r7, #12]
  11583. /* DMA Normal mode*/
  11584. if ((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U)
  11585. 8004b16: 687b ldr r3, [r7, #4]
  11586. 8004b18: 681b ldr r3, [r3, #0]
  11587. 8004b1a: 681b ldr r3, [r3, #0]
  11588. 8004b1c: f003 0320 and.w r3, r3, #32
  11589. 8004b20: 2b00 cmp r3, #0
  11590. 8004b22: d113 bne.n 8004b4c <UART_DMATransmitCplt+0x44>
  11591. {
  11592. huart->TxXferCount = 0x00U;
  11593. 8004b24: 68fb ldr r3, [r7, #12]
  11594. 8004b26: 2200 movs r2, #0
  11595. 8004b28: 84da strh r2, [r3, #38] ; 0x26
  11596. /* Disable the DMA transfer for transmit request by setting the DMAT bit
  11597. in the UART CR3 register */
  11598. CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
  11599. 8004b2a: 68fb ldr r3, [r7, #12]
  11600. 8004b2c: 681b ldr r3, [r3, #0]
  11601. 8004b2e: 695a ldr r2, [r3, #20]
  11602. 8004b30: 68fb ldr r3, [r7, #12]
  11603. 8004b32: 681b ldr r3, [r3, #0]
  11604. 8004b34: f022 0280 bic.w r2, r2, #128 ; 0x80
  11605. 8004b38: 615a str r2, [r3, #20]
  11606. /* Enable the UART Transmit Complete Interrupt */
  11607. SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
  11608. 8004b3a: 68fb ldr r3, [r7, #12]
  11609. 8004b3c: 681b ldr r3, [r3, #0]
  11610. 8004b3e: 68da ldr r2, [r3, #12]
  11611. 8004b40: 68fb ldr r3, [r7, #12]
  11612. 8004b42: 681b ldr r3, [r3, #0]
  11613. 8004b44: f042 0240 orr.w r2, r2, #64 ; 0x40
  11614. 8004b48: 60da str r2, [r3, #12]
  11615. #else
  11616. /*Call legacy weak Tx complete callback*/
  11617. HAL_UART_TxCpltCallback(huart);
  11618. #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
  11619. }
  11620. }
  11621. 8004b4a: e002 b.n 8004b52 <UART_DMATransmitCplt+0x4a>
  11622. HAL_UART_TxCpltCallback(huart);
  11623. 8004b4c: 68f8 ldr r0, [r7, #12]
  11624. 8004b4e: f7ff ffb7 bl 8004ac0 <HAL_UART_TxCpltCallback>
  11625. }
  11626. 8004b52: bf00 nop
  11627. 8004b54: 3710 adds r7, #16
  11628. 8004b56: 46bd mov sp, r7
  11629. 8004b58: bd80 pop {r7, pc}
  11630. 08004b5a <UART_DMATxHalfCplt>:
  11631. * @param hdma Pointer to a DMA_HandleTypeDef structure that contains
  11632. * the configuration information for the specified DMA module.
  11633. * @retval None
  11634. */
  11635. static void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma)
  11636. {
  11637. 8004b5a: b580 push {r7, lr}
  11638. 8004b5c: b084 sub sp, #16
  11639. 8004b5e: af00 add r7, sp, #0
  11640. 8004b60: 6078 str r0, [r7, #4]
  11641. UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
  11642. 8004b62: 687b ldr r3, [r7, #4]
  11643. 8004b64: 6a5b ldr r3, [r3, #36] ; 0x24
  11644. 8004b66: 60fb str r3, [r7, #12]
  11645. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  11646. /*Call registered Tx complete callback*/
  11647. huart->TxHalfCpltCallback(huart);
  11648. #else
  11649. /*Call legacy weak Tx complete callback*/
  11650. HAL_UART_TxHalfCpltCallback(huart);
  11651. 8004b68: 68f8 ldr r0, [r7, #12]
  11652. 8004b6a: f7ff ffb2 bl 8004ad2 <HAL_UART_TxHalfCpltCallback>
  11653. #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
  11654. }
  11655. 8004b6e: bf00 nop
  11656. 8004b70: 3710 adds r7, #16
  11657. 8004b72: 46bd mov sp, r7
  11658. 8004b74: bd80 pop {r7, pc}
  11659. 08004b76 <UART_DMAReceiveCplt>:
  11660. * @param hdma Pointer to a DMA_HandleTypeDef structure that contains
  11661. * the configuration information for the specified DMA module.
  11662. * @retval None
  11663. */
  11664. static void UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma)
  11665. {
  11666. 8004b76: b580 push {r7, lr}
  11667. 8004b78: b084 sub sp, #16
  11668. 8004b7a: af00 add r7, sp, #0
  11669. 8004b7c: 6078 str r0, [r7, #4]
  11670. UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
  11671. 8004b7e: 687b ldr r3, [r7, #4]
  11672. 8004b80: 6a5b ldr r3, [r3, #36] ; 0x24
  11673. 8004b82: 60fb str r3, [r7, #12]
  11674. /* DMA Normal mode*/
  11675. if ((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U)
  11676. 8004b84: 687b ldr r3, [r7, #4]
  11677. 8004b86: 681b ldr r3, [r3, #0]
  11678. 8004b88: 681b ldr r3, [r3, #0]
  11679. 8004b8a: f003 0320 and.w r3, r3, #32
  11680. 8004b8e: 2b00 cmp r3, #0
  11681. 8004b90: d11e bne.n 8004bd0 <UART_DMAReceiveCplt+0x5a>
  11682. {
  11683. huart->RxXferCount = 0U;
  11684. 8004b92: 68fb ldr r3, [r7, #12]
  11685. 8004b94: 2200 movs r2, #0
  11686. 8004b96: 85da strh r2, [r3, #46] ; 0x2e
  11687. /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
  11688. CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);
  11689. 8004b98: 68fb ldr r3, [r7, #12]
  11690. 8004b9a: 681b ldr r3, [r3, #0]
  11691. 8004b9c: 68da ldr r2, [r3, #12]
  11692. 8004b9e: 68fb ldr r3, [r7, #12]
  11693. 8004ba0: 681b ldr r3, [r3, #0]
  11694. 8004ba2: f422 7280 bic.w r2, r2, #256 ; 0x100
  11695. 8004ba6: 60da str r2, [r3, #12]
  11696. CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
  11697. 8004ba8: 68fb ldr r3, [r7, #12]
  11698. 8004baa: 681b ldr r3, [r3, #0]
  11699. 8004bac: 695a ldr r2, [r3, #20]
  11700. 8004bae: 68fb ldr r3, [r7, #12]
  11701. 8004bb0: 681b ldr r3, [r3, #0]
  11702. 8004bb2: f022 0201 bic.w r2, r2, #1
  11703. 8004bb6: 615a str r2, [r3, #20]
  11704. /* Disable the DMA transfer for the receiver request by setting the DMAR bit
  11705. in the UART CR3 register */
  11706. CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
  11707. 8004bb8: 68fb ldr r3, [r7, #12]
  11708. 8004bba: 681b ldr r3, [r3, #0]
  11709. 8004bbc: 695a ldr r2, [r3, #20]
  11710. 8004bbe: 68fb ldr r3, [r7, #12]
  11711. 8004bc0: 681b ldr r3, [r3, #0]
  11712. 8004bc2: f022 0240 bic.w r2, r2, #64 ; 0x40
  11713. 8004bc6: 615a str r2, [r3, #20]
  11714. /* At end of Rx process, restore huart->RxState to Ready */
  11715. huart->RxState = HAL_UART_STATE_READY;
  11716. 8004bc8: 68fb ldr r3, [r7, #12]
  11717. 8004bca: 2220 movs r2, #32
  11718. 8004bcc: f883 203a strb.w r2, [r3, #58] ; 0x3a
  11719. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  11720. /*Call registered Rx complete callback*/
  11721. huart->RxCpltCallback(huart);
  11722. #else
  11723. /*Call legacy weak Rx complete callback*/
  11724. HAL_UART_RxCpltCallback(huart);
  11725. 8004bd0: 68f8 ldr r0, [r7, #12]
  11726. 8004bd2: f7fc ffb1 bl 8001b38 <HAL_UART_RxCpltCallback>
  11727. #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
  11728. }
  11729. 8004bd6: bf00 nop
  11730. 8004bd8: 3710 adds r7, #16
  11731. 8004bda: 46bd mov sp, r7
  11732. 8004bdc: bd80 pop {r7, pc}
  11733. 08004bde <UART_DMARxHalfCplt>:
  11734. * @param hdma Pointer to a DMA_HandleTypeDef structure that contains
  11735. * the configuration information for the specified DMA module.
  11736. * @retval None
  11737. */
  11738. static void UART_DMARxHalfCplt(DMA_HandleTypeDef *hdma)
  11739. {
  11740. 8004bde: b580 push {r7, lr}
  11741. 8004be0: b084 sub sp, #16
  11742. 8004be2: af00 add r7, sp, #0
  11743. 8004be4: 6078 str r0, [r7, #4]
  11744. UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
  11745. 8004be6: 687b ldr r3, [r7, #4]
  11746. 8004be8: 6a5b ldr r3, [r3, #36] ; 0x24
  11747. 8004bea: 60fb str r3, [r7, #12]
  11748. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  11749. /*Call registered Rx Half complete callback*/
  11750. huart->RxHalfCpltCallback(huart);
  11751. #else
  11752. /*Call legacy weak Rx Half complete callback*/
  11753. HAL_UART_RxHalfCpltCallback(huart);
  11754. 8004bec: 68f8 ldr r0, [r7, #12]
  11755. 8004bee: f7ff ff79 bl 8004ae4 <HAL_UART_RxHalfCpltCallback>
  11756. #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
  11757. }
  11758. 8004bf2: bf00 nop
  11759. 8004bf4: 3710 adds r7, #16
  11760. 8004bf6: 46bd mov sp, r7
  11761. 8004bf8: bd80 pop {r7, pc}
  11762. 08004bfa <UART_DMAError>:
  11763. * @param hdma Pointer to a DMA_HandleTypeDef structure that contains
  11764. * the configuration information for the specified DMA module.
  11765. * @retval None
  11766. */
  11767. static void UART_DMAError(DMA_HandleTypeDef *hdma)
  11768. {
  11769. 8004bfa: b580 push {r7, lr}
  11770. 8004bfc: b084 sub sp, #16
  11771. 8004bfe: af00 add r7, sp, #0
  11772. 8004c00: 6078 str r0, [r7, #4]
  11773. uint32_t dmarequest = 0x00U;
  11774. 8004c02: 2300 movs r3, #0
  11775. 8004c04: 60fb str r3, [r7, #12]
  11776. UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
  11777. 8004c06: 687b ldr r3, [r7, #4]
  11778. 8004c08: 6a5b ldr r3, [r3, #36] ; 0x24
  11779. 8004c0a: 60bb str r3, [r7, #8]
  11780. /* Stop UART DMA Tx request if ongoing */
  11781. dmarequest = HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT);
  11782. 8004c0c: 68bb ldr r3, [r7, #8]
  11783. 8004c0e: 681b ldr r3, [r3, #0]
  11784. 8004c10: 695b ldr r3, [r3, #20]
  11785. 8004c12: f003 0380 and.w r3, r3, #128 ; 0x80
  11786. 8004c16: 2b00 cmp r3, #0
  11787. 8004c18: bf14 ite ne
  11788. 8004c1a: 2301 movne r3, #1
  11789. 8004c1c: 2300 moveq r3, #0
  11790. 8004c1e: b2db uxtb r3, r3
  11791. 8004c20: 60fb str r3, [r7, #12]
  11792. if ((huart->gState == HAL_UART_STATE_BUSY_TX) && dmarequest)
  11793. 8004c22: 68bb ldr r3, [r7, #8]
  11794. 8004c24: f893 3039 ldrb.w r3, [r3, #57] ; 0x39
  11795. 8004c28: b2db uxtb r3, r3
  11796. 8004c2a: 2b21 cmp r3, #33 ; 0x21
  11797. 8004c2c: d108 bne.n 8004c40 <UART_DMAError+0x46>
  11798. 8004c2e: 68fb ldr r3, [r7, #12]
  11799. 8004c30: 2b00 cmp r3, #0
  11800. 8004c32: d005 beq.n 8004c40 <UART_DMAError+0x46>
  11801. {
  11802. huart->TxXferCount = 0x00U;
  11803. 8004c34: 68bb ldr r3, [r7, #8]
  11804. 8004c36: 2200 movs r2, #0
  11805. 8004c38: 84da strh r2, [r3, #38] ; 0x26
  11806. UART_EndTxTransfer(huart);
  11807. 8004c3a: 68b8 ldr r0, [r7, #8]
  11808. 8004c3c: f000 f871 bl 8004d22 <UART_EndTxTransfer>
  11809. }
  11810. /* Stop UART DMA Rx request if ongoing */
  11811. dmarequest = HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR);
  11812. 8004c40: 68bb ldr r3, [r7, #8]
  11813. 8004c42: 681b ldr r3, [r3, #0]
  11814. 8004c44: 695b ldr r3, [r3, #20]
  11815. 8004c46: f003 0340 and.w r3, r3, #64 ; 0x40
  11816. 8004c4a: 2b00 cmp r3, #0
  11817. 8004c4c: bf14 ite ne
  11818. 8004c4e: 2301 movne r3, #1
  11819. 8004c50: 2300 moveq r3, #0
  11820. 8004c52: b2db uxtb r3, r3
  11821. 8004c54: 60fb str r3, [r7, #12]
  11822. if ((huart->RxState == HAL_UART_STATE_BUSY_RX) && dmarequest)
  11823. 8004c56: 68bb ldr r3, [r7, #8]
  11824. 8004c58: f893 303a ldrb.w r3, [r3, #58] ; 0x3a
  11825. 8004c5c: b2db uxtb r3, r3
  11826. 8004c5e: 2b22 cmp r3, #34 ; 0x22
  11827. 8004c60: d108 bne.n 8004c74 <UART_DMAError+0x7a>
  11828. 8004c62: 68fb ldr r3, [r7, #12]
  11829. 8004c64: 2b00 cmp r3, #0
  11830. 8004c66: d005 beq.n 8004c74 <UART_DMAError+0x7a>
  11831. {
  11832. huart->RxXferCount = 0x00U;
  11833. 8004c68: 68bb ldr r3, [r7, #8]
  11834. 8004c6a: 2200 movs r2, #0
  11835. 8004c6c: 85da strh r2, [r3, #46] ; 0x2e
  11836. UART_EndRxTransfer(huart);
  11837. 8004c6e: 68b8 ldr r0, [r7, #8]
  11838. 8004c70: f000 f86c bl 8004d4c <UART_EndRxTransfer>
  11839. }
  11840. huart->ErrorCode |= HAL_UART_ERROR_DMA;
  11841. 8004c74: 68bb ldr r3, [r7, #8]
  11842. 8004c76: 6bdb ldr r3, [r3, #60] ; 0x3c
  11843. 8004c78: f043 0210 orr.w r2, r3, #16
  11844. 8004c7c: 68bb ldr r3, [r7, #8]
  11845. 8004c7e: 63da str r2, [r3, #60] ; 0x3c
  11846. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  11847. /*Call registered error callback*/
  11848. huart->ErrorCallback(huart);
  11849. #else
  11850. /*Call legacy weak error callback*/
  11851. HAL_UART_ErrorCallback(huart);
  11852. 8004c80: 68b8 ldr r0, [r7, #8]
  11853. 8004c82: f7ff ff38 bl 8004af6 <HAL_UART_ErrorCallback>
  11854. #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
  11855. }
  11856. 8004c86: bf00 nop
  11857. 8004c88: 3710 adds r7, #16
  11858. 8004c8a: 46bd mov sp, r7
  11859. 8004c8c: bd80 pop {r7, pc}
  11860. 08004c8e <UART_WaitOnFlagUntilTimeout>:
  11861. * @param Tickstart Tick start value
  11862. * @param Timeout Timeout duration
  11863. * @retval HAL status
  11864. */
  11865. static HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
  11866. {
  11867. 8004c8e: b580 push {r7, lr}
  11868. 8004c90: b084 sub sp, #16
  11869. 8004c92: af00 add r7, sp, #0
  11870. 8004c94: 60f8 str r0, [r7, #12]
  11871. 8004c96: 60b9 str r1, [r7, #8]
  11872. 8004c98: 603b str r3, [r7, #0]
  11873. 8004c9a: 4613 mov r3, r2
  11874. 8004c9c: 71fb strb r3, [r7, #7]
  11875. /* Wait until flag is set */
  11876. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  11877. 8004c9e: e02c b.n 8004cfa <UART_WaitOnFlagUntilTimeout+0x6c>
  11878. {
  11879. /* Check for the Timeout */
  11880. if (Timeout != HAL_MAX_DELAY)
  11881. 8004ca0: 69bb ldr r3, [r7, #24]
  11882. 8004ca2: f1b3 3fff cmp.w r3, #4294967295
  11883. 8004ca6: d028 beq.n 8004cfa <UART_WaitOnFlagUntilTimeout+0x6c>
  11884. {
  11885. if ((Timeout == 0U) || ((HAL_GetTick() - Tickstart) > Timeout))
  11886. 8004ca8: 69bb ldr r3, [r7, #24]
  11887. 8004caa: 2b00 cmp r3, #0
  11888. 8004cac: d007 beq.n 8004cbe <UART_WaitOnFlagUntilTimeout+0x30>
  11889. 8004cae: f7fd f88d bl 8001dcc <HAL_GetTick>
  11890. 8004cb2: 4602 mov r2, r0
  11891. 8004cb4: 683b ldr r3, [r7, #0]
  11892. 8004cb6: 1ad3 subs r3, r2, r3
  11893. 8004cb8: 69ba ldr r2, [r7, #24]
  11894. 8004cba: 429a cmp r2, r3
  11895. 8004cbc: d21d bcs.n 8004cfa <UART_WaitOnFlagUntilTimeout+0x6c>
  11896. {
  11897. /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
  11898. CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
  11899. 8004cbe: 68fb ldr r3, [r7, #12]
  11900. 8004cc0: 681b ldr r3, [r3, #0]
  11901. 8004cc2: 68da ldr r2, [r3, #12]
  11902. 8004cc4: 68fb ldr r3, [r7, #12]
  11903. 8004cc6: 681b ldr r3, [r3, #0]
  11904. 8004cc8: f422 72d0 bic.w r2, r2, #416 ; 0x1a0
  11905. 8004ccc: 60da str r2, [r3, #12]
  11906. CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
  11907. 8004cce: 68fb ldr r3, [r7, #12]
  11908. 8004cd0: 681b ldr r3, [r3, #0]
  11909. 8004cd2: 695a ldr r2, [r3, #20]
  11910. 8004cd4: 68fb ldr r3, [r7, #12]
  11911. 8004cd6: 681b ldr r3, [r3, #0]
  11912. 8004cd8: f022 0201 bic.w r2, r2, #1
  11913. 8004cdc: 615a str r2, [r3, #20]
  11914. huart->gState = HAL_UART_STATE_READY;
  11915. 8004cde: 68fb ldr r3, [r7, #12]
  11916. 8004ce0: 2220 movs r2, #32
  11917. 8004ce2: f883 2039 strb.w r2, [r3, #57] ; 0x39
  11918. huart->RxState = HAL_UART_STATE_READY;
  11919. 8004ce6: 68fb ldr r3, [r7, #12]
  11920. 8004ce8: 2220 movs r2, #32
  11921. 8004cea: f883 203a strb.w r2, [r3, #58] ; 0x3a
  11922. /* Process Unlocked */
  11923. __HAL_UNLOCK(huart);
  11924. 8004cee: 68fb ldr r3, [r7, #12]
  11925. 8004cf0: 2200 movs r2, #0
  11926. 8004cf2: f883 2038 strb.w r2, [r3, #56] ; 0x38
  11927. return HAL_TIMEOUT;
  11928. 8004cf6: 2303 movs r3, #3
  11929. 8004cf8: e00f b.n 8004d1a <UART_WaitOnFlagUntilTimeout+0x8c>
  11930. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  11931. 8004cfa: 68fb ldr r3, [r7, #12]
  11932. 8004cfc: 681b ldr r3, [r3, #0]
  11933. 8004cfe: 681a ldr r2, [r3, #0]
  11934. 8004d00: 68bb ldr r3, [r7, #8]
  11935. 8004d02: 4013 ands r3, r2
  11936. 8004d04: 68ba ldr r2, [r7, #8]
  11937. 8004d06: 429a cmp r2, r3
  11938. 8004d08: bf0c ite eq
  11939. 8004d0a: 2301 moveq r3, #1
  11940. 8004d0c: 2300 movne r3, #0
  11941. 8004d0e: b2db uxtb r3, r3
  11942. 8004d10: 461a mov r2, r3
  11943. 8004d12: 79fb ldrb r3, [r7, #7]
  11944. 8004d14: 429a cmp r2, r3
  11945. 8004d16: d0c3 beq.n 8004ca0 <UART_WaitOnFlagUntilTimeout+0x12>
  11946. }
  11947. }
  11948. }
  11949. return HAL_OK;
  11950. 8004d18: 2300 movs r3, #0
  11951. }
  11952. 8004d1a: 4618 mov r0, r3
  11953. 8004d1c: 3710 adds r7, #16
  11954. 8004d1e: 46bd mov sp, r7
  11955. 8004d20: bd80 pop {r7, pc}
  11956. 08004d22 <UART_EndTxTransfer>:
  11957. * @brief End ongoing Tx transfer on UART peripheral (following error detection or Transmit completion).
  11958. * @param huart UART handle.
  11959. * @retval None
  11960. */
  11961. static void UART_EndTxTransfer(UART_HandleTypeDef *huart)
  11962. {
  11963. 8004d22: b480 push {r7}
  11964. 8004d24: b083 sub sp, #12
  11965. 8004d26: af00 add r7, sp, #0
  11966. 8004d28: 6078 str r0, [r7, #4]
  11967. /* Disable TXEIE and TCIE interrupts */
  11968. CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
  11969. 8004d2a: 687b ldr r3, [r7, #4]
  11970. 8004d2c: 681b ldr r3, [r3, #0]
  11971. 8004d2e: 68da ldr r2, [r3, #12]
  11972. 8004d30: 687b ldr r3, [r7, #4]
  11973. 8004d32: 681b ldr r3, [r3, #0]
  11974. 8004d34: f022 02c0 bic.w r2, r2, #192 ; 0xc0
  11975. 8004d38: 60da str r2, [r3, #12]
  11976. /* At end of Tx process, restore huart->gState to Ready */
  11977. huart->gState = HAL_UART_STATE_READY;
  11978. 8004d3a: 687b ldr r3, [r7, #4]
  11979. 8004d3c: 2220 movs r2, #32
  11980. 8004d3e: f883 2039 strb.w r2, [r3, #57] ; 0x39
  11981. }
  11982. 8004d42: bf00 nop
  11983. 8004d44: 370c adds r7, #12
  11984. 8004d46: 46bd mov sp, r7
  11985. 8004d48: bc80 pop {r7}
  11986. 8004d4a: 4770 bx lr
  11987. 08004d4c <UART_EndRxTransfer>:
  11988. * @brief End ongoing Rx transfer on UART peripheral (following error detection or Reception completion).
  11989. * @param huart UART handle.
  11990. * @retval None
  11991. */
  11992. static void UART_EndRxTransfer(UART_HandleTypeDef *huart)
  11993. {
  11994. 8004d4c: b480 push {r7}
  11995. 8004d4e: b083 sub sp, #12
  11996. 8004d50: af00 add r7, sp, #0
  11997. 8004d52: 6078 str r0, [r7, #4]
  11998. /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
  11999. CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
  12000. 8004d54: 687b ldr r3, [r7, #4]
  12001. 8004d56: 681b ldr r3, [r3, #0]
  12002. 8004d58: 68da ldr r2, [r3, #12]
  12003. 8004d5a: 687b ldr r3, [r7, #4]
  12004. 8004d5c: 681b ldr r3, [r3, #0]
  12005. 8004d5e: f422 7290 bic.w r2, r2, #288 ; 0x120
  12006. 8004d62: 60da str r2, [r3, #12]
  12007. CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
  12008. 8004d64: 687b ldr r3, [r7, #4]
  12009. 8004d66: 681b ldr r3, [r3, #0]
  12010. 8004d68: 695a ldr r2, [r3, #20]
  12011. 8004d6a: 687b ldr r3, [r7, #4]
  12012. 8004d6c: 681b ldr r3, [r3, #0]
  12013. 8004d6e: f022 0201 bic.w r2, r2, #1
  12014. 8004d72: 615a str r2, [r3, #20]
  12015. /* At end of Rx process, restore huart->RxState to Ready */
  12016. huart->RxState = HAL_UART_STATE_READY;
  12017. 8004d74: 687b ldr r3, [r7, #4]
  12018. 8004d76: 2220 movs r2, #32
  12019. 8004d78: f883 203a strb.w r2, [r3, #58] ; 0x3a
  12020. }
  12021. 8004d7c: bf00 nop
  12022. 8004d7e: 370c adds r7, #12
  12023. 8004d80: 46bd mov sp, r7
  12024. 8004d82: bc80 pop {r7}
  12025. 8004d84: 4770 bx lr
  12026. 08004d86 <UART_DMAAbortOnError>:
  12027. * @param hdma Pointer to a DMA_HandleTypeDef structure that contains
  12028. * the configuration information for the specified DMA module.
  12029. * @retval None
  12030. */
  12031. static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma)
  12032. {
  12033. 8004d86: b580 push {r7, lr}
  12034. 8004d88: b084 sub sp, #16
  12035. 8004d8a: af00 add r7, sp, #0
  12036. 8004d8c: 6078 str r0, [r7, #4]
  12037. UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
  12038. 8004d8e: 687b ldr r3, [r7, #4]
  12039. 8004d90: 6a5b ldr r3, [r3, #36] ; 0x24
  12040. 8004d92: 60fb str r3, [r7, #12]
  12041. huart->RxXferCount = 0x00U;
  12042. 8004d94: 68fb ldr r3, [r7, #12]
  12043. 8004d96: 2200 movs r2, #0
  12044. 8004d98: 85da strh r2, [r3, #46] ; 0x2e
  12045. huart->TxXferCount = 0x00U;
  12046. 8004d9a: 68fb ldr r3, [r7, #12]
  12047. 8004d9c: 2200 movs r2, #0
  12048. 8004d9e: 84da strh r2, [r3, #38] ; 0x26
  12049. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  12050. /*Call registered error callback*/
  12051. huart->ErrorCallback(huart);
  12052. #else
  12053. /*Call legacy weak error callback*/
  12054. HAL_UART_ErrorCallback(huart);
  12055. 8004da0: 68f8 ldr r0, [r7, #12]
  12056. 8004da2: f7ff fea8 bl 8004af6 <HAL_UART_ErrorCallback>
  12057. #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
  12058. }
  12059. 8004da6: bf00 nop
  12060. 8004da8: 3710 adds r7, #16
  12061. 8004daa: 46bd mov sp, r7
  12062. 8004dac: bd80 pop {r7, pc}
  12063. 08004dae <UART_Transmit_IT>:
  12064. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  12065. * the configuration information for the specified UART module.
  12066. * @retval HAL status
  12067. */
  12068. static HAL_StatusTypeDef UART_Transmit_IT(UART_HandleTypeDef *huart)
  12069. {
  12070. 8004dae: b480 push {r7}
  12071. 8004db0: b085 sub sp, #20
  12072. 8004db2: af00 add r7, sp, #0
  12073. 8004db4: 6078 str r0, [r7, #4]
  12074. uint16_t *tmp;
  12075. /* Check that a Tx process is ongoing */
  12076. if (huart->gState == HAL_UART_STATE_BUSY_TX)
  12077. 8004db6: 687b ldr r3, [r7, #4]
  12078. 8004db8: f893 3039 ldrb.w r3, [r3, #57] ; 0x39
  12079. 8004dbc: b2db uxtb r3, r3
  12080. 8004dbe: 2b21 cmp r3, #33 ; 0x21
  12081. 8004dc0: d144 bne.n 8004e4c <UART_Transmit_IT+0x9e>
  12082. {
  12083. if (huart->Init.WordLength == UART_WORDLENGTH_9B)
  12084. 8004dc2: 687b ldr r3, [r7, #4]
  12085. 8004dc4: 689b ldr r3, [r3, #8]
  12086. 8004dc6: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
  12087. 8004dca: d11a bne.n 8004e02 <UART_Transmit_IT+0x54>
  12088. {
  12089. tmp = (uint16_t *) huart->pTxBuffPtr;
  12090. 8004dcc: 687b ldr r3, [r7, #4]
  12091. 8004dce: 6a1b ldr r3, [r3, #32]
  12092. 8004dd0: 60fb str r3, [r7, #12]
  12093. huart->Instance->DR = (uint16_t)(*tmp & (uint16_t)0x01FF);
  12094. 8004dd2: 68fb ldr r3, [r7, #12]
  12095. 8004dd4: 881b ldrh r3, [r3, #0]
  12096. 8004dd6: 461a mov r2, r3
  12097. 8004dd8: 687b ldr r3, [r7, #4]
  12098. 8004dda: 681b ldr r3, [r3, #0]
  12099. 8004ddc: f3c2 0208 ubfx r2, r2, #0, #9
  12100. 8004de0: 605a str r2, [r3, #4]
  12101. if (huart->Init.Parity == UART_PARITY_NONE)
  12102. 8004de2: 687b ldr r3, [r7, #4]
  12103. 8004de4: 691b ldr r3, [r3, #16]
  12104. 8004de6: 2b00 cmp r3, #0
  12105. 8004de8: d105 bne.n 8004df6 <UART_Transmit_IT+0x48>
  12106. {
  12107. huart->pTxBuffPtr += 2U;
  12108. 8004dea: 687b ldr r3, [r7, #4]
  12109. 8004dec: 6a1b ldr r3, [r3, #32]
  12110. 8004dee: 1c9a adds r2, r3, #2
  12111. 8004df0: 687b ldr r3, [r7, #4]
  12112. 8004df2: 621a str r2, [r3, #32]
  12113. 8004df4: e00e b.n 8004e14 <UART_Transmit_IT+0x66>
  12114. }
  12115. else
  12116. {
  12117. huart->pTxBuffPtr += 1U;
  12118. 8004df6: 687b ldr r3, [r7, #4]
  12119. 8004df8: 6a1b ldr r3, [r3, #32]
  12120. 8004dfa: 1c5a adds r2, r3, #1
  12121. 8004dfc: 687b ldr r3, [r7, #4]
  12122. 8004dfe: 621a str r2, [r3, #32]
  12123. 8004e00: e008 b.n 8004e14 <UART_Transmit_IT+0x66>
  12124. }
  12125. }
  12126. else
  12127. {
  12128. huart->Instance->DR = (uint8_t)(*huart->pTxBuffPtr++ & (uint8_t)0x00FF);
  12129. 8004e02: 687b ldr r3, [r7, #4]
  12130. 8004e04: 6a1b ldr r3, [r3, #32]
  12131. 8004e06: 1c59 adds r1, r3, #1
  12132. 8004e08: 687a ldr r2, [r7, #4]
  12133. 8004e0a: 6211 str r1, [r2, #32]
  12134. 8004e0c: 781a ldrb r2, [r3, #0]
  12135. 8004e0e: 687b ldr r3, [r7, #4]
  12136. 8004e10: 681b ldr r3, [r3, #0]
  12137. 8004e12: 605a str r2, [r3, #4]
  12138. }
  12139. if (--huart->TxXferCount == 0U)
  12140. 8004e14: 687b ldr r3, [r7, #4]
  12141. 8004e16: 8cdb ldrh r3, [r3, #38] ; 0x26
  12142. 8004e18: b29b uxth r3, r3
  12143. 8004e1a: 3b01 subs r3, #1
  12144. 8004e1c: b29b uxth r3, r3
  12145. 8004e1e: 687a ldr r2, [r7, #4]
  12146. 8004e20: 4619 mov r1, r3
  12147. 8004e22: 84d1 strh r1, [r2, #38] ; 0x26
  12148. 8004e24: 2b00 cmp r3, #0
  12149. 8004e26: d10f bne.n 8004e48 <UART_Transmit_IT+0x9a>
  12150. {
  12151. /* Disable the UART Transmit Complete Interrupt */
  12152. __HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
  12153. 8004e28: 687b ldr r3, [r7, #4]
  12154. 8004e2a: 681b ldr r3, [r3, #0]
  12155. 8004e2c: 68da ldr r2, [r3, #12]
  12156. 8004e2e: 687b ldr r3, [r7, #4]
  12157. 8004e30: 681b ldr r3, [r3, #0]
  12158. 8004e32: f022 0280 bic.w r2, r2, #128 ; 0x80
  12159. 8004e36: 60da str r2, [r3, #12]
  12160. /* Enable the UART Transmit Complete Interrupt */
  12161. __HAL_UART_ENABLE_IT(huart, UART_IT_TC);
  12162. 8004e38: 687b ldr r3, [r7, #4]
  12163. 8004e3a: 681b ldr r3, [r3, #0]
  12164. 8004e3c: 68da ldr r2, [r3, #12]
  12165. 8004e3e: 687b ldr r3, [r7, #4]
  12166. 8004e40: 681b ldr r3, [r3, #0]
  12167. 8004e42: f042 0240 orr.w r2, r2, #64 ; 0x40
  12168. 8004e46: 60da str r2, [r3, #12]
  12169. }
  12170. return HAL_OK;
  12171. 8004e48: 2300 movs r3, #0
  12172. 8004e4a: e000 b.n 8004e4e <UART_Transmit_IT+0xa0>
  12173. }
  12174. else
  12175. {
  12176. return HAL_BUSY;
  12177. 8004e4c: 2302 movs r3, #2
  12178. }
  12179. }
  12180. 8004e4e: 4618 mov r0, r3
  12181. 8004e50: 3714 adds r7, #20
  12182. 8004e52: 46bd mov sp, r7
  12183. 8004e54: bc80 pop {r7}
  12184. 8004e56: 4770 bx lr
  12185. 08004e58 <UART_EndTransmit_IT>:
  12186. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  12187. * the configuration information for the specified UART module.
  12188. * @retval HAL status
  12189. */
  12190. static HAL_StatusTypeDef UART_EndTransmit_IT(UART_HandleTypeDef *huart)
  12191. {
  12192. 8004e58: b580 push {r7, lr}
  12193. 8004e5a: b082 sub sp, #8
  12194. 8004e5c: af00 add r7, sp, #0
  12195. 8004e5e: 6078 str r0, [r7, #4]
  12196. /* Disable the UART Transmit Complete Interrupt */
  12197. __HAL_UART_DISABLE_IT(huart, UART_IT_TC);
  12198. 8004e60: 687b ldr r3, [r7, #4]
  12199. 8004e62: 681b ldr r3, [r3, #0]
  12200. 8004e64: 68da ldr r2, [r3, #12]
  12201. 8004e66: 687b ldr r3, [r7, #4]
  12202. 8004e68: 681b ldr r3, [r3, #0]
  12203. 8004e6a: f022 0240 bic.w r2, r2, #64 ; 0x40
  12204. 8004e6e: 60da str r2, [r3, #12]
  12205. /* Tx process is ended, restore huart->gState to Ready */
  12206. huart->gState = HAL_UART_STATE_READY;
  12207. 8004e70: 687b ldr r3, [r7, #4]
  12208. 8004e72: 2220 movs r2, #32
  12209. 8004e74: f883 2039 strb.w r2, [r3, #57] ; 0x39
  12210. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  12211. /*Call registered Tx complete callback*/
  12212. huart->TxCpltCallback(huart);
  12213. #else
  12214. /*Call legacy weak Tx complete callback*/
  12215. HAL_UART_TxCpltCallback(huart);
  12216. 8004e78: 6878 ldr r0, [r7, #4]
  12217. 8004e7a: f7ff fe21 bl 8004ac0 <HAL_UART_TxCpltCallback>
  12218. #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
  12219. return HAL_OK;
  12220. 8004e7e: 2300 movs r3, #0
  12221. }
  12222. 8004e80: 4618 mov r0, r3
  12223. 8004e82: 3708 adds r7, #8
  12224. 8004e84: 46bd mov sp, r7
  12225. 8004e86: bd80 pop {r7, pc}
  12226. 08004e88 <UART_Receive_IT>:
  12227. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  12228. * the configuration information for the specified UART module.
  12229. * @retval HAL status
  12230. */
  12231. static HAL_StatusTypeDef UART_Receive_IT(UART_HandleTypeDef *huart)
  12232. {
  12233. 8004e88: b580 push {r7, lr}
  12234. 8004e8a: b084 sub sp, #16
  12235. 8004e8c: af00 add r7, sp, #0
  12236. 8004e8e: 6078 str r0, [r7, #4]
  12237. uint16_t *tmp;
  12238. /* Check that a Rx process is ongoing */
  12239. if (huart->RxState == HAL_UART_STATE_BUSY_RX)
  12240. 8004e90: 687b ldr r3, [r7, #4]
  12241. 8004e92: f893 303a ldrb.w r3, [r3, #58] ; 0x3a
  12242. 8004e96: b2db uxtb r3, r3
  12243. 8004e98: 2b22 cmp r3, #34 ; 0x22
  12244. 8004e9a: d171 bne.n 8004f80 <UART_Receive_IT+0xf8>
  12245. {
  12246. if (huart->Init.WordLength == UART_WORDLENGTH_9B)
  12247. 8004e9c: 687b ldr r3, [r7, #4]
  12248. 8004e9e: 689b ldr r3, [r3, #8]
  12249. 8004ea0: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
  12250. 8004ea4: d123 bne.n 8004eee <UART_Receive_IT+0x66>
  12251. {
  12252. tmp = (uint16_t *) huart->pRxBuffPtr;
  12253. 8004ea6: 687b ldr r3, [r7, #4]
  12254. 8004ea8: 6a9b ldr r3, [r3, #40] ; 0x28
  12255. 8004eaa: 60fb str r3, [r7, #12]
  12256. if (huart->Init.Parity == UART_PARITY_NONE)
  12257. 8004eac: 687b ldr r3, [r7, #4]
  12258. 8004eae: 691b ldr r3, [r3, #16]
  12259. 8004eb0: 2b00 cmp r3, #0
  12260. 8004eb2: d10e bne.n 8004ed2 <UART_Receive_IT+0x4a>
  12261. {
  12262. *tmp = (uint16_t)(huart->Instance->DR & (uint16_t)0x01FF);
  12263. 8004eb4: 687b ldr r3, [r7, #4]
  12264. 8004eb6: 681b ldr r3, [r3, #0]
  12265. 8004eb8: 685b ldr r3, [r3, #4]
  12266. 8004eba: b29b uxth r3, r3
  12267. 8004ebc: f3c3 0308 ubfx r3, r3, #0, #9
  12268. 8004ec0: b29a uxth r2, r3
  12269. 8004ec2: 68fb ldr r3, [r7, #12]
  12270. 8004ec4: 801a strh r2, [r3, #0]
  12271. huart->pRxBuffPtr += 2U;
  12272. 8004ec6: 687b ldr r3, [r7, #4]
  12273. 8004ec8: 6a9b ldr r3, [r3, #40] ; 0x28
  12274. 8004eca: 1c9a adds r2, r3, #2
  12275. 8004ecc: 687b ldr r3, [r7, #4]
  12276. 8004ece: 629a str r2, [r3, #40] ; 0x28
  12277. 8004ed0: e029 b.n 8004f26 <UART_Receive_IT+0x9e>
  12278. }
  12279. else
  12280. {
  12281. *tmp = (uint16_t)(huart->Instance->DR & (uint16_t)0x00FF);
  12282. 8004ed2: 687b ldr r3, [r7, #4]
  12283. 8004ed4: 681b ldr r3, [r3, #0]
  12284. 8004ed6: 685b ldr r3, [r3, #4]
  12285. 8004ed8: b29b uxth r3, r3
  12286. 8004eda: b2db uxtb r3, r3
  12287. 8004edc: b29a uxth r2, r3
  12288. 8004ede: 68fb ldr r3, [r7, #12]
  12289. 8004ee0: 801a strh r2, [r3, #0]
  12290. huart->pRxBuffPtr += 1U;
  12291. 8004ee2: 687b ldr r3, [r7, #4]
  12292. 8004ee4: 6a9b ldr r3, [r3, #40] ; 0x28
  12293. 8004ee6: 1c5a adds r2, r3, #1
  12294. 8004ee8: 687b ldr r3, [r7, #4]
  12295. 8004eea: 629a str r2, [r3, #40] ; 0x28
  12296. 8004eec: e01b b.n 8004f26 <UART_Receive_IT+0x9e>
  12297. }
  12298. }
  12299. else
  12300. {
  12301. if (huart->Init.Parity == UART_PARITY_NONE)
  12302. 8004eee: 687b ldr r3, [r7, #4]
  12303. 8004ef0: 691b ldr r3, [r3, #16]
  12304. 8004ef2: 2b00 cmp r3, #0
  12305. 8004ef4: d10a bne.n 8004f0c <UART_Receive_IT+0x84>
  12306. {
  12307. *huart->pRxBuffPtr++ = (uint8_t)(huart->Instance->DR & (uint8_t)0x00FF);
  12308. 8004ef6: 687b ldr r3, [r7, #4]
  12309. 8004ef8: 681b ldr r3, [r3, #0]
  12310. 8004efa: 6858 ldr r0, [r3, #4]
  12311. 8004efc: 687b ldr r3, [r7, #4]
  12312. 8004efe: 6a9b ldr r3, [r3, #40] ; 0x28
  12313. 8004f00: 1c59 adds r1, r3, #1
  12314. 8004f02: 687a ldr r2, [r7, #4]
  12315. 8004f04: 6291 str r1, [r2, #40] ; 0x28
  12316. 8004f06: b2c2 uxtb r2, r0
  12317. 8004f08: 701a strb r2, [r3, #0]
  12318. 8004f0a: e00c b.n 8004f26 <UART_Receive_IT+0x9e>
  12319. }
  12320. else
  12321. {
  12322. *huart->pRxBuffPtr++ = (uint8_t)(huart->Instance->DR & (uint8_t)0x007F);
  12323. 8004f0c: 687b ldr r3, [r7, #4]
  12324. 8004f0e: 681b ldr r3, [r3, #0]
  12325. 8004f10: 685b ldr r3, [r3, #4]
  12326. 8004f12: b2da uxtb r2, r3
  12327. 8004f14: 687b ldr r3, [r7, #4]
  12328. 8004f16: 6a9b ldr r3, [r3, #40] ; 0x28
  12329. 8004f18: 1c58 adds r0, r3, #1
  12330. 8004f1a: 6879 ldr r1, [r7, #4]
  12331. 8004f1c: 6288 str r0, [r1, #40] ; 0x28
  12332. 8004f1e: f002 027f and.w r2, r2, #127 ; 0x7f
  12333. 8004f22: b2d2 uxtb r2, r2
  12334. 8004f24: 701a strb r2, [r3, #0]
  12335. }
  12336. }
  12337. if (--huart->RxXferCount == 0U)
  12338. 8004f26: 687b ldr r3, [r7, #4]
  12339. 8004f28: 8ddb ldrh r3, [r3, #46] ; 0x2e
  12340. 8004f2a: b29b uxth r3, r3
  12341. 8004f2c: 3b01 subs r3, #1
  12342. 8004f2e: b29b uxth r3, r3
  12343. 8004f30: 687a ldr r2, [r7, #4]
  12344. 8004f32: 4619 mov r1, r3
  12345. 8004f34: 85d1 strh r1, [r2, #46] ; 0x2e
  12346. 8004f36: 2b00 cmp r3, #0
  12347. 8004f38: d120 bne.n 8004f7c <UART_Receive_IT+0xf4>
  12348. {
  12349. /* Disable the UART Data Register not empty Interrupt */
  12350. __HAL_UART_DISABLE_IT(huart, UART_IT_RXNE);
  12351. 8004f3a: 687b ldr r3, [r7, #4]
  12352. 8004f3c: 681b ldr r3, [r3, #0]
  12353. 8004f3e: 68da ldr r2, [r3, #12]
  12354. 8004f40: 687b ldr r3, [r7, #4]
  12355. 8004f42: 681b ldr r3, [r3, #0]
  12356. 8004f44: f022 0220 bic.w r2, r2, #32
  12357. 8004f48: 60da str r2, [r3, #12]
  12358. /* Disable the UART Parity Error Interrupt */
  12359. __HAL_UART_DISABLE_IT(huart, UART_IT_PE);
  12360. 8004f4a: 687b ldr r3, [r7, #4]
  12361. 8004f4c: 681b ldr r3, [r3, #0]
  12362. 8004f4e: 68da ldr r2, [r3, #12]
  12363. 8004f50: 687b ldr r3, [r7, #4]
  12364. 8004f52: 681b ldr r3, [r3, #0]
  12365. 8004f54: f422 7280 bic.w r2, r2, #256 ; 0x100
  12366. 8004f58: 60da str r2, [r3, #12]
  12367. /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */
  12368. __HAL_UART_DISABLE_IT(huart, UART_IT_ERR);
  12369. 8004f5a: 687b ldr r3, [r7, #4]
  12370. 8004f5c: 681b ldr r3, [r3, #0]
  12371. 8004f5e: 695a ldr r2, [r3, #20]
  12372. 8004f60: 687b ldr r3, [r7, #4]
  12373. 8004f62: 681b ldr r3, [r3, #0]
  12374. 8004f64: f022 0201 bic.w r2, r2, #1
  12375. 8004f68: 615a str r2, [r3, #20]
  12376. /* Rx process is completed, restore huart->RxState to Ready */
  12377. huart->RxState = HAL_UART_STATE_READY;
  12378. 8004f6a: 687b ldr r3, [r7, #4]
  12379. 8004f6c: 2220 movs r2, #32
  12380. 8004f6e: f883 203a strb.w r2, [r3, #58] ; 0x3a
  12381. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  12382. /*Call registered Rx complete callback*/
  12383. huart->RxCpltCallback(huart);
  12384. #else
  12385. /*Call legacy weak Rx complete callback*/
  12386. HAL_UART_RxCpltCallback(huart);
  12387. 8004f72: 6878 ldr r0, [r7, #4]
  12388. 8004f74: f7fc fde0 bl 8001b38 <HAL_UART_RxCpltCallback>
  12389. #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
  12390. return HAL_OK;
  12391. 8004f78: 2300 movs r3, #0
  12392. 8004f7a: e002 b.n 8004f82 <UART_Receive_IT+0xfa>
  12393. }
  12394. return HAL_OK;
  12395. 8004f7c: 2300 movs r3, #0
  12396. 8004f7e: e000 b.n 8004f82 <UART_Receive_IT+0xfa>
  12397. }
  12398. else
  12399. {
  12400. return HAL_BUSY;
  12401. 8004f80: 2302 movs r3, #2
  12402. }
  12403. }
  12404. 8004f82: 4618 mov r0, r3
  12405. 8004f84: 3710 adds r7, #16
  12406. 8004f86: 46bd mov sp, r7
  12407. 8004f88: bd80 pop {r7, pc}
  12408. ...
  12409. 08004f8c <UART_SetConfig>:
  12410. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  12411. * the configuration information for the specified UART module.
  12412. * @retval None
  12413. */
  12414. static void UART_SetConfig(UART_HandleTypeDef *huart)
  12415. {
  12416. 8004f8c: b580 push {r7, lr}
  12417. 8004f8e: b084 sub sp, #16
  12418. 8004f90: af00 add r7, sp, #0
  12419. 8004f92: 6078 str r0, [r7, #4]
  12420. assert_param(IS_UART_MODE(huart->Init.Mode));
  12421. /*-------------------------- USART CR2 Configuration -----------------------*/
  12422. /* Configure the UART Stop Bits: Set STOP[13:12] bits
  12423. according to huart->Init.StopBits value */
  12424. MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);
  12425. 8004f94: 687b ldr r3, [r7, #4]
  12426. 8004f96: 681b ldr r3, [r3, #0]
  12427. 8004f98: 691b ldr r3, [r3, #16]
  12428. 8004f9a: f423 5140 bic.w r1, r3, #12288 ; 0x3000
  12429. 8004f9e: 687b ldr r3, [r7, #4]
  12430. 8004fa0: 68da ldr r2, [r3, #12]
  12431. 8004fa2: 687b ldr r3, [r7, #4]
  12432. 8004fa4: 681b ldr r3, [r3, #0]
  12433. 8004fa6: 430a orrs r2, r1
  12434. 8004fa8: 611a str r2, [r3, #16]
  12435. Set PCE and PS bits according to huart->Init.Parity value
  12436. Set TE and RE bits according to huart->Init.Mode value
  12437. Set OVER8 bit according to huart->Init.OverSampling value */
  12438. #if defined(USART_CR1_OVER8)
  12439. tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling;
  12440. 8004faa: 687b ldr r3, [r7, #4]
  12441. 8004fac: 689a ldr r2, [r3, #8]
  12442. 8004fae: 687b ldr r3, [r7, #4]
  12443. 8004fb0: 691b ldr r3, [r3, #16]
  12444. 8004fb2: 431a orrs r2, r3
  12445. 8004fb4: 687b ldr r3, [r7, #4]
  12446. 8004fb6: 695b ldr r3, [r3, #20]
  12447. 8004fb8: 431a orrs r2, r3
  12448. 8004fba: 687b ldr r3, [r7, #4]
  12449. 8004fbc: 69db ldr r3, [r3, #28]
  12450. 8004fbe: 4313 orrs r3, r2
  12451. 8004fc0: 60fb str r3, [r7, #12]
  12452. MODIFY_REG(huart->Instance->CR1,
  12453. 8004fc2: 687b ldr r3, [r7, #4]
  12454. 8004fc4: 681b ldr r3, [r3, #0]
  12455. 8004fc6: 68db ldr r3, [r3, #12]
  12456. 8004fc8: f423 4316 bic.w r3, r3, #38400 ; 0x9600
  12457. 8004fcc: f023 030c bic.w r3, r3, #12
  12458. 8004fd0: 687a ldr r2, [r7, #4]
  12459. 8004fd2: 6812 ldr r2, [r2, #0]
  12460. 8004fd4: 68f9 ldr r1, [r7, #12]
  12461. 8004fd6: 430b orrs r3, r1
  12462. 8004fd8: 60d3 str r3, [r2, #12]
  12463. tmpreg);
  12464. #endif /* USART_CR1_OVER8 */
  12465. /*-------------------------- USART CR3 Configuration -----------------------*/
  12466. /* Configure the UART HFC: Set CTSE and RTSE bits according to huart->Init.HwFlowCtl value */
  12467. MODIFY_REG(huart->Instance->CR3, (USART_CR3_RTSE | USART_CR3_CTSE), huart->Init.HwFlowCtl);
  12468. 8004fda: 687b ldr r3, [r7, #4]
  12469. 8004fdc: 681b ldr r3, [r3, #0]
  12470. 8004fde: 695b ldr r3, [r3, #20]
  12471. 8004fe0: f423 7140 bic.w r1, r3, #768 ; 0x300
  12472. 8004fe4: 687b ldr r3, [r7, #4]
  12473. 8004fe6: 699a ldr r2, [r3, #24]
  12474. 8004fe8: 687b ldr r3, [r7, #4]
  12475. 8004fea: 681b ldr r3, [r3, #0]
  12476. 8004fec: 430a orrs r2, r1
  12477. 8004fee: 615a str r2, [r3, #20]
  12478. #if defined(USART_CR1_OVER8)
  12479. /* Check the Over Sampling */
  12480. if(huart->Init.OverSampling == UART_OVERSAMPLING_8)
  12481. 8004ff0: 687b ldr r3, [r7, #4]
  12482. 8004ff2: 69db ldr r3, [r3, #28]
  12483. 8004ff4: f5b3 4f00 cmp.w r3, #32768 ; 0x8000
  12484. 8004ff8: f040 80a5 bne.w 8005146 <UART_SetConfig+0x1ba>
  12485. {
  12486. /*-------------------------- USART BRR Configuration ---------------------*/
  12487. if(huart->Instance == USART1)
  12488. 8004ffc: 687b ldr r3, [r7, #4]
  12489. 8004ffe: 681b ldr r3, [r3, #0]
  12490. 8005000: 4aa4 ldr r2, [pc, #656] ; (8005294 <UART_SetConfig+0x308>)
  12491. 8005002: 4293 cmp r3, r2
  12492. 8005004: d14f bne.n 80050a6 <UART_SetConfig+0x11a>
  12493. {
  12494. pclk = HAL_RCC_GetPCLK2Freq();
  12495. 8005006: f7fe fe8d bl 8003d24 <HAL_RCC_GetPCLK2Freq>
  12496. 800500a: 60b8 str r0, [r7, #8]
  12497. huart->Instance->BRR = UART_BRR_SAMPLING8(pclk, huart->Init.BaudRate);
  12498. 800500c: 68ba ldr r2, [r7, #8]
  12499. 800500e: 4613 mov r3, r2
  12500. 8005010: 009b lsls r3, r3, #2
  12501. 8005012: 4413 add r3, r2
  12502. 8005014: 009a lsls r2, r3, #2
  12503. 8005016: 441a add r2, r3
  12504. 8005018: 687b ldr r3, [r7, #4]
  12505. 800501a: 685b ldr r3, [r3, #4]
  12506. 800501c: 005b lsls r3, r3, #1
  12507. 800501e: fbb2 f3f3 udiv r3, r2, r3
  12508. 8005022: 4a9d ldr r2, [pc, #628] ; (8005298 <UART_SetConfig+0x30c>)
  12509. 8005024: fba2 2303 umull r2, r3, r2, r3
  12510. 8005028: 095b lsrs r3, r3, #5
  12511. 800502a: 0119 lsls r1, r3, #4
  12512. 800502c: 68ba ldr r2, [r7, #8]
  12513. 800502e: 4613 mov r3, r2
  12514. 8005030: 009b lsls r3, r3, #2
  12515. 8005032: 4413 add r3, r2
  12516. 8005034: 009a lsls r2, r3, #2
  12517. 8005036: 441a add r2, r3
  12518. 8005038: 687b ldr r3, [r7, #4]
  12519. 800503a: 685b ldr r3, [r3, #4]
  12520. 800503c: 005b lsls r3, r3, #1
  12521. 800503e: fbb2 f2f3 udiv r2, r2, r3
  12522. 8005042: 4b95 ldr r3, [pc, #596] ; (8005298 <UART_SetConfig+0x30c>)
  12523. 8005044: fba3 0302 umull r0, r3, r3, r2
  12524. 8005048: 095b lsrs r3, r3, #5
  12525. 800504a: 2064 movs r0, #100 ; 0x64
  12526. 800504c: fb00 f303 mul.w r3, r0, r3
  12527. 8005050: 1ad3 subs r3, r2, r3
  12528. 8005052: 00db lsls r3, r3, #3
  12529. 8005054: 3332 adds r3, #50 ; 0x32
  12530. 8005056: 4a90 ldr r2, [pc, #576] ; (8005298 <UART_SetConfig+0x30c>)
  12531. 8005058: fba2 2303 umull r2, r3, r2, r3
  12532. 800505c: 095b lsrs r3, r3, #5
  12533. 800505e: 005b lsls r3, r3, #1
  12534. 8005060: f403 73f8 and.w r3, r3, #496 ; 0x1f0
  12535. 8005064: 4419 add r1, r3
  12536. 8005066: 68ba ldr r2, [r7, #8]
  12537. 8005068: 4613 mov r3, r2
  12538. 800506a: 009b lsls r3, r3, #2
  12539. 800506c: 4413 add r3, r2
  12540. 800506e: 009a lsls r2, r3, #2
  12541. 8005070: 441a add r2, r3
  12542. 8005072: 687b ldr r3, [r7, #4]
  12543. 8005074: 685b ldr r3, [r3, #4]
  12544. 8005076: 005b lsls r3, r3, #1
  12545. 8005078: fbb2 f2f3 udiv r2, r2, r3
  12546. 800507c: 4b86 ldr r3, [pc, #536] ; (8005298 <UART_SetConfig+0x30c>)
  12547. 800507e: fba3 0302 umull r0, r3, r3, r2
  12548. 8005082: 095b lsrs r3, r3, #5
  12549. 8005084: 2064 movs r0, #100 ; 0x64
  12550. 8005086: fb00 f303 mul.w r3, r0, r3
  12551. 800508a: 1ad3 subs r3, r2, r3
  12552. 800508c: 00db lsls r3, r3, #3
  12553. 800508e: 3332 adds r3, #50 ; 0x32
  12554. 8005090: 4a81 ldr r2, [pc, #516] ; (8005298 <UART_SetConfig+0x30c>)
  12555. 8005092: fba2 2303 umull r2, r3, r2, r3
  12556. 8005096: 095b lsrs r3, r3, #5
  12557. 8005098: f003 0207 and.w r2, r3, #7
  12558. 800509c: 687b ldr r3, [r7, #4]
  12559. 800509e: 681b ldr r3, [r3, #0]
  12560. 80050a0: 440a add r2, r1
  12561. 80050a2: 609a str r2, [r3, #8]
  12562. {
  12563. pclk = HAL_RCC_GetPCLK1Freq();
  12564. huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate);
  12565. }
  12566. #endif /* USART_CR1_OVER8 */
  12567. }
  12568. 80050a4: e0f1 b.n 800528a <UART_SetConfig+0x2fe>
  12569. pclk = HAL_RCC_GetPCLK1Freq();
  12570. 80050a6: f7fe fe29 bl 8003cfc <HAL_RCC_GetPCLK1Freq>
  12571. 80050aa: 60b8 str r0, [r7, #8]
  12572. huart->Instance->BRR = UART_BRR_SAMPLING8(pclk, huart->Init.BaudRate);
  12573. 80050ac: 68ba ldr r2, [r7, #8]
  12574. 80050ae: 4613 mov r3, r2
  12575. 80050b0: 009b lsls r3, r3, #2
  12576. 80050b2: 4413 add r3, r2
  12577. 80050b4: 009a lsls r2, r3, #2
  12578. 80050b6: 441a add r2, r3
  12579. 80050b8: 687b ldr r3, [r7, #4]
  12580. 80050ba: 685b ldr r3, [r3, #4]
  12581. 80050bc: 005b lsls r3, r3, #1
  12582. 80050be: fbb2 f3f3 udiv r3, r2, r3
  12583. 80050c2: 4a75 ldr r2, [pc, #468] ; (8005298 <UART_SetConfig+0x30c>)
  12584. 80050c4: fba2 2303 umull r2, r3, r2, r3
  12585. 80050c8: 095b lsrs r3, r3, #5
  12586. 80050ca: 0119 lsls r1, r3, #4
  12587. 80050cc: 68ba ldr r2, [r7, #8]
  12588. 80050ce: 4613 mov r3, r2
  12589. 80050d0: 009b lsls r3, r3, #2
  12590. 80050d2: 4413 add r3, r2
  12591. 80050d4: 009a lsls r2, r3, #2
  12592. 80050d6: 441a add r2, r3
  12593. 80050d8: 687b ldr r3, [r7, #4]
  12594. 80050da: 685b ldr r3, [r3, #4]
  12595. 80050dc: 005b lsls r3, r3, #1
  12596. 80050de: fbb2 f2f3 udiv r2, r2, r3
  12597. 80050e2: 4b6d ldr r3, [pc, #436] ; (8005298 <UART_SetConfig+0x30c>)
  12598. 80050e4: fba3 0302 umull r0, r3, r3, r2
  12599. 80050e8: 095b lsrs r3, r3, #5
  12600. 80050ea: 2064 movs r0, #100 ; 0x64
  12601. 80050ec: fb00 f303 mul.w r3, r0, r3
  12602. 80050f0: 1ad3 subs r3, r2, r3
  12603. 80050f2: 00db lsls r3, r3, #3
  12604. 80050f4: 3332 adds r3, #50 ; 0x32
  12605. 80050f6: 4a68 ldr r2, [pc, #416] ; (8005298 <UART_SetConfig+0x30c>)
  12606. 80050f8: fba2 2303 umull r2, r3, r2, r3
  12607. 80050fc: 095b lsrs r3, r3, #5
  12608. 80050fe: 005b lsls r3, r3, #1
  12609. 8005100: f403 73f8 and.w r3, r3, #496 ; 0x1f0
  12610. 8005104: 4419 add r1, r3
  12611. 8005106: 68ba ldr r2, [r7, #8]
  12612. 8005108: 4613 mov r3, r2
  12613. 800510a: 009b lsls r3, r3, #2
  12614. 800510c: 4413 add r3, r2
  12615. 800510e: 009a lsls r2, r3, #2
  12616. 8005110: 441a add r2, r3
  12617. 8005112: 687b ldr r3, [r7, #4]
  12618. 8005114: 685b ldr r3, [r3, #4]
  12619. 8005116: 005b lsls r3, r3, #1
  12620. 8005118: fbb2 f2f3 udiv r2, r2, r3
  12621. 800511c: 4b5e ldr r3, [pc, #376] ; (8005298 <UART_SetConfig+0x30c>)
  12622. 800511e: fba3 0302 umull r0, r3, r3, r2
  12623. 8005122: 095b lsrs r3, r3, #5
  12624. 8005124: 2064 movs r0, #100 ; 0x64
  12625. 8005126: fb00 f303 mul.w r3, r0, r3
  12626. 800512a: 1ad3 subs r3, r2, r3
  12627. 800512c: 00db lsls r3, r3, #3
  12628. 800512e: 3332 adds r3, #50 ; 0x32
  12629. 8005130: 4a59 ldr r2, [pc, #356] ; (8005298 <UART_SetConfig+0x30c>)
  12630. 8005132: fba2 2303 umull r2, r3, r2, r3
  12631. 8005136: 095b lsrs r3, r3, #5
  12632. 8005138: f003 0207 and.w r2, r3, #7
  12633. 800513c: 687b ldr r3, [r7, #4]
  12634. 800513e: 681b ldr r3, [r3, #0]
  12635. 8005140: 440a add r2, r1
  12636. 8005142: 609a str r2, [r3, #8]
  12637. }
  12638. 8005144: e0a1 b.n 800528a <UART_SetConfig+0x2fe>
  12639. if(huart->Instance == USART1)
  12640. 8005146: 687b ldr r3, [r7, #4]
  12641. 8005148: 681b ldr r3, [r3, #0]
  12642. 800514a: 4a52 ldr r2, [pc, #328] ; (8005294 <UART_SetConfig+0x308>)
  12643. 800514c: 4293 cmp r3, r2
  12644. 800514e: d14e bne.n 80051ee <UART_SetConfig+0x262>
  12645. pclk = HAL_RCC_GetPCLK2Freq();
  12646. 8005150: f7fe fde8 bl 8003d24 <HAL_RCC_GetPCLK2Freq>
  12647. 8005154: 60b8 str r0, [r7, #8]
  12648. huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate);
  12649. 8005156: 68ba ldr r2, [r7, #8]
  12650. 8005158: 4613 mov r3, r2
  12651. 800515a: 009b lsls r3, r3, #2
  12652. 800515c: 4413 add r3, r2
  12653. 800515e: 009a lsls r2, r3, #2
  12654. 8005160: 441a add r2, r3
  12655. 8005162: 687b ldr r3, [r7, #4]
  12656. 8005164: 685b ldr r3, [r3, #4]
  12657. 8005166: 009b lsls r3, r3, #2
  12658. 8005168: fbb2 f3f3 udiv r3, r2, r3
  12659. 800516c: 4a4a ldr r2, [pc, #296] ; (8005298 <UART_SetConfig+0x30c>)
  12660. 800516e: fba2 2303 umull r2, r3, r2, r3
  12661. 8005172: 095b lsrs r3, r3, #5
  12662. 8005174: 0119 lsls r1, r3, #4
  12663. 8005176: 68ba ldr r2, [r7, #8]
  12664. 8005178: 4613 mov r3, r2
  12665. 800517a: 009b lsls r3, r3, #2
  12666. 800517c: 4413 add r3, r2
  12667. 800517e: 009a lsls r2, r3, #2
  12668. 8005180: 441a add r2, r3
  12669. 8005182: 687b ldr r3, [r7, #4]
  12670. 8005184: 685b ldr r3, [r3, #4]
  12671. 8005186: 009b lsls r3, r3, #2
  12672. 8005188: fbb2 f2f3 udiv r2, r2, r3
  12673. 800518c: 4b42 ldr r3, [pc, #264] ; (8005298 <UART_SetConfig+0x30c>)
  12674. 800518e: fba3 0302 umull r0, r3, r3, r2
  12675. 8005192: 095b lsrs r3, r3, #5
  12676. 8005194: 2064 movs r0, #100 ; 0x64
  12677. 8005196: fb00 f303 mul.w r3, r0, r3
  12678. 800519a: 1ad3 subs r3, r2, r3
  12679. 800519c: 011b lsls r3, r3, #4
  12680. 800519e: 3332 adds r3, #50 ; 0x32
  12681. 80051a0: 4a3d ldr r2, [pc, #244] ; (8005298 <UART_SetConfig+0x30c>)
  12682. 80051a2: fba2 2303 umull r2, r3, r2, r3
  12683. 80051a6: 095b lsrs r3, r3, #5
  12684. 80051a8: f003 03f0 and.w r3, r3, #240 ; 0xf0
  12685. 80051ac: 4419 add r1, r3
  12686. 80051ae: 68ba ldr r2, [r7, #8]
  12687. 80051b0: 4613 mov r3, r2
  12688. 80051b2: 009b lsls r3, r3, #2
  12689. 80051b4: 4413 add r3, r2
  12690. 80051b6: 009a lsls r2, r3, #2
  12691. 80051b8: 441a add r2, r3
  12692. 80051ba: 687b ldr r3, [r7, #4]
  12693. 80051bc: 685b ldr r3, [r3, #4]
  12694. 80051be: 009b lsls r3, r3, #2
  12695. 80051c0: fbb2 f2f3 udiv r2, r2, r3
  12696. 80051c4: 4b34 ldr r3, [pc, #208] ; (8005298 <UART_SetConfig+0x30c>)
  12697. 80051c6: fba3 0302 umull r0, r3, r3, r2
  12698. 80051ca: 095b lsrs r3, r3, #5
  12699. 80051cc: 2064 movs r0, #100 ; 0x64
  12700. 80051ce: fb00 f303 mul.w r3, r0, r3
  12701. 80051d2: 1ad3 subs r3, r2, r3
  12702. 80051d4: 011b lsls r3, r3, #4
  12703. 80051d6: 3332 adds r3, #50 ; 0x32
  12704. 80051d8: 4a2f ldr r2, [pc, #188] ; (8005298 <UART_SetConfig+0x30c>)
  12705. 80051da: fba2 2303 umull r2, r3, r2, r3
  12706. 80051de: 095b lsrs r3, r3, #5
  12707. 80051e0: f003 020f and.w r2, r3, #15
  12708. 80051e4: 687b ldr r3, [r7, #4]
  12709. 80051e6: 681b ldr r3, [r3, #0]
  12710. 80051e8: 440a add r2, r1
  12711. 80051ea: 609a str r2, [r3, #8]
  12712. }
  12713. 80051ec: e04d b.n 800528a <UART_SetConfig+0x2fe>
  12714. pclk = HAL_RCC_GetPCLK1Freq();
  12715. 80051ee: f7fe fd85 bl 8003cfc <HAL_RCC_GetPCLK1Freq>
  12716. 80051f2: 60b8 str r0, [r7, #8]
  12717. huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate);
  12718. 80051f4: 68ba ldr r2, [r7, #8]
  12719. 80051f6: 4613 mov r3, r2
  12720. 80051f8: 009b lsls r3, r3, #2
  12721. 80051fa: 4413 add r3, r2
  12722. 80051fc: 009a lsls r2, r3, #2
  12723. 80051fe: 441a add r2, r3
  12724. 8005200: 687b ldr r3, [r7, #4]
  12725. 8005202: 685b ldr r3, [r3, #4]
  12726. 8005204: 009b lsls r3, r3, #2
  12727. 8005206: fbb2 f3f3 udiv r3, r2, r3
  12728. 800520a: 4a23 ldr r2, [pc, #140] ; (8005298 <UART_SetConfig+0x30c>)
  12729. 800520c: fba2 2303 umull r2, r3, r2, r3
  12730. 8005210: 095b lsrs r3, r3, #5
  12731. 8005212: 0119 lsls r1, r3, #4
  12732. 8005214: 68ba ldr r2, [r7, #8]
  12733. 8005216: 4613 mov r3, r2
  12734. 8005218: 009b lsls r3, r3, #2
  12735. 800521a: 4413 add r3, r2
  12736. 800521c: 009a lsls r2, r3, #2
  12737. 800521e: 441a add r2, r3
  12738. 8005220: 687b ldr r3, [r7, #4]
  12739. 8005222: 685b ldr r3, [r3, #4]
  12740. 8005224: 009b lsls r3, r3, #2
  12741. 8005226: fbb2 f2f3 udiv r2, r2, r3
  12742. 800522a: 4b1b ldr r3, [pc, #108] ; (8005298 <UART_SetConfig+0x30c>)
  12743. 800522c: fba3 0302 umull r0, r3, r3, r2
  12744. 8005230: 095b lsrs r3, r3, #5
  12745. 8005232: 2064 movs r0, #100 ; 0x64
  12746. 8005234: fb00 f303 mul.w r3, r0, r3
  12747. 8005238: 1ad3 subs r3, r2, r3
  12748. 800523a: 011b lsls r3, r3, #4
  12749. 800523c: 3332 adds r3, #50 ; 0x32
  12750. 800523e: 4a16 ldr r2, [pc, #88] ; (8005298 <UART_SetConfig+0x30c>)
  12751. 8005240: fba2 2303 umull r2, r3, r2, r3
  12752. 8005244: 095b lsrs r3, r3, #5
  12753. 8005246: f003 03f0 and.w r3, r3, #240 ; 0xf0
  12754. 800524a: 4419 add r1, r3
  12755. 800524c: 68ba ldr r2, [r7, #8]
  12756. 800524e: 4613 mov r3, r2
  12757. 8005250: 009b lsls r3, r3, #2
  12758. 8005252: 4413 add r3, r2
  12759. 8005254: 009a lsls r2, r3, #2
  12760. 8005256: 441a add r2, r3
  12761. 8005258: 687b ldr r3, [r7, #4]
  12762. 800525a: 685b ldr r3, [r3, #4]
  12763. 800525c: 009b lsls r3, r3, #2
  12764. 800525e: fbb2 f2f3 udiv r2, r2, r3
  12765. 8005262: 4b0d ldr r3, [pc, #52] ; (8005298 <UART_SetConfig+0x30c>)
  12766. 8005264: fba3 0302 umull r0, r3, r3, r2
  12767. 8005268: 095b lsrs r3, r3, #5
  12768. 800526a: 2064 movs r0, #100 ; 0x64
  12769. 800526c: fb00 f303 mul.w r3, r0, r3
  12770. 8005270: 1ad3 subs r3, r2, r3
  12771. 8005272: 011b lsls r3, r3, #4
  12772. 8005274: 3332 adds r3, #50 ; 0x32
  12773. 8005276: 4a08 ldr r2, [pc, #32] ; (8005298 <UART_SetConfig+0x30c>)
  12774. 8005278: fba2 2303 umull r2, r3, r2, r3
  12775. 800527c: 095b lsrs r3, r3, #5
  12776. 800527e: f003 020f and.w r2, r3, #15
  12777. 8005282: 687b ldr r3, [r7, #4]
  12778. 8005284: 681b ldr r3, [r3, #0]
  12779. 8005286: 440a add r2, r1
  12780. 8005288: 609a str r2, [r3, #8]
  12781. }
  12782. 800528a: bf00 nop
  12783. 800528c: 3710 adds r7, #16
  12784. 800528e: 46bd mov sp, r7
  12785. 8005290: bd80 pop {r7, pc}
  12786. 8005292: bf00 nop
  12787. 8005294: 40013800 .word 0x40013800
  12788. 8005298: 51eb851f .word 0x51eb851f
  12789. 0800529c <_write>:
  12790. /* USER CODE END PFP */
  12791. /* Private user code ---------------------------------------------------------*/
  12792. /* USER CODE BEGIN 0 */
  12793. int _write (int file, uint8_t *ptr, uint16_t len)
  12794. {
  12795. 800529c: b580 push {r7, lr}
  12796. 800529e: b084 sub sp, #16
  12797. 80052a0: af00 add r7, sp, #0
  12798. 80052a2: 60f8 str r0, [r7, #12]
  12799. 80052a4: 60b9 str r1, [r7, #8]
  12800. 80052a6: 4613 mov r3, r2
  12801. 80052a8: 80fb strh r3, [r7, #6]
  12802. #if 0 // PYJ.2020.06.03_BEGIN --
  12803. HAL_UART_Transmit(&hTest, ptr, len,10);
  12804. #else
  12805. HAL_UART_Transmit(&hTerminal, ptr, len,10);
  12806. 80052aa: 88fa ldrh r2, [r7, #6]
  12807. 80052ac: 230a movs r3, #10
  12808. 80052ae: 68b9 ldr r1, [r7, #8]
  12809. 80052b0: 4803 ldr r0, [pc, #12] ; (80052c0 <_write+0x24>)
  12810. 80052b2: f7ff f930 bl 8004516 <HAL_UART_Transmit>
  12811. #endif // PYJ.2020.06.03_END --
  12812. return len;
  12813. 80052b6: 88fb ldrh r3, [r7, #6]
  12814. }
  12815. 80052b8: 4618 mov r0, r3
  12816. 80052ba: 3710 adds r7, #16
  12817. 80052bc: 46bd mov sp, r7
  12818. 80052be: bd80 pop {r7, pc}
  12819. 80052c0: 20000954 .word 0x20000954
  12820. 080052c4 <main>:
  12821. /**
  12822. * @brief The application entry point.
  12823. * @retval int
  12824. */
  12825. int main(void)
  12826. {
  12827. 80052c4: b580 push {r7, lr}
  12828. 80052c6: af00 add r7, sp, #0
  12829. /* USER CODE END 1 */
  12830. /* MCU Configuration--------------------------------------------------------*/
  12831. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  12832. HAL_Init();
  12833. 80052c8: f7fc fd60 bl 8001d8c <HAL_Init>
  12834. /* USER CODE BEGIN Init */
  12835. /* USER CODE END Init */
  12836. /* Configure the system clock */
  12837. SystemClock_Config();
  12838. 80052cc: f000 f84c bl 8005368 <SystemClock_Config>
  12839. /* USER CODE BEGIN SysInit */
  12840. /* USER CODE END SysInit */
  12841. /* Initialize all configured peripherals */
  12842. MX_GPIO_Init();
  12843. 80052d0: f000 f9e6 bl 80056a0 <MX_GPIO_Init>
  12844. MX_DMA_Init();
  12845. 80052d4: f000 f9ce bl 8005674 <MX_DMA_Init>
  12846. MX_ADC1_Init();
  12847. 80052d8: f000 f8e6 bl 80054a8 <MX_ADC1_Init>
  12848. MX_TIM6_Init();
  12849. 80052dc: f000 f940 bl 8005560 <MX_TIM6_Init>
  12850. MX_USART1_UART_Init();
  12851. 80052e0: f000 f974 bl 80055cc <MX_USART1_UART_Init>
  12852. MX_USART3_UART_Init();
  12853. 80052e4: f000 f99c bl 8005620 <MX_USART3_UART_Init>
  12854. /* Initialize interrupts */
  12855. MX_NVIC_Init();
  12856. 80052e8: f000 f892 bl 8005410 <MX_NVIC_Init>
  12857. /* USER CODE BEGIN 2 */
  12858. HAL_TIM_Base_Start_IT(&htim6);
  12859. 80052ec: 4815 ldr r0, [pc, #84] ; (8005344 <main+0x80>)
  12860. 80052ee: f7fe fea0 bl 8004032 <HAL_TIM_Base_Start_IT>
  12861. setbuf(stdout, NULL);
  12862. 80052f2: 4b15 ldr r3, [pc, #84] ; (8005348 <main+0x84>)
  12863. 80052f4: 681b ldr r3, [r3, #0]
  12864. 80052f6: 689b ldr r3, [r3, #8]
  12865. 80052f8: 2100 movs r1, #0
  12866. 80052fa: 4618 mov r0, r3
  12867. 80052fc: f001 fbac bl 8006a58 <setbuf>
  12868. InitUartQueue(&MainQueue);
  12869. 8005300: 4812 ldr r0, [pc, #72] ; (800534c <main+0x88>)
  12870. 8005302: f7fc fbf1 bl 8001ae8 <InitUartQueue>
  12871. ADC_Initialize();
  12872. 8005306: f7fc f8b1 bl 800146c <ADC_Initialize>
  12873. NessLab_Init();
  12874. 800530a: f7fb fc8d bl 8000c28 <NessLab_Init>
  12875. #if 1 // PYJ.2020.05.06_BEGIN --
  12876. printf("****************************************\r\n");
  12877. 800530e: 4810 ldr r0, [pc, #64] ; (8005350 <main+0x8c>)
  12878. 8005310: f001 fb9a bl 8006a48 <puts>
  12879. printf("NESSLAB Project\r\n");
  12880. 8005314: 480f ldr r0, [pc, #60] ; (8005354 <main+0x90>)
  12881. 8005316: f001 fb97 bl 8006a48 <puts>
  12882. printf("Build at %s %s\r\n", __DATE__, __TIME__);
  12883. 800531a: 4a0f ldr r2, [pc, #60] ; (8005358 <main+0x94>)
  12884. 800531c: 490f ldr r1, [pc, #60] ; (800535c <main+0x98>)
  12885. 800531e: 4810 ldr r0, [pc, #64] ; (8005360 <main+0x9c>)
  12886. 8005320: f001 fb1e bl 8006960 <iprintf>
  12887. printf("Copyright (c) 2020. BLUECELL\r\n");
  12888. 8005324: 480f ldr r0, [pc, #60] ; (8005364 <main+0xa0>)
  12889. 8005326: f001 fb8f bl 8006a48 <puts>
  12890. printf("****************************************\r\n");
  12891. 800532a: 4809 ldr r0, [pc, #36] ; (8005350 <main+0x8c>)
  12892. 800532c: f001 fb8c bl 8006a48 <puts>
  12893. while (1)
  12894. {
  12895. #if 1 // PYJ.2020.08.31_BEGIN --
  12896. Boot_LED_Toggle(); /*LED Check*/
  12897. 8005330: f7fc fbc2 bl 8001ab8 <Boot_LED_Toggle>
  12898. Uart_Check(); /*Usart Rx*/
  12899. 8005334: f7fc fce4 bl 8001d00 <Uart_Check>
  12900. NessLab_GPIO_Operate();
  12901. 8005338: f7fc f824 bl 8001384 <NessLab_GPIO_Operate>
  12902. ADC_TDD_Arrange();
  12903. 800533c: f7fc f990 bl 8001660 <ADC_TDD_Arrange>
  12904. {
  12905. 8005340: e7f6 b.n 8005330 <main+0x6c>
  12906. 8005342: bf00 nop
  12907. 8005344: 20000b14 .word 0x20000b14
  12908. 8005348: 2000000c .word 0x2000000c
  12909. 800534c: 2000074c .word 0x2000074c
  12910. 8005350: 08008c60 .word 0x08008c60
  12911. 8005354: 08008c8c .word 0x08008c8c
  12912. 8005358: 08008ca0 .word 0x08008ca0
  12913. 800535c: 08008cac .word 0x08008cac
  12914. 8005360: 08008cb8 .word 0x08008cb8
  12915. 8005364: 08008ccc .word 0x08008ccc
  12916. 08005368 <SystemClock_Config>:
  12917. /**
  12918. * @brief System Clock Configuration
  12919. * @retval None
  12920. */
  12921. void SystemClock_Config(void)
  12922. {
  12923. 8005368: b580 push {r7, lr}
  12924. 800536a: b092 sub sp, #72 ; 0x48
  12925. 800536c: af00 add r7, sp, #0
  12926. RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  12927. 800536e: f107 0320 add.w r3, r7, #32
  12928. 8005372: 2228 movs r2, #40 ; 0x28
  12929. 8005374: 2100 movs r1, #0
  12930. 8005376: 4618 mov r0, r3
  12931. 8005378: f000 fe9a bl 80060b0 <memset>
  12932. RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  12933. 800537c: f107 030c add.w r3, r7, #12
  12934. 8005380: 2200 movs r2, #0
  12935. 8005382: 601a str r2, [r3, #0]
  12936. 8005384: 605a str r2, [r3, #4]
  12937. 8005386: 609a str r2, [r3, #8]
  12938. 8005388: 60da str r2, [r3, #12]
  12939. 800538a: 611a str r2, [r3, #16]
  12940. RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
  12941. 800538c: 463b mov r3, r7
  12942. 800538e: 2200 movs r2, #0
  12943. 8005390: 601a str r2, [r3, #0]
  12944. 8005392: 605a str r2, [r3, #4]
  12945. 8005394: 609a str r2, [r3, #8]
  12946. /** Initializes the CPU, AHB and APB busses clocks
  12947. */
  12948. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  12949. 8005396: 2302 movs r3, #2
  12950. 8005398: 623b str r3, [r7, #32]
  12951. RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  12952. 800539a: 2301 movs r3, #1
  12953. 800539c: 633b str r3, [r7, #48] ; 0x30
  12954. RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  12955. 800539e: 2310 movs r3, #16
  12956. 80053a0: 637b str r3, [r7, #52] ; 0x34
  12957. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  12958. 80053a2: 2302 movs r3, #2
  12959. 80053a4: 63fb str r3, [r7, #60] ; 0x3c
  12960. RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
  12961. 80053a6: 2300 movs r3, #0
  12962. 80053a8: 643b str r3, [r7, #64] ; 0x40
  12963. RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
  12964. 80053aa: f44f 1380 mov.w r3, #1048576 ; 0x100000
  12965. 80053ae: 647b str r3, [r7, #68] ; 0x44
  12966. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  12967. 80053b0: f107 0320 add.w r3, r7, #32
  12968. 80053b4: 4618 mov r0, r3
  12969. 80053b6: f7fe f8fb bl 80035b0 <HAL_RCC_OscConfig>
  12970. 80053ba: 4603 mov r3, r0
  12971. 80053bc: 2b00 cmp r3, #0
  12972. 80053be: d001 beq.n 80053c4 <SystemClock_Config+0x5c>
  12973. {
  12974. Error_Handler();
  12975. 80053c0: f000 faa8 bl 8005914 <Error_Handler>
  12976. }
  12977. /** Initializes the CPU, AHB and APB busses clocks
  12978. */
  12979. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  12980. 80053c4: 230f movs r3, #15
  12981. 80053c6: 60fb str r3, [r7, #12]
  12982. |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  12983. RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  12984. 80053c8: 2302 movs r3, #2
  12985. 80053ca: 613b str r3, [r7, #16]
  12986. RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  12987. 80053cc: 2300 movs r3, #0
  12988. 80053ce: 617b str r3, [r7, #20]
  12989. RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  12990. 80053d0: 2300 movs r3, #0
  12991. 80053d2: 61bb str r3, [r7, #24]
  12992. RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  12993. 80053d4: 2300 movs r3, #0
  12994. 80053d6: 61fb str r3, [r7, #28]
  12995. if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  12996. 80053d8: f107 030c add.w r3, r7, #12
  12997. 80053dc: 2100 movs r1, #0
  12998. 80053de: 4618 mov r0, r3
  12999. 80053e0: f7fe fb66 bl 8003ab0 <HAL_RCC_ClockConfig>
  13000. 80053e4: 4603 mov r3, r0
  13001. 80053e6: 2b00 cmp r3, #0
  13002. 80053e8: d001 beq.n 80053ee <SystemClock_Config+0x86>
  13003. {
  13004. Error_Handler();
  13005. 80053ea: f000 fa93 bl 8005914 <Error_Handler>
  13006. }
  13007. PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
  13008. 80053ee: 2302 movs r3, #2
  13009. 80053f0: 603b str r3, [r7, #0]
  13010. PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV2;
  13011. 80053f2: 2300 movs r3, #0
  13012. 80053f4: 60bb str r3, [r7, #8]
  13013. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  13014. 80053f6: 463b mov r3, r7
  13015. 80053f8: 4618 mov r0, r3
  13016. 80053fa: f7fe fcf1 bl 8003de0 <HAL_RCCEx_PeriphCLKConfig>
  13017. 80053fe: 4603 mov r3, r0
  13018. 8005400: 2b00 cmp r3, #0
  13019. 8005402: d001 beq.n 8005408 <SystemClock_Config+0xa0>
  13020. {
  13021. Error_Handler();
  13022. 8005404: f000 fa86 bl 8005914 <Error_Handler>
  13023. }
  13024. }
  13025. 8005408: bf00 nop
  13026. 800540a: 3748 adds r7, #72 ; 0x48
  13027. 800540c: 46bd mov sp, r7
  13028. 800540e: bd80 pop {r7, pc}
  13029. 08005410 <MX_NVIC_Init>:
  13030. /**
  13031. * @brief NVIC Configuration.
  13032. * @retval None
  13033. */
  13034. static void MX_NVIC_Init(void)
  13035. {
  13036. 8005410: b580 push {r7, lr}
  13037. 8005412: af00 add r7, sp, #0
  13038. /* ADC1_IRQn interrupt configuration */
  13039. HAL_NVIC_SetPriority(ADC1_IRQn, 0, 0);
  13040. 8005414: 2200 movs r2, #0
  13041. 8005416: 2100 movs r1, #0
  13042. 8005418: 2012 movs r0, #18
  13043. 800541a: f7fd fa98 bl 800294e <HAL_NVIC_SetPriority>
  13044. HAL_NVIC_EnableIRQ(ADC1_IRQn);
  13045. 800541e: 2012 movs r0, #18
  13046. 8005420: f7fd fab1 bl 8002986 <HAL_NVIC_EnableIRQ>
  13047. /* USART1_IRQn interrupt configuration */
  13048. HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
  13049. 8005424: 2200 movs r2, #0
  13050. 8005426: 2100 movs r1, #0
  13051. 8005428: 2025 movs r0, #37 ; 0x25
  13052. 800542a: f7fd fa90 bl 800294e <HAL_NVIC_SetPriority>
  13053. HAL_NVIC_EnableIRQ(USART1_IRQn);
  13054. 800542e: 2025 movs r0, #37 ; 0x25
  13055. 8005430: f7fd faa9 bl 8002986 <HAL_NVIC_EnableIRQ>
  13056. /* USART3_IRQn interrupt configuration */
  13057. HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);
  13058. 8005434: 2200 movs r2, #0
  13059. 8005436: 2100 movs r1, #0
  13060. 8005438: 2027 movs r0, #39 ; 0x27
  13061. 800543a: f7fd fa88 bl 800294e <HAL_NVIC_SetPriority>
  13062. HAL_NVIC_EnableIRQ(USART3_IRQn);
  13063. 800543e: 2027 movs r0, #39 ; 0x27
  13064. 8005440: f7fd faa1 bl 8002986 <HAL_NVIC_EnableIRQ>
  13065. /* TIM6_DAC_IRQn interrupt configuration */
  13066. HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 0, 0);
  13067. 8005444: 2200 movs r2, #0
  13068. 8005446: 2100 movs r1, #0
  13069. 8005448: 2036 movs r0, #54 ; 0x36
  13070. 800544a: f7fd fa80 bl 800294e <HAL_NVIC_SetPriority>
  13071. HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);
  13072. 800544e: 2036 movs r0, #54 ; 0x36
  13073. 8005450: f7fd fa99 bl 8002986 <HAL_NVIC_EnableIRQ>
  13074. /* DMA1_Channel2_IRQn interrupt configuration */
  13075. HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 0, 0);
  13076. 8005454: 2200 movs r2, #0
  13077. 8005456: 2100 movs r1, #0
  13078. 8005458: 200c movs r0, #12
  13079. 800545a: f7fd fa78 bl 800294e <HAL_NVIC_SetPriority>
  13080. HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn);
  13081. 800545e: 200c movs r0, #12
  13082. 8005460: f7fd fa91 bl 8002986 <HAL_NVIC_EnableIRQ>
  13083. /* DMA1_Channel4_IRQn interrupt configuration */
  13084. HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0);
  13085. 8005464: 2200 movs r2, #0
  13086. 8005466: 2100 movs r1, #0
  13087. 8005468: 200e movs r0, #14
  13088. 800546a: f7fd fa70 bl 800294e <HAL_NVIC_SetPriority>
  13089. HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
  13090. 800546e: 200e movs r0, #14
  13091. 8005470: f7fd fa89 bl 8002986 <HAL_NVIC_EnableIRQ>
  13092. /* DMA1_Channel3_IRQn interrupt configuration */
  13093. HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 0, 0);
  13094. 8005474: 2200 movs r2, #0
  13095. 8005476: 2100 movs r1, #0
  13096. 8005478: 200d movs r0, #13
  13097. 800547a: f7fd fa68 bl 800294e <HAL_NVIC_SetPriority>
  13098. HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn);
  13099. 800547e: 200d movs r0, #13
  13100. 8005480: f7fd fa81 bl 8002986 <HAL_NVIC_EnableIRQ>
  13101. /* DMA1_Channel1_IRQn interrupt configuration */
  13102. HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
  13103. 8005484: 2200 movs r2, #0
  13104. 8005486: 2100 movs r1, #0
  13105. 8005488: 200b movs r0, #11
  13106. 800548a: f7fd fa60 bl 800294e <HAL_NVIC_SetPriority>
  13107. HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
  13108. 800548e: 200b movs r0, #11
  13109. 8005490: f7fd fa79 bl 8002986 <HAL_NVIC_EnableIRQ>
  13110. /* DMA1_Channel5_IRQn interrupt configuration */
  13111. HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0);
  13112. 8005494: 2200 movs r2, #0
  13113. 8005496: 2100 movs r1, #0
  13114. 8005498: 200f movs r0, #15
  13115. 800549a: f7fd fa58 bl 800294e <HAL_NVIC_SetPriority>
  13116. HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);
  13117. 800549e: 200f movs r0, #15
  13118. 80054a0: f7fd fa71 bl 8002986 <HAL_NVIC_EnableIRQ>
  13119. }
  13120. 80054a4: bf00 nop
  13121. 80054a6: bd80 pop {r7, pc}
  13122. 080054a8 <MX_ADC1_Init>:
  13123. * @brief ADC1 Initialization Function
  13124. * @param None
  13125. * @retval None
  13126. */
  13127. static void MX_ADC1_Init(void)
  13128. {
  13129. 80054a8: b580 push {r7, lr}
  13130. 80054aa: b084 sub sp, #16
  13131. 80054ac: af00 add r7, sp, #0
  13132. /* USER CODE BEGIN ADC1_Init 0 */
  13133. /* USER CODE END ADC1_Init 0 */
  13134. ADC_ChannelConfTypeDef sConfig = {0};
  13135. 80054ae: 1d3b adds r3, r7, #4
  13136. 80054b0: 2200 movs r2, #0
  13137. 80054b2: 601a str r2, [r3, #0]
  13138. 80054b4: 605a str r2, [r3, #4]
  13139. 80054b6: 609a str r2, [r3, #8]
  13140. /* USER CODE BEGIN ADC1_Init 1 */
  13141. /* USER CODE END ADC1_Init 1 */
  13142. /** Common config
  13143. */
  13144. hadc1.Instance = ADC1;
  13145. 80054b8: 4b27 ldr r3, [pc, #156] ; (8005558 <MX_ADC1_Init+0xb0>)
  13146. 80054ba: 4a28 ldr r2, [pc, #160] ; (800555c <MX_ADC1_Init+0xb4>)
  13147. 80054bc: 601a str r2, [r3, #0]
  13148. hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
  13149. 80054be: 4b26 ldr r3, [pc, #152] ; (8005558 <MX_ADC1_Init+0xb0>)
  13150. 80054c0: f44f 7280 mov.w r2, #256 ; 0x100
  13151. 80054c4: 609a str r2, [r3, #8]
  13152. hadc1.Init.ContinuousConvMode = ENABLE;
  13153. 80054c6: 4b24 ldr r3, [pc, #144] ; (8005558 <MX_ADC1_Init+0xb0>)
  13154. 80054c8: 2201 movs r2, #1
  13155. 80054ca: 731a strb r2, [r3, #12]
  13156. hadc1.Init.DiscontinuousConvMode = DISABLE;
  13157. 80054cc: 4b22 ldr r3, [pc, #136] ; (8005558 <MX_ADC1_Init+0xb0>)
  13158. 80054ce: 2200 movs r2, #0
  13159. 80054d0: 751a strb r2, [r3, #20]
  13160. hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  13161. 80054d2: 4b21 ldr r3, [pc, #132] ; (8005558 <MX_ADC1_Init+0xb0>)
  13162. 80054d4: f44f 2260 mov.w r2, #917504 ; 0xe0000
  13163. 80054d8: 61da str r2, [r3, #28]
  13164. hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  13165. 80054da: 4b1f ldr r3, [pc, #124] ; (8005558 <MX_ADC1_Init+0xb0>)
  13166. 80054dc: 2200 movs r2, #0
  13167. 80054de: 605a str r2, [r3, #4]
  13168. hadc1.Init.NbrOfConversion = 3;
  13169. 80054e0: 4b1d ldr r3, [pc, #116] ; (8005558 <MX_ADC1_Init+0xb0>)
  13170. 80054e2: 2203 movs r2, #3
  13171. 80054e4: 611a str r2, [r3, #16]
  13172. if (HAL_ADC_Init(&hadc1) != HAL_OK)
  13173. 80054e6: 481c ldr r0, [pc, #112] ; (8005558 <MX_ADC1_Init+0xb0>)
  13174. 80054e8: f7fc fc9c bl 8001e24 <HAL_ADC_Init>
  13175. 80054ec: 4603 mov r3, r0
  13176. 80054ee: 2b00 cmp r3, #0
  13177. 80054f0: d001 beq.n 80054f6 <MX_ADC1_Init+0x4e>
  13178. {
  13179. Error_Handler();
  13180. 80054f2: f000 fa0f bl 8005914 <Error_Handler>
  13181. }
  13182. /** Configure Regular Channel
  13183. */
  13184. sConfig.Channel = ADC_CHANNEL_0;
  13185. 80054f6: 2300 movs r3, #0
  13186. 80054f8: 607b str r3, [r7, #4]
  13187. sConfig.Rank = ADC_REGULAR_RANK_1;
  13188. 80054fa: 2301 movs r3, #1
  13189. 80054fc: 60bb str r3, [r7, #8]
  13190. sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
  13191. 80054fe: 2307 movs r3, #7
  13192. 8005500: 60fb str r3, [r7, #12]
  13193. if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  13194. 8005502: 1d3b adds r3, r7, #4
  13195. 8005504: 4619 mov r1, r3
  13196. 8005506: 4814 ldr r0, [pc, #80] ; (8005558 <MX_ADC1_Init+0xb0>)
  13197. 8005508: f7fc fedc bl 80022c4 <HAL_ADC_ConfigChannel>
  13198. 800550c: 4603 mov r3, r0
  13199. 800550e: 2b00 cmp r3, #0
  13200. 8005510: d001 beq.n 8005516 <MX_ADC1_Init+0x6e>
  13201. {
  13202. Error_Handler();
  13203. 8005512: f000 f9ff bl 8005914 <Error_Handler>
  13204. }
  13205. /** Configure Regular Channel
  13206. */
  13207. sConfig.Channel = ADC_CHANNEL_1;
  13208. 8005516: 2301 movs r3, #1
  13209. 8005518: 607b str r3, [r7, #4]
  13210. sConfig.Rank = ADC_REGULAR_RANK_2;
  13211. 800551a: 2302 movs r3, #2
  13212. 800551c: 60bb str r3, [r7, #8]
  13213. if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  13214. 800551e: 1d3b adds r3, r7, #4
  13215. 8005520: 4619 mov r1, r3
  13216. 8005522: 480d ldr r0, [pc, #52] ; (8005558 <MX_ADC1_Init+0xb0>)
  13217. 8005524: f7fc fece bl 80022c4 <HAL_ADC_ConfigChannel>
  13218. 8005528: 4603 mov r3, r0
  13219. 800552a: 2b00 cmp r3, #0
  13220. 800552c: d001 beq.n 8005532 <MX_ADC1_Init+0x8a>
  13221. {
  13222. Error_Handler();
  13223. 800552e: f000 f9f1 bl 8005914 <Error_Handler>
  13224. }
  13225. /** Configure Regular Channel
  13226. */
  13227. sConfig.Channel = ADC_CHANNEL_3;
  13228. 8005532: 2303 movs r3, #3
  13229. 8005534: 607b str r3, [r7, #4]
  13230. sConfig.Rank = ADC_REGULAR_RANK_3;
  13231. 8005536: 2303 movs r3, #3
  13232. 8005538: 60bb str r3, [r7, #8]
  13233. if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  13234. 800553a: 1d3b adds r3, r7, #4
  13235. 800553c: 4619 mov r1, r3
  13236. 800553e: 4806 ldr r0, [pc, #24] ; (8005558 <MX_ADC1_Init+0xb0>)
  13237. 8005540: f7fc fec0 bl 80022c4 <HAL_ADC_ConfigChannel>
  13238. 8005544: 4603 mov r3, r0
  13239. 8005546: 2b00 cmp r3, #0
  13240. 8005548: d001 beq.n 800554e <MX_ADC1_Init+0xa6>
  13241. {
  13242. Error_Handler();
  13243. 800554a: f000 f9e3 bl 8005914 <Error_Handler>
  13244. }
  13245. /* USER CODE BEGIN ADC1_Init 2 */
  13246. /* USER CODE END ADC1_Init 2 */
  13247. }
  13248. 800554e: bf00 nop
  13249. 8005550: 3710 adds r7, #16
  13250. 8005552: 46bd mov sp, r7
  13251. 8005554: bd80 pop {r7, pc}
  13252. 8005556: bf00 nop
  13253. 8005558: 20000a1c .word 0x20000a1c
  13254. 800555c: 40012400 .word 0x40012400
  13255. 08005560 <MX_TIM6_Init>:
  13256. * @brief TIM6 Initialization Function
  13257. * @param None
  13258. * @retval None
  13259. */
  13260. static void MX_TIM6_Init(void)
  13261. {
  13262. 8005560: b580 push {r7, lr}
  13263. 8005562: b082 sub sp, #8
  13264. 8005564: af00 add r7, sp, #0
  13265. /* USER CODE BEGIN TIM6_Init 0 */
  13266. /* USER CODE END TIM6_Init 0 */
  13267. TIM_MasterConfigTypeDef sMasterConfig = {0};
  13268. 8005566: 463b mov r3, r7
  13269. 8005568: 2200 movs r2, #0
  13270. 800556a: 601a str r2, [r3, #0]
  13271. 800556c: 605a str r2, [r3, #4]
  13272. /* USER CODE BEGIN TIM6_Init 1 */
  13273. /* USER CODE END TIM6_Init 1 */
  13274. htim6.Instance = TIM6;
  13275. 800556e: 4b15 ldr r3, [pc, #84] ; (80055c4 <MX_TIM6_Init+0x64>)
  13276. 8005570: 4a15 ldr r2, [pc, #84] ; (80055c8 <MX_TIM6_Init+0x68>)
  13277. 8005572: 601a str r2, [r3, #0]
  13278. htim6.Init.Prescaler = 2400-1;
  13279. 8005574: 4b13 ldr r3, [pc, #76] ; (80055c4 <MX_TIM6_Init+0x64>)
  13280. 8005576: f640 125f movw r2, #2399 ; 0x95f
  13281. 800557a: 605a str r2, [r3, #4]
  13282. htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
  13283. 800557c: 4b11 ldr r3, [pc, #68] ; (80055c4 <MX_TIM6_Init+0x64>)
  13284. 800557e: 2200 movs r2, #0
  13285. 8005580: 609a str r2, [r3, #8]
  13286. htim6.Init.Period = 10;
  13287. 8005582: 4b10 ldr r3, [pc, #64] ; (80055c4 <MX_TIM6_Init+0x64>)
  13288. 8005584: 220a movs r2, #10
  13289. 8005586: 60da str r2, [r3, #12]
  13290. htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  13291. 8005588: 4b0e ldr r3, [pc, #56] ; (80055c4 <MX_TIM6_Init+0x64>)
  13292. 800558a: 2200 movs r2, #0
  13293. 800558c: 619a str r2, [r3, #24]
  13294. if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
  13295. 800558e: 480d ldr r0, [pc, #52] ; (80055c4 <MX_TIM6_Init+0x64>)
  13296. 8005590: f7fe fd24 bl 8003fdc <HAL_TIM_Base_Init>
  13297. 8005594: 4603 mov r3, r0
  13298. 8005596: 2b00 cmp r3, #0
  13299. 8005598: d001 beq.n 800559e <MX_TIM6_Init+0x3e>
  13300. {
  13301. Error_Handler();
  13302. 800559a: f000 f9bb bl 8005914 <Error_Handler>
  13303. }
  13304. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  13305. 800559e: 2300 movs r3, #0
  13306. 80055a0: 603b str r3, [r7, #0]
  13307. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  13308. 80055a2: 2300 movs r3, #0
  13309. 80055a4: 607b str r3, [r7, #4]
  13310. if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
  13311. 80055a6: 463b mov r3, r7
  13312. 80055a8: 4619 mov r1, r3
  13313. 80055aa: 4806 ldr r0, [pc, #24] ; (80055c4 <MX_TIM6_Init+0x64>)
  13314. 80055ac: f7fe ff10 bl 80043d0 <HAL_TIMEx_MasterConfigSynchronization>
  13315. 80055b0: 4603 mov r3, r0
  13316. 80055b2: 2b00 cmp r3, #0
  13317. 80055b4: d001 beq.n 80055ba <MX_TIM6_Init+0x5a>
  13318. {
  13319. Error_Handler();
  13320. 80055b6: f000 f9ad bl 8005914 <Error_Handler>
  13321. }
  13322. /* USER CODE BEGIN TIM6_Init 2 */
  13323. /* USER CODE END TIM6_Init 2 */
  13324. }
  13325. 80055ba: bf00 nop
  13326. 80055bc: 3708 adds r7, #8
  13327. 80055be: 46bd mov sp, r7
  13328. 80055c0: bd80 pop {r7, pc}
  13329. 80055c2: bf00 nop
  13330. 80055c4: 20000b14 .word 0x20000b14
  13331. 80055c8: 40001000 .word 0x40001000
  13332. 080055cc <MX_USART1_UART_Init>:
  13333. * @brief USART1 Initialization Function
  13334. * @param None
  13335. * @retval None
  13336. */
  13337. static void MX_USART1_UART_Init(void)
  13338. {
  13339. 80055cc: b580 push {r7, lr}
  13340. 80055ce: af00 add r7, sp, #0
  13341. /* USER CODE END USART1_Init 0 */
  13342. /* USER CODE BEGIN USART1_Init 1 */
  13343. /* USER CODE END USART1_Init 1 */
  13344. huart1.Instance = USART1;
  13345. 80055d0: 4b11 ldr r3, [pc, #68] ; (8005618 <MX_USART1_UART_Init+0x4c>)
  13346. 80055d2: 4a12 ldr r2, [pc, #72] ; (800561c <MX_USART1_UART_Init+0x50>)
  13347. 80055d4: 601a str r2, [r3, #0]
  13348. huart1.Init.BaudRate = 115200;
  13349. 80055d6: 4b10 ldr r3, [pc, #64] ; (8005618 <MX_USART1_UART_Init+0x4c>)
  13350. 80055d8: f44f 32e1 mov.w r2, #115200 ; 0x1c200
  13351. 80055dc: 605a str r2, [r3, #4]
  13352. huart1.Init.WordLength = UART_WORDLENGTH_8B;
  13353. 80055de: 4b0e ldr r3, [pc, #56] ; (8005618 <MX_USART1_UART_Init+0x4c>)
  13354. 80055e0: 2200 movs r2, #0
  13355. 80055e2: 609a str r2, [r3, #8]
  13356. huart1.Init.StopBits = UART_STOPBITS_1;
  13357. 80055e4: 4b0c ldr r3, [pc, #48] ; (8005618 <MX_USART1_UART_Init+0x4c>)
  13358. 80055e6: 2200 movs r2, #0
  13359. 80055e8: 60da str r2, [r3, #12]
  13360. huart1.Init.Parity = UART_PARITY_NONE;
  13361. 80055ea: 4b0b ldr r3, [pc, #44] ; (8005618 <MX_USART1_UART_Init+0x4c>)
  13362. 80055ec: 2200 movs r2, #0
  13363. 80055ee: 611a str r2, [r3, #16]
  13364. huart1.Init.Mode = UART_MODE_TX_RX;
  13365. 80055f0: 4b09 ldr r3, [pc, #36] ; (8005618 <MX_USART1_UART_Init+0x4c>)
  13366. 80055f2: 220c movs r2, #12
  13367. 80055f4: 615a str r2, [r3, #20]
  13368. huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  13369. 80055f6: 4b08 ldr r3, [pc, #32] ; (8005618 <MX_USART1_UART_Init+0x4c>)
  13370. 80055f8: 2200 movs r2, #0
  13371. 80055fa: 619a str r2, [r3, #24]
  13372. huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  13373. 80055fc: 4b06 ldr r3, [pc, #24] ; (8005618 <MX_USART1_UART_Init+0x4c>)
  13374. 80055fe: 2200 movs r2, #0
  13375. 8005600: 61da str r2, [r3, #28]
  13376. if (HAL_UART_Init(&huart1) != HAL_OK)
  13377. 8005602: 4805 ldr r0, [pc, #20] ; (8005618 <MX_USART1_UART_Init+0x4c>)
  13378. 8005604: f7fe ff3a bl 800447c <HAL_UART_Init>
  13379. 8005608: 4603 mov r3, r0
  13380. 800560a: 2b00 cmp r3, #0
  13381. 800560c: d001 beq.n 8005612 <MX_USART1_UART_Init+0x46>
  13382. {
  13383. Error_Handler();
  13384. 800560e: f000 f981 bl 8005914 <Error_Handler>
  13385. }
  13386. /* USER CODE BEGIN USART1_Init 2 */
  13387. /* USER CODE END USART1_Init 2 */
  13388. }
  13389. 8005612: bf00 nop
  13390. 8005614: bd80 pop {r7, pc}
  13391. 8005616: bf00 nop
  13392. 8005618: 20000a90 .word 0x20000a90
  13393. 800561c: 40013800 .word 0x40013800
  13394. 08005620 <MX_USART3_UART_Init>:
  13395. * @brief USART3 Initialization Function
  13396. * @param None
  13397. * @retval None
  13398. */
  13399. static void MX_USART3_UART_Init(void)
  13400. {
  13401. 8005620: b580 push {r7, lr}
  13402. 8005622: af00 add r7, sp, #0
  13403. /* USER CODE END USART3_Init 0 */
  13404. /* USER CODE BEGIN USART3_Init 1 */
  13405. /* USER CODE END USART3_Init 1 */
  13406. huart3.Instance = USART3;
  13407. 8005624: 4b11 ldr r3, [pc, #68] ; (800566c <MX_USART3_UART_Init+0x4c>)
  13408. 8005626: 4a12 ldr r2, [pc, #72] ; (8005670 <MX_USART3_UART_Init+0x50>)
  13409. 8005628: 601a str r2, [r3, #0]
  13410. huart3.Init.BaudRate = 115200;
  13411. 800562a: 4b10 ldr r3, [pc, #64] ; (800566c <MX_USART3_UART_Init+0x4c>)
  13412. 800562c: f44f 32e1 mov.w r2, #115200 ; 0x1c200
  13413. 8005630: 605a str r2, [r3, #4]
  13414. huart3.Init.WordLength = UART_WORDLENGTH_8B;
  13415. 8005632: 4b0e ldr r3, [pc, #56] ; (800566c <MX_USART3_UART_Init+0x4c>)
  13416. 8005634: 2200 movs r2, #0
  13417. 8005636: 609a str r2, [r3, #8]
  13418. huart3.Init.StopBits = UART_STOPBITS_1;
  13419. 8005638: 4b0c ldr r3, [pc, #48] ; (800566c <MX_USART3_UART_Init+0x4c>)
  13420. 800563a: 2200 movs r2, #0
  13421. 800563c: 60da str r2, [r3, #12]
  13422. huart3.Init.Parity = UART_PARITY_NONE;
  13423. 800563e: 4b0b ldr r3, [pc, #44] ; (800566c <MX_USART3_UART_Init+0x4c>)
  13424. 8005640: 2200 movs r2, #0
  13425. 8005642: 611a str r2, [r3, #16]
  13426. huart3.Init.Mode = UART_MODE_TX_RX;
  13427. 8005644: 4b09 ldr r3, [pc, #36] ; (800566c <MX_USART3_UART_Init+0x4c>)
  13428. 8005646: 220c movs r2, #12
  13429. 8005648: 615a str r2, [r3, #20]
  13430. huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  13431. 800564a: 4b08 ldr r3, [pc, #32] ; (800566c <MX_USART3_UART_Init+0x4c>)
  13432. 800564c: 2200 movs r2, #0
  13433. 800564e: 619a str r2, [r3, #24]
  13434. huart3.Init.OverSampling = UART_OVERSAMPLING_16;
  13435. 8005650: 4b06 ldr r3, [pc, #24] ; (800566c <MX_USART3_UART_Init+0x4c>)
  13436. 8005652: 2200 movs r2, #0
  13437. 8005654: 61da str r2, [r3, #28]
  13438. if (HAL_UART_Init(&huart3) != HAL_OK)
  13439. 8005656: 4805 ldr r0, [pc, #20] ; (800566c <MX_USART3_UART_Init+0x4c>)
  13440. 8005658: f7fe ff10 bl 800447c <HAL_UART_Init>
  13441. 800565c: 4603 mov r3, r0
  13442. 800565e: 2b00 cmp r3, #0
  13443. 8005660: d001 beq.n 8005666 <MX_USART3_UART_Init+0x46>
  13444. {
  13445. Error_Handler();
  13446. 8005662: f000 f957 bl 8005914 <Error_Handler>
  13447. }
  13448. /* USER CODE BEGIN USART3_Init 2 */
  13449. /* USER CODE END USART3_Init 2 */
  13450. }
  13451. 8005666: bf00 nop
  13452. 8005668: bd80 pop {r7, pc}
  13453. 800566a: bf00 nop
  13454. 800566c: 20000954 .word 0x20000954
  13455. 8005670: 40004800 .word 0x40004800
  13456. 08005674 <MX_DMA_Init>:
  13457. /**
  13458. * Enable DMA controller clock
  13459. */
  13460. static void MX_DMA_Init(void)
  13461. {
  13462. 8005674: b480 push {r7}
  13463. 8005676: b083 sub sp, #12
  13464. 8005678: af00 add r7, sp, #0
  13465. /* DMA controller clock enable */
  13466. __HAL_RCC_DMA1_CLK_ENABLE();
  13467. 800567a: 4b08 ldr r3, [pc, #32] ; (800569c <MX_DMA_Init+0x28>)
  13468. 800567c: 695b ldr r3, [r3, #20]
  13469. 800567e: 4a07 ldr r2, [pc, #28] ; (800569c <MX_DMA_Init+0x28>)
  13470. 8005680: f043 0301 orr.w r3, r3, #1
  13471. 8005684: 6153 str r3, [r2, #20]
  13472. 8005686: 4b05 ldr r3, [pc, #20] ; (800569c <MX_DMA_Init+0x28>)
  13473. 8005688: 695b ldr r3, [r3, #20]
  13474. 800568a: f003 0301 and.w r3, r3, #1
  13475. 800568e: 607b str r3, [r7, #4]
  13476. 8005690: 687b ldr r3, [r7, #4]
  13477. }
  13478. 8005692: bf00 nop
  13479. 8005694: 370c adds r7, #12
  13480. 8005696: 46bd mov sp, r7
  13481. 8005698: bc80 pop {r7}
  13482. 800569a: 4770 bx lr
  13483. 800569c: 40021000 .word 0x40021000
  13484. 080056a0 <MX_GPIO_Init>:
  13485. * @brief GPIO Initialization Function
  13486. * @param None
  13487. * @retval None
  13488. */
  13489. static void MX_GPIO_Init(void)
  13490. {
  13491. 80056a0: b580 push {r7, lr}
  13492. 80056a2: b088 sub sp, #32
  13493. 80056a4: af00 add r7, sp, #0
  13494. GPIO_InitTypeDef GPIO_InitStruct = {0};
  13495. 80056a6: f107 0310 add.w r3, r7, #16
  13496. 80056aa: 2200 movs r2, #0
  13497. 80056ac: 601a str r2, [r3, #0]
  13498. 80056ae: 605a str r2, [r3, #4]
  13499. 80056b0: 609a str r2, [r3, #8]
  13500. 80056b2: 60da str r2, [r3, #12]
  13501. /* GPIO Ports Clock Enable */
  13502. __HAL_RCC_GPIOC_CLK_ENABLE();
  13503. 80056b4: 4b40 ldr r3, [pc, #256] ; (80057b8 <MX_GPIO_Init+0x118>)
  13504. 80056b6: 699b ldr r3, [r3, #24]
  13505. 80056b8: 4a3f ldr r2, [pc, #252] ; (80057b8 <MX_GPIO_Init+0x118>)
  13506. 80056ba: f043 0310 orr.w r3, r3, #16
  13507. 80056be: 6193 str r3, [r2, #24]
  13508. 80056c0: 4b3d ldr r3, [pc, #244] ; (80057b8 <MX_GPIO_Init+0x118>)
  13509. 80056c2: 699b ldr r3, [r3, #24]
  13510. 80056c4: f003 0310 and.w r3, r3, #16
  13511. 80056c8: 60fb str r3, [r7, #12]
  13512. 80056ca: 68fb ldr r3, [r7, #12]
  13513. __HAL_RCC_GPIOA_CLK_ENABLE();
  13514. 80056cc: 4b3a ldr r3, [pc, #232] ; (80057b8 <MX_GPIO_Init+0x118>)
  13515. 80056ce: 699b ldr r3, [r3, #24]
  13516. 80056d0: 4a39 ldr r2, [pc, #228] ; (80057b8 <MX_GPIO_Init+0x118>)
  13517. 80056d2: f043 0304 orr.w r3, r3, #4
  13518. 80056d6: 6193 str r3, [r2, #24]
  13519. 80056d8: 4b37 ldr r3, [pc, #220] ; (80057b8 <MX_GPIO_Init+0x118>)
  13520. 80056da: 699b ldr r3, [r3, #24]
  13521. 80056dc: f003 0304 and.w r3, r3, #4
  13522. 80056e0: 60bb str r3, [r7, #8]
  13523. 80056e2: 68bb ldr r3, [r7, #8]
  13524. __HAL_RCC_GPIOB_CLK_ENABLE();
  13525. 80056e4: 4b34 ldr r3, [pc, #208] ; (80057b8 <MX_GPIO_Init+0x118>)
  13526. 80056e6: 699b ldr r3, [r3, #24]
  13527. 80056e8: 4a33 ldr r2, [pc, #204] ; (80057b8 <MX_GPIO_Init+0x118>)
  13528. 80056ea: f043 0308 orr.w r3, r3, #8
  13529. 80056ee: 6193 str r3, [r2, #24]
  13530. 80056f0: 4b31 ldr r3, [pc, #196] ; (80057b8 <MX_GPIO_Init+0x118>)
  13531. 80056f2: 699b ldr r3, [r3, #24]
  13532. 80056f4: f003 0308 and.w r3, r3, #8
  13533. 80056f8: 607b str r3, [r7, #4]
  13534. 80056fa: 687b ldr r3, [r7, #4]
  13535. /*Configure GPIO pin Output Level */
  13536. HAL_GPIO_WritePin(BOOT_LED_GPIO_Port, BOOT_LED_Pin, GPIO_PIN_RESET);
  13537. 80056fc: 2200 movs r2, #0
  13538. 80056fe: f44f 4100 mov.w r1, #32768 ; 0x8000
  13539. 8005702: 482e ldr r0, [pc, #184] ; (80057bc <MX_GPIO_Init+0x11c>)
  13540. 8005704: f7fd ff23 bl 800354e <HAL_GPIO_WritePin>
  13541. /*Configure GPIO pin Output Level */
  13542. HAL_GPIO_WritePin(GPIOA, PAU_RESERVED0_Pin|PAU_RESERVED1_Pin|AMP_EN_Pin, GPIO_PIN_RESET);
  13543. 8005708: 2200 movs r2, #0
  13544. 800570a: f44f 71e0 mov.w r1, #448 ; 0x1c0
  13545. 800570e: 482c ldr r0, [pc, #176] ; (80057c0 <MX_GPIO_Init+0x120>)
  13546. 8005710: f7fd ff1d bl 800354e <HAL_GPIO_WritePin>
  13547. /*Configure GPIO pin Output Level */
  13548. HAL_GPIO_WritePin(GPIOB, PAU_RESERVED3_Pin|PAU_RESERVED2_Pin|PAU_RESET_Pin, GPIO_PIN_RESET);
  13549. 8005714: 2200 movs r2, #0
  13550. 8005716: f244 0103 movw r1, #16387 ; 0x4003
  13551. 800571a: 482a ldr r0, [pc, #168] ; (80057c4 <MX_GPIO_Init+0x124>)
  13552. 800571c: f7fd ff17 bl 800354e <HAL_GPIO_WritePin>
  13553. /*Configure GPIO pin : BOOT_LED_Pin */
  13554. GPIO_InitStruct.Pin = BOOT_LED_Pin;
  13555. 8005720: f44f 4300 mov.w r3, #32768 ; 0x8000
  13556. 8005724: 613b str r3, [r7, #16]
  13557. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  13558. 8005726: 2301 movs r3, #1
  13559. 8005728: 617b str r3, [r7, #20]
  13560. GPIO_InitStruct.Pull = GPIO_NOPULL;
  13561. 800572a: 2300 movs r3, #0
  13562. 800572c: 61bb str r3, [r7, #24]
  13563. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  13564. 800572e: 2302 movs r3, #2
  13565. 8005730: 61fb str r3, [r7, #28]
  13566. HAL_GPIO_Init(BOOT_LED_GPIO_Port, &GPIO_InitStruct);
  13567. 8005732: f107 0310 add.w r3, r7, #16
  13568. 8005736: 4619 mov r1, r3
  13569. 8005738: 4820 ldr r0, [pc, #128] ; (80057bc <MX_GPIO_Init+0x11c>)
  13570. 800573a: f7fd fd97 bl 800326c <HAL_GPIO_Init>
  13571. /*Configure GPIO pins : DC_FAIL_ALARM_Pin OVER_INPUT_ALARM_Pin OVER_TEMP_ALARM_Pin */
  13572. GPIO_InitStruct.Pin = DC_FAIL_ALARM_Pin|OVER_INPUT_ALARM_Pin|OVER_TEMP_ALARM_Pin;
  13573. 800573e: f641 0304 movw r3, #6148 ; 0x1804
  13574. 8005742: 613b str r3, [r7, #16]
  13575. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  13576. 8005744: 2300 movs r3, #0
  13577. 8005746: 617b str r3, [r7, #20]
  13578. GPIO_InitStruct.Pull = GPIO_NOPULL;
  13579. 8005748: 2300 movs r3, #0
  13580. 800574a: 61bb str r3, [r7, #24]
  13581. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  13582. 800574c: f107 0310 add.w r3, r7, #16
  13583. 8005750: 4619 mov r1, r3
  13584. 8005752: 481b ldr r0, [pc, #108] ; (80057c0 <MX_GPIO_Init+0x120>)
  13585. 8005754: f7fd fd8a bl 800326c <HAL_GPIO_Init>
  13586. /*Configure GPIO pins : PAU_RESERVED0_Pin PAU_RESERVED1_Pin AMP_EN_Pin */
  13587. GPIO_InitStruct.Pin = PAU_RESERVED0_Pin|PAU_RESERVED1_Pin|AMP_EN_Pin;
  13588. 8005758: f44f 73e0 mov.w r3, #448 ; 0x1c0
  13589. 800575c: 613b str r3, [r7, #16]
  13590. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  13591. 800575e: 2301 movs r3, #1
  13592. 8005760: 617b str r3, [r7, #20]
  13593. GPIO_InitStruct.Pull = GPIO_NOPULL;
  13594. 8005762: 2300 movs r3, #0
  13595. 8005764: 61bb str r3, [r7, #24]
  13596. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  13597. 8005766: 2302 movs r3, #2
  13598. 8005768: 61fb str r3, [r7, #28]
  13599. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  13600. 800576a: f107 0310 add.w r3, r7, #16
  13601. 800576e: 4619 mov r1, r3
  13602. 8005770: 4813 ldr r0, [pc, #76] ; (80057c0 <MX_GPIO_Init+0x120>)
  13603. 8005772: f7fd fd7b bl 800326c <HAL_GPIO_Init>
  13604. /*Configure GPIO pins : PAU_RESERVED3_Pin PAU_RESERVED2_Pin PAU_RESET_Pin */
  13605. GPIO_InitStruct.Pin = PAU_RESERVED3_Pin|PAU_RESERVED2_Pin|PAU_RESET_Pin;
  13606. 8005776: f244 0303 movw r3, #16387 ; 0x4003
  13607. 800577a: 613b str r3, [r7, #16]
  13608. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  13609. 800577c: 2301 movs r3, #1
  13610. 800577e: 617b str r3, [r7, #20]
  13611. GPIO_InitStruct.Pull = GPIO_NOPULL;
  13612. 8005780: 2300 movs r3, #0
  13613. 8005782: 61bb str r3, [r7, #24]
  13614. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  13615. 8005784: 2302 movs r3, #2
  13616. 8005786: 61fb str r3, [r7, #28]
  13617. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  13618. 8005788: f107 0310 add.w r3, r7, #16
  13619. 800578c: 4619 mov r1, r3
  13620. 800578e: 480d ldr r0, [pc, #52] ; (80057c4 <MX_GPIO_Init+0x124>)
  13621. 8005790: f7fd fd6c bl 800326c <HAL_GPIO_Init>
  13622. /*Configure GPIO pins : OVER_POWER_ALARM_Pin VSWR_ALARM_Pin PAU_EN_Pin ALC_ALARM_Pin */
  13623. GPIO_InitStruct.Pin = OVER_POWER_ALARM_Pin|VSWR_ALARM_Pin|PAU_EN_Pin|ALC_ALARM_Pin;
  13624. 8005794: f24b 0308 movw r3, #45064 ; 0xb008
  13625. 8005798: 613b str r3, [r7, #16]
  13626. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  13627. 800579a: 2300 movs r3, #0
  13628. 800579c: 617b str r3, [r7, #20]
  13629. GPIO_InitStruct.Pull = GPIO_NOPULL;
  13630. 800579e: 2300 movs r3, #0
  13631. 80057a0: 61bb str r3, [r7, #24]
  13632. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  13633. 80057a2: f107 0310 add.w r3, r7, #16
  13634. 80057a6: 4619 mov r1, r3
  13635. 80057a8: 4806 ldr r0, [pc, #24] ; (80057c4 <MX_GPIO_Init+0x124>)
  13636. 80057aa: f7fd fd5f bl 800326c <HAL_GPIO_Init>
  13637. }
  13638. 80057ae: bf00 nop
  13639. 80057b0: 3720 adds r7, #32
  13640. 80057b2: 46bd mov sp, r7
  13641. 80057b4: bd80 pop {r7, pc}
  13642. 80057b6: bf00 nop
  13643. 80057b8: 40021000 .word 0x40021000
  13644. 80057bc: 40011000 .word 0x40011000
  13645. 80057c0: 40010800 .word 0x40010800
  13646. 80057c4: 40010c00 .word 0x40010c00
  13647. 080057c8 <HAL_TIM_PeriodElapsedCallback>:
  13648. * a global variable "uwTick" used as application time base.
  13649. * @param htim : TIM handle
  13650. * @retval None
  13651. */
  13652. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  13653. {
  13654. 80057c8: b580 push {r7, lr}
  13655. 80057ca: b082 sub sp, #8
  13656. 80057cc: af00 add r7, sp, #0
  13657. 80057ce: 6078 str r0, [r7, #4]
  13658. /* USER CODE BEGIN Callback 0 */
  13659. /* USER CODE END Callback 0 */
  13660. if (htim->Instance == TIM2) {
  13661. 80057d0: 687b ldr r3, [r7, #4]
  13662. 80057d2: 681b ldr r3, [r3, #0]
  13663. 80057d4: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000
  13664. 80057d8: d101 bne.n 80057de <HAL_TIM_PeriodElapsedCallback+0x16>
  13665. HAL_IncTick();
  13666. 80057da: f7fc fae5 bl 8001da8 <HAL_IncTick>
  13667. }
  13668. /* USER CODE BEGIN Callback 1 */
  13669. if(htim->Instance == TIM6){
  13670. 80057de: 687b ldr r3, [r7, #4]
  13671. 80057e0: 681b ldr r3, [r3, #0]
  13672. 80057e2: 4a3f ldr r2, [pc, #252] ; (80058e0 <HAL_TIM_PeriodElapsedCallback+0x118>)
  13673. 80057e4: 4293 cmp r3, r2
  13674. 80057e6: d177 bne.n 80058d8 <HAL_TIM_PeriodElapsedCallback+0x110>
  13675. UartRxTimerCnt++;
  13676. 80057e8: 4b3e ldr r3, [pc, #248] ; (80058e4 <HAL_TIM_PeriodElapsedCallback+0x11c>)
  13677. 80057ea: 681b ldr r3, [r3, #0]
  13678. 80057ec: 3301 adds r3, #1
  13679. 80057ee: 4a3d ldr r2, [pc, #244] ; (80058e4 <HAL_TIM_PeriodElapsedCallback+0x11c>)
  13680. 80057f0: 6013 str r3, [r2, #0]
  13681. LED_TimerCnt++;
  13682. 80057f2: 4b3d ldr r3, [pc, #244] ; (80058e8 <HAL_TIM_PeriodElapsedCallback+0x120>)
  13683. 80057f4: 681b ldr r3, [r3, #0]
  13684. 80057f6: 3301 adds r3, #1
  13685. 80057f8: 4a3b ldr r2, [pc, #236] ; (80058e8 <HAL_TIM_PeriodElapsedCallback+0x120>)
  13686. 80057fa: 6013 str r3, [r2, #0]
  13687. TDD_125ms_Cnt++;
  13688. 80057fc: 4b3b ldr r3, [pc, #236] ; (80058ec <HAL_TIM_PeriodElapsedCallback+0x124>)
  13689. 80057fe: 681b ldr r3, [r3, #0]
  13690. 8005800: 3301 adds r3, #1
  13691. 8005802: 4a3a ldr r2, [pc, #232] ; (80058ec <HAL_TIM_PeriodElapsedCallback+0x124>)
  13692. 8005804: 6013 str r3, [r2, #0]
  13693. TestTimer++;
  13694. 8005806: 4b3a ldr r3, [pc, #232] ; (80058f0 <HAL_TIM_PeriodElapsedCallback+0x128>)
  13695. 8005808: 681b ldr r3, [r3, #0]
  13696. 800580a: 3301 adds r3, #1
  13697. 800580c: 4a38 ldr r2, [pc, #224] ; (80058f0 <HAL_TIM_PeriodElapsedCallback+0x128>)
  13698. 800580e: 6013 str r3, [r2, #0]
  13699. if(HAL_GPIO_ReadPin(DC_FAIL_ALARM_GPIO_Port, DC_FAIL_ALARM_Pin) == GPIO_PIN_SET)
  13700. 8005810: 2104 movs r1, #4
  13701. 8005812: 4838 ldr r0, [pc, #224] ; (80058f4 <HAL_TIM_PeriodElapsedCallback+0x12c>)
  13702. 8005814: f7fd fe84 bl 8003520 <HAL_GPIO_ReadPin>
  13703. 8005818: 4603 mov r3, r0
  13704. 800581a: 2b01 cmp r3, #1
  13705. 800581c: d105 bne.n 800582a <HAL_TIM_PeriodElapsedCallback+0x62>
  13706. DC_FAIL_ALARM_CNT++;
  13707. 800581e: 4b36 ldr r3, [pc, #216] ; (80058f8 <HAL_TIM_PeriodElapsedCallback+0x130>)
  13708. 8005820: 681b ldr r3, [r3, #0]
  13709. 8005822: 3301 adds r3, #1
  13710. 8005824: 4a34 ldr r2, [pc, #208] ; (80058f8 <HAL_TIM_PeriodElapsedCallback+0x130>)
  13711. 8005826: 6013 str r3, [r2, #0]
  13712. 8005828: e002 b.n 8005830 <HAL_TIM_PeriodElapsedCallback+0x68>
  13713. else
  13714. DC_FAIL_ALARM_CNT = 0;
  13715. 800582a: 4b33 ldr r3, [pc, #204] ; (80058f8 <HAL_TIM_PeriodElapsedCallback+0x130>)
  13716. 800582c: 2200 movs r2, #0
  13717. 800582e: 601a str r2, [r3, #0]
  13718. if(HAL_GPIO_ReadPin(OVER_INPUT_ALARM_GPIO_Port, OVER_INPUT_ALARM_Pin)== GPIO_PIN_SET)
  13719. 8005830: f44f 6100 mov.w r1, #2048 ; 0x800
  13720. 8005834: 482f ldr r0, [pc, #188] ; (80058f4 <HAL_TIM_PeriodElapsedCallback+0x12c>)
  13721. 8005836: f7fd fe73 bl 8003520 <HAL_GPIO_ReadPin>
  13722. 800583a: 4603 mov r3, r0
  13723. 800583c: 2b01 cmp r3, #1
  13724. 800583e: d105 bne.n 800584c <HAL_TIM_PeriodElapsedCallback+0x84>
  13725. OVER_INPUT_ALARM_CNT++;
  13726. 8005840: 4b2e ldr r3, [pc, #184] ; (80058fc <HAL_TIM_PeriodElapsedCallback+0x134>)
  13727. 8005842: 681b ldr r3, [r3, #0]
  13728. 8005844: 3301 adds r3, #1
  13729. 8005846: 4a2d ldr r2, [pc, #180] ; (80058fc <HAL_TIM_PeriodElapsedCallback+0x134>)
  13730. 8005848: 6013 str r3, [r2, #0]
  13731. 800584a: e002 b.n 8005852 <HAL_TIM_PeriodElapsedCallback+0x8a>
  13732. else
  13733. OVER_INPUT_ALARM_CNT = 0;
  13734. 800584c: 4b2b ldr r3, [pc, #172] ; (80058fc <HAL_TIM_PeriodElapsedCallback+0x134>)
  13735. 800584e: 2200 movs r2, #0
  13736. 8005850: 601a str r2, [r3, #0]
  13737. if(HAL_GPIO_ReadPin(OVER_TEMP_ALARM_GPIO_Port, OVER_TEMP_ALARM_Pin)== GPIO_PIN_SET)
  13738. 8005852: f44f 5180 mov.w r1, #4096 ; 0x1000
  13739. 8005856: 4827 ldr r0, [pc, #156] ; (80058f4 <HAL_TIM_PeriodElapsedCallback+0x12c>)
  13740. 8005858: f7fd fe62 bl 8003520 <HAL_GPIO_ReadPin>
  13741. 800585c: 4603 mov r3, r0
  13742. 800585e: 2b01 cmp r3, #1
  13743. 8005860: d105 bne.n 800586e <HAL_TIM_PeriodElapsedCallback+0xa6>
  13744. OVER_TEMP_ALARM_CNT++;
  13745. 8005862: 4b27 ldr r3, [pc, #156] ; (8005900 <HAL_TIM_PeriodElapsedCallback+0x138>)
  13746. 8005864: 681b ldr r3, [r3, #0]
  13747. 8005866: 3301 adds r3, #1
  13748. 8005868: 4a25 ldr r2, [pc, #148] ; (8005900 <HAL_TIM_PeriodElapsedCallback+0x138>)
  13749. 800586a: 6013 str r3, [r2, #0]
  13750. 800586c: e002 b.n 8005874 <HAL_TIM_PeriodElapsedCallback+0xac>
  13751. else
  13752. OVER_TEMP_ALARM_CNT = 0;
  13753. 800586e: 4b24 ldr r3, [pc, #144] ; (8005900 <HAL_TIM_PeriodElapsedCallback+0x138>)
  13754. 8005870: 2200 movs r2, #0
  13755. 8005872: 601a str r2, [r3, #0]
  13756. if(HAL_GPIO_ReadPin(ALC_ALARM_GPIO_Port, ALC_ALARM_Pin)== GPIO_PIN_SET)
  13757. 8005874: 2108 movs r1, #8
  13758. 8005876: 4823 ldr r0, [pc, #140] ; (8005904 <HAL_TIM_PeriodElapsedCallback+0x13c>)
  13759. 8005878: f7fd fe52 bl 8003520 <HAL_GPIO_ReadPin>
  13760. 800587c: 4603 mov r3, r0
  13761. 800587e: 2b01 cmp r3, #1
  13762. 8005880: d105 bne.n 800588e <HAL_TIM_PeriodElapsedCallback+0xc6>
  13763. ALC_ALARM_CNT++;
  13764. 8005882: 4b21 ldr r3, [pc, #132] ; (8005908 <HAL_TIM_PeriodElapsedCallback+0x140>)
  13765. 8005884: 681b ldr r3, [r3, #0]
  13766. 8005886: 3301 adds r3, #1
  13767. 8005888: 4a1f ldr r2, [pc, #124] ; (8005908 <HAL_TIM_PeriodElapsedCallback+0x140>)
  13768. 800588a: 6013 str r3, [r2, #0]
  13769. 800588c: e002 b.n 8005894 <HAL_TIM_PeriodElapsedCallback+0xcc>
  13770. else
  13771. ALC_ALARM_CNT = 0;
  13772. 800588e: 4b1e ldr r3, [pc, #120] ; (8005908 <HAL_TIM_PeriodElapsedCallback+0x140>)
  13773. 8005890: 2200 movs r2, #0
  13774. 8005892: 601a str r2, [r3, #0]
  13775. if(HAL_GPIO_ReadPin(OVER_POWER_ALARM_GPIO_Port, OVER_POWER_ALARM_Pin)== GPIO_PIN_SET)
  13776. 8005894: f44f 5180 mov.w r1, #4096 ; 0x1000
  13777. 8005898: 481a ldr r0, [pc, #104] ; (8005904 <HAL_TIM_PeriodElapsedCallback+0x13c>)
  13778. 800589a: f7fd fe41 bl 8003520 <HAL_GPIO_ReadPin>
  13779. 800589e: 4603 mov r3, r0
  13780. 80058a0: 2b01 cmp r3, #1
  13781. 80058a2: d105 bne.n 80058b0 <HAL_TIM_PeriodElapsedCallback+0xe8>
  13782. OVER_POWER_ALARM_CNT++;
  13783. 80058a4: 4b19 ldr r3, [pc, #100] ; (800590c <HAL_TIM_PeriodElapsedCallback+0x144>)
  13784. 80058a6: 681b ldr r3, [r3, #0]
  13785. 80058a8: 3301 adds r3, #1
  13786. 80058aa: 4a18 ldr r2, [pc, #96] ; (800590c <HAL_TIM_PeriodElapsedCallback+0x144>)
  13787. 80058ac: 6013 str r3, [r2, #0]
  13788. 80058ae: e002 b.n 80058b6 <HAL_TIM_PeriodElapsedCallback+0xee>
  13789. else
  13790. OVER_POWER_ALARM_CNT = 0;
  13791. 80058b0: 4b16 ldr r3, [pc, #88] ; (800590c <HAL_TIM_PeriodElapsedCallback+0x144>)
  13792. 80058b2: 2200 movs r2, #0
  13793. 80058b4: 601a str r2, [r3, #0]
  13794. if(HAL_GPIO_ReadPin(VSWR_ALARM_GPIO_Port, VSWR_ALARM_Pin)== GPIO_PIN_SET)
  13795. 80058b6: f44f 5100 mov.w r1, #8192 ; 0x2000
  13796. 80058ba: 4812 ldr r0, [pc, #72] ; (8005904 <HAL_TIM_PeriodElapsedCallback+0x13c>)
  13797. 80058bc: f7fd fe30 bl 8003520 <HAL_GPIO_ReadPin>
  13798. 80058c0: 4603 mov r3, r0
  13799. 80058c2: 2b01 cmp r3, #1
  13800. 80058c4: d105 bne.n 80058d2 <HAL_TIM_PeriodElapsedCallback+0x10a>
  13801. VSWR_ALARM_CNT++;
  13802. 80058c6: 4b12 ldr r3, [pc, #72] ; (8005910 <HAL_TIM_PeriodElapsedCallback+0x148>)
  13803. 80058c8: 681b ldr r3, [r3, #0]
  13804. 80058ca: 3301 adds r3, #1
  13805. 80058cc: 4a10 ldr r2, [pc, #64] ; (8005910 <HAL_TIM_PeriodElapsedCallback+0x148>)
  13806. 80058ce: 6013 str r3, [r2, #0]
  13807. else
  13808. VSWR_ALARM_CNT = 0;
  13809. }
  13810. /* USER CODE END Callback 1 */
  13811. }
  13812. 80058d0: e002 b.n 80058d8 <HAL_TIM_PeriodElapsedCallback+0x110>
  13813. VSWR_ALARM_CNT = 0;
  13814. 80058d2: 4b0f ldr r3, [pc, #60] ; (8005910 <HAL_TIM_PeriodElapsedCallback+0x148>)
  13815. 80058d4: 2200 movs r2, #0
  13816. 80058d6: 601a str r2, [r3, #0]
  13817. }
  13818. 80058d8: bf00 nop
  13819. 80058da: 3708 adds r7, #8
  13820. 80058dc: 46bd mov sp, r7
  13821. 80058de: bd80 pop {r7, pc}
  13822. 80058e0: 40001000 .word 0x40001000
  13823. 80058e4: 20000618 .word 0x20000618
  13824. 80058e8: 20000610 .word 0x20000610
  13825. 80058ec: 20000634 .word 0x20000634
  13826. 80058f0: 20000638 .word 0x20000638
  13827. 80058f4: 40010800 .word 0x40010800
  13828. 80058f8: 2000061c .word 0x2000061c
  13829. 80058fc: 20000620 .word 0x20000620
  13830. 8005900: 20000624 .word 0x20000624
  13831. 8005904: 40010c00 .word 0x40010c00
  13832. 8005908: 20000628 .word 0x20000628
  13833. 800590c: 2000062c .word 0x2000062c
  13834. 8005910: 20000630 .word 0x20000630
  13835. 08005914 <Error_Handler>:
  13836. /**
  13837. * @brief This function is executed in case of error occurrence.
  13838. * @retval None
  13839. */
  13840. void Error_Handler(void)
  13841. {
  13842. 8005914: b480 push {r7}
  13843. 8005916: af00 add r7, sp, #0
  13844. /* USER CODE BEGIN Error_Handler_Debug */
  13845. /* User can add his own implementation to report the HAL error return state */
  13846. /* USER CODE END Error_Handler_Debug */
  13847. }
  13848. 8005918: bf00 nop
  13849. 800591a: 46bd mov sp, r7
  13850. 800591c: bc80 pop {r7}
  13851. 800591e: 4770 bx lr
  13852. 08005920 <HAL_MspInit>:
  13853. /* USER CODE END 0 */
  13854. /**
  13855. * Initializes the Global MSP.
  13856. */
  13857. void HAL_MspInit(void)
  13858. {
  13859. 8005920: b480 push {r7}
  13860. 8005922: b085 sub sp, #20
  13861. 8005924: af00 add r7, sp, #0
  13862. /* USER CODE BEGIN MspInit 0 */
  13863. /* USER CODE END MspInit 0 */
  13864. __HAL_RCC_AFIO_CLK_ENABLE();
  13865. 8005926: 4b15 ldr r3, [pc, #84] ; (800597c <HAL_MspInit+0x5c>)
  13866. 8005928: 699b ldr r3, [r3, #24]
  13867. 800592a: 4a14 ldr r2, [pc, #80] ; (800597c <HAL_MspInit+0x5c>)
  13868. 800592c: f043 0301 orr.w r3, r3, #1
  13869. 8005930: 6193 str r3, [r2, #24]
  13870. 8005932: 4b12 ldr r3, [pc, #72] ; (800597c <HAL_MspInit+0x5c>)
  13871. 8005934: 699b ldr r3, [r3, #24]
  13872. 8005936: f003 0301 and.w r3, r3, #1
  13873. 800593a: 60bb str r3, [r7, #8]
  13874. 800593c: 68bb ldr r3, [r7, #8]
  13875. __HAL_RCC_PWR_CLK_ENABLE();
  13876. 800593e: 4b0f ldr r3, [pc, #60] ; (800597c <HAL_MspInit+0x5c>)
  13877. 8005940: 69db ldr r3, [r3, #28]
  13878. 8005942: 4a0e ldr r2, [pc, #56] ; (800597c <HAL_MspInit+0x5c>)
  13879. 8005944: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
  13880. 8005948: 61d3 str r3, [r2, #28]
  13881. 800594a: 4b0c ldr r3, [pc, #48] ; (800597c <HAL_MspInit+0x5c>)
  13882. 800594c: 69db ldr r3, [r3, #28]
  13883. 800594e: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  13884. 8005952: 607b str r3, [r7, #4]
  13885. 8005954: 687b ldr r3, [r7, #4]
  13886. /* System interrupt init*/
  13887. /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled
  13888. */
  13889. __HAL_AFIO_REMAP_SWJ_NOJTAG();
  13890. 8005956: 4b0a ldr r3, [pc, #40] ; (8005980 <HAL_MspInit+0x60>)
  13891. 8005958: 685b ldr r3, [r3, #4]
  13892. 800595a: 60fb str r3, [r7, #12]
  13893. 800595c: 68fb ldr r3, [r7, #12]
  13894. 800595e: f023 63e0 bic.w r3, r3, #117440512 ; 0x7000000
  13895. 8005962: 60fb str r3, [r7, #12]
  13896. 8005964: 68fb ldr r3, [r7, #12]
  13897. 8005966: f043 7300 orr.w r3, r3, #33554432 ; 0x2000000
  13898. 800596a: 60fb str r3, [r7, #12]
  13899. 800596c: 4a04 ldr r2, [pc, #16] ; (8005980 <HAL_MspInit+0x60>)
  13900. 800596e: 68fb ldr r3, [r7, #12]
  13901. 8005970: 6053 str r3, [r2, #4]
  13902. /* USER CODE BEGIN MspInit 1 */
  13903. /* USER CODE END MspInit 1 */
  13904. }
  13905. 8005972: bf00 nop
  13906. 8005974: 3714 adds r7, #20
  13907. 8005976: 46bd mov sp, r7
  13908. 8005978: bc80 pop {r7}
  13909. 800597a: 4770 bx lr
  13910. 800597c: 40021000 .word 0x40021000
  13911. 8005980: 40010000 .word 0x40010000
  13912. 08005984 <HAL_ADC_MspInit>:
  13913. * This function configures the hardware resources used in this example
  13914. * @param hadc: ADC handle pointer
  13915. * @retval None
  13916. */
  13917. void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
  13918. {
  13919. 8005984: b580 push {r7, lr}
  13920. 8005986: b088 sub sp, #32
  13921. 8005988: af00 add r7, sp, #0
  13922. 800598a: 6078 str r0, [r7, #4]
  13923. GPIO_InitTypeDef GPIO_InitStruct = {0};
  13924. 800598c: f107 0310 add.w r3, r7, #16
  13925. 8005990: 2200 movs r2, #0
  13926. 8005992: 601a str r2, [r3, #0]
  13927. 8005994: 605a str r2, [r3, #4]
  13928. 8005996: 609a str r2, [r3, #8]
  13929. 8005998: 60da str r2, [r3, #12]
  13930. if(hadc->Instance==ADC1)
  13931. 800599a: 687b ldr r3, [r7, #4]
  13932. 800599c: 681b ldr r3, [r3, #0]
  13933. 800599e: 4a28 ldr r2, [pc, #160] ; (8005a40 <HAL_ADC_MspInit+0xbc>)
  13934. 80059a0: 4293 cmp r3, r2
  13935. 80059a2: d149 bne.n 8005a38 <HAL_ADC_MspInit+0xb4>
  13936. {
  13937. /* USER CODE BEGIN ADC1_MspInit 0 */
  13938. /* USER CODE END ADC1_MspInit 0 */
  13939. /* Peripheral clock enable */
  13940. __HAL_RCC_ADC1_CLK_ENABLE();
  13941. 80059a4: 4b27 ldr r3, [pc, #156] ; (8005a44 <HAL_ADC_MspInit+0xc0>)
  13942. 80059a6: 699b ldr r3, [r3, #24]
  13943. 80059a8: 4a26 ldr r2, [pc, #152] ; (8005a44 <HAL_ADC_MspInit+0xc0>)
  13944. 80059aa: f443 7300 orr.w r3, r3, #512 ; 0x200
  13945. 80059ae: 6193 str r3, [r2, #24]
  13946. 80059b0: 4b24 ldr r3, [pc, #144] ; (8005a44 <HAL_ADC_MspInit+0xc0>)
  13947. 80059b2: 699b ldr r3, [r3, #24]
  13948. 80059b4: f403 7300 and.w r3, r3, #512 ; 0x200
  13949. 80059b8: 60fb str r3, [r7, #12]
  13950. 80059ba: 68fb ldr r3, [r7, #12]
  13951. __HAL_RCC_GPIOA_CLK_ENABLE();
  13952. 80059bc: 4b21 ldr r3, [pc, #132] ; (8005a44 <HAL_ADC_MspInit+0xc0>)
  13953. 80059be: 699b ldr r3, [r3, #24]
  13954. 80059c0: 4a20 ldr r2, [pc, #128] ; (8005a44 <HAL_ADC_MspInit+0xc0>)
  13955. 80059c2: f043 0304 orr.w r3, r3, #4
  13956. 80059c6: 6193 str r3, [r2, #24]
  13957. 80059c8: 4b1e ldr r3, [pc, #120] ; (8005a44 <HAL_ADC_MspInit+0xc0>)
  13958. 80059ca: 699b ldr r3, [r3, #24]
  13959. 80059cc: f003 0304 and.w r3, r3, #4
  13960. 80059d0: 60bb str r3, [r7, #8]
  13961. 80059d2: 68bb ldr r3, [r7, #8]
  13962. /**ADC1 GPIO Configuration
  13963. PA0-WKUP ------> ADC1_IN0
  13964. PA1 ------> ADC1_IN1
  13965. PA3 ------> ADC1_IN3
  13966. */
  13967. GPIO_InitStruct.Pin = DL_TX_DET_Pin|DL_RX_DET_Pin|PAU_TEMP_Pin;
  13968. 80059d4: 230b movs r3, #11
  13969. 80059d6: 613b str r3, [r7, #16]
  13970. GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  13971. 80059d8: 2303 movs r3, #3
  13972. 80059da: 617b str r3, [r7, #20]
  13973. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  13974. 80059dc: f107 0310 add.w r3, r7, #16
  13975. 80059e0: 4619 mov r1, r3
  13976. 80059e2: 4819 ldr r0, [pc, #100] ; (8005a48 <HAL_ADC_MspInit+0xc4>)
  13977. 80059e4: f7fd fc42 bl 800326c <HAL_GPIO_Init>
  13978. /* ADC1 DMA Init */
  13979. /* ADC1 Init */
  13980. hdma_adc1.Instance = DMA1_Channel1;
  13981. 80059e8: 4b18 ldr r3, [pc, #96] ; (8005a4c <HAL_ADC_MspInit+0xc8>)
  13982. 80059ea: 4a19 ldr r2, [pc, #100] ; (8005a50 <HAL_ADC_MspInit+0xcc>)
  13983. 80059ec: 601a str r2, [r3, #0]
  13984. hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
  13985. 80059ee: 4b17 ldr r3, [pc, #92] ; (8005a4c <HAL_ADC_MspInit+0xc8>)
  13986. 80059f0: 2200 movs r2, #0
  13987. 80059f2: 605a str r2, [r3, #4]
  13988. hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
  13989. 80059f4: 4b15 ldr r3, [pc, #84] ; (8005a4c <HAL_ADC_MspInit+0xc8>)
  13990. 80059f6: 2200 movs r2, #0
  13991. 80059f8: 609a str r2, [r3, #8]
  13992. hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
  13993. 80059fa: 4b14 ldr r3, [pc, #80] ; (8005a4c <HAL_ADC_MspInit+0xc8>)
  13994. 80059fc: 2280 movs r2, #128 ; 0x80
  13995. 80059fe: 60da str r2, [r3, #12]
  13996. hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
  13997. 8005a00: 4b12 ldr r3, [pc, #72] ; (8005a4c <HAL_ADC_MspInit+0xc8>)
  13998. 8005a02: f44f 7280 mov.w r2, #256 ; 0x100
  13999. 8005a06: 611a str r2, [r3, #16]
  14000. hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
  14001. 8005a08: 4b10 ldr r3, [pc, #64] ; (8005a4c <HAL_ADC_MspInit+0xc8>)
  14002. 8005a0a: f44f 6280 mov.w r2, #1024 ; 0x400
  14003. 8005a0e: 615a str r2, [r3, #20]
  14004. hdma_adc1.Init.Mode = DMA_CIRCULAR;
  14005. 8005a10: 4b0e ldr r3, [pc, #56] ; (8005a4c <HAL_ADC_MspInit+0xc8>)
  14006. 8005a12: 2220 movs r2, #32
  14007. 8005a14: 619a str r2, [r3, #24]
  14008. hdma_adc1.Init.Priority = DMA_PRIORITY_LOW;
  14009. 8005a16: 4b0d ldr r3, [pc, #52] ; (8005a4c <HAL_ADC_MspInit+0xc8>)
  14010. 8005a18: 2200 movs r2, #0
  14011. 8005a1a: 61da str r2, [r3, #28]
  14012. if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
  14013. 8005a1c: 480b ldr r0, [pc, #44] ; (8005a4c <HAL_ADC_MspInit+0xc8>)
  14014. 8005a1e: f7fc ffc1 bl 80029a4 <HAL_DMA_Init>
  14015. 8005a22: 4603 mov r3, r0
  14016. 8005a24: 2b00 cmp r3, #0
  14017. 8005a26: d001 beq.n 8005a2c <HAL_ADC_MspInit+0xa8>
  14018. {
  14019. Error_Handler();
  14020. 8005a28: f7ff ff74 bl 8005914 <Error_Handler>
  14021. }
  14022. __HAL_LINKDMA(hadc,DMA_Handle,hdma_adc1);
  14023. 8005a2c: 687b ldr r3, [r7, #4]
  14024. 8005a2e: 4a07 ldr r2, [pc, #28] ; (8005a4c <HAL_ADC_MspInit+0xc8>)
  14025. 8005a30: 621a str r2, [r3, #32]
  14026. 8005a32: 4a06 ldr r2, [pc, #24] ; (8005a4c <HAL_ADC_MspInit+0xc8>)
  14027. 8005a34: 687b ldr r3, [r7, #4]
  14028. 8005a36: 6253 str r3, [r2, #36] ; 0x24
  14029. /* USER CODE BEGIN ADC1_MspInit 1 */
  14030. /* USER CODE END ADC1_MspInit 1 */
  14031. }
  14032. }
  14033. 8005a38: bf00 nop
  14034. 8005a3a: 3720 adds r7, #32
  14035. 8005a3c: 46bd mov sp, r7
  14036. 8005a3e: bd80 pop {r7, pc}
  14037. 8005a40: 40012400 .word 0x40012400
  14038. 8005a44: 40021000 .word 0x40021000
  14039. 8005a48: 40010800 .word 0x40010800
  14040. 8005a4c: 20000ad0 .word 0x20000ad0
  14041. 8005a50: 40020008 .word 0x40020008
  14042. 08005a54 <HAL_TIM_Base_MspInit>:
  14043. * This function configures the hardware resources used in this example
  14044. * @param htim_base: TIM_Base handle pointer
  14045. * @retval None
  14046. */
  14047. void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
  14048. {
  14049. 8005a54: b480 push {r7}
  14050. 8005a56: b085 sub sp, #20
  14051. 8005a58: af00 add r7, sp, #0
  14052. 8005a5a: 6078 str r0, [r7, #4]
  14053. if(htim_base->Instance==TIM6)
  14054. 8005a5c: 687b ldr r3, [r7, #4]
  14055. 8005a5e: 681b ldr r3, [r3, #0]
  14056. 8005a60: 4a09 ldr r2, [pc, #36] ; (8005a88 <HAL_TIM_Base_MspInit+0x34>)
  14057. 8005a62: 4293 cmp r3, r2
  14058. 8005a64: d10b bne.n 8005a7e <HAL_TIM_Base_MspInit+0x2a>
  14059. {
  14060. /* USER CODE BEGIN TIM6_MspInit 0 */
  14061. /* USER CODE END TIM6_MspInit 0 */
  14062. /* Peripheral clock enable */
  14063. __HAL_RCC_TIM6_CLK_ENABLE();
  14064. 8005a66: 4b09 ldr r3, [pc, #36] ; (8005a8c <HAL_TIM_Base_MspInit+0x38>)
  14065. 8005a68: 69db ldr r3, [r3, #28]
  14066. 8005a6a: 4a08 ldr r2, [pc, #32] ; (8005a8c <HAL_TIM_Base_MspInit+0x38>)
  14067. 8005a6c: f043 0310 orr.w r3, r3, #16
  14068. 8005a70: 61d3 str r3, [r2, #28]
  14069. 8005a72: 4b06 ldr r3, [pc, #24] ; (8005a8c <HAL_TIM_Base_MspInit+0x38>)
  14070. 8005a74: 69db ldr r3, [r3, #28]
  14071. 8005a76: f003 0310 and.w r3, r3, #16
  14072. 8005a7a: 60fb str r3, [r7, #12]
  14073. 8005a7c: 68fb ldr r3, [r7, #12]
  14074. /* USER CODE BEGIN TIM6_MspInit 1 */
  14075. /* USER CODE END TIM6_MspInit 1 */
  14076. }
  14077. }
  14078. 8005a7e: bf00 nop
  14079. 8005a80: 3714 adds r7, #20
  14080. 8005a82: 46bd mov sp, r7
  14081. 8005a84: bc80 pop {r7}
  14082. 8005a86: 4770 bx lr
  14083. 8005a88: 40001000 .word 0x40001000
  14084. 8005a8c: 40021000 .word 0x40021000
  14085. 08005a90 <HAL_UART_MspInit>:
  14086. * This function configures the hardware resources used in this example
  14087. * @param huart: UART handle pointer
  14088. * @retval None
  14089. */
  14090. void HAL_UART_MspInit(UART_HandleTypeDef* huart)
  14091. {
  14092. 8005a90: b580 push {r7, lr}
  14093. 8005a92: b08a sub sp, #40 ; 0x28
  14094. 8005a94: af00 add r7, sp, #0
  14095. 8005a96: 6078 str r0, [r7, #4]
  14096. GPIO_InitTypeDef GPIO_InitStruct = {0};
  14097. 8005a98: f107 0318 add.w r3, r7, #24
  14098. 8005a9c: 2200 movs r2, #0
  14099. 8005a9e: 601a str r2, [r3, #0]
  14100. 8005aa0: 605a str r2, [r3, #4]
  14101. 8005aa2: 609a str r2, [r3, #8]
  14102. 8005aa4: 60da str r2, [r3, #12]
  14103. if(huart->Instance==USART1)
  14104. 8005aa6: 687b ldr r3, [r7, #4]
  14105. 8005aa8: 681b ldr r3, [r3, #0]
  14106. 8005aaa: 4a84 ldr r2, [pc, #528] ; (8005cbc <HAL_UART_MspInit+0x22c>)
  14107. 8005aac: 4293 cmp r3, r2
  14108. 8005aae: d17e bne.n 8005bae <HAL_UART_MspInit+0x11e>
  14109. {
  14110. /* USER CODE BEGIN USART1_MspInit 0 */
  14111. /* USER CODE END USART1_MspInit 0 */
  14112. /* Peripheral clock enable */
  14113. __HAL_RCC_USART1_CLK_ENABLE();
  14114. 8005ab0: 4b83 ldr r3, [pc, #524] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14115. 8005ab2: 699b ldr r3, [r3, #24]
  14116. 8005ab4: 4a82 ldr r2, [pc, #520] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14117. 8005ab6: f443 4380 orr.w r3, r3, #16384 ; 0x4000
  14118. 8005aba: 6193 str r3, [r2, #24]
  14119. 8005abc: 4b80 ldr r3, [pc, #512] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14120. 8005abe: 699b ldr r3, [r3, #24]
  14121. 8005ac0: f403 4380 and.w r3, r3, #16384 ; 0x4000
  14122. 8005ac4: 617b str r3, [r7, #20]
  14123. 8005ac6: 697b ldr r3, [r7, #20]
  14124. __HAL_RCC_GPIOA_CLK_ENABLE();
  14125. 8005ac8: 4b7d ldr r3, [pc, #500] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14126. 8005aca: 699b ldr r3, [r3, #24]
  14127. 8005acc: 4a7c ldr r2, [pc, #496] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14128. 8005ace: f043 0304 orr.w r3, r3, #4
  14129. 8005ad2: 6193 str r3, [r2, #24]
  14130. 8005ad4: 4b7a ldr r3, [pc, #488] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14131. 8005ad6: 699b ldr r3, [r3, #24]
  14132. 8005ad8: f003 0304 and.w r3, r3, #4
  14133. 8005adc: 613b str r3, [r7, #16]
  14134. 8005ade: 693b ldr r3, [r7, #16]
  14135. /**USART1 GPIO Configuration
  14136. PA9 ------> USART1_TX
  14137. PA10 ------> USART1_RX
  14138. */
  14139. GPIO_InitStruct.Pin = GPIO_PIN_9;
  14140. 8005ae0: f44f 7300 mov.w r3, #512 ; 0x200
  14141. 8005ae4: 61bb str r3, [r7, #24]
  14142. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  14143. 8005ae6: 2302 movs r3, #2
  14144. 8005ae8: 61fb str r3, [r7, #28]
  14145. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  14146. 8005aea: 2303 movs r3, #3
  14147. 8005aec: 627b str r3, [r7, #36] ; 0x24
  14148. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  14149. 8005aee: f107 0318 add.w r3, r7, #24
  14150. 8005af2: 4619 mov r1, r3
  14151. 8005af4: 4873 ldr r0, [pc, #460] ; (8005cc4 <HAL_UART_MspInit+0x234>)
  14152. 8005af6: f7fd fbb9 bl 800326c <HAL_GPIO_Init>
  14153. GPIO_InitStruct.Pin = GPIO_PIN_10;
  14154. 8005afa: f44f 6380 mov.w r3, #1024 ; 0x400
  14155. 8005afe: 61bb str r3, [r7, #24]
  14156. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  14157. 8005b00: 2300 movs r3, #0
  14158. 8005b02: 61fb str r3, [r7, #28]
  14159. GPIO_InitStruct.Pull = GPIO_NOPULL;
  14160. 8005b04: 2300 movs r3, #0
  14161. 8005b06: 623b str r3, [r7, #32]
  14162. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  14163. 8005b08: f107 0318 add.w r3, r7, #24
  14164. 8005b0c: 4619 mov r1, r3
  14165. 8005b0e: 486d ldr r0, [pc, #436] ; (8005cc4 <HAL_UART_MspInit+0x234>)
  14166. 8005b10: f7fd fbac bl 800326c <HAL_GPIO_Init>
  14167. /* USART1 DMA Init */
  14168. /* USART1_TX Init */
  14169. hdma_usart1_tx.Instance = DMA1_Channel4;
  14170. 8005b14: 4b6c ldr r3, [pc, #432] ; (8005cc8 <HAL_UART_MspInit+0x238>)
  14171. 8005b16: 4a6d ldr r2, [pc, #436] ; (8005ccc <HAL_UART_MspInit+0x23c>)
  14172. 8005b18: 601a str r2, [r3, #0]
  14173. hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
  14174. 8005b1a: 4b6b ldr r3, [pc, #428] ; (8005cc8 <HAL_UART_MspInit+0x238>)
  14175. 8005b1c: 2210 movs r2, #16
  14176. 8005b1e: 605a str r2, [r3, #4]
  14177. hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
  14178. 8005b20: 4b69 ldr r3, [pc, #420] ; (8005cc8 <HAL_UART_MspInit+0x238>)
  14179. 8005b22: 2200 movs r2, #0
  14180. 8005b24: 609a str r2, [r3, #8]
  14181. hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE;
  14182. 8005b26: 4b68 ldr r3, [pc, #416] ; (8005cc8 <HAL_UART_MspInit+0x238>)
  14183. 8005b28: 2280 movs r2, #128 ; 0x80
  14184. 8005b2a: 60da str r2, [r3, #12]
  14185. hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  14186. 8005b2c: 4b66 ldr r3, [pc, #408] ; (8005cc8 <HAL_UART_MspInit+0x238>)
  14187. 8005b2e: 2200 movs r2, #0
  14188. 8005b30: 611a str r2, [r3, #16]
  14189. hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  14190. 8005b32: 4b65 ldr r3, [pc, #404] ; (8005cc8 <HAL_UART_MspInit+0x238>)
  14191. 8005b34: 2200 movs r2, #0
  14192. 8005b36: 615a str r2, [r3, #20]
  14193. hdma_usart1_tx.Init.Mode = DMA_NORMAL;
  14194. 8005b38: 4b63 ldr r3, [pc, #396] ; (8005cc8 <HAL_UART_MspInit+0x238>)
  14195. 8005b3a: 2200 movs r2, #0
  14196. 8005b3c: 619a str r2, [r3, #24]
  14197. hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW;
  14198. 8005b3e: 4b62 ldr r3, [pc, #392] ; (8005cc8 <HAL_UART_MspInit+0x238>)
  14199. 8005b40: 2200 movs r2, #0
  14200. 8005b42: 61da str r2, [r3, #28]
  14201. if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK)
  14202. 8005b44: 4860 ldr r0, [pc, #384] ; (8005cc8 <HAL_UART_MspInit+0x238>)
  14203. 8005b46: f7fc ff2d bl 80029a4 <HAL_DMA_Init>
  14204. 8005b4a: 4603 mov r3, r0
  14205. 8005b4c: 2b00 cmp r3, #0
  14206. 8005b4e: d001 beq.n 8005b54 <HAL_UART_MspInit+0xc4>
  14207. {
  14208. Error_Handler();
  14209. 8005b50: f7ff fee0 bl 8005914 <Error_Handler>
  14210. }
  14211. __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx);
  14212. 8005b54: 687b ldr r3, [r7, #4]
  14213. 8005b56: 4a5c ldr r2, [pc, #368] ; (8005cc8 <HAL_UART_MspInit+0x238>)
  14214. 8005b58: 631a str r2, [r3, #48] ; 0x30
  14215. 8005b5a: 4a5b ldr r2, [pc, #364] ; (8005cc8 <HAL_UART_MspInit+0x238>)
  14216. 8005b5c: 687b ldr r3, [r7, #4]
  14217. 8005b5e: 6253 str r3, [r2, #36] ; 0x24
  14218. /* USART1_RX Init */
  14219. hdma_usart1_rx.Instance = DMA1_Channel5;
  14220. 8005b60: 4b5b ldr r3, [pc, #364] ; (8005cd0 <HAL_UART_MspInit+0x240>)
  14221. 8005b62: 4a5c ldr r2, [pc, #368] ; (8005cd4 <HAL_UART_MspInit+0x244>)
  14222. 8005b64: 601a str r2, [r3, #0]
  14223. hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
  14224. 8005b66: 4b5a ldr r3, [pc, #360] ; (8005cd0 <HAL_UART_MspInit+0x240>)
  14225. 8005b68: 2200 movs r2, #0
  14226. 8005b6a: 605a str r2, [r3, #4]
  14227. hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
  14228. 8005b6c: 4b58 ldr r3, [pc, #352] ; (8005cd0 <HAL_UART_MspInit+0x240>)
  14229. 8005b6e: 2200 movs r2, #0
  14230. 8005b70: 609a str r2, [r3, #8]
  14231. hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE;
  14232. 8005b72: 4b57 ldr r3, [pc, #348] ; (8005cd0 <HAL_UART_MspInit+0x240>)
  14233. 8005b74: 2280 movs r2, #128 ; 0x80
  14234. 8005b76: 60da str r2, [r3, #12]
  14235. hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  14236. 8005b78: 4b55 ldr r3, [pc, #340] ; (8005cd0 <HAL_UART_MspInit+0x240>)
  14237. 8005b7a: 2200 movs r2, #0
  14238. 8005b7c: 611a str r2, [r3, #16]
  14239. hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  14240. 8005b7e: 4b54 ldr r3, [pc, #336] ; (8005cd0 <HAL_UART_MspInit+0x240>)
  14241. 8005b80: 2200 movs r2, #0
  14242. 8005b82: 615a str r2, [r3, #20]
  14243. hdma_usart1_rx.Init.Mode = DMA_NORMAL;
  14244. 8005b84: 4b52 ldr r3, [pc, #328] ; (8005cd0 <HAL_UART_MspInit+0x240>)
  14245. 8005b86: 2200 movs r2, #0
  14246. 8005b88: 619a str r2, [r3, #24]
  14247. hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW;
  14248. 8005b8a: 4b51 ldr r3, [pc, #324] ; (8005cd0 <HAL_UART_MspInit+0x240>)
  14249. 8005b8c: 2200 movs r2, #0
  14250. 8005b8e: 61da str r2, [r3, #28]
  14251. if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK)
  14252. 8005b90: 484f ldr r0, [pc, #316] ; (8005cd0 <HAL_UART_MspInit+0x240>)
  14253. 8005b92: f7fc ff07 bl 80029a4 <HAL_DMA_Init>
  14254. 8005b96: 4603 mov r3, r0
  14255. 8005b98: 2b00 cmp r3, #0
  14256. 8005b9a: d001 beq.n 8005ba0 <HAL_UART_MspInit+0x110>
  14257. {
  14258. Error_Handler();
  14259. 8005b9c: f7ff feba bl 8005914 <Error_Handler>
  14260. }
  14261. __HAL_LINKDMA(huart,hdmarx,hdma_usart1_rx);
  14262. 8005ba0: 687b ldr r3, [r7, #4]
  14263. 8005ba2: 4a4b ldr r2, [pc, #300] ; (8005cd0 <HAL_UART_MspInit+0x240>)
  14264. 8005ba4: 635a str r2, [r3, #52] ; 0x34
  14265. 8005ba6: 4a4a ldr r2, [pc, #296] ; (8005cd0 <HAL_UART_MspInit+0x240>)
  14266. 8005ba8: 687b ldr r3, [r7, #4]
  14267. 8005baa: 6253 str r3, [r2, #36] ; 0x24
  14268. /* USER CODE BEGIN USART3_MspInit 1 */
  14269. /* USER CODE END USART3_MspInit 1 */
  14270. }
  14271. }
  14272. 8005bac: e082 b.n 8005cb4 <HAL_UART_MspInit+0x224>
  14273. else if(huart->Instance==USART3)
  14274. 8005bae: 687b ldr r3, [r7, #4]
  14275. 8005bb0: 681b ldr r3, [r3, #0]
  14276. 8005bb2: 4a49 ldr r2, [pc, #292] ; (8005cd8 <HAL_UART_MspInit+0x248>)
  14277. 8005bb4: 4293 cmp r3, r2
  14278. 8005bb6: d17d bne.n 8005cb4 <HAL_UART_MspInit+0x224>
  14279. __HAL_RCC_USART3_CLK_ENABLE();
  14280. 8005bb8: 4b41 ldr r3, [pc, #260] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14281. 8005bba: 69db ldr r3, [r3, #28]
  14282. 8005bbc: 4a40 ldr r2, [pc, #256] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14283. 8005bbe: f443 2380 orr.w r3, r3, #262144 ; 0x40000
  14284. 8005bc2: 61d3 str r3, [r2, #28]
  14285. 8005bc4: 4b3e ldr r3, [pc, #248] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14286. 8005bc6: 69db ldr r3, [r3, #28]
  14287. 8005bc8: f403 2380 and.w r3, r3, #262144 ; 0x40000
  14288. 8005bcc: 60fb str r3, [r7, #12]
  14289. 8005bce: 68fb ldr r3, [r7, #12]
  14290. __HAL_RCC_GPIOB_CLK_ENABLE();
  14291. 8005bd0: 4b3b ldr r3, [pc, #236] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14292. 8005bd2: 699b ldr r3, [r3, #24]
  14293. 8005bd4: 4a3a ldr r2, [pc, #232] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14294. 8005bd6: f043 0308 orr.w r3, r3, #8
  14295. 8005bda: 6193 str r3, [r2, #24]
  14296. 8005bdc: 4b38 ldr r3, [pc, #224] ; (8005cc0 <HAL_UART_MspInit+0x230>)
  14297. 8005bde: 699b ldr r3, [r3, #24]
  14298. 8005be0: f003 0308 and.w r3, r3, #8
  14299. 8005be4: 60bb str r3, [r7, #8]
  14300. 8005be6: 68bb ldr r3, [r7, #8]
  14301. GPIO_InitStruct.Pin = GPIO_PIN_10;
  14302. 8005be8: f44f 6380 mov.w r3, #1024 ; 0x400
  14303. 8005bec: 61bb str r3, [r7, #24]
  14304. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  14305. 8005bee: 2302 movs r3, #2
  14306. 8005bf0: 61fb str r3, [r7, #28]
  14307. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  14308. 8005bf2: 2303 movs r3, #3
  14309. 8005bf4: 627b str r3, [r7, #36] ; 0x24
  14310. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  14311. 8005bf6: f107 0318 add.w r3, r7, #24
  14312. 8005bfa: 4619 mov r1, r3
  14313. 8005bfc: 4837 ldr r0, [pc, #220] ; (8005cdc <HAL_UART_MspInit+0x24c>)
  14314. 8005bfe: f7fd fb35 bl 800326c <HAL_GPIO_Init>
  14315. GPIO_InitStruct.Pin = GPIO_PIN_11;
  14316. 8005c02: f44f 6300 mov.w r3, #2048 ; 0x800
  14317. 8005c06: 61bb str r3, [r7, #24]
  14318. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  14319. 8005c08: 2300 movs r3, #0
  14320. 8005c0a: 61fb str r3, [r7, #28]
  14321. GPIO_InitStruct.Pull = GPIO_NOPULL;
  14322. 8005c0c: 2300 movs r3, #0
  14323. 8005c0e: 623b str r3, [r7, #32]
  14324. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  14325. 8005c10: f107 0318 add.w r3, r7, #24
  14326. 8005c14: 4619 mov r1, r3
  14327. 8005c16: 4831 ldr r0, [pc, #196] ; (8005cdc <HAL_UART_MspInit+0x24c>)
  14328. 8005c18: f7fd fb28 bl 800326c <HAL_GPIO_Init>
  14329. hdma_usart3_tx.Instance = DMA1_Channel2;
  14330. 8005c1c: 4b30 ldr r3, [pc, #192] ; (8005ce0 <HAL_UART_MspInit+0x250>)
  14331. 8005c1e: 4a31 ldr r2, [pc, #196] ; (8005ce4 <HAL_UART_MspInit+0x254>)
  14332. 8005c20: 601a str r2, [r3, #0]
  14333. hdma_usart3_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
  14334. 8005c22: 4b2f ldr r3, [pc, #188] ; (8005ce0 <HAL_UART_MspInit+0x250>)
  14335. 8005c24: 2210 movs r2, #16
  14336. 8005c26: 605a str r2, [r3, #4]
  14337. hdma_usart3_tx.Init.PeriphInc = DMA_PINC_DISABLE;
  14338. 8005c28: 4b2d ldr r3, [pc, #180] ; (8005ce0 <HAL_UART_MspInit+0x250>)
  14339. 8005c2a: 2200 movs r2, #0
  14340. 8005c2c: 609a str r2, [r3, #8]
  14341. hdma_usart3_tx.Init.MemInc = DMA_MINC_ENABLE;
  14342. 8005c2e: 4b2c ldr r3, [pc, #176] ; (8005ce0 <HAL_UART_MspInit+0x250>)
  14343. 8005c30: 2280 movs r2, #128 ; 0x80
  14344. 8005c32: 60da str r2, [r3, #12]
  14345. hdma_usart3_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  14346. 8005c34: 4b2a ldr r3, [pc, #168] ; (8005ce0 <HAL_UART_MspInit+0x250>)
  14347. 8005c36: 2200 movs r2, #0
  14348. 8005c38: 611a str r2, [r3, #16]
  14349. hdma_usart3_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  14350. 8005c3a: 4b29 ldr r3, [pc, #164] ; (8005ce0 <HAL_UART_MspInit+0x250>)
  14351. 8005c3c: 2200 movs r2, #0
  14352. 8005c3e: 615a str r2, [r3, #20]
  14353. hdma_usart3_tx.Init.Mode = DMA_NORMAL;
  14354. 8005c40: 4b27 ldr r3, [pc, #156] ; (8005ce0 <HAL_UART_MspInit+0x250>)
  14355. 8005c42: 2200 movs r2, #0
  14356. 8005c44: 619a str r2, [r3, #24]
  14357. hdma_usart3_tx.Init.Priority = DMA_PRIORITY_LOW;
  14358. 8005c46: 4b26 ldr r3, [pc, #152] ; (8005ce0 <HAL_UART_MspInit+0x250>)
  14359. 8005c48: 2200 movs r2, #0
  14360. 8005c4a: 61da str r2, [r3, #28]
  14361. if (HAL_DMA_Init(&hdma_usart3_tx) != HAL_OK)
  14362. 8005c4c: 4824 ldr r0, [pc, #144] ; (8005ce0 <HAL_UART_MspInit+0x250>)
  14363. 8005c4e: f7fc fea9 bl 80029a4 <HAL_DMA_Init>
  14364. 8005c52: 4603 mov r3, r0
  14365. 8005c54: 2b00 cmp r3, #0
  14366. 8005c56: d001 beq.n 8005c5c <HAL_UART_MspInit+0x1cc>
  14367. Error_Handler();
  14368. 8005c58: f7ff fe5c bl 8005914 <Error_Handler>
  14369. __HAL_LINKDMA(huart,hdmatx,hdma_usart3_tx);
  14370. 8005c5c: 687b ldr r3, [r7, #4]
  14371. 8005c5e: 4a20 ldr r2, [pc, #128] ; (8005ce0 <HAL_UART_MspInit+0x250>)
  14372. 8005c60: 631a str r2, [r3, #48] ; 0x30
  14373. 8005c62: 4a1f ldr r2, [pc, #124] ; (8005ce0 <HAL_UART_MspInit+0x250>)
  14374. 8005c64: 687b ldr r3, [r7, #4]
  14375. 8005c66: 6253 str r3, [r2, #36] ; 0x24
  14376. hdma_usart3_rx.Instance = DMA1_Channel3;
  14377. 8005c68: 4b1f ldr r3, [pc, #124] ; (8005ce8 <HAL_UART_MspInit+0x258>)
  14378. 8005c6a: 4a20 ldr r2, [pc, #128] ; (8005cec <HAL_UART_MspInit+0x25c>)
  14379. 8005c6c: 601a str r2, [r3, #0]
  14380. hdma_usart3_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
  14381. 8005c6e: 4b1e ldr r3, [pc, #120] ; (8005ce8 <HAL_UART_MspInit+0x258>)
  14382. 8005c70: 2200 movs r2, #0
  14383. 8005c72: 605a str r2, [r3, #4]
  14384. hdma_usart3_rx.Init.PeriphInc = DMA_PINC_DISABLE;
  14385. 8005c74: 4b1c ldr r3, [pc, #112] ; (8005ce8 <HAL_UART_MspInit+0x258>)
  14386. 8005c76: 2200 movs r2, #0
  14387. 8005c78: 609a str r2, [r3, #8]
  14388. hdma_usart3_rx.Init.MemInc = DMA_MINC_ENABLE;
  14389. 8005c7a: 4b1b ldr r3, [pc, #108] ; (8005ce8 <HAL_UART_MspInit+0x258>)
  14390. 8005c7c: 2280 movs r2, #128 ; 0x80
  14391. 8005c7e: 60da str r2, [r3, #12]
  14392. hdma_usart3_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  14393. 8005c80: 4b19 ldr r3, [pc, #100] ; (8005ce8 <HAL_UART_MspInit+0x258>)
  14394. 8005c82: 2200 movs r2, #0
  14395. 8005c84: 611a str r2, [r3, #16]
  14396. hdma_usart3_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  14397. 8005c86: 4b18 ldr r3, [pc, #96] ; (8005ce8 <HAL_UART_MspInit+0x258>)
  14398. 8005c88: 2200 movs r2, #0
  14399. 8005c8a: 615a str r2, [r3, #20]
  14400. hdma_usart3_rx.Init.Mode = DMA_NORMAL;
  14401. 8005c8c: 4b16 ldr r3, [pc, #88] ; (8005ce8 <HAL_UART_MspInit+0x258>)
  14402. 8005c8e: 2200 movs r2, #0
  14403. 8005c90: 619a str r2, [r3, #24]
  14404. hdma_usart3_rx.Init.Priority = DMA_PRIORITY_LOW;
  14405. 8005c92: 4b15 ldr r3, [pc, #84] ; (8005ce8 <HAL_UART_MspInit+0x258>)
  14406. 8005c94: 2200 movs r2, #0
  14407. 8005c96: 61da str r2, [r3, #28]
  14408. if (HAL_DMA_Init(&hdma_usart3_rx) != HAL_OK)
  14409. 8005c98: 4813 ldr r0, [pc, #76] ; (8005ce8 <HAL_UART_MspInit+0x258>)
  14410. 8005c9a: f7fc fe83 bl 80029a4 <HAL_DMA_Init>
  14411. 8005c9e: 4603 mov r3, r0
  14412. 8005ca0: 2b00 cmp r3, #0
  14413. 8005ca2: d001 beq.n 8005ca8 <HAL_UART_MspInit+0x218>
  14414. Error_Handler();
  14415. 8005ca4: f7ff fe36 bl 8005914 <Error_Handler>
  14416. __HAL_LINKDMA(huart,hdmarx,hdma_usart3_rx);
  14417. 8005ca8: 687b ldr r3, [r7, #4]
  14418. 8005caa: 4a0f ldr r2, [pc, #60] ; (8005ce8 <HAL_UART_MspInit+0x258>)
  14419. 8005cac: 635a str r2, [r3, #52] ; 0x34
  14420. 8005cae: 4a0e ldr r2, [pc, #56] ; (8005ce8 <HAL_UART_MspInit+0x258>)
  14421. 8005cb0: 687b ldr r3, [r7, #4]
  14422. 8005cb2: 6253 str r3, [r2, #36] ; 0x24
  14423. }
  14424. 8005cb4: bf00 nop
  14425. 8005cb6: 3728 adds r7, #40 ; 0x28
  14426. 8005cb8: 46bd mov sp, r7
  14427. 8005cba: bd80 pop {r7, pc}
  14428. 8005cbc: 40013800 .word 0x40013800
  14429. 8005cc0: 40021000 .word 0x40021000
  14430. 8005cc4: 40010800 .word 0x40010800
  14431. 8005cc8: 200009d8 .word 0x200009d8
  14432. 8005ccc: 40020044 .word 0x40020044
  14433. 8005cd0: 20000a4c .word 0x20000a4c
  14434. 8005cd4: 40020058 .word 0x40020058
  14435. 8005cd8: 40004800 .word 0x40004800
  14436. 8005cdc: 40010c00 .word 0x40010c00
  14437. 8005ce0: 20000994 .word 0x20000994
  14438. 8005ce4: 4002001c .word 0x4002001c
  14439. 8005ce8: 20000910 .word 0x20000910
  14440. 8005cec: 40020030 .word 0x40020030
  14441. 08005cf0 <HAL_InitTick>:
  14442. * reset by HAL_Init() or at any time when clock is configured, by HAL_RCC_ClockConfig().
  14443. * @param TickPriority: Tick interrupt priority.
  14444. * @retval HAL status
  14445. */
  14446. HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
  14447. {
  14448. 8005cf0: b580 push {r7, lr}
  14449. 8005cf2: b08c sub sp, #48 ; 0x30
  14450. 8005cf4: af00 add r7, sp, #0
  14451. 8005cf6: 6078 str r0, [r7, #4]
  14452. RCC_ClkInitTypeDef clkconfig;
  14453. uint32_t uwTimclock = 0;
  14454. 8005cf8: 2300 movs r3, #0
  14455. 8005cfa: 62fb str r3, [r7, #44] ; 0x2c
  14456. uint32_t uwPrescalerValue = 0;
  14457. 8005cfc: 2300 movs r3, #0
  14458. 8005cfe: 62bb str r3, [r7, #40] ; 0x28
  14459. uint32_t pFLatency;
  14460. /*Configure the TIM2 IRQ priority */
  14461. HAL_NVIC_SetPriority(TIM2_IRQn, TickPriority ,0);
  14462. 8005d00: 2200 movs r2, #0
  14463. 8005d02: 6879 ldr r1, [r7, #4]
  14464. 8005d04: 201c movs r0, #28
  14465. 8005d06: f7fc fe22 bl 800294e <HAL_NVIC_SetPriority>
  14466. /* Enable the TIM2 global Interrupt */
  14467. HAL_NVIC_EnableIRQ(TIM2_IRQn);
  14468. 8005d0a: 201c movs r0, #28
  14469. 8005d0c: f7fc fe3b bl 8002986 <HAL_NVIC_EnableIRQ>
  14470. /* Enable TIM2 clock */
  14471. __HAL_RCC_TIM2_CLK_ENABLE();
  14472. 8005d10: 4b1f ldr r3, [pc, #124] ; (8005d90 <HAL_InitTick+0xa0>)
  14473. 8005d12: 69db ldr r3, [r3, #28]
  14474. 8005d14: 4a1e ldr r2, [pc, #120] ; (8005d90 <HAL_InitTick+0xa0>)
  14475. 8005d16: f043 0301 orr.w r3, r3, #1
  14476. 8005d1a: 61d3 str r3, [r2, #28]
  14477. 8005d1c: 4b1c ldr r3, [pc, #112] ; (8005d90 <HAL_InitTick+0xa0>)
  14478. 8005d1e: 69db ldr r3, [r3, #28]
  14479. 8005d20: f003 0301 and.w r3, r3, #1
  14480. 8005d24: 60fb str r3, [r7, #12]
  14481. 8005d26: 68fb ldr r3, [r7, #12]
  14482. /* Get clock configuration */
  14483. HAL_RCC_GetClockConfig(&clkconfig, &pFLatency);
  14484. 8005d28: f107 0210 add.w r2, r7, #16
  14485. 8005d2c: f107 0314 add.w r3, r7, #20
  14486. 8005d30: 4611 mov r1, r2
  14487. 8005d32: 4618 mov r0, r3
  14488. 8005d34: f7fe f80a bl 8003d4c <HAL_RCC_GetClockConfig>
  14489. /* Compute TIM2 clock */
  14490. uwTimclock = HAL_RCC_GetPCLK1Freq();
  14491. 8005d38: f7fd ffe0 bl 8003cfc <HAL_RCC_GetPCLK1Freq>
  14492. 8005d3c: 62f8 str r0, [r7, #44] ; 0x2c
  14493. /* Compute the prescaler value to have TIM2 counter clock equal to 1MHz */
  14494. uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000) - 1);
  14495. 8005d3e: 6afb ldr r3, [r7, #44] ; 0x2c
  14496. 8005d40: 4a14 ldr r2, [pc, #80] ; (8005d94 <HAL_InitTick+0xa4>)
  14497. 8005d42: fba2 2303 umull r2, r3, r2, r3
  14498. 8005d46: 0c9b lsrs r3, r3, #18
  14499. 8005d48: 3b01 subs r3, #1
  14500. 8005d4a: 62bb str r3, [r7, #40] ; 0x28
  14501. /* Initialize TIM2 */
  14502. htim2.Instance = TIM2;
  14503. 8005d4c: 4b12 ldr r3, [pc, #72] ; (8005d98 <HAL_InitTick+0xa8>)
  14504. 8005d4e: f04f 4280 mov.w r2, #1073741824 ; 0x40000000
  14505. 8005d52: 601a str r2, [r3, #0]
  14506. + Period = [(TIM2CLK/1000) - 1]. to have a (1/1000) s time base.
  14507. + Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock.
  14508. + ClockDivision = 0
  14509. + Counter direction = Up
  14510. */
  14511. htim2.Init.Period = (1000000 / 1000) - 1;
  14512. 8005d54: 4b10 ldr r3, [pc, #64] ; (8005d98 <HAL_InitTick+0xa8>)
  14513. 8005d56: f240 32e7 movw r2, #999 ; 0x3e7
  14514. 8005d5a: 60da str r2, [r3, #12]
  14515. htim2.Init.Prescaler = uwPrescalerValue;
  14516. 8005d5c: 4a0e ldr r2, [pc, #56] ; (8005d98 <HAL_InitTick+0xa8>)
  14517. 8005d5e: 6abb ldr r3, [r7, #40] ; 0x28
  14518. 8005d60: 6053 str r3, [r2, #4]
  14519. htim2.Init.ClockDivision = 0;
  14520. 8005d62: 4b0d ldr r3, [pc, #52] ; (8005d98 <HAL_InitTick+0xa8>)
  14521. 8005d64: 2200 movs r2, #0
  14522. 8005d66: 611a str r2, [r3, #16]
  14523. htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  14524. 8005d68: 4b0b ldr r3, [pc, #44] ; (8005d98 <HAL_InitTick+0xa8>)
  14525. 8005d6a: 2200 movs r2, #0
  14526. 8005d6c: 609a str r2, [r3, #8]
  14527. if(HAL_TIM_Base_Init(&htim2) == HAL_OK)
  14528. 8005d6e: 480a ldr r0, [pc, #40] ; (8005d98 <HAL_InitTick+0xa8>)
  14529. 8005d70: f7fe f934 bl 8003fdc <HAL_TIM_Base_Init>
  14530. 8005d74: 4603 mov r3, r0
  14531. 8005d76: 2b00 cmp r3, #0
  14532. 8005d78: d104 bne.n 8005d84 <HAL_InitTick+0x94>
  14533. {
  14534. /* Start the TIM time Base generation in interrupt mode */
  14535. return HAL_TIM_Base_Start_IT(&htim2);
  14536. 8005d7a: 4807 ldr r0, [pc, #28] ; (8005d98 <HAL_InitTick+0xa8>)
  14537. 8005d7c: f7fe f959 bl 8004032 <HAL_TIM_Base_Start_IT>
  14538. 8005d80: 4603 mov r3, r0
  14539. 8005d82: e000 b.n 8005d86 <HAL_InitTick+0x96>
  14540. }
  14541. /* Return function status */
  14542. return HAL_ERROR;
  14543. 8005d84: 2301 movs r3, #1
  14544. }
  14545. 8005d86: 4618 mov r0, r3
  14546. 8005d88: 3730 adds r7, #48 ; 0x30
  14547. 8005d8a: 46bd mov sp, r7
  14548. 8005d8c: bd80 pop {r7, pc}
  14549. 8005d8e: bf00 nop
  14550. 8005d90: 40021000 .word 0x40021000
  14551. 8005d94: 431bde83 .word 0x431bde83
  14552. 8005d98: 20000b54 .word 0x20000b54
  14553. 08005d9c <NMI_Handler>:
  14554. /******************************************************************************/
  14555. /**
  14556. * @brief This function handles Non maskable interrupt.
  14557. */
  14558. void NMI_Handler(void)
  14559. {
  14560. 8005d9c: b480 push {r7}
  14561. 8005d9e: af00 add r7, sp, #0
  14562. /* USER CODE END NonMaskableInt_IRQn 0 */
  14563. /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
  14564. /* USER CODE END NonMaskableInt_IRQn 1 */
  14565. }
  14566. 8005da0: bf00 nop
  14567. 8005da2: 46bd mov sp, r7
  14568. 8005da4: bc80 pop {r7}
  14569. 8005da6: 4770 bx lr
  14570. 08005da8 <HardFault_Handler>:
  14571. /**
  14572. * @brief This function handles Hard fault interrupt.
  14573. */
  14574. void HardFault_Handler(void)
  14575. {
  14576. 8005da8: b480 push {r7}
  14577. 8005daa: af00 add r7, sp, #0
  14578. /* USER CODE BEGIN HardFault_IRQn 0 */
  14579. /* USER CODE END HardFault_IRQn 0 */
  14580. while (1)
  14581. 8005dac: e7fe b.n 8005dac <HardFault_Handler+0x4>
  14582. 08005dae <MemManage_Handler>:
  14583. /**
  14584. * @brief This function handles Memory management fault.
  14585. */
  14586. void MemManage_Handler(void)
  14587. {
  14588. 8005dae: b480 push {r7}
  14589. 8005db0: af00 add r7, sp, #0
  14590. /* USER CODE BEGIN MemoryManagement_IRQn 0 */
  14591. /* USER CODE END MemoryManagement_IRQn 0 */
  14592. while (1)
  14593. 8005db2: e7fe b.n 8005db2 <MemManage_Handler+0x4>
  14594. 08005db4 <BusFault_Handler>:
  14595. /**
  14596. * @brief This function handles Prefetch fault, memory access fault.
  14597. */
  14598. void BusFault_Handler(void)
  14599. {
  14600. 8005db4: b480 push {r7}
  14601. 8005db6: af00 add r7, sp, #0
  14602. /* USER CODE BEGIN BusFault_IRQn 0 */
  14603. /* USER CODE END BusFault_IRQn 0 */
  14604. while (1)
  14605. 8005db8: e7fe b.n 8005db8 <BusFault_Handler+0x4>
  14606. 08005dba <UsageFault_Handler>:
  14607. /**
  14608. * @brief This function handles Undefined instruction or illegal state.
  14609. */
  14610. void UsageFault_Handler(void)
  14611. {
  14612. 8005dba: b480 push {r7}
  14613. 8005dbc: af00 add r7, sp, #0
  14614. /* USER CODE BEGIN UsageFault_IRQn 0 */
  14615. /* USER CODE END UsageFault_IRQn 0 */
  14616. while (1)
  14617. 8005dbe: e7fe b.n 8005dbe <UsageFault_Handler+0x4>
  14618. 08005dc0 <SVC_Handler>:
  14619. /**
  14620. * @brief This function handles System service call via SWI instruction.
  14621. */
  14622. void SVC_Handler(void)
  14623. {
  14624. 8005dc0: b480 push {r7}
  14625. 8005dc2: af00 add r7, sp, #0
  14626. /* USER CODE END SVCall_IRQn 0 */
  14627. /* USER CODE BEGIN SVCall_IRQn 1 */
  14628. /* USER CODE END SVCall_IRQn 1 */
  14629. }
  14630. 8005dc4: bf00 nop
  14631. 8005dc6: 46bd mov sp, r7
  14632. 8005dc8: bc80 pop {r7}
  14633. 8005dca: 4770 bx lr
  14634. 08005dcc <DebugMon_Handler>:
  14635. /**
  14636. * @brief This function handles Debug monitor.
  14637. */
  14638. void DebugMon_Handler(void)
  14639. {
  14640. 8005dcc: b480 push {r7}
  14641. 8005dce: af00 add r7, sp, #0
  14642. /* USER CODE END DebugMonitor_IRQn 0 */
  14643. /* USER CODE BEGIN DebugMonitor_IRQn 1 */
  14644. /* USER CODE END DebugMonitor_IRQn 1 */
  14645. }
  14646. 8005dd0: bf00 nop
  14647. 8005dd2: 46bd mov sp, r7
  14648. 8005dd4: bc80 pop {r7}
  14649. 8005dd6: 4770 bx lr
  14650. 08005dd8 <PendSV_Handler>:
  14651. /**
  14652. * @brief This function handles Pendable request for system service.
  14653. */
  14654. void PendSV_Handler(void)
  14655. {
  14656. 8005dd8: b480 push {r7}
  14657. 8005dda: af00 add r7, sp, #0
  14658. /* USER CODE END PendSV_IRQn 0 */
  14659. /* USER CODE BEGIN PendSV_IRQn 1 */
  14660. /* USER CODE END PendSV_IRQn 1 */
  14661. }
  14662. 8005ddc: bf00 nop
  14663. 8005dde: 46bd mov sp, r7
  14664. 8005de0: bc80 pop {r7}
  14665. 8005de2: 4770 bx lr
  14666. 08005de4 <DMA1_Channel1_IRQHandler>:
  14667. /**
  14668. * @brief This function handles DMA1 channel1 global interrupt.
  14669. */
  14670. void DMA1_Channel1_IRQHandler(void)
  14671. {
  14672. 8005de4: b580 push {r7, lr}
  14673. 8005de6: af00 add r7, sp, #0
  14674. /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
  14675. /* USER CODE END DMA1_Channel1_IRQn 0 */
  14676. HAL_DMA_IRQHandler(&hdma_adc1);
  14677. 8005de8: 4802 ldr r0, [pc, #8] ; (8005df4 <DMA1_Channel1_IRQHandler+0x10>)
  14678. 8005dea: f7fc ff0b bl 8002c04 <HAL_DMA_IRQHandler>
  14679. /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
  14680. /* USER CODE END DMA1_Channel1_IRQn 1 */
  14681. }
  14682. 8005dee: bf00 nop
  14683. 8005df0: bd80 pop {r7, pc}
  14684. 8005df2: bf00 nop
  14685. 8005df4: 20000ad0 .word 0x20000ad0
  14686. 08005df8 <DMA1_Channel2_IRQHandler>:
  14687. /**
  14688. * @brief This function handles DMA1 channel2 global interrupt.
  14689. */
  14690. void DMA1_Channel2_IRQHandler(void)
  14691. {
  14692. 8005df8: b580 push {r7, lr}
  14693. 8005dfa: af00 add r7, sp, #0
  14694. /* USER CODE BEGIN DMA1_Channel2_IRQn 0 */
  14695. /* USER CODE END DMA1_Channel2_IRQn 0 */
  14696. HAL_DMA_IRQHandler(&hdma_usart3_tx);
  14697. 8005dfc: 4802 ldr r0, [pc, #8] ; (8005e08 <DMA1_Channel2_IRQHandler+0x10>)
  14698. 8005dfe: f7fc ff01 bl 8002c04 <HAL_DMA_IRQHandler>
  14699. /* USER CODE BEGIN DMA1_Channel2_IRQn 1 */
  14700. /* USER CODE END DMA1_Channel2_IRQn 1 */
  14701. }
  14702. 8005e02: bf00 nop
  14703. 8005e04: bd80 pop {r7, pc}
  14704. 8005e06: bf00 nop
  14705. 8005e08: 20000994 .word 0x20000994
  14706. 08005e0c <DMA1_Channel3_IRQHandler>:
  14707. /**
  14708. * @brief This function handles DMA1 channel3 global interrupt.
  14709. */
  14710. void DMA1_Channel3_IRQHandler(void)
  14711. {
  14712. 8005e0c: b580 push {r7, lr}
  14713. 8005e0e: af00 add r7, sp, #0
  14714. /* USER CODE BEGIN DMA1_Channel3_IRQn 0 */
  14715. /* USER CODE END DMA1_Channel3_IRQn 0 */
  14716. HAL_DMA_IRQHandler(&hdma_usart3_rx);
  14717. 8005e10: 4802 ldr r0, [pc, #8] ; (8005e1c <DMA1_Channel3_IRQHandler+0x10>)
  14718. 8005e12: f7fc fef7 bl 8002c04 <HAL_DMA_IRQHandler>
  14719. /* USER CODE BEGIN DMA1_Channel3_IRQn 1 */
  14720. /* USER CODE END DMA1_Channel3_IRQn 1 */
  14721. }
  14722. 8005e16: bf00 nop
  14723. 8005e18: bd80 pop {r7, pc}
  14724. 8005e1a: bf00 nop
  14725. 8005e1c: 20000910 .word 0x20000910
  14726. 08005e20 <DMA1_Channel4_IRQHandler>:
  14727. /**
  14728. * @brief This function handles DMA1 channel4 global interrupt.
  14729. */
  14730. void DMA1_Channel4_IRQHandler(void)
  14731. {
  14732. 8005e20: b580 push {r7, lr}
  14733. 8005e22: af00 add r7, sp, #0
  14734. /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */
  14735. /* USER CODE END DMA1_Channel4_IRQn 0 */
  14736. HAL_DMA_IRQHandler(&hdma_usart1_tx);
  14737. 8005e24: 4802 ldr r0, [pc, #8] ; (8005e30 <DMA1_Channel4_IRQHandler+0x10>)
  14738. 8005e26: f7fc feed bl 8002c04 <HAL_DMA_IRQHandler>
  14739. /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */
  14740. /* USER CODE END DMA1_Channel4_IRQn 1 */
  14741. }
  14742. 8005e2a: bf00 nop
  14743. 8005e2c: bd80 pop {r7, pc}
  14744. 8005e2e: bf00 nop
  14745. 8005e30: 200009d8 .word 0x200009d8
  14746. 08005e34 <DMA1_Channel5_IRQHandler>:
  14747. /**
  14748. * @brief This function handles DMA1 channel5 global interrupt.
  14749. */
  14750. void DMA1_Channel5_IRQHandler(void)
  14751. {
  14752. 8005e34: b580 push {r7, lr}
  14753. 8005e36: af00 add r7, sp, #0
  14754. /* USER CODE BEGIN DMA1_Channel5_IRQn 0 */
  14755. /* USER CODE END DMA1_Channel5_IRQn 0 */
  14756. HAL_DMA_IRQHandler(&hdma_usart1_rx);
  14757. 8005e38: 4802 ldr r0, [pc, #8] ; (8005e44 <DMA1_Channel5_IRQHandler+0x10>)
  14758. 8005e3a: f7fc fee3 bl 8002c04 <HAL_DMA_IRQHandler>
  14759. /* USER CODE BEGIN DMA1_Channel5_IRQn 1 */
  14760. /* USER CODE END DMA1_Channel5_IRQn 1 */
  14761. }
  14762. 8005e3e: bf00 nop
  14763. 8005e40: bd80 pop {r7, pc}
  14764. 8005e42: bf00 nop
  14765. 8005e44: 20000a4c .word 0x20000a4c
  14766. 08005e48 <ADC1_IRQHandler>:
  14767. /**
  14768. * @brief This function handles ADC1 global interrupt.
  14769. */
  14770. void ADC1_IRQHandler(void)
  14771. {
  14772. 8005e48: b580 push {r7, lr}
  14773. 8005e4a: af00 add r7, sp, #0
  14774. /* USER CODE BEGIN ADC1_IRQn 0 */
  14775. /* USER CODE END ADC1_IRQn 0 */
  14776. HAL_ADC_IRQHandler(&hadc1);
  14777. 8005e4c: 4802 ldr r0, [pc, #8] ; (8005e58 <ADC1_IRQHandler+0x10>)
  14778. 8005e4e: f7fc f95b bl 8002108 <HAL_ADC_IRQHandler>
  14779. /* USER CODE BEGIN ADC1_IRQn 1 */
  14780. /* USER CODE END ADC1_IRQn 1 */
  14781. }
  14782. 8005e52: bf00 nop
  14783. 8005e54: bd80 pop {r7, pc}
  14784. 8005e56: bf00 nop
  14785. 8005e58: 20000a1c .word 0x20000a1c
  14786. 08005e5c <TIM2_IRQHandler>:
  14787. /**
  14788. * @brief This function handles TIM2 global interrupt.
  14789. */
  14790. void TIM2_IRQHandler(void)
  14791. {
  14792. 8005e5c: b580 push {r7, lr}
  14793. 8005e5e: af00 add r7, sp, #0
  14794. /* USER CODE BEGIN TIM2_IRQn 0 */
  14795. /* USER CODE END TIM2_IRQn 0 */
  14796. HAL_TIM_IRQHandler(&htim2);
  14797. 8005e60: 4802 ldr r0, [pc, #8] ; (8005e6c <TIM2_IRQHandler+0x10>)
  14798. 8005e62: f7fe f909 bl 8004078 <HAL_TIM_IRQHandler>
  14799. /* USER CODE BEGIN TIM2_IRQn 1 */
  14800. /* USER CODE END TIM2_IRQn 1 */
  14801. }
  14802. 8005e66: bf00 nop
  14803. 8005e68: bd80 pop {r7, pc}
  14804. 8005e6a: bf00 nop
  14805. 8005e6c: 20000b54 .word 0x20000b54
  14806. 08005e70 <USART1_IRQHandler>:
  14807. /**
  14808. * @brief This function handles USART1 global interrupt.
  14809. */
  14810. void USART1_IRQHandler(void)
  14811. {
  14812. 8005e70: b580 push {r7, lr}
  14813. 8005e72: af00 add r7, sp, #0
  14814. /* USER CODE BEGIN USART1_IRQn 0 */
  14815. /* USER CODE END USART1_IRQn 0 */
  14816. HAL_UART_IRQHandler(&huart1);
  14817. 8005e74: 4802 ldr r0, [pc, #8] ; (8005e80 <USART1_IRQHandler+0x10>)
  14818. 8005e76: f7fe fd27 bl 80048c8 <HAL_UART_IRQHandler>
  14819. /* USER CODE BEGIN USART1_IRQn 1 */
  14820. /* USER CODE END USART1_IRQn 1 */
  14821. }
  14822. 8005e7a: bf00 nop
  14823. 8005e7c: bd80 pop {r7, pc}
  14824. 8005e7e: bf00 nop
  14825. 8005e80: 20000a90 .word 0x20000a90
  14826. 08005e84 <USART3_IRQHandler>:
  14827. /**
  14828. * @brief This function handles USART3 global interrupt.
  14829. */
  14830. void USART3_IRQHandler(void)
  14831. {
  14832. 8005e84: b580 push {r7, lr}
  14833. 8005e86: af00 add r7, sp, #0
  14834. /* USER CODE BEGIN USART3_IRQn 0 */
  14835. /* USER CODE END USART3_IRQn 0 */
  14836. HAL_UART_IRQHandler(&huart3);
  14837. 8005e88: 4802 ldr r0, [pc, #8] ; (8005e94 <USART3_IRQHandler+0x10>)
  14838. 8005e8a: f7fe fd1d bl 80048c8 <HAL_UART_IRQHandler>
  14839. /* USER CODE BEGIN USART3_IRQn 1 */
  14840. /* USER CODE END USART3_IRQn 1 */
  14841. }
  14842. 8005e8e: bf00 nop
  14843. 8005e90: bd80 pop {r7, pc}
  14844. 8005e92: bf00 nop
  14845. 8005e94: 20000954 .word 0x20000954
  14846. 08005e98 <TIM6_DAC_IRQHandler>:
  14847. /**
  14848. * @brief This function handles TIM6 global interrupt and DAC underrun error interrupts.
  14849. */
  14850. void TIM6_DAC_IRQHandler(void)
  14851. {
  14852. 8005e98: b580 push {r7, lr}
  14853. 8005e9a: af00 add r7, sp, #0
  14854. /* USER CODE BEGIN TIM6_DAC_IRQn 0 */
  14855. /* USER CODE END TIM6_DAC_IRQn 0 */
  14856. HAL_TIM_IRQHandler(&htim6);
  14857. 8005e9c: 4802 ldr r0, [pc, #8] ; (8005ea8 <TIM6_DAC_IRQHandler+0x10>)
  14858. 8005e9e: f7fe f8eb bl 8004078 <HAL_TIM_IRQHandler>
  14859. /* USER CODE BEGIN TIM6_DAC_IRQn 1 */
  14860. /* USER CODE END TIM6_DAC_IRQn 1 */
  14861. }
  14862. 8005ea2: bf00 nop
  14863. 8005ea4: bd80 pop {r7, pc}
  14864. 8005ea6: bf00 nop
  14865. 8005ea8: 20000b14 .word 0x20000b14
  14866. 08005eac <_read>:
  14867. _kill(status, -1);
  14868. while (1) {} /* Make sure we hang here */
  14869. }
  14870. __attribute__((weak)) int _read(int file, char *ptr, int len)
  14871. {
  14872. 8005eac: b580 push {r7, lr}
  14873. 8005eae: b086 sub sp, #24
  14874. 8005eb0: af00 add r7, sp, #0
  14875. 8005eb2: 60f8 str r0, [r7, #12]
  14876. 8005eb4: 60b9 str r1, [r7, #8]
  14877. 8005eb6: 607a str r2, [r7, #4]
  14878. int DataIdx;
  14879. for (DataIdx = 0; DataIdx < len; DataIdx++)
  14880. 8005eb8: 2300 movs r3, #0
  14881. 8005eba: 617b str r3, [r7, #20]
  14882. 8005ebc: e00a b.n 8005ed4 <_read+0x28>
  14883. {
  14884. *ptr++ = __io_getchar();
  14885. 8005ebe: f3af 8000 nop.w
  14886. 8005ec2: 4601 mov r1, r0
  14887. 8005ec4: 68bb ldr r3, [r7, #8]
  14888. 8005ec6: 1c5a adds r2, r3, #1
  14889. 8005ec8: 60ba str r2, [r7, #8]
  14890. 8005eca: b2ca uxtb r2, r1
  14891. 8005ecc: 701a strb r2, [r3, #0]
  14892. for (DataIdx = 0; DataIdx < len; DataIdx++)
  14893. 8005ece: 697b ldr r3, [r7, #20]
  14894. 8005ed0: 3301 adds r3, #1
  14895. 8005ed2: 617b str r3, [r7, #20]
  14896. 8005ed4: 697a ldr r2, [r7, #20]
  14897. 8005ed6: 687b ldr r3, [r7, #4]
  14898. 8005ed8: 429a cmp r2, r3
  14899. 8005eda: dbf0 blt.n 8005ebe <_read+0x12>
  14900. }
  14901. return len;
  14902. 8005edc: 687b ldr r3, [r7, #4]
  14903. }
  14904. 8005ede: 4618 mov r0, r3
  14905. 8005ee0: 3718 adds r7, #24
  14906. 8005ee2: 46bd mov sp, r7
  14907. 8005ee4: bd80 pop {r7, pc}
  14908. 08005ee6 <_close>:
  14909. }
  14910. return len;
  14911. }
  14912. int _close(int file)
  14913. {
  14914. 8005ee6: b480 push {r7}
  14915. 8005ee8: b083 sub sp, #12
  14916. 8005eea: af00 add r7, sp, #0
  14917. 8005eec: 6078 str r0, [r7, #4]
  14918. return -1;
  14919. 8005eee: f04f 33ff mov.w r3, #4294967295
  14920. }
  14921. 8005ef2: 4618 mov r0, r3
  14922. 8005ef4: 370c adds r7, #12
  14923. 8005ef6: 46bd mov sp, r7
  14924. 8005ef8: bc80 pop {r7}
  14925. 8005efa: 4770 bx lr
  14926. 08005efc <_fstat>:
  14927. int _fstat(int file, struct stat *st)
  14928. {
  14929. 8005efc: b480 push {r7}
  14930. 8005efe: b083 sub sp, #12
  14931. 8005f00: af00 add r7, sp, #0
  14932. 8005f02: 6078 str r0, [r7, #4]
  14933. 8005f04: 6039 str r1, [r7, #0]
  14934. st->st_mode = S_IFCHR;
  14935. 8005f06: 683b ldr r3, [r7, #0]
  14936. 8005f08: f44f 5200 mov.w r2, #8192 ; 0x2000
  14937. 8005f0c: 605a str r2, [r3, #4]
  14938. return 0;
  14939. 8005f0e: 2300 movs r3, #0
  14940. }
  14941. 8005f10: 4618 mov r0, r3
  14942. 8005f12: 370c adds r7, #12
  14943. 8005f14: 46bd mov sp, r7
  14944. 8005f16: bc80 pop {r7}
  14945. 8005f18: 4770 bx lr
  14946. 08005f1a <_isatty>:
  14947. int _isatty(int file)
  14948. {
  14949. 8005f1a: b480 push {r7}
  14950. 8005f1c: b083 sub sp, #12
  14951. 8005f1e: af00 add r7, sp, #0
  14952. 8005f20: 6078 str r0, [r7, #4]
  14953. return 1;
  14954. 8005f22: 2301 movs r3, #1
  14955. }
  14956. 8005f24: 4618 mov r0, r3
  14957. 8005f26: 370c adds r7, #12
  14958. 8005f28: 46bd mov sp, r7
  14959. 8005f2a: bc80 pop {r7}
  14960. 8005f2c: 4770 bx lr
  14961. 08005f2e <_lseek>:
  14962. int _lseek(int file, int ptr, int dir)
  14963. {
  14964. 8005f2e: b480 push {r7}
  14965. 8005f30: b085 sub sp, #20
  14966. 8005f32: af00 add r7, sp, #0
  14967. 8005f34: 60f8 str r0, [r7, #12]
  14968. 8005f36: 60b9 str r1, [r7, #8]
  14969. 8005f38: 607a str r2, [r7, #4]
  14970. return 0;
  14971. 8005f3a: 2300 movs r3, #0
  14972. }
  14973. 8005f3c: 4618 mov r0, r3
  14974. 8005f3e: 3714 adds r7, #20
  14975. 8005f40: 46bd mov sp, r7
  14976. 8005f42: bc80 pop {r7}
  14977. 8005f44: 4770 bx lr
  14978. ...
  14979. 08005f48 <_sbrk>:
  14980. /**
  14981. _sbrk
  14982. Increase program data space. Malloc and related functions depend on this
  14983. **/
  14984. caddr_t _sbrk(int incr)
  14985. {
  14986. 8005f48: b580 push {r7, lr}
  14987. 8005f4a: b084 sub sp, #16
  14988. 8005f4c: af00 add r7, sp, #0
  14989. 8005f4e: 6078 str r0, [r7, #4]
  14990. extern char end asm("end");
  14991. static char *heap_end;
  14992. char *prev_heap_end;
  14993. if (heap_end == 0)
  14994. 8005f50: 4b11 ldr r3, [pc, #68] ; (8005f98 <_sbrk+0x50>)
  14995. 8005f52: 681b ldr r3, [r3, #0]
  14996. 8005f54: 2b00 cmp r3, #0
  14997. 8005f56: d102 bne.n 8005f5e <_sbrk+0x16>
  14998. heap_end = &end;
  14999. 8005f58: 4b0f ldr r3, [pc, #60] ; (8005f98 <_sbrk+0x50>)
  15000. 8005f5a: 4a10 ldr r2, [pc, #64] ; (8005f9c <_sbrk+0x54>)
  15001. 8005f5c: 601a str r2, [r3, #0]
  15002. prev_heap_end = heap_end;
  15003. 8005f5e: 4b0e ldr r3, [pc, #56] ; (8005f98 <_sbrk+0x50>)
  15004. 8005f60: 681b ldr r3, [r3, #0]
  15005. 8005f62: 60fb str r3, [r7, #12]
  15006. if (heap_end + incr > stack_ptr)
  15007. 8005f64: 4b0c ldr r3, [pc, #48] ; (8005f98 <_sbrk+0x50>)
  15008. 8005f66: 681a ldr r2, [r3, #0]
  15009. 8005f68: 687b ldr r3, [r7, #4]
  15010. 8005f6a: 4413 add r3, r2
  15011. 8005f6c: 466a mov r2, sp
  15012. 8005f6e: 4293 cmp r3, r2
  15013. 8005f70: d907 bls.n 8005f82 <_sbrk+0x3a>
  15014. {
  15015. errno = ENOMEM;
  15016. 8005f72: f000 f873 bl 800605c <__errno>
  15017. 8005f76: 4602 mov r2, r0
  15018. 8005f78: 230c movs r3, #12
  15019. 8005f7a: 6013 str r3, [r2, #0]
  15020. return (caddr_t) -1;
  15021. 8005f7c: f04f 33ff mov.w r3, #4294967295
  15022. 8005f80: e006 b.n 8005f90 <_sbrk+0x48>
  15023. }
  15024. heap_end += incr;
  15025. 8005f82: 4b05 ldr r3, [pc, #20] ; (8005f98 <_sbrk+0x50>)
  15026. 8005f84: 681a ldr r2, [r3, #0]
  15027. 8005f86: 687b ldr r3, [r7, #4]
  15028. 8005f88: 4413 add r3, r2
  15029. 8005f8a: 4a03 ldr r2, [pc, #12] ; (8005f98 <_sbrk+0x50>)
  15030. 8005f8c: 6013 str r3, [r2, #0]
  15031. return (caddr_t) prev_heap_end;
  15032. 8005f8e: 68fb ldr r3, [r7, #12]
  15033. }
  15034. 8005f90: 4618 mov r0, r3
  15035. 8005f92: 3710 adds r7, #16
  15036. 8005f94: 46bd mov sp, r7
  15037. 8005f96: bd80 pop {r7, pc}
  15038. 8005f98: 2000063c .word 0x2000063c
  15039. 8005f9c: 20000b98 .word 0x20000b98
  15040. 08005fa0 <SystemInit>:
  15041. * @note This function should be used only after reset.
  15042. * @param None
  15043. * @retval None
  15044. */
  15045. void SystemInit (void)
  15046. {
  15047. 8005fa0: b480 push {r7}
  15048. 8005fa2: af00 add r7, sp, #0
  15049. /* Reset the RCC clock configuration to the default reset state(for debug purpose) */
  15050. /* Set HSION bit */
  15051. RCC->CR |= 0x00000001U;
  15052. 8005fa4: 4b17 ldr r3, [pc, #92] ; (8006004 <SystemInit+0x64>)
  15053. 8005fa6: 681b ldr r3, [r3, #0]
  15054. 8005fa8: 4a16 ldr r2, [pc, #88] ; (8006004 <SystemInit+0x64>)
  15055. 8005faa: f043 0301 orr.w r3, r3, #1
  15056. 8005fae: 6013 str r3, [r2, #0]
  15057. /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
  15058. #if !defined(STM32F105xC) && !defined(STM32F107xC)
  15059. RCC->CFGR &= 0xF8FF0000U;
  15060. 8005fb0: 4b14 ldr r3, [pc, #80] ; (8006004 <SystemInit+0x64>)
  15061. 8005fb2: 685a ldr r2, [r3, #4]
  15062. 8005fb4: 4913 ldr r1, [pc, #76] ; (8006004 <SystemInit+0x64>)
  15063. 8005fb6: 4b14 ldr r3, [pc, #80] ; (8006008 <SystemInit+0x68>)
  15064. 8005fb8: 4013 ands r3, r2
  15065. 8005fba: 604b str r3, [r1, #4]
  15066. #else
  15067. RCC->CFGR &= 0xF0FF0000U;
  15068. #endif /* STM32F105xC */
  15069. /* Reset HSEON, CSSON and PLLON bits */
  15070. RCC->CR &= 0xFEF6FFFFU;
  15071. 8005fbc: 4b11 ldr r3, [pc, #68] ; (8006004 <SystemInit+0x64>)
  15072. 8005fbe: 681b ldr r3, [r3, #0]
  15073. 8005fc0: 4a10 ldr r2, [pc, #64] ; (8006004 <SystemInit+0x64>)
  15074. 8005fc2: f023 7384 bic.w r3, r3, #17301504 ; 0x1080000
  15075. 8005fc6: f423 3380 bic.w r3, r3, #65536 ; 0x10000
  15076. 8005fca: 6013 str r3, [r2, #0]
  15077. /* Reset HSEBYP bit */
  15078. RCC->CR &= 0xFFFBFFFFU;
  15079. 8005fcc: 4b0d ldr r3, [pc, #52] ; (8006004 <SystemInit+0x64>)
  15080. 8005fce: 681b ldr r3, [r3, #0]
  15081. 8005fd0: 4a0c ldr r2, [pc, #48] ; (8006004 <SystemInit+0x64>)
  15082. 8005fd2: f423 2380 bic.w r3, r3, #262144 ; 0x40000
  15083. 8005fd6: 6013 str r3, [r2, #0]
  15084. /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */
  15085. RCC->CFGR &= 0xFF80FFFFU;
  15086. 8005fd8: 4b0a ldr r3, [pc, #40] ; (8006004 <SystemInit+0x64>)
  15087. 8005fda: 685b ldr r3, [r3, #4]
  15088. 8005fdc: 4a09 ldr r2, [pc, #36] ; (8006004 <SystemInit+0x64>)
  15089. 8005fde: f423 03fe bic.w r3, r3, #8323072 ; 0x7f0000
  15090. 8005fe2: 6053 str r3, [r2, #4]
  15091. /* Reset CFGR2 register */
  15092. RCC->CFGR2 = 0x00000000U;
  15093. #elif defined(STM32F100xB) || defined(STM32F100xE)
  15094. /* Disable all interrupts and clear pending bits */
  15095. RCC->CIR = 0x009F0000U;
  15096. 8005fe4: 4b07 ldr r3, [pc, #28] ; (8006004 <SystemInit+0x64>)
  15097. 8005fe6: f44f 021f mov.w r2, #10420224 ; 0x9f0000
  15098. 8005fea: 609a str r2, [r3, #8]
  15099. /* Reset CFGR2 register */
  15100. RCC->CFGR2 = 0x00000000U;
  15101. 8005fec: 4b05 ldr r3, [pc, #20] ; (8006004 <SystemInit+0x64>)
  15102. 8005fee: 2200 movs r2, #0
  15103. 8005ff0: 62da str r2, [r3, #44] ; 0x2c
  15104. #endif
  15105. #ifdef VECT_TAB_SRAM
  15106. SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
  15107. #else
  15108. SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
  15109. 8005ff2: 4b06 ldr r3, [pc, #24] ; (800600c <SystemInit+0x6c>)
  15110. 8005ff4: f04f 6200 mov.w r2, #134217728 ; 0x8000000
  15111. 8005ff8: 609a str r2, [r3, #8]
  15112. #endif
  15113. }
  15114. 8005ffa: bf00 nop
  15115. 8005ffc: 46bd mov sp, r7
  15116. 8005ffe: bc80 pop {r7}
  15117. 8006000: 4770 bx lr
  15118. 8006002: bf00 nop
  15119. 8006004: 40021000 .word 0x40021000
  15120. 8006008: f8ff0000 .word 0xf8ff0000
  15121. 800600c: e000ed00 .word 0xe000ed00
  15122. 08006010 <Reset_Handler>:
  15123. .weak Reset_Handler
  15124. .type Reset_Handler, %function
  15125. Reset_Handler:
  15126. /* Copy the data segment initializers from flash to SRAM */
  15127. movs r1, #0
  15128. 8006010: 2100 movs r1, #0
  15129. b LoopCopyDataInit
  15130. 8006012: e003 b.n 800601c <LoopCopyDataInit>
  15131. 08006014 <CopyDataInit>:
  15132. CopyDataInit:
  15133. ldr r3, =_sidata
  15134. 8006014: 4b0b ldr r3, [pc, #44] ; (8006044 <LoopFillZerobss+0x14>)
  15135. ldr r3, [r3, r1]
  15136. 8006016: 585b ldr r3, [r3, r1]
  15137. str r3, [r0, r1]
  15138. 8006018: 5043 str r3, [r0, r1]
  15139. adds r1, r1, #4
  15140. 800601a: 3104 adds r1, #4
  15141. 0800601c <LoopCopyDataInit>:
  15142. LoopCopyDataInit:
  15143. ldr r0, =_sdata
  15144. 800601c: 480a ldr r0, [pc, #40] ; (8006048 <LoopFillZerobss+0x18>)
  15145. ldr r3, =_edata
  15146. 800601e: 4b0b ldr r3, [pc, #44] ; (800604c <LoopFillZerobss+0x1c>)
  15147. adds r2, r0, r1
  15148. 8006020: 1842 adds r2, r0, r1
  15149. cmp r2, r3
  15150. 8006022: 429a cmp r2, r3
  15151. bcc CopyDataInit
  15152. 8006024: d3f6 bcc.n 8006014 <CopyDataInit>
  15153. ldr r2, =_sbss
  15154. 8006026: 4a0a ldr r2, [pc, #40] ; (8006050 <LoopFillZerobss+0x20>)
  15155. b LoopFillZerobss
  15156. 8006028: e002 b.n 8006030 <LoopFillZerobss>
  15157. 0800602a <FillZerobss>:
  15158. /* Zero fill the bss segment. */
  15159. FillZerobss:
  15160. movs r3, #0
  15161. 800602a: 2300 movs r3, #0
  15162. str r3, [r2], #4
  15163. 800602c: f842 3b04 str.w r3, [r2], #4
  15164. 08006030 <LoopFillZerobss>:
  15165. LoopFillZerobss:
  15166. ldr r3, = _ebss
  15167. 8006030: 4b08 ldr r3, [pc, #32] ; (8006054 <LoopFillZerobss+0x24>)
  15168. cmp r2, r3
  15169. 8006032: 429a cmp r2, r3
  15170. bcc FillZerobss
  15171. 8006034: d3f9 bcc.n 800602a <FillZerobss>
  15172. /* Call the clock system intitialization function.*/
  15173. bl SystemInit
  15174. 8006036: f7ff ffb3 bl 8005fa0 <SystemInit>
  15175. /* Call static constructors */
  15176. bl __libc_init_array
  15177. 800603a: f000 f815 bl 8006068 <__libc_init_array>
  15178. /* Call the application's entry point.*/
  15179. bl main
  15180. 800603e: f7ff f941 bl 80052c4 <main>
  15181. bx lr
  15182. 8006042: 4770 bx lr
  15183. ldr r3, =_sidata
  15184. 8006044: 08008fd0 .word 0x08008fd0
  15185. ldr r0, =_sdata
  15186. 8006048: 20000000 .word 0x20000000
  15187. ldr r3, =_edata
  15188. 800604c: 200001dc .word 0x200001dc
  15189. ldr r2, =_sbss
  15190. 8006050: 200001e0 .word 0x200001e0
  15191. ldr r3, = _ebss
  15192. 8006054: 20000b98 .word 0x20000b98
  15193. 08006058 <CEC_IRQHandler>:
  15194. * @retval : None
  15195. */
  15196. .section .text.Default_Handler,"ax",%progbits
  15197. Default_Handler:
  15198. Infinite_Loop:
  15199. b Infinite_Loop
  15200. 8006058: e7fe b.n 8006058 <CEC_IRQHandler>
  15201. ...
  15202. 0800605c <__errno>:
  15203. 800605c: 4b01 ldr r3, [pc, #4] ; (8006064 <__errno+0x8>)
  15204. 800605e: 6818 ldr r0, [r3, #0]
  15205. 8006060: 4770 bx lr
  15206. 8006062: bf00 nop
  15207. 8006064: 2000000c .word 0x2000000c
  15208. 08006068 <__libc_init_array>:
  15209. 8006068: b570 push {r4, r5, r6, lr}
  15210. 800606a: 2500 movs r5, #0
  15211. 800606c: 4e0c ldr r6, [pc, #48] ; (80060a0 <__libc_init_array+0x38>)
  15212. 800606e: 4c0d ldr r4, [pc, #52] ; (80060a4 <__libc_init_array+0x3c>)
  15213. 8006070: 1ba4 subs r4, r4, r6
  15214. 8006072: 10a4 asrs r4, r4, #2
  15215. 8006074: 42a5 cmp r5, r4
  15216. 8006076: d109 bne.n 800608c <__libc_init_array+0x24>
  15217. 8006078: f002 fc60 bl 800893c <_init>
  15218. 800607c: 2500 movs r5, #0
  15219. 800607e: 4e0a ldr r6, [pc, #40] ; (80060a8 <__libc_init_array+0x40>)
  15220. 8006080: 4c0a ldr r4, [pc, #40] ; (80060ac <__libc_init_array+0x44>)
  15221. 8006082: 1ba4 subs r4, r4, r6
  15222. 8006084: 10a4 asrs r4, r4, #2
  15223. 8006086: 42a5 cmp r5, r4
  15224. 8006088: d105 bne.n 8006096 <__libc_init_array+0x2e>
  15225. 800608a: bd70 pop {r4, r5, r6, pc}
  15226. 800608c: f856 3025 ldr.w r3, [r6, r5, lsl #2]
  15227. 8006090: 4798 blx r3
  15228. 8006092: 3501 adds r5, #1
  15229. 8006094: e7ee b.n 8006074 <__libc_init_array+0xc>
  15230. 8006096: f856 3025 ldr.w r3, [r6, r5, lsl #2]
  15231. 800609a: 4798 blx r3
  15232. 800609c: 3501 adds r5, #1
  15233. 800609e: e7f2 b.n 8006086 <__libc_init_array+0x1e>
  15234. 80060a0: 08008fc8 .word 0x08008fc8
  15235. 80060a4: 08008fc8 .word 0x08008fc8
  15236. 80060a8: 08008fc8 .word 0x08008fc8
  15237. 80060ac: 08008fcc .word 0x08008fcc
  15238. 080060b0 <memset>:
  15239. 80060b0: 4603 mov r3, r0
  15240. 80060b2: 4402 add r2, r0
  15241. 80060b4: 4293 cmp r3, r2
  15242. 80060b6: d100 bne.n 80060ba <memset+0xa>
  15243. 80060b8: 4770 bx lr
  15244. 80060ba: f803 1b01 strb.w r1, [r3], #1
  15245. 80060be: e7f9 b.n 80060b4 <memset+0x4>
  15246. 080060c0 <__cvt>:
  15247. 80060c0: 2b00 cmp r3, #0
  15248. 80060c2: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
  15249. 80060c6: 461e mov r6, r3
  15250. 80060c8: bfbb ittet lt
  15251. 80060ca: f103 4300 addlt.w r3, r3, #2147483648 ; 0x80000000
  15252. 80060ce: 461e movlt r6, r3
  15253. 80060d0: 2300 movge r3, #0
  15254. 80060d2: 232d movlt r3, #45 ; 0x2d
  15255. 80060d4: b088 sub sp, #32
  15256. 80060d6: 9f14 ldr r7, [sp, #80] ; 0x50
  15257. 80060d8: e9dd 1a12 ldrd r1, sl, [sp, #72] ; 0x48
  15258. 80060dc: f027 0720 bic.w r7, r7, #32
  15259. 80060e0: 2f46 cmp r7, #70 ; 0x46
  15260. 80060e2: 4614 mov r4, r2
  15261. 80060e4: 9d10 ldr r5, [sp, #64] ; 0x40
  15262. 80060e6: 700b strb r3, [r1, #0]
  15263. 80060e8: d004 beq.n 80060f4 <__cvt+0x34>
  15264. 80060ea: 2f45 cmp r7, #69 ; 0x45
  15265. 80060ec: d100 bne.n 80060f0 <__cvt+0x30>
  15266. 80060ee: 3501 adds r5, #1
  15267. 80060f0: 2302 movs r3, #2
  15268. 80060f2: e000 b.n 80060f6 <__cvt+0x36>
  15269. 80060f4: 2303 movs r3, #3
  15270. 80060f6: aa07 add r2, sp, #28
  15271. 80060f8: 9204 str r2, [sp, #16]
  15272. 80060fa: aa06 add r2, sp, #24
  15273. 80060fc: e9cd a202 strd sl, r2, [sp, #8]
  15274. 8006100: e9cd 3500 strd r3, r5, [sp]
  15275. 8006104: 4622 mov r2, r4
  15276. 8006106: 4633 mov r3, r6
  15277. 8006108: f000 feaa bl 8006e60 <_dtoa_r>
  15278. 800610c: 2f47 cmp r7, #71 ; 0x47
  15279. 800610e: 4680 mov r8, r0
  15280. 8006110: d102 bne.n 8006118 <__cvt+0x58>
  15281. 8006112: 9b11 ldr r3, [sp, #68] ; 0x44
  15282. 8006114: 07db lsls r3, r3, #31
  15283. 8006116: d526 bpl.n 8006166 <__cvt+0xa6>
  15284. 8006118: 2f46 cmp r7, #70 ; 0x46
  15285. 800611a: eb08 0905 add.w r9, r8, r5
  15286. 800611e: d111 bne.n 8006144 <__cvt+0x84>
  15287. 8006120: f898 3000 ldrb.w r3, [r8]
  15288. 8006124: 2b30 cmp r3, #48 ; 0x30
  15289. 8006126: d10a bne.n 800613e <__cvt+0x7e>
  15290. 8006128: 2200 movs r2, #0
  15291. 800612a: 2300 movs r3, #0
  15292. 800612c: 4620 mov r0, r4
  15293. 800612e: 4631 mov r1, r6
  15294. 8006130: f7fa fc9a bl 8000a68 <__aeabi_dcmpeq>
  15295. 8006134: b918 cbnz r0, 800613e <__cvt+0x7e>
  15296. 8006136: f1c5 0501 rsb r5, r5, #1
  15297. 800613a: f8ca 5000 str.w r5, [sl]
  15298. 800613e: f8da 3000 ldr.w r3, [sl]
  15299. 8006142: 4499 add r9, r3
  15300. 8006144: 2200 movs r2, #0
  15301. 8006146: 2300 movs r3, #0
  15302. 8006148: 4620 mov r0, r4
  15303. 800614a: 4631 mov r1, r6
  15304. 800614c: f7fa fc8c bl 8000a68 <__aeabi_dcmpeq>
  15305. 8006150: b938 cbnz r0, 8006162 <__cvt+0xa2>
  15306. 8006152: 2230 movs r2, #48 ; 0x30
  15307. 8006154: 9b07 ldr r3, [sp, #28]
  15308. 8006156: 454b cmp r3, r9
  15309. 8006158: d205 bcs.n 8006166 <__cvt+0xa6>
  15310. 800615a: 1c59 adds r1, r3, #1
  15311. 800615c: 9107 str r1, [sp, #28]
  15312. 800615e: 701a strb r2, [r3, #0]
  15313. 8006160: e7f8 b.n 8006154 <__cvt+0x94>
  15314. 8006162: f8cd 901c str.w r9, [sp, #28]
  15315. 8006166: 4640 mov r0, r8
  15316. 8006168: 9b07 ldr r3, [sp, #28]
  15317. 800616a: 9a15 ldr r2, [sp, #84] ; 0x54
  15318. 800616c: eba3 0308 sub.w r3, r3, r8
  15319. 8006170: 6013 str r3, [r2, #0]
  15320. 8006172: b008 add sp, #32
  15321. 8006174: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  15322. 08006178 <__exponent>:
  15323. 8006178: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr}
  15324. 800617a: 2900 cmp r1, #0
  15325. 800617c: bfb4 ite lt
  15326. 800617e: 232d movlt r3, #45 ; 0x2d
  15327. 8006180: 232b movge r3, #43 ; 0x2b
  15328. 8006182: 4604 mov r4, r0
  15329. 8006184: bfb8 it lt
  15330. 8006186: 4249 neglt r1, r1
  15331. 8006188: 2909 cmp r1, #9
  15332. 800618a: f804 2b02 strb.w r2, [r4], #2
  15333. 800618e: 7043 strb r3, [r0, #1]
  15334. 8006190: dd21 ble.n 80061d6 <__exponent+0x5e>
  15335. 8006192: f10d 0307 add.w r3, sp, #7
  15336. 8006196: 461f mov r7, r3
  15337. 8006198: 260a movs r6, #10
  15338. 800619a: fb91 f5f6 sdiv r5, r1, r6
  15339. 800619e: fb06 1115 mls r1, r6, r5, r1
  15340. 80061a2: 2d09 cmp r5, #9
  15341. 80061a4: f101 0130 add.w r1, r1, #48 ; 0x30
  15342. 80061a8: f803 1c01 strb.w r1, [r3, #-1]
  15343. 80061ac: f103 32ff add.w r2, r3, #4294967295
  15344. 80061b0: 4629 mov r1, r5
  15345. 80061b2: dc09 bgt.n 80061c8 <__exponent+0x50>
  15346. 80061b4: 3130 adds r1, #48 ; 0x30
  15347. 80061b6: 3b02 subs r3, #2
  15348. 80061b8: f802 1c01 strb.w r1, [r2, #-1]
  15349. 80061bc: 42bb cmp r3, r7
  15350. 80061be: 4622 mov r2, r4
  15351. 80061c0: d304 bcc.n 80061cc <__exponent+0x54>
  15352. 80061c2: 1a10 subs r0, r2, r0
  15353. 80061c4: b003 add sp, #12
  15354. 80061c6: bdf0 pop {r4, r5, r6, r7, pc}
  15355. 80061c8: 4613 mov r3, r2
  15356. 80061ca: e7e6 b.n 800619a <__exponent+0x22>
  15357. 80061cc: f813 2b01 ldrb.w r2, [r3], #1
  15358. 80061d0: f804 2b01 strb.w r2, [r4], #1
  15359. 80061d4: e7f2 b.n 80061bc <__exponent+0x44>
  15360. 80061d6: 2330 movs r3, #48 ; 0x30
  15361. 80061d8: 4419 add r1, r3
  15362. 80061da: 7083 strb r3, [r0, #2]
  15363. 80061dc: 1d02 adds r2, r0, #4
  15364. 80061de: 70c1 strb r1, [r0, #3]
  15365. 80061e0: e7ef b.n 80061c2 <__exponent+0x4a>
  15366. ...
  15367. 080061e4 <_printf_float>:
  15368. 80061e4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
  15369. 80061e8: b091 sub sp, #68 ; 0x44
  15370. 80061ea: 460c mov r4, r1
  15371. 80061ec: 9f1a ldr r7, [sp, #104] ; 0x68
  15372. 80061ee: 4693 mov fp, r2
  15373. 80061f0: 461e mov r6, r3
  15374. 80061f2: 4605 mov r5, r0
  15375. 80061f4: f001 fd62 bl 8007cbc <_localeconv_r>
  15376. 80061f8: 6803 ldr r3, [r0, #0]
  15377. 80061fa: 4618 mov r0, r3
  15378. 80061fc: 9309 str r3, [sp, #36] ; 0x24
  15379. 80061fe: f7fa f807 bl 8000210 <strlen>
  15380. 8006202: 2300 movs r3, #0
  15381. 8006204: 930e str r3, [sp, #56] ; 0x38
  15382. 8006206: 683b ldr r3, [r7, #0]
  15383. 8006208: 900a str r0, [sp, #40] ; 0x28
  15384. 800620a: 3307 adds r3, #7
  15385. 800620c: f023 0307 bic.w r3, r3, #7
  15386. 8006210: f103 0208 add.w r2, r3, #8
  15387. 8006214: f894 8018 ldrb.w r8, [r4, #24]
  15388. 8006218: f8d4 a000 ldr.w sl, [r4]
  15389. 800621c: 603a str r2, [r7, #0]
  15390. 800621e: e9d3 2300 ldrd r2, r3, [r3]
  15391. 8006222: e9c4 2312 strd r2, r3, [r4, #72] ; 0x48
  15392. 8006226: e9d4 7912 ldrd r7, r9, [r4, #72] ; 0x48
  15393. 800622a: f029 4300 bic.w r3, r9, #2147483648 ; 0x80000000
  15394. 800622e: 930b str r3, [sp, #44] ; 0x2c
  15395. 8006230: f04f 32ff mov.w r2, #4294967295
  15396. 8006234: 4ba6 ldr r3, [pc, #664] ; (80064d0 <_printf_float+0x2ec>)
  15397. 8006236: 4638 mov r0, r7
  15398. 8006238: 990b ldr r1, [sp, #44] ; 0x2c
  15399. 800623a: f7fa fc47 bl 8000acc <__aeabi_dcmpun>
  15400. 800623e: bb68 cbnz r0, 800629c <_printf_float+0xb8>
  15401. 8006240: f04f 32ff mov.w r2, #4294967295
  15402. 8006244: 4ba2 ldr r3, [pc, #648] ; (80064d0 <_printf_float+0x2ec>)
  15403. 8006246: 4638 mov r0, r7
  15404. 8006248: 990b ldr r1, [sp, #44] ; 0x2c
  15405. 800624a: f7fa fc21 bl 8000a90 <__aeabi_dcmple>
  15406. 800624e: bb28 cbnz r0, 800629c <_printf_float+0xb8>
  15407. 8006250: 2200 movs r2, #0
  15408. 8006252: 2300 movs r3, #0
  15409. 8006254: 4638 mov r0, r7
  15410. 8006256: 4649 mov r1, r9
  15411. 8006258: f7fa fc10 bl 8000a7c <__aeabi_dcmplt>
  15412. 800625c: b110 cbz r0, 8006264 <_printf_float+0x80>
  15413. 800625e: 232d movs r3, #45 ; 0x2d
  15414. 8006260: f884 3043 strb.w r3, [r4, #67] ; 0x43
  15415. 8006264: 4f9b ldr r7, [pc, #620] ; (80064d4 <_printf_float+0x2f0>)
  15416. 8006266: 4b9c ldr r3, [pc, #624] ; (80064d8 <_printf_float+0x2f4>)
  15417. 8006268: f1b8 0f47 cmp.w r8, #71 ; 0x47
  15418. 800626c: bf98 it ls
  15419. 800626e: 461f movls r7, r3
  15420. 8006270: 2303 movs r3, #3
  15421. 8006272: f04f 0900 mov.w r9, #0
  15422. 8006276: 6123 str r3, [r4, #16]
  15423. 8006278: f02a 0304 bic.w r3, sl, #4
  15424. 800627c: 6023 str r3, [r4, #0]
  15425. 800627e: 9600 str r6, [sp, #0]
  15426. 8006280: 465b mov r3, fp
  15427. 8006282: aa0f add r2, sp, #60 ; 0x3c
  15428. 8006284: 4621 mov r1, r4
  15429. 8006286: 4628 mov r0, r5
  15430. 8006288: f000 f9e2 bl 8006650 <_printf_common>
  15431. 800628c: 3001 adds r0, #1
  15432. 800628e: f040 8090 bne.w 80063b2 <_printf_float+0x1ce>
  15433. 8006292: f04f 30ff mov.w r0, #4294967295
  15434. 8006296: b011 add sp, #68 ; 0x44
  15435. 8006298: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  15436. 800629c: 463a mov r2, r7
  15437. 800629e: 464b mov r3, r9
  15438. 80062a0: 4638 mov r0, r7
  15439. 80062a2: 4649 mov r1, r9
  15440. 80062a4: f7fa fc12 bl 8000acc <__aeabi_dcmpun>
  15441. 80062a8: b110 cbz r0, 80062b0 <_printf_float+0xcc>
  15442. 80062aa: 4f8c ldr r7, [pc, #560] ; (80064dc <_printf_float+0x2f8>)
  15443. 80062ac: 4b8c ldr r3, [pc, #560] ; (80064e0 <_printf_float+0x2fc>)
  15444. 80062ae: e7db b.n 8006268 <_printf_float+0x84>
  15445. 80062b0: 6863 ldr r3, [r4, #4]
  15446. 80062b2: f44a 6280 orr.w r2, sl, #1024 ; 0x400
  15447. 80062b6: 1c59 adds r1, r3, #1
  15448. 80062b8: a80d add r0, sp, #52 ; 0x34
  15449. 80062ba: a90e add r1, sp, #56 ; 0x38
  15450. 80062bc: d140 bne.n 8006340 <_printf_float+0x15c>
  15451. 80062be: 2306 movs r3, #6
  15452. 80062c0: 6063 str r3, [r4, #4]
  15453. 80062c2: f04f 0c00 mov.w ip, #0
  15454. 80062c6: f10d 0333 add.w r3, sp, #51 ; 0x33
  15455. 80062ca: e9cd 2301 strd r2, r3, [sp, #4]
  15456. 80062ce: 6863 ldr r3, [r4, #4]
  15457. 80062d0: 6022 str r2, [r4, #0]
  15458. 80062d2: e9cd 0803 strd r0, r8, [sp, #12]
  15459. 80062d6: 9300 str r3, [sp, #0]
  15460. 80062d8: 463a mov r2, r7
  15461. 80062da: 464b mov r3, r9
  15462. 80062dc: e9cd 1c05 strd r1, ip, [sp, #20]
  15463. 80062e0: 4628 mov r0, r5
  15464. 80062e2: f7ff feed bl 80060c0 <__cvt>
  15465. 80062e6: f008 03df and.w r3, r8, #223 ; 0xdf
  15466. 80062ea: 2b47 cmp r3, #71 ; 0x47
  15467. 80062ec: 4607 mov r7, r0
  15468. 80062ee: d109 bne.n 8006304 <_printf_float+0x120>
  15469. 80062f0: 9b0d ldr r3, [sp, #52] ; 0x34
  15470. 80062f2: 1cd8 adds r0, r3, #3
  15471. 80062f4: db02 blt.n 80062fc <_printf_float+0x118>
  15472. 80062f6: 6862 ldr r2, [r4, #4]
  15473. 80062f8: 4293 cmp r3, r2
  15474. 80062fa: dd47 ble.n 800638c <_printf_float+0x1a8>
  15475. 80062fc: f1a8 0802 sub.w r8, r8, #2
  15476. 8006300: fa5f f888 uxtb.w r8, r8
  15477. 8006304: f1b8 0f65 cmp.w r8, #101 ; 0x65
  15478. 8006308: 990d ldr r1, [sp, #52] ; 0x34
  15479. 800630a: d824 bhi.n 8006356 <_printf_float+0x172>
  15480. 800630c: 3901 subs r1, #1
  15481. 800630e: 4642 mov r2, r8
  15482. 8006310: f104 0050 add.w r0, r4, #80 ; 0x50
  15483. 8006314: 910d str r1, [sp, #52] ; 0x34
  15484. 8006316: f7ff ff2f bl 8006178 <__exponent>
  15485. 800631a: 9a0e ldr r2, [sp, #56] ; 0x38
  15486. 800631c: 4681 mov r9, r0
  15487. 800631e: 1813 adds r3, r2, r0
  15488. 8006320: 2a01 cmp r2, #1
  15489. 8006322: 6123 str r3, [r4, #16]
  15490. 8006324: dc02 bgt.n 800632c <_printf_float+0x148>
  15491. 8006326: 6822 ldr r2, [r4, #0]
  15492. 8006328: 07d1 lsls r1, r2, #31
  15493. 800632a: d501 bpl.n 8006330 <_printf_float+0x14c>
  15494. 800632c: 3301 adds r3, #1
  15495. 800632e: 6123 str r3, [r4, #16]
  15496. 8006330: f89d 3033 ldrb.w r3, [sp, #51] ; 0x33
  15497. 8006334: 2b00 cmp r3, #0
  15498. 8006336: d0a2 beq.n 800627e <_printf_float+0x9a>
  15499. 8006338: 232d movs r3, #45 ; 0x2d
  15500. 800633a: f884 3043 strb.w r3, [r4, #67] ; 0x43
  15501. 800633e: e79e b.n 800627e <_printf_float+0x9a>
  15502. 8006340: f1b8 0f67 cmp.w r8, #103 ; 0x67
  15503. 8006344: f000 816e beq.w 8006624 <_printf_float+0x440>
  15504. 8006348: f1b8 0f47 cmp.w r8, #71 ; 0x47
  15505. 800634c: d1b9 bne.n 80062c2 <_printf_float+0xde>
  15506. 800634e: 2b00 cmp r3, #0
  15507. 8006350: d1b7 bne.n 80062c2 <_printf_float+0xde>
  15508. 8006352: 2301 movs r3, #1
  15509. 8006354: e7b4 b.n 80062c0 <_printf_float+0xdc>
  15510. 8006356: f1b8 0f66 cmp.w r8, #102 ; 0x66
  15511. 800635a: d119 bne.n 8006390 <_printf_float+0x1ac>
  15512. 800635c: 2900 cmp r1, #0
  15513. 800635e: 6863 ldr r3, [r4, #4]
  15514. 8006360: dd0c ble.n 800637c <_printf_float+0x198>
  15515. 8006362: 6121 str r1, [r4, #16]
  15516. 8006364: b913 cbnz r3, 800636c <_printf_float+0x188>
  15517. 8006366: 6822 ldr r2, [r4, #0]
  15518. 8006368: 07d2 lsls r2, r2, #31
  15519. 800636a: d502 bpl.n 8006372 <_printf_float+0x18e>
  15520. 800636c: 3301 adds r3, #1
  15521. 800636e: 440b add r3, r1
  15522. 8006370: 6123 str r3, [r4, #16]
  15523. 8006372: 9b0d ldr r3, [sp, #52] ; 0x34
  15524. 8006374: f04f 0900 mov.w r9, #0
  15525. 8006378: 65a3 str r3, [r4, #88] ; 0x58
  15526. 800637a: e7d9 b.n 8006330 <_printf_float+0x14c>
  15527. 800637c: b913 cbnz r3, 8006384 <_printf_float+0x1a0>
  15528. 800637e: 6822 ldr r2, [r4, #0]
  15529. 8006380: 07d0 lsls r0, r2, #31
  15530. 8006382: d501 bpl.n 8006388 <_printf_float+0x1a4>
  15531. 8006384: 3302 adds r3, #2
  15532. 8006386: e7f3 b.n 8006370 <_printf_float+0x18c>
  15533. 8006388: 2301 movs r3, #1
  15534. 800638a: e7f1 b.n 8006370 <_printf_float+0x18c>
  15535. 800638c: f04f 0867 mov.w r8, #103 ; 0x67
  15536. 8006390: e9dd 320d ldrd r3, r2, [sp, #52] ; 0x34
  15537. 8006394: 4293 cmp r3, r2
  15538. 8006396: db05 blt.n 80063a4 <_printf_float+0x1c0>
  15539. 8006398: 6822 ldr r2, [r4, #0]
  15540. 800639a: 6123 str r3, [r4, #16]
  15541. 800639c: 07d1 lsls r1, r2, #31
  15542. 800639e: d5e8 bpl.n 8006372 <_printf_float+0x18e>
  15543. 80063a0: 3301 adds r3, #1
  15544. 80063a2: e7e5 b.n 8006370 <_printf_float+0x18c>
  15545. 80063a4: 2b00 cmp r3, #0
  15546. 80063a6: bfcc ite gt
  15547. 80063a8: 2301 movgt r3, #1
  15548. 80063aa: f1c3 0302 rsble r3, r3, #2
  15549. 80063ae: 4413 add r3, r2
  15550. 80063b0: e7de b.n 8006370 <_printf_float+0x18c>
  15551. 80063b2: 6823 ldr r3, [r4, #0]
  15552. 80063b4: 055a lsls r2, r3, #21
  15553. 80063b6: d407 bmi.n 80063c8 <_printf_float+0x1e4>
  15554. 80063b8: 6923 ldr r3, [r4, #16]
  15555. 80063ba: 463a mov r2, r7
  15556. 80063bc: 4659 mov r1, fp
  15557. 80063be: 4628 mov r0, r5
  15558. 80063c0: 47b0 blx r6
  15559. 80063c2: 3001 adds r0, #1
  15560. 80063c4: d129 bne.n 800641a <_printf_float+0x236>
  15561. 80063c6: e764 b.n 8006292 <_printf_float+0xae>
  15562. 80063c8: f1b8 0f65 cmp.w r8, #101 ; 0x65
  15563. 80063cc: f240 80d7 bls.w 800657e <_printf_float+0x39a>
  15564. 80063d0: e9d4 0112 ldrd r0, r1, [r4, #72] ; 0x48
  15565. 80063d4: 2200 movs r2, #0
  15566. 80063d6: 2300 movs r3, #0
  15567. 80063d8: f7fa fb46 bl 8000a68 <__aeabi_dcmpeq>
  15568. 80063dc: b388 cbz r0, 8006442 <_printf_float+0x25e>
  15569. 80063de: 2301 movs r3, #1
  15570. 80063e0: 4a40 ldr r2, [pc, #256] ; (80064e4 <_printf_float+0x300>)
  15571. 80063e2: 4659 mov r1, fp
  15572. 80063e4: 4628 mov r0, r5
  15573. 80063e6: 47b0 blx r6
  15574. 80063e8: 3001 adds r0, #1
  15575. 80063ea: f43f af52 beq.w 8006292 <_printf_float+0xae>
  15576. 80063ee: e9dd 230d ldrd r2, r3, [sp, #52] ; 0x34
  15577. 80063f2: 429a cmp r2, r3
  15578. 80063f4: db02 blt.n 80063fc <_printf_float+0x218>
  15579. 80063f6: 6823 ldr r3, [r4, #0]
  15580. 80063f8: 07d8 lsls r0, r3, #31
  15581. 80063fa: d50e bpl.n 800641a <_printf_float+0x236>
  15582. 80063fc: e9dd 2309 ldrd r2, r3, [sp, #36] ; 0x24
  15583. 8006400: 4659 mov r1, fp
  15584. 8006402: 4628 mov r0, r5
  15585. 8006404: 47b0 blx r6
  15586. 8006406: 3001 adds r0, #1
  15587. 8006408: f43f af43 beq.w 8006292 <_printf_float+0xae>
  15588. 800640c: 2700 movs r7, #0
  15589. 800640e: f104 081a add.w r8, r4, #26
  15590. 8006412: 9b0e ldr r3, [sp, #56] ; 0x38
  15591. 8006414: 3b01 subs r3, #1
  15592. 8006416: 42bb cmp r3, r7
  15593. 8006418: dc09 bgt.n 800642e <_printf_float+0x24a>
  15594. 800641a: 6823 ldr r3, [r4, #0]
  15595. 800641c: 079f lsls r7, r3, #30
  15596. 800641e: f100 80fd bmi.w 800661c <_printf_float+0x438>
  15597. 8006422: 68e0 ldr r0, [r4, #12]
  15598. 8006424: 9b0f ldr r3, [sp, #60] ; 0x3c
  15599. 8006426: 4298 cmp r0, r3
  15600. 8006428: bfb8 it lt
  15601. 800642a: 4618 movlt r0, r3
  15602. 800642c: e733 b.n 8006296 <_printf_float+0xb2>
  15603. 800642e: 2301 movs r3, #1
  15604. 8006430: 4642 mov r2, r8
  15605. 8006432: 4659 mov r1, fp
  15606. 8006434: 4628 mov r0, r5
  15607. 8006436: 47b0 blx r6
  15608. 8006438: 3001 adds r0, #1
  15609. 800643a: f43f af2a beq.w 8006292 <_printf_float+0xae>
  15610. 800643e: 3701 adds r7, #1
  15611. 8006440: e7e7 b.n 8006412 <_printf_float+0x22e>
  15612. 8006442: 9b0d ldr r3, [sp, #52] ; 0x34
  15613. 8006444: 2b00 cmp r3, #0
  15614. 8006446: dc2b bgt.n 80064a0 <_printf_float+0x2bc>
  15615. 8006448: 2301 movs r3, #1
  15616. 800644a: 4a26 ldr r2, [pc, #152] ; (80064e4 <_printf_float+0x300>)
  15617. 800644c: 4659 mov r1, fp
  15618. 800644e: 4628 mov r0, r5
  15619. 8006450: 47b0 blx r6
  15620. 8006452: 3001 adds r0, #1
  15621. 8006454: f43f af1d beq.w 8006292 <_printf_float+0xae>
  15622. 8006458: 9b0d ldr r3, [sp, #52] ; 0x34
  15623. 800645a: b923 cbnz r3, 8006466 <_printf_float+0x282>
  15624. 800645c: 9b0e ldr r3, [sp, #56] ; 0x38
  15625. 800645e: b913 cbnz r3, 8006466 <_printf_float+0x282>
  15626. 8006460: 6823 ldr r3, [r4, #0]
  15627. 8006462: 07d9 lsls r1, r3, #31
  15628. 8006464: d5d9 bpl.n 800641a <_printf_float+0x236>
  15629. 8006466: e9dd 2309 ldrd r2, r3, [sp, #36] ; 0x24
  15630. 800646a: 4659 mov r1, fp
  15631. 800646c: 4628 mov r0, r5
  15632. 800646e: 47b0 blx r6
  15633. 8006470: 3001 adds r0, #1
  15634. 8006472: f43f af0e beq.w 8006292 <_printf_float+0xae>
  15635. 8006476: f04f 0800 mov.w r8, #0
  15636. 800647a: f104 091a add.w r9, r4, #26
  15637. 800647e: 9b0d ldr r3, [sp, #52] ; 0x34
  15638. 8006480: 425b negs r3, r3
  15639. 8006482: 4543 cmp r3, r8
  15640. 8006484: dc01 bgt.n 800648a <_printf_float+0x2a6>
  15641. 8006486: 9b0e ldr r3, [sp, #56] ; 0x38
  15642. 8006488: e797 b.n 80063ba <_printf_float+0x1d6>
  15643. 800648a: 2301 movs r3, #1
  15644. 800648c: 464a mov r2, r9
  15645. 800648e: 4659 mov r1, fp
  15646. 8006490: 4628 mov r0, r5
  15647. 8006492: 47b0 blx r6
  15648. 8006494: 3001 adds r0, #1
  15649. 8006496: f43f aefc beq.w 8006292 <_printf_float+0xae>
  15650. 800649a: f108 0801 add.w r8, r8, #1
  15651. 800649e: e7ee b.n 800647e <_printf_float+0x29a>
  15652. 80064a0: 9a0e ldr r2, [sp, #56] ; 0x38
  15653. 80064a2: 6da3 ldr r3, [r4, #88] ; 0x58
  15654. 80064a4: 429a cmp r2, r3
  15655. 80064a6: bfa8 it ge
  15656. 80064a8: 461a movge r2, r3
  15657. 80064aa: 2a00 cmp r2, #0
  15658. 80064ac: 4690 mov r8, r2
  15659. 80064ae: dd07 ble.n 80064c0 <_printf_float+0x2dc>
  15660. 80064b0: 4613 mov r3, r2
  15661. 80064b2: 4659 mov r1, fp
  15662. 80064b4: 463a mov r2, r7
  15663. 80064b6: 4628 mov r0, r5
  15664. 80064b8: 47b0 blx r6
  15665. 80064ba: 3001 adds r0, #1
  15666. 80064bc: f43f aee9 beq.w 8006292 <_printf_float+0xae>
  15667. 80064c0: f104 031a add.w r3, r4, #26
  15668. 80064c4: f04f 0a00 mov.w sl, #0
  15669. 80064c8: ea28 78e8 bic.w r8, r8, r8, asr #31
  15670. 80064cc: 930b str r3, [sp, #44] ; 0x2c
  15671. 80064ce: e015 b.n 80064fc <_printf_float+0x318>
  15672. 80064d0: 7fefffff .word 0x7fefffff
  15673. 80064d4: 08008d0c .word 0x08008d0c
  15674. 80064d8: 08008d08 .word 0x08008d08
  15675. 80064dc: 08008d14 .word 0x08008d14
  15676. 80064e0: 08008d10 .word 0x08008d10
  15677. 80064e4: 08008d18 .word 0x08008d18
  15678. 80064e8: 2301 movs r3, #1
  15679. 80064ea: 9a0b ldr r2, [sp, #44] ; 0x2c
  15680. 80064ec: 4659 mov r1, fp
  15681. 80064ee: 4628 mov r0, r5
  15682. 80064f0: 47b0 blx r6
  15683. 80064f2: 3001 adds r0, #1
  15684. 80064f4: f43f aecd beq.w 8006292 <_printf_float+0xae>
  15685. 80064f8: f10a 0a01 add.w sl, sl, #1
  15686. 80064fc: f8d4 9058 ldr.w r9, [r4, #88] ; 0x58
  15687. 8006500: eba9 0308 sub.w r3, r9, r8
  15688. 8006504: 4553 cmp r3, sl
  15689. 8006506: dcef bgt.n 80064e8 <_printf_float+0x304>
  15690. 8006508: e9dd 230d ldrd r2, r3, [sp, #52] ; 0x34
  15691. 800650c: 429a cmp r2, r3
  15692. 800650e: 444f add r7, r9
  15693. 8006510: db14 blt.n 800653c <_printf_float+0x358>
  15694. 8006512: 6823 ldr r3, [r4, #0]
  15695. 8006514: 07da lsls r2, r3, #31
  15696. 8006516: d411 bmi.n 800653c <_printf_float+0x358>
  15697. 8006518: 9b0e ldr r3, [sp, #56] ; 0x38
  15698. 800651a: 990d ldr r1, [sp, #52] ; 0x34
  15699. 800651c: eba3 0209 sub.w r2, r3, r9
  15700. 8006520: eba3 0901 sub.w r9, r3, r1
  15701. 8006524: 4591 cmp r9, r2
  15702. 8006526: bfa8 it ge
  15703. 8006528: 4691 movge r9, r2
  15704. 800652a: f1b9 0f00 cmp.w r9, #0
  15705. 800652e: dc0d bgt.n 800654c <_printf_float+0x368>
  15706. 8006530: 2700 movs r7, #0
  15707. 8006532: ea29 79e9 bic.w r9, r9, r9, asr #31
  15708. 8006536: f104 081a add.w r8, r4, #26
  15709. 800653a: e018 b.n 800656e <_printf_float+0x38a>
  15710. 800653c: e9dd 2309 ldrd r2, r3, [sp, #36] ; 0x24
  15711. 8006540: 4659 mov r1, fp
  15712. 8006542: 4628 mov r0, r5
  15713. 8006544: 47b0 blx r6
  15714. 8006546: 3001 adds r0, #1
  15715. 8006548: d1e6 bne.n 8006518 <_printf_float+0x334>
  15716. 800654a: e6a2 b.n 8006292 <_printf_float+0xae>
  15717. 800654c: 464b mov r3, r9
  15718. 800654e: 463a mov r2, r7
  15719. 8006550: 4659 mov r1, fp
  15720. 8006552: 4628 mov r0, r5
  15721. 8006554: 47b0 blx r6
  15722. 8006556: 3001 adds r0, #1
  15723. 8006558: d1ea bne.n 8006530 <_printf_float+0x34c>
  15724. 800655a: e69a b.n 8006292 <_printf_float+0xae>
  15725. 800655c: 2301 movs r3, #1
  15726. 800655e: 4642 mov r2, r8
  15727. 8006560: 4659 mov r1, fp
  15728. 8006562: 4628 mov r0, r5
  15729. 8006564: 47b0 blx r6
  15730. 8006566: 3001 adds r0, #1
  15731. 8006568: f43f ae93 beq.w 8006292 <_printf_float+0xae>
  15732. 800656c: 3701 adds r7, #1
  15733. 800656e: e9dd 230d ldrd r2, r3, [sp, #52] ; 0x34
  15734. 8006572: 1a9b subs r3, r3, r2
  15735. 8006574: eba3 0309 sub.w r3, r3, r9
  15736. 8006578: 42bb cmp r3, r7
  15737. 800657a: dcef bgt.n 800655c <_printf_float+0x378>
  15738. 800657c: e74d b.n 800641a <_printf_float+0x236>
  15739. 800657e: 9a0e ldr r2, [sp, #56] ; 0x38
  15740. 8006580: 2a01 cmp r2, #1
  15741. 8006582: dc01 bgt.n 8006588 <_printf_float+0x3a4>
  15742. 8006584: 07db lsls r3, r3, #31
  15743. 8006586: d538 bpl.n 80065fa <_printf_float+0x416>
  15744. 8006588: 2301 movs r3, #1
  15745. 800658a: 463a mov r2, r7
  15746. 800658c: 4659 mov r1, fp
  15747. 800658e: 4628 mov r0, r5
  15748. 8006590: 47b0 blx r6
  15749. 8006592: 3001 adds r0, #1
  15750. 8006594: f43f ae7d beq.w 8006292 <_printf_float+0xae>
  15751. 8006598: e9dd 2309 ldrd r2, r3, [sp, #36] ; 0x24
  15752. 800659c: 4659 mov r1, fp
  15753. 800659e: 4628 mov r0, r5
  15754. 80065a0: 47b0 blx r6
  15755. 80065a2: 3001 adds r0, #1
  15756. 80065a4: f107 0701 add.w r7, r7, #1
  15757. 80065a8: f43f ae73 beq.w 8006292 <_printf_float+0xae>
  15758. 80065ac: e9d4 0112 ldrd r0, r1, [r4, #72] ; 0x48
  15759. 80065b0: 9b0e ldr r3, [sp, #56] ; 0x38
  15760. 80065b2: 2200 movs r2, #0
  15761. 80065b4: f103 38ff add.w r8, r3, #4294967295
  15762. 80065b8: 2300 movs r3, #0
  15763. 80065ba: f7fa fa55 bl 8000a68 <__aeabi_dcmpeq>
  15764. 80065be: b9c0 cbnz r0, 80065f2 <_printf_float+0x40e>
  15765. 80065c0: 4643 mov r3, r8
  15766. 80065c2: 463a mov r2, r7
  15767. 80065c4: 4659 mov r1, fp
  15768. 80065c6: 4628 mov r0, r5
  15769. 80065c8: 47b0 blx r6
  15770. 80065ca: 3001 adds r0, #1
  15771. 80065cc: d10d bne.n 80065ea <_printf_float+0x406>
  15772. 80065ce: e660 b.n 8006292 <_printf_float+0xae>
  15773. 80065d0: 2301 movs r3, #1
  15774. 80065d2: 4642 mov r2, r8
  15775. 80065d4: 4659 mov r1, fp
  15776. 80065d6: 4628 mov r0, r5
  15777. 80065d8: 47b0 blx r6
  15778. 80065da: 3001 adds r0, #1
  15779. 80065dc: f43f ae59 beq.w 8006292 <_printf_float+0xae>
  15780. 80065e0: 3701 adds r7, #1
  15781. 80065e2: 9b0e ldr r3, [sp, #56] ; 0x38
  15782. 80065e4: 3b01 subs r3, #1
  15783. 80065e6: 42bb cmp r3, r7
  15784. 80065e8: dcf2 bgt.n 80065d0 <_printf_float+0x3ec>
  15785. 80065ea: 464b mov r3, r9
  15786. 80065ec: f104 0250 add.w r2, r4, #80 ; 0x50
  15787. 80065f0: e6e4 b.n 80063bc <_printf_float+0x1d8>
  15788. 80065f2: 2700 movs r7, #0
  15789. 80065f4: f104 081a add.w r8, r4, #26
  15790. 80065f8: e7f3 b.n 80065e2 <_printf_float+0x3fe>
  15791. 80065fa: 2301 movs r3, #1
  15792. 80065fc: e7e1 b.n 80065c2 <_printf_float+0x3de>
  15793. 80065fe: 2301 movs r3, #1
  15794. 8006600: 4642 mov r2, r8
  15795. 8006602: 4659 mov r1, fp
  15796. 8006604: 4628 mov r0, r5
  15797. 8006606: 47b0 blx r6
  15798. 8006608: 3001 adds r0, #1
  15799. 800660a: f43f ae42 beq.w 8006292 <_printf_float+0xae>
  15800. 800660e: 3701 adds r7, #1
  15801. 8006610: 68e3 ldr r3, [r4, #12]
  15802. 8006612: 9a0f ldr r2, [sp, #60] ; 0x3c
  15803. 8006614: 1a9b subs r3, r3, r2
  15804. 8006616: 42bb cmp r3, r7
  15805. 8006618: dcf1 bgt.n 80065fe <_printf_float+0x41a>
  15806. 800661a: e702 b.n 8006422 <_printf_float+0x23e>
  15807. 800661c: 2700 movs r7, #0
  15808. 800661e: f104 0819 add.w r8, r4, #25
  15809. 8006622: e7f5 b.n 8006610 <_printf_float+0x42c>
  15810. 8006624: 2b00 cmp r3, #0
  15811. 8006626: f43f ae94 beq.w 8006352 <_printf_float+0x16e>
  15812. 800662a: f04f 0c00 mov.w ip, #0
  15813. 800662e: e9cd 1c05 strd r1, ip, [sp, #20]
  15814. 8006632: f10d 0133 add.w r1, sp, #51 ; 0x33
  15815. 8006636: 6022 str r2, [r4, #0]
  15816. 8006638: e9cd 0803 strd r0, r8, [sp, #12]
  15817. 800663c: e9cd 2101 strd r2, r1, [sp, #4]
  15818. 8006640: 9300 str r3, [sp, #0]
  15819. 8006642: 463a mov r2, r7
  15820. 8006644: 464b mov r3, r9
  15821. 8006646: 4628 mov r0, r5
  15822. 8006648: f7ff fd3a bl 80060c0 <__cvt>
  15823. 800664c: 4607 mov r7, r0
  15824. 800664e: e64f b.n 80062f0 <_printf_float+0x10c>
  15825. 08006650 <_printf_common>:
  15826. 8006650: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
  15827. 8006654: 4691 mov r9, r2
  15828. 8006656: 461f mov r7, r3
  15829. 8006658: 688a ldr r2, [r1, #8]
  15830. 800665a: 690b ldr r3, [r1, #16]
  15831. 800665c: 4606 mov r6, r0
  15832. 800665e: 4293 cmp r3, r2
  15833. 8006660: bfb8 it lt
  15834. 8006662: 4613 movlt r3, r2
  15835. 8006664: f8c9 3000 str.w r3, [r9]
  15836. 8006668: f891 2043 ldrb.w r2, [r1, #67] ; 0x43
  15837. 800666c: 460c mov r4, r1
  15838. 800666e: f8dd 8020 ldr.w r8, [sp, #32]
  15839. 8006672: b112 cbz r2, 800667a <_printf_common+0x2a>
  15840. 8006674: 3301 adds r3, #1
  15841. 8006676: f8c9 3000 str.w r3, [r9]
  15842. 800667a: 6823 ldr r3, [r4, #0]
  15843. 800667c: 0699 lsls r1, r3, #26
  15844. 800667e: bf42 ittt mi
  15845. 8006680: f8d9 3000 ldrmi.w r3, [r9]
  15846. 8006684: 3302 addmi r3, #2
  15847. 8006686: f8c9 3000 strmi.w r3, [r9]
  15848. 800668a: 6825 ldr r5, [r4, #0]
  15849. 800668c: f015 0506 ands.w r5, r5, #6
  15850. 8006690: d107 bne.n 80066a2 <_printf_common+0x52>
  15851. 8006692: f104 0a19 add.w sl, r4, #25
  15852. 8006696: 68e3 ldr r3, [r4, #12]
  15853. 8006698: f8d9 2000 ldr.w r2, [r9]
  15854. 800669c: 1a9b subs r3, r3, r2
  15855. 800669e: 42ab cmp r3, r5
  15856. 80066a0: dc29 bgt.n 80066f6 <_printf_common+0xa6>
  15857. 80066a2: f894 3043 ldrb.w r3, [r4, #67] ; 0x43
  15858. 80066a6: 6822 ldr r2, [r4, #0]
  15859. 80066a8: 3300 adds r3, #0
  15860. 80066aa: bf18 it ne
  15861. 80066ac: 2301 movne r3, #1
  15862. 80066ae: 0692 lsls r2, r2, #26
  15863. 80066b0: d42e bmi.n 8006710 <_printf_common+0xc0>
  15864. 80066b2: f104 0243 add.w r2, r4, #67 ; 0x43
  15865. 80066b6: 4639 mov r1, r7
  15866. 80066b8: 4630 mov r0, r6
  15867. 80066ba: 47c0 blx r8
  15868. 80066bc: 3001 adds r0, #1
  15869. 80066be: d021 beq.n 8006704 <_printf_common+0xb4>
  15870. 80066c0: 6823 ldr r3, [r4, #0]
  15871. 80066c2: 68e5 ldr r5, [r4, #12]
  15872. 80066c4: f003 0306 and.w r3, r3, #6
  15873. 80066c8: 2b04 cmp r3, #4
  15874. 80066ca: bf18 it ne
  15875. 80066cc: 2500 movne r5, #0
  15876. 80066ce: f8d9 2000 ldr.w r2, [r9]
  15877. 80066d2: f04f 0900 mov.w r9, #0
  15878. 80066d6: bf08 it eq
  15879. 80066d8: 1aad subeq r5, r5, r2
  15880. 80066da: 68a3 ldr r3, [r4, #8]
  15881. 80066dc: 6922 ldr r2, [r4, #16]
  15882. 80066de: bf08 it eq
  15883. 80066e0: ea25 75e5 biceq.w r5, r5, r5, asr #31
  15884. 80066e4: 4293 cmp r3, r2
  15885. 80066e6: bfc4 itt gt
  15886. 80066e8: 1a9b subgt r3, r3, r2
  15887. 80066ea: 18ed addgt r5, r5, r3
  15888. 80066ec: 341a adds r4, #26
  15889. 80066ee: 454d cmp r5, r9
  15890. 80066f0: d11a bne.n 8006728 <_printf_common+0xd8>
  15891. 80066f2: 2000 movs r0, #0
  15892. 80066f4: e008 b.n 8006708 <_printf_common+0xb8>
  15893. 80066f6: 2301 movs r3, #1
  15894. 80066f8: 4652 mov r2, sl
  15895. 80066fa: 4639 mov r1, r7
  15896. 80066fc: 4630 mov r0, r6
  15897. 80066fe: 47c0 blx r8
  15898. 8006700: 3001 adds r0, #1
  15899. 8006702: d103 bne.n 800670c <_printf_common+0xbc>
  15900. 8006704: f04f 30ff mov.w r0, #4294967295
  15901. 8006708: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  15902. 800670c: 3501 adds r5, #1
  15903. 800670e: e7c2 b.n 8006696 <_printf_common+0x46>
  15904. 8006710: 2030 movs r0, #48 ; 0x30
  15905. 8006712: 18e1 adds r1, r4, r3
  15906. 8006714: f881 0043 strb.w r0, [r1, #67] ; 0x43
  15907. 8006718: 1c5a adds r2, r3, #1
  15908. 800671a: f894 1045 ldrb.w r1, [r4, #69] ; 0x45
  15909. 800671e: 4422 add r2, r4
  15910. 8006720: 3302 adds r3, #2
  15911. 8006722: f882 1043 strb.w r1, [r2, #67] ; 0x43
  15912. 8006726: e7c4 b.n 80066b2 <_printf_common+0x62>
  15913. 8006728: 2301 movs r3, #1
  15914. 800672a: 4622 mov r2, r4
  15915. 800672c: 4639 mov r1, r7
  15916. 800672e: 4630 mov r0, r6
  15917. 8006730: 47c0 blx r8
  15918. 8006732: 3001 adds r0, #1
  15919. 8006734: d0e6 beq.n 8006704 <_printf_common+0xb4>
  15920. 8006736: f109 0901 add.w r9, r9, #1
  15921. 800673a: e7d8 b.n 80066ee <_printf_common+0x9e>
  15922. 0800673c <_printf_i>:
  15923. 800673c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
  15924. 8006740: f101 0c43 add.w ip, r1, #67 ; 0x43
  15925. 8006744: 460c mov r4, r1
  15926. 8006746: 7e09 ldrb r1, [r1, #24]
  15927. 8006748: b085 sub sp, #20
  15928. 800674a: 296e cmp r1, #110 ; 0x6e
  15929. 800674c: 4617 mov r7, r2
  15930. 800674e: 4606 mov r6, r0
  15931. 8006750: 4698 mov r8, r3
  15932. 8006752: 9a0c ldr r2, [sp, #48] ; 0x30
  15933. 8006754: f000 80b3 beq.w 80068be <_printf_i+0x182>
  15934. 8006758: d822 bhi.n 80067a0 <_printf_i+0x64>
  15935. 800675a: 2963 cmp r1, #99 ; 0x63
  15936. 800675c: d036 beq.n 80067cc <_printf_i+0x90>
  15937. 800675e: d80a bhi.n 8006776 <_printf_i+0x3a>
  15938. 8006760: 2900 cmp r1, #0
  15939. 8006762: f000 80b9 beq.w 80068d8 <_printf_i+0x19c>
  15940. 8006766: 2958 cmp r1, #88 ; 0x58
  15941. 8006768: f000 8083 beq.w 8006872 <_printf_i+0x136>
  15942. 800676c: f104 0542 add.w r5, r4, #66 ; 0x42
  15943. 8006770: f884 1042 strb.w r1, [r4, #66] ; 0x42
  15944. 8006774: e032 b.n 80067dc <_printf_i+0xa0>
  15945. 8006776: 2964 cmp r1, #100 ; 0x64
  15946. 8006778: d001 beq.n 800677e <_printf_i+0x42>
  15947. 800677a: 2969 cmp r1, #105 ; 0x69
  15948. 800677c: d1f6 bne.n 800676c <_printf_i+0x30>
  15949. 800677e: 6820 ldr r0, [r4, #0]
  15950. 8006780: 6813 ldr r3, [r2, #0]
  15951. 8006782: 0605 lsls r5, r0, #24
  15952. 8006784: f103 0104 add.w r1, r3, #4
  15953. 8006788: d52a bpl.n 80067e0 <_printf_i+0xa4>
  15954. 800678a: 681b ldr r3, [r3, #0]
  15955. 800678c: 6011 str r1, [r2, #0]
  15956. 800678e: 2b00 cmp r3, #0
  15957. 8006790: da03 bge.n 800679a <_printf_i+0x5e>
  15958. 8006792: 222d movs r2, #45 ; 0x2d
  15959. 8006794: 425b negs r3, r3
  15960. 8006796: f884 2043 strb.w r2, [r4, #67] ; 0x43
  15961. 800679a: 486f ldr r0, [pc, #444] ; (8006958 <_printf_i+0x21c>)
  15962. 800679c: 220a movs r2, #10
  15963. 800679e: e039 b.n 8006814 <_printf_i+0xd8>
  15964. 80067a0: 2973 cmp r1, #115 ; 0x73
  15965. 80067a2: f000 809d beq.w 80068e0 <_printf_i+0x1a4>
  15966. 80067a6: d808 bhi.n 80067ba <_printf_i+0x7e>
  15967. 80067a8: 296f cmp r1, #111 ; 0x6f
  15968. 80067aa: d020 beq.n 80067ee <_printf_i+0xb2>
  15969. 80067ac: 2970 cmp r1, #112 ; 0x70
  15970. 80067ae: d1dd bne.n 800676c <_printf_i+0x30>
  15971. 80067b0: 6823 ldr r3, [r4, #0]
  15972. 80067b2: f043 0320 orr.w r3, r3, #32
  15973. 80067b6: 6023 str r3, [r4, #0]
  15974. 80067b8: e003 b.n 80067c2 <_printf_i+0x86>
  15975. 80067ba: 2975 cmp r1, #117 ; 0x75
  15976. 80067bc: d017 beq.n 80067ee <_printf_i+0xb2>
  15977. 80067be: 2978 cmp r1, #120 ; 0x78
  15978. 80067c0: d1d4 bne.n 800676c <_printf_i+0x30>
  15979. 80067c2: 2378 movs r3, #120 ; 0x78
  15980. 80067c4: 4865 ldr r0, [pc, #404] ; (800695c <_printf_i+0x220>)
  15981. 80067c6: f884 3045 strb.w r3, [r4, #69] ; 0x45
  15982. 80067ca: e055 b.n 8006878 <_printf_i+0x13c>
  15983. 80067cc: 6813 ldr r3, [r2, #0]
  15984. 80067ce: f104 0542 add.w r5, r4, #66 ; 0x42
  15985. 80067d2: 1d19 adds r1, r3, #4
  15986. 80067d4: 681b ldr r3, [r3, #0]
  15987. 80067d6: 6011 str r1, [r2, #0]
  15988. 80067d8: f884 3042 strb.w r3, [r4, #66] ; 0x42
  15989. 80067dc: 2301 movs r3, #1
  15990. 80067de: e08c b.n 80068fa <_printf_i+0x1be>
  15991. 80067e0: 681b ldr r3, [r3, #0]
  15992. 80067e2: f010 0f40 tst.w r0, #64 ; 0x40
  15993. 80067e6: 6011 str r1, [r2, #0]
  15994. 80067e8: bf18 it ne
  15995. 80067ea: b21b sxthne r3, r3
  15996. 80067ec: e7cf b.n 800678e <_printf_i+0x52>
  15997. 80067ee: 6813 ldr r3, [r2, #0]
  15998. 80067f0: 6825 ldr r5, [r4, #0]
  15999. 80067f2: 1d18 adds r0, r3, #4
  16000. 80067f4: 6010 str r0, [r2, #0]
  16001. 80067f6: 0628 lsls r0, r5, #24
  16002. 80067f8: d501 bpl.n 80067fe <_printf_i+0xc2>
  16003. 80067fa: 681b ldr r3, [r3, #0]
  16004. 80067fc: e002 b.n 8006804 <_printf_i+0xc8>
  16005. 80067fe: 0668 lsls r0, r5, #25
  16006. 8006800: d5fb bpl.n 80067fa <_printf_i+0xbe>
  16007. 8006802: 881b ldrh r3, [r3, #0]
  16008. 8006804: 296f cmp r1, #111 ; 0x6f
  16009. 8006806: bf14 ite ne
  16010. 8006808: 220a movne r2, #10
  16011. 800680a: 2208 moveq r2, #8
  16012. 800680c: 4852 ldr r0, [pc, #328] ; (8006958 <_printf_i+0x21c>)
  16013. 800680e: 2100 movs r1, #0
  16014. 8006810: f884 1043 strb.w r1, [r4, #67] ; 0x43
  16015. 8006814: 6865 ldr r5, [r4, #4]
  16016. 8006816: 2d00 cmp r5, #0
  16017. 8006818: 60a5 str r5, [r4, #8]
  16018. 800681a: f2c0 8095 blt.w 8006948 <_printf_i+0x20c>
  16019. 800681e: 6821 ldr r1, [r4, #0]
  16020. 8006820: f021 0104 bic.w r1, r1, #4
  16021. 8006824: 6021 str r1, [r4, #0]
  16022. 8006826: 2b00 cmp r3, #0
  16023. 8006828: d13d bne.n 80068a6 <_printf_i+0x16a>
  16024. 800682a: 2d00 cmp r5, #0
  16025. 800682c: f040 808e bne.w 800694c <_printf_i+0x210>
  16026. 8006830: 4665 mov r5, ip
  16027. 8006832: 2a08 cmp r2, #8
  16028. 8006834: d10b bne.n 800684e <_printf_i+0x112>
  16029. 8006836: 6823 ldr r3, [r4, #0]
  16030. 8006838: 07db lsls r3, r3, #31
  16031. 800683a: d508 bpl.n 800684e <_printf_i+0x112>
  16032. 800683c: 6923 ldr r3, [r4, #16]
  16033. 800683e: 6862 ldr r2, [r4, #4]
  16034. 8006840: 429a cmp r2, r3
  16035. 8006842: bfde ittt le
  16036. 8006844: 2330 movle r3, #48 ; 0x30
  16037. 8006846: f805 3c01 strble.w r3, [r5, #-1]
  16038. 800684a: f105 35ff addle.w r5, r5, #4294967295
  16039. 800684e: ebac 0305 sub.w r3, ip, r5
  16040. 8006852: 6123 str r3, [r4, #16]
  16041. 8006854: f8cd 8000 str.w r8, [sp]
  16042. 8006858: 463b mov r3, r7
  16043. 800685a: aa03 add r2, sp, #12
  16044. 800685c: 4621 mov r1, r4
  16045. 800685e: 4630 mov r0, r6
  16046. 8006860: f7ff fef6 bl 8006650 <_printf_common>
  16047. 8006864: 3001 adds r0, #1
  16048. 8006866: d14d bne.n 8006904 <_printf_i+0x1c8>
  16049. 8006868: f04f 30ff mov.w r0, #4294967295
  16050. 800686c: b005 add sp, #20
  16051. 800686e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
  16052. 8006872: 4839 ldr r0, [pc, #228] ; (8006958 <_printf_i+0x21c>)
  16053. 8006874: f884 1045 strb.w r1, [r4, #69] ; 0x45
  16054. 8006878: 6813 ldr r3, [r2, #0]
  16055. 800687a: 6821 ldr r1, [r4, #0]
  16056. 800687c: 1d1d adds r5, r3, #4
  16057. 800687e: 681b ldr r3, [r3, #0]
  16058. 8006880: 6015 str r5, [r2, #0]
  16059. 8006882: 060a lsls r2, r1, #24
  16060. 8006884: d50b bpl.n 800689e <_printf_i+0x162>
  16061. 8006886: 07ca lsls r2, r1, #31
  16062. 8006888: bf44 itt mi
  16063. 800688a: f041 0120 orrmi.w r1, r1, #32
  16064. 800688e: 6021 strmi r1, [r4, #0]
  16065. 8006890: b91b cbnz r3, 800689a <_printf_i+0x15e>
  16066. 8006892: 6822 ldr r2, [r4, #0]
  16067. 8006894: f022 0220 bic.w r2, r2, #32
  16068. 8006898: 6022 str r2, [r4, #0]
  16069. 800689a: 2210 movs r2, #16
  16070. 800689c: e7b7 b.n 800680e <_printf_i+0xd2>
  16071. 800689e: 064d lsls r5, r1, #25
  16072. 80068a0: bf48 it mi
  16073. 80068a2: b29b uxthmi r3, r3
  16074. 80068a4: e7ef b.n 8006886 <_printf_i+0x14a>
  16075. 80068a6: 4665 mov r5, ip
  16076. 80068a8: fbb3 f1f2 udiv r1, r3, r2
  16077. 80068ac: fb02 3311 mls r3, r2, r1, r3
  16078. 80068b0: 5cc3 ldrb r3, [r0, r3]
  16079. 80068b2: f805 3d01 strb.w r3, [r5, #-1]!
  16080. 80068b6: 460b mov r3, r1
  16081. 80068b8: 2900 cmp r1, #0
  16082. 80068ba: d1f5 bne.n 80068a8 <_printf_i+0x16c>
  16083. 80068bc: e7b9 b.n 8006832 <_printf_i+0xf6>
  16084. 80068be: 6813 ldr r3, [r2, #0]
  16085. 80068c0: 6825 ldr r5, [r4, #0]
  16086. 80068c2: 1d18 adds r0, r3, #4
  16087. 80068c4: 6961 ldr r1, [r4, #20]
  16088. 80068c6: 6010 str r0, [r2, #0]
  16089. 80068c8: 0628 lsls r0, r5, #24
  16090. 80068ca: 681b ldr r3, [r3, #0]
  16091. 80068cc: d501 bpl.n 80068d2 <_printf_i+0x196>
  16092. 80068ce: 6019 str r1, [r3, #0]
  16093. 80068d0: e002 b.n 80068d8 <_printf_i+0x19c>
  16094. 80068d2: 066a lsls r2, r5, #25
  16095. 80068d4: d5fb bpl.n 80068ce <_printf_i+0x192>
  16096. 80068d6: 8019 strh r1, [r3, #0]
  16097. 80068d8: 2300 movs r3, #0
  16098. 80068da: 4665 mov r5, ip
  16099. 80068dc: 6123 str r3, [r4, #16]
  16100. 80068de: e7b9 b.n 8006854 <_printf_i+0x118>
  16101. 80068e0: 6813 ldr r3, [r2, #0]
  16102. 80068e2: 1d19 adds r1, r3, #4
  16103. 80068e4: 6011 str r1, [r2, #0]
  16104. 80068e6: 681d ldr r5, [r3, #0]
  16105. 80068e8: 6862 ldr r2, [r4, #4]
  16106. 80068ea: 2100 movs r1, #0
  16107. 80068ec: 4628 mov r0, r5
  16108. 80068ee: f001 fa5f bl 8007db0 <memchr>
  16109. 80068f2: b108 cbz r0, 80068f8 <_printf_i+0x1bc>
  16110. 80068f4: 1b40 subs r0, r0, r5
  16111. 80068f6: 6060 str r0, [r4, #4]
  16112. 80068f8: 6863 ldr r3, [r4, #4]
  16113. 80068fa: 6123 str r3, [r4, #16]
  16114. 80068fc: 2300 movs r3, #0
  16115. 80068fe: f884 3043 strb.w r3, [r4, #67] ; 0x43
  16116. 8006902: e7a7 b.n 8006854 <_printf_i+0x118>
  16117. 8006904: 6923 ldr r3, [r4, #16]
  16118. 8006906: 462a mov r2, r5
  16119. 8006908: 4639 mov r1, r7
  16120. 800690a: 4630 mov r0, r6
  16121. 800690c: 47c0 blx r8
  16122. 800690e: 3001 adds r0, #1
  16123. 8006910: d0aa beq.n 8006868 <_printf_i+0x12c>
  16124. 8006912: 6823 ldr r3, [r4, #0]
  16125. 8006914: 079b lsls r3, r3, #30
  16126. 8006916: d413 bmi.n 8006940 <_printf_i+0x204>
  16127. 8006918: 68e0 ldr r0, [r4, #12]
  16128. 800691a: 9b03 ldr r3, [sp, #12]
  16129. 800691c: 4298 cmp r0, r3
  16130. 800691e: bfb8 it lt
  16131. 8006920: 4618 movlt r0, r3
  16132. 8006922: e7a3 b.n 800686c <_printf_i+0x130>
  16133. 8006924: 2301 movs r3, #1
  16134. 8006926: 464a mov r2, r9
  16135. 8006928: 4639 mov r1, r7
  16136. 800692a: 4630 mov r0, r6
  16137. 800692c: 47c0 blx r8
  16138. 800692e: 3001 adds r0, #1
  16139. 8006930: d09a beq.n 8006868 <_printf_i+0x12c>
  16140. 8006932: 3501 adds r5, #1
  16141. 8006934: 68e3 ldr r3, [r4, #12]
  16142. 8006936: 9a03 ldr r2, [sp, #12]
  16143. 8006938: 1a9b subs r3, r3, r2
  16144. 800693a: 42ab cmp r3, r5
  16145. 800693c: dcf2 bgt.n 8006924 <_printf_i+0x1e8>
  16146. 800693e: e7eb b.n 8006918 <_printf_i+0x1dc>
  16147. 8006940: 2500 movs r5, #0
  16148. 8006942: f104 0919 add.w r9, r4, #25
  16149. 8006946: e7f5 b.n 8006934 <_printf_i+0x1f8>
  16150. 8006948: 2b00 cmp r3, #0
  16151. 800694a: d1ac bne.n 80068a6 <_printf_i+0x16a>
  16152. 800694c: 7803 ldrb r3, [r0, #0]
  16153. 800694e: f104 0542 add.w r5, r4, #66 ; 0x42
  16154. 8006952: f884 3042 strb.w r3, [r4, #66] ; 0x42
  16155. 8006956: e76c b.n 8006832 <_printf_i+0xf6>
  16156. 8006958: 08008d1a .word 0x08008d1a
  16157. 800695c: 08008d2b .word 0x08008d2b
  16158. 08006960 <iprintf>:
  16159. 8006960: b40f push {r0, r1, r2, r3}
  16160. 8006962: 4b0a ldr r3, [pc, #40] ; (800698c <iprintf+0x2c>)
  16161. 8006964: b513 push {r0, r1, r4, lr}
  16162. 8006966: 681c ldr r4, [r3, #0]
  16163. 8006968: b124 cbz r4, 8006974 <iprintf+0x14>
  16164. 800696a: 69a3 ldr r3, [r4, #24]
  16165. 800696c: b913 cbnz r3, 8006974 <iprintf+0x14>
  16166. 800696e: 4620 mov r0, r4
  16167. 8006970: f001 f91a bl 8007ba8 <__sinit>
  16168. 8006974: ab05 add r3, sp, #20
  16169. 8006976: 9a04 ldr r2, [sp, #16]
  16170. 8006978: 68a1 ldr r1, [r4, #8]
  16171. 800697a: 4620 mov r0, r4
  16172. 800697c: 9301 str r3, [sp, #4]
  16173. 800697e: f001 fde9 bl 8008554 <_vfiprintf_r>
  16174. 8006982: b002 add sp, #8
  16175. 8006984: e8bd 4010 ldmia.w sp!, {r4, lr}
  16176. 8006988: b004 add sp, #16
  16177. 800698a: 4770 bx lr
  16178. 800698c: 2000000c .word 0x2000000c
  16179. 08006990 <_puts_r>:
  16180. 8006990: b570 push {r4, r5, r6, lr}
  16181. 8006992: 460e mov r6, r1
  16182. 8006994: 4605 mov r5, r0
  16183. 8006996: b118 cbz r0, 80069a0 <_puts_r+0x10>
  16184. 8006998: 6983 ldr r3, [r0, #24]
  16185. 800699a: b90b cbnz r3, 80069a0 <_puts_r+0x10>
  16186. 800699c: f001 f904 bl 8007ba8 <__sinit>
  16187. 80069a0: 69ab ldr r3, [r5, #24]
  16188. 80069a2: 68ac ldr r4, [r5, #8]
  16189. 80069a4: b913 cbnz r3, 80069ac <_puts_r+0x1c>
  16190. 80069a6: 4628 mov r0, r5
  16191. 80069a8: f001 f8fe bl 8007ba8 <__sinit>
  16192. 80069ac: 4b23 ldr r3, [pc, #140] ; (8006a3c <_puts_r+0xac>)
  16193. 80069ae: 429c cmp r4, r3
  16194. 80069b0: d117 bne.n 80069e2 <_puts_r+0x52>
  16195. 80069b2: 686c ldr r4, [r5, #4]
  16196. 80069b4: 89a3 ldrh r3, [r4, #12]
  16197. 80069b6: 071b lsls r3, r3, #28
  16198. 80069b8: d51d bpl.n 80069f6 <_puts_r+0x66>
  16199. 80069ba: 6923 ldr r3, [r4, #16]
  16200. 80069bc: b1db cbz r3, 80069f6 <_puts_r+0x66>
  16201. 80069be: 3e01 subs r6, #1
  16202. 80069c0: 68a3 ldr r3, [r4, #8]
  16203. 80069c2: f816 1f01 ldrb.w r1, [r6, #1]!
  16204. 80069c6: 3b01 subs r3, #1
  16205. 80069c8: 60a3 str r3, [r4, #8]
  16206. 80069ca: b9e9 cbnz r1, 8006a08 <_puts_r+0x78>
  16207. 80069cc: 2b00 cmp r3, #0
  16208. 80069ce: da2e bge.n 8006a2e <_puts_r+0x9e>
  16209. 80069d0: 4622 mov r2, r4
  16210. 80069d2: 210a movs r1, #10
  16211. 80069d4: 4628 mov r0, r5
  16212. 80069d6: f000 f8f5 bl 8006bc4 <__swbuf_r>
  16213. 80069da: 3001 adds r0, #1
  16214. 80069dc: d011 beq.n 8006a02 <_puts_r+0x72>
  16215. 80069de: 200a movs r0, #10
  16216. 80069e0: e011 b.n 8006a06 <_puts_r+0x76>
  16217. 80069e2: 4b17 ldr r3, [pc, #92] ; (8006a40 <_puts_r+0xb0>)
  16218. 80069e4: 429c cmp r4, r3
  16219. 80069e6: d101 bne.n 80069ec <_puts_r+0x5c>
  16220. 80069e8: 68ac ldr r4, [r5, #8]
  16221. 80069ea: e7e3 b.n 80069b4 <_puts_r+0x24>
  16222. 80069ec: 4b15 ldr r3, [pc, #84] ; (8006a44 <_puts_r+0xb4>)
  16223. 80069ee: 429c cmp r4, r3
  16224. 80069f0: bf08 it eq
  16225. 80069f2: 68ec ldreq r4, [r5, #12]
  16226. 80069f4: e7de b.n 80069b4 <_puts_r+0x24>
  16227. 80069f6: 4621 mov r1, r4
  16228. 80069f8: 4628 mov r0, r5
  16229. 80069fa: f000 f935 bl 8006c68 <__swsetup_r>
  16230. 80069fe: 2800 cmp r0, #0
  16231. 8006a00: d0dd beq.n 80069be <_puts_r+0x2e>
  16232. 8006a02: f04f 30ff mov.w r0, #4294967295
  16233. 8006a06: bd70 pop {r4, r5, r6, pc}
  16234. 8006a08: 2b00 cmp r3, #0
  16235. 8006a0a: da04 bge.n 8006a16 <_puts_r+0x86>
  16236. 8006a0c: 69a2 ldr r2, [r4, #24]
  16237. 8006a0e: 429a cmp r2, r3
  16238. 8006a10: dc06 bgt.n 8006a20 <_puts_r+0x90>
  16239. 8006a12: 290a cmp r1, #10
  16240. 8006a14: d004 beq.n 8006a20 <_puts_r+0x90>
  16241. 8006a16: 6823 ldr r3, [r4, #0]
  16242. 8006a18: 1c5a adds r2, r3, #1
  16243. 8006a1a: 6022 str r2, [r4, #0]
  16244. 8006a1c: 7019 strb r1, [r3, #0]
  16245. 8006a1e: e7cf b.n 80069c0 <_puts_r+0x30>
  16246. 8006a20: 4622 mov r2, r4
  16247. 8006a22: 4628 mov r0, r5
  16248. 8006a24: f000 f8ce bl 8006bc4 <__swbuf_r>
  16249. 8006a28: 3001 adds r0, #1
  16250. 8006a2a: d1c9 bne.n 80069c0 <_puts_r+0x30>
  16251. 8006a2c: e7e9 b.n 8006a02 <_puts_r+0x72>
  16252. 8006a2e: 200a movs r0, #10
  16253. 8006a30: 6823 ldr r3, [r4, #0]
  16254. 8006a32: 1c5a adds r2, r3, #1
  16255. 8006a34: 6022 str r2, [r4, #0]
  16256. 8006a36: 7018 strb r0, [r3, #0]
  16257. 8006a38: e7e5 b.n 8006a06 <_puts_r+0x76>
  16258. 8006a3a: bf00 nop
  16259. 8006a3c: 08008d6c .word 0x08008d6c
  16260. 8006a40: 08008d8c .word 0x08008d8c
  16261. 8006a44: 08008d4c .word 0x08008d4c
  16262. 08006a48 <puts>:
  16263. 8006a48: 4b02 ldr r3, [pc, #8] ; (8006a54 <puts+0xc>)
  16264. 8006a4a: 4601 mov r1, r0
  16265. 8006a4c: 6818 ldr r0, [r3, #0]
  16266. 8006a4e: f7ff bf9f b.w 8006990 <_puts_r>
  16267. 8006a52: bf00 nop
  16268. 8006a54: 2000000c .word 0x2000000c
  16269. 08006a58 <setbuf>:
  16270. 8006a58: 2900 cmp r1, #0
  16271. 8006a5a: f44f 6380 mov.w r3, #1024 ; 0x400
  16272. 8006a5e: bf0c ite eq
  16273. 8006a60: 2202 moveq r2, #2
  16274. 8006a62: 2200 movne r2, #0
  16275. 8006a64: f000 b800 b.w 8006a68 <setvbuf>
  16276. 08006a68 <setvbuf>:
  16277. 8006a68: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr}
  16278. 8006a6c: 461d mov r5, r3
  16279. 8006a6e: 4b51 ldr r3, [pc, #324] ; (8006bb4 <setvbuf+0x14c>)
  16280. 8006a70: 4604 mov r4, r0
  16281. 8006a72: 681e ldr r6, [r3, #0]
  16282. 8006a74: 460f mov r7, r1
  16283. 8006a76: 4690 mov r8, r2
  16284. 8006a78: b126 cbz r6, 8006a84 <setvbuf+0x1c>
  16285. 8006a7a: 69b3 ldr r3, [r6, #24]
  16286. 8006a7c: b913 cbnz r3, 8006a84 <setvbuf+0x1c>
  16287. 8006a7e: 4630 mov r0, r6
  16288. 8006a80: f001 f892 bl 8007ba8 <__sinit>
  16289. 8006a84: 4b4c ldr r3, [pc, #304] ; (8006bb8 <setvbuf+0x150>)
  16290. 8006a86: 429c cmp r4, r3
  16291. 8006a88: d152 bne.n 8006b30 <setvbuf+0xc8>
  16292. 8006a8a: 6874 ldr r4, [r6, #4]
  16293. 8006a8c: f1b8 0f02 cmp.w r8, #2
  16294. 8006a90: d006 beq.n 8006aa0 <setvbuf+0x38>
  16295. 8006a92: f1b8 0f01 cmp.w r8, #1
  16296. 8006a96: f200 8089 bhi.w 8006bac <setvbuf+0x144>
  16297. 8006a9a: 2d00 cmp r5, #0
  16298. 8006a9c: f2c0 8086 blt.w 8006bac <setvbuf+0x144>
  16299. 8006aa0: 4621 mov r1, r4
  16300. 8006aa2: 4630 mov r0, r6
  16301. 8006aa4: f001 f816 bl 8007ad4 <_fflush_r>
  16302. 8006aa8: 6b61 ldr r1, [r4, #52] ; 0x34
  16303. 8006aaa: b141 cbz r1, 8006abe <setvbuf+0x56>
  16304. 8006aac: f104 0344 add.w r3, r4, #68 ; 0x44
  16305. 8006ab0: 4299 cmp r1, r3
  16306. 8006ab2: d002 beq.n 8006aba <setvbuf+0x52>
  16307. 8006ab4: 4630 mov r0, r6
  16308. 8006ab6: f001 fc7f bl 80083b8 <_free_r>
  16309. 8006aba: 2300 movs r3, #0
  16310. 8006abc: 6363 str r3, [r4, #52] ; 0x34
  16311. 8006abe: 2300 movs r3, #0
  16312. 8006ac0: 61a3 str r3, [r4, #24]
  16313. 8006ac2: 6063 str r3, [r4, #4]
  16314. 8006ac4: 89a3 ldrh r3, [r4, #12]
  16315. 8006ac6: 061b lsls r3, r3, #24
  16316. 8006ac8: d503 bpl.n 8006ad2 <setvbuf+0x6a>
  16317. 8006aca: 6921 ldr r1, [r4, #16]
  16318. 8006acc: 4630 mov r0, r6
  16319. 8006ace: f001 fc73 bl 80083b8 <_free_r>
  16320. 8006ad2: 89a3 ldrh r3, [r4, #12]
  16321. 8006ad4: f1b8 0f02 cmp.w r8, #2
  16322. 8006ad8: f423 634a bic.w r3, r3, #3232 ; 0xca0
  16323. 8006adc: f023 0303 bic.w r3, r3, #3
  16324. 8006ae0: 81a3 strh r3, [r4, #12]
  16325. 8006ae2: d05d beq.n 8006ba0 <setvbuf+0x138>
  16326. 8006ae4: ab01 add r3, sp, #4
  16327. 8006ae6: 466a mov r2, sp
  16328. 8006ae8: 4621 mov r1, r4
  16329. 8006aea: 4630 mov r0, r6
  16330. 8006aec: f001 f8f4 bl 8007cd8 <__swhatbuf_r>
  16331. 8006af0: 89a3 ldrh r3, [r4, #12]
  16332. 8006af2: 4318 orrs r0, r3
  16333. 8006af4: 81a0 strh r0, [r4, #12]
  16334. 8006af6: bb2d cbnz r5, 8006b44 <setvbuf+0xdc>
  16335. 8006af8: 9d00 ldr r5, [sp, #0]
  16336. 8006afa: 4628 mov r0, r5
  16337. 8006afc: f001 f950 bl 8007da0 <malloc>
  16338. 8006b00: 4607 mov r7, r0
  16339. 8006b02: 2800 cmp r0, #0
  16340. 8006b04: d14e bne.n 8006ba4 <setvbuf+0x13c>
  16341. 8006b06: f8dd 9000 ldr.w r9, [sp]
  16342. 8006b0a: 45a9 cmp r9, r5
  16343. 8006b0c: d13c bne.n 8006b88 <setvbuf+0x120>
  16344. 8006b0e: f04f 30ff mov.w r0, #4294967295
  16345. 8006b12: 89a3 ldrh r3, [r4, #12]
  16346. 8006b14: f043 0302 orr.w r3, r3, #2
  16347. 8006b18: 81a3 strh r3, [r4, #12]
  16348. 8006b1a: 2300 movs r3, #0
  16349. 8006b1c: 60a3 str r3, [r4, #8]
  16350. 8006b1e: f104 0347 add.w r3, r4, #71 ; 0x47
  16351. 8006b22: 6023 str r3, [r4, #0]
  16352. 8006b24: 6123 str r3, [r4, #16]
  16353. 8006b26: 2301 movs r3, #1
  16354. 8006b28: 6163 str r3, [r4, #20]
  16355. 8006b2a: b003 add sp, #12
  16356. 8006b2c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
  16357. 8006b30: 4b22 ldr r3, [pc, #136] ; (8006bbc <setvbuf+0x154>)
  16358. 8006b32: 429c cmp r4, r3
  16359. 8006b34: d101 bne.n 8006b3a <setvbuf+0xd2>
  16360. 8006b36: 68b4 ldr r4, [r6, #8]
  16361. 8006b38: e7a8 b.n 8006a8c <setvbuf+0x24>
  16362. 8006b3a: 4b21 ldr r3, [pc, #132] ; (8006bc0 <setvbuf+0x158>)
  16363. 8006b3c: 429c cmp r4, r3
  16364. 8006b3e: bf08 it eq
  16365. 8006b40: 68f4 ldreq r4, [r6, #12]
  16366. 8006b42: e7a3 b.n 8006a8c <setvbuf+0x24>
  16367. 8006b44: 2f00 cmp r7, #0
  16368. 8006b46: d0d8 beq.n 8006afa <setvbuf+0x92>
  16369. 8006b48: 69b3 ldr r3, [r6, #24]
  16370. 8006b4a: b913 cbnz r3, 8006b52 <setvbuf+0xea>
  16371. 8006b4c: 4630 mov r0, r6
  16372. 8006b4e: f001 f82b bl 8007ba8 <__sinit>
  16373. 8006b52: f1b8 0f01 cmp.w r8, #1
  16374. 8006b56: bf08 it eq
  16375. 8006b58: 89a3 ldrheq r3, [r4, #12]
  16376. 8006b5a: 6027 str r7, [r4, #0]
  16377. 8006b5c: bf04 itt eq
  16378. 8006b5e: f043 0301 orreq.w r3, r3, #1
  16379. 8006b62: 81a3 strheq r3, [r4, #12]
  16380. 8006b64: 89a3 ldrh r3, [r4, #12]
  16381. 8006b66: e9c4 7504 strd r7, r5, [r4, #16]
  16382. 8006b6a: f013 0008 ands.w r0, r3, #8
  16383. 8006b6e: d01b beq.n 8006ba8 <setvbuf+0x140>
  16384. 8006b70: f013 0001 ands.w r0, r3, #1
  16385. 8006b74: f04f 0300 mov.w r3, #0
  16386. 8006b78: bf1f itttt ne
  16387. 8006b7a: 426d negne r5, r5
  16388. 8006b7c: 60a3 strne r3, [r4, #8]
  16389. 8006b7e: 61a5 strne r5, [r4, #24]
  16390. 8006b80: 4618 movne r0, r3
  16391. 8006b82: bf08 it eq
  16392. 8006b84: 60a5 streq r5, [r4, #8]
  16393. 8006b86: e7d0 b.n 8006b2a <setvbuf+0xc2>
  16394. 8006b88: 4648 mov r0, r9
  16395. 8006b8a: f001 f909 bl 8007da0 <malloc>
  16396. 8006b8e: 4607 mov r7, r0
  16397. 8006b90: 2800 cmp r0, #0
  16398. 8006b92: d0bc beq.n 8006b0e <setvbuf+0xa6>
  16399. 8006b94: 89a3 ldrh r3, [r4, #12]
  16400. 8006b96: 464d mov r5, r9
  16401. 8006b98: f043 0380 orr.w r3, r3, #128 ; 0x80
  16402. 8006b9c: 81a3 strh r3, [r4, #12]
  16403. 8006b9e: e7d3 b.n 8006b48 <setvbuf+0xe0>
  16404. 8006ba0: 2000 movs r0, #0
  16405. 8006ba2: e7b6 b.n 8006b12 <setvbuf+0xaa>
  16406. 8006ba4: 46a9 mov r9, r5
  16407. 8006ba6: e7f5 b.n 8006b94 <setvbuf+0x12c>
  16408. 8006ba8: 60a0 str r0, [r4, #8]
  16409. 8006baa: e7be b.n 8006b2a <setvbuf+0xc2>
  16410. 8006bac: f04f 30ff mov.w r0, #4294967295
  16411. 8006bb0: e7bb b.n 8006b2a <setvbuf+0xc2>
  16412. 8006bb2: bf00 nop
  16413. 8006bb4: 2000000c .word 0x2000000c
  16414. 8006bb8: 08008d6c .word 0x08008d6c
  16415. 8006bbc: 08008d8c .word 0x08008d8c
  16416. 8006bc0: 08008d4c .word 0x08008d4c
  16417. 08006bc4 <__swbuf_r>:
  16418. 8006bc4: b5f8 push {r3, r4, r5, r6, r7, lr}
  16419. 8006bc6: 460e mov r6, r1
  16420. 8006bc8: 4614 mov r4, r2
  16421. 8006bca: 4605 mov r5, r0
  16422. 8006bcc: b118 cbz r0, 8006bd6 <__swbuf_r+0x12>
  16423. 8006bce: 6983 ldr r3, [r0, #24]
  16424. 8006bd0: b90b cbnz r3, 8006bd6 <__swbuf_r+0x12>
  16425. 8006bd2: f000 ffe9 bl 8007ba8 <__sinit>
  16426. 8006bd6: 4b21 ldr r3, [pc, #132] ; (8006c5c <__swbuf_r+0x98>)
  16427. 8006bd8: 429c cmp r4, r3
  16428. 8006bda: d12a bne.n 8006c32 <__swbuf_r+0x6e>
  16429. 8006bdc: 686c ldr r4, [r5, #4]
  16430. 8006bde: 69a3 ldr r3, [r4, #24]
  16431. 8006be0: 60a3 str r3, [r4, #8]
  16432. 8006be2: 89a3 ldrh r3, [r4, #12]
  16433. 8006be4: 071a lsls r2, r3, #28
  16434. 8006be6: d52e bpl.n 8006c46 <__swbuf_r+0x82>
  16435. 8006be8: 6923 ldr r3, [r4, #16]
  16436. 8006bea: b363 cbz r3, 8006c46 <__swbuf_r+0x82>
  16437. 8006bec: 6923 ldr r3, [r4, #16]
  16438. 8006bee: 6820 ldr r0, [r4, #0]
  16439. 8006bf0: b2f6 uxtb r6, r6
  16440. 8006bf2: 1ac0 subs r0, r0, r3
  16441. 8006bf4: 6963 ldr r3, [r4, #20]
  16442. 8006bf6: 4637 mov r7, r6
  16443. 8006bf8: 4283 cmp r3, r0
  16444. 8006bfa: dc04 bgt.n 8006c06 <__swbuf_r+0x42>
  16445. 8006bfc: 4621 mov r1, r4
  16446. 8006bfe: 4628 mov r0, r5
  16447. 8006c00: f000 ff68 bl 8007ad4 <_fflush_r>
  16448. 8006c04: bb28 cbnz r0, 8006c52 <__swbuf_r+0x8e>
  16449. 8006c06: 68a3 ldr r3, [r4, #8]
  16450. 8006c08: 3001 adds r0, #1
  16451. 8006c0a: 3b01 subs r3, #1
  16452. 8006c0c: 60a3 str r3, [r4, #8]
  16453. 8006c0e: 6823 ldr r3, [r4, #0]
  16454. 8006c10: 1c5a adds r2, r3, #1
  16455. 8006c12: 6022 str r2, [r4, #0]
  16456. 8006c14: 701e strb r6, [r3, #0]
  16457. 8006c16: 6963 ldr r3, [r4, #20]
  16458. 8006c18: 4283 cmp r3, r0
  16459. 8006c1a: d004 beq.n 8006c26 <__swbuf_r+0x62>
  16460. 8006c1c: 89a3 ldrh r3, [r4, #12]
  16461. 8006c1e: 07db lsls r3, r3, #31
  16462. 8006c20: d519 bpl.n 8006c56 <__swbuf_r+0x92>
  16463. 8006c22: 2e0a cmp r6, #10
  16464. 8006c24: d117 bne.n 8006c56 <__swbuf_r+0x92>
  16465. 8006c26: 4621 mov r1, r4
  16466. 8006c28: 4628 mov r0, r5
  16467. 8006c2a: f000 ff53 bl 8007ad4 <_fflush_r>
  16468. 8006c2e: b190 cbz r0, 8006c56 <__swbuf_r+0x92>
  16469. 8006c30: e00f b.n 8006c52 <__swbuf_r+0x8e>
  16470. 8006c32: 4b0b ldr r3, [pc, #44] ; (8006c60 <__swbuf_r+0x9c>)
  16471. 8006c34: 429c cmp r4, r3
  16472. 8006c36: d101 bne.n 8006c3c <__swbuf_r+0x78>
  16473. 8006c38: 68ac ldr r4, [r5, #8]
  16474. 8006c3a: e7d0 b.n 8006bde <__swbuf_r+0x1a>
  16475. 8006c3c: 4b09 ldr r3, [pc, #36] ; (8006c64 <__swbuf_r+0xa0>)
  16476. 8006c3e: 429c cmp r4, r3
  16477. 8006c40: bf08 it eq
  16478. 8006c42: 68ec ldreq r4, [r5, #12]
  16479. 8006c44: e7cb b.n 8006bde <__swbuf_r+0x1a>
  16480. 8006c46: 4621 mov r1, r4
  16481. 8006c48: 4628 mov r0, r5
  16482. 8006c4a: f000 f80d bl 8006c68 <__swsetup_r>
  16483. 8006c4e: 2800 cmp r0, #0
  16484. 8006c50: d0cc beq.n 8006bec <__swbuf_r+0x28>
  16485. 8006c52: f04f 37ff mov.w r7, #4294967295
  16486. 8006c56: 4638 mov r0, r7
  16487. 8006c58: bdf8 pop {r3, r4, r5, r6, r7, pc}
  16488. 8006c5a: bf00 nop
  16489. 8006c5c: 08008d6c .word 0x08008d6c
  16490. 8006c60: 08008d8c .word 0x08008d8c
  16491. 8006c64: 08008d4c .word 0x08008d4c
  16492. 08006c68 <__swsetup_r>:
  16493. 8006c68: 4b32 ldr r3, [pc, #200] ; (8006d34 <__swsetup_r+0xcc>)
  16494. 8006c6a: b570 push {r4, r5, r6, lr}
  16495. 8006c6c: 681d ldr r5, [r3, #0]
  16496. 8006c6e: 4606 mov r6, r0
  16497. 8006c70: 460c mov r4, r1
  16498. 8006c72: b125 cbz r5, 8006c7e <__swsetup_r+0x16>
  16499. 8006c74: 69ab ldr r3, [r5, #24]
  16500. 8006c76: b913 cbnz r3, 8006c7e <__swsetup_r+0x16>
  16501. 8006c78: 4628 mov r0, r5
  16502. 8006c7a: f000 ff95 bl 8007ba8 <__sinit>
  16503. 8006c7e: 4b2e ldr r3, [pc, #184] ; (8006d38 <__swsetup_r+0xd0>)
  16504. 8006c80: 429c cmp r4, r3
  16505. 8006c82: d10f bne.n 8006ca4 <__swsetup_r+0x3c>
  16506. 8006c84: 686c ldr r4, [r5, #4]
  16507. 8006c86: f9b4 300c ldrsh.w r3, [r4, #12]
  16508. 8006c8a: b29a uxth r2, r3
  16509. 8006c8c: 0715 lsls r5, r2, #28
  16510. 8006c8e: d42c bmi.n 8006cea <__swsetup_r+0x82>
  16511. 8006c90: 06d0 lsls r0, r2, #27
  16512. 8006c92: d411 bmi.n 8006cb8 <__swsetup_r+0x50>
  16513. 8006c94: 2209 movs r2, #9
  16514. 8006c96: 6032 str r2, [r6, #0]
  16515. 8006c98: f043 0340 orr.w r3, r3, #64 ; 0x40
  16516. 8006c9c: 81a3 strh r3, [r4, #12]
  16517. 8006c9e: f04f 30ff mov.w r0, #4294967295
  16518. 8006ca2: e03e b.n 8006d22 <__swsetup_r+0xba>
  16519. 8006ca4: 4b25 ldr r3, [pc, #148] ; (8006d3c <__swsetup_r+0xd4>)
  16520. 8006ca6: 429c cmp r4, r3
  16521. 8006ca8: d101 bne.n 8006cae <__swsetup_r+0x46>
  16522. 8006caa: 68ac ldr r4, [r5, #8]
  16523. 8006cac: e7eb b.n 8006c86 <__swsetup_r+0x1e>
  16524. 8006cae: 4b24 ldr r3, [pc, #144] ; (8006d40 <__swsetup_r+0xd8>)
  16525. 8006cb0: 429c cmp r4, r3
  16526. 8006cb2: bf08 it eq
  16527. 8006cb4: 68ec ldreq r4, [r5, #12]
  16528. 8006cb6: e7e6 b.n 8006c86 <__swsetup_r+0x1e>
  16529. 8006cb8: 0751 lsls r1, r2, #29
  16530. 8006cba: d512 bpl.n 8006ce2 <__swsetup_r+0x7a>
  16531. 8006cbc: 6b61 ldr r1, [r4, #52] ; 0x34
  16532. 8006cbe: b141 cbz r1, 8006cd2 <__swsetup_r+0x6a>
  16533. 8006cc0: f104 0344 add.w r3, r4, #68 ; 0x44
  16534. 8006cc4: 4299 cmp r1, r3
  16535. 8006cc6: d002 beq.n 8006cce <__swsetup_r+0x66>
  16536. 8006cc8: 4630 mov r0, r6
  16537. 8006cca: f001 fb75 bl 80083b8 <_free_r>
  16538. 8006cce: 2300 movs r3, #0
  16539. 8006cd0: 6363 str r3, [r4, #52] ; 0x34
  16540. 8006cd2: 89a3 ldrh r3, [r4, #12]
  16541. 8006cd4: f023 0324 bic.w r3, r3, #36 ; 0x24
  16542. 8006cd8: 81a3 strh r3, [r4, #12]
  16543. 8006cda: 2300 movs r3, #0
  16544. 8006cdc: 6063 str r3, [r4, #4]
  16545. 8006cde: 6923 ldr r3, [r4, #16]
  16546. 8006ce0: 6023 str r3, [r4, #0]
  16547. 8006ce2: 89a3 ldrh r3, [r4, #12]
  16548. 8006ce4: f043 0308 orr.w r3, r3, #8
  16549. 8006ce8: 81a3 strh r3, [r4, #12]
  16550. 8006cea: 6923 ldr r3, [r4, #16]
  16551. 8006cec: b94b cbnz r3, 8006d02 <__swsetup_r+0x9a>
  16552. 8006cee: 89a3 ldrh r3, [r4, #12]
  16553. 8006cf0: f403 7320 and.w r3, r3, #640 ; 0x280
  16554. 8006cf4: f5b3 7f00 cmp.w r3, #512 ; 0x200
  16555. 8006cf8: d003 beq.n 8006d02 <__swsetup_r+0x9a>
  16556. 8006cfa: 4621 mov r1, r4
  16557. 8006cfc: 4630 mov r0, r6
  16558. 8006cfe: f001 f80f bl 8007d20 <__smakebuf_r>
  16559. 8006d02: 89a2 ldrh r2, [r4, #12]
  16560. 8006d04: f012 0301 ands.w r3, r2, #1
  16561. 8006d08: d00c beq.n 8006d24 <__swsetup_r+0xbc>
  16562. 8006d0a: 2300 movs r3, #0
  16563. 8006d0c: 60a3 str r3, [r4, #8]
  16564. 8006d0e: 6963 ldr r3, [r4, #20]
  16565. 8006d10: 425b negs r3, r3
  16566. 8006d12: 61a3 str r3, [r4, #24]
  16567. 8006d14: 6923 ldr r3, [r4, #16]
  16568. 8006d16: b953 cbnz r3, 8006d2e <__swsetup_r+0xc6>
  16569. 8006d18: f9b4 300c ldrsh.w r3, [r4, #12]
  16570. 8006d1c: f013 0080 ands.w r0, r3, #128 ; 0x80
  16571. 8006d20: d1ba bne.n 8006c98 <__swsetup_r+0x30>
  16572. 8006d22: bd70 pop {r4, r5, r6, pc}
  16573. 8006d24: 0792 lsls r2, r2, #30
  16574. 8006d26: bf58 it pl
  16575. 8006d28: 6963 ldrpl r3, [r4, #20]
  16576. 8006d2a: 60a3 str r3, [r4, #8]
  16577. 8006d2c: e7f2 b.n 8006d14 <__swsetup_r+0xac>
  16578. 8006d2e: 2000 movs r0, #0
  16579. 8006d30: e7f7 b.n 8006d22 <__swsetup_r+0xba>
  16580. 8006d32: bf00 nop
  16581. 8006d34: 2000000c .word 0x2000000c
  16582. 8006d38: 08008d6c .word 0x08008d6c
  16583. 8006d3c: 08008d8c .word 0x08008d8c
  16584. 8006d40: 08008d4c .word 0x08008d4c
  16585. 08006d44 <quorem>:
  16586. 8006d44: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
  16587. 8006d48: 6903 ldr r3, [r0, #16]
  16588. 8006d4a: 690c ldr r4, [r1, #16]
  16589. 8006d4c: 4680 mov r8, r0
  16590. 8006d4e: 42a3 cmp r3, r4
  16591. 8006d50: f2c0 8084 blt.w 8006e5c <quorem+0x118>
  16592. 8006d54: 3c01 subs r4, #1
  16593. 8006d56: f101 0714 add.w r7, r1, #20
  16594. 8006d5a: f100 0614 add.w r6, r0, #20
  16595. 8006d5e: f857 5024 ldr.w r5, [r7, r4, lsl #2]
  16596. 8006d62: f856 0024 ldr.w r0, [r6, r4, lsl #2]
  16597. 8006d66: 3501 adds r5, #1
  16598. 8006d68: fbb0 f5f5 udiv r5, r0, r5
  16599. 8006d6c: ea4f 0c84 mov.w ip, r4, lsl #2
  16600. 8006d70: eb06 030c add.w r3, r6, ip
  16601. 8006d74: eb07 090c add.w r9, r7, ip
  16602. 8006d78: 9301 str r3, [sp, #4]
  16603. 8006d7a: b39d cbz r5, 8006de4 <quorem+0xa0>
  16604. 8006d7c: f04f 0a00 mov.w sl, #0
  16605. 8006d80: 4638 mov r0, r7
  16606. 8006d82: 46b6 mov lr, r6
  16607. 8006d84: 46d3 mov fp, sl
  16608. 8006d86: f850 2b04 ldr.w r2, [r0], #4
  16609. 8006d8a: b293 uxth r3, r2
  16610. 8006d8c: fb05 a303 mla r3, r5, r3, sl
  16611. 8006d90: 0c12 lsrs r2, r2, #16
  16612. 8006d92: ea4f 4a13 mov.w sl, r3, lsr #16
  16613. 8006d96: fb05 a202 mla r2, r5, r2, sl
  16614. 8006d9a: b29b uxth r3, r3
  16615. 8006d9c: ebab 0303 sub.w r3, fp, r3
  16616. 8006da0: f8de b000 ldr.w fp, [lr]
  16617. 8006da4: ea4f 4a12 mov.w sl, r2, lsr #16
  16618. 8006da8: fa1f fb8b uxth.w fp, fp
  16619. 8006dac: 445b add r3, fp
  16620. 8006dae: fa1f fb82 uxth.w fp, r2
  16621. 8006db2: f8de 2000 ldr.w r2, [lr]
  16622. 8006db6: 4581 cmp r9, r0
  16623. 8006db8: ebcb 4212 rsb r2, fp, r2, lsr #16
  16624. 8006dbc: eb02 4223 add.w r2, r2, r3, asr #16
  16625. 8006dc0: b29b uxth r3, r3
  16626. 8006dc2: ea43 4302 orr.w r3, r3, r2, lsl #16
  16627. 8006dc6: ea4f 4b22 mov.w fp, r2, asr #16
  16628. 8006dca: f84e 3b04 str.w r3, [lr], #4
  16629. 8006dce: d2da bcs.n 8006d86 <quorem+0x42>
  16630. 8006dd0: f856 300c ldr.w r3, [r6, ip]
  16631. 8006dd4: b933 cbnz r3, 8006de4 <quorem+0xa0>
  16632. 8006dd6: 9b01 ldr r3, [sp, #4]
  16633. 8006dd8: 3b04 subs r3, #4
  16634. 8006dda: 429e cmp r6, r3
  16635. 8006ddc: 461a mov r2, r3
  16636. 8006dde: d331 bcc.n 8006e44 <quorem+0x100>
  16637. 8006de0: f8c8 4010 str.w r4, [r8, #16]
  16638. 8006de4: 4640 mov r0, r8
  16639. 8006de6: f001 fa11 bl 800820c <__mcmp>
  16640. 8006dea: 2800 cmp r0, #0
  16641. 8006dec: db26 blt.n 8006e3c <quorem+0xf8>
  16642. 8006dee: 4630 mov r0, r6
  16643. 8006df0: f04f 0c00 mov.w ip, #0
  16644. 8006df4: 3501 adds r5, #1
  16645. 8006df6: f857 1b04 ldr.w r1, [r7], #4
  16646. 8006dfa: f8d0 e000 ldr.w lr, [r0]
  16647. 8006dfe: b28b uxth r3, r1
  16648. 8006e00: ebac 0303 sub.w r3, ip, r3
  16649. 8006e04: fa1f f28e uxth.w r2, lr
  16650. 8006e08: 4413 add r3, r2
  16651. 8006e0a: 0c0a lsrs r2, r1, #16
  16652. 8006e0c: ebc2 421e rsb r2, r2, lr, lsr #16
  16653. 8006e10: eb02 4223 add.w r2, r2, r3, asr #16
  16654. 8006e14: b29b uxth r3, r3
  16655. 8006e16: ea43 4302 orr.w r3, r3, r2, lsl #16
  16656. 8006e1a: 45b9 cmp r9, r7
  16657. 8006e1c: ea4f 4c22 mov.w ip, r2, asr #16
  16658. 8006e20: f840 3b04 str.w r3, [r0], #4
  16659. 8006e24: d2e7 bcs.n 8006df6 <quorem+0xb2>
  16660. 8006e26: f856 2024 ldr.w r2, [r6, r4, lsl #2]
  16661. 8006e2a: eb06 0384 add.w r3, r6, r4, lsl #2
  16662. 8006e2e: b92a cbnz r2, 8006e3c <quorem+0xf8>
  16663. 8006e30: 3b04 subs r3, #4
  16664. 8006e32: 429e cmp r6, r3
  16665. 8006e34: 461a mov r2, r3
  16666. 8006e36: d30b bcc.n 8006e50 <quorem+0x10c>
  16667. 8006e38: f8c8 4010 str.w r4, [r8, #16]
  16668. 8006e3c: 4628 mov r0, r5
  16669. 8006e3e: b003 add sp, #12
  16670. 8006e40: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  16671. 8006e44: 6812 ldr r2, [r2, #0]
  16672. 8006e46: 3b04 subs r3, #4
  16673. 8006e48: 2a00 cmp r2, #0
  16674. 8006e4a: d1c9 bne.n 8006de0 <quorem+0x9c>
  16675. 8006e4c: 3c01 subs r4, #1
  16676. 8006e4e: e7c4 b.n 8006dda <quorem+0x96>
  16677. 8006e50: 6812 ldr r2, [r2, #0]
  16678. 8006e52: 3b04 subs r3, #4
  16679. 8006e54: 2a00 cmp r2, #0
  16680. 8006e56: d1ef bne.n 8006e38 <quorem+0xf4>
  16681. 8006e58: 3c01 subs r4, #1
  16682. 8006e5a: e7ea b.n 8006e32 <quorem+0xee>
  16683. 8006e5c: 2000 movs r0, #0
  16684. 8006e5e: e7ee b.n 8006e3e <quorem+0xfa>
  16685. 08006e60 <_dtoa_r>:
  16686. 8006e60: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
  16687. 8006e64: 4616 mov r6, r2
  16688. 8006e66: 461f mov r7, r3
  16689. 8006e68: 6a45 ldr r5, [r0, #36] ; 0x24
  16690. 8006e6a: b095 sub sp, #84 ; 0x54
  16691. 8006e6c: 4604 mov r4, r0
  16692. 8006e6e: f8dd 8084 ldr.w r8, [sp, #132] ; 0x84
  16693. 8006e72: e9cd 6702 strd r6, r7, [sp, #8]
  16694. 8006e76: b93d cbnz r5, 8006e88 <_dtoa_r+0x28>
  16695. 8006e78: 2010 movs r0, #16
  16696. 8006e7a: f000 ff91 bl 8007da0 <malloc>
  16697. 8006e7e: 6260 str r0, [r4, #36] ; 0x24
  16698. 8006e80: e9c0 5501 strd r5, r5, [r0, #4]
  16699. 8006e84: 6005 str r5, [r0, #0]
  16700. 8006e86: 60c5 str r5, [r0, #12]
  16701. 8006e88: 6a63 ldr r3, [r4, #36] ; 0x24
  16702. 8006e8a: 6819 ldr r1, [r3, #0]
  16703. 8006e8c: b151 cbz r1, 8006ea4 <_dtoa_r+0x44>
  16704. 8006e8e: 685a ldr r2, [r3, #4]
  16705. 8006e90: 2301 movs r3, #1
  16706. 8006e92: 4093 lsls r3, r2
  16707. 8006e94: 604a str r2, [r1, #4]
  16708. 8006e96: 608b str r3, [r1, #8]
  16709. 8006e98: 4620 mov r0, r4
  16710. 8006e9a: f000 ffd6 bl 8007e4a <_Bfree>
  16711. 8006e9e: 2200 movs r2, #0
  16712. 8006ea0: 6a63 ldr r3, [r4, #36] ; 0x24
  16713. 8006ea2: 601a str r2, [r3, #0]
  16714. 8006ea4: 1e3b subs r3, r7, #0
  16715. 8006ea6: bfaf iteee ge
  16716. 8006ea8: 2300 movge r3, #0
  16717. 8006eaa: 2201 movlt r2, #1
  16718. 8006eac: f023 4300 biclt.w r3, r3, #2147483648 ; 0x80000000
  16719. 8006eb0: 9303 strlt r3, [sp, #12]
  16720. 8006eb2: bfac ite ge
  16721. 8006eb4: f8c8 3000 strge.w r3, [r8]
  16722. 8006eb8: f8c8 2000 strlt.w r2, [r8]
  16723. 8006ebc: 4bae ldr r3, [pc, #696] ; (8007178 <_dtoa_r+0x318>)
  16724. 8006ebe: f8dd 800c ldr.w r8, [sp, #12]
  16725. 8006ec2: ea33 0308 bics.w r3, r3, r8
  16726. 8006ec6: d11b bne.n 8006f00 <_dtoa_r+0xa0>
  16727. 8006ec8: f242 730f movw r3, #9999 ; 0x270f
  16728. 8006ecc: 9a20 ldr r2, [sp, #128] ; 0x80
  16729. 8006ece: 6013 str r3, [r2, #0]
  16730. 8006ed0: 9b02 ldr r3, [sp, #8]
  16731. 8006ed2: b923 cbnz r3, 8006ede <_dtoa_r+0x7e>
  16732. 8006ed4: f3c8 0013 ubfx r0, r8, #0, #20
  16733. 8006ed8: 2800 cmp r0, #0
  16734. 8006eda: f000 8545 beq.w 8007968 <_dtoa_r+0xb08>
  16735. 8006ede: 9b22 ldr r3, [sp, #136] ; 0x88
  16736. 8006ee0: b953 cbnz r3, 8006ef8 <_dtoa_r+0x98>
  16737. 8006ee2: 4ba6 ldr r3, [pc, #664] ; (800717c <_dtoa_r+0x31c>)
  16738. 8006ee4: e021 b.n 8006f2a <_dtoa_r+0xca>
  16739. 8006ee6: 4ba6 ldr r3, [pc, #664] ; (8007180 <_dtoa_r+0x320>)
  16740. 8006ee8: 9306 str r3, [sp, #24]
  16741. 8006eea: 3308 adds r3, #8
  16742. 8006eec: 9a22 ldr r2, [sp, #136] ; 0x88
  16743. 8006eee: 6013 str r3, [r2, #0]
  16744. 8006ef0: 9806 ldr r0, [sp, #24]
  16745. 8006ef2: b015 add sp, #84 ; 0x54
  16746. 8006ef4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  16747. 8006ef8: 4ba0 ldr r3, [pc, #640] ; (800717c <_dtoa_r+0x31c>)
  16748. 8006efa: 9306 str r3, [sp, #24]
  16749. 8006efc: 3303 adds r3, #3
  16750. 8006efe: e7f5 b.n 8006eec <_dtoa_r+0x8c>
  16751. 8006f00: e9dd 6702 ldrd r6, r7, [sp, #8]
  16752. 8006f04: 2200 movs r2, #0
  16753. 8006f06: 2300 movs r3, #0
  16754. 8006f08: 4630 mov r0, r6
  16755. 8006f0a: 4639 mov r1, r7
  16756. 8006f0c: f7f9 fdac bl 8000a68 <__aeabi_dcmpeq>
  16757. 8006f10: 4682 mov sl, r0
  16758. 8006f12: b160 cbz r0, 8006f2e <_dtoa_r+0xce>
  16759. 8006f14: 2301 movs r3, #1
  16760. 8006f16: 9a20 ldr r2, [sp, #128] ; 0x80
  16761. 8006f18: 6013 str r3, [r2, #0]
  16762. 8006f1a: 9b22 ldr r3, [sp, #136] ; 0x88
  16763. 8006f1c: 2b00 cmp r3, #0
  16764. 8006f1e: f000 8520 beq.w 8007962 <_dtoa_r+0xb02>
  16765. 8006f22: 4b98 ldr r3, [pc, #608] ; (8007184 <_dtoa_r+0x324>)
  16766. 8006f24: 9a22 ldr r2, [sp, #136] ; 0x88
  16767. 8006f26: 6013 str r3, [r2, #0]
  16768. 8006f28: 3b01 subs r3, #1
  16769. 8006f2a: 9306 str r3, [sp, #24]
  16770. 8006f2c: e7e0 b.n 8006ef0 <_dtoa_r+0x90>
  16771. 8006f2e: ab12 add r3, sp, #72 ; 0x48
  16772. 8006f30: 9301 str r3, [sp, #4]
  16773. 8006f32: ab13 add r3, sp, #76 ; 0x4c
  16774. 8006f34: 9300 str r3, [sp, #0]
  16775. 8006f36: 4632 mov r2, r6
  16776. 8006f38: 463b mov r3, r7
  16777. 8006f3a: 4620 mov r0, r4
  16778. 8006f3c: f001 f9de bl 80082fc <__d2b>
  16779. 8006f40: f3c8 550a ubfx r5, r8, #20, #11
  16780. 8006f44: 4683 mov fp, r0
  16781. 8006f46: 2d00 cmp r5, #0
  16782. 8006f48: d07d beq.n 8007046 <_dtoa_r+0x1e6>
  16783. 8006f4a: 46b0 mov r8, r6
  16784. 8006f4c: f3c7 0313 ubfx r3, r7, #0, #20
  16785. 8006f50: f043 597f orr.w r9, r3, #1069547520 ; 0x3fc00000
  16786. 8006f54: f449 1940 orr.w r9, r9, #3145728 ; 0x300000
  16787. 8006f58: f2a5 35ff subw r5, r5, #1023 ; 0x3ff
  16788. 8006f5c: f8cd a040 str.w sl, [sp, #64] ; 0x40
  16789. 8006f60: 2200 movs r2, #0
  16790. 8006f62: 4b89 ldr r3, [pc, #548] ; (8007188 <_dtoa_r+0x328>)
  16791. 8006f64: 4640 mov r0, r8
  16792. 8006f66: 4649 mov r1, r9
  16793. 8006f68: f7f9 f95e bl 8000228 <__aeabi_dsub>
  16794. 8006f6c: a37c add r3, pc, #496 ; (adr r3, 8007160 <_dtoa_r+0x300>)
  16795. 8006f6e: e9d3 2300 ldrd r2, r3, [r3]
  16796. 8006f72: f7f9 fb11 bl 8000598 <__aeabi_dmul>
  16797. 8006f76: a37c add r3, pc, #496 ; (adr r3, 8007168 <_dtoa_r+0x308>)
  16798. 8006f78: e9d3 2300 ldrd r2, r3, [r3]
  16799. 8006f7c: f7f9 f956 bl 800022c <__adddf3>
  16800. 8006f80: 4606 mov r6, r0
  16801. 8006f82: 4628 mov r0, r5
  16802. 8006f84: 460f mov r7, r1
  16803. 8006f86: f7f9 fa9d bl 80004c4 <__aeabi_i2d>
  16804. 8006f8a: a379 add r3, pc, #484 ; (adr r3, 8007170 <_dtoa_r+0x310>)
  16805. 8006f8c: e9d3 2300 ldrd r2, r3, [r3]
  16806. 8006f90: f7f9 fb02 bl 8000598 <__aeabi_dmul>
  16807. 8006f94: 4602 mov r2, r0
  16808. 8006f96: 460b mov r3, r1
  16809. 8006f98: 4630 mov r0, r6
  16810. 8006f9a: 4639 mov r1, r7
  16811. 8006f9c: f7f9 f946 bl 800022c <__adddf3>
  16812. 8006fa0: 4606 mov r6, r0
  16813. 8006fa2: 460f mov r7, r1
  16814. 8006fa4: f7f9 fda8 bl 8000af8 <__aeabi_d2iz>
  16815. 8006fa8: 2200 movs r2, #0
  16816. 8006faa: 4682 mov sl, r0
  16817. 8006fac: 2300 movs r3, #0
  16818. 8006fae: 4630 mov r0, r6
  16819. 8006fb0: 4639 mov r1, r7
  16820. 8006fb2: f7f9 fd63 bl 8000a7c <__aeabi_dcmplt>
  16821. 8006fb6: b148 cbz r0, 8006fcc <_dtoa_r+0x16c>
  16822. 8006fb8: 4650 mov r0, sl
  16823. 8006fba: f7f9 fa83 bl 80004c4 <__aeabi_i2d>
  16824. 8006fbe: 4632 mov r2, r6
  16825. 8006fc0: 463b mov r3, r7
  16826. 8006fc2: f7f9 fd51 bl 8000a68 <__aeabi_dcmpeq>
  16827. 8006fc6: b908 cbnz r0, 8006fcc <_dtoa_r+0x16c>
  16828. 8006fc8: f10a 3aff add.w sl, sl, #4294967295
  16829. 8006fcc: f1ba 0f16 cmp.w sl, #22
  16830. 8006fd0: d85a bhi.n 8007088 <_dtoa_r+0x228>
  16831. 8006fd2: e9dd 2302 ldrd r2, r3, [sp, #8]
  16832. 8006fd6: 496d ldr r1, [pc, #436] ; (800718c <_dtoa_r+0x32c>)
  16833. 8006fd8: eb01 01ca add.w r1, r1, sl, lsl #3
  16834. 8006fdc: e9d1 0100 ldrd r0, r1, [r1]
  16835. 8006fe0: f7f9 fd6a bl 8000ab8 <__aeabi_dcmpgt>
  16836. 8006fe4: 2800 cmp r0, #0
  16837. 8006fe6: d051 beq.n 800708c <_dtoa_r+0x22c>
  16838. 8006fe8: 2300 movs r3, #0
  16839. 8006fea: f10a 3aff add.w sl, sl, #4294967295
  16840. 8006fee: 930d str r3, [sp, #52] ; 0x34
  16841. 8006ff0: 9b12 ldr r3, [sp, #72] ; 0x48
  16842. 8006ff2: 1b5d subs r5, r3, r5
  16843. 8006ff4: 1e6b subs r3, r5, #1
  16844. 8006ff6: 9307 str r3, [sp, #28]
  16845. 8006ff8: bf43 ittte mi
  16846. 8006ffa: 2300 movmi r3, #0
  16847. 8006ffc: f1c5 0901 rsbmi r9, r5, #1
  16848. 8007000: 9307 strmi r3, [sp, #28]
  16849. 8007002: f04f 0900 movpl.w r9, #0
  16850. 8007006: f1ba 0f00 cmp.w sl, #0
  16851. 800700a: db41 blt.n 8007090 <_dtoa_r+0x230>
  16852. 800700c: 9b07 ldr r3, [sp, #28]
  16853. 800700e: f8cd a030 str.w sl, [sp, #48] ; 0x30
  16854. 8007012: 4453 add r3, sl
  16855. 8007014: 9307 str r3, [sp, #28]
  16856. 8007016: 2300 movs r3, #0
  16857. 8007018: 9308 str r3, [sp, #32]
  16858. 800701a: 9b1e ldr r3, [sp, #120] ; 0x78
  16859. 800701c: 2b09 cmp r3, #9
  16860. 800701e: f200 808f bhi.w 8007140 <_dtoa_r+0x2e0>
  16861. 8007022: 2b05 cmp r3, #5
  16862. 8007024: bfc4 itt gt
  16863. 8007026: 3b04 subgt r3, #4
  16864. 8007028: 931e strgt r3, [sp, #120] ; 0x78
  16865. 800702a: 9b1e ldr r3, [sp, #120] ; 0x78
  16866. 800702c: bfc8 it gt
  16867. 800702e: 2500 movgt r5, #0
  16868. 8007030: f1a3 0302 sub.w r3, r3, #2
  16869. 8007034: bfd8 it le
  16870. 8007036: 2501 movle r5, #1
  16871. 8007038: 2b03 cmp r3, #3
  16872. 800703a: f200 808d bhi.w 8007158 <_dtoa_r+0x2f8>
  16873. 800703e: e8df f003 tbb [pc, r3]
  16874. 8007042: 7d7b .short 0x7d7b
  16875. 8007044: 6f2f .short 0x6f2f
  16876. 8007046: e9dd 5312 ldrd r5, r3, [sp, #72] ; 0x48
  16877. 800704a: 441d add r5, r3
  16878. 800704c: f205 4032 addw r0, r5, #1074 ; 0x432
  16879. 8007050: 2820 cmp r0, #32
  16880. 8007052: dd13 ble.n 800707c <_dtoa_r+0x21c>
  16881. 8007054: f1c0 0040 rsb r0, r0, #64 ; 0x40
  16882. 8007058: 9b02 ldr r3, [sp, #8]
  16883. 800705a: fa08 f800 lsl.w r8, r8, r0
  16884. 800705e: f205 4012 addw r0, r5, #1042 ; 0x412
  16885. 8007062: fa23 f000 lsr.w r0, r3, r0
  16886. 8007066: ea48 0000 orr.w r0, r8, r0
  16887. 800706a: f7f9 fa1b bl 80004a4 <__aeabi_ui2d>
  16888. 800706e: 2301 movs r3, #1
  16889. 8007070: 4680 mov r8, r0
  16890. 8007072: f1a1 79f8 sub.w r9, r1, #32505856 ; 0x1f00000
  16891. 8007076: 3d01 subs r5, #1
  16892. 8007078: 9310 str r3, [sp, #64] ; 0x40
  16893. 800707a: e771 b.n 8006f60 <_dtoa_r+0x100>
  16894. 800707c: 9b02 ldr r3, [sp, #8]
  16895. 800707e: f1c0 0020 rsb r0, r0, #32
  16896. 8007082: fa03 f000 lsl.w r0, r3, r0
  16897. 8007086: e7f0 b.n 800706a <_dtoa_r+0x20a>
  16898. 8007088: 2301 movs r3, #1
  16899. 800708a: e7b0 b.n 8006fee <_dtoa_r+0x18e>
  16900. 800708c: 900d str r0, [sp, #52] ; 0x34
  16901. 800708e: e7af b.n 8006ff0 <_dtoa_r+0x190>
  16902. 8007090: f1ca 0300 rsb r3, sl, #0
  16903. 8007094: 9308 str r3, [sp, #32]
  16904. 8007096: 2300 movs r3, #0
  16905. 8007098: eba9 090a sub.w r9, r9, sl
  16906. 800709c: 930c str r3, [sp, #48] ; 0x30
  16907. 800709e: e7bc b.n 800701a <_dtoa_r+0x1ba>
  16908. 80070a0: 2301 movs r3, #1
  16909. 80070a2: 9309 str r3, [sp, #36] ; 0x24
  16910. 80070a4: 9b1f ldr r3, [sp, #124] ; 0x7c
  16911. 80070a6: 2b00 cmp r3, #0
  16912. 80070a8: dd74 ble.n 8007194 <_dtoa_r+0x334>
  16913. 80070aa: 4698 mov r8, r3
  16914. 80070ac: 9304 str r3, [sp, #16]
  16915. 80070ae: 2200 movs r2, #0
  16916. 80070b0: 6a66 ldr r6, [r4, #36] ; 0x24
  16917. 80070b2: 6072 str r2, [r6, #4]
  16918. 80070b4: 2204 movs r2, #4
  16919. 80070b6: f102 0014 add.w r0, r2, #20
  16920. 80070ba: 4298 cmp r0, r3
  16921. 80070bc: 6871 ldr r1, [r6, #4]
  16922. 80070be: d96e bls.n 800719e <_dtoa_r+0x33e>
  16923. 80070c0: 4620 mov r0, r4
  16924. 80070c2: f000 fe8e bl 8007de2 <_Balloc>
  16925. 80070c6: 6a63 ldr r3, [r4, #36] ; 0x24
  16926. 80070c8: 6030 str r0, [r6, #0]
  16927. 80070ca: 681b ldr r3, [r3, #0]
  16928. 80070cc: f1b8 0f0e cmp.w r8, #14
  16929. 80070d0: 9306 str r3, [sp, #24]
  16930. 80070d2: f200 80ed bhi.w 80072b0 <_dtoa_r+0x450>
  16931. 80070d6: 2d00 cmp r5, #0
  16932. 80070d8: f000 80ea beq.w 80072b0 <_dtoa_r+0x450>
  16933. 80070dc: e9dd 2302 ldrd r2, r3, [sp, #8]
  16934. 80070e0: f1ba 0f00 cmp.w sl, #0
  16935. 80070e4: e9cd 230e strd r2, r3, [sp, #56] ; 0x38
  16936. 80070e8: dd77 ble.n 80071da <_dtoa_r+0x37a>
  16937. 80070ea: 4a28 ldr r2, [pc, #160] ; (800718c <_dtoa_r+0x32c>)
  16938. 80070ec: f00a 030f and.w r3, sl, #15
  16939. 80070f0: ea4f 162a mov.w r6, sl, asr #4
  16940. 80070f4: eb02 03c3 add.w r3, r2, r3, lsl #3
  16941. 80070f8: 06f0 lsls r0, r6, #27
  16942. 80070fa: e9d3 2300 ldrd r2, r3, [r3]
  16943. 80070fe: e9cd 230a strd r2, r3, [sp, #40] ; 0x28
  16944. 8007102: d568 bpl.n 80071d6 <_dtoa_r+0x376>
  16945. 8007104: e9dd 010e ldrd r0, r1, [sp, #56] ; 0x38
  16946. 8007108: 4b21 ldr r3, [pc, #132] ; (8007190 <_dtoa_r+0x330>)
  16947. 800710a: 2503 movs r5, #3
  16948. 800710c: e9d3 2308 ldrd r2, r3, [r3, #32]
  16949. 8007110: f7f9 fb6c bl 80007ec <__aeabi_ddiv>
  16950. 8007114: e9cd 0102 strd r0, r1, [sp, #8]
  16951. 8007118: f006 060f and.w r6, r6, #15
  16952. 800711c: 4f1c ldr r7, [pc, #112] ; (8007190 <_dtoa_r+0x330>)
  16953. 800711e: e04f b.n 80071c0 <_dtoa_r+0x360>
  16954. 8007120: 2301 movs r3, #1
  16955. 8007122: 9309 str r3, [sp, #36] ; 0x24
  16956. 8007124: 9b1f ldr r3, [sp, #124] ; 0x7c
  16957. 8007126: 4453 add r3, sl
  16958. 8007128: f103 0801 add.w r8, r3, #1
  16959. 800712c: 9304 str r3, [sp, #16]
  16960. 800712e: 4643 mov r3, r8
  16961. 8007130: 2b01 cmp r3, #1
  16962. 8007132: bfb8 it lt
  16963. 8007134: 2301 movlt r3, #1
  16964. 8007136: e7ba b.n 80070ae <_dtoa_r+0x24e>
  16965. 8007138: 2300 movs r3, #0
  16966. 800713a: e7b2 b.n 80070a2 <_dtoa_r+0x242>
  16967. 800713c: 2300 movs r3, #0
  16968. 800713e: e7f0 b.n 8007122 <_dtoa_r+0x2c2>
  16969. 8007140: 2501 movs r5, #1
  16970. 8007142: 2300 movs r3, #0
  16971. 8007144: 9509 str r5, [sp, #36] ; 0x24
  16972. 8007146: 931e str r3, [sp, #120] ; 0x78
  16973. 8007148: f04f 33ff mov.w r3, #4294967295
  16974. 800714c: 2200 movs r2, #0
  16975. 800714e: 9304 str r3, [sp, #16]
  16976. 8007150: 4698 mov r8, r3
  16977. 8007152: 2312 movs r3, #18
  16978. 8007154: 921f str r2, [sp, #124] ; 0x7c
  16979. 8007156: e7aa b.n 80070ae <_dtoa_r+0x24e>
  16980. 8007158: 2301 movs r3, #1
  16981. 800715a: 9309 str r3, [sp, #36] ; 0x24
  16982. 800715c: e7f4 b.n 8007148 <_dtoa_r+0x2e8>
  16983. 800715e: bf00 nop
  16984. 8007160: 636f4361 .word 0x636f4361
  16985. 8007164: 3fd287a7 .word 0x3fd287a7
  16986. 8007168: 8b60c8b3 .word 0x8b60c8b3
  16987. 800716c: 3fc68a28 .word 0x3fc68a28
  16988. 8007170: 509f79fb .word 0x509f79fb
  16989. 8007174: 3fd34413 .word 0x3fd34413
  16990. 8007178: 7ff00000 .word 0x7ff00000
  16991. 800717c: 08008d45 .word 0x08008d45
  16992. 8007180: 08008d3c .word 0x08008d3c
  16993. 8007184: 08008d19 .word 0x08008d19
  16994. 8007188: 3ff80000 .word 0x3ff80000
  16995. 800718c: 08008dd8 .word 0x08008dd8
  16996. 8007190: 08008db0 .word 0x08008db0
  16997. 8007194: 2301 movs r3, #1
  16998. 8007196: 9304 str r3, [sp, #16]
  16999. 8007198: 4698 mov r8, r3
  17000. 800719a: 461a mov r2, r3
  17001. 800719c: e7da b.n 8007154 <_dtoa_r+0x2f4>
  17002. 800719e: 3101 adds r1, #1
  17003. 80071a0: 6071 str r1, [r6, #4]
  17004. 80071a2: 0052 lsls r2, r2, #1
  17005. 80071a4: e787 b.n 80070b6 <_dtoa_r+0x256>
  17006. 80071a6: 07f1 lsls r1, r6, #31
  17007. 80071a8: d508 bpl.n 80071bc <_dtoa_r+0x35c>
  17008. 80071aa: e9dd 010a ldrd r0, r1, [sp, #40] ; 0x28
  17009. 80071ae: e9d7 2300 ldrd r2, r3, [r7]
  17010. 80071b2: f7f9 f9f1 bl 8000598 <__aeabi_dmul>
  17011. 80071b6: e9cd 010a strd r0, r1, [sp, #40] ; 0x28
  17012. 80071ba: 3501 adds r5, #1
  17013. 80071bc: 1076 asrs r6, r6, #1
  17014. 80071be: 3708 adds r7, #8
  17015. 80071c0: 2e00 cmp r6, #0
  17016. 80071c2: d1f0 bne.n 80071a6 <_dtoa_r+0x346>
  17017. 80071c4: e9dd 230a ldrd r2, r3, [sp, #40] ; 0x28
  17018. 80071c8: e9dd 0102 ldrd r0, r1, [sp, #8]
  17019. 80071cc: f7f9 fb0e bl 80007ec <__aeabi_ddiv>
  17020. 80071d0: e9cd 0102 strd r0, r1, [sp, #8]
  17021. 80071d4: e01b b.n 800720e <_dtoa_r+0x3ae>
  17022. 80071d6: 2502 movs r5, #2
  17023. 80071d8: e7a0 b.n 800711c <_dtoa_r+0x2bc>
  17024. 80071da: f000 80a4 beq.w 8007326 <_dtoa_r+0x4c6>
  17025. 80071de: e9dd 010e ldrd r0, r1, [sp, #56] ; 0x38
  17026. 80071e2: f1ca 0600 rsb r6, sl, #0
  17027. 80071e6: 4ba0 ldr r3, [pc, #640] ; (8007468 <_dtoa_r+0x608>)
  17028. 80071e8: f006 020f and.w r2, r6, #15
  17029. 80071ec: eb03 03c2 add.w r3, r3, r2, lsl #3
  17030. 80071f0: e9d3 2300 ldrd r2, r3, [r3]
  17031. 80071f4: f7f9 f9d0 bl 8000598 <__aeabi_dmul>
  17032. 80071f8: 2502 movs r5, #2
  17033. 80071fa: 2300 movs r3, #0
  17034. 80071fc: e9cd 0102 strd r0, r1, [sp, #8]
  17035. 8007200: 4f9a ldr r7, [pc, #616] ; (800746c <_dtoa_r+0x60c>)
  17036. 8007202: 1136 asrs r6, r6, #4
  17037. 8007204: 2e00 cmp r6, #0
  17038. 8007206: f040 8083 bne.w 8007310 <_dtoa_r+0x4b0>
  17039. 800720a: 2b00 cmp r3, #0
  17040. 800720c: d1e0 bne.n 80071d0 <_dtoa_r+0x370>
  17041. 800720e: 9b0d ldr r3, [sp, #52] ; 0x34
  17042. 8007210: 2b00 cmp r3, #0
  17043. 8007212: f000 808a beq.w 800732a <_dtoa_r+0x4ca>
  17044. 8007216: e9dd 2302 ldrd r2, r3, [sp, #8]
  17045. 800721a: e9cd 230a strd r2, r3, [sp, #40] ; 0x28
  17046. 800721e: e9dd 010a ldrd r0, r1, [sp, #40] ; 0x28
  17047. 8007222: 2200 movs r2, #0
  17048. 8007224: 4b92 ldr r3, [pc, #584] ; (8007470 <_dtoa_r+0x610>)
  17049. 8007226: f7f9 fc29 bl 8000a7c <__aeabi_dcmplt>
  17050. 800722a: 2800 cmp r0, #0
  17051. 800722c: d07d beq.n 800732a <_dtoa_r+0x4ca>
  17052. 800722e: f1b8 0f00 cmp.w r8, #0
  17053. 8007232: d07a beq.n 800732a <_dtoa_r+0x4ca>
  17054. 8007234: 9b04 ldr r3, [sp, #16]
  17055. 8007236: 2b00 cmp r3, #0
  17056. 8007238: dd36 ble.n 80072a8 <_dtoa_r+0x448>
  17057. 800723a: e9dd 010a ldrd r0, r1, [sp, #40] ; 0x28
  17058. 800723e: 2200 movs r2, #0
  17059. 8007240: 4b8c ldr r3, [pc, #560] ; (8007474 <_dtoa_r+0x614>)
  17060. 8007242: f7f9 f9a9 bl 8000598 <__aeabi_dmul>
  17061. 8007246: e9cd 0102 strd r0, r1, [sp, #8]
  17062. 800724a: 9e04 ldr r6, [sp, #16]
  17063. 800724c: f10a 37ff add.w r7, sl, #4294967295
  17064. 8007250: 3501 adds r5, #1
  17065. 8007252: 4628 mov r0, r5
  17066. 8007254: f7f9 f936 bl 80004c4 <__aeabi_i2d>
  17067. 8007258: e9dd 2302 ldrd r2, r3, [sp, #8]
  17068. 800725c: f7f9 f99c bl 8000598 <__aeabi_dmul>
  17069. 8007260: 2200 movs r2, #0
  17070. 8007262: 4b85 ldr r3, [pc, #532] ; (8007478 <_dtoa_r+0x618>)
  17071. 8007264: f7f8 ffe2 bl 800022c <__adddf3>
  17072. 8007268: f1a1 7550 sub.w r5, r1, #54525952 ; 0x3400000
  17073. 800726c: e9cd 010a strd r0, r1, [sp, #40] ; 0x28
  17074. 8007270: 950b str r5, [sp, #44] ; 0x2c
  17075. 8007272: 2e00 cmp r6, #0
  17076. 8007274: d15c bne.n 8007330 <_dtoa_r+0x4d0>
  17077. 8007276: e9dd 0102 ldrd r0, r1, [sp, #8]
  17078. 800727a: 2200 movs r2, #0
  17079. 800727c: 4b7f ldr r3, [pc, #508] ; (800747c <_dtoa_r+0x61c>)
  17080. 800727e: f7f8 ffd3 bl 8000228 <__aeabi_dsub>
  17081. 8007282: 9a0a ldr r2, [sp, #40] ; 0x28
  17082. 8007284: 462b mov r3, r5
  17083. 8007286: e9cd 0102 strd r0, r1, [sp, #8]
  17084. 800728a: f7f9 fc15 bl 8000ab8 <__aeabi_dcmpgt>
  17085. 800728e: 2800 cmp r0, #0
  17086. 8007290: f040 8281 bne.w 8007796 <_dtoa_r+0x936>
  17087. 8007294: e9dd 0102 ldrd r0, r1, [sp, #8]
  17088. 8007298: 9a0a ldr r2, [sp, #40] ; 0x28
  17089. 800729a: f105 4300 add.w r3, r5, #2147483648 ; 0x80000000
  17090. 800729e: f7f9 fbed bl 8000a7c <__aeabi_dcmplt>
  17091. 80072a2: 2800 cmp r0, #0
  17092. 80072a4: f040 8275 bne.w 8007792 <_dtoa_r+0x932>
  17093. 80072a8: e9dd 230e ldrd r2, r3, [sp, #56] ; 0x38
  17094. 80072ac: e9cd 2302 strd r2, r3, [sp, #8]
  17095. 80072b0: 9b13 ldr r3, [sp, #76] ; 0x4c
  17096. 80072b2: 2b00 cmp r3, #0
  17097. 80072b4: f2c0 814b blt.w 800754e <_dtoa_r+0x6ee>
  17098. 80072b8: f1ba 0f0e cmp.w sl, #14
  17099. 80072bc: f300 8147 bgt.w 800754e <_dtoa_r+0x6ee>
  17100. 80072c0: 4b69 ldr r3, [pc, #420] ; (8007468 <_dtoa_r+0x608>)
  17101. 80072c2: eb03 03ca add.w r3, r3, sl, lsl #3
  17102. 80072c6: e9d3 2300 ldrd r2, r3, [r3]
  17103. 80072ca: e9cd 2304 strd r2, r3, [sp, #16]
  17104. 80072ce: 9b1f ldr r3, [sp, #124] ; 0x7c
  17105. 80072d0: 2b00 cmp r3, #0
  17106. 80072d2: f280 80d7 bge.w 8007484 <_dtoa_r+0x624>
  17107. 80072d6: f1b8 0f00 cmp.w r8, #0
  17108. 80072da: f300 80d3 bgt.w 8007484 <_dtoa_r+0x624>
  17109. 80072de: f040 8257 bne.w 8007790 <_dtoa_r+0x930>
  17110. 80072e2: e9dd 0104 ldrd r0, r1, [sp, #16]
  17111. 80072e6: 2200 movs r2, #0
  17112. 80072e8: 4b64 ldr r3, [pc, #400] ; (800747c <_dtoa_r+0x61c>)
  17113. 80072ea: f7f9 f955 bl 8000598 <__aeabi_dmul>
  17114. 80072ee: e9dd 2302 ldrd r2, r3, [sp, #8]
  17115. 80072f2: f7f9 fbd7 bl 8000aa4 <__aeabi_dcmpge>
  17116. 80072f6: 4646 mov r6, r8
  17117. 80072f8: 4647 mov r7, r8
  17118. 80072fa: 2800 cmp r0, #0
  17119. 80072fc: f040 822d bne.w 800775a <_dtoa_r+0x8fa>
  17120. 8007300: 9b06 ldr r3, [sp, #24]
  17121. 8007302: 9a06 ldr r2, [sp, #24]
  17122. 8007304: 1c5d adds r5, r3, #1
  17123. 8007306: 2331 movs r3, #49 ; 0x31
  17124. 8007308: f10a 0a01 add.w sl, sl, #1
  17125. 800730c: 7013 strb r3, [r2, #0]
  17126. 800730e: e228 b.n 8007762 <_dtoa_r+0x902>
  17127. 8007310: 07f2 lsls r2, r6, #31
  17128. 8007312: d505 bpl.n 8007320 <_dtoa_r+0x4c0>
  17129. 8007314: e9d7 2300 ldrd r2, r3, [r7]
  17130. 8007318: f7f9 f93e bl 8000598 <__aeabi_dmul>
  17131. 800731c: 2301 movs r3, #1
  17132. 800731e: 3501 adds r5, #1
  17133. 8007320: 1076 asrs r6, r6, #1
  17134. 8007322: 3708 adds r7, #8
  17135. 8007324: e76e b.n 8007204 <_dtoa_r+0x3a4>
  17136. 8007326: 2502 movs r5, #2
  17137. 8007328: e771 b.n 800720e <_dtoa_r+0x3ae>
  17138. 800732a: 4657 mov r7, sl
  17139. 800732c: 4646 mov r6, r8
  17140. 800732e: e790 b.n 8007252 <_dtoa_r+0x3f2>
  17141. 8007330: 4b4d ldr r3, [pc, #308] ; (8007468 <_dtoa_r+0x608>)
  17142. 8007332: eb03 03c6 add.w r3, r3, r6, lsl #3
  17143. 8007336: e953 0102 ldrd r0, r1, [r3, #-8]
  17144. 800733a: 9b09 ldr r3, [sp, #36] ; 0x24
  17145. 800733c: 2b00 cmp r3, #0
  17146. 800733e: d048 beq.n 80073d2 <_dtoa_r+0x572>
  17147. 8007340: 4602 mov r2, r0
  17148. 8007342: 460b mov r3, r1
  17149. 8007344: 2000 movs r0, #0
  17150. 8007346: 494e ldr r1, [pc, #312] ; (8007480 <_dtoa_r+0x620>)
  17151. 8007348: f7f9 fa50 bl 80007ec <__aeabi_ddiv>
  17152. 800734c: e9dd 230a ldrd r2, r3, [sp, #40] ; 0x28
  17153. 8007350: f7f8 ff6a bl 8000228 <__aeabi_dsub>
  17154. 8007354: e9cd 010a strd r0, r1, [sp, #40] ; 0x28
  17155. 8007358: 9d06 ldr r5, [sp, #24]
  17156. 800735a: e9dd 0102 ldrd r0, r1, [sp, #8]
  17157. 800735e: f7f9 fbcb bl 8000af8 <__aeabi_d2iz>
  17158. 8007362: 9011 str r0, [sp, #68] ; 0x44
  17159. 8007364: f7f9 f8ae bl 80004c4 <__aeabi_i2d>
  17160. 8007368: 4602 mov r2, r0
  17161. 800736a: 460b mov r3, r1
  17162. 800736c: e9dd 0102 ldrd r0, r1, [sp, #8]
  17163. 8007370: f7f8 ff5a bl 8000228 <__aeabi_dsub>
  17164. 8007374: 9b11 ldr r3, [sp, #68] ; 0x44
  17165. 8007376: e9cd 0102 strd r0, r1, [sp, #8]
  17166. 800737a: 3330 adds r3, #48 ; 0x30
  17167. 800737c: f805 3b01 strb.w r3, [r5], #1
  17168. 8007380: e9dd 230a ldrd r2, r3, [sp, #40] ; 0x28
  17169. 8007384: f7f9 fb7a bl 8000a7c <__aeabi_dcmplt>
  17170. 8007388: 2800 cmp r0, #0
  17171. 800738a: d163 bne.n 8007454 <_dtoa_r+0x5f4>
  17172. 800738c: e9dd 2302 ldrd r2, r3, [sp, #8]
  17173. 8007390: 2000 movs r0, #0
  17174. 8007392: 4937 ldr r1, [pc, #220] ; (8007470 <_dtoa_r+0x610>)
  17175. 8007394: f7f8 ff48 bl 8000228 <__aeabi_dsub>
  17176. 8007398: e9dd 230a ldrd r2, r3, [sp, #40] ; 0x28
  17177. 800739c: f7f9 fb6e bl 8000a7c <__aeabi_dcmplt>
  17178. 80073a0: 2800 cmp r0, #0
  17179. 80073a2: f040 80b5 bne.w 8007510 <_dtoa_r+0x6b0>
  17180. 80073a6: 9b06 ldr r3, [sp, #24]
  17181. 80073a8: 1aeb subs r3, r5, r3
  17182. 80073aa: 429e cmp r6, r3
  17183. 80073ac: f77f af7c ble.w 80072a8 <_dtoa_r+0x448>
  17184. 80073b0: e9dd 010a ldrd r0, r1, [sp, #40] ; 0x28
  17185. 80073b4: 2200 movs r2, #0
  17186. 80073b6: 4b2f ldr r3, [pc, #188] ; (8007474 <_dtoa_r+0x614>)
  17187. 80073b8: f7f9 f8ee bl 8000598 <__aeabi_dmul>
  17188. 80073bc: 2200 movs r2, #0
  17189. 80073be: e9cd 010a strd r0, r1, [sp, #40] ; 0x28
  17190. 80073c2: e9dd 0102 ldrd r0, r1, [sp, #8]
  17191. 80073c6: 4b2b ldr r3, [pc, #172] ; (8007474 <_dtoa_r+0x614>)
  17192. 80073c8: f7f9 f8e6 bl 8000598 <__aeabi_dmul>
  17193. 80073cc: e9cd 0102 strd r0, r1, [sp, #8]
  17194. 80073d0: e7c3 b.n 800735a <_dtoa_r+0x4fa>
  17195. 80073d2: e9dd 230a ldrd r2, r3, [sp, #40] ; 0x28
  17196. 80073d6: f7f9 f8df bl 8000598 <__aeabi_dmul>
  17197. 80073da: 9b06 ldr r3, [sp, #24]
  17198. 80073dc: e9cd 010a strd r0, r1, [sp, #40] ; 0x28
  17199. 80073e0: 199d adds r5, r3, r6
  17200. 80073e2: 461e mov r6, r3
  17201. 80073e4: e9dd 0102 ldrd r0, r1, [sp, #8]
  17202. 80073e8: f7f9 fb86 bl 8000af8 <__aeabi_d2iz>
  17203. 80073ec: 9011 str r0, [sp, #68] ; 0x44
  17204. 80073ee: f7f9 f869 bl 80004c4 <__aeabi_i2d>
  17205. 80073f2: 4602 mov r2, r0
  17206. 80073f4: 460b mov r3, r1
  17207. 80073f6: e9dd 0102 ldrd r0, r1, [sp, #8]
  17208. 80073fa: f7f8 ff15 bl 8000228 <__aeabi_dsub>
  17209. 80073fe: 9b11 ldr r3, [sp, #68] ; 0x44
  17210. 8007400: e9cd 0102 strd r0, r1, [sp, #8]
  17211. 8007404: 3330 adds r3, #48 ; 0x30
  17212. 8007406: f806 3b01 strb.w r3, [r6], #1
  17213. 800740a: 42ae cmp r6, r5
  17214. 800740c: f04f 0200 mov.w r2, #0
  17215. 8007410: d124 bne.n 800745c <_dtoa_r+0x5fc>
  17216. 8007412: e9dd 010a ldrd r0, r1, [sp, #40] ; 0x28
  17217. 8007416: 4b1a ldr r3, [pc, #104] ; (8007480 <_dtoa_r+0x620>)
  17218. 8007418: f7f8 ff08 bl 800022c <__adddf3>
  17219. 800741c: 4602 mov r2, r0
  17220. 800741e: 460b mov r3, r1
  17221. 8007420: e9dd 0102 ldrd r0, r1, [sp, #8]
  17222. 8007424: f7f9 fb48 bl 8000ab8 <__aeabi_dcmpgt>
  17223. 8007428: 2800 cmp r0, #0
  17224. 800742a: d171 bne.n 8007510 <_dtoa_r+0x6b0>
  17225. 800742c: e9dd 230a ldrd r2, r3, [sp, #40] ; 0x28
  17226. 8007430: 2000 movs r0, #0
  17227. 8007432: 4913 ldr r1, [pc, #76] ; (8007480 <_dtoa_r+0x620>)
  17228. 8007434: f7f8 fef8 bl 8000228 <__aeabi_dsub>
  17229. 8007438: 4602 mov r2, r0
  17230. 800743a: 460b mov r3, r1
  17231. 800743c: e9dd 0102 ldrd r0, r1, [sp, #8]
  17232. 8007440: f7f9 fb1c bl 8000a7c <__aeabi_dcmplt>
  17233. 8007444: 2800 cmp r0, #0
  17234. 8007446: f43f af2f beq.w 80072a8 <_dtoa_r+0x448>
  17235. 800744a: f815 3c01 ldrb.w r3, [r5, #-1]
  17236. 800744e: 1e6a subs r2, r5, #1
  17237. 8007450: 2b30 cmp r3, #48 ; 0x30
  17238. 8007452: d001 beq.n 8007458 <_dtoa_r+0x5f8>
  17239. 8007454: 46ba mov sl, r7
  17240. 8007456: e04a b.n 80074ee <_dtoa_r+0x68e>
  17241. 8007458: 4615 mov r5, r2
  17242. 800745a: e7f6 b.n 800744a <_dtoa_r+0x5ea>
  17243. 800745c: 4b05 ldr r3, [pc, #20] ; (8007474 <_dtoa_r+0x614>)
  17244. 800745e: f7f9 f89b bl 8000598 <__aeabi_dmul>
  17245. 8007462: e9cd 0102 strd r0, r1, [sp, #8]
  17246. 8007466: e7bd b.n 80073e4 <_dtoa_r+0x584>
  17247. 8007468: 08008dd8 .word 0x08008dd8
  17248. 800746c: 08008db0 .word 0x08008db0
  17249. 8007470: 3ff00000 .word 0x3ff00000
  17250. 8007474: 40240000 .word 0x40240000
  17251. 8007478: 401c0000 .word 0x401c0000
  17252. 800747c: 40140000 .word 0x40140000
  17253. 8007480: 3fe00000 .word 0x3fe00000
  17254. 8007484: 9d06 ldr r5, [sp, #24]
  17255. 8007486: e9dd 6702 ldrd r6, r7, [sp, #8]
  17256. 800748a: e9dd 2304 ldrd r2, r3, [sp, #16]
  17257. 800748e: 4630 mov r0, r6
  17258. 8007490: 4639 mov r1, r7
  17259. 8007492: f7f9 f9ab bl 80007ec <__aeabi_ddiv>
  17260. 8007496: f7f9 fb2f bl 8000af8 <__aeabi_d2iz>
  17261. 800749a: 4681 mov r9, r0
  17262. 800749c: f7f9 f812 bl 80004c4 <__aeabi_i2d>
  17263. 80074a0: e9dd 2304 ldrd r2, r3, [sp, #16]
  17264. 80074a4: f7f9 f878 bl 8000598 <__aeabi_dmul>
  17265. 80074a8: 4602 mov r2, r0
  17266. 80074aa: 460b mov r3, r1
  17267. 80074ac: 4630 mov r0, r6
  17268. 80074ae: 4639 mov r1, r7
  17269. 80074b0: f7f8 feba bl 8000228 <__aeabi_dsub>
  17270. 80074b4: f109 0630 add.w r6, r9, #48 ; 0x30
  17271. 80074b8: f805 6b01 strb.w r6, [r5], #1
  17272. 80074bc: 9e06 ldr r6, [sp, #24]
  17273. 80074be: 4602 mov r2, r0
  17274. 80074c0: 1bae subs r6, r5, r6
  17275. 80074c2: 45b0 cmp r8, r6
  17276. 80074c4: 460b mov r3, r1
  17277. 80074c6: d135 bne.n 8007534 <_dtoa_r+0x6d4>
  17278. 80074c8: f7f8 feb0 bl 800022c <__adddf3>
  17279. 80074cc: e9dd 2304 ldrd r2, r3, [sp, #16]
  17280. 80074d0: 4606 mov r6, r0
  17281. 80074d2: 460f mov r7, r1
  17282. 80074d4: f7f9 faf0 bl 8000ab8 <__aeabi_dcmpgt>
  17283. 80074d8: b9c8 cbnz r0, 800750e <_dtoa_r+0x6ae>
  17284. 80074da: e9dd 2304 ldrd r2, r3, [sp, #16]
  17285. 80074de: 4630 mov r0, r6
  17286. 80074e0: 4639 mov r1, r7
  17287. 80074e2: f7f9 fac1 bl 8000a68 <__aeabi_dcmpeq>
  17288. 80074e6: b110 cbz r0, 80074ee <_dtoa_r+0x68e>
  17289. 80074e8: f019 0f01 tst.w r9, #1
  17290. 80074ec: d10f bne.n 800750e <_dtoa_r+0x6ae>
  17291. 80074ee: 4659 mov r1, fp
  17292. 80074f0: 4620 mov r0, r4
  17293. 80074f2: f000 fcaa bl 8007e4a <_Bfree>
  17294. 80074f6: 2300 movs r3, #0
  17295. 80074f8: 9a20 ldr r2, [sp, #128] ; 0x80
  17296. 80074fa: 702b strb r3, [r5, #0]
  17297. 80074fc: f10a 0301 add.w r3, sl, #1
  17298. 8007500: 6013 str r3, [r2, #0]
  17299. 8007502: 9b22 ldr r3, [sp, #136] ; 0x88
  17300. 8007504: 2b00 cmp r3, #0
  17301. 8007506: f43f acf3 beq.w 8006ef0 <_dtoa_r+0x90>
  17302. 800750a: 601d str r5, [r3, #0]
  17303. 800750c: e4f0 b.n 8006ef0 <_dtoa_r+0x90>
  17304. 800750e: 4657 mov r7, sl
  17305. 8007510: f815 2c01 ldrb.w r2, [r5, #-1]
  17306. 8007514: 1e6b subs r3, r5, #1
  17307. 8007516: 2a39 cmp r2, #57 ; 0x39
  17308. 8007518: d106 bne.n 8007528 <_dtoa_r+0x6c8>
  17309. 800751a: 9a06 ldr r2, [sp, #24]
  17310. 800751c: 429a cmp r2, r3
  17311. 800751e: d107 bne.n 8007530 <_dtoa_r+0x6d0>
  17312. 8007520: 2330 movs r3, #48 ; 0x30
  17313. 8007522: 7013 strb r3, [r2, #0]
  17314. 8007524: 4613 mov r3, r2
  17315. 8007526: 3701 adds r7, #1
  17316. 8007528: 781a ldrb r2, [r3, #0]
  17317. 800752a: 3201 adds r2, #1
  17318. 800752c: 701a strb r2, [r3, #0]
  17319. 800752e: e791 b.n 8007454 <_dtoa_r+0x5f4>
  17320. 8007530: 461d mov r5, r3
  17321. 8007532: e7ed b.n 8007510 <_dtoa_r+0x6b0>
  17322. 8007534: 2200 movs r2, #0
  17323. 8007536: 4b99 ldr r3, [pc, #612] ; (800779c <_dtoa_r+0x93c>)
  17324. 8007538: f7f9 f82e bl 8000598 <__aeabi_dmul>
  17325. 800753c: 2200 movs r2, #0
  17326. 800753e: 2300 movs r3, #0
  17327. 8007540: 4606 mov r6, r0
  17328. 8007542: 460f mov r7, r1
  17329. 8007544: f7f9 fa90 bl 8000a68 <__aeabi_dcmpeq>
  17330. 8007548: 2800 cmp r0, #0
  17331. 800754a: d09e beq.n 800748a <_dtoa_r+0x62a>
  17332. 800754c: e7cf b.n 80074ee <_dtoa_r+0x68e>
  17333. 800754e: 9a09 ldr r2, [sp, #36] ; 0x24
  17334. 8007550: 2a00 cmp r2, #0
  17335. 8007552: f000 8088 beq.w 8007666 <_dtoa_r+0x806>
  17336. 8007556: 9a1e ldr r2, [sp, #120] ; 0x78
  17337. 8007558: 2a01 cmp r2, #1
  17338. 800755a: dc6d bgt.n 8007638 <_dtoa_r+0x7d8>
  17339. 800755c: 9a10 ldr r2, [sp, #64] ; 0x40
  17340. 800755e: 2a00 cmp r2, #0
  17341. 8007560: d066 beq.n 8007630 <_dtoa_r+0x7d0>
  17342. 8007562: f203 4333 addw r3, r3, #1075 ; 0x433
  17343. 8007566: 464d mov r5, r9
  17344. 8007568: 9e08 ldr r6, [sp, #32]
  17345. 800756a: 9a07 ldr r2, [sp, #28]
  17346. 800756c: 2101 movs r1, #1
  17347. 800756e: 441a add r2, r3
  17348. 8007570: 4620 mov r0, r4
  17349. 8007572: 4499 add r9, r3
  17350. 8007574: 9207 str r2, [sp, #28]
  17351. 8007576: f000 fd08 bl 8007f8a <__i2b>
  17352. 800757a: 4607 mov r7, r0
  17353. 800757c: 2d00 cmp r5, #0
  17354. 800757e: dd0b ble.n 8007598 <_dtoa_r+0x738>
  17355. 8007580: 9b07 ldr r3, [sp, #28]
  17356. 8007582: 2b00 cmp r3, #0
  17357. 8007584: dd08 ble.n 8007598 <_dtoa_r+0x738>
  17358. 8007586: 42ab cmp r3, r5
  17359. 8007588: bfa8 it ge
  17360. 800758a: 462b movge r3, r5
  17361. 800758c: 9a07 ldr r2, [sp, #28]
  17362. 800758e: eba9 0903 sub.w r9, r9, r3
  17363. 8007592: 1aed subs r5, r5, r3
  17364. 8007594: 1ad3 subs r3, r2, r3
  17365. 8007596: 9307 str r3, [sp, #28]
  17366. 8007598: 9b08 ldr r3, [sp, #32]
  17367. 800759a: b1eb cbz r3, 80075d8 <_dtoa_r+0x778>
  17368. 800759c: 9b09 ldr r3, [sp, #36] ; 0x24
  17369. 800759e: 2b00 cmp r3, #0
  17370. 80075a0: d065 beq.n 800766e <_dtoa_r+0x80e>
  17371. 80075a2: b18e cbz r6, 80075c8 <_dtoa_r+0x768>
  17372. 80075a4: 4639 mov r1, r7
  17373. 80075a6: 4632 mov r2, r6
  17374. 80075a8: 4620 mov r0, r4
  17375. 80075aa: f000 fd8d bl 80080c8 <__pow5mult>
  17376. 80075ae: 465a mov r2, fp
  17377. 80075b0: 4601 mov r1, r0
  17378. 80075b2: 4607 mov r7, r0
  17379. 80075b4: 4620 mov r0, r4
  17380. 80075b6: f000 fcf1 bl 8007f9c <__multiply>
  17381. 80075ba: 4659 mov r1, fp
  17382. 80075bc: 900a str r0, [sp, #40] ; 0x28
  17383. 80075be: 4620 mov r0, r4
  17384. 80075c0: f000 fc43 bl 8007e4a <_Bfree>
  17385. 80075c4: 9b0a ldr r3, [sp, #40] ; 0x28
  17386. 80075c6: 469b mov fp, r3
  17387. 80075c8: 9b08 ldr r3, [sp, #32]
  17388. 80075ca: 1b9a subs r2, r3, r6
  17389. 80075cc: d004 beq.n 80075d8 <_dtoa_r+0x778>
  17390. 80075ce: 4659 mov r1, fp
  17391. 80075d0: 4620 mov r0, r4
  17392. 80075d2: f000 fd79 bl 80080c8 <__pow5mult>
  17393. 80075d6: 4683 mov fp, r0
  17394. 80075d8: 2101 movs r1, #1
  17395. 80075da: 4620 mov r0, r4
  17396. 80075dc: f000 fcd5 bl 8007f8a <__i2b>
  17397. 80075e0: 9b0c ldr r3, [sp, #48] ; 0x30
  17398. 80075e2: 4606 mov r6, r0
  17399. 80075e4: 2b00 cmp r3, #0
  17400. 80075e6: f000 81c6 beq.w 8007976 <_dtoa_r+0xb16>
  17401. 80075ea: 461a mov r2, r3
  17402. 80075ec: 4601 mov r1, r0
  17403. 80075ee: 4620 mov r0, r4
  17404. 80075f0: f000 fd6a bl 80080c8 <__pow5mult>
  17405. 80075f4: 9b1e ldr r3, [sp, #120] ; 0x78
  17406. 80075f6: 4606 mov r6, r0
  17407. 80075f8: 2b01 cmp r3, #1
  17408. 80075fa: dc3e bgt.n 800767a <_dtoa_r+0x81a>
  17409. 80075fc: 9b02 ldr r3, [sp, #8]
  17410. 80075fe: 2b00 cmp r3, #0
  17411. 8007600: d137 bne.n 8007672 <_dtoa_r+0x812>
  17412. 8007602: 9b03 ldr r3, [sp, #12]
  17413. 8007604: f3c3 0313 ubfx r3, r3, #0, #20
  17414. 8007608: 2b00 cmp r3, #0
  17415. 800760a: d134 bne.n 8007676 <_dtoa_r+0x816>
  17416. 800760c: 9b03 ldr r3, [sp, #12]
  17417. 800760e: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000
  17418. 8007612: 0d1b lsrs r3, r3, #20
  17419. 8007614: 051b lsls r3, r3, #20
  17420. 8007616: b12b cbz r3, 8007624 <_dtoa_r+0x7c4>
  17421. 8007618: 9b07 ldr r3, [sp, #28]
  17422. 800761a: f109 0901 add.w r9, r9, #1
  17423. 800761e: 3301 adds r3, #1
  17424. 8007620: 9307 str r3, [sp, #28]
  17425. 8007622: 2301 movs r3, #1
  17426. 8007624: 9308 str r3, [sp, #32]
  17427. 8007626: 9b0c ldr r3, [sp, #48] ; 0x30
  17428. 8007628: 2b00 cmp r3, #0
  17429. 800762a: d128 bne.n 800767e <_dtoa_r+0x81e>
  17430. 800762c: 2001 movs r0, #1
  17431. 800762e: e02e b.n 800768e <_dtoa_r+0x82e>
  17432. 8007630: 9b12 ldr r3, [sp, #72] ; 0x48
  17433. 8007632: f1c3 0336 rsb r3, r3, #54 ; 0x36
  17434. 8007636: e796 b.n 8007566 <_dtoa_r+0x706>
  17435. 8007638: 9b08 ldr r3, [sp, #32]
  17436. 800763a: f108 36ff add.w r6, r8, #4294967295
  17437. 800763e: 42b3 cmp r3, r6
  17438. 8007640: bfb7 itett lt
  17439. 8007642: 9b08 ldrlt r3, [sp, #32]
  17440. 8007644: 1b9e subge r6, r3, r6
  17441. 8007646: 1af2 sublt r2, r6, r3
  17442. 8007648: 9b0c ldrlt r3, [sp, #48] ; 0x30
  17443. 800764a: bfbf itttt lt
  17444. 800764c: 9608 strlt r6, [sp, #32]
  17445. 800764e: 189b addlt r3, r3, r2
  17446. 8007650: 930c strlt r3, [sp, #48] ; 0x30
  17447. 8007652: 2600 movlt r6, #0
  17448. 8007654: f1b8 0f00 cmp.w r8, #0
  17449. 8007658: bfb9 ittee lt
  17450. 800765a: eba9 0508 sublt.w r5, r9, r8
  17451. 800765e: 2300 movlt r3, #0
  17452. 8007660: 464d movge r5, r9
  17453. 8007662: 4643 movge r3, r8
  17454. 8007664: e781 b.n 800756a <_dtoa_r+0x70a>
  17455. 8007666: 9e08 ldr r6, [sp, #32]
  17456. 8007668: 464d mov r5, r9
  17457. 800766a: 9f09 ldr r7, [sp, #36] ; 0x24
  17458. 800766c: e786 b.n 800757c <_dtoa_r+0x71c>
  17459. 800766e: 9a08 ldr r2, [sp, #32]
  17460. 8007670: e7ad b.n 80075ce <_dtoa_r+0x76e>
  17461. 8007672: 2300 movs r3, #0
  17462. 8007674: e7d6 b.n 8007624 <_dtoa_r+0x7c4>
  17463. 8007676: 9b02 ldr r3, [sp, #8]
  17464. 8007678: e7d4 b.n 8007624 <_dtoa_r+0x7c4>
  17465. 800767a: 2300 movs r3, #0
  17466. 800767c: 9308 str r3, [sp, #32]
  17467. 800767e: 6933 ldr r3, [r6, #16]
  17468. 8007680: eb06 0383 add.w r3, r6, r3, lsl #2
  17469. 8007684: 6918 ldr r0, [r3, #16]
  17470. 8007686: f000 fc32 bl 8007eee <__hi0bits>
  17471. 800768a: f1c0 0020 rsb r0, r0, #32
  17472. 800768e: 9b07 ldr r3, [sp, #28]
  17473. 8007690: 4418 add r0, r3
  17474. 8007692: f010 001f ands.w r0, r0, #31
  17475. 8007696: d047 beq.n 8007728 <_dtoa_r+0x8c8>
  17476. 8007698: f1c0 0320 rsb r3, r0, #32
  17477. 800769c: 2b04 cmp r3, #4
  17478. 800769e: dd3b ble.n 8007718 <_dtoa_r+0x8b8>
  17479. 80076a0: 9b07 ldr r3, [sp, #28]
  17480. 80076a2: f1c0 001c rsb r0, r0, #28
  17481. 80076a6: 4481 add r9, r0
  17482. 80076a8: 4405 add r5, r0
  17483. 80076aa: 4403 add r3, r0
  17484. 80076ac: 9307 str r3, [sp, #28]
  17485. 80076ae: f1b9 0f00 cmp.w r9, #0
  17486. 80076b2: dd05 ble.n 80076c0 <_dtoa_r+0x860>
  17487. 80076b4: 4659 mov r1, fp
  17488. 80076b6: 464a mov r2, r9
  17489. 80076b8: 4620 mov r0, r4
  17490. 80076ba: f000 fd53 bl 8008164 <__lshift>
  17491. 80076be: 4683 mov fp, r0
  17492. 80076c0: 9b07 ldr r3, [sp, #28]
  17493. 80076c2: 2b00 cmp r3, #0
  17494. 80076c4: dd05 ble.n 80076d2 <_dtoa_r+0x872>
  17495. 80076c6: 4631 mov r1, r6
  17496. 80076c8: 461a mov r2, r3
  17497. 80076ca: 4620 mov r0, r4
  17498. 80076cc: f000 fd4a bl 8008164 <__lshift>
  17499. 80076d0: 4606 mov r6, r0
  17500. 80076d2: 9b0d ldr r3, [sp, #52] ; 0x34
  17501. 80076d4: b353 cbz r3, 800772c <_dtoa_r+0x8cc>
  17502. 80076d6: 4631 mov r1, r6
  17503. 80076d8: 4658 mov r0, fp
  17504. 80076da: f000 fd97 bl 800820c <__mcmp>
  17505. 80076de: 2800 cmp r0, #0
  17506. 80076e0: da24 bge.n 800772c <_dtoa_r+0x8cc>
  17507. 80076e2: 2300 movs r3, #0
  17508. 80076e4: 4659 mov r1, fp
  17509. 80076e6: 220a movs r2, #10
  17510. 80076e8: 4620 mov r0, r4
  17511. 80076ea: f000 fbc5 bl 8007e78 <__multadd>
  17512. 80076ee: 9b09 ldr r3, [sp, #36] ; 0x24
  17513. 80076f0: f10a 3aff add.w sl, sl, #4294967295
  17514. 80076f4: 4683 mov fp, r0
  17515. 80076f6: 2b00 cmp r3, #0
  17516. 80076f8: f000 8144 beq.w 8007984 <_dtoa_r+0xb24>
  17517. 80076fc: 2300 movs r3, #0
  17518. 80076fe: 4639 mov r1, r7
  17519. 8007700: 220a movs r2, #10
  17520. 8007702: 4620 mov r0, r4
  17521. 8007704: f000 fbb8 bl 8007e78 <__multadd>
  17522. 8007708: 9b04 ldr r3, [sp, #16]
  17523. 800770a: 4607 mov r7, r0
  17524. 800770c: 2b00 cmp r3, #0
  17525. 800770e: dc4d bgt.n 80077ac <_dtoa_r+0x94c>
  17526. 8007710: 9b1e ldr r3, [sp, #120] ; 0x78
  17527. 8007712: 2b02 cmp r3, #2
  17528. 8007714: dd4a ble.n 80077ac <_dtoa_r+0x94c>
  17529. 8007716: e011 b.n 800773c <_dtoa_r+0x8dc>
  17530. 8007718: d0c9 beq.n 80076ae <_dtoa_r+0x84e>
  17531. 800771a: 9a07 ldr r2, [sp, #28]
  17532. 800771c: 331c adds r3, #28
  17533. 800771e: 441a add r2, r3
  17534. 8007720: 4499 add r9, r3
  17535. 8007722: 441d add r5, r3
  17536. 8007724: 4613 mov r3, r2
  17537. 8007726: e7c1 b.n 80076ac <_dtoa_r+0x84c>
  17538. 8007728: 4603 mov r3, r0
  17539. 800772a: e7f6 b.n 800771a <_dtoa_r+0x8ba>
  17540. 800772c: f1b8 0f00 cmp.w r8, #0
  17541. 8007730: dc36 bgt.n 80077a0 <_dtoa_r+0x940>
  17542. 8007732: 9b1e ldr r3, [sp, #120] ; 0x78
  17543. 8007734: 2b02 cmp r3, #2
  17544. 8007736: dd33 ble.n 80077a0 <_dtoa_r+0x940>
  17545. 8007738: f8cd 8010 str.w r8, [sp, #16]
  17546. 800773c: 9b04 ldr r3, [sp, #16]
  17547. 800773e: b963 cbnz r3, 800775a <_dtoa_r+0x8fa>
  17548. 8007740: 4631 mov r1, r6
  17549. 8007742: 2205 movs r2, #5
  17550. 8007744: 4620 mov r0, r4
  17551. 8007746: f000 fb97 bl 8007e78 <__multadd>
  17552. 800774a: 4601 mov r1, r0
  17553. 800774c: 4606 mov r6, r0
  17554. 800774e: 4658 mov r0, fp
  17555. 8007750: f000 fd5c bl 800820c <__mcmp>
  17556. 8007754: 2800 cmp r0, #0
  17557. 8007756: f73f add3 bgt.w 8007300 <_dtoa_r+0x4a0>
  17558. 800775a: 9b1f ldr r3, [sp, #124] ; 0x7c
  17559. 800775c: 9d06 ldr r5, [sp, #24]
  17560. 800775e: ea6f 0a03 mvn.w sl, r3
  17561. 8007762: f04f 0900 mov.w r9, #0
  17562. 8007766: 4631 mov r1, r6
  17563. 8007768: 4620 mov r0, r4
  17564. 800776a: f000 fb6e bl 8007e4a <_Bfree>
  17565. 800776e: 2f00 cmp r7, #0
  17566. 8007770: f43f aebd beq.w 80074ee <_dtoa_r+0x68e>
  17567. 8007774: f1b9 0f00 cmp.w r9, #0
  17568. 8007778: d005 beq.n 8007786 <_dtoa_r+0x926>
  17569. 800777a: 45b9 cmp r9, r7
  17570. 800777c: d003 beq.n 8007786 <_dtoa_r+0x926>
  17571. 800777e: 4649 mov r1, r9
  17572. 8007780: 4620 mov r0, r4
  17573. 8007782: f000 fb62 bl 8007e4a <_Bfree>
  17574. 8007786: 4639 mov r1, r7
  17575. 8007788: 4620 mov r0, r4
  17576. 800778a: f000 fb5e bl 8007e4a <_Bfree>
  17577. 800778e: e6ae b.n 80074ee <_dtoa_r+0x68e>
  17578. 8007790: 2600 movs r6, #0
  17579. 8007792: 4637 mov r7, r6
  17580. 8007794: e7e1 b.n 800775a <_dtoa_r+0x8fa>
  17581. 8007796: 46ba mov sl, r7
  17582. 8007798: 4637 mov r7, r6
  17583. 800779a: e5b1 b.n 8007300 <_dtoa_r+0x4a0>
  17584. 800779c: 40240000 .word 0x40240000
  17585. 80077a0: 9b09 ldr r3, [sp, #36] ; 0x24
  17586. 80077a2: f8cd 8010 str.w r8, [sp, #16]
  17587. 80077a6: 2b00 cmp r3, #0
  17588. 80077a8: f000 80f3 beq.w 8007992 <_dtoa_r+0xb32>
  17589. 80077ac: 2d00 cmp r5, #0
  17590. 80077ae: dd05 ble.n 80077bc <_dtoa_r+0x95c>
  17591. 80077b0: 4639 mov r1, r7
  17592. 80077b2: 462a mov r2, r5
  17593. 80077b4: 4620 mov r0, r4
  17594. 80077b6: f000 fcd5 bl 8008164 <__lshift>
  17595. 80077ba: 4607 mov r7, r0
  17596. 80077bc: 9b08 ldr r3, [sp, #32]
  17597. 80077be: 2b00 cmp r3, #0
  17598. 80077c0: d04c beq.n 800785c <_dtoa_r+0x9fc>
  17599. 80077c2: 6879 ldr r1, [r7, #4]
  17600. 80077c4: 4620 mov r0, r4
  17601. 80077c6: f000 fb0c bl 8007de2 <_Balloc>
  17602. 80077ca: 4605 mov r5, r0
  17603. 80077cc: 693a ldr r2, [r7, #16]
  17604. 80077ce: f107 010c add.w r1, r7, #12
  17605. 80077d2: 3202 adds r2, #2
  17606. 80077d4: 0092 lsls r2, r2, #2
  17607. 80077d6: 300c adds r0, #12
  17608. 80077d8: f000 faf8 bl 8007dcc <memcpy>
  17609. 80077dc: 2201 movs r2, #1
  17610. 80077de: 4629 mov r1, r5
  17611. 80077e0: 4620 mov r0, r4
  17612. 80077e2: f000 fcbf bl 8008164 <__lshift>
  17613. 80077e6: 46b9 mov r9, r7
  17614. 80077e8: 4607 mov r7, r0
  17615. 80077ea: 9b06 ldr r3, [sp, #24]
  17616. 80077ec: 9307 str r3, [sp, #28]
  17617. 80077ee: 9b02 ldr r3, [sp, #8]
  17618. 80077f0: f003 0301 and.w r3, r3, #1
  17619. 80077f4: 9308 str r3, [sp, #32]
  17620. 80077f6: 4631 mov r1, r6
  17621. 80077f8: 4658 mov r0, fp
  17622. 80077fa: f7ff faa3 bl 8006d44 <quorem>
  17623. 80077fe: 4649 mov r1, r9
  17624. 8007800: 4605 mov r5, r0
  17625. 8007802: f100 0830 add.w r8, r0, #48 ; 0x30
  17626. 8007806: 4658 mov r0, fp
  17627. 8007808: f000 fd00 bl 800820c <__mcmp>
  17628. 800780c: 463a mov r2, r7
  17629. 800780e: 9002 str r0, [sp, #8]
  17630. 8007810: 4631 mov r1, r6
  17631. 8007812: 4620 mov r0, r4
  17632. 8007814: f000 fd14 bl 8008240 <__mdiff>
  17633. 8007818: 68c3 ldr r3, [r0, #12]
  17634. 800781a: 4602 mov r2, r0
  17635. 800781c: bb03 cbnz r3, 8007860 <_dtoa_r+0xa00>
  17636. 800781e: 4601 mov r1, r0
  17637. 8007820: 9009 str r0, [sp, #36] ; 0x24
  17638. 8007822: 4658 mov r0, fp
  17639. 8007824: f000 fcf2 bl 800820c <__mcmp>
  17640. 8007828: 4603 mov r3, r0
  17641. 800782a: 9a09 ldr r2, [sp, #36] ; 0x24
  17642. 800782c: 4611 mov r1, r2
  17643. 800782e: 4620 mov r0, r4
  17644. 8007830: 9309 str r3, [sp, #36] ; 0x24
  17645. 8007832: f000 fb0a bl 8007e4a <_Bfree>
  17646. 8007836: 9b09 ldr r3, [sp, #36] ; 0x24
  17647. 8007838: b9a3 cbnz r3, 8007864 <_dtoa_r+0xa04>
  17648. 800783a: 9a1e ldr r2, [sp, #120] ; 0x78
  17649. 800783c: b992 cbnz r2, 8007864 <_dtoa_r+0xa04>
  17650. 800783e: 9a08 ldr r2, [sp, #32]
  17651. 8007840: b982 cbnz r2, 8007864 <_dtoa_r+0xa04>
  17652. 8007842: f1b8 0f39 cmp.w r8, #57 ; 0x39
  17653. 8007846: d029 beq.n 800789c <_dtoa_r+0xa3c>
  17654. 8007848: 9b02 ldr r3, [sp, #8]
  17655. 800784a: 2b00 cmp r3, #0
  17656. 800784c: dd01 ble.n 8007852 <_dtoa_r+0x9f2>
  17657. 800784e: f105 0831 add.w r8, r5, #49 ; 0x31
  17658. 8007852: 9b07 ldr r3, [sp, #28]
  17659. 8007854: 1c5d adds r5, r3, #1
  17660. 8007856: f883 8000 strb.w r8, [r3]
  17661. 800785a: e784 b.n 8007766 <_dtoa_r+0x906>
  17662. 800785c: 4638 mov r0, r7
  17663. 800785e: e7c2 b.n 80077e6 <_dtoa_r+0x986>
  17664. 8007860: 2301 movs r3, #1
  17665. 8007862: e7e3 b.n 800782c <_dtoa_r+0x9cc>
  17666. 8007864: 9a02 ldr r2, [sp, #8]
  17667. 8007866: 2a00 cmp r2, #0
  17668. 8007868: db04 blt.n 8007874 <_dtoa_r+0xa14>
  17669. 800786a: d123 bne.n 80078b4 <_dtoa_r+0xa54>
  17670. 800786c: 9a1e ldr r2, [sp, #120] ; 0x78
  17671. 800786e: bb0a cbnz r2, 80078b4 <_dtoa_r+0xa54>
  17672. 8007870: 9a08 ldr r2, [sp, #32]
  17673. 8007872: b9fa cbnz r2, 80078b4 <_dtoa_r+0xa54>
  17674. 8007874: 2b00 cmp r3, #0
  17675. 8007876: ddec ble.n 8007852 <_dtoa_r+0x9f2>
  17676. 8007878: 4659 mov r1, fp
  17677. 800787a: 2201 movs r2, #1
  17678. 800787c: 4620 mov r0, r4
  17679. 800787e: f000 fc71 bl 8008164 <__lshift>
  17680. 8007882: 4631 mov r1, r6
  17681. 8007884: 4683 mov fp, r0
  17682. 8007886: f000 fcc1 bl 800820c <__mcmp>
  17683. 800788a: 2800 cmp r0, #0
  17684. 800788c: dc03 bgt.n 8007896 <_dtoa_r+0xa36>
  17685. 800788e: d1e0 bne.n 8007852 <_dtoa_r+0x9f2>
  17686. 8007890: f018 0f01 tst.w r8, #1
  17687. 8007894: d0dd beq.n 8007852 <_dtoa_r+0x9f2>
  17688. 8007896: f1b8 0f39 cmp.w r8, #57 ; 0x39
  17689. 800789a: d1d8 bne.n 800784e <_dtoa_r+0x9ee>
  17690. 800789c: 9b07 ldr r3, [sp, #28]
  17691. 800789e: 9a07 ldr r2, [sp, #28]
  17692. 80078a0: 1c5d adds r5, r3, #1
  17693. 80078a2: 2339 movs r3, #57 ; 0x39
  17694. 80078a4: 7013 strb r3, [r2, #0]
  17695. 80078a6: f815 3c01 ldrb.w r3, [r5, #-1]
  17696. 80078aa: 1e6a subs r2, r5, #1
  17697. 80078ac: 2b39 cmp r3, #57 ; 0x39
  17698. 80078ae: d04d beq.n 800794c <_dtoa_r+0xaec>
  17699. 80078b0: 3301 adds r3, #1
  17700. 80078b2: e052 b.n 800795a <_dtoa_r+0xafa>
  17701. 80078b4: 9a07 ldr r2, [sp, #28]
  17702. 80078b6: 2b00 cmp r3, #0
  17703. 80078b8: f102 0501 add.w r5, r2, #1
  17704. 80078bc: dd06 ble.n 80078cc <_dtoa_r+0xa6c>
  17705. 80078be: f1b8 0f39 cmp.w r8, #57 ; 0x39
  17706. 80078c2: d0eb beq.n 800789c <_dtoa_r+0xa3c>
  17707. 80078c4: f108 0801 add.w r8, r8, #1
  17708. 80078c8: 9b07 ldr r3, [sp, #28]
  17709. 80078ca: e7c4 b.n 8007856 <_dtoa_r+0x9f6>
  17710. 80078cc: 9b06 ldr r3, [sp, #24]
  17711. 80078ce: 9a04 ldr r2, [sp, #16]
  17712. 80078d0: 1aeb subs r3, r5, r3
  17713. 80078d2: 4293 cmp r3, r2
  17714. 80078d4: f805 8c01 strb.w r8, [r5, #-1]
  17715. 80078d8: d021 beq.n 800791e <_dtoa_r+0xabe>
  17716. 80078da: 4659 mov r1, fp
  17717. 80078dc: 2300 movs r3, #0
  17718. 80078de: 220a movs r2, #10
  17719. 80078e0: 4620 mov r0, r4
  17720. 80078e2: f000 fac9 bl 8007e78 <__multadd>
  17721. 80078e6: 45b9 cmp r9, r7
  17722. 80078e8: 4683 mov fp, r0
  17723. 80078ea: f04f 0300 mov.w r3, #0
  17724. 80078ee: f04f 020a mov.w r2, #10
  17725. 80078f2: 4649 mov r1, r9
  17726. 80078f4: 4620 mov r0, r4
  17727. 80078f6: d105 bne.n 8007904 <_dtoa_r+0xaa4>
  17728. 80078f8: f000 fabe bl 8007e78 <__multadd>
  17729. 80078fc: 4681 mov r9, r0
  17730. 80078fe: 4607 mov r7, r0
  17731. 8007900: 9507 str r5, [sp, #28]
  17732. 8007902: e778 b.n 80077f6 <_dtoa_r+0x996>
  17733. 8007904: f000 fab8 bl 8007e78 <__multadd>
  17734. 8007908: 4639 mov r1, r7
  17735. 800790a: 4681 mov r9, r0
  17736. 800790c: 2300 movs r3, #0
  17737. 800790e: 220a movs r2, #10
  17738. 8007910: 4620 mov r0, r4
  17739. 8007912: f000 fab1 bl 8007e78 <__multadd>
  17740. 8007916: 4607 mov r7, r0
  17741. 8007918: e7f2 b.n 8007900 <_dtoa_r+0xaa0>
  17742. 800791a: f04f 0900 mov.w r9, #0
  17743. 800791e: 4659 mov r1, fp
  17744. 8007920: 2201 movs r2, #1
  17745. 8007922: 4620 mov r0, r4
  17746. 8007924: f000 fc1e bl 8008164 <__lshift>
  17747. 8007928: 4631 mov r1, r6
  17748. 800792a: 4683 mov fp, r0
  17749. 800792c: f000 fc6e bl 800820c <__mcmp>
  17750. 8007930: 2800 cmp r0, #0
  17751. 8007932: dcb8 bgt.n 80078a6 <_dtoa_r+0xa46>
  17752. 8007934: d102 bne.n 800793c <_dtoa_r+0xadc>
  17753. 8007936: f018 0f01 tst.w r8, #1
  17754. 800793a: d1b4 bne.n 80078a6 <_dtoa_r+0xa46>
  17755. 800793c: f815 3c01 ldrb.w r3, [r5, #-1]
  17756. 8007940: 1e6a subs r2, r5, #1
  17757. 8007942: 2b30 cmp r3, #48 ; 0x30
  17758. 8007944: f47f af0f bne.w 8007766 <_dtoa_r+0x906>
  17759. 8007948: 4615 mov r5, r2
  17760. 800794a: e7f7 b.n 800793c <_dtoa_r+0xadc>
  17761. 800794c: 9b06 ldr r3, [sp, #24]
  17762. 800794e: 4293 cmp r3, r2
  17763. 8007950: d105 bne.n 800795e <_dtoa_r+0xafe>
  17764. 8007952: 2331 movs r3, #49 ; 0x31
  17765. 8007954: 9a06 ldr r2, [sp, #24]
  17766. 8007956: f10a 0a01 add.w sl, sl, #1
  17767. 800795a: 7013 strb r3, [r2, #0]
  17768. 800795c: e703 b.n 8007766 <_dtoa_r+0x906>
  17769. 800795e: 4615 mov r5, r2
  17770. 8007960: e7a1 b.n 80078a6 <_dtoa_r+0xa46>
  17771. 8007962: 4b17 ldr r3, [pc, #92] ; (80079c0 <_dtoa_r+0xb60>)
  17772. 8007964: f7ff bae1 b.w 8006f2a <_dtoa_r+0xca>
  17773. 8007968: 9b22 ldr r3, [sp, #136] ; 0x88
  17774. 800796a: 2b00 cmp r3, #0
  17775. 800796c: f47f aabb bne.w 8006ee6 <_dtoa_r+0x86>
  17776. 8007970: 4b14 ldr r3, [pc, #80] ; (80079c4 <_dtoa_r+0xb64>)
  17777. 8007972: f7ff bada b.w 8006f2a <_dtoa_r+0xca>
  17778. 8007976: 9b1e ldr r3, [sp, #120] ; 0x78
  17779. 8007978: 2b01 cmp r3, #1
  17780. 800797a: f77f ae3f ble.w 80075fc <_dtoa_r+0x79c>
  17781. 800797e: 9b0c ldr r3, [sp, #48] ; 0x30
  17782. 8007980: 9308 str r3, [sp, #32]
  17783. 8007982: e653 b.n 800762c <_dtoa_r+0x7cc>
  17784. 8007984: 9b04 ldr r3, [sp, #16]
  17785. 8007986: 2b00 cmp r3, #0
  17786. 8007988: dc03 bgt.n 8007992 <_dtoa_r+0xb32>
  17787. 800798a: 9b1e ldr r3, [sp, #120] ; 0x78
  17788. 800798c: 2b02 cmp r3, #2
  17789. 800798e: f73f aed5 bgt.w 800773c <_dtoa_r+0x8dc>
  17790. 8007992: 9d06 ldr r5, [sp, #24]
  17791. 8007994: 4631 mov r1, r6
  17792. 8007996: 4658 mov r0, fp
  17793. 8007998: f7ff f9d4 bl 8006d44 <quorem>
  17794. 800799c: 9b06 ldr r3, [sp, #24]
  17795. 800799e: f100 0830 add.w r8, r0, #48 ; 0x30
  17796. 80079a2: f805 8b01 strb.w r8, [r5], #1
  17797. 80079a6: 9a04 ldr r2, [sp, #16]
  17798. 80079a8: 1aeb subs r3, r5, r3
  17799. 80079aa: 429a cmp r2, r3
  17800. 80079ac: ddb5 ble.n 800791a <_dtoa_r+0xaba>
  17801. 80079ae: 4659 mov r1, fp
  17802. 80079b0: 2300 movs r3, #0
  17803. 80079b2: 220a movs r2, #10
  17804. 80079b4: 4620 mov r0, r4
  17805. 80079b6: f000 fa5f bl 8007e78 <__multadd>
  17806. 80079ba: 4683 mov fp, r0
  17807. 80079bc: e7ea b.n 8007994 <_dtoa_r+0xb34>
  17808. 80079be: bf00 nop
  17809. 80079c0: 08008d18 .word 0x08008d18
  17810. 80079c4: 08008d3c .word 0x08008d3c
  17811. 080079c8 <__sflush_r>:
  17812. 80079c8: 898a ldrh r2, [r1, #12]
  17813. 80079ca: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
  17814. 80079ce: 4605 mov r5, r0
  17815. 80079d0: 0710 lsls r0, r2, #28
  17816. 80079d2: 460c mov r4, r1
  17817. 80079d4: d458 bmi.n 8007a88 <__sflush_r+0xc0>
  17818. 80079d6: 684b ldr r3, [r1, #4]
  17819. 80079d8: 2b00 cmp r3, #0
  17820. 80079da: dc05 bgt.n 80079e8 <__sflush_r+0x20>
  17821. 80079dc: 6c0b ldr r3, [r1, #64] ; 0x40
  17822. 80079de: 2b00 cmp r3, #0
  17823. 80079e0: dc02 bgt.n 80079e8 <__sflush_r+0x20>
  17824. 80079e2: 2000 movs r0, #0
  17825. 80079e4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
  17826. 80079e8: 6ae6 ldr r6, [r4, #44] ; 0x2c
  17827. 80079ea: 2e00 cmp r6, #0
  17828. 80079ec: d0f9 beq.n 80079e2 <__sflush_r+0x1a>
  17829. 80079ee: 2300 movs r3, #0
  17830. 80079f0: f412 5280 ands.w r2, r2, #4096 ; 0x1000
  17831. 80079f4: 682f ldr r7, [r5, #0]
  17832. 80079f6: 6a21 ldr r1, [r4, #32]
  17833. 80079f8: 602b str r3, [r5, #0]
  17834. 80079fa: d032 beq.n 8007a62 <__sflush_r+0x9a>
  17835. 80079fc: 6d60 ldr r0, [r4, #84] ; 0x54
  17836. 80079fe: 89a3 ldrh r3, [r4, #12]
  17837. 8007a00: 075a lsls r2, r3, #29
  17838. 8007a02: d505 bpl.n 8007a10 <__sflush_r+0x48>
  17839. 8007a04: 6863 ldr r3, [r4, #4]
  17840. 8007a06: 1ac0 subs r0, r0, r3
  17841. 8007a08: 6b63 ldr r3, [r4, #52] ; 0x34
  17842. 8007a0a: b10b cbz r3, 8007a10 <__sflush_r+0x48>
  17843. 8007a0c: 6c23 ldr r3, [r4, #64] ; 0x40
  17844. 8007a0e: 1ac0 subs r0, r0, r3
  17845. 8007a10: 2300 movs r3, #0
  17846. 8007a12: 4602 mov r2, r0
  17847. 8007a14: 6ae6 ldr r6, [r4, #44] ; 0x2c
  17848. 8007a16: 6a21 ldr r1, [r4, #32]
  17849. 8007a18: 4628 mov r0, r5
  17850. 8007a1a: 47b0 blx r6
  17851. 8007a1c: 1c43 adds r3, r0, #1
  17852. 8007a1e: 89a3 ldrh r3, [r4, #12]
  17853. 8007a20: d106 bne.n 8007a30 <__sflush_r+0x68>
  17854. 8007a22: 6829 ldr r1, [r5, #0]
  17855. 8007a24: 291d cmp r1, #29
  17856. 8007a26: d848 bhi.n 8007aba <__sflush_r+0xf2>
  17857. 8007a28: 4a29 ldr r2, [pc, #164] ; (8007ad0 <__sflush_r+0x108>)
  17858. 8007a2a: 40ca lsrs r2, r1
  17859. 8007a2c: 07d6 lsls r6, r2, #31
  17860. 8007a2e: d544 bpl.n 8007aba <__sflush_r+0xf2>
  17861. 8007a30: 2200 movs r2, #0
  17862. 8007a32: 6062 str r2, [r4, #4]
  17863. 8007a34: 6922 ldr r2, [r4, #16]
  17864. 8007a36: 04d9 lsls r1, r3, #19
  17865. 8007a38: 6022 str r2, [r4, #0]
  17866. 8007a3a: d504 bpl.n 8007a46 <__sflush_r+0x7e>
  17867. 8007a3c: 1c42 adds r2, r0, #1
  17868. 8007a3e: d101 bne.n 8007a44 <__sflush_r+0x7c>
  17869. 8007a40: 682b ldr r3, [r5, #0]
  17870. 8007a42: b903 cbnz r3, 8007a46 <__sflush_r+0x7e>
  17871. 8007a44: 6560 str r0, [r4, #84] ; 0x54
  17872. 8007a46: 6b61 ldr r1, [r4, #52] ; 0x34
  17873. 8007a48: 602f str r7, [r5, #0]
  17874. 8007a4a: 2900 cmp r1, #0
  17875. 8007a4c: d0c9 beq.n 80079e2 <__sflush_r+0x1a>
  17876. 8007a4e: f104 0344 add.w r3, r4, #68 ; 0x44
  17877. 8007a52: 4299 cmp r1, r3
  17878. 8007a54: d002 beq.n 8007a5c <__sflush_r+0x94>
  17879. 8007a56: 4628 mov r0, r5
  17880. 8007a58: f000 fcae bl 80083b8 <_free_r>
  17881. 8007a5c: 2000 movs r0, #0
  17882. 8007a5e: 6360 str r0, [r4, #52] ; 0x34
  17883. 8007a60: e7c0 b.n 80079e4 <__sflush_r+0x1c>
  17884. 8007a62: 2301 movs r3, #1
  17885. 8007a64: 4628 mov r0, r5
  17886. 8007a66: 47b0 blx r6
  17887. 8007a68: 1c41 adds r1, r0, #1
  17888. 8007a6a: d1c8 bne.n 80079fe <__sflush_r+0x36>
  17889. 8007a6c: 682b ldr r3, [r5, #0]
  17890. 8007a6e: 2b00 cmp r3, #0
  17891. 8007a70: d0c5 beq.n 80079fe <__sflush_r+0x36>
  17892. 8007a72: 2b1d cmp r3, #29
  17893. 8007a74: d001 beq.n 8007a7a <__sflush_r+0xb2>
  17894. 8007a76: 2b16 cmp r3, #22
  17895. 8007a78: d101 bne.n 8007a7e <__sflush_r+0xb6>
  17896. 8007a7a: 602f str r7, [r5, #0]
  17897. 8007a7c: e7b1 b.n 80079e2 <__sflush_r+0x1a>
  17898. 8007a7e: 89a3 ldrh r3, [r4, #12]
  17899. 8007a80: f043 0340 orr.w r3, r3, #64 ; 0x40
  17900. 8007a84: 81a3 strh r3, [r4, #12]
  17901. 8007a86: e7ad b.n 80079e4 <__sflush_r+0x1c>
  17902. 8007a88: 690f ldr r7, [r1, #16]
  17903. 8007a8a: 2f00 cmp r7, #0
  17904. 8007a8c: d0a9 beq.n 80079e2 <__sflush_r+0x1a>
  17905. 8007a8e: 0793 lsls r3, r2, #30
  17906. 8007a90: bf18 it ne
  17907. 8007a92: 2300 movne r3, #0
  17908. 8007a94: 680e ldr r6, [r1, #0]
  17909. 8007a96: bf08 it eq
  17910. 8007a98: 694b ldreq r3, [r1, #20]
  17911. 8007a9a: eba6 0807 sub.w r8, r6, r7
  17912. 8007a9e: 600f str r7, [r1, #0]
  17913. 8007aa0: 608b str r3, [r1, #8]
  17914. 8007aa2: f1b8 0f00 cmp.w r8, #0
  17915. 8007aa6: dd9c ble.n 80079e2 <__sflush_r+0x1a>
  17916. 8007aa8: 4643 mov r3, r8
  17917. 8007aaa: 463a mov r2, r7
  17918. 8007aac: 6a21 ldr r1, [r4, #32]
  17919. 8007aae: 4628 mov r0, r5
  17920. 8007ab0: 6aa6 ldr r6, [r4, #40] ; 0x28
  17921. 8007ab2: 47b0 blx r6
  17922. 8007ab4: 2800 cmp r0, #0
  17923. 8007ab6: dc06 bgt.n 8007ac6 <__sflush_r+0xfe>
  17924. 8007ab8: 89a3 ldrh r3, [r4, #12]
  17925. 8007aba: f043 0340 orr.w r3, r3, #64 ; 0x40
  17926. 8007abe: 81a3 strh r3, [r4, #12]
  17927. 8007ac0: f04f 30ff mov.w r0, #4294967295
  17928. 8007ac4: e78e b.n 80079e4 <__sflush_r+0x1c>
  17929. 8007ac6: 4407 add r7, r0
  17930. 8007ac8: eba8 0800 sub.w r8, r8, r0
  17931. 8007acc: e7e9 b.n 8007aa2 <__sflush_r+0xda>
  17932. 8007ace: bf00 nop
  17933. 8007ad0: 20400001 .word 0x20400001
  17934. 08007ad4 <_fflush_r>:
  17935. 8007ad4: b538 push {r3, r4, r5, lr}
  17936. 8007ad6: 690b ldr r3, [r1, #16]
  17937. 8007ad8: 4605 mov r5, r0
  17938. 8007ada: 460c mov r4, r1
  17939. 8007adc: b1db cbz r3, 8007b16 <_fflush_r+0x42>
  17940. 8007ade: b118 cbz r0, 8007ae8 <_fflush_r+0x14>
  17941. 8007ae0: 6983 ldr r3, [r0, #24]
  17942. 8007ae2: b90b cbnz r3, 8007ae8 <_fflush_r+0x14>
  17943. 8007ae4: f000 f860 bl 8007ba8 <__sinit>
  17944. 8007ae8: 4b0c ldr r3, [pc, #48] ; (8007b1c <_fflush_r+0x48>)
  17945. 8007aea: 429c cmp r4, r3
  17946. 8007aec: d109 bne.n 8007b02 <_fflush_r+0x2e>
  17947. 8007aee: 686c ldr r4, [r5, #4]
  17948. 8007af0: f9b4 300c ldrsh.w r3, [r4, #12]
  17949. 8007af4: b17b cbz r3, 8007b16 <_fflush_r+0x42>
  17950. 8007af6: 4621 mov r1, r4
  17951. 8007af8: 4628 mov r0, r5
  17952. 8007afa: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr}
  17953. 8007afe: f7ff bf63 b.w 80079c8 <__sflush_r>
  17954. 8007b02: 4b07 ldr r3, [pc, #28] ; (8007b20 <_fflush_r+0x4c>)
  17955. 8007b04: 429c cmp r4, r3
  17956. 8007b06: d101 bne.n 8007b0c <_fflush_r+0x38>
  17957. 8007b08: 68ac ldr r4, [r5, #8]
  17958. 8007b0a: e7f1 b.n 8007af0 <_fflush_r+0x1c>
  17959. 8007b0c: 4b05 ldr r3, [pc, #20] ; (8007b24 <_fflush_r+0x50>)
  17960. 8007b0e: 429c cmp r4, r3
  17961. 8007b10: bf08 it eq
  17962. 8007b12: 68ec ldreq r4, [r5, #12]
  17963. 8007b14: e7ec b.n 8007af0 <_fflush_r+0x1c>
  17964. 8007b16: 2000 movs r0, #0
  17965. 8007b18: bd38 pop {r3, r4, r5, pc}
  17966. 8007b1a: bf00 nop
  17967. 8007b1c: 08008d6c .word 0x08008d6c
  17968. 8007b20: 08008d8c .word 0x08008d8c
  17969. 8007b24: 08008d4c .word 0x08008d4c
  17970. 08007b28 <std>:
  17971. 8007b28: 2300 movs r3, #0
  17972. 8007b2a: b510 push {r4, lr}
  17973. 8007b2c: 4604 mov r4, r0
  17974. 8007b2e: e9c0 3300 strd r3, r3, [r0]
  17975. 8007b32: 6083 str r3, [r0, #8]
  17976. 8007b34: 8181 strh r1, [r0, #12]
  17977. 8007b36: 6643 str r3, [r0, #100] ; 0x64
  17978. 8007b38: 81c2 strh r2, [r0, #14]
  17979. 8007b3a: e9c0 3304 strd r3, r3, [r0, #16]
  17980. 8007b3e: 6183 str r3, [r0, #24]
  17981. 8007b40: 4619 mov r1, r3
  17982. 8007b42: 2208 movs r2, #8
  17983. 8007b44: 305c adds r0, #92 ; 0x5c
  17984. 8007b46: f7fe fab3 bl 80060b0 <memset>
  17985. 8007b4a: 4b05 ldr r3, [pc, #20] ; (8007b60 <std+0x38>)
  17986. 8007b4c: 6224 str r4, [r4, #32]
  17987. 8007b4e: 6263 str r3, [r4, #36] ; 0x24
  17988. 8007b50: 4b04 ldr r3, [pc, #16] ; (8007b64 <std+0x3c>)
  17989. 8007b52: 62a3 str r3, [r4, #40] ; 0x28
  17990. 8007b54: 4b04 ldr r3, [pc, #16] ; (8007b68 <std+0x40>)
  17991. 8007b56: 62e3 str r3, [r4, #44] ; 0x2c
  17992. 8007b58: 4b04 ldr r3, [pc, #16] ; (8007b6c <std+0x44>)
  17993. 8007b5a: 6323 str r3, [r4, #48] ; 0x30
  17994. 8007b5c: bd10 pop {r4, pc}
  17995. 8007b5e: bf00 nop
  17996. 8007b60: 080087a1 .word 0x080087a1
  17997. 8007b64: 080087c3 .word 0x080087c3
  17998. 8007b68: 080087fb .word 0x080087fb
  17999. 8007b6c: 0800881f .word 0x0800881f
  18000. 08007b70 <_cleanup_r>:
  18001. 8007b70: 4901 ldr r1, [pc, #4] ; (8007b78 <_cleanup_r+0x8>)
  18002. 8007b72: f000 b885 b.w 8007c80 <_fwalk_reent>
  18003. 8007b76: bf00 nop
  18004. 8007b78: 08007ad5 .word 0x08007ad5
  18005. 08007b7c <__sfmoreglue>:
  18006. 8007b7c: b570 push {r4, r5, r6, lr}
  18007. 8007b7e: 2568 movs r5, #104 ; 0x68
  18008. 8007b80: 1e4a subs r2, r1, #1
  18009. 8007b82: 4355 muls r5, r2
  18010. 8007b84: 460e mov r6, r1
  18011. 8007b86: f105 0174 add.w r1, r5, #116 ; 0x74
  18012. 8007b8a: f000 fc61 bl 8008450 <_malloc_r>
  18013. 8007b8e: 4604 mov r4, r0
  18014. 8007b90: b140 cbz r0, 8007ba4 <__sfmoreglue+0x28>
  18015. 8007b92: 2100 movs r1, #0
  18016. 8007b94: e9c0 1600 strd r1, r6, [r0]
  18017. 8007b98: 300c adds r0, #12
  18018. 8007b9a: 60a0 str r0, [r4, #8]
  18019. 8007b9c: f105 0268 add.w r2, r5, #104 ; 0x68
  18020. 8007ba0: f7fe fa86 bl 80060b0 <memset>
  18021. 8007ba4: 4620 mov r0, r4
  18022. 8007ba6: bd70 pop {r4, r5, r6, pc}
  18023. 08007ba8 <__sinit>:
  18024. 8007ba8: 6983 ldr r3, [r0, #24]
  18025. 8007baa: b510 push {r4, lr}
  18026. 8007bac: 4604 mov r4, r0
  18027. 8007bae: bb33 cbnz r3, 8007bfe <__sinit+0x56>
  18028. 8007bb0: e9c0 3312 strd r3, r3, [r0, #72] ; 0x48
  18029. 8007bb4: 6503 str r3, [r0, #80] ; 0x50
  18030. 8007bb6: 4b12 ldr r3, [pc, #72] ; (8007c00 <__sinit+0x58>)
  18031. 8007bb8: 4a12 ldr r2, [pc, #72] ; (8007c04 <__sinit+0x5c>)
  18032. 8007bba: 681b ldr r3, [r3, #0]
  18033. 8007bbc: 6282 str r2, [r0, #40] ; 0x28
  18034. 8007bbe: 4298 cmp r0, r3
  18035. 8007bc0: bf04 itt eq
  18036. 8007bc2: 2301 moveq r3, #1
  18037. 8007bc4: 6183 streq r3, [r0, #24]
  18038. 8007bc6: f000 f81f bl 8007c08 <__sfp>
  18039. 8007bca: 6060 str r0, [r4, #4]
  18040. 8007bcc: 4620 mov r0, r4
  18041. 8007bce: f000 f81b bl 8007c08 <__sfp>
  18042. 8007bd2: 60a0 str r0, [r4, #8]
  18043. 8007bd4: 4620 mov r0, r4
  18044. 8007bd6: f000 f817 bl 8007c08 <__sfp>
  18045. 8007bda: 2200 movs r2, #0
  18046. 8007bdc: 60e0 str r0, [r4, #12]
  18047. 8007bde: 2104 movs r1, #4
  18048. 8007be0: 6860 ldr r0, [r4, #4]
  18049. 8007be2: f7ff ffa1 bl 8007b28 <std>
  18050. 8007be6: 2201 movs r2, #1
  18051. 8007be8: 2109 movs r1, #9
  18052. 8007bea: 68a0 ldr r0, [r4, #8]
  18053. 8007bec: f7ff ff9c bl 8007b28 <std>
  18054. 8007bf0: 2202 movs r2, #2
  18055. 8007bf2: 2112 movs r1, #18
  18056. 8007bf4: 68e0 ldr r0, [r4, #12]
  18057. 8007bf6: f7ff ff97 bl 8007b28 <std>
  18058. 8007bfa: 2301 movs r3, #1
  18059. 8007bfc: 61a3 str r3, [r4, #24]
  18060. 8007bfe: bd10 pop {r4, pc}
  18061. 8007c00: 08008d04 .word 0x08008d04
  18062. 8007c04: 08007b71 .word 0x08007b71
  18063. 08007c08 <__sfp>:
  18064. 8007c08: b5f8 push {r3, r4, r5, r6, r7, lr}
  18065. 8007c0a: 4b1b ldr r3, [pc, #108] ; (8007c78 <__sfp+0x70>)
  18066. 8007c0c: 4607 mov r7, r0
  18067. 8007c0e: 681e ldr r6, [r3, #0]
  18068. 8007c10: 69b3 ldr r3, [r6, #24]
  18069. 8007c12: b913 cbnz r3, 8007c1a <__sfp+0x12>
  18070. 8007c14: 4630 mov r0, r6
  18071. 8007c16: f7ff ffc7 bl 8007ba8 <__sinit>
  18072. 8007c1a: 3648 adds r6, #72 ; 0x48
  18073. 8007c1c: e9d6 3401 ldrd r3, r4, [r6, #4]
  18074. 8007c20: 3b01 subs r3, #1
  18075. 8007c22: d503 bpl.n 8007c2c <__sfp+0x24>
  18076. 8007c24: 6833 ldr r3, [r6, #0]
  18077. 8007c26: b133 cbz r3, 8007c36 <__sfp+0x2e>
  18078. 8007c28: 6836 ldr r6, [r6, #0]
  18079. 8007c2a: e7f7 b.n 8007c1c <__sfp+0x14>
  18080. 8007c2c: f9b4 500c ldrsh.w r5, [r4, #12]
  18081. 8007c30: b16d cbz r5, 8007c4e <__sfp+0x46>
  18082. 8007c32: 3468 adds r4, #104 ; 0x68
  18083. 8007c34: e7f4 b.n 8007c20 <__sfp+0x18>
  18084. 8007c36: 2104 movs r1, #4
  18085. 8007c38: 4638 mov r0, r7
  18086. 8007c3a: f7ff ff9f bl 8007b7c <__sfmoreglue>
  18087. 8007c3e: 6030 str r0, [r6, #0]
  18088. 8007c40: 2800 cmp r0, #0
  18089. 8007c42: d1f1 bne.n 8007c28 <__sfp+0x20>
  18090. 8007c44: 230c movs r3, #12
  18091. 8007c46: 4604 mov r4, r0
  18092. 8007c48: 603b str r3, [r7, #0]
  18093. 8007c4a: 4620 mov r0, r4
  18094. 8007c4c: bdf8 pop {r3, r4, r5, r6, r7, pc}
  18095. 8007c4e: 4b0b ldr r3, [pc, #44] ; (8007c7c <__sfp+0x74>)
  18096. 8007c50: 6665 str r5, [r4, #100] ; 0x64
  18097. 8007c52: e9c4 5500 strd r5, r5, [r4]
  18098. 8007c56: 60a5 str r5, [r4, #8]
  18099. 8007c58: e9c4 3503 strd r3, r5, [r4, #12]
  18100. 8007c5c: e9c4 5505 strd r5, r5, [r4, #20]
  18101. 8007c60: 2208 movs r2, #8
  18102. 8007c62: 4629 mov r1, r5
  18103. 8007c64: f104 005c add.w r0, r4, #92 ; 0x5c
  18104. 8007c68: f7fe fa22 bl 80060b0 <memset>
  18105. 8007c6c: e9c4 550d strd r5, r5, [r4, #52] ; 0x34
  18106. 8007c70: e9c4 5512 strd r5, r5, [r4, #72] ; 0x48
  18107. 8007c74: e7e9 b.n 8007c4a <__sfp+0x42>
  18108. 8007c76: bf00 nop
  18109. 8007c78: 08008d04 .word 0x08008d04
  18110. 8007c7c: ffff0001 .word 0xffff0001
  18111. 08007c80 <_fwalk_reent>:
  18112. 8007c80: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
  18113. 8007c84: 4680 mov r8, r0
  18114. 8007c86: 4689 mov r9, r1
  18115. 8007c88: 2600 movs r6, #0
  18116. 8007c8a: f100 0448 add.w r4, r0, #72 ; 0x48
  18117. 8007c8e: b914 cbnz r4, 8007c96 <_fwalk_reent+0x16>
  18118. 8007c90: 4630 mov r0, r6
  18119. 8007c92: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
  18120. 8007c96: e9d4 7501 ldrd r7, r5, [r4, #4]
  18121. 8007c9a: 3f01 subs r7, #1
  18122. 8007c9c: d501 bpl.n 8007ca2 <_fwalk_reent+0x22>
  18123. 8007c9e: 6824 ldr r4, [r4, #0]
  18124. 8007ca0: e7f5 b.n 8007c8e <_fwalk_reent+0xe>
  18125. 8007ca2: 89ab ldrh r3, [r5, #12]
  18126. 8007ca4: 2b01 cmp r3, #1
  18127. 8007ca6: d907 bls.n 8007cb8 <_fwalk_reent+0x38>
  18128. 8007ca8: f9b5 300e ldrsh.w r3, [r5, #14]
  18129. 8007cac: 3301 adds r3, #1
  18130. 8007cae: d003 beq.n 8007cb8 <_fwalk_reent+0x38>
  18131. 8007cb0: 4629 mov r1, r5
  18132. 8007cb2: 4640 mov r0, r8
  18133. 8007cb4: 47c8 blx r9
  18134. 8007cb6: 4306 orrs r6, r0
  18135. 8007cb8: 3568 adds r5, #104 ; 0x68
  18136. 8007cba: e7ee b.n 8007c9a <_fwalk_reent+0x1a>
  18137. 08007cbc <_localeconv_r>:
  18138. 8007cbc: 4b04 ldr r3, [pc, #16] ; (8007cd0 <_localeconv_r+0x14>)
  18139. 8007cbe: 681b ldr r3, [r3, #0]
  18140. 8007cc0: 6a18 ldr r0, [r3, #32]
  18141. 8007cc2: 4b04 ldr r3, [pc, #16] ; (8007cd4 <_localeconv_r+0x18>)
  18142. 8007cc4: 2800 cmp r0, #0
  18143. 8007cc6: bf08 it eq
  18144. 8007cc8: 4618 moveq r0, r3
  18145. 8007cca: 30f0 adds r0, #240 ; 0xf0
  18146. 8007ccc: 4770 bx lr
  18147. 8007cce: bf00 nop
  18148. 8007cd0: 2000000c .word 0x2000000c
  18149. 8007cd4: 20000070 .word 0x20000070
  18150. 08007cd8 <__swhatbuf_r>:
  18151. 8007cd8: b570 push {r4, r5, r6, lr}
  18152. 8007cda: 460e mov r6, r1
  18153. 8007cdc: f9b1 100e ldrsh.w r1, [r1, #14]
  18154. 8007ce0: b096 sub sp, #88 ; 0x58
  18155. 8007ce2: 2900 cmp r1, #0
  18156. 8007ce4: 4614 mov r4, r2
  18157. 8007ce6: 461d mov r5, r3
  18158. 8007ce8: da07 bge.n 8007cfa <__swhatbuf_r+0x22>
  18159. 8007cea: 2300 movs r3, #0
  18160. 8007cec: 602b str r3, [r5, #0]
  18161. 8007cee: 89b3 ldrh r3, [r6, #12]
  18162. 8007cf0: 061a lsls r2, r3, #24
  18163. 8007cf2: d410 bmi.n 8007d16 <__swhatbuf_r+0x3e>
  18164. 8007cf4: f44f 6380 mov.w r3, #1024 ; 0x400
  18165. 8007cf8: e00e b.n 8007d18 <__swhatbuf_r+0x40>
  18166. 8007cfa: 466a mov r2, sp
  18167. 8007cfc: f000 fdb6 bl 800886c <_fstat_r>
  18168. 8007d00: 2800 cmp r0, #0
  18169. 8007d02: dbf2 blt.n 8007cea <__swhatbuf_r+0x12>
  18170. 8007d04: 9a01 ldr r2, [sp, #4]
  18171. 8007d06: f402 4270 and.w r2, r2, #61440 ; 0xf000
  18172. 8007d0a: f5a2 5300 sub.w r3, r2, #8192 ; 0x2000
  18173. 8007d0e: 425a negs r2, r3
  18174. 8007d10: 415a adcs r2, r3
  18175. 8007d12: 602a str r2, [r5, #0]
  18176. 8007d14: e7ee b.n 8007cf4 <__swhatbuf_r+0x1c>
  18177. 8007d16: 2340 movs r3, #64 ; 0x40
  18178. 8007d18: 2000 movs r0, #0
  18179. 8007d1a: 6023 str r3, [r4, #0]
  18180. 8007d1c: b016 add sp, #88 ; 0x58
  18181. 8007d1e: bd70 pop {r4, r5, r6, pc}
  18182. 08007d20 <__smakebuf_r>:
  18183. 8007d20: 898b ldrh r3, [r1, #12]
  18184. 8007d22: b573 push {r0, r1, r4, r5, r6, lr}
  18185. 8007d24: 079d lsls r5, r3, #30
  18186. 8007d26: 4606 mov r6, r0
  18187. 8007d28: 460c mov r4, r1
  18188. 8007d2a: d507 bpl.n 8007d3c <__smakebuf_r+0x1c>
  18189. 8007d2c: f104 0347 add.w r3, r4, #71 ; 0x47
  18190. 8007d30: 6023 str r3, [r4, #0]
  18191. 8007d32: 6123 str r3, [r4, #16]
  18192. 8007d34: 2301 movs r3, #1
  18193. 8007d36: 6163 str r3, [r4, #20]
  18194. 8007d38: b002 add sp, #8
  18195. 8007d3a: bd70 pop {r4, r5, r6, pc}
  18196. 8007d3c: ab01 add r3, sp, #4
  18197. 8007d3e: 466a mov r2, sp
  18198. 8007d40: f7ff ffca bl 8007cd8 <__swhatbuf_r>
  18199. 8007d44: 9900 ldr r1, [sp, #0]
  18200. 8007d46: 4605 mov r5, r0
  18201. 8007d48: 4630 mov r0, r6
  18202. 8007d4a: f000 fb81 bl 8008450 <_malloc_r>
  18203. 8007d4e: b948 cbnz r0, 8007d64 <__smakebuf_r+0x44>
  18204. 8007d50: f9b4 300c ldrsh.w r3, [r4, #12]
  18205. 8007d54: 059a lsls r2, r3, #22
  18206. 8007d56: d4ef bmi.n 8007d38 <__smakebuf_r+0x18>
  18207. 8007d58: f023 0303 bic.w r3, r3, #3
  18208. 8007d5c: f043 0302 orr.w r3, r3, #2
  18209. 8007d60: 81a3 strh r3, [r4, #12]
  18210. 8007d62: e7e3 b.n 8007d2c <__smakebuf_r+0xc>
  18211. 8007d64: 4b0d ldr r3, [pc, #52] ; (8007d9c <__smakebuf_r+0x7c>)
  18212. 8007d66: 62b3 str r3, [r6, #40] ; 0x28
  18213. 8007d68: 89a3 ldrh r3, [r4, #12]
  18214. 8007d6a: 6020 str r0, [r4, #0]
  18215. 8007d6c: f043 0380 orr.w r3, r3, #128 ; 0x80
  18216. 8007d70: 81a3 strh r3, [r4, #12]
  18217. 8007d72: 9b00 ldr r3, [sp, #0]
  18218. 8007d74: 6120 str r0, [r4, #16]
  18219. 8007d76: 6163 str r3, [r4, #20]
  18220. 8007d78: 9b01 ldr r3, [sp, #4]
  18221. 8007d7a: b15b cbz r3, 8007d94 <__smakebuf_r+0x74>
  18222. 8007d7c: f9b4 100e ldrsh.w r1, [r4, #14]
  18223. 8007d80: 4630 mov r0, r6
  18224. 8007d82: f000 fd85 bl 8008890 <_isatty_r>
  18225. 8007d86: b128 cbz r0, 8007d94 <__smakebuf_r+0x74>
  18226. 8007d88: 89a3 ldrh r3, [r4, #12]
  18227. 8007d8a: f023 0303 bic.w r3, r3, #3
  18228. 8007d8e: f043 0301 orr.w r3, r3, #1
  18229. 8007d92: 81a3 strh r3, [r4, #12]
  18230. 8007d94: 89a3 ldrh r3, [r4, #12]
  18231. 8007d96: 431d orrs r5, r3
  18232. 8007d98: 81a5 strh r5, [r4, #12]
  18233. 8007d9a: e7cd b.n 8007d38 <__smakebuf_r+0x18>
  18234. 8007d9c: 08007b71 .word 0x08007b71
  18235. 08007da0 <malloc>:
  18236. 8007da0: 4b02 ldr r3, [pc, #8] ; (8007dac <malloc+0xc>)
  18237. 8007da2: 4601 mov r1, r0
  18238. 8007da4: 6818 ldr r0, [r3, #0]
  18239. 8007da6: f000 bb53 b.w 8008450 <_malloc_r>
  18240. 8007daa: bf00 nop
  18241. 8007dac: 2000000c .word 0x2000000c
  18242. 08007db0 <memchr>:
  18243. 8007db0: b510 push {r4, lr}
  18244. 8007db2: b2c9 uxtb r1, r1
  18245. 8007db4: 4402 add r2, r0
  18246. 8007db6: 4290 cmp r0, r2
  18247. 8007db8: 4603 mov r3, r0
  18248. 8007dba: d101 bne.n 8007dc0 <memchr+0x10>
  18249. 8007dbc: 2300 movs r3, #0
  18250. 8007dbe: e003 b.n 8007dc8 <memchr+0x18>
  18251. 8007dc0: 781c ldrb r4, [r3, #0]
  18252. 8007dc2: 3001 adds r0, #1
  18253. 8007dc4: 428c cmp r4, r1
  18254. 8007dc6: d1f6 bne.n 8007db6 <memchr+0x6>
  18255. 8007dc8: 4618 mov r0, r3
  18256. 8007dca: bd10 pop {r4, pc}
  18257. 08007dcc <memcpy>:
  18258. 8007dcc: b510 push {r4, lr}
  18259. 8007dce: 1e43 subs r3, r0, #1
  18260. 8007dd0: 440a add r2, r1
  18261. 8007dd2: 4291 cmp r1, r2
  18262. 8007dd4: d100 bne.n 8007dd8 <memcpy+0xc>
  18263. 8007dd6: bd10 pop {r4, pc}
  18264. 8007dd8: f811 4b01 ldrb.w r4, [r1], #1
  18265. 8007ddc: f803 4f01 strb.w r4, [r3, #1]!
  18266. 8007de0: e7f7 b.n 8007dd2 <memcpy+0x6>
  18267. 08007de2 <_Balloc>:
  18268. 8007de2: b570 push {r4, r5, r6, lr}
  18269. 8007de4: 6a45 ldr r5, [r0, #36] ; 0x24
  18270. 8007de6: 4604 mov r4, r0
  18271. 8007de8: 460e mov r6, r1
  18272. 8007dea: b93d cbnz r5, 8007dfc <_Balloc+0x1a>
  18273. 8007dec: 2010 movs r0, #16
  18274. 8007dee: f7ff ffd7 bl 8007da0 <malloc>
  18275. 8007df2: 6260 str r0, [r4, #36] ; 0x24
  18276. 8007df4: e9c0 5501 strd r5, r5, [r0, #4]
  18277. 8007df8: 6005 str r5, [r0, #0]
  18278. 8007dfa: 60c5 str r5, [r0, #12]
  18279. 8007dfc: 6a65 ldr r5, [r4, #36] ; 0x24
  18280. 8007dfe: 68eb ldr r3, [r5, #12]
  18281. 8007e00: b183 cbz r3, 8007e24 <_Balloc+0x42>
  18282. 8007e02: 6a63 ldr r3, [r4, #36] ; 0x24
  18283. 8007e04: 68db ldr r3, [r3, #12]
  18284. 8007e06: f853 0026 ldr.w r0, [r3, r6, lsl #2]
  18285. 8007e0a: b9b8 cbnz r0, 8007e3c <_Balloc+0x5a>
  18286. 8007e0c: 2101 movs r1, #1
  18287. 8007e0e: fa01 f506 lsl.w r5, r1, r6
  18288. 8007e12: 1d6a adds r2, r5, #5
  18289. 8007e14: 0092 lsls r2, r2, #2
  18290. 8007e16: 4620 mov r0, r4
  18291. 8007e18: f000 fabf bl 800839a <_calloc_r>
  18292. 8007e1c: b160 cbz r0, 8007e38 <_Balloc+0x56>
  18293. 8007e1e: e9c0 6501 strd r6, r5, [r0, #4]
  18294. 8007e22: e00e b.n 8007e42 <_Balloc+0x60>
  18295. 8007e24: 2221 movs r2, #33 ; 0x21
  18296. 8007e26: 2104 movs r1, #4
  18297. 8007e28: 4620 mov r0, r4
  18298. 8007e2a: f000 fab6 bl 800839a <_calloc_r>
  18299. 8007e2e: 6a63 ldr r3, [r4, #36] ; 0x24
  18300. 8007e30: 60e8 str r0, [r5, #12]
  18301. 8007e32: 68db ldr r3, [r3, #12]
  18302. 8007e34: 2b00 cmp r3, #0
  18303. 8007e36: d1e4 bne.n 8007e02 <_Balloc+0x20>
  18304. 8007e38: 2000 movs r0, #0
  18305. 8007e3a: bd70 pop {r4, r5, r6, pc}
  18306. 8007e3c: 6802 ldr r2, [r0, #0]
  18307. 8007e3e: f843 2026 str.w r2, [r3, r6, lsl #2]
  18308. 8007e42: 2300 movs r3, #0
  18309. 8007e44: e9c0 3303 strd r3, r3, [r0, #12]
  18310. 8007e48: e7f7 b.n 8007e3a <_Balloc+0x58>
  18311. 08007e4a <_Bfree>:
  18312. 8007e4a: b570 push {r4, r5, r6, lr}
  18313. 8007e4c: 6a44 ldr r4, [r0, #36] ; 0x24
  18314. 8007e4e: 4606 mov r6, r0
  18315. 8007e50: 460d mov r5, r1
  18316. 8007e52: b93c cbnz r4, 8007e64 <_Bfree+0x1a>
  18317. 8007e54: 2010 movs r0, #16
  18318. 8007e56: f7ff ffa3 bl 8007da0 <malloc>
  18319. 8007e5a: 6270 str r0, [r6, #36] ; 0x24
  18320. 8007e5c: e9c0 4401 strd r4, r4, [r0, #4]
  18321. 8007e60: 6004 str r4, [r0, #0]
  18322. 8007e62: 60c4 str r4, [r0, #12]
  18323. 8007e64: b13d cbz r5, 8007e76 <_Bfree+0x2c>
  18324. 8007e66: 6a73 ldr r3, [r6, #36] ; 0x24
  18325. 8007e68: 686a ldr r2, [r5, #4]
  18326. 8007e6a: 68db ldr r3, [r3, #12]
  18327. 8007e6c: f853 1022 ldr.w r1, [r3, r2, lsl #2]
  18328. 8007e70: 6029 str r1, [r5, #0]
  18329. 8007e72: f843 5022 str.w r5, [r3, r2, lsl #2]
  18330. 8007e76: bd70 pop {r4, r5, r6, pc}
  18331. 08007e78 <__multadd>:
  18332. 8007e78: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
  18333. 8007e7c: 461f mov r7, r3
  18334. 8007e7e: 4606 mov r6, r0
  18335. 8007e80: 460c mov r4, r1
  18336. 8007e82: 2300 movs r3, #0
  18337. 8007e84: 690d ldr r5, [r1, #16]
  18338. 8007e86: f101 0c14 add.w ip, r1, #20
  18339. 8007e8a: f8dc 0000 ldr.w r0, [ip]
  18340. 8007e8e: 3301 adds r3, #1
  18341. 8007e90: b281 uxth r1, r0
  18342. 8007e92: fb02 7101 mla r1, r2, r1, r7
  18343. 8007e96: 0c00 lsrs r0, r0, #16
  18344. 8007e98: 0c0f lsrs r7, r1, #16
  18345. 8007e9a: fb02 7000 mla r0, r2, r0, r7
  18346. 8007e9e: b289 uxth r1, r1
  18347. 8007ea0: eb01 4100 add.w r1, r1, r0, lsl #16
  18348. 8007ea4: 429d cmp r5, r3
  18349. 8007ea6: ea4f 4710 mov.w r7, r0, lsr #16
  18350. 8007eaa: f84c 1b04 str.w r1, [ip], #4
  18351. 8007eae: dcec bgt.n 8007e8a <__multadd+0x12>
  18352. 8007eb0: b1d7 cbz r7, 8007ee8 <__multadd+0x70>
  18353. 8007eb2: 68a3 ldr r3, [r4, #8]
  18354. 8007eb4: 42ab cmp r3, r5
  18355. 8007eb6: dc12 bgt.n 8007ede <__multadd+0x66>
  18356. 8007eb8: 6861 ldr r1, [r4, #4]
  18357. 8007eba: 4630 mov r0, r6
  18358. 8007ebc: 3101 adds r1, #1
  18359. 8007ebe: f7ff ff90 bl 8007de2 <_Balloc>
  18360. 8007ec2: 4680 mov r8, r0
  18361. 8007ec4: 6922 ldr r2, [r4, #16]
  18362. 8007ec6: f104 010c add.w r1, r4, #12
  18363. 8007eca: 3202 adds r2, #2
  18364. 8007ecc: 0092 lsls r2, r2, #2
  18365. 8007ece: 300c adds r0, #12
  18366. 8007ed0: f7ff ff7c bl 8007dcc <memcpy>
  18367. 8007ed4: 4621 mov r1, r4
  18368. 8007ed6: 4630 mov r0, r6
  18369. 8007ed8: f7ff ffb7 bl 8007e4a <_Bfree>
  18370. 8007edc: 4644 mov r4, r8
  18371. 8007ede: eb04 0385 add.w r3, r4, r5, lsl #2
  18372. 8007ee2: 3501 adds r5, #1
  18373. 8007ee4: 615f str r7, [r3, #20]
  18374. 8007ee6: 6125 str r5, [r4, #16]
  18375. 8007ee8: 4620 mov r0, r4
  18376. 8007eea: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
  18377. 08007eee <__hi0bits>:
  18378. 8007eee: 0c02 lsrs r2, r0, #16
  18379. 8007ef0: 0412 lsls r2, r2, #16
  18380. 8007ef2: 4603 mov r3, r0
  18381. 8007ef4: b9b2 cbnz r2, 8007f24 <__hi0bits+0x36>
  18382. 8007ef6: 0403 lsls r3, r0, #16
  18383. 8007ef8: 2010 movs r0, #16
  18384. 8007efa: f013 4f7f tst.w r3, #4278190080 ; 0xff000000
  18385. 8007efe: bf04 itt eq
  18386. 8007f00: 021b lsleq r3, r3, #8
  18387. 8007f02: 3008 addeq r0, #8
  18388. 8007f04: f013 4f70 tst.w r3, #4026531840 ; 0xf0000000
  18389. 8007f08: bf04 itt eq
  18390. 8007f0a: 011b lsleq r3, r3, #4
  18391. 8007f0c: 3004 addeq r0, #4
  18392. 8007f0e: f013 4f40 tst.w r3, #3221225472 ; 0xc0000000
  18393. 8007f12: bf04 itt eq
  18394. 8007f14: 009b lsleq r3, r3, #2
  18395. 8007f16: 3002 addeq r0, #2
  18396. 8007f18: 2b00 cmp r3, #0
  18397. 8007f1a: db06 blt.n 8007f2a <__hi0bits+0x3c>
  18398. 8007f1c: 005b lsls r3, r3, #1
  18399. 8007f1e: d503 bpl.n 8007f28 <__hi0bits+0x3a>
  18400. 8007f20: 3001 adds r0, #1
  18401. 8007f22: 4770 bx lr
  18402. 8007f24: 2000 movs r0, #0
  18403. 8007f26: e7e8 b.n 8007efa <__hi0bits+0xc>
  18404. 8007f28: 2020 movs r0, #32
  18405. 8007f2a: 4770 bx lr
  18406. 08007f2c <__lo0bits>:
  18407. 8007f2c: 6803 ldr r3, [r0, #0]
  18408. 8007f2e: 4601 mov r1, r0
  18409. 8007f30: f013 0207 ands.w r2, r3, #7
  18410. 8007f34: d00b beq.n 8007f4e <__lo0bits+0x22>
  18411. 8007f36: 07da lsls r2, r3, #31
  18412. 8007f38: d423 bmi.n 8007f82 <__lo0bits+0x56>
  18413. 8007f3a: 0798 lsls r0, r3, #30
  18414. 8007f3c: bf49 itett mi
  18415. 8007f3e: 085b lsrmi r3, r3, #1
  18416. 8007f40: 089b lsrpl r3, r3, #2
  18417. 8007f42: 2001 movmi r0, #1
  18418. 8007f44: 600b strmi r3, [r1, #0]
  18419. 8007f46: bf5c itt pl
  18420. 8007f48: 600b strpl r3, [r1, #0]
  18421. 8007f4a: 2002 movpl r0, #2
  18422. 8007f4c: 4770 bx lr
  18423. 8007f4e: b298 uxth r0, r3
  18424. 8007f50: b9a8 cbnz r0, 8007f7e <__lo0bits+0x52>
  18425. 8007f52: 2010 movs r0, #16
  18426. 8007f54: 0c1b lsrs r3, r3, #16
  18427. 8007f56: f013 0fff tst.w r3, #255 ; 0xff
  18428. 8007f5a: bf04 itt eq
  18429. 8007f5c: 0a1b lsreq r3, r3, #8
  18430. 8007f5e: 3008 addeq r0, #8
  18431. 8007f60: 071a lsls r2, r3, #28
  18432. 8007f62: bf04 itt eq
  18433. 8007f64: 091b lsreq r3, r3, #4
  18434. 8007f66: 3004 addeq r0, #4
  18435. 8007f68: 079a lsls r2, r3, #30
  18436. 8007f6a: bf04 itt eq
  18437. 8007f6c: 089b lsreq r3, r3, #2
  18438. 8007f6e: 3002 addeq r0, #2
  18439. 8007f70: 07da lsls r2, r3, #31
  18440. 8007f72: d402 bmi.n 8007f7a <__lo0bits+0x4e>
  18441. 8007f74: 085b lsrs r3, r3, #1
  18442. 8007f76: d006 beq.n 8007f86 <__lo0bits+0x5a>
  18443. 8007f78: 3001 adds r0, #1
  18444. 8007f7a: 600b str r3, [r1, #0]
  18445. 8007f7c: 4770 bx lr
  18446. 8007f7e: 4610 mov r0, r2
  18447. 8007f80: e7e9 b.n 8007f56 <__lo0bits+0x2a>
  18448. 8007f82: 2000 movs r0, #0
  18449. 8007f84: 4770 bx lr
  18450. 8007f86: 2020 movs r0, #32
  18451. 8007f88: 4770 bx lr
  18452. 08007f8a <__i2b>:
  18453. 8007f8a: b510 push {r4, lr}
  18454. 8007f8c: 460c mov r4, r1
  18455. 8007f8e: 2101 movs r1, #1
  18456. 8007f90: f7ff ff27 bl 8007de2 <_Balloc>
  18457. 8007f94: 2201 movs r2, #1
  18458. 8007f96: 6144 str r4, [r0, #20]
  18459. 8007f98: 6102 str r2, [r0, #16]
  18460. 8007f9a: bd10 pop {r4, pc}
  18461. 08007f9c <__multiply>:
  18462. 8007f9c: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
  18463. 8007fa0: 4614 mov r4, r2
  18464. 8007fa2: 690a ldr r2, [r1, #16]
  18465. 8007fa4: 6923 ldr r3, [r4, #16]
  18466. 8007fa6: 4688 mov r8, r1
  18467. 8007fa8: 429a cmp r2, r3
  18468. 8007faa: bfbe ittt lt
  18469. 8007fac: 460b movlt r3, r1
  18470. 8007fae: 46a0 movlt r8, r4
  18471. 8007fb0: 461c movlt r4, r3
  18472. 8007fb2: f8d8 7010 ldr.w r7, [r8, #16]
  18473. 8007fb6: f8d4 9010 ldr.w r9, [r4, #16]
  18474. 8007fba: f8d8 3008 ldr.w r3, [r8, #8]
  18475. 8007fbe: f8d8 1004 ldr.w r1, [r8, #4]
  18476. 8007fc2: eb07 0609 add.w r6, r7, r9
  18477. 8007fc6: 42b3 cmp r3, r6
  18478. 8007fc8: bfb8 it lt
  18479. 8007fca: 3101 addlt r1, #1
  18480. 8007fcc: f7ff ff09 bl 8007de2 <_Balloc>
  18481. 8007fd0: f100 0514 add.w r5, r0, #20
  18482. 8007fd4: 462b mov r3, r5
  18483. 8007fd6: 2200 movs r2, #0
  18484. 8007fd8: eb05 0e86 add.w lr, r5, r6, lsl #2
  18485. 8007fdc: 4573 cmp r3, lr
  18486. 8007fde: d316 bcc.n 800800e <__multiply+0x72>
  18487. 8007fe0: f104 0214 add.w r2, r4, #20
  18488. 8007fe4: f108 0114 add.w r1, r8, #20
  18489. 8007fe8: eb02 0389 add.w r3, r2, r9, lsl #2
  18490. 8007fec: eb01 0787 add.w r7, r1, r7, lsl #2
  18491. 8007ff0: 9300 str r3, [sp, #0]
  18492. 8007ff2: 9b00 ldr r3, [sp, #0]
  18493. 8007ff4: 9201 str r2, [sp, #4]
  18494. 8007ff6: 4293 cmp r3, r2
  18495. 8007ff8: d80c bhi.n 8008014 <__multiply+0x78>
  18496. 8007ffa: 2e00 cmp r6, #0
  18497. 8007ffc: dd03 ble.n 8008006 <__multiply+0x6a>
  18498. 8007ffe: f85e 3d04 ldr.w r3, [lr, #-4]!
  18499. 8008002: 2b00 cmp r3, #0
  18500. 8008004: d05d beq.n 80080c2 <__multiply+0x126>
  18501. 8008006: 6106 str r6, [r0, #16]
  18502. 8008008: b003 add sp, #12
  18503. 800800a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  18504. 800800e: f843 2b04 str.w r2, [r3], #4
  18505. 8008012: e7e3 b.n 8007fdc <__multiply+0x40>
  18506. 8008014: f8b2 b000 ldrh.w fp, [r2]
  18507. 8008018: f1bb 0f00 cmp.w fp, #0
  18508. 800801c: d023 beq.n 8008066 <__multiply+0xca>
  18509. 800801e: 4689 mov r9, r1
  18510. 8008020: 46ac mov ip, r5
  18511. 8008022: f04f 0800 mov.w r8, #0
  18512. 8008026: f859 4b04 ldr.w r4, [r9], #4
  18513. 800802a: f8dc a000 ldr.w sl, [ip]
  18514. 800802e: b2a3 uxth r3, r4
  18515. 8008030: fa1f fa8a uxth.w sl, sl
  18516. 8008034: fb0b a303 mla r3, fp, r3, sl
  18517. 8008038: ea4f 4a14 mov.w sl, r4, lsr #16
  18518. 800803c: f8dc 4000 ldr.w r4, [ip]
  18519. 8008040: 4443 add r3, r8
  18520. 8008042: ea4f 4814 mov.w r8, r4, lsr #16
  18521. 8008046: fb0b 840a mla r4, fp, sl, r8
  18522. 800804a: 46e2 mov sl, ip
  18523. 800804c: eb04 4413 add.w r4, r4, r3, lsr #16
  18524. 8008050: b29b uxth r3, r3
  18525. 8008052: ea43 4304 orr.w r3, r3, r4, lsl #16
  18526. 8008056: 454f cmp r7, r9
  18527. 8008058: ea4f 4814 mov.w r8, r4, lsr #16
  18528. 800805c: f84a 3b04 str.w r3, [sl], #4
  18529. 8008060: d82b bhi.n 80080ba <__multiply+0x11e>
  18530. 8008062: f8cc 8004 str.w r8, [ip, #4]
  18531. 8008066: 9b01 ldr r3, [sp, #4]
  18532. 8008068: 3204 adds r2, #4
  18533. 800806a: f8b3 a002 ldrh.w sl, [r3, #2]
  18534. 800806e: f1ba 0f00 cmp.w sl, #0
  18535. 8008072: d020 beq.n 80080b6 <__multiply+0x11a>
  18536. 8008074: 4689 mov r9, r1
  18537. 8008076: 46a8 mov r8, r5
  18538. 8008078: f04f 0b00 mov.w fp, #0
  18539. 800807c: 682b ldr r3, [r5, #0]
  18540. 800807e: f8b9 c000 ldrh.w ip, [r9]
  18541. 8008082: f8b8 4002 ldrh.w r4, [r8, #2]
  18542. 8008086: b29b uxth r3, r3
  18543. 8008088: fb0a 440c mla r4, sl, ip, r4
  18544. 800808c: 46c4 mov ip, r8
  18545. 800808e: 445c add r4, fp
  18546. 8008090: ea43 4304 orr.w r3, r3, r4, lsl #16
  18547. 8008094: f84c 3b04 str.w r3, [ip], #4
  18548. 8008098: f859 3b04 ldr.w r3, [r9], #4
  18549. 800809c: f8b8 b004 ldrh.w fp, [r8, #4]
  18550. 80080a0: 0c1b lsrs r3, r3, #16
  18551. 80080a2: fb0a b303 mla r3, sl, r3, fp
  18552. 80080a6: 454f cmp r7, r9
  18553. 80080a8: eb03 4314 add.w r3, r3, r4, lsr #16
  18554. 80080ac: ea4f 4b13 mov.w fp, r3, lsr #16
  18555. 80080b0: d805 bhi.n 80080be <__multiply+0x122>
  18556. 80080b2: f8c8 3004 str.w r3, [r8, #4]
  18557. 80080b6: 3504 adds r5, #4
  18558. 80080b8: e79b b.n 8007ff2 <__multiply+0x56>
  18559. 80080ba: 46d4 mov ip, sl
  18560. 80080bc: e7b3 b.n 8008026 <__multiply+0x8a>
  18561. 80080be: 46e0 mov r8, ip
  18562. 80080c0: e7dd b.n 800807e <__multiply+0xe2>
  18563. 80080c2: 3e01 subs r6, #1
  18564. 80080c4: e799 b.n 8007ffa <__multiply+0x5e>
  18565. ...
  18566. 080080c8 <__pow5mult>:
  18567. 80080c8: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
  18568. 80080cc: 4615 mov r5, r2
  18569. 80080ce: f012 0203 ands.w r2, r2, #3
  18570. 80080d2: 4606 mov r6, r0
  18571. 80080d4: 460f mov r7, r1
  18572. 80080d6: d007 beq.n 80080e8 <__pow5mult+0x20>
  18573. 80080d8: 4c21 ldr r4, [pc, #132] ; (8008160 <__pow5mult+0x98>)
  18574. 80080da: 3a01 subs r2, #1
  18575. 80080dc: 2300 movs r3, #0
  18576. 80080de: f854 2022 ldr.w r2, [r4, r2, lsl #2]
  18577. 80080e2: f7ff fec9 bl 8007e78 <__multadd>
  18578. 80080e6: 4607 mov r7, r0
  18579. 80080e8: 10ad asrs r5, r5, #2
  18580. 80080ea: d035 beq.n 8008158 <__pow5mult+0x90>
  18581. 80080ec: 6a74 ldr r4, [r6, #36] ; 0x24
  18582. 80080ee: b93c cbnz r4, 8008100 <__pow5mult+0x38>
  18583. 80080f0: 2010 movs r0, #16
  18584. 80080f2: f7ff fe55 bl 8007da0 <malloc>
  18585. 80080f6: 6270 str r0, [r6, #36] ; 0x24
  18586. 80080f8: e9c0 4401 strd r4, r4, [r0, #4]
  18587. 80080fc: 6004 str r4, [r0, #0]
  18588. 80080fe: 60c4 str r4, [r0, #12]
  18589. 8008100: f8d6 8024 ldr.w r8, [r6, #36] ; 0x24
  18590. 8008104: f8d8 4008 ldr.w r4, [r8, #8]
  18591. 8008108: b94c cbnz r4, 800811e <__pow5mult+0x56>
  18592. 800810a: f240 2171 movw r1, #625 ; 0x271
  18593. 800810e: 4630 mov r0, r6
  18594. 8008110: f7ff ff3b bl 8007f8a <__i2b>
  18595. 8008114: 2300 movs r3, #0
  18596. 8008116: 4604 mov r4, r0
  18597. 8008118: f8c8 0008 str.w r0, [r8, #8]
  18598. 800811c: 6003 str r3, [r0, #0]
  18599. 800811e: f04f 0800 mov.w r8, #0
  18600. 8008122: 07eb lsls r3, r5, #31
  18601. 8008124: d50a bpl.n 800813c <__pow5mult+0x74>
  18602. 8008126: 4639 mov r1, r7
  18603. 8008128: 4622 mov r2, r4
  18604. 800812a: 4630 mov r0, r6
  18605. 800812c: f7ff ff36 bl 8007f9c <__multiply>
  18606. 8008130: 4681 mov r9, r0
  18607. 8008132: 4639 mov r1, r7
  18608. 8008134: 4630 mov r0, r6
  18609. 8008136: f7ff fe88 bl 8007e4a <_Bfree>
  18610. 800813a: 464f mov r7, r9
  18611. 800813c: 106d asrs r5, r5, #1
  18612. 800813e: d00b beq.n 8008158 <__pow5mult+0x90>
  18613. 8008140: 6820 ldr r0, [r4, #0]
  18614. 8008142: b938 cbnz r0, 8008154 <__pow5mult+0x8c>
  18615. 8008144: 4622 mov r2, r4
  18616. 8008146: 4621 mov r1, r4
  18617. 8008148: 4630 mov r0, r6
  18618. 800814a: f7ff ff27 bl 8007f9c <__multiply>
  18619. 800814e: 6020 str r0, [r4, #0]
  18620. 8008150: f8c0 8000 str.w r8, [r0]
  18621. 8008154: 4604 mov r4, r0
  18622. 8008156: e7e4 b.n 8008122 <__pow5mult+0x5a>
  18623. 8008158: 4638 mov r0, r7
  18624. 800815a: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
  18625. 800815e: bf00 nop
  18626. 8008160: 08008ea0 .word 0x08008ea0
  18627. 08008164 <__lshift>:
  18628. 8008164: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
  18629. 8008168: 460c mov r4, r1
  18630. 800816a: 4607 mov r7, r0
  18631. 800816c: 4616 mov r6, r2
  18632. 800816e: 6923 ldr r3, [r4, #16]
  18633. 8008170: ea4f 1a62 mov.w sl, r2, asr #5
  18634. 8008174: eb0a 0903 add.w r9, sl, r3
  18635. 8008178: 6849 ldr r1, [r1, #4]
  18636. 800817a: 68a3 ldr r3, [r4, #8]
  18637. 800817c: f109 0501 add.w r5, r9, #1
  18638. 8008180: 42ab cmp r3, r5
  18639. 8008182: db32 blt.n 80081ea <__lshift+0x86>
  18640. 8008184: 4638 mov r0, r7
  18641. 8008186: f7ff fe2c bl 8007de2 <_Balloc>
  18642. 800818a: 2300 movs r3, #0
  18643. 800818c: 4680 mov r8, r0
  18644. 800818e: 461a mov r2, r3
  18645. 8008190: f100 0114 add.w r1, r0, #20
  18646. 8008194: 4553 cmp r3, sl
  18647. 8008196: db2b blt.n 80081f0 <__lshift+0x8c>
  18648. 8008198: 6920 ldr r0, [r4, #16]
  18649. 800819a: ea2a 7aea bic.w sl, sl, sl, asr #31
  18650. 800819e: f104 0314 add.w r3, r4, #20
  18651. 80081a2: f016 021f ands.w r2, r6, #31
  18652. 80081a6: eb01 018a add.w r1, r1, sl, lsl #2
  18653. 80081aa: eb03 0c80 add.w ip, r3, r0, lsl #2
  18654. 80081ae: d025 beq.n 80081fc <__lshift+0x98>
  18655. 80081b0: 2000 movs r0, #0
  18656. 80081b2: f1c2 0e20 rsb lr, r2, #32
  18657. 80081b6: 468a mov sl, r1
  18658. 80081b8: 681e ldr r6, [r3, #0]
  18659. 80081ba: 4096 lsls r6, r2
  18660. 80081bc: 4330 orrs r0, r6
  18661. 80081be: f84a 0b04 str.w r0, [sl], #4
  18662. 80081c2: f853 0b04 ldr.w r0, [r3], #4
  18663. 80081c6: 459c cmp ip, r3
  18664. 80081c8: fa20 f00e lsr.w r0, r0, lr
  18665. 80081cc: d814 bhi.n 80081f8 <__lshift+0x94>
  18666. 80081ce: 6048 str r0, [r1, #4]
  18667. 80081d0: b108 cbz r0, 80081d6 <__lshift+0x72>
  18668. 80081d2: f109 0502 add.w r5, r9, #2
  18669. 80081d6: 3d01 subs r5, #1
  18670. 80081d8: 4638 mov r0, r7
  18671. 80081da: f8c8 5010 str.w r5, [r8, #16]
  18672. 80081de: 4621 mov r1, r4
  18673. 80081e0: f7ff fe33 bl 8007e4a <_Bfree>
  18674. 80081e4: 4640 mov r0, r8
  18675. 80081e6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  18676. 80081ea: 3101 adds r1, #1
  18677. 80081ec: 005b lsls r3, r3, #1
  18678. 80081ee: e7c7 b.n 8008180 <__lshift+0x1c>
  18679. 80081f0: f841 2023 str.w r2, [r1, r3, lsl #2]
  18680. 80081f4: 3301 adds r3, #1
  18681. 80081f6: e7cd b.n 8008194 <__lshift+0x30>
  18682. 80081f8: 4651 mov r1, sl
  18683. 80081fa: e7dc b.n 80081b6 <__lshift+0x52>
  18684. 80081fc: 3904 subs r1, #4
  18685. 80081fe: f853 2b04 ldr.w r2, [r3], #4
  18686. 8008202: 459c cmp ip, r3
  18687. 8008204: f841 2f04 str.w r2, [r1, #4]!
  18688. 8008208: d8f9 bhi.n 80081fe <__lshift+0x9a>
  18689. 800820a: e7e4 b.n 80081d6 <__lshift+0x72>
  18690. 0800820c <__mcmp>:
  18691. 800820c: 6903 ldr r3, [r0, #16]
  18692. 800820e: 690a ldr r2, [r1, #16]
  18693. 8008210: b530 push {r4, r5, lr}
  18694. 8008212: 1a9b subs r3, r3, r2
  18695. 8008214: d10c bne.n 8008230 <__mcmp+0x24>
  18696. 8008216: 0092 lsls r2, r2, #2
  18697. 8008218: 3014 adds r0, #20
  18698. 800821a: 3114 adds r1, #20
  18699. 800821c: 1884 adds r4, r0, r2
  18700. 800821e: 4411 add r1, r2
  18701. 8008220: f854 5d04 ldr.w r5, [r4, #-4]!
  18702. 8008224: f851 2d04 ldr.w r2, [r1, #-4]!
  18703. 8008228: 4295 cmp r5, r2
  18704. 800822a: d003 beq.n 8008234 <__mcmp+0x28>
  18705. 800822c: d305 bcc.n 800823a <__mcmp+0x2e>
  18706. 800822e: 2301 movs r3, #1
  18707. 8008230: 4618 mov r0, r3
  18708. 8008232: bd30 pop {r4, r5, pc}
  18709. 8008234: 42a0 cmp r0, r4
  18710. 8008236: d3f3 bcc.n 8008220 <__mcmp+0x14>
  18711. 8008238: e7fa b.n 8008230 <__mcmp+0x24>
  18712. 800823a: f04f 33ff mov.w r3, #4294967295
  18713. 800823e: e7f7 b.n 8008230 <__mcmp+0x24>
  18714. 08008240 <__mdiff>:
  18715. 8008240: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
  18716. 8008244: 460d mov r5, r1
  18717. 8008246: 4607 mov r7, r0
  18718. 8008248: 4611 mov r1, r2
  18719. 800824a: 4628 mov r0, r5
  18720. 800824c: 4614 mov r4, r2
  18721. 800824e: f7ff ffdd bl 800820c <__mcmp>
  18722. 8008252: 1e06 subs r6, r0, #0
  18723. 8008254: d108 bne.n 8008268 <__mdiff+0x28>
  18724. 8008256: 4631 mov r1, r6
  18725. 8008258: 4638 mov r0, r7
  18726. 800825a: f7ff fdc2 bl 8007de2 <_Balloc>
  18727. 800825e: 2301 movs r3, #1
  18728. 8008260: e9c0 3604 strd r3, r6, [r0, #16]
  18729. 8008264: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  18730. 8008268: bfa4 itt ge
  18731. 800826a: 4623 movge r3, r4
  18732. 800826c: 462c movge r4, r5
  18733. 800826e: 4638 mov r0, r7
  18734. 8008270: 6861 ldr r1, [r4, #4]
  18735. 8008272: bfa6 itte ge
  18736. 8008274: 461d movge r5, r3
  18737. 8008276: 2600 movge r6, #0
  18738. 8008278: 2601 movlt r6, #1
  18739. 800827a: f7ff fdb2 bl 8007de2 <_Balloc>
  18740. 800827e: f04f 0e00 mov.w lr, #0
  18741. 8008282: 60c6 str r6, [r0, #12]
  18742. 8008284: 692b ldr r3, [r5, #16]
  18743. 8008286: 6926 ldr r6, [r4, #16]
  18744. 8008288: f104 0214 add.w r2, r4, #20
  18745. 800828c: f105 0914 add.w r9, r5, #20
  18746. 8008290: eb02 0786 add.w r7, r2, r6, lsl #2
  18747. 8008294: eb09 0883 add.w r8, r9, r3, lsl #2
  18748. 8008298: f100 0114 add.w r1, r0, #20
  18749. 800829c: f852 ab04 ldr.w sl, [r2], #4
  18750. 80082a0: f859 5b04 ldr.w r5, [r9], #4
  18751. 80082a4: fa1f f38a uxth.w r3, sl
  18752. 80082a8: 4473 add r3, lr
  18753. 80082aa: b2ac uxth r4, r5
  18754. 80082ac: 1b1b subs r3, r3, r4
  18755. 80082ae: 0c2c lsrs r4, r5, #16
  18756. 80082b0: ebc4 441a rsb r4, r4, sl, lsr #16
  18757. 80082b4: eb04 4423 add.w r4, r4, r3, asr #16
  18758. 80082b8: b29b uxth r3, r3
  18759. 80082ba: ea4f 4e24 mov.w lr, r4, asr #16
  18760. 80082be: 45c8 cmp r8, r9
  18761. 80082c0: ea43 4404 orr.w r4, r3, r4, lsl #16
  18762. 80082c4: 4694 mov ip, r2
  18763. 80082c6: f841 4b04 str.w r4, [r1], #4
  18764. 80082ca: d8e7 bhi.n 800829c <__mdiff+0x5c>
  18765. 80082cc: 45bc cmp ip, r7
  18766. 80082ce: d304 bcc.n 80082da <__mdiff+0x9a>
  18767. 80082d0: f851 3d04 ldr.w r3, [r1, #-4]!
  18768. 80082d4: b183 cbz r3, 80082f8 <__mdiff+0xb8>
  18769. 80082d6: 6106 str r6, [r0, #16]
  18770. 80082d8: e7c4 b.n 8008264 <__mdiff+0x24>
  18771. 80082da: f85c 4b04 ldr.w r4, [ip], #4
  18772. 80082de: b2a2 uxth r2, r4
  18773. 80082e0: 4472 add r2, lr
  18774. 80082e2: 1413 asrs r3, r2, #16
  18775. 80082e4: eb03 4314 add.w r3, r3, r4, lsr #16
  18776. 80082e8: b292 uxth r2, r2
  18777. 80082ea: ea42 4203 orr.w r2, r2, r3, lsl #16
  18778. 80082ee: ea4f 4e23 mov.w lr, r3, asr #16
  18779. 80082f2: f841 2b04 str.w r2, [r1], #4
  18780. 80082f6: e7e9 b.n 80082cc <__mdiff+0x8c>
  18781. 80082f8: 3e01 subs r6, #1
  18782. 80082fa: e7e9 b.n 80082d0 <__mdiff+0x90>
  18783. 080082fc <__d2b>:
  18784. 80082fc: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr}
  18785. 8008300: 461c mov r4, r3
  18786. 8008302: e9dd 6508 ldrd r6, r5, [sp, #32]
  18787. 8008306: 2101 movs r1, #1
  18788. 8008308: 4690 mov r8, r2
  18789. 800830a: f7ff fd6a bl 8007de2 <_Balloc>
  18790. 800830e: f3c4 0213 ubfx r2, r4, #0, #20
  18791. 8008312: f3c4 540a ubfx r4, r4, #20, #11
  18792. 8008316: 4607 mov r7, r0
  18793. 8008318: bb34 cbnz r4, 8008368 <__d2b+0x6c>
  18794. 800831a: 9201 str r2, [sp, #4]
  18795. 800831c: f1b8 0200 subs.w r2, r8, #0
  18796. 8008320: d027 beq.n 8008372 <__d2b+0x76>
  18797. 8008322: a802 add r0, sp, #8
  18798. 8008324: f840 2d08 str.w r2, [r0, #-8]!
  18799. 8008328: f7ff fe00 bl 8007f2c <__lo0bits>
  18800. 800832c: 9900 ldr r1, [sp, #0]
  18801. 800832e: b1f0 cbz r0, 800836e <__d2b+0x72>
  18802. 8008330: 9a01 ldr r2, [sp, #4]
  18803. 8008332: f1c0 0320 rsb r3, r0, #32
  18804. 8008336: fa02 f303 lsl.w r3, r2, r3
  18805. 800833a: 430b orrs r3, r1
  18806. 800833c: 40c2 lsrs r2, r0
  18807. 800833e: 617b str r3, [r7, #20]
  18808. 8008340: 9201 str r2, [sp, #4]
  18809. 8008342: 9b01 ldr r3, [sp, #4]
  18810. 8008344: 2b00 cmp r3, #0
  18811. 8008346: bf14 ite ne
  18812. 8008348: 2102 movne r1, #2
  18813. 800834a: 2101 moveq r1, #1
  18814. 800834c: 61bb str r3, [r7, #24]
  18815. 800834e: 6139 str r1, [r7, #16]
  18816. 8008350: b1c4 cbz r4, 8008384 <__d2b+0x88>
  18817. 8008352: f2a4 4433 subw r4, r4, #1075 ; 0x433
  18818. 8008356: 4404 add r4, r0
  18819. 8008358: 6034 str r4, [r6, #0]
  18820. 800835a: f1c0 0035 rsb r0, r0, #53 ; 0x35
  18821. 800835e: 6028 str r0, [r5, #0]
  18822. 8008360: 4638 mov r0, r7
  18823. 8008362: b002 add sp, #8
  18824. 8008364: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
  18825. 8008368: f442 1280 orr.w r2, r2, #1048576 ; 0x100000
  18826. 800836c: e7d5 b.n 800831a <__d2b+0x1e>
  18827. 800836e: 6179 str r1, [r7, #20]
  18828. 8008370: e7e7 b.n 8008342 <__d2b+0x46>
  18829. 8008372: a801 add r0, sp, #4
  18830. 8008374: f7ff fdda bl 8007f2c <__lo0bits>
  18831. 8008378: 2101 movs r1, #1
  18832. 800837a: 9b01 ldr r3, [sp, #4]
  18833. 800837c: 6139 str r1, [r7, #16]
  18834. 800837e: 617b str r3, [r7, #20]
  18835. 8008380: 3020 adds r0, #32
  18836. 8008382: e7e5 b.n 8008350 <__d2b+0x54>
  18837. 8008384: f2a0 4032 subw r0, r0, #1074 ; 0x432
  18838. 8008388: eb07 0381 add.w r3, r7, r1, lsl #2
  18839. 800838c: 6030 str r0, [r6, #0]
  18840. 800838e: 6918 ldr r0, [r3, #16]
  18841. 8008390: f7ff fdad bl 8007eee <__hi0bits>
  18842. 8008394: ebc0 1041 rsb r0, r0, r1, lsl #5
  18843. 8008398: e7e1 b.n 800835e <__d2b+0x62>
  18844. 0800839a <_calloc_r>:
  18845. 800839a: b538 push {r3, r4, r5, lr}
  18846. 800839c: fb02 f401 mul.w r4, r2, r1
  18847. 80083a0: 4621 mov r1, r4
  18848. 80083a2: f000 f855 bl 8008450 <_malloc_r>
  18849. 80083a6: 4605 mov r5, r0
  18850. 80083a8: b118 cbz r0, 80083b2 <_calloc_r+0x18>
  18851. 80083aa: 4622 mov r2, r4
  18852. 80083ac: 2100 movs r1, #0
  18853. 80083ae: f7fd fe7f bl 80060b0 <memset>
  18854. 80083b2: 4628 mov r0, r5
  18855. 80083b4: bd38 pop {r3, r4, r5, pc}
  18856. ...
  18857. 080083b8 <_free_r>:
  18858. 80083b8: b538 push {r3, r4, r5, lr}
  18859. 80083ba: 4605 mov r5, r0
  18860. 80083bc: 2900 cmp r1, #0
  18861. 80083be: d043 beq.n 8008448 <_free_r+0x90>
  18862. 80083c0: f851 3c04 ldr.w r3, [r1, #-4]
  18863. 80083c4: 1f0c subs r4, r1, #4
  18864. 80083c6: 2b00 cmp r3, #0
  18865. 80083c8: bfb8 it lt
  18866. 80083ca: 18e4 addlt r4, r4, r3
  18867. 80083cc: f000 fa94 bl 80088f8 <__malloc_lock>
  18868. 80083d0: 4a1e ldr r2, [pc, #120] ; (800844c <_free_r+0x94>)
  18869. 80083d2: 6813 ldr r3, [r2, #0]
  18870. 80083d4: 4610 mov r0, r2
  18871. 80083d6: b933 cbnz r3, 80083e6 <_free_r+0x2e>
  18872. 80083d8: 6063 str r3, [r4, #4]
  18873. 80083da: 6014 str r4, [r2, #0]
  18874. 80083dc: 4628 mov r0, r5
  18875. 80083de: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr}
  18876. 80083e2: f000 ba8a b.w 80088fa <__malloc_unlock>
  18877. 80083e6: 42a3 cmp r3, r4
  18878. 80083e8: d90b bls.n 8008402 <_free_r+0x4a>
  18879. 80083ea: 6821 ldr r1, [r4, #0]
  18880. 80083ec: 1862 adds r2, r4, r1
  18881. 80083ee: 4293 cmp r3, r2
  18882. 80083f0: bf01 itttt eq
  18883. 80083f2: 681a ldreq r2, [r3, #0]
  18884. 80083f4: 685b ldreq r3, [r3, #4]
  18885. 80083f6: 1852 addeq r2, r2, r1
  18886. 80083f8: 6022 streq r2, [r4, #0]
  18887. 80083fa: 6063 str r3, [r4, #4]
  18888. 80083fc: 6004 str r4, [r0, #0]
  18889. 80083fe: e7ed b.n 80083dc <_free_r+0x24>
  18890. 8008400: 4613 mov r3, r2
  18891. 8008402: 685a ldr r2, [r3, #4]
  18892. 8008404: b10a cbz r2, 800840a <_free_r+0x52>
  18893. 8008406: 42a2 cmp r2, r4
  18894. 8008408: d9fa bls.n 8008400 <_free_r+0x48>
  18895. 800840a: 6819 ldr r1, [r3, #0]
  18896. 800840c: 1858 adds r0, r3, r1
  18897. 800840e: 42a0 cmp r0, r4
  18898. 8008410: d10b bne.n 800842a <_free_r+0x72>
  18899. 8008412: 6820 ldr r0, [r4, #0]
  18900. 8008414: 4401 add r1, r0
  18901. 8008416: 1858 adds r0, r3, r1
  18902. 8008418: 4282 cmp r2, r0
  18903. 800841a: 6019 str r1, [r3, #0]
  18904. 800841c: d1de bne.n 80083dc <_free_r+0x24>
  18905. 800841e: 6810 ldr r0, [r2, #0]
  18906. 8008420: 6852 ldr r2, [r2, #4]
  18907. 8008422: 4401 add r1, r0
  18908. 8008424: 6019 str r1, [r3, #0]
  18909. 8008426: 605a str r2, [r3, #4]
  18910. 8008428: e7d8 b.n 80083dc <_free_r+0x24>
  18911. 800842a: d902 bls.n 8008432 <_free_r+0x7a>
  18912. 800842c: 230c movs r3, #12
  18913. 800842e: 602b str r3, [r5, #0]
  18914. 8008430: e7d4 b.n 80083dc <_free_r+0x24>
  18915. 8008432: 6820 ldr r0, [r4, #0]
  18916. 8008434: 1821 adds r1, r4, r0
  18917. 8008436: 428a cmp r2, r1
  18918. 8008438: bf01 itttt eq
  18919. 800843a: 6811 ldreq r1, [r2, #0]
  18920. 800843c: 6852 ldreq r2, [r2, #4]
  18921. 800843e: 1809 addeq r1, r1, r0
  18922. 8008440: 6021 streq r1, [r4, #0]
  18923. 8008442: 6062 str r2, [r4, #4]
  18924. 8008444: 605c str r4, [r3, #4]
  18925. 8008446: e7c9 b.n 80083dc <_free_r+0x24>
  18926. 8008448: bd38 pop {r3, r4, r5, pc}
  18927. 800844a: bf00 nop
  18928. 800844c: 20000640 .word 0x20000640
  18929. 08008450 <_malloc_r>:
  18930. 8008450: b570 push {r4, r5, r6, lr}
  18931. 8008452: 1ccd adds r5, r1, #3
  18932. 8008454: f025 0503 bic.w r5, r5, #3
  18933. 8008458: 3508 adds r5, #8
  18934. 800845a: 2d0c cmp r5, #12
  18935. 800845c: bf38 it cc
  18936. 800845e: 250c movcc r5, #12
  18937. 8008460: 2d00 cmp r5, #0
  18938. 8008462: 4606 mov r6, r0
  18939. 8008464: db01 blt.n 800846a <_malloc_r+0x1a>
  18940. 8008466: 42a9 cmp r1, r5
  18941. 8008468: d903 bls.n 8008472 <_malloc_r+0x22>
  18942. 800846a: 230c movs r3, #12
  18943. 800846c: 6033 str r3, [r6, #0]
  18944. 800846e: 2000 movs r0, #0
  18945. 8008470: bd70 pop {r4, r5, r6, pc}
  18946. 8008472: f000 fa41 bl 80088f8 <__malloc_lock>
  18947. 8008476: 4a21 ldr r2, [pc, #132] ; (80084fc <_malloc_r+0xac>)
  18948. 8008478: 6814 ldr r4, [r2, #0]
  18949. 800847a: 4621 mov r1, r4
  18950. 800847c: b991 cbnz r1, 80084a4 <_malloc_r+0x54>
  18951. 800847e: 4c20 ldr r4, [pc, #128] ; (8008500 <_malloc_r+0xb0>)
  18952. 8008480: 6823 ldr r3, [r4, #0]
  18953. 8008482: b91b cbnz r3, 800848c <_malloc_r+0x3c>
  18954. 8008484: 4630 mov r0, r6
  18955. 8008486: f000 f97b bl 8008780 <_sbrk_r>
  18956. 800848a: 6020 str r0, [r4, #0]
  18957. 800848c: 4629 mov r1, r5
  18958. 800848e: 4630 mov r0, r6
  18959. 8008490: f000 f976 bl 8008780 <_sbrk_r>
  18960. 8008494: 1c43 adds r3, r0, #1
  18961. 8008496: d124 bne.n 80084e2 <_malloc_r+0x92>
  18962. 8008498: 230c movs r3, #12
  18963. 800849a: 4630 mov r0, r6
  18964. 800849c: 6033 str r3, [r6, #0]
  18965. 800849e: f000 fa2c bl 80088fa <__malloc_unlock>
  18966. 80084a2: e7e4 b.n 800846e <_malloc_r+0x1e>
  18967. 80084a4: 680b ldr r3, [r1, #0]
  18968. 80084a6: 1b5b subs r3, r3, r5
  18969. 80084a8: d418 bmi.n 80084dc <_malloc_r+0x8c>
  18970. 80084aa: 2b0b cmp r3, #11
  18971. 80084ac: d90f bls.n 80084ce <_malloc_r+0x7e>
  18972. 80084ae: 600b str r3, [r1, #0]
  18973. 80084b0: 18cc adds r4, r1, r3
  18974. 80084b2: 50cd str r5, [r1, r3]
  18975. 80084b4: 4630 mov r0, r6
  18976. 80084b6: f000 fa20 bl 80088fa <__malloc_unlock>
  18977. 80084ba: f104 000b add.w r0, r4, #11
  18978. 80084be: 1d23 adds r3, r4, #4
  18979. 80084c0: f020 0007 bic.w r0, r0, #7
  18980. 80084c4: 1ac3 subs r3, r0, r3
  18981. 80084c6: d0d3 beq.n 8008470 <_malloc_r+0x20>
  18982. 80084c8: 425a negs r2, r3
  18983. 80084ca: 50e2 str r2, [r4, r3]
  18984. 80084cc: e7d0 b.n 8008470 <_malloc_r+0x20>
  18985. 80084ce: 684b ldr r3, [r1, #4]
  18986. 80084d0: 428c cmp r4, r1
  18987. 80084d2: bf16 itet ne
  18988. 80084d4: 6063 strne r3, [r4, #4]
  18989. 80084d6: 6013 streq r3, [r2, #0]
  18990. 80084d8: 460c movne r4, r1
  18991. 80084da: e7eb b.n 80084b4 <_malloc_r+0x64>
  18992. 80084dc: 460c mov r4, r1
  18993. 80084de: 6849 ldr r1, [r1, #4]
  18994. 80084e0: e7cc b.n 800847c <_malloc_r+0x2c>
  18995. 80084e2: 1cc4 adds r4, r0, #3
  18996. 80084e4: f024 0403 bic.w r4, r4, #3
  18997. 80084e8: 42a0 cmp r0, r4
  18998. 80084ea: d005 beq.n 80084f8 <_malloc_r+0xa8>
  18999. 80084ec: 1a21 subs r1, r4, r0
  19000. 80084ee: 4630 mov r0, r6
  19001. 80084f0: f000 f946 bl 8008780 <_sbrk_r>
  19002. 80084f4: 3001 adds r0, #1
  19003. 80084f6: d0cf beq.n 8008498 <_malloc_r+0x48>
  19004. 80084f8: 6025 str r5, [r4, #0]
  19005. 80084fa: e7db b.n 80084b4 <_malloc_r+0x64>
  19006. 80084fc: 20000640 .word 0x20000640
  19007. 8008500: 20000644 .word 0x20000644
  19008. 08008504 <__sfputc_r>:
  19009. 8008504: 6893 ldr r3, [r2, #8]
  19010. 8008506: b410 push {r4}
  19011. 8008508: 3b01 subs r3, #1
  19012. 800850a: 2b00 cmp r3, #0
  19013. 800850c: 6093 str r3, [r2, #8]
  19014. 800850e: da07 bge.n 8008520 <__sfputc_r+0x1c>
  19015. 8008510: 6994 ldr r4, [r2, #24]
  19016. 8008512: 42a3 cmp r3, r4
  19017. 8008514: db01 blt.n 800851a <__sfputc_r+0x16>
  19018. 8008516: 290a cmp r1, #10
  19019. 8008518: d102 bne.n 8008520 <__sfputc_r+0x1c>
  19020. 800851a: bc10 pop {r4}
  19021. 800851c: f7fe bb52 b.w 8006bc4 <__swbuf_r>
  19022. 8008520: 6813 ldr r3, [r2, #0]
  19023. 8008522: 1c58 adds r0, r3, #1
  19024. 8008524: 6010 str r0, [r2, #0]
  19025. 8008526: 7019 strb r1, [r3, #0]
  19026. 8008528: 4608 mov r0, r1
  19027. 800852a: bc10 pop {r4}
  19028. 800852c: 4770 bx lr
  19029. 0800852e <__sfputs_r>:
  19030. 800852e: b5f8 push {r3, r4, r5, r6, r7, lr}
  19031. 8008530: 4606 mov r6, r0
  19032. 8008532: 460f mov r7, r1
  19033. 8008534: 4614 mov r4, r2
  19034. 8008536: 18d5 adds r5, r2, r3
  19035. 8008538: 42ac cmp r4, r5
  19036. 800853a: d101 bne.n 8008540 <__sfputs_r+0x12>
  19037. 800853c: 2000 movs r0, #0
  19038. 800853e: e007 b.n 8008550 <__sfputs_r+0x22>
  19039. 8008540: 463a mov r2, r7
  19040. 8008542: f814 1b01 ldrb.w r1, [r4], #1
  19041. 8008546: 4630 mov r0, r6
  19042. 8008548: f7ff ffdc bl 8008504 <__sfputc_r>
  19043. 800854c: 1c43 adds r3, r0, #1
  19044. 800854e: d1f3 bne.n 8008538 <__sfputs_r+0xa>
  19045. 8008550: bdf8 pop {r3, r4, r5, r6, r7, pc}
  19046. ...
  19047. 08008554 <_vfiprintf_r>:
  19048. 8008554: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
  19049. 8008558: 460c mov r4, r1
  19050. 800855a: b09d sub sp, #116 ; 0x74
  19051. 800855c: 4617 mov r7, r2
  19052. 800855e: 461d mov r5, r3
  19053. 8008560: 4606 mov r6, r0
  19054. 8008562: b118 cbz r0, 800856c <_vfiprintf_r+0x18>
  19055. 8008564: 6983 ldr r3, [r0, #24]
  19056. 8008566: b90b cbnz r3, 800856c <_vfiprintf_r+0x18>
  19057. 8008568: f7ff fb1e bl 8007ba8 <__sinit>
  19058. 800856c: 4b7c ldr r3, [pc, #496] ; (8008760 <_vfiprintf_r+0x20c>)
  19059. 800856e: 429c cmp r4, r3
  19060. 8008570: d158 bne.n 8008624 <_vfiprintf_r+0xd0>
  19061. 8008572: 6874 ldr r4, [r6, #4]
  19062. 8008574: 89a3 ldrh r3, [r4, #12]
  19063. 8008576: 0718 lsls r0, r3, #28
  19064. 8008578: d55e bpl.n 8008638 <_vfiprintf_r+0xe4>
  19065. 800857a: 6923 ldr r3, [r4, #16]
  19066. 800857c: 2b00 cmp r3, #0
  19067. 800857e: d05b beq.n 8008638 <_vfiprintf_r+0xe4>
  19068. 8008580: 2300 movs r3, #0
  19069. 8008582: 9309 str r3, [sp, #36] ; 0x24
  19070. 8008584: 2320 movs r3, #32
  19071. 8008586: f88d 3029 strb.w r3, [sp, #41] ; 0x29
  19072. 800858a: 2330 movs r3, #48 ; 0x30
  19073. 800858c: f04f 0b01 mov.w fp, #1
  19074. 8008590: f88d 302a strb.w r3, [sp, #42] ; 0x2a
  19075. 8008594: 9503 str r5, [sp, #12]
  19076. 8008596: 46b8 mov r8, r7
  19077. 8008598: 4645 mov r5, r8
  19078. 800859a: f815 3b01 ldrb.w r3, [r5], #1
  19079. 800859e: b10b cbz r3, 80085a4 <_vfiprintf_r+0x50>
  19080. 80085a0: 2b25 cmp r3, #37 ; 0x25
  19081. 80085a2: d154 bne.n 800864e <_vfiprintf_r+0xfa>
  19082. 80085a4: ebb8 0a07 subs.w sl, r8, r7
  19083. 80085a8: d00b beq.n 80085c2 <_vfiprintf_r+0x6e>
  19084. 80085aa: 4653 mov r3, sl
  19085. 80085ac: 463a mov r2, r7
  19086. 80085ae: 4621 mov r1, r4
  19087. 80085b0: 4630 mov r0, r6
  19088. 80085b2: f7ff ffbc bl 800852e <__sfputs_r>
  19089. 80085b6: 3001 adds r0, #1
  19090. 80085b8: f000 80c2 beq.w 8008740 <_vfiprintf_r+0x1ec>
  19091. 80085bc: 9b09 ldr r3, [sp, #36] ; 0x24
  19092. 80085be: 4453 add r3, sl
  19093. 80085c0: 9309 str r3, [sp, #36] ; 0x24
  19094. 80085c2: f898 3000 ldrb.w r3, [r8]
  19095. 80085c6: 2b00 cmp r3, #0
  19096. 80085c8: f000 80ba beq.w 8008740 <_vfiprintf_r+0x1ec>
  19097. 80085cc: 2300 movs r3, #0
  19098. 80085ce: f04f 32ff mov.w r2, #4294967295
  19099. 80085d2: e9cd 2305 strd r2, r3, [sp, #20]
  19100. 80085d6: 9304 str r3, [sp, #16]
  19101. 80085d8: 9307 str r3, [sp, #28]
  19102. 80085da: f88d 3053 strb.w r3, [sp, #83] ; 0x53
  19103. 80085de: 931a str r3, [sp, #104] ; 0x68
  19104. 80085e0: 46a8 mov r8, r5
  19105. 80085e2: 2205 movs r2, #5
  19106. 80085e4: f818 1b01 ldrb.w r1, [r8], #1
  19107. 80085e8: 485e ldr r0, [pc, #376] ; (8008764 <_vfiprintf_r+0x210>)
  19108. 80085ea: f7ff fbe1 bl 8007db0 <memchr>
  19109. 80085ee: 9b04 ldr r3, [sp, #16]
  19110. 80085f0: bb78 cbnz r0, 8008652 <_vfiprintf_r+0xfe>
  19111. 80085f2: 06d9 lsls r1, r3, #27
  19112. 80085f4: bf44 itt mi
  19113. 80085f6: 2220 movmi r2, #32
  19114. 80085f8: f88d 2053 strbmi.w r2, [sp, #83] ; 0x53
  19115. 80085fc: 071a lsls r2, r3, #28
  19116. 80085fe: bf44 itt mi
  19117. 8008600: 222b movmi r2, #43 ; 0x2b
  19118. 8008602: f88d 2053 strbmi.w r2, [sp, #83] ; 0x53
  19119. 8008606: 782a ldrb r2, [r5, #0]
  19120. 8008608: 2a2a cmp r2, #42 ; 0x2a
  19121. 800860a: d02a beq.n 8008662 <_vfiprintf_r+0x10e>
  19122. 800860c: 46a8 mov r8, r5
  19123. 800860e: 2000 movs r0, #0
  19124. 8008610: 250a movs r5, #10
  19125. 8008612: 9a07 ldr r2, [sp, #28]
  19126. 8008614: 4641 mov r1, r8
  19127. 8008616: f811 3b01 ldrb.w r3, [r1], #1
  19128. 800861a: 3b30 subs r3, #48 ; 0x30
  19129. 800861c: 2b09 cmp r3, #9
  19130. 800861e: d969 bls.n 80086f4 <_vfiprintf_r+0x1a0>
  19131. 8008620: b360 cbz r0, 800867c <_vfiprintf_r+0x128>
  19132. 8008622: e024 b.n 800866e <_vfiprintf_r+0x11a>
  19133. 8008624: 4b50 ldr r3, [pc, #320] ; (8008768 <_vfiprintf_r+0x214>)
  19134. 8008626: 429c cmp r4, r3
  19135. 8008628: d101 bne.n 800862e <_vfiprintf_r+0xda>
  19136. 800862a: 68b4 ldr r4, [r6, #8]
  19137. 800862c: e7a2 b.n 8008574 <_vfiprintf_r+0x20>
  19138. 800862e: 4b4f ldr r3, [pc, #316] ; (800876c <_vfiprintf_r+0x218>)
  19139. 8008630: 429c cmp r4, r3
  19140. 8008632: bf08 it eq
  19141. 8008634: 68f4 ldreq r4, [r6, #12]
  19142. 8008636: e79d b.n 8008574 <_vfiprintf_r+0x20>
  19143. 8008638: 4621 mov r1, r4
  19144. 800863a: 4630 mov r0, r6
  19145. 800863c: f7fe fb14 bl 8006c68 <__swsetup_r>
  19146. 8008640: 2800 cmp r0, #0
  19147. 8008642: d09d beq.n 8008580 <_vfiprintf_r+0x2c>
  19148. 8008644: f04f 30ff mov.w r0, #4294967295
  19149. 8008648: b01d add sp, #116 ; 0x74
  19150. 800864a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  19151. 800864e: 46a8 mov r8, r5
  19152. 8008650: e7a2 b.n 8008598 <_vfiprintf_r+0x44>
  19153. 8008652: 4a44 ldr r2, [pc, #272] ; (8008764 <_vfiprintf_r+0x210>)
  19154. 8008654: 4645 mov r5, r8
  19155. 8008656: 1a80 subs r0, r0, r2
  19156. 8008658: fa0b f000 lsl.w r0, fp, r0
  19157. 800865c: 4318 orrs r0, r3
  19158. 800865e: 9004 str r0, [sp, #16]
  19159. 8008660: e7be b.n 80085e0 <_vfiprintf_r+0x8c>
  19160. 8008662: 9a03 ldr r2, [sp, #12]
  19161. 8008664: 1d11 adds r1, r2, #4
  19162. 8008666: 6812 ldr r2, [r2, #0]
  19163. 8008668: 9103 str r1, [sp, #12]
  19164. 800866a: 2a00 cmp r2, #0
  19165. 800866c: db01 blt.n 8008672 <_vfiprintf_r+0x11e>
  19166. 800866e: 9207 str r2, [sp, #28]
  19167. 8008670: e004 b.n 800867c <_vfiprintf_r+0x128>
  19168. 8008672: 4252 negs r2, r2
  19169. 8008674: f043 0302 orr.w r3, r3, #2
  19170. 8008678: 9207 str r2, [sp, #28]
  19171. 800867a: 9304 str r3, [sp, #16]
  19172. 800867c: f898 3000 ldrb.w r3, [r8]
  19173. 8008680: 2b2e cmp r3, #46 ; 0x2e
  19174. 8008682: d10e bne.n 80086a2 <_vfiprintf_r+0x14e>
  19175. 8008684: f898 3001 ldrb.w r3, [r8, #1]
  19176. 8008688: 2b2a cmp r3, #42 ; 0x2a
  19177. 800868a: d138 bne.n 80086fe <_vfiprintf_r+0x1aa>
  19178. 800868c: 9b03 ldr r3, [sp, #12]
  19179. 800868e: f108 0802 add.w r8, r8, #2
  19180. 8008692: 1d1a adds r2, r3, #4
  19181. 8008694: 681b ldr r3, [r3, #0]
  19182. 8008696: 9203 str r2, [sp, #12]
  19183. 8008698: 2b00 cmp r3, #0
  19184. 800869a: bfb8 it lt
  19185. 800869c: f04f 33ff movlt.w r3, #4294967295
  19186. 80086a0: 9305 str r3, [sp, #20]
  19187. 80086a2: 4d33 ldr r5, [pc, #204] ; (8008770 <_vfiprintf_r+0x21c>)
  19188. 80086a4: 2203 movs r2, #3
  19189. 80086a6: f898 1000 ldrb.w r1, [r8]
  19190. 80086aa: 4628 mov r0, r5
  19191. 80086ac: f7ff fb80 bl 8007db0 <memchr>
  19192. 80086b0: b140 cbz r0, 80086c4 <_vfiprintf_r+0x170>
  19193. 80086b2: 2340 movs r3, #64 ; 0x40
  19194. 80086b4: 1b40 subs r0, r0, r5
  19195. 80086b6: fa03 f000 lsl.w r0, r3, r0
  19196. 80086ba: 9b04 ldr r3, [sp, #16]
  19197. 80086bc: f108 0801 add.w r8, r8, #1
  19198. 80086c0: 4303 orrs r3, r0
  19199. 80086c2: 9304 str r3, [sp, #16]
  19200. 80086c4: f898 1000 ldrb.w r1, [r8]
  19201. 80086c8: 2206 movs r2, #6
  19202. 80086ca: 482a ldr r0, [pc, #168] ; (8008774 <_vfiprintf_r+0x220>)
  19203. 80086cc: f108 0701 add.w r7, r8, #1
  19204. 80086d0: f88d 1028 strb.w r1, [sp, #40] ; 0x28
  19205. 80086d4: f7ff fb6c bl 8007db0 <memchr>
  19206. 80086d8: 2800 cmp r0, #0
  19207. 80086da: d037 beq.n 800874c <_vfiprintf_r+0x1f8>
  19208. 80086dc: 4b26 ldr r3, [pc, #152] ; (8008778 <_vfiprintf_r+0x224>)
  19209. 80086de: bb1b cbnz r3, 8008728 <_vfiprintf_r+0x1d4>
  19210. 80086e0: 9b03 ldr r3, [sp, #12]
  19211. 80086e2: 3307 adds r3, #7
  19212. 80086e4: f023 0307 bic.w r3, r3, #7
  19213. 80086e8: 3308 adds r3, #8
  19214. 80086ea: 9303 str r3, [sp, #12]
  19215. 80086ec: 9b09 ldr r3, [sp, #36] ; 0x24
  19216. 80086ee: 444b add r3, r9
  19217. 80086f0: 9309 str r3, [sp, #36] ; 0x24
  19218. 80086f2: e750 b.n 8008596 <_vfiprintf_r+0x42>
  19219. 80086f4: fb05 3202 mla r2, r5, r2, r3
  19220. 80086f8: 2001 movs r0, #1
  19221. 80086fa: 4688 mov r8, r1
  19222. 80086fc: e78a b.n 8008614 <_vfiprintf_r+0xc0>
  19223. 80086fe: 2300 movs r3, #0
  19224. 8008700: 250a movs r5, #10
  19225. 8008702: 4619 mov r1, r3
  19226. 8008704: f108 0801 add.w r8, r8, #1
  19227. 8008708: 9305 str r3, [sp, #20]
  19228. 800870a: 4640 mov r0, r8
  19229. 800870c: f810 2b01 ldrb.w r2, [r0], #1
  19230. 8008710: 3a30 subs r2, #48 ; 0x30
  19231. 8008712: 2a09 cmp r2, #9
  19232. 8008714: d903 bls.n 800871e <_vfiprintf_r+0x1ca>
  19233. 8008716: 2b00 cmp r3, #0
  19234. 8008718: d0c3 beq.n 80086a2 <_vfiprintf_r+0x14e>
  19235. 800871a: 9105 str r1, [sp, #20]
  19236. 800871c: e7c1 b.n 80086a2 <_vfiprintf_r+0x14e>
  19237. 800871e: fb05 2101 mla r1, r5, r1, r2
  19238. 8008722: 2301 movs r3, #1
  19239. 8008724: 4680 mov r8, r0
  19240. 8008726: e7f0 b.n 800870a <_vfiprintf_r+0x1b6>
  19241. 8008728: ab03 add r3, sp, #12
  19242. 800872a: 9300 str r3, [sp, #0]
  19243. 800872c: 4622 mov r2, r4
  19244. 800872e: 4b13 ldr r3, [pc, #76] ; (800877c <_vfiprintf_r+0x228>)
  19245. 8008730: a904 add r1, sp, #16
  19246. 8008732: 4630 mov r0, r6
  19247. 8008734: f7fd fd56 bl 80061e4 <_printf_float>
  19248. 8008738: f1b0 3fff cmp.w r0, #4294967295
  19249. 800873c: 4681 mov r9, r0
  19250. 800873e: d1d5 bne.n 80086ec <_vfiprintf_r+0x198>
  19251. 8008740: 89a3 ldrh r3, [r4, #12]
  19252. 8008742: 065b lsls r3, r3, #25
  19253. 8008744: f53f af7e bmi.w 8008644 <_vfiprintf_r+0xf0>
  19254. 8008748: 9809 ldr r0, [sp, #36] ; 0x24
  19255. 800874a: e77d b.n 8008648 <_vfiprintf_r+0xf4>
  19256. 800874c: ab03 add r3, sp, #12
  19257. 800874e: 9300 str r3, [sp, #0]
  19258. 8008750: 4622 mov r2, r4
  19259. 8008752: 4b0a ldr r3, [pc, #40] ; (800877c <_vfiprintf_r+0x228>)
  19260. 8008754: a904 add r1, sp, #16
  19261. 8008756: 4630 mov r0, r6
  19262. 8008758: f7fd fff0 bl 800673c <_printf_i>
  19263. 800875c: e7ec b.n 8008738 <_vfiprintf_r+0x1e4>
  19264. 800875e: bf00 nop
  19265. 8008760: 08008d6c .word 0x08008d6c
  19266. 8008764: 08008eac .word 0x08008eac
  19267. 8008768: 08008d8c .word 0x08008d8c
  19268. 800876c: 08008d4c .word 0x08008d4c
  19269. 8008770: 08008eb2 .word 0x08008eb2
  19270. 8008774: 08008eb6 .word 0x08008eb6
  19271. 8008778: 080061e5 .word 0x080061e5
  19272. 800877c: 0800852f .word 0x0800852f
  19273. 08008780 <_sbrk_r>:
  19274. 8008780: b538 push {r3, r4, r5, lr}
  19275. 8008782: 2300 movs r3, #0
  19276. 8008784: 4c05 ldr r4, [pc, #20] ; (800879c <_sbrk_r+0x1c>)
  19277. 8008786: 4605 mov r5, r0
  19278. 8008788: 4608 mov r0, r1
  19279. 800878a: 6023 str r3, [r4, #0]
  19280. 800878c: f7fd fbdc bl 8005f48 <_sbrk>
  19281. 8008790: 1c43 adds r3, r0, #1
  19282. 8008792: d102 bne.n 800879a <_sbrk_r+0x1a>
  19283. 8008794: 6823 ldr r3, [r4, #0]
  19284. 8008796: b103 cbz r3, 800879a <_sbrk_r+0x1a>
  19285. 8008798: 602b str r3, [r5, #0]
  19286. 800879a: bd38 pop {r3, r4, r5, pc}
  19287. 800879c: 20000b94 .word 0x20000b94
  19288. 080087a0 <__sread>:
  19289. 80087a0: b510 push {r4, lr}
  19290. 80087a2: 460c mov r4, r1
  19291. 80087a4: f9b1 100e ldrsh.w r1, [r1, #14]
  19292. 80087a8: f000 f8a8 bl 80088fc <_read_r>
  19293. 80087ac: 2800 cmp r0, #0
  19294. 80087ae: bfab itete ge
  19295. 80087b0: 6d63 ldrge r3, [r4, #84] ; 0x54
  19296. 80087b2: 89a3 ldrhlt r3, [r4, #12]
  19297. 80087b4: 181b addge r3, r3, r0
  19298. 80087b6: f423 5380 biclt.w r3, r3, #4096 ; 0x1000
  19299. 80087ba: bfac ite ge
  19300. 80087bc: 6563 strge r3, [r4, #84] ; 0x54
  19301. 80087be: 81a3 strhlt r3, [r4, #12]
  19302. 80087c0: bd10 pop {r4, pc}
  19303. 080087c2 <__swrite>:
  19304. 80087c2: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
  19305. 80087c6: 461f mov r7, r3
  19306. 80087c8: 898b ldrh r3, [r1, #12]
  19307. 80087ca: 4605 mov r5, r0
  19308. 80087cc: 05db lsls r3, r3, #23
  19309. 80087ce: 460c mov r4, r1
  19310. 80087d0: 4616 mov r6, r2
  19311. 80087d2: d505 bpl.n 80087e0 <__swrite+0x1e>
  19312. 80087d4: 2302 movs r3, #2
  19313. 80087d6: 2200 movs r2, #0
  19314. 80087d8: f9b1 100e ldrsh.w r1, [r1, #14]
  19315. 80087dc: f000 f868 bl 80088b0 <_lseek_r>
  19316. 80087e0: 89a3 ldrh r3, [r4, #12]
  19317. 80087e2: 4632 mov r2, r6
  19318. 80087e4: f423 5380 bic.w r3, r3, #4096 ; 0x1000
  19319. 80087e8: 81a3 strh r3, [r4, #12]
  19320. 80087ea: f9b4 100e ldrsh.w r1, [r4, #14]
  19321. 80087ee: 463b mov r3, r7
  19322. 80087f0: 4628 mov r0, r5
  19323. 80087f2: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
  19324. 80087f6: f000 b817 b.w 8008828 <_write_r>
  19325. 080087fa <__sseek>:
  19326. 80087fa: b510 push {r4, lr}
  19327. 80087fc: 460c mov r4, r1
  19328. 80087fe: f9b1 100e ldrsh.w r1, [r1, #14]
  19329. 8008802: f000 f855 bl 80088b0 <_lseek_r>
  19330. 8008806: 1c43 adds r3, r0, #1
  19331. 8008808: 89a3 ldrh r3, [r4, #12]
  19332. 800880a: bf15 itete ne
  19333. 800880c: 6560 strne r0, [r4, #84] ; 0x54
  19334. 800880e: f423 5380 biceq.w r3, r3, #4096 ; 0x1000
  19335. 8008812: f443 5380 orrne.w r3, r3, #4096 ; 0x1000
  19336. 8008816: 81a3 strheq r3, [r4, #12]
  19337. 8008818: bf18 it ne
  19338. 800881a: 81a3 strhne r3, [r4, #12]
  19339. 800881c: bd10 pop {r4, pc}
  19340. 0800881e <__sclose>:
  19341. 800881e: f9b1 100e ldrsh.w r1, [r1, #14]
  19342. 8008822: f000 b813 b.w 800884c <_close_r>
  19343. ...
  19344. 08008828 <_write_r>:
  19345. 8008828: b538 push {r3, r4, r5, lr}
  19346. 800882a: 4605 mov r5, r0
  19347. 800882c: 4608 mov r0, r1
  19348. 800882e: 4611 mov r1, r2
  19349. 8008830: 2200 movs r2, #0
  19350. 8008832: 4c05 ldr r4, [pc, #20] ; (8008848 <_write_r+0x20>)
  19351. 8008834: 6022 str r2, [r4, #0]
  19352. 8008836: 461a mov r2, r3
  19353. 8008838: f7fc fd30 bl 800529c <_write>
  19354. 800883c: 1c43 adds r3, r0, #1
  19355. 800883e: d102 bne.n 8008846 <_write_r+0x1e>
  19356. 8008840: 6823 ldr r3, [r4, #0]
  19357. 8008842: b103 cbz r3, 8008846 <_write_r+0x1e>
  19358. 8008844: 602b str r3, [r5, #0]
  19359. 8008846: bd38 pop {r3, r4, r5, pc}
  19360. 8008848: 20000b94 .word 0x20000b94
  19361. 0800884c <_close_r>:
  19362. 800884c: b538 push {r3, r4, r5, lr}
  19363. 800884e: 2300 movs r3, #0
  19364. 8008850: 4c05 ldr r4, [pc, #20] ; (8008868 <_close_r+0x1c>)
  19365. 8008852: 4605 mov r5, r0
  19366. 8008854: 4608 mov r0, r1
  19367. 8008856: 6023 str r3, [r4, #0]
  19368. 8008858: f7fd fb45 bl 8005ee6 <_close>
  19369. 800885c: 1c43 adds r3, r0, #1
  19370. 800885e: d102 bne.n 8008866 <_close_r+0x1a>
  19371. 8008860: 6823 ldr r3, [r4, #0]
  19372. 8008862: b103 cbz r3, 8008866 <_close_r+0x1a>
  19373. 8008864: 602b str r3, [r5, #0]
  19374. 8008866: bd38 pop {r3, r4, r5, pc}
  19375. 8008868: 20000b94 .word 0x20000b94
  19376. 0800886c <_fstat_r>:
  19377. 800886c: b538 push {r3, r4, r5, lr}
  19378. 800886e: 2300 movs r3, #0
  19379. 8008870: 4c06 ldr r4, [pc, #24] ; (800888c <_fstat_r+0x20>)
  19380. 8008872: 4605 mov r5, r0
  19381. 8008874: 4608 mov r0, r1
  19382. 8008876: 4611 mov r1, r2
  19383. 8008878: 6023 str r3, [r4, #0]
  19384. 800887a: f7fd fb3f bl 8005efc <_fstat>
  19385. 800887e: 1c43 adds r3, r0, #1
  19386. 8008880: d102 bne.n 8008888 <_fstat_r+0x1c>
  19387. 8008882: 6823 ldr r3, [r4, #0]
  19388. 8008884: b103 cbz r3, 8008888 <_fstat_r+0x1c>
  19389. 8008886: 602b str r3, [r5, #0]
  19390. 8008888: bd38 pop {r3, r4, r5, pc}
  19391. 800888a: bf00 nop
  19392. 800888c: 20000b94 .word 0x20000b94
  19393. 08008890 <_isatty_r>:
  19394. 8008890: b538 push {r3, r4, r5, lr}
  19395. 8008892: 2300 movs r3, #0
  19396. 8008894: 4c05 ldr r4, [pc, #20] ; (80088ac <_isatty_r+0x1c>)
  19397. 8008896: 4605 mov r5, r0
  19398. 8008898: 4608 mov r0, r1
  19399. 800889a: 6023 str r3, [r4, #0]
  19400. 800889c: f7fd fb3d bl 8005f1a <_isatty>
  19401. 80088a0: 1c43 adds r3, r0, #1
  19402. 80088a2: d102 bne.n 80088aa <_isatty_r+0x1a>
  19403. 80088a4: 6823 ldr r3, [r4, #0]
  19404. 80088a6: b103 cbz r3, 80088aa <_isatty_r+0x1a>
  19405. 80088a8: 602b str r3, [r5, #0]
  19406. 80088aa: bd38 pop {r3, r4, r5, pc}
  19407. 80088ac: 20000b94 .word 0x20000b94
  19408. 080088b0 <_lseek_r>:
  19409. 80088b0: b538 push {r3, r4, r5, lr}
  19410. 80088b2: 4605 mov r5, r0
  19411. 80088b4: 4608 mov r0, r1
  19412. 80088b6: 4611 mov r1, r2
  19413. 80088b8: 2200 movs r2, #0
  19414. 80088ba: 4c05 ldr r4, [pc, #20] ; (80088d0 <_lseek_r+0x20>)
  19415. 80088bc: 6022 str r2, [r4, #0]
  19416. 80088be: 461a mov r2, r3
  19417. 80088c0: f7fd fb35 bl 8005f2e <_lseek>
  19418. 80088c4: 1c43 adds r3, r0, #1
  19419. 80088c6: d102 bne.n 80088ce <_lseek_r+0x1e>
  19420. 80088c8: 6823 ldr r3, [r4, #0]
  19421. 80088ca: b103 cbz r3, 80088ce <_lseek_r+0x1e>
  19422. 80088cc: 602b str r3, [r5, #0]
  19423. 80088ce: bd38 pop {r3, r4, r5, pc}
  19424. 80088d0: 20000b94 .word 0x20000b94
  19425. 080088d4 <__ascii_mbtowc>:
  19426. 80088d4: b082 sub sp, #8
  19427. 80088d6: b901 cbnz r1, 80088da <__ascii_mbtowc+0x6>
  19428. 80088d8: a901 add r1, sp, #4
  19429. 80088da: b142 cbz r2, 80088ee <__ascii_mbtowc+0x1a>
  19430. 80088dc: b14b cbz r3, 80088f2 <__ascii_mbtowc+0x1e>
  19431. 80088de: 7813 ldrb r3, [r2, #0]
  19432. 80088e0: 600b str r3, [r1, #0]
  19433. 80088e2: 7812 ldrb r2, [r2, #0]
  19434. 80088e4: 1c10 adds r0, r2, #0
  19435. 80088e6: bf18 it ne
  19436. 80088e8: 2001 movne r0, #1
  19437. 80088ea: b002 add sp, #8
  19438. 80088ec: 4770 bx lr
  19439. 80088ee: 4610 mov r0, r2
  19440. 80088f0: e7fb b.n 80088ea <__ascii_mbtowc+0x16>
  19441. 80088f2: f06f 0001 mvn.w r0, #1
  19442. 80088f6: e7f8 b.n 80088ea <__ascii_mbtowc+0x16>
  19443. 080088f8 <__malloc_lock>:
  19444. 80088f8: 4770 bx lr
  19445. 080088fa <__malloc_unlock>:
  19446. 80088fa: 4770 bx lr
  19447. 080088fc <_read_r>:
  19448. 80088fc: b538 push {r3, r4, r5, lr}
  19449. 80088fe: 4605 mov r5, r0
  19450. 8008900: 4608 mov r0, r1
  19451. 8008902: 4611 mov r1, r2
  19452. 8008904: 2200 movs r2, #0
  19453. 8008906: 4c05 ldr r4, [pc, #20] ; (800891c <_read_r+0x20>)
  19454. 8008908: 6022 str r2, [r4, #0]
  19455. 800890a: 461a mov r2, r3
  19456. 800890c: f7fd face bl 8005eac <_read>
  19457. 8008910: 1c43 adds r3, r0, #1
  19458. 8008912: d102 bne.n 800891a <_read_r+0x1e>
  19459. 8008914: 6823 ldr r3, [r4, #0]
  19460. 8008916: b103 cbz r3, 800891a <_read_r+0x1e>
  19461. 8008918: 602b str r3, [r5, #0]
  19462. 800891a: bd38 pop {r3, r4, r5, pc}
  19463. 800891c: 20000b94 .word 0x20000b94
  19464. 08008920 <__ascii_wctomb>:
  19465. 8008920: b149 cbz r1, 8008936 <__ascii_wctomb+0x16>
  19466. 8008922: 2aff cmp r2, #255 ; 0xff
  19467. 8008924: bf8b itete hi
  19468. 8008926: 238a movhi r3, #138 ; 0x8a
  19469. 8008928: 700a strbls r2, [r1, #0]
  19470. 800892a: 6003 strhi r3, [r0, #0]
  19471. 800892c: 2001 movls r0, #1
  19472. 800892e: bf88 it hi
  19473. 8008930: f04f 30ff movhi.w r0, #4294967295
  19474. 8008934: 4770 bx lr
  19475. 8008936: 4608 mov r0, r1
  19476. 8008938: 4770 bx lr
  19477. ...
  19478. 0800893c <_init>:
  19479. 800893c: b5f8 push {r3, r4, r5, r6, r7, lr}
  19480. 800893e: bf00 nop
  19481. 8008940: bcf8 pop {r3, r4, r5, r6, r7}
  19482. 8008942: bc08 pop {r3}
  19483. 8008944: 469e mov lr, r3
  19484. 8008946: 4770 bx lr
  19485. 08008948 <_fini>:
  19486. 8008948: b5f8 push {r3, r4, r5, r6, r7, lr}
  19487. 800894a: bf00 nop
  19488. 800894c: bcf8 pop {r3, r4, r5, r6, r7}
  19489. 800894e: bc08 pop {r3}
  19490. 8008950: 469e mov lr, r3
  19491. 8008952: 4770 bx lr