apm32f10x.h 177 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158
  1. /*!
  2. * @file apm32f10x.h
  3. *
  4. * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File.
  5. *
  6. * @details This file contains all the peripheral register's definitions, bits definitions and memory mapping
  7. *
  8. * @version V1.0.1
  9. *
  10. * @date 2021-03-23
  11. *
  12. */
  13. #ifndef __APM32F10x_H
  14. #define __APM32F10x_H
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18. /*!
  19. * APM32F10X_LD: APM32 Low density devices, the Flash memory density ranges between 16 and 32 Kbytes.
  20. * APM32F10X_MD: APM32 Medium density devices, the Flash memory density ranges between 64 and 128 Kbytes.
  21. * APM32F10X_HD: APM32 High density devices, the Flash memory density ranges between 256 and 512 Kbytes.
  22. */
  23. #if !defined (APM32F10X_LD) && !defined (APM32F10X_MD) && !defined (APM32F10X_HD)
  24. #error "Please select a the target APM32F10x device used in your application (in apm32f10x.h file)"
  25. #endif
  26. /**
  27. * @brief Define Value of the External oscillator in Hz
  28. */
  29. #ifndef HSE_VALUE
  30. #define HSE_VALUE ((uint32_t)8000000)
  31. #endif
  32. /** Time out for HSE start up */
  33. #define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)
  34. /** Value of the Internal oscillator in Hz */
  35. #define HSI_VALUE ((uint32_t)8000000)
  36. /**
  37. * @brief APM32F10x Standard Peripheral Library version number
  38. */
  39. #define __APM32F10X_STDPERIPH_VERSION_MAIN (0x01) /*!< [31:24] main version */
  40. #define __APM32F10X_STDPERIPH_VERSION_SUB1 (0x00) /*!< [23:16] sub1 version */
  41. #define __APM32F10X_STDPERIPH_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */
  42. #define __APM32F10X_STDPERIPH_VERSION_RC (0x00) /*!< [7:0] release candidate */
  43. #define __APM32F10X_STDPERIPH_VERSION ( (__APM32F10X_STDPERIPH_VERSION_MAIN << 24)\
  44. |(__APM32F10X_STDPERIPH_VERSION_SUB1 << 16)\
  45. |(__APM32F10X_STDPERIPH_VERSION_SUB2 << 8)\
  46. |(__APM32F10X_STDPERIPH_VERSION_RC))
  47. /** APM32 devices does not provide an MPU */
  48. #define __MPU_PRESENT 0
  49. /** APM32 uses 4 Bits for the Priority Levels */
  50. #define __NVIC_PRIO_BITS 4
  51. /** Set to 1 if different SysTick Config is used */
  52. #define __Vendor_SysTickConfig 0
  53. /**
  54. * @brief APM32F10x Interrupt Number Definition, according to the selected device
  55. * in @ref Library_configuration_section
  56. */
  57. typedef enum IRQn
  58. {
  59. /****** Cortex-M3 Processor Exceptions Numbers ***************************************************/
  60. NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
  61. MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */
  62. BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */
  63. UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */
  64. SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */
  65. DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */
  66. PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */
  67. SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */
  68. /****** APM32 specific Interrupt Numbers *********************************************************/
  69. WWDT_IRQn = 0, /*!< Window WatchDog Interrupt */
  70. PVD_IRQn = 1, /*!< PVD through EINT Line detection Interrupt */
  71. TAMPER_IRQn = 2, /*!< Tamper Interrupt */
  72. RTC_IRQn = 3, /*!< RTC global Interrupt */
  73. FMC_IRQn = 4, /*!< FMC global Interrupt */
  74. RCM_IRQn = 5, /*!< RCM global Interrupt */
  75. EINT0_IRQn = 6, /*!< EINT Line0 Interrupt */
  76. EINT1_IRQn = 7, /*!< EINT Line1 Interrupt */
  77. EINT2_IRQn = 8, /*!< EINT Line2 Interrupt */
  78. EINT3_IRQn = 9, /*!< EINT Line3 Interrupt */
  79. EINT4_IRQn = 10, /*!< EINT Line4 Interrupt */
  80. DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */
  81. DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */
  82. DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */
  83. DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */
  84. DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */
  85. DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */
  86. DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */
  87. #if defined (APM32F10X_LD)
  88. /** APM32F10X Low-density devices specific Interrupt Numbers */
  89. ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
  90. USBD1_HP_CAN1_TX_IRQn = 19, /*!< USB Device 1 High Priority or CAN1 TX Interrupts */
  91. USBD1_LP_CAN1_RX0_IRQn = 20, /*!< USB Device 1 Low Priority or CAN1 RX0 Interrupts */
  92. CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */
  93. CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */
  94. EINT9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */
  95. TMR1_BRK_IRQn = 24, /*!< TMR1 Break Interrupt */
  96. TMR1_UP_IRQn = 25, /*!< TMR1 Update Interrupt */
  97. TMR1_TRG_COM_IRQn = 26, /*!< TMR1 Trigger and Commutation Interrupt */
  98. TMR1_CC_IRQn = 27, /*!< TMR1 Capture Compare Interrupt */
  99. TMR2_IRQn = 28, /*!< TMR2 global Interrupt */
  100. TMR3_IRQn = 29, /*!< TMR3 global Interrupt */
  101. I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */
  102. I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */
  103. SPI1_IRQn = 35, /*!< SPI1 global Interrupt */
  104. USART1_IRQn = 37, /*!< USART1 global Interrupt */
  105. USART2_IRQn = 38, /*!< USART2 global Interrupt */
  106. EINT15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */
  107. RTCAlarm_IRQn = 41, /*!< RTC Alarm through EINT Line Interrupt */
  108. USBDWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EINT Line Interrupt */
  109. FPU_IRQn = 43, /*!< FPU Global Interrupt */
  110. QSPI_IRQn = 44, /*!< QSPI Global Interrupt */
  111. USBD2_HP_IRQn = 45, /*!< USB Device 2 High Priority */
  112. USBD2_LP_IRQn = 46 /*!< USB Device 2 Low Priority */
  113. #elif defined (APM32F10X_MD)
  114. /** APM32F10X Medium-density devices specific Interrupt Numbers */
  115. ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
  116. USBD1_HP_CAN1_TX_IRQn = 19, /*!< USB Device 1 High Priority or CAN1 TX Interrupts */
  117. USBD1_LP_CAN1_RX0_IRQn = 20, /*!< USB Device 1 Low Priority or CAN1 RX0 Interrupts */
  118. CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */
  119. CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */
  120. EINT9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */
  121. TMR1_BRK_IRQn = 24, /*!< TMR1 Break Interrupt */
  122. TMR1_UP_IRQn = 25, /*!< TMR1 Update Interrupt */
  123. TMR1_TRG_COM_IRQn = 26, /*!< TMR1 Trigger and Commutation Interrupt */
  124. TMR1_CC_IRQn = 27, /*!< TMR1 Capture Compare Interrupt */
  125. TMR2_IRQn = 28, /*!< TMR2 global Interrupt */
  126. TMR3_IRQn = 29, /*!< TMR3 global Interrupt */
  127. TMR4_IRQn = 30, /*!< TMR4 global Interrupt */
  128. I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */
  129. I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */
  130. I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */
  131. I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */
  132. SPI1_IRQn = 35, /*!< SPI1 global Interrupt */
  133. SPI2_IRQn = 36, /*!< SPI2 global Interrupt */
  134. USART1_IRQn = 37, /*!< USART1 global Interrupt */
  135. USART2_IRQn = 38, /*!< USART2 global Interrupt */
  136. USART3_IRQn = 39, /*!< USART3 global Interrupt */
  137. EINT15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */
  138. RTCAlarm_IRQn = 41, /*!< RTC Alarm through EINT Line Interrupt */
  139. USBDWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EINT Line Interrupt */
  140. FPU_IRQn = 43, /*!< FPU Global Interrupt */
  141. QSPI_IRQn = 44, /*!< QSPI Global Interrupt */
  142. USBD2_HP_IRQn = 45, /*!< USB Device 2 High Priority */
  143. USBD2_LP_IRQn = 46 /*!< USB Device 2 Low Priority */
  144. #elif defined (APM32F10X_HD)
  145. /** APM32F10X High-density devices specific Interrupt Numbers */
  146. ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
  147. USBD1_HP_CAN1_TX_IRQn = 19, /*!< USB Device 1 High Priority or CAN1 TX Interrupts */
  148. USBD1_LP_CAN1_RX0_IRQn = 20, /*!< USB Device 1 Low Priority or CAN1 RX0 Interrupts */
  149. CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */
  150. CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */
  151. EINT9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */
  152. TMR1_BRK_IRQn = 24, /*!< TMR1 Break Interrupt */
  153. TMR1_UP_IRQn = 25, /*!< TMR1 Update Interrupt */
  154. TMR1_TRG_COM_IRQn = 26, /*!< TMR1 Trigger and Commutation Interrupt */
  155. TMR1_CC_IRQn = 27, /*!< TMR1 Capture Compare Interrupt */
  156. TMR2_IRQn = 28, /*!< TMR2 global Interrupt */
  157. TMR3_IRQn = 29, /*!< TMR3 global Interrupt */
  158. TMR4_IRQn = 30, /*!< TMR4 global Interrupt */
  159. I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */
  160. I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */
  161. I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */
  162. I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */
  163. SPI1_IRQn = 35, /*!< SPI1 global Interrupt */
  164. SPI2_IRQn = 36, /*!< SPI2 global Interrupt */
  165. USART1_IRQn = 37, /*!< USART1 global Interrupt */
  166. USART2_IRQn = 38, /*!< USART2 global Interrupt */
  167. USART3_IRQn = 39, /*!< USART3 global Interrupt */
  168. EINT15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */
  169. RTCAlarm_IRQn = 41, /*!< RTC Alarm through EINT Line Interrupt */
  170. USBDWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EINT Line Interrupt */
  171. TMR8_BRK_IRQn = 43, /*!< TMR8 Break Interrupt */
  172. TMR8_UP_IRQn = 44, /*!< TMR8 Update Interrupt */
  173. TMR8_TRG_COM_IRQn = 45, /*!< TMR8 Trigger and Commutation Interrupt */
  174. TMR8_CC_IRQn = 46, /*!< TMR8 Capture Compare Interrupt */
  175. ADC3_IRQn = 47, /*!< ADC3 global Interrupt */
  176. EMMC_IRQn = 48, /*!< EMMC global Interrupt */
  177. SDIO_IRQn = 49, /*!< SDIO global Interrupt */
  178. TMR5_IRQn = 50, /*!< TMR5 global Interrupt */
  179. SPI3_IRQn = 51, /*!< SPI3 global Interrupt */
  180. UART4_IRQn = 52, /*!< UART4 global Interrupt */
  181. UART5_IRQn = 53, /*!< UART5 global Interrupt */
  182. TMR6_IRQn = 54, /*!< TMR6 global Interrupt */
  183. TMR7_IRQn = 55, /*!< TMR7 global Interrupt */
  184. DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */
  185. DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */
  186. DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */
  187. DMA2_Channel4_5_IRQn = 59, /*!< DMA2 Channel 4 and Channel 5 global Interrupt */
  188. USBD2_HP_CAN2_TX_IRQn = 61, /*!< USB Device 2 High Priority or CAN2 TX Interrupts */
  189. USBD2_LP_CAN2_RX0_IRQn = 62, /*!< USB Device 2 Low Priority or CAN2 RX0 Interrupts */
  190. CAN2_RX1_IRQn = 63, /*!< CAN2 RX1 Interrupts */
  191. CAN2_SCE_IRQn = 64, /*!< CAN2 SCE Interrupts */
  192. #endif
  193. } IRQn_Type;
  194. /**
  195. * @}
  196. */
  197. #include "core_cm3.h"
  198. #include "system_apm32f10x.h"
  199. #include <stdint.h>
  200. typedef int32_t s32;
  201. typedef int16_t s16;
  202. typedef int8_t s8;
  203. typedef const int32_t sc32;
  204. typedef const int16_t sc16;
  205. typedef const int8_t sc8;
  206. typedef __IO int32_t vs32;
  207. typedef __IO int16_t vs16;
  208. typedef __IO int8_t vs8;
  209. typedef __I int32_t vsc32;
  210. typedef __I int16_t vsc16;
  211. typedef __I int8_t vsc8;
  212. typedef uint32_t u32;
  213. typedef uint16_t u16;
  214. typedef uint8_t u8;
  215. typedef const uint32_t uc32;
  216. typedef const uint16_t uc16;
  217. typedef const uint8_t uc8;
  218. typedef __IO uint32_t vu32;
  219. typedef __IO uint16_t vu16;
  220. typedef __IO uint8_t vu8;
  221. typedef __I uint32_t vuc32;
  222. typedef __I uint16_t vuc16;
  223. typedef __I uint8_t vuc8;
  224. #ifndef __IM
  225. #define __IM __I
  226. #endif
  227. #ifndef __OM
  228. #define __OM __O
  229. #endif
  230. #ifndef __IOM
  231. #define __IOM __IO
  232. #endif
  233. enum {BIT_RESET, BIT_SET};
  234. enum {RESET, SET};
  235. enum {DISABLE, ENABLE};
  236. enum {ERROR, SUCCESS};
  237. #ifndef NULL
  238. #define NULL ((void *)0)
  239. #endif
  240. #if defined (__CC_ARM )
  241. #pragma anon_unions
  242. #endif
  243. /**
  244. * @brief Reset and clock management unit (RCM)
  245. */
  246. typedef struct
  247. {
  248. /** Clock control register */
  249. union
  250. {
  251. __IOM uint32_t CTRL;
  252. struct
  253. {
  254. __IOM uint32_t HSIEN : 1;
  255. __IM uint32_t HSIRDYFLG : 1;
  256. __IM uint32_t RESERVED1 : 1;
  257. __IOM uint32_t HSITRIM : 5;
  258. __IM uint32_t HSICAL : 8;
  259. __IOM uint32_t HSEEN : 1;
  260. __IM uint32_t HSERDYFLG : 1;
  261. __IOM uint32_t HSEBCFG : 1;
  262. __IOM uint32_t CSSEN : 1;
  263. __IM uint32_t RESERVED2 : 4;
  264. __IOM uint32_t PLLEN : 1;
  265. __IM uint32_t PLLRDYFLG : 1;
  266. __IM uint32_t RESERVED3 : 6;
  267. } CTRL_B;
  268. };
  269. /** Clock configuration register */
  270. union
  271. {
  272. __IOM uint32_t CFG;
  273. struct
  274. {
  275. __IOM uint32_t SCLKSW : 2;
  276. __IM uint32_t SCLKSWSTS : 2;
  277. __IOM uint32_t AHBPSC : 4;
  278. __IOM uint32_t APB1PSC : 3;
  279. __IOM uint32_t APB2PSC : 3;
  280. __IOM uint32_t ADCPSC : 2;
  281. __IOM uint32_t PLLSRCSEL : 1;
  282. __IOM uint32_t PLLHSEPSC : 1;
  283. __IOM uint32_t PLLMULCFG : 4;
  284. __IOM uint32_t USBDPSC : 2;
  285. __IOM uint32_t MCOSEL : 3;
  286. __IOM uint32_t FPUPSC : 1;
  287. __IM uint32_t RESERVED : 4;
  288. } CFG_B;
  289. } ;
  290. /** Clock interrupt control register */
  291. union
  292. {
  293. __IOM uint32_t INT;
  294. struct
  295. {
  296. __IM uint32_t LSIRDYFLG : 1;
  297. __IM uint32_t LSERDYFLG : 1;
  298. __IM uint32_t HSIRDYFLG : 1;
  299. __IM uint32_t HSERDYFLG : 1;
  300. __IM uint32_t PLLRDYFLG : 1;
  301. __IM uint32_t RESERVED1 : 2;
  302. __IM uint32_t CSSIF : 1;
  303. __IOM uint32_t LSIRDYEN : 1;
  304. __IOM uint32_t LSERDYEN : 1;
  305. __IOM uint32_t HSIRDYEN : 1;
  306. __IOM uint32_t HSERDYEN : 1;
  307. __IOM uint32_t PLLRDYEN : 1;
  308. __IM uint32_t RESERVED2 : 3;
  309. __OM uint32_t LSIRDYCLR : 1;
  310. __OM uint32_t LSERDYCLR : 1;
  311. __OM uint32_t HSIRDYCLR : 1;
  312. __OM uint32_t HSERDYCLR : 1;
  313. __OM uint32_t PLLRDYCLR : 1;
  314. __IM uint32_t RESERVED3 : 2;
  315. __OM uint32_t CSSCLR : 1;
  316. __IM uint32_t RESERVED4 : 8;
  317. } INT_B;
  318. } ;
  319. /** APB2 peripheral reset register */
  320. union
  321. {
  322. __IOM uint32_t APB2RST;
  323. struct
  324. {
  325. __IOM uint32_t AFIO : 1;
  326. __IM uint32_t RESERVED1 : 1;
  327. __IOM uint32_t PA : 1;
  328. __IOM uint32_t PB : 1;
  329. __IOM uint32_t PC : 1;
  330. __IOM uint32_t PD : 1;
  331. __IOM uint32_t PE : 1;
  332. __IOM uint32_t PF : 1;
  333. __IOM uint32_t PG : 1;
  334. __IOM uint32_t ADC1 : 1;
  335. __IOM uint32_t ADC2 : 1;
  336. __IOM uint32_t TMR1 : 1;
  337. __IOM uint32_t SPI1 : 1;
  338. __IOM uint32_t TMR8 : 1;
  339. __IOM uint32_t USART1 : 1;
  340. __IOM uint32_t ADC3 : 1;
  341. __IM uint32_t RESERVED2 : 16;
  342. } APB2RST_B;
  343. } ;
  344. /** APB1 peripheral reset register */
  345. union
  346. {
  347. __IOM uint32_t APB1RST;
  348. struct
  349. {
  350. __IOM uint32_t TMR2 : 1;
  351. __IOM uint32_t TMR3 : 1;
  352. __IOM uint32_t TMR4 : 1;
  353. __IOM uint32_t TMR5 : 1;
  354. __IOM uint32_t TMR6 : 1;
  355. __IOM uint32_t TMR7 : 1;
  356. __IM uint32_t RESERVED1 : 5;
  357. __IOM uint32_t WWDT : 1;
  358. __IM uint32_t RESERVED2 : 2;
  359. __IOM uint32_t SPI2 : 1;
  360. __IOM uint32_t SPI3 : 1;
  361. __IM uint32_t RESERVED3 : 1;
  362. __IOM uint32_t USART2 : 1;
  363. __IOM uint32_t USART3 : 1;
  364. __IOM uint32_t UART4 : 1;
  365. __IOM uint32_t UART5 : 1;
  366. __IOM uint32_t I2C1 : 1;
  367. __IOM uint32_t I2C2 : 1;
  368. __IOM uint32_t USBD : 1;
  369. __IM uint32_t RESERVED4 : 1;
  370. __IOM uint32_t CAN1 : 1;
  371. __IM uint32_t CAN2 : 1;
  372. __IOM uint32_t BAKP : 1;
  373. __IOM uint32_t PMU : 1;
  374. __IOM uint32_t DAC : 1;
  375. __IM uint32_t RESERVED5 : 2;
  376. } APB1RST_B;
  377. } ;
  378. /** AHB clock enable register */
  379. union
  380. {
  381. __IOM uint32_t AHBCLKEN;
  382. struct
  383. {
  384. __IOM uint32_t DMA1 : 1;
  385. __IOM uint32_t DMA2 : 1;
  386. __IOM uint32_t SRAM : 1;
  387. __IOM uint32_t FPU : 1;
  388. __IOM uint32_t FMC : 1;
  389. __IOM uint32_t QSPI : 1;
  390. __IOM uint32_t CRC : 1;
  391. __IM uint32_t RESERVED1 : 1;
  392. __IOM uint32_t EMMC : 1;
  393. __IM uint32_t RESERVED2 : 1;
  394. __IOM uint32_t SDIO : 1;
  395. __IM uint32_t RESERVED3 : 21;
  396. } AHBCLKEN_B;
  397. } ;
  398. /** APB2 clock enable register */
  399. union
  400. {
  401. __IOM uint32_t APB2CLKEN;
  402. struct
  403. {
  404. __IOM uint32_t AFIO : 1;
  405. __IM uint32_t RESERVED1 : 1;
  406. __IOM uint32_t PA : 1;
  407. __IOM uint32_t PB : 1;
  408. __IOM uint32_t PC : 1;
  409. __IOM uint32_t PD : 1;
  410. __IOM uint32_t PE : 1;
  411. __IOM uint32_t PF : 1;
  412. __IOM uint32_t PG : 1;
  413. __IOM uint32_t ADC1 : 1;
  414. __IOM uint32_t ADC2 : 1;
  415. __IOM uint32_t TMR1 : 1;
  416. __IOM uint32_t SPI1 : 1;
  417. __IOM uint32_t TMR8 : 1;
  418. __IOM uint32_t USART1 : 1;
  419. __IOM uint32_t ADC3 : 1;
  420. __IM uint32_t RESERVED2 : 16;
  421. } APB2CLKEN_B;
  422. };
  423. /** APB1 clock enable register */
  424. union
  425. {
  426. __IOM uint32_t APB1CLKEN;
  427. struct
  428. {
  429. __IOM uint32_t TMR2 : 1;
  430. __IOM uint32_t TMR3 : 1;
  431. __IOM uint32_t TMR4 : 1;
  432. __IOM uint32_t TMR5 : 1;
  433. __IOM uint32_t TMR6 : 1;
  434. __IOM uint32_t TMR7 : 1;
  435. __IM uint32_t RESERVED1 : 5;
  436. __IOM uint32_t WWDT : 1;
  437. __IM uint32_t RESERVED2 : 2;
  438. __IOM uint32_t SPI2 : 1;
  439. __IOM uint32_t SPI3 : 1;
  440. __IM uint32_t RESERVED3 : 1;
  441. __IOM uint32_t USART2 : 1;
  442. __IOM uint32_t USART3 : 1;
  443. __IOM uint32_t UART4 : 1;
  444. __IOM uint32_t UART5 : 1;
  445. __IOM uint32_t I2C1 : 1;
  446. __IOM uint32_t I2C2 : 1;
  447. __IOM uint32_t USBD : 1;
  448. __IM uint32_t RESERVED4 : 1;
  449. __IOM uint32_t CAN1 : 1;
  450. __IM uint32_t CAN2 : 1;
  451. __IOM uint32_t BAKP : 1;
  452. __IOM uint32_t PMU : 1;
  453. __IOM uint32_t DAC : 1;
  454. __IM uint32_t RESERVED5 : 2;
  455. } APB1CLKEN_B;
  456. } ;
  457. /** Backup domain control register */
  458. union
  459. {
  460. __IOM uint32_t BDCTRL;
  461. struct
  462. {
  463. __IOM uint32_t LSEEN : 1;
  464. __IM uint32_t LSERDYFLG : 1;
  465. __IOM uint32_t LSEBCFG : 1;
  466. __IM uint32_t RESERVED1 : 5;
  467. __IOM uint32_t RTCSRCSEL : 2;
  468. __IM uint32_t RESERVED2 : 5;
  469. __IOM uint32_t RTCCLKEN : 1;
  470. __IOM uint32_t BDRST : 1;
  471. __IM uint32_t RESERVED3 : 15;
  472. } BDCTRL_B;
  473. } ;
  474. /** Control/status register */
  475. union
  476. {
  477. __IOM uint32_t CSTS;
  478. struct
  479. {
  480. __IOM uint32_t LSIEN : 1;
  481. __IM uint32_t LSIRDYFLG : 1;
  482. __IM uint32_t RESERVED1 : 22;
  483. __IOM uint32_t RSTFLGCLR : 1;
  484. __IM uint32_t RESERVED2 : 1;
  485. __IOM uint32_t NRSTFLG : 1;
  486. __IOM uint32_t PODRSTFLG : 1;
  487. __IOM uint32_t SWRSTFLG : 1;
  488. __IOM uint32_t IWDTRSTFLG : 1;
  489. __IOM uint32_t WWDTRSTFLG : 1;
  490. __IOM uint32_t LPWRRSTFLG : 1;
  491. } CSTS_B;
  492. } ;
  493. } RCM_T;
  494. /**
  495. * @brief General purpose I/O (GPIO)
  496. */
  497. typedef struct
  498. {
  499. /** Port configure register low */
  500. union
  501. {
  502. __IOM uint32_t CFGLOW;
  503. struct
  504. {
  505. __IOM uint32_t MODE0 : 2;
  506. __IOM uint32_t CFG0 : 2;
  507. __IOM uint32_t MODE1 : 2;
  508. __IOM uint32_t CFG1 : 2;
  509. __IOM uint32_t MODE2 : 2;
  510. __IOM uint32_t CFG2 : 2;
  511. __IOM uint32_t MODE3 : 2;
  512. __IOM uint32_t CFG3 : 2;
  513. __IOM uint32_t MODE4 : 2;
  514. __IOM uint32_t CFG4 : 2;
  515. __IOM uint32_t MODE5 : 2;
  516. __IOM uint32_t CFG5 : 2;
  517. __IOM uint32_t MODE6 : 2;
  518. __IOM uint32_t CFG6 : 2;
  519. __IOM uint32_t MODE7 : 2;
  520. __IOM uint32_t CFG7 : 2;
  521. } CFGLOW_B;
  522. } ;
  523. /** Port configure register high */
  524. union
  525. {
  526. __IOM uint32_t CFGHIG;
  527. struct
  528. {
  529. __IOM uint32_t MODE8 : 2;
  530. __IOM uint32_t CFG8 : 2;
  531. __IOM uint32_t MODE9 : 2;
  532. __IOM uint32_t CFG9 : 2;
  533. __IOM uint32_t MODE10 : 2;
  534. __IOM uint32_t CFG10 : 2;
  535. __IOM uint32_t MODE11 : 2;
  536. __IOM uint32_t CFG11 : 2;
  537. __IOM uint32_t MODE12 : 2;
  538. __IOM uint32_t CFG12 : 2;
  539. __IOM uint32_t MODE13 : 2;
  540. __IOM uint32_t CFG13 : 2;
  541. __IOM uint32_t MODE14 : 2;
  542. __IOM uint32_t CFG14 : 2;
  543. __IOM uint32_t MODE15 : 2;
  544. __IOM uint32_t CFG15 : 2;
  545. } CFGHIG_B;
  546. } ;
  547. /** Port data in register */
  548. union
  549. {
  550. __IM uint32_t IDATA;
  551. struct
  552. {
  553. __IM uint32_t IDATA0 : 1;
  554. __IM uint32_t IDATA1 : 1;
  555. __IM uint32_t IDATA2 : 1;
  556. __IM uint32_t IDATA3 : 1;
  557. __IM uint32_t IDATA4 : 1;
  558. __IM uint32_t IDATA5 : 1;
  559. __IM uint32_t IDATA6 : 1;
  560. __IM uint32_t IDATA7 : 1;
  561. __IM uint32_t IDATA8 : 1;
  562. __IM uint32_t IDATA9 : 1;
  563. __IM uint32_t IDATA10 : 1;
  564. __IM uint32_t IDATA11 : 1;
  565. __IM uint32_t IDATA12 : 1;
  566. __IM uint32_t IDATA13 : 1;
  567. __IM uint32_t IDATA14 : 1;
  568. __IM uint32_t IDATA15 : 1;
  569. __IM uint32_t RESERVED : 16;
  570. } IDATA_B;
  571. } ;
  572. /** Port data output register */
  573. union
  574. {
  575. __IOM uint32_t ODATA;
  576. struct
  577. {
  578. __IOM uint32_t ODATA0 : 1;
  579. __IOM uint32_t ODATA1 : 1;
  580. __IOM uint32_t ODATA2 : 1;
  581. __IOM uint32_t ODATA3 : 1;
  582. __IOM uint32_t ODATA4 : 1;
  583. __IOM uint32_t ODATA5 : 1;
  584. __IOM uint32_t ODATA6 : 1;
  585. __IOM uint32_t ODATA7 : 1;
  586. __IOM uint32_t ODATA8 : 1;
  587. __IOM uint32_t ODATA9 : 1;
  588. __IOM uint32_t ODATA10 : 1;
  589. __IOM uint32_t ODATA11 : 1;
  590. __IOM uint32_t ODATA12 : 1;
  591. __IOM uint32_t ODATA13 : 1;
  592. __IOM uint32_t ODATA14 : 1;
  593. __IOM uint32_t ODATA15 : 1;
  594. __IM uint32_t RESERVED : 16;
  595. } ODATA_B;
  596. } ;
  597. /** Port bit set/clear register */
  598. union
  599. {
  600. __OM uint32_t BSC;
  601. struct
  602. {
  603. __OM uint32_t BS0 : 1;
  604. __OM uint32_t BS1 : 1;
  605. __OM uint32_t BS2 : 1;
  606. __OM uint32_t BS3 : 1;
  607. __OM uint32_t BS4 : 1;
  608. __OM uint32_t BS5 : 1;
  609. __OM uint32_t BS6 : 1;
  610. __OM uint32_t BS7 : 1;
  611. __OM uint32_t BS8 : 1;
  612. __OM uint32_t BS9 : 1;
  613. __OM uint32_t BS10 : 1;
  614. __OM uint32_t BS11 : 1;
  615. __OM uint32_t BS12 : 1;
  616. __OM uint32_t BS13 : 1;
  617. __OM uint32_t BS14 : 1;
  618. __OM uint32_t BS15 : 1;
  619. __OM uint32_t BR0 : 1;
  620. __OM uint32_t BC1 : 1;
  621. __OM uint32_t BC2 : 1;
  622. __OM uint32_t BR3 : 1;
  623. __OM uint32_t BC4 : 1;
  624. __OM uint32_t BC5 : 1;
  625. __OM uint32_t BC6 : 1;
  626. __OM uint32_t BC7 : 1;
  627. __OM uint32_t BC8 : 1;
  628. __OM uint32_t BC9 : 1;
  629. __OM uint32_t BC10 : 1;
  630. __OM uint32_t BC11 : 1;
  631. __OM uint32_t BC12 : 1;
  632. __OM uint32_t BC13 : 1;
  633. __OM uint32_t BC14 : 1;
  634. __OM uint32_t BC15 : 1;
  635. } BSC_B;
  636. } ;
  637. /** Port bit clear register */
  638. union
  639. {
  640. __OM uint32_t BC;
  641. struct
  642. {
  643. __OM uint32_t BC0 : 1;
  644. __OM uint32_t BC1 : 1;
  645. __OM uint32_t BC2 : 1;
  646. __OM uint32_t BC3 : 1;
  647. __OM uint32_t BC4 : 1;
  648. __OM uint32_t BC5 : 1;
  649. __OM uint32_t BC6 : 1;
  650. __OM uint32_t BC7 : 1;
  651. __OM uint32_t BC8 : 1;
  652. __OM uint32_t BC9 : 1;
  653. __OM uint32_t BC10 : 1;
  654. __OM uint32_t BC11 : 1;
  655. __OM uint32_t BC12 : 1;
  656. __OM uint32_t BC13 : 1;
  657. __OM uint32_t BC14 : 1;
  658. __OM uint32_t BC15 : 1;
  659. __IM uint32_t RESERVED : 16;
  660. } BC_B;
  661. } ;
  662. /** Port configuration lock register */
  663. union
  664. {
  665. __IOM uint32_t LOCK;
  666. struct
  667. {
  668. __IOM uint32_t LOCK0 : 1;
  669. __IOM uint32_t LOCK1 : 1;
  670. __IOM uint32_t LOCK2 : 1;
  671. __IOM uint32_t LOCK3 : 1;
  672. __IOM uint32_t LOCK4 : 1;
  673. __IOM uint32_t LOCK5 : 1;
  674. __IOM uint32_t LOCK6 : 1;
  675. __IOM uint32_t LOCK7 : 1;
  676. __IOM uint32_t LOCK8 : 1;
  677. __IOM uint32_t LOCK9 : 1;
  678. __IOM uint32_t LOCK10 : 1;
  679. __IOM uint32_t LOCK11 : 1;
  680. __IOM uint32_t LOCK12 : 1;
  681. __IOM uint32_t LOCK13 : 1;
  682. __IOM uint32_t LOCK14 : 1;
  683. __IOM uint32_t LOCK15 : 1;
  684. __IOM uint32_t LOCKKEY : 1;
  685. __IM uint32_t RESERVED : 16;
  686. } LOCK_B;
  687. } ;
  688. } GPIO_T;
  689. /**
  690. * @brief Alternate function I/O (AFIO)
  691. */
  692. typedef struct
  693. {
  694. /** Event control register */
  695. union
  696. {
  697. __IOM uint32_t EVCTRL;
  698. struct
  699. {
  700. __IOM uint32_t PINSEL : 4;
  701. __IOM uint32_t PORTSEL : 3;
  702. __IOM uint32_t EVOEN : 1;
  703. __IM uint32_t RESERVED : 24;
  704. } EVCTRL_B;
  705. } ;
  706. /** Alternate function IO remap and Serial wire JTAG configuration register */
  707. union
  708. {
  709. __IOM uint32_t REMAP1;
  710. struct
  711. {
  712. __IOM uint32_t SPI1RMP : 1;
  713. __IOM uint32_t I2C1RMP : 1;
  714. __IOM uint32_t USART1RMP : 1;
  715. __IOM uint32_t USART2RMP : 1;
  716. __IOM uint32_t USART3RMP : 2;
  717. __IOM uint32_t TMR1RMP : 2;
  718. __IOM uint32_t TMR2RMP : 2;
  719. __IOM uint32_t TMR3RMP : 2;
  720. __IOM uint32_t TMR4RMP : 1;
  721. __IOM uint32_t CAN1RMP : 2;
  722. __IOM uint32_t PD01RMP : 1;
  723. __IOM uint32_t TMR5CH4IRMP : 1;
  724. __IOM uint32_t ADC1_ETRGINJC_RMP : 1;
  725. __IOM uint32_t ADC1_ETRGREGC_RMP : 1;
  726. __IOM uint32_t ADC2_ETRGINJC_RMP : 1;
  727. __IOM uint32_t ADC2_ETRGREGC_RMP : 1;
  728. __IM uint32_t RESERVED1 : 1;
  729. __IOM uint32_t CAN2RMP : 1;
  730. __IM uint32_t RESERVED2 : 1;
  731. __OM uint32_t SWJCFG : 3;
  732. __IM uint32_t RESERVED3 : 5;
  733. } REMAP1_B;
  734. } ;
  735. /** External interrupt select register1 */
  736. union
  737. {
  738. __IOM uint32_t EINTSEL1;
  739. struct
  740. {
  741. __IOM uint32_t EINT0 : 4;
  742. __IOM uint32_t EINT1 : 4;
  743. __IOM uint32_t EINT2 : 4;
  744. __IOM uint32_t EINT3 : 4;
  745. __IM uint32_t RESERVED : 16;
  746. } EINTSEL1_B;
  747. } ;
  748. /** External interrupt select register2 */
  749. union
  750. {
  751. __IOM uint32_t EINTSEL2;
  752. struct
  753. {
  754. __IOM uint32_t EINT4 : 4;
  755. __IOM uint32_t EINT5 : 4;
  756. __IOM uint32_t EINT6 : 4;
  757. __IOM uint32_t EINT7 : 4;
  758. __IM uint32_t RESERVED : 16;
  759. } EINTSEL2_B;
  760. } ;
  761. /** External interrupt select register3 */
  762. union
  763. {
  764. __IOM uint32_t EINTSEL3;
  765. struct
  766. {
  767. __IOM uint32_t EINT8 : 4;
  768. __IOM uint32_t EINT9 : 4;
  769. __IOM uint32_t EINT10 : 4;
  770. __IOM uint32_t EINT11 : 4;
  771. __IM uint32_t RESERVED : 16;
  772. } EINTSEL3_B;
  773. } ;
  774. /** External interrupt select register4 */
  775. union
  776. {
  777. __IOM uint32_t EINTSEL4;
  778. struct
  779. {
  780. __IOM uint32_t EINT12 : 4;
  781. __IOM uint32_t EINT13 : 4;
  782. __IOM uint32_t EINT14 : 4;
  783. __IOM uint32_t EINT15 : 4;
  784. __IM uint32_t RESERVED : 16;
  785. } EINTSEL4_B;
  786. } ;
  787. __IM uint32_t RESERVED;
  788. /** Alternate function IO remap register2 */
  789. union
  790. {
  791. __IOM uint32_t REMAP2;
  792. struct
  793. {
  794. __IM uint32_t RESERVED1 : 10;
  795. __IOM uint32_t EMMCNADV : 1;
  796. __IM uint32_t RESERVED2 : 21;
  797. } REMAP2_B;
  798. } ;
  799. } AFIO_T;
  800. /**
  801. * @brief Universal synchronous asynchronous receiver transmitter (USART)
  802. */
  803. typedef struct
  804. {
  805. /** Status register */
  806. union
  807. {
  808. __IOM uint32_t STS;
  809. struct
  810. {
  811. __IM uint32_t PEFLG : 1;
  812. __IM uint32_t FEFLG : 1;
  813. __IM uint32_t NEFLG : 1;
  814. __IM uint32_t OVREFLG : 1;
  815. __IM uint32_t IDLEFLG : 1;
  816. __IOM uint32_t RXBNEFLG : 1;
  817. __IOM uint32_t TXCFLG : 1;
  818. __IM uint32_t TXBEFLG : 1;
  819. __IOM uint32_t LBDFLG : 1;
  820. __IOM uint32_t CTSFLG : 1;
  821. __IM uint32_t RESERVED : 22;
  822. } STS_B;
  823. } ;
  824. /** TX Buffer Data Register */
  825. union
  826. {
  827. __IOM uint32_t DATA;
  828. struct
  829. {
  830. __IOM uint32_t DATA : 9;
  831. __IM uint32_t RESERVED : 23;
  832. } DATA_B;
  833. } ;
  834. /** Baud rate register */
  835. union
  836. {
  837. __IOM uint32_t BR;
  838. struct
  839. {
  840. __IOM uint32_t FBR : 4;
  841. __IOM uint32_t IBR : 12;
  842. __IM uint32_t RESERVED : 16;
  843. } BR_B;
  844. } ;
  845. /** Control register 1 */
  846. union
  847. {
  848. __IOM uint32_t CTRL1;
  849. struct
  850. {
  851. __IOM uint32_t TXBF : 1;
  852. __IOM uint32_t RXMUTEEN : 1;
  853. __IOM uint32_t RXEN : 1;
  854. __IOM uint32_t TXEN : 1;
  855. __IOM uint32_t IDLEIEN : 1;
  856. __IOM uint32_t RXBNEIEN : 1;
  857. __IOM uint32_t TXCIEN : 1;
  858. __IOM uint32_t TXBEIEN : 1;
  859. __IOM uint32_t PEIEN : 1;
  860. __IOM uint32_t PCFG : 1;
  861. __IOM uint32_t PCEN : 1;
  862. __IOM uint32_t WUPMCFG : 1;
  863. __IOM uint32_t DBLCFG : 1;
  864. __IOM uint32_t UEN : 1;
  865. __IM uint32_t RESERVED : 18;
  866. } CTRL1_B;
  867. } ;
  868. /** Control register 2 */
  869. union
  870. {
  871. __IOM uint32_t CTRL2;
  872. struct
  873. {
  874. __IOM uint32_t ADDR : 4;
  875. __IM uint32_t RESERVED1 : 1;
  876. __IOM uint32_t LBDLCFG : 1;
  877. __IOM uint32_t LBDIEN : 1;
  878. __IM uint32_t RESERVED2 : 1;
  879. __IOM uint32_t LBCPOEN : 1;
  880. __IOM uint32_t CPHA : 1;
  881. __IOM uint32_t CPOL : 1;
  882. __IOM uint32_t CLKEN : 1;
  883. __IOM uint32_t STOPCFG : 2;
  884. __IOM uint32_t LINMEN : 1;
  885. __IM uint32_t RESERVED3 : 17;
  886. } CTRL2_B;
  887. } ;
  888. /** Control register 3 */
  889. union
  890. {
  891. __IOM uint32_t CTRL3;
  892. struct
  893. {
  894. __IOM uint32_t ERRIEN : 1;
  895. __IOM uint32_t IREN : 1;
  896. __IOM uint32_t IRLPEN : 1;
  897. __IOM uint32_t HDEN : 1;
  898. __IOM uint32_t SCNACKEN : 1;
  899. __IOM uint32_t SCEN : 1;
  900. __IOM uint32_t DMARXEN : 1;
  901. __IOM uint32_t DMATXEN : 1;
  902. __IOM uint32_t RTSEN : 1;
  903. __IOM uint32_t CTSEN : 1;
  904. __IOM uint32_t CTSIEN : 1;
  905. __IM uint32_t RESERVED : 21;
  906. } CTRL3_B;
  907. } ;
  908. /** Guard TMRe and divider number register */
  909. union
  910. {
  911. __IOM uint32_t GTPSC;
  912. struct
  913. {
  914. __IOM uint32_t PSC : 8;
  915. __IOM uint32_t GRDT : 8;
  916. __IM uint32_t RESERVED : 16;
  917. } GTPSC_B;
  918. } ;
  919. } USART_T;
  920. /**
  921. * @brief Flash memory controller(FMC)
  922. */
  923. typedef struct
  924. {
  925. /** FMC access control register */
  926. union
  927. {
  928. __IOM uint32_t CTRL1;
  929. struct
  930. {
  931. __IOM uint32_t WS : 3;
  932. __IOM uint32_t HCAEN : 1;
  933. __IOM uint32_t PBEN : 1;
  934. __IM uint32_t PBSF : 1;
  935. __IM uint32_t RESERVED : 26;
  936. } CTRL1_B;
  937. } ;
  938. /** key register */
  939. union
  940. {
  941. __OM uint32_t KEY;
  942. struct
  943. {
  944. __OM uint32_t KEY : 32;
  945. } KEY_B;
  946. } ;
  947. /** option byte key register */
  948. union
  949. {
  950. __OM uint32_t OBKEY;
  951. struct
  952. {
  953. __OM uint32_t OBKEY : 32;
  954. } OBKEY_B;
  955. };
  956. /** status register */
  957. union
  958. {
  959. __IOM uint32_t STS;
  960. struct
  961. {
  962. __IM uint32_t BUSYF : 1;
  963. __IM uint32_t RESERVED1 : 1;
  964. __IOM uint32_t PEF : 1;
  965. __IM uint32_t RESERVED2 : 1;
  966. __IOM uint32_t WPEF : 1;
  967. __IOM uint32_t OCF : 1;
  968. __IM uint32_t RESERVED3 : 26;
  969. } STS_B;
  970. };
  971. /** status register */
  972. union
  973. {
  974. __IOM uint32_t CTRL2;
  975. struct
  976. {
  977. __IOM uint32_t PG : 1;
  978. __IOM uint32_t PAGEERA : 1;
  979. __IOM uint32_t MASSERA : 1;
  980. __IM uint32_t RESERVED1 : 1;
  981. __IOM uint32_t OBP : 1;
  982. __IOM uint32_t OBE : 1;
  983. __IOM uint32_t STA : 1;
  984. __IOM uint32_t LOCK : 1;
  985. __IM uint32_t RESERVED2 : 1;
  986. __IOM uint32_t OBWEN : 1;
  987. __IOM uint32_t ERRIE : 1;
  988. __IM uint32_t RESERVED3 : 1;
  989. __IOM uint32_t OCIE : 1;
  990. __IM uint32_t RESERVED4 : 19;
  991. } CTRL2_B;
  992. } ;
  993. /** address register */
  994. union
  995. {
  996. __OM uint32_t ADDR;
  997. struct
  998. {
  999. __OM uint32_t ADDR : 32;
  1000. } ADDR_B;
  1001. };
  1002. __IM uint32_t RESERVED;
  1003. /** Option byte register */
  1004. union
  1005. {
  1006. __IOM uint32_t OBCS;
  1007. struct
  1008. {
  1009. __IM uint32_t OBE : 1;
  1010. __IM uint32_t READPROT : 1;
  1011. __IM uint32_t WDTSEL : 1;
  1012. __IM uint32_t RSTSTOP : 1;
  1013. __IM uint32_t RSTSTDB : 1;
  1014. __IM uint32_t UOB : 5;
  1015. __IM uint32_t DATA0 : 8;
  1016. __IM uint32_t DATA1 : 8;
  1017. __IM uint32_t RESERVED : 6;
  1018. } OBCS_B;
  1019. };
  1020. /** Write protection register */
  1021. union
  1022. {
  1023. __IM uint32_t WRTPROT;
  1024. struct
  1025. {
  1026. __IM uint32_t WRTPORT : 32;
  1027. } WRTPORT_B;
  1028. };
  1029. } FMC_T;
  1030. /**
  1031. * @brief CRC calculation unit (CRC)
  1032. */
  1033. typedef struct
  1034. {
  1035. /** @brief DATA register */
  1036. union
  1037. {
  1038. __IOM uint32_t DATA;
  1039. struct
  1040. {
  1041. __IOM uint32_t DATA : 32;
  1042. } DATA_B;
  1043. } ;
  1044. /** @brief independent DATA register */
  1045. union
  1046. {
  1047. __IOM uint32_t INDATA;
  1048. struct
  1049. {
  1050. __IOM uint32_t INDATA : 8;
  1051. __IM uint32_t RESERVED : 24;
  1052. } INDATA_B;
  1053. };
  1054. /** @brief Countrol register */
  1055. union
  1056. {
  1057. __IOM uint32_t CTRL;
  1058. struct
  1059. {
  1060. __IOM uint32_t RST : 1;
  1061. __IM uint32_t RESERVED : 31;
  1062. } CTRL_B;
  1063. };
  1064. } CRC_T;
  1065. /**
  1066. * @brief Real time clock (RTC)
  1067. */
  1068. typedef struct
  1069. {
  1070. /** @brief Control register */
  1071. union
  1072. {
  1073. __IOM uint32_t CTRL;
  1074. struct
  1075. {
  1076. __IOM uint32_t SECIEN : 1;
  1077. __IOM uint32_t ALRIEN : 1;
  1078. __IOM uint32_t OVRIEN : 1;
  1079. __IM uint32_t RESERVED : 29;
  1080. } CTRL_B;
  1081. };
  1082. /** @brief Control and State register */
  1083. union
  1084. {
  1085. __IOM uint32_t CSTS;
  1086. struct
  1087. {
  1088. __IOM uint32_t SECFLG : 1;
  1089. __IOM uint32_t ALRFLG : 1;
  1090. __IOM uint32_t OVRFLG : 1;
  1091. __IOM uint32_t RSYNCFLG : 1;
  1092. __IOM uint32_t CFGMFLG : 1;
  1093. __IM uint32_t OCFLG : 1;
  1094. __IM uint32_t RESERVED : 26;
  1095. } CSTS_B;
  1096. };
  1097. /** @brief RTC predivision loading register High Bit */
  1098. union
  1099. {
  1100. __OM uint32_t PSCRLDH;
  1101. struct
  1102. {
  1103. __OM uint32_t PSCRLDH : 4;
  1104. __IM uint32_t RESERVED : 28;
  1105. } PSCRLDH_B;
  1106. };
  1107. /** @brief RTC predivision loading register Low Bit */
  1108. union
  1109. {
  1110. __OM uint32_t PSCRLDL;
  1111. struct
  1112. {
  1113. __OM uint32_t PSCRLDL : 16;
  1114. __IM uint32_t RESERVED : 16;
  1115. } PSCRLDL_B;
  1116. };
  1117. /** @brief RTC predivider remainder register High Bit */
  1118. union
  1119. {
  1120. __IM uint32_t PSCH;
  1121. struct
  1122. {
  1123. __IM uint32_t PSCH : 4;
  1124. __IM uint32_t RESERVED : 28;
  1125. } PSCH_B;
  1126. };
  1127. /** @brief RTC predivider remainder register Low Bit */
  1128. union
  1129. {
  1130. __IM uint32_t PSCL;
  1131. struct
  1132. {
  1133. __IM uint32_t PSCL : 16;
  1134. __IM uint32_t RESERVED : 16;
  1135. } PSCL_B;
  1136. };
  1137. /** @brief RTC count register High Bit */
  1138. union
  1139. {
  1140. __IOM uint32_t CNTH;
  1141. struct
  1142. {
  1143. __IOM uint32_t CNTH : 16;
  1144. __IM uint32_t RESERVED : 16;
  1145. } CNTH_B;
  1146. };
  1147. /** @brief RTC count register Low Bit */
  1148. union
  1149. {
  1150. __IOM uint32_t CNTL;
  1151. struct
  1152. {
  1153. __IOM uint32_t CNTL : 16;
  1154. __IM uint32_t RESERVED : 16;
  1155. } CNTL_B;
  1156. };
  1157. /** @brief RTC alarm clock register High Bit */
  1158. union
  1159. {
  1160. __OM uint32_t ALRH;
  1161. struct
  1162. {
  1163. __OM uint32_t ALRH : 16;
  1164. __IM uint32_t RESERVED : 16;
  1165. } ALRH_B;
  1166. };
  1167. /** @brief RTC alarm clock register Low Bit */
  1168. union
  1169. {
  1170. __OM uint32_t ALRL;
  1171. struct
  1172. {
  1173. __OM uint32_t ALRL : 16;
  1174. __IM uint32_t RESERVED : 16;
  1175. } ALRL_B;
  1176. };
  1177. } RTC_T;
  1178. /**
  1179. * @brief Power Management Unit(PMU)
  1180. */
  1181. typedef struct
  1182. {
  1183. /** @brief Control register */
  1184. union
  1185. {
  1186. __IOM uint32_t CTRL;
  1187. struct
  1188. {
  1189. __IOM uint32_t LPDSCFG : 1;
  1190. __IOM uint32_t PDDSCFG : 1;
  1191. __IOM uint32_t WUFLGCLR : 1;
  1192. __IOM uint32_t SBFLGCLR : 1;
  1193. __IOM uint32_t PVDEN : 1;
  1194. __IOM uint32_t PLSEL : 3;
  1195. __IOM uint32_t BPWEN : 1;
  1196. __IM uint32_t RESERVED : 23;
  1197. } CTRL_B;
  1198. };
  1199. /** @brief PMU Status register */
  1200. union
  1201. {
  1202. __IOM uint32_t CSTS;
  1203. struct
  1204. {
  1205. __IM uint32_t WUEFLG : 1;
  1206. __IM uint32_t SBFLG : 1;
  1207. __IM uint32_t PVDOFLG : 1;
  1208. __IM uint32_t RESERVED : 5;
  1209. __IOM uint32_t WKUPCFG : 1;
  1210. __IM uint32_t RESERVED2 : 23;
  1211. } CSTS_B;
  1212. };
  1213. } PMU_T;
  1214. /**
  1215. * @brief Backup register (BAKPR)
  1216. */
  1217. typedef struct
  1218. {
  1219. __IM uint32_t RESERVED;
  1220. /** @brief BAKPR DATA1 register */
  1221. union
  1222. {
  1223. __IOM uint32_t DATA1;
  1224. struct
  1225. {
  1226. __IOM uint32_t DATA : 16;
  1227. __IM uint32_t RESERVED : 16;
  1228. } DATA1_B;
  1229. };
  1230. /** @brief BAKPR DATA2 register */
  1231. union
  1232. {
  1233. __IOM uint32_t DATA2;
  1234. struct
  1235. {
  1236. __IOM uint32_t DATA : 16;
  1237. __IM uint32_t RESERVED : 16;
  1238. } DATA2_B;
  1239. };
  1240. /** @brief BAKPR DATA3 register */
  1241. union
  1242. {
  1243. __IOM uint32_t DATA3;
  1244. struct
  1245. {
  1246. __IOM uint32_t DATA : 16;
  1247. __IM uint32_t RESERVED : 16;
  1248. } DATA3_B;
  1249. };
  1250. /** @brief BAKPR DATA4 register */
  1251. union
  1252. {
  1253. __IOM uint32_t DATA4;
  1254. struct
  1255. {
  1256. __IOM uint32_t DATA : 16;
  1257. __IM uint32_t RESERVED : 16;
  1258. } DATA4_B;
  1259. };
  1260. /** @brief BAKPR DATA5 register */
  1261. union
  1262. {
  1263. __IOM uint32_t DATA5;
  1264. struct
  1265. {
  1266. __IOM uint32_t DATA : 16;
  1267. __IM uint32_t RESERVED : 16;
  1268. } DATA5_B;
  1269. };
  1270. /** @brief BAKPR DATA6 register */
  1271. union
  1272. {
  1273. __IOM uint32_t DATA6;
  1274. struct
  1275. {
  1276. __IOM uint32_t DATA : 16;
  1277. __IM uint32_t RESERVED : 16;
  1278. } DATA6_B;
  1279. };
  1280. /** @brief BAKPR DATA7 register */
  1281. union
  1282. {
  1283. __IOM uint32_t DATA7;
  1284. struct
  1285. {
  1286. __IOM uint32_t DATA : 16;
  1287. __IM uint32_t RESERVED : 16;
  1288. } DATA7_B;
  1289. };
  1290. /** @brief BAKPR DATA8 register */
  1291. union
  1292. {
  1293. __IOM uint32_t DATA8;
  1294. struct
  1295. {
  1296. __IOM uint32_t DATA : 16;
  1297. __IM uint32_t RESERVED : 16;
  1298. } DATA8_B;
  1299. };
  1300. /** @brief BAKPR DATA9 register */
  1301. union
  1302. {
  1303. __IOM uint32_t DATA9;
  1304. struct
  1305. {
  1306. __IOM uint32_t DATA : 16;
  1307. __IM uint32_t RESERVED : 16;
  1308. } DATA9_B;
  1309. };
  1310. /** @brief BAKPR DATA10 register */
  1311. union
  1312. {
  1313. __IOM uint32_t DATA10;
  1314. struct
  1315. {
  1316. __IOM uint32_t DATA : 16;
  1317. __IM uint32_t RESERVED : 16;
  1318. } DATA10_B;
  1319. };
  1320. /** @brief BAKPR Clock Calibration register */
  1321. union
  1322. {
  1323. __IOM uint32_t CLKCAL;
  1324. struct
  1325. {
  1326. __IOM uint32_t CALVALUE : 7;
  1327. __IOM uint32_t CALCOEN : 1;
  1328. __IOM uint32_t ASPOEN : 1;
  1329. __IOM uint32_t ASPOSEL : 1;
  1330. __IM uint32_t RESERVED : 22;
  1331. } CLKCAL_B;
  1332. } ;
  1333. /** @brief BAKPR Control register */
  1334. union
  1335. {
  1336. __IOM uint32_t CTRL;
  1337. struct
  1338. {
  1339. __IOM uint32_t TPFCFG : 1;
  1340. __IOM uint32_t TPALCFG : 1;
  1341. __IM uint32_t RESERVED : 30;
  1342. } CTRL_B;
  1343. };
  1344. /** @brief BAKPR Control register */
  1345. union
  1346. {
  1347. __IOM uint32_t CSTS;
  1348. struct
  1349. {
  1350. __OM uint32_t TECLR : 1;
  1351. __OM uint32_t TICLR : 1;
  1352. __IOM uint32_t TPIEN : 1;
  1353. __IM uint32_t RESERVED1 : 5;
  1354. __IM uint32_t TEFLG : 1;
  1355. __IM uint32_t TIFLG : 1;
  1356. __IM uint32_t RESERVED2 : 22;
  1357. } CSTS_B;
  1358. };
  1359. __IM uint32_t RESERVED1[2];
  1360. /** @briefBAKPR DATA11 register */
  1361. union
  1362. {
  1363. __IOM uint32_t DATA11;
  1364. struct
  1365. {
  1366. __IOM uint32_t DATA : 16;
  1367. __IM uint32_t RESERVED : 16;
  1368. } DATA11_B;
  1369. };
  1370. /** @briefBAKPR DATA12 register */
  1371. union
  1372. {
  1373. __IOM uint32_t DATA12;
  1374. struct
  1375. {
  1376. __IOM uint32_t DATA : 16;
  1377. __IM uint32_t RESERVED : 16;
  1378. } DATA12_B;
  1379. };
  1380. /** @briefBAKPR DATA13 register */
  1381. union
  1382. {
  1383. __IOM uint32_t DATA13;
  1384. struct
  1385. {
  1386. __IOM uint32_t DATA : 16;
  1387. __IM uint32_t RESERVED : 16;
  1388. } DATA13_B;
  1389. };
  1390. /** @briefBAKPR DATA14 register */
  1391. union
  1392. {
  1393. __IOM uint32_t DATA14;
  1394. struct
  1395. {
  1396. __IOM uint32_t DATA : 16;
  1397. __IM uint32_t RESERVED : 16;
  1398. } DATA14_B;
  1399. };
  1400. /** @briefBAKPR DATA15 register */
  1401. union
  1402. {
  1403. __IOM uint32_t DATA15;
  1404. struct
  1405. {
  1406. __IOM uint32_t DATA : 16;
  1407. __IM uint32_t RESERVED : 16;
  1408. } DATA15_B;
  1409. };
  1410. /** @briefBAKPR DATA16 register */
  1411. union
  1412. {
  1413. __IOM uint32_t DATA16;
  1414. struct
  1415. {
  1416. __IOM uint32_t DATA : 16;
  1417. __IM uint32_t RESERVED : 16;
  1418. } DATA16_B;
  1419. };
  1420. /** @briefBAKPR DATA17 register */
  1421. union
  1422. {
  1423. __IOM uint32_t DATA17;
  1424. struct
  1425. {
  1426. __IOM uint32_t DATA : 16;
  1427. __IM uint32_t RESERVED : 16;
  1428. } DATA17_B;
  1429. };
  1430. /** @briefBAKPR DATA18 register */
  1431. union
  1432. {
  1433. __IOM uint32_t DATA18;
  1434. struct
  1435. {
  1436. __IOM uint32_t DATA : 16;
  1437. __IM uint32_t RESERVED : 16;
  1438. } DATA18_B;
  1439. };
  1440. /** @briefBAKPR DATA19 register */
  1441. union
  1442. {
  1443. __IOM uint32_t DATA19;
  1444. struct
  1445. {
  1446. __IOM uint32_t DATA : 16;
  1447. __IM uint32_t RESERVED : 16;
  1448. } DATA19_B;
  1449. };
  1450. /** @briefBAKPR DATA20 register */
  1451. union
  1452. {
  1453. __IOM uint32_t DATA20;
  1454. struct
  1455. {
  1456. __IOM uint32_t DATA : 16;
  1457. __IM uint32_t RESERVED : 16;
  1458. } DATA20_B;
  1459. };
  1460. /** @briefBAKPR DATA21 register */
  1461. union
  1462. {
  1463. __IOM uint32_t DATA21;
  1464. struct
  1465. {
  1466. __IOM uint32_t DATA : 16;
  1467. __IM uint32_t RESERVED : 16;
  1468. } DATA21_B;
  1469. };
  1470. /** @briefBAKPR DATA22 register */
  1471. union
  1472. {
  1473. __IOM uint32_t DATA22;
  1474. struct
  1475. {
  1476. __IOM uint32_t DATA : 16;
  1477. __IM uint32_t RESERVED : 16;
  1478. } DATA22_B;
  1479. };
  1480. /** @briefBAKPR DATA23 register */
  1481. union
  1482. {
  1483. __IOM uint32_t DATA23;
  1484. struct
  1485. {
  1486. __IOM uint32_t DATA : 16;
  1487. __IM uint32_t RESERVED : 16;
  1488. } DATA23_B;
  1489. };
  1490. /** @briefBAKPR DATA24 register */
  1491. union
  1492. {
  1493. __IOM uint32_t DATA24;
  1494. struct
  1495. {
  1496. __IOM uint32_t DATA : 16;
  1497. __IM uint32_t RESERVED : 16;
  1498. } DATA24_B;
  1499. };
  1500. /** @briefBAKPR DATA25 register */
  1501. union
  1502. {
  1503. __IOM uint32_t DATA25;
  1504. struct
  1505. {
  1506. __IOM uint32_t DATA : 16;
  1507. __IM uint32_t RESERVED : 16;
  1508. } DATA25_B;
  1509. };
  1510. /** @briefBAKPR DATA26 register */
  1511. union
  1512. {
  1513. __IOM uint32_t DATA26;
  1514. struct
  1515. {
  1516. __IOM uint32_t DATA : 16;
  1517. __IM uint32_t RESERVED : 16;
  1518. } DATA26_B;
  1519. };
  1520. /** @briefBAKPR DATA27 register */
  1521. union
  1522. {
  1523. __IOM uint32_t DATA27;
  1524. struct
  1525. {
  1526. __IOM uint32_t DATA : 16;
  1527. __IM uint32_t RESERVED : 16;
  1528. } DATA27_B;
  1529. };
  1530. /** @briefBAKPR DATA28 register */
  1531. union
  1532. {
  1533. __IOM uint32_t DATA28;
  1534. struct
  1535. {
  1536. __IOM uint32_t DATA : 16;
  1537. __IM uint32_t RESERVED : 16;
  1538. } DATA28_B;
  1539. };
  1540. /** @briefBAKPR DATA29 register */
  1541. union
  1542. {
  1543. __IOM uint32_t DATA29;
  1544. struct
  1545. {
  1546. __IOM uint32_t DATA : 16;
  1547. __IM uint32_t RESERVED : 16;
  1548. } DATA29_B;
  1549. };
  1550. /** @briefBAKPR DATA30 register */
  1551. union
  1552. {
  1553. __IOM uint32_t DATA30;
  1554. struct
  1555. {
  1556. __IOM uint32_t DATA : 16;
  1557. __IM uint32_t RESERVED : 16;
  1558. } DATA30_B;
  1559. };
  1560. /** @briefBAKPR DATA31 register */
  1561. union
  1562. {
  1563. __IOM uint32_t DATA31;
  1564. struct
  1565. {
  1566. __IOM uint32_t DATA : 16;
  1567. __IM uint32_t RESERVED : 16;
  1568. } DATA31_B;
  1569. };
  1570. /** @briefBAKPR DATA32 register */
  1571. union
  1572. {
  1573. __IOM uint32_t DATA32;
  1574. struct
  1575. {
  1576. __IOM uint32_t DATA : 16;
  1577. __IM uint32_t RESERVED : 16;
  1578. } DATA32_B;
  1579. };
  1580. /** @briefBAKPR DATA33 register */
  1581. union
  1582. {
  1583. __IOM uint32_t DATA33;
  1584. struct
  1585. {
  1586. __IOM uint32_t DATA : 16;
  1587. __IM uint32_t RESERVED : 16;
  1588. } DATA33_B;
  1589. };
  1590. /** @briefBAKPR DATA34 register */
  1591. union
  1592. {
  1593. __IOM uint32_t DATA34;
  1594. struct
  1595. {
  1596. __IOM uint32_t DATA : 16;
  1597. __IM uint32_t RESERVED : 16;
  1598. } DATA34_B;
  1599. };
  1600. /** @briefBAKPR DATA35 register */
  1601. union
  1602. {
  1603. __IOM uint32_t DATA35;
  1604. struct
  1605. {
  1606. __IOM uint32_t DATA : 16;
  1607. __IM uint32_t RESERVED : 16;
  1608. } DATA35_B;
  1609. };
  1610. /** @briefBAKPR DATA36 register */
  1611. union
  1612. {
  1613. __IOM uint32_t DATA36;
  1614. struct
  1615. {
  1616. __IOM uint32_t DATA : 16;
  1617. __IM uint32_t RESERVED : 16;
  1618. } DATA36_B;
  1619. };
  1620. /** @briefBAKPR DATA37 register */
  1621. union
  1622. {
  1623. __IOM uint32_t DATA37;
  1624. struct
  1625. {
  1626. __IOM uint32_t DATA : 16;
  1627. __IM uint32_t RESERVED : 16;
  1628. } DATA37_B;
  1629. };
  1630. /** @briefBAKPR DATA38 register */
  1631. union
  1632. {
  1633. __IOM uint32_t DATA38;
  1634. struct
  1635. {
  1636. __IOM uint32_t DATA : 16;
  1637. __IM uint32_t RESERVED : 16;
  1638. } DATA38_B;
  1639. };
  1640. /** @briefBAKPR DATA39 register */
  1641. union
  1642. {
  1643. __IOM uint32_t DATA39;
  1644. struct
  1645. {
  1646. __IOM uint32_t DATA : 16;
  1647. __IM uint32_t RESERVED : 16;
  1648. } DATA39_B;
  1649. };
  1650. /** @briefBAKPR DATA40 register */
  1651. union
  1652. {
  1653. __IOM uint32_t DATA40;
  1654. struct
  1655. {
  1656. __IOM uint32_t DATA : 16;
  1657. __IM uint32_t RESERVED : 16;
  1658. } DATA40_B;
  1659. };
  1660. /** @briefBAKPR DATA41 register */
  1661. union
  1662. {
  1663. __IOM uint32_t DATA41;
  1664. struct
  1665. {
  1666. __IOM uint32_t DATA : 16;
  1667. __IM uint32_t RESERVED : 16;
  1668. } DATA41_B;
  1669. };
  1670. /** @briefBAKPR DATA42 register */
  1671. union
  1672. {
  1673. __IOM uint32_t DATA42;
  1674. struct
  1675. {
  1676. __IOM uint32_t DATA : 16;
  1677. __IM uint32_t RESERVED : 16;
  1678. } DATA42_B;
  1679. };
  1680. } BAKPR_T;
  1681. /**
  1682. * @brief Timer register(TMR)
  1683. */
  1684. typedef struct
  1685. {
  1686. /** @brief Countrol register 1 */
  1687. union
  1688. {
  1689. __IOM uint32_t CTRL1;
  1690. struct
  1691. {
  1692. __IOM uint32_t CNTEN : 1;
  1693. __IOM uint32_t UD : 1;
  1694. __IOM uint32_t URSSEL : 1;
  1695. __IOM uint32_t SPMEN : 1;
  1696. __IOM uint32_t CNTDIR : 1;
  1697. __IOM uint32_t CAMSEL : 2;
  1698. __IOM uint32_t ARPEN : 1;
  1699. __IOM uint32_t CLKDIV : 2;
  1700. __IM uint32_t RESERVED : 22;
  1701. } CTRL1_B;
  1702. };
  1703. /** @brief Countrol register 2 */
  1704. union
  1705. {
  1706. __IOM uint32_t CTRL2;
  1707. struct
  1708. {
  1709. __IOM uint32_t CCPEN : 1;
  1710. __IM uint32_t RESERVED1 : 1;
  1711. __IOM uint32_t CCUSEL : 1;
  1712. __IOM uint32_t CCDSEL : 1;
  1713. __IOM uint32_t MMSEL : 3;
  1714. __IOM uint32_t TI1SEL : 1;
  1715. __IOM uint32_t OC1OIS : 1;
  1716. __IOM uint32_t OC1NOIS : 1;
  1717. __IOM uint32_t OC2OIS : 1;
  1718. __IOM uint32_t OC2NOIS : 1;
  1719. __IOM uint32_t OC3OIS : 1;
  1720. __IOM uint32_t OC3NOIS : 1;
  1721. __IOM uint32_t OC4OIS : 1;
  1722. __IM uint32_t RESERVED2 : 17;
  1723. } CTRL2_B;
  1724. };
  1725. /** @brief Control register from mode */
  1726. union
  1727. {
  1728. __IOM uint32_t SMCTRL;
  1729. struct
  1730. {
  1731. __IOM uint32_t SMFSEL : 3;
  1732. __IM uint32_t RESERVED1 : 1;
  1733. __IOM uint32_t TRGSEL : 3;
  1734. __IOM uint32_t MSMEN : 1;
  1735. __IOM uint32_t ETFCFG : 4;
  1736. __IOM uint32_t ETPCFG : 2;
  1737. __IOM uint32_t ECEN : 1;
  1738. __IOM uint32_t ETPOL : 1;
  1739. __IM uint32_t RESERVED2 : 16;
  1740. } SMCTRL_B;
  1741. };
  1742. /** @brief DMA and Interrupt enable register */
  1743. union
  1744. {
  1745. __IOM uint32_t DIEN;
  1746. struct
  1747. {
  1748. __IOM uint32_t UIEN : 1;
  1749. __IOM uint32_t CC1IEN : 1;
  1750. __IOM uint32_t CC2IEN : 1;
  1751. __IOM uint32_t CC3IEN : 1;
  1752. __IOM uint32_t CC4IEN : 1;
  1753. __IOM uint32_t COMIEN : 1;
  1754. __IOM uint32_t TRGIEN : 1;
  1755. __IOM uint32_t BRKIEN : 1;
  1756. __IOM uint32_t UDIEN : 1;
  1757. __IOM uint32_t CC1DEN : 1;
  1758. __IOM uint32_t CC2DEN : 1;
  1759. __IOM uint32_t CC3DEN : 1;
  1760. __IOM uint32_t CC4DEN : 1;
  1761. __IOM uint32_t COMDEN : 1;
  1762. __IOM uint32_t TRGDEN : 1;
  1763. __IM uint32_t RESERVED : 17;
  1764. } DIEN_B;
  1765. };
  1766. /** @brief Status register */
  1767. union
  1768. {
  1769. __IOM uint32_t STS;
  1770. struct
  1771. {
  1772. __IOM uint32_t UIFLG : 1;
  1773. __IOM uint32_t CC1IFLG : 1;
  1774. __IOM uint32_t CC2IFLG : 1;
  1775. __IOM uint32_t CC3IFLG : 1;
  1776. __IOM uint32_t CC4IFLG : 1;
  1777. __IOM uint32_t COMIFLG : 1;
  1778. __IOM uint32_t TRGIFLG : 1;
  1779. __IOM uint32_t BRKIFLG : 1;
  1780. __IM uint32_t RESERVED1 : 1;
  1781. __IOM uint32_t CC1RCFLG : 1;
  1782. __IOM uint32_t CC2RCFLG : 1;
  1783. __IOM uint32_t CC3RCFLG : 1;
  1784. __IOM uint32_t CC4RCFLG : 1;
  1785. __IM uint32_t RESERVED2 : 19;
  1786. } STS_B;
  1787. };
  1788. /** @brief Software controls event generation registers */
  1789. union
  1790. {
  1791. __OM uint32_t CEG;
  1792. struct
  1793. {
  1794. __OM uint32_t UEG : 1;
  1795. __OM uint32_t CC1EG : 1;
  1796. __OM uint32_t CC2EG : 1;
  1797. __OM uint32_t CC3EG : 1;
  1798. __OM uint32_t CC4EG : 1;
  1799. __OM uint32_t COMG : 1;
  1800. __OM uint32_t TEG : 1;
  1801. __OM uint32_t BEG : 1;
  1802. __OM uint32_t RESERVED : 24;
  1803. } CEG_B;
  1804. };
  1805. /** @brief Capture the compare mode register 1 */
  1806. union
  1807. {
  1808. __IOM uint32_t CCM1;
  1809. /** @brief Compare mode */
  1810. struct
  1811. {
  1812. __IOM uint32_t CC1SEL : 2;
  1813. __IOM uint32_t OC1FEN : 1;
  1814. __IOM uint32_t OC1PEN : 1;
  1815. __IOM uint32_t OC1MOD : 3;
  1816. __IOM uint32_t OC1CEN : 1;
  1817. __IOM uint32_t CC2SEL : 2;
  1818. __IOM uint32_t OC2FEN : 1;
  1819. __IOM uint32_t OC2PEN : 1;
  1820. __IOM uint32_t OC2MOD : 3;
  1821. __IOM uint32_t OC2CEN : 1;
  1822. __IM uint32_t RESERVED : 16;
  1823. } CCM1_COMPARE_B;
  1824. /** @brief Capture mode */
  1825. struct
  1826. {
  1827. __IOM uint32_t CC1SEL : 2;
  1828. __IOM uint32_t IC1PSC : 2;
  1829. __IOM uint32_t IC1F : 4;
  1830. __IOM uint32_t CC2SEL : 2;
  1831. __IOM uint32_t IC2PSC : 2;
  1832. __IOM uint32_t IC2F : 4;
  1833. __IM uint32_t RESERVED : 16;
  1834. } CCM1_CAPTURE_B;
  1835. };
  1836. /** @brief Capture the compare mode register 2 */
  1837. union
  1838. {
  1839. __IOM uint32_t CCM2;
  1840. /** @brief Compare mode */
  1841. struct
  1842. {
  1843. __IOM uint32_t CC3SEL : 2;
  1844. __IOM uint32_t OC3FEN : 1;
  1845. __IOM uint32_t OC3PEN : 1;
  1846. __IOM uint32_t OC3MODE : 3;
  1847. __IOM uint32_t OC3CEN : 1;
  1848. __IOM uint32_t CC4SEL : 2;
  1849. __IOM uint32_t OC4FEN : 1;
  1850. __IOM uint32_t OC4PEN : 1;
  1851. __IOM uint32_t OC4MODE : 3;
  1852. __IOM uint32_t OC4CEN : 1;
  1853. __IM uint32_t RESERVED : 16;
  1854. } CCM2_COMPARE_B;
  1855. /** @brief Capture mode */
  1856. struct
  1857. {
  1858. __IOM uint32_t CC3SEL : 2;
  1859. __IOM uint32_t IC3PSC : 2;
  1860. __IOM uint32_t IC3F : 4;
  1861. __IOM uint32_t CC4SEL : 2;
  1862. __IOM uint32_t IC4PSC : 2;
  1863. __IOM uint32_t IC4F : 4;
  1864. __IM uint32_t RESERVED : 16;
  1865. } CCM2_CAPTURE_B;
  1866. };
  1867. /** @brief Channel control register */
  1868. union
  1869. {
  1870. __IOM uint32_t CCEN;
  1871. struct
  1872. {
  1873. __IOM uint32_t CC1EN : 1;
  1874. __IOM uint32_t CC1POL : 1;
  1875. __IOM uint32_t CC1NEN : 1;
  1876. __IOM uint32_t CC1NPOL : 1;
  1877. __IOM uint32_t CC2EN : 1;
  1878. __IOM uint32_t CC2POL : 1;
  1879. __IOM uint32_t CC2NEN : 1;
  1880. __IOM uint32_t CC2NPOL : 1;
  1881. __IOM uint32_t CC3EN : 1;
  1882. __IOM uint32_t CC3POL : 1;
  1883. __IOM uint32_t CC3NEN : 1;
  1884. __IOM uint32_t CC3NPOL : 1;
  1885. __IOM uint32_t CC4EN : 1;
  1886. __IOM uint32_t CC4POL : 1;
  1887. __IM uint32_t RESERVED : 18;
  1888. } CCEN_B;
  1889. };
  1890. /** @brief Counting register */
  1891. union
  1892. {
  1893. __IOM uint32_t CNT;
  1894. struct
  1895. {
  1896. __IOM uint32_t CNT : 16;
  1897. __IM uint32_t RESERVED : 16;
  1898. } CNT_B;
  1899. };
  1900. /** @brief Division register */
  1901. union
  1902. {
  1903. __IOM uint32_t PSC;
  1904. struct
  1905. {
  1906. __IOM uint32_t PSC : 16;
  1907. __IM uint32_t RESERVED : 16;
  1908. } PSC_B;
  1909. };
  1910. /** @brief Automatic reload register */
  1911. union
  1912. {
  1913. __IOM uint32_t AUTORLD;
  1914. struct
  1915. {
  1916. __IOM uint32_t AUTORLD : 16;
  1917. __IM uint32_t RESERVED : 16;
  1918. } AUTORLD_B;
  1919. };
  1920. /** @brief Repeat count register */
  1921. union
  1922. {
  1923. __IOM uint32_t REPCNT;
  1924. struct
  1925. {
  1926. __IOM uint32_t REPCNT : 8;
  1927. __IM uint32_t RESERVED : 24;
  1928. } REPCNT_B;
  1929. };
  1930. /** @brief Capture comparison register channel 1 */
  1931. union
  1932. {
  1933. __IOM uint32_t CC1;
  1934. struct
  1935. {
  1936. __IOM uint32_t CC1 : 16;
  1937. __IM uint32_t RESERVED : 16;
  1938. } CC1_B;
  1939. };
  1940. /** @brief Capture comparison register channel 2 */
  1941. union
  1942. {
  1943. __IOM uint32_t CC2;
  1944. struct
  1945. {
  1946. __IOM uint32_t CC2 : 16;
  1947. __IM uint32_t RESERVED : 16;
  1948. } CC2_B;
  1949. };
  1950. /** @brief Capture comparison register channel 3 */
  1951. union
  1952. {
  1953. __IOM uint32_t CC3;
  1954. struct
  1955. {
  1956. __IOM uint32_t CC3 : 16;
  1957. __IM uint32_t RESERVED : 16;
  1958. } CC3_B;
  1959. };
  1960. /** @brief Capture comparison register channel 4 */
  1961. union
  1962. {
  1963. __IOM uint32_t CC4;
  1964. struct
  1965. {
  1966. __IOM uint32_t CC4 : 16;
  1967. __IM uint32_t RESERVED : 16;
  1968. } CC4_B;
  1969. };
  1970. /** @brief Brake and dead zone registers */
  1971. union
  1972. {
  1973. __IOM uint32_t BDT;
  1974. struct
  1975. {
  1976. __IOM uint32_t DTS : 8;
  1977. __IOM uint32_t LOCKCFG : 2;
  1978. __IOM uint32_t IMOS : 1;
  1979. __IOM uint32_t RMOS : 1;
  1980. __IOM uint32_t BRKEN : 1;
  1981. __IOM uint32_t BRKPOL : 1;
  1982. __IOM uint32_t AOEN : 1;
  1983. __IOM uint32_t MOEN : 1;
  1984. __IM uint32_t RESERVED : 16;
  1985. } BDT_B;
  1986. };
  1987. /** @brief DMA control register */
  1988. union
  1989. {
  1990. __IOM uint32_t DCTRL;
  1991. struct
  1992. {
  1993. __IOM uint32_t DBADDR : 5;
  1994. __IM uint32_t RESERVED1 : 3;
  1995. __IOM uint32_t DBLEN : 5;
  1996. __IM uint32_t RESERVED2 : 19;
  1997. } DCTRL_B;
  1998. };
  1999. /** @brief Consecutive DMA addresses */
  2000. union
  2001. {
  2002. __IOM uint32_t DMADDR;
  2003. struct
  2004. {
  2005. __IOM uint32_t DMADDR : 16;
  2006. __IM uint32_t RESERVED2 : 16;
  2007. } DMADDR_B;
  2008. };
  2009. } TMR_T;
  2010. /**
  2011. * @brief Direct Memory Access register(DMA)
  2012. */
  2013. typedef struct
  2014. {
  2015. /** @brief Interrupt status register */
  2016. union
  2017. {
  2018. __IM uint32_t INTSTS;
  2019. struct
  2020. {
  2021. __IM uint32_t GINTFLG1 : 1;
  2022. __IM uint32_t TCFLG1 : 1;
  2023. __IM uint32_t HTFLG1 : 1;
  2024. __IM uint32_t TERRFLG1 : 1;
  2025. __IM uint32_t GINTFLG2 : 1;
  2026. __IM uint32_t TCFLG2 : 1;
  2027. __IM uint32_t HTFLG2 : 1;
  2028. __IM uint32_t TERRFLG2 : 1;
  2029. __IM uint32_t GINTFLG3 : 1;
  2030. __IM uint32_t TCFLG3 : 1;
  2031. __IM uint32_t HTFLG3 : 1;
  2032. __IM uint32_t TERRFLG3 : 1;
  2033. __IM uint32_t GINTFLG4 : 1;
  2034. __IM uint32_t TCFLG4 : 1;
  2035. __IM uint32_t HTFLG4 : 1;
  2036. __IM uint32_t TERRFLG4 : 1;
  2037. __IM uint32_t GINTFLG5 : 1;
  2038. __IM uint32_t TCFLG5 : 1;
  2039. __IM uint32_t HTFLG5 : 1;
  2040. __IM uint32_t TERRFLG5 : 1;
  2041. __IM uint32_t GINTFLG6 : 1;
  2042. __IM uint32_t TCFLG6 : 1;
  2043. __IM uint32_t HTFLG6 : 1;
  2044. __IM uint32_t TERRFLG6 : 1;
  2045. __IM uint32_t GINTFLG7 : 1;
  2046. __IM uint32_t TCFLG7 : 1;
  2047. __IM uint32_t HTFLG7 : 1;
  2048. __IM uint32_t TERRFLG7 : 1;
  2049. __IM uint32_t RESERVED : 4;
  2050. } INTSTS_B;
  2051. };
  2052. /** @brief Interrupt reset register */
  2053. union
  2054. {
  2055. __OM uint32_t INTFCLR;
  2056. struct
  2057. {
  2058. __OM uint32_t GINTCLR1 : 1;
  2059. __OM uint32_t TCCLR1 : 1;
  2060. __OM uint32_t HTCLR1 : 1;
  2061. __OM uint32_t TERRCLR1 : 1;
  2062. __OM uint32_t GINTCLR2 : 1;
  2063. __OM uint32_t TCCLR2 : 1;
  2064. __OM uint32_t HTCLR2 : 1;
  2065. __OM uint32_t TERRCLR2 : 1;
  2066. __OM uint32_t GINTCLR3 : 1;
  2067. __OM uint32_t TCCLR3 : 1;
  2068. __OM uint32_t HTCLR3 : 1;
  2069. __OM uint32_t TERRCLR3 : 1;
  2070. __OM uint32_t GINTCLR4 : 1;
  2071. __OM uint32_t TCCLR4 : 1;
  2072. __OM uint32_t HTCLR4 : 1;
  2073. __OM uint32_t TERRCLR4 : 1;
  2074. __OM uint32_t GINTCLR5 : 1;
  2075. __OM uint32_t TCCLR5 : 1;
  2076. __OM uint32_t HTCLR5 : 1;
  2077. __OM uint32_t TERRCLR5 : 1;
  2078. __OM uint32_t GINTCLR6 : 1;
  2079. __OM uint32_t TCCLR6 : 1;
  2080. __OM uint32_t HTCLR6 : 1;
  2081. __OM uint32_t TERRCLR6 : 1;
  2082. __OM uint32_t GINTCLR7 : 1;
  2083. __OM uint32_t TCCLR7 : 1;
  2084. __OM uint32_t HTCLR7 : 1;
  2085. __OM uint32_t TERRCLR7 : 1;
  2086. __IM uint32_t RESERVED : 4;
  2087. } INTFCLR_B;
  2088. };
  2089. } DMA_T;
  2090. /**
  2091. * @brief DMA Channel register
  2092. */
  2093. typedef struct
  2094. {
  2095. /** @brief DMA Channel setup register */
  2096. union
  2097. {
  2098. __IOM uint32_t CHCFG;
  2099. struct
  2100. {
  2101. __IOM uint32_t CHEN : 1;
  2102. __IOM uint32_t TCINTEN : 1;
  2103. __IOM uint32_t HTINTEN : 1;
  2104. __IOM uint32_t TERRINTEN : 1;
  2105. __IOM uint32_t DIRCFG : 1;
  2106. __IOM uint32_t CIRMODE : 1;
  2107. __IOM uint32_t PERIMODE : 1;
  2108. __IOM uint32_t MIMODE : 1;
  2109. __IOM uint32_t PERSIZE : 2;
  2110. __IOM uint32_t MEMSIZE : 2;
  2111. __IOM uint32_t CHPL : 2;
  2112. __IOM uint32_t M2MMODE : 1;
  2113. __IM uint32_t RESERVED : 17;
  2114. } CHCFG_B;
  2115. };
  2116. /** @brief DMA Channel transfer number register*/
  2117. union
  2118. {
  2119. __IOM uint32_t CHNDATA;
  2120. struct
  2121. {
  2122. __IOM uint32_t NDATA : 16;
  2123. __IM uint32_t RESERVED : 16;
  2124. } CHNDATA_B;
  2125. };
  2126. /** @brief DMA Channel peripheral address register */
  2127. union
  2128. {
  2129. __IOM uint32_t CHPADDR;
  2130. struct
  2131. {
  2132. __IOM uint32_t PERADDR : 32;
  2133. } CHPADDR_B;
  2134. };
  2135. /** @brief DMA Channel memory address register */
  2136. union
  2137. {
  2138. __IOM uint32_t CHMADDR;
  2139. struct
  2140. {
  2141. __IOM uint32_t MEMADDR : 32;
  2142. } CHMADDR_B;
  2143. };
  2144. } DMA_Channel_T;
  2145. /**
  2146. * @brief CAN sending mailbox
  2147. */
  2148. typedef struct
  2149. {
  2150. /** @brief CAN Each mailbox contains the sending mailbox identifier register */
  2151. union
  2152. {
  2153. __IOM uint32_t TXMID;
  2154. struct
  2155. {
  2156. __IOM uint32_t TXMREQ : 1;
  2157. __IOM uint32_t TXRFREQ : 1;
  2158. __IOM uint32_t IDTYPESEL : 1;
  2159. __IOM uint32_t EXTID : 18;
  2160. __IOM uint32_t STDID : 11;
  2161. } TXMID_B;
  2162. };
  2163. /** @brief CAN Send the mailbox data length and timestamp register */
  2164. union
  2165. {
  2166. __IOM uint32_t TXDLEN;
  2167. struct
  2168. {
  2169. __IOM uint32_t DLCODE : 4;
  2170. __IM uint32_t RESERVED1 : 4;
  2171. __IOM uint32_t TXTS : 1;
  2172. __IM uint32_t RESERVED2 : 7;
  2173. __IOM uint32_t MTS : 16;
  2174. } TXDLEN_B;
  2175. };
  2176. /** @brief CAN Send mailbox low byte data register */
  2177. union
  2178. {
  2179. __IOM uint32_t TXMDL;
  2180. struct
  2181. {
  2182. __IOM uint32_t DATABYTE0 : 8;
  2183. __IOM uint32_t DATABYTE1 : 8;
  2184. __IOM uint32_t DATABYTE2 : 8;
  2185. __IOM uint32_t DATABYTE3 : 8;
  2186. } TXMDL_B;
  2187. };
  2188. /** @brief CAN Send mailbox High byte data register */
  2189. union
  2190. {
  2191. __IOM uint32_t TXMDH;
  2192. struct
  2193. {
  2194. __IOM uint32_t DATABYTE4 : 8;
  2195. __IOM uint32_t DATABYTE5 : 8;
  2196. __IOM uint32_t DATABYTE6 : 8;
  2197. __IOM uint32_t DATABYTE7 : 8;
  2198. } TXMDH_B;
  2199. };
  2200. } CAN_TxMailBox_T;
  2201. /**
  2202. * @brief CAN receive mailbox
  2203. */
  2204. typedef struct
  2205. {
  2206. /** @brief CAN Each mailbox contains the receive mailbox identifier register */
  2207. union
  2208. {
  2209. __IM uint32_t RXMID;
  2210. struct
  2211. {
  2212. __IM uint32_t RESERVED : 1;
  2213. __IM uint32_t RFTXREQ : 1;
  2214. __IM uint32_t IDTYPESEL : 1;
  2215. __IM uint32_t EXTID : 18;
  2216. __IM uint32_t STDID : 11;
  2217. } RXMID_B;
  2218. };
  2219. /** @brief CAN receive the mailbox data length and timestamp register */
  2220. union
  2221. {
  2222. __IM uint32_t RXDLEN;
  2223. struct
  2224. {
  2225. __IM uint32_t DLCODE : 4;
  2226. __IM uint32_t RESERVED : 4;
  2227. __IM uint32_t FMIDX : 8;
  2228. __IM uint32_t MTS : 16;
  2229. } RXDLEN_B;
  2230. };
  2231. /** @brief CAN receive mailbox low byte data register */
  2232. union
  2233. {
  2234. __IM uint32_t RXMDL;
  2235. struct
  2236. {
  2237. __IM uint32_t DATABYTE1 : 8;
  2238. __IM uint32_t DATABYTE2 : 8;
  2239. __IM uint32_t DATABYTE3 : 8;
  2240. __IM uint32_t DATABYTE4 : 8;
  2241. } RXMDL_B;
  2242. };
  2243. /** @briefCAN receive mailbox High byte data register */
  2244. union
  2245. {
  2246. __IOM uint32_t RXMDH;
  2247. struct
  2248. {
  2249. __IM uint32_t DATABYTE5 : 8;
  2250. __IM uint32_t DATABYTE6 : 8;
  2251. __IM uint32_t DATABYTE7 : 8;
  2252. __IM uint32_t DATABYTE8 : 8;
  2253. } RXMDH_B;
  2254. };
  2255. } CAN_RxMailBox_T;
  2256. /**
  2257. * @brief CAN Filter bank register
  2258. */
  2259. typedef struct
  2260. {
  2261. /** @brief CAN Filter bank register 1 */
  2262. union
  2263. {
  2264. __IOM uint32_t FBANK1;
  2265. struct
  2266. {
  2267. __IOM uint32_t FBIT0 : 1;
  2268. __IOM uint32_t FBIT1 : 1;
  2269. __IOM uint32_t FBIT2 : 1;
  2270. __IOM uint32_t FBIT3 : 1;
  2271. __IOM uint32_t FBIT4 : 1;
  2272. __IOM uint32_t FBIT5 : 1;
  2273. __IOM uint32_t FBIT6 : 1;
  2274. __IOM uint32_t FBIT7 : 1;
  2275. __IOM uint32_t FBIT8 : 1;
  2276. __IOM uint32_t FBIT9 : 1;
  2277. __IOM uint32_t FBIT10 : 1;
  2278. __IOM uint32_t FBIT11 : 1;
  2279. __IOM uint32_t FBIT12 : 1;
  2280. __IOM uint32_t FBIT13 : 1;
  2281. __IOM uint32_t FBIT14 : 1;
  2282. __IOM uint32_t FBIT15 : 1;
  2283. __IOM uint32_t FBIT16 : 1;
  2284. __IOM uint32_t FBIT17 : 1;
  2285. __IOM uint32_t FBIT18 : 1;
  2286. __IOM uint32_t FBIT19 : 1;
  2287. __IOM uint32_t FBIT20 : 1;
  2288. __IOM uint32_t FBIT21 : 1;
  2289. __IOM uint32_t FBIT22 : 1;
  2290. __IOM uint32_t FBIT23 : 1;
  2291. __IOM uint32_t FBIT24 : 1;
  2292. __IOM uint32_t FBIT25 : 1;
  2293. __IOM uint32_t FBIT26 : 1;
  2294. __IOM uint32_t FBIT27 : 1;
  2295. __IOM uint32_t FBIT28 : 1;
  2296. __IOM uint32_t FBIT29 : 1;
  2297. __IOM uint32_t FBIT30 : 1;
  2298. __IOM uint32_t FBIT31 : 1;
  2299. } FBANK1_B;
  2300. };
  2301. /** @brief CAN Filter bank register 1 */
  2302. union
  2303. {
  2304. __IOM uint32_t FBANK2;
  2305. struct
  2306. {
  2307. __IOM uint32_t FBIT0 : 1;
  2308. __IOM uint32_t FBIT1 : 1;
  2309. __IOM uint32_t FBIT2 : 1;
  2310. __IOM uint32_t FBIT3 : 1;
  2311. __IOM uint32_t FBIT4 : 1;
  2312. __IOM uint32_t FBIT5 : 1;
  2313. __IOM uint32_t FBIT6 : 1;
  2314. __IOM uint32_t FBIT7 : 1;
  2315. __IOM uint32_t FBIT8 : 1;
  2316. __IOM uint32_t FBIT9 : 1;
  2317. __IOM uint32_t FBIT10 : 1;
  2318. __IOM uint32_t FBIT11 : 1;
  2319. __IOM uint32_t FBIT12 : 1;
  2320. __IOM uint32_t FBIT13 : 1;
  2321. __IOM uint32_t FBIT14 : 1;
  2322. __IOM uint32_t FBIT15 : 1;
  2323. __IOM uint32_t FBIT16 : 1;
  2324. __IOM uint32_t FBIT17 : 1;
  2325. __IOM uint32_t FBIT18 : 1;
  2326. __IOM uint32_t FBIT19 : 1;
  2327. __IOM uint32_t FBIT20 : 1;
  2328. __IOM uint32_t FBIT21 : 1;
  2329. __IOM uint32_t FBIT22 : 1;
  2330. __IOM uint32_t FBIT23 : 1;
  2331. __IOM uint32_t FBIT24 : 1;
  2332. __IOM uint32_t FBIT25 : 1;
  2333. __IOM uint32_t FBIT26 : 1;
  2334. __IOM uint32_t FBIT27 : 1;
  2335. __IOM uint32_t FBIT28 : 1;
  2336. __IOM uint32_t FBIT29 : 1;
  2337. __IOM uint32_t FBIT30 : 1;
  2338. __IOM uint32_t FBIT31 : 1;
  2339. } FBANK2_B;
  2340. };
  2341. } CAN_FilterRegister_T;
  2342. /**
  2343. * @brief Controller Area Network(CAN)
  2344. */
  2345. typedef struct
  2346. {
  2347. /** @brief CAN Master control register */
  2348. union
  2349. {
  2350. __IOM uint32_t MCTRL;
  2351. struct
  2352. {
  2353. __IOM uint32_t INITREQ : 1;
  2354. __IOM uint32_t SLEEPREQ : 1;
  2355. __IOM uint32_t TXFPCFG : 1;
  2356. __IOM uint32_t RXFLOCK : 1;
  2357. __IOM uint32_t ARTXMD : 1;
  2358. __IOM uint32_t AWUPCFG : 1;
  2359. __IOM uint32_t ALBOFFM : 1;
  2360. __IOM uint32_t TTCM : 1;
  2361. __IM uint32_t RESERVED1 : 7;
  2362. __IOM uint32_t SWRST : 1;
  2363. __IOM uint32_t DBGFRZE : 1;
  2364. __IM uint32_t RESERVED2 : 15;
  2365. } MCTRL_B;
  2366. };
  2367. /** @brief CAN Master States register */
  2368. union
  2369. {
  2370. __IOM uint32_t MSTS;
  2371. struct
  2372. {
  2373. __IM uint32_t INITFLG : 1;
  2374. __IM uint32_t SLEEPFLG : 1;
  2375. __IOM uint32_t ERRIFLG : 1;
  2376. __IOM uint32_t WUPIFLG : 1;
  2377. __IOM uint32_t SLEEPIFLG : 1;
  2378. __IM uint32_t RESERVED1 : 3;
  2379. __IM uint32_t TXMFLG : 1;
  2380. __IM uint32_t RXMFLG : 1;
  2381. __IM uint32_t LSAMVALUE : 1;
  2382. __IM uint32_t RXSIGL : 1;
  2383. __IM uint32_t RESERVED2 : 20;
  2384. } MSTS_B;
  2385. };
  2386. /** @brief CAN Send States register */
  2387. union
  2388. {
  2389. __IOM uint32_t TXSTS;
  2390. struct
  2391. {
  2392. __IOM uint32_t REQCFLG0 : 1;
  2393. __IOM uint32_t TXSUSFLG0 : 1;
  2394. __IOM uint32_t ARBLSTFLG0 : 1;
  2395. __IOM uint32_t TXERRFLG0 : 1;
  2396. __IM uint32_t RESERVED1 : 3;
  2397. __IOM uint32_t ABREQFLG0 : 1;
  2398. __IOM uint32_t REQCFLG1 : 1;
  2399. __IOM uint32_t TXSUSFLG1 : 1;
  2400. __IOM uint32_t ARBLSTFLG1 : 1;
  2401. __IOM uint32_t TXERRFLG1 : 1;
  2402. __IM uint32_t RESERVED2 : 3;
  2403. __IOM uint32_t ABREQFLG1 : 1;
  2404. __IOM uint32_t REQCFLG2 : 1;
  2405. __IOM uint32_t TXSUSFLG2 : 1;
  2406. __IOM uint32_t ARBLSTFLG2 : 1;
  2407. __IOM uint32_t TXERRFLG2 : 1;
  2408. __IM uint32_t RESERVED3 : 3;
  2409. __IOM uint32_t ABREQFLG2 : 1;
  2410. __IM uint32_t EMNUM : 2;
  2411. __IM uint32_t TXMEFLG0 : 1;
  2412. __IM uint32_t TXMEFLG1 : 1;
  2413. __IM uint32_t TXMEFLG2 : 1;
  2414. __IM uint32_t LOWESTP0 : 1;
  2415. __IM uint32_t LOWESTP1 : 1;
  2416. __IM uint32_t LOWESTP2 : 1;
  2417. } TXSTS_B;
  2418. };
  2419. /** @brief CAN Receive FIFO 0 register */
  2420. union
  2421. {
  2422. __IOM uint32_t RXF0;
  2423. struct
  2424. {
  2425. __IM uint32_t FMNUM0 : 2;
  2426. __IM uint32_t RESERVED : 1;
  2427. __IOM uint32_t FFULLFLG0 : 1;
  2428. __IOM uint32_t FOVRFLG0 : 1;
  2429. __IOM uint32_t RFOM0 : 1;
  2430. __IM uint32_t RESERVED2 : 26;
  2431. } RXF0_B;
  2432. };
  2433. /** @brief CAN Receive FIFO 1 register */
  2434. union
  2435. {
  2436. __IOM uint32_t RXF1;
  2437. struct
  2438. {
  2439. __IM uint32_t FMNUM1 : 2;
  2440. __IM uint32_t RESERVED1 : 1;
  2441. __IOM uint32_t FFULLFLG1 : 1;
  2442. __IOM uint32_t FOVRFLG1 : 1;
  2443. __IOM uint32_t RFOM1 : 1;
  2444. __IM uint32_t RESERVED2 : 26;
  2445. } RXF1_B;
  2446. };
  2447. /** @brief CAN Interrupts register */
  2448. union
  2449. {
  2450. __IOM uint32_t INTEN;
  2451. struct
  2452. {
  2453. __IOM uint32_t TXMEIEN : 1;
  2454. __IOM uint32_t FMIEN0 : 1;
  2455. __IOM uint32_t FFULLIEN0 : 1;
  2456. __IOM uint32_t FOVRIEN0 : 1;
  2457. __IOM uint32_t FMIEN1 : 1;
  2458. __IOM uint32_t FFULLIEN1 : 1;
  2459. __IOM uint32_t FOVRIEN1 : 1;
  2460. __IM uint32_t RESERVED1 : 1;
  2461. __IOM uint32_t ERRWIEN : 1;
  2462. __IOM uint32_t ERRPIEN : 1;
  2463. __IOM uint32_t BOFFIEN : 1;
  2464. __IOM uint32_t LECIEN : 1;
  2465. __IM uint32_t RESERVED2 : 3;
  2466. __IOM uint32_t ERRIEN : 1;
  2467. __IOM uint32_t WUPIEN : 1;
  2468. __IOM uint32_t SLEEPIEN : 1;
  2469. __IM uint32_t RESERVED3 : 14;
  2470. } INTEN_B;
  2471. };
  2472. /** @brief CAN Error States register */
  2473. union
  2474. {
  2475. __IOM uint32_t ERRSTS;
  2476. struct
  2477. {
  2478. __IM uint32_t ERRWFLG : 1;
  2479. __IM uint32_t ERRPFLG : 1;
  2480. __IM uint32_t BOFLG : 1;
  2481. __IM uint32_t RESERVED1 : 1;
  2482. __IOM uint32_t LERRC : 3;
  2483. __IM uint32_t RESERVED2 : 9;
  2484. __IM uint32_t TXERRCNT : 8;
  2485. __IM uint32_t RXERRCNT : 8;
  2486. } ERRSTS_B;
  2487. };
  2488. /** @brief CAN Bit Time register */
  2489. union
  2490. {
  2491. __IOM uint32_t BITTIM;
  2492. struct
  2493. {
  2494. __IOM uint32_t BRPSC : 10;
  2495. __IM uint32_t RESERVED1 : 6;
  2496. __IOM uint32_t TIMSEG1 : 4;
  2497. __IOM uint32_t TIMSEG2 : 3;
  2498. __IM uint32_t RESERVED2 : 1;
  2499. __IOM uint32_t RSYNJW : 2;
  2500. __IM uint32_t RESERVED3 : 4;
  2501. __IOM uint32_t LBKMEN : 1;
  2502. __IOM uint32_t SILMEN : 1;
  2503. } BITTIM_B;
  2504. };
  2505. __IM uint32_t RESERVED0[88];
  2506. CAN_TxMailBox_T sTxMailBox[3];
  2507. CAN_RxMailBox_T sRxMailBox[2];
  2508. __IM uint32_t RESERVED1[12];
  2509. /** @brief CAN Filter the master control register */
  2510. union
  2511. {
  2512. __IOM uint32_t FCTRL;
  2513. struct
  2514. {
  2515. __IOM uint32_t FINITEN : 1;
  2516. __IM uint32_t RESERVED : 31;
  2517. } FCTRL_B;
  2518. };
  2519. /** @brief CAN Filter register */
  2520. union
  2521. {
  2522. __IOM uint32_t FMCFG;
  2523. struct
  2524. {
  2525. __IOM uint32_t FMCFG0 : 1;
  2526. __IOM uint32_t FMCFG1 : 1;
  2527. __IOM uint32_t FMCFG2 : 1;
  2528. __IOM uint32_t FMCFG3 : 1;
  2529. __IOM uint32_t FMCFG4 : 1;
  2530. __IOM uint32_t FMCFG5 : 1;
  2531. __IOM uint32_t FMCFG6 : 1;
  2532. __IOM uint32_t FMCFG7 : 1;
  2533. __IOM uint32_t FMCFG8 : 1;
  2534. __IOM uint32_t FMCFG9 : 1;
  2535. __IOM uint32_t FMCFG10 : 1;
  2536. __IOM uint32_t FMCFG11 : 1;
  2537. __IOM uint32_t FMCFG12 : 1;
  2538. __IOM uint32_t FMCFG13 : 1;
  2539. __IM uint32_t RESERVED : 18;
  2540. } FMCFG_B;
  2541. };
  2542. __IM uint32_t RESERVED2;
  2543. /** @brief CAN Filter bit scale register */
  2544. union
  2545. {
  2546. __IOM uint32_t FSCFG;
  2547. struct
  2548. {
  2549. __IOM uint32_t FSCFG0 : 1;
  2550. __IOM uint32_t FSCFG1 : 1;
  2551. __IOM uint32_t FSCFG2 : 1;
  2552. __IOM uint32_t FSCFG3 : 1;
  2553. __IOM uint32_t FSCFG4 : 1;
  2554. __IOM uint32_t FSCFG5 : 1;
  2555. __IOM uint32_t FSCFG6 : 1;
  2556. __IOM uint32_t FSCFG7 : 1;
  2557. __IOM uint32_t FSCFG8 : 1;
  2558. __IOM uint32_t FSCFG9 : 1;
  2559. __IOM uint32_t FSCFG10 : 1;
  2560. __IOM uint32_t FSCFG11 : 1;
  2561. __IOM uint32_t FSCFG12 : 1;
  2562. __IOM uint32_t FSCFG13 : 1;
  2563. __IM uint32_t RESERVED : 18;
  2564. }FSCFG_B;
  2565. };
  2566. __IM uint32_t RESERVED3;
  2567. /** @brief CAN Filter FIFO associated registers */
  2568. union
  2569. {
  2570. __IOM uint32_t FFASS;
  2571. struct
  2572. {
  2573. __IOM uint32_t FFASS0 : 1;
  2574. __IOM uint32_t FFASS1 : 1;
  2575. __IOM uint32_t FFASS2 : 1;
  2576. __IOM uint32_t FFASS3 : 1;
  2577. __IOM uint32_t FFASS4 : 1;
  2578. __IOM uint32_t FFASS5 : 1;
  2579. __IOM uint32_t FFASS6 : 1;
  2580. __IOM uint32_t FFASS7 : 1;
  2581. __IOM uint32_t FFASS8 : 1;
  2582. __IOM uint32_t FFASS9 : 1;
  2583. __IOM uint32_t FFASS10 : 1;
  2584. __IOM uint32_t FFASS11 : 1;
  2585. __IOM uint32_t FFASS12 : 1;
  2586. __IOM uint32_t FFASS13 : 1;
  2587. __IM uint32_t RESERVED : 18;
  2588. } FFASS_B;
  2589. };
  2590. __IM uint32_t RESERVED4;
  2591. /** @brief CAN Filter activation register */
  2592. union
  2593. {
  2594. __IOM uint32_t FACT;
  2595. struct
  2596. {
  2597. __IOM uint32_t FACT0 : 1;
  2598. __IOM uint32_t FACT1 : 1;
  2599. __IOM uint32_t FACT2 : 1;
  2600. __IOM uint32_t FACT3 : 1;
  2601. __IOM uint32_t FACT4 : 1;
  2602. __IOM uint32_t FACT5 : 1;
  2603. __IOM uint32_t FACT6 : 1;
  2604. __IOM uint32_t FACT7 : 1;
  2605. __IOM uint32_t FACT8 : 1;
  2606. __IOM uint32_t FACT9 : 1;
  2607. __IOM uint32_t FACT10 : 1;
  2608. __IOM uint32_t FACT11 : 1;
  2609. __IOM uint32_t FACT12 : 1;
  2610. __IOM uint32_t FACT13 : 1;
  2611. __IM uint32_t RESERVED : 18;
  2612. } FACT_B;
  2613. };
  2614. __IM uint32_t RESERVED5[8];
  2615. CAN_FilterRegister_T sFilterRegister[14];
  2616. } CAN_T;
  2617. /**
  2618. * @brief I2C register (I2C)
  2619. */
  2620. typedef struct
  2621. {
  2622. /** @brief Control register 1 */
  2623. union
  2624. {
  2625. __IOM uint32_t CTRL1;
  2626. struct
  2627. {
  2628. __IOM uint32_t I2CEN : 1;
  2629. __IOM uint32_t SMBEN : 1;
  2630. __IM uint32_t RESERVED1 : 1;
  2631. __IOM uint32_t SMBTCFG : 1;
  2632. __IOM uint32_t ARPEN : 1;
  2633. __IOM uint32_t PECEN : 1;
  2634. __IOM uint32_t SRBEN : 1;
  2635. __IOM uint32_t CLKSTRETCHD : 1;
  2636. __IOM uint32_t START : 1;
  2637. __IOM uint32_t STOP : 1;
  2638. __IOM uint32_t ACKEN : 1;
  2639. __IOM uint32_t ACKPOS : 1;
  2640. __IOM uint32_t PEC : 1;
  2641. __IOM uint32_t ALERTEN : 1;
  2642. __IM uint32_t RESERVED2 : 1;
  2643. __IOM uint32_t SWRST : 1;
  2644. __IM uint32_t RESERVED3 : 16;
  2645. } CTRL1_B;
  2646. } ;
  2647. /** @brief Control register 2 */
  2648. union
  2649. {
  2650. __IOM uint32_t CTRL2;
  2651. struct
  2652. {
  2653. __IOM uint32_t CLKFCFG : 6;
  2654. __IM uint32_t RESERVED1 : 2;
  2655. __IOM uint32_t ERRIEN : 1;
  2656. __IOM uint32_t EVIEN : 1;
  2657. __IOM uint32_t BUFIEN : 1;
  2658. __IOM uint32_t DMAEN : 1;
  2659. __IOM uint32_t LTCFG : 1;
  2660. __IM uint32_t RESERVED2 : 19;
  2661. } CTRL2_B;
  2662. } ;
  2663. /** @brief Slave machine address register 1 */
  2664. union
  2665. {
  2666. __IOM uint32_t SADDR1;
  2667. struct
  2668. {
  2669. __IOM uint32_t ADDR0 : 1;
  2670. __IOM uint32_t ADDR1_7 : 7;
  2671. __IOM uint32_t ADDR8_9 : 2;
  2672. __IM uint32_t RESERVED1 : 5;
  2673. __IOM uint32_t ADDRLEN : 1;
  2674. __IM uint32_t RESERVED2 : 16;
  2675. } SADDR1_B;
  2676. };
  2677. /** @brief Slave machine address register 2 */
  2678. union
  2679. {
  2680. __IOM uint32_t SADDR2;
  2681. struct
  2682. {
  2683. __IOM uint32_t ADDRNUM : 1;
  2684. __IOM uint32_t ADDR2 : 7;
  2685. __IM uint32_t RESERVED : 24;
  2686. } SADDR2_B;
  2687. };
  2688. /** @brief Cache data register */
  2689. union
  2690. {
  2691. __IOM uint32_t DATA;
  2692. struct
  2693. {
  2694. __IOM uint32_t DATA : 8;
  2695. __IM uint32_t RESERVED : 24;
  2696. } DATA_B;
  2697. };
  2698. /** @brief Status register 1 */
  2699. union
  2700. {
  2701. __IOM uint32_t STS1;
  2702. struct
  2703. {
  2704. __IM uint32_t STARTFLG : 1;
  2705. __IM uint32_t ADDRFLG : 1;
  2706. __IM uint32_t BTCFLG : 1;
  2707. __IM uint32_t ADDR10FLG : 1;
  2708. __IM uint32_t STOPFLG : 1;
  2709. __IM uint32_t RESERVED1 : 1;
  2710. __IM uint32_t RXBNEFLG : 1;
  2711. __IM uint32_t TXBEFLG : 1;
  2712. __IOM uint32_t BERRFLG : 1;
  2713. __IOM uint32_t ALFLG : 1;
  2714. __IOM uint32_t AEFLG : 1;
  2715. __IOM uint32_t OVRURFLG : 1;
  2716. __IOM uint32_t PECEFLG : 1;
  2717. __IM uint32_t RESERVED2 : 1;
  2718. __IOM uint32_t TTEFLG : 1;
  2719. __IOM uint32_t SMBALTFLG : 1;
  2720. __IM uint32_t RESERVED3 : 16;
  2721. } STS1_B;
  2722. };
  2723. /** @brief Status register 2 */
  2724. union
  2725. {
  2726. __IOM uint32_t STS2;
  2727. struct
  2728. {
  2729. __IM uint32_t MSFLG : 1;
  2730. __IM uint32_t BUSBSYFLG : 1;
  2731. __IM uint32_t TRFLG : 1;
  2732. __IM uint32_t RESERVED1 : 1;
  2733. __IM uint32_t GENCALLFLG : 1;
  2734. __IM uint32_t SMBDADDRFLG : 1;
  2735. __IM uint32_t SMMHADDR : 1;
  2736. __IM uint32_t DUALADDRFLG : 1;
  2737. __IM uint32_t PECVALUE : 8;
  2738. __IM uint32_t RESERVED2 : 16;
  2739. } STS2_B;
  2740. };
  2741. /** @brief Clock control register */
  2742. union
  2743. {
  2744. __IOM uint32_t CLKCTRL;
  2745. struct
  2746. {
  2747. __IOM uint32_t CLKS : 12;
  2748. __IM uint32_t RESERVED1 : 2;
  2749. __IOM uint32_t FDUTYCFG : 1;
  2750. __IOM uint32_t SPEEDCFG : 1;
  2751. __IM uint32_t RESERVED2 : 16;
  2752. } CLKCTRL_B;
  2753. };
  2754. /** @brief Maximum rise time */
  2755. union
  2756. {
  2757. __IOM uint32_t RISETMAX;
  2758. struct
  2759. {
  2760. __IOM uint32_t RISETMAX : 6;
  2761. __IM uint32_t RESERVED : 26;
  2762. } RISETMAX_B;
  2763. };
  2764. __IM uint32_t RESERVED[55];
  2765. /** @brief I2C Switching register */
  2766. union
  2767. {
  2768. __IOM uint32_t SWITCH;
  2769. struct
  2770. {
  2771. __IOM uint32_t SWITCH : 1;
  2772. __IM uint32_t RESERVED1 : 31;
  2773. } SWITCH_B;
  2774. };
  2775. } I2C_T;
  2776. typedef struct
  2777. {
  2778. __IOM uint16_t RDP;
  2779. __IOM uint16_t USER;
  2780. __IOM uint16_t Data0;
  2781. __IOM uint16_t Data1;
  2782. __IOM uint16_t WRP0;
  2783. __IOM uint16_t WRP1;
  2784. __IOM uint16_t WRP2;
  2785. __IOM uint16_t WRP3;
  2786. } OB_T;
  2787. /**
  2788. * @brief Analog to Digital Converter(ADC)
  2789. */
  2790. typedef struct
  2791. {
  2792. /** Status register */
  2793. union
  2794. {
  2795. __IOM uint32_t STS;
  2796. struct
  2797. {
  2798. __IOM uint32_t AWDFLG : 1;
  2799. __IOM uint32_t EOCFLG : 1;
  2800. __IOM uint32_t INJEOCFLG : 1;
  2801. __IOM uint32_t INJCSFLG : 1;
  2802. __IOM uint32_t REGCSFLG : 1;
  2803. __IM uint32_t RESERVED : 27;
  2804. } STS_B;
  2805. };
  2806. /** Control register1*/
  2807. union
  2808. {
  2809. __IOM uint32_t CTRL1;
  2810. struct
  2811. {
  2812. __IOM uint32_t AWDCHSEL : 5;
  2813. __IOM uint32_t EOCIEN : 1;
  2814. __IOM uint32_t AWDIEN : 1;
  2815. __IOM uint32_t INJEOCIEN : 1;
  2816. __IOM uint32_t SCANEN : 1;
  2817. __IOM uint32_t AWDSGLEN : 1;
  2818. __IOM uint32_t INJGACEN : 1;
  2819. __IOM uint32_t REGDISCEN : 1;
  2820. __IOM uint32_t INJDISCEN : 1;
  2821. __IOM uint32_t DISCNUMCFG : 3;
  2822. __IOM uint32_t DUALMCFG : 4;
  2823. __IM uint32_t RESERVED1 : 2;
  2824. __IOM uint32_t INJAWDEN : 1;
  2825. __IOM uint32_t REGAWDEN : 1;
  2826. __IM uint32_t RESERVED2 : 8;
  2827. } CTRL1_B;
  2828. };
  2829. /** Control register2*/
  2830. union
  2831. {
  2832. __IOM uint32_t CTRL2;
  2833. struct
  2834. {
  2835. __IOM uint32_t ADCEN : 1;
  2836. __IOM uint32_t CONTCEN : 1;
  2837. __IOM uint32_t CAL : 1;
  2838. __IOM uint32_t CALRST : 1;
  2839. __IM uint32_t RESERVED1 : 4;
  2840. __IOM uint32_t DMAEN : 1;
  2841. __IM uint32_t RESERVED2 : 2;
  2842. __IOM uint32_t DALIGNCFG : 1;
  2843. __IOM uint32_t INJGEXTTRGSEL : 3;
  2844. __IOM uint32_t INJEXTTRGEN : 1;
  2845. __IM uint32_t RESERVED3 : 1;
  2846. __IOM uint32_t REGEXTTRGSEL : 3;
  2847. __IOM uint32_t REGEXTTRGEN : 1;
  2848. __IOM uint32_t INJSWSC : 1;
  2849. __IOM uint32_t REGSWSC : 1;
  2850. __IOM uint32_t TSVREFEN : 1;
  2851. __IM uint32_t RESERVED4 : 8;
  2852. } CTRL2_B;
  2853. };
  2854. /** Sample time register1*/
  2855. union
  2856. {
  2857. __IOM uint32_t SMPTIM1;
  2858. struct
  2859. {
  2860. __IOM uint32_t SMPCYCCFG10 : 3;
  2861. __IOM uint32_t SMPCYCCFG11 : 3;
  2862. __IOM uint32_t SMPCYCCFG12 : 3;
  2863. __IOM uint32_t SMPCYCCFG13 : 3;
  2864. __IOM uint32_t SMPCYCCFG14 : 3;
  2865. __IOM uint32_t SMPCYCCFG15 : 3;
  2866. __IOM uint32_t SMPCYCCFG16 : 3;
  2867. __IOM uint32_t SMPCYCCFG17 : 3;
  2868. __IM uint32_t RESERVED : 8;
  2869. } SMPTIM1_B;
  2870. };
  2871. /** Sample time register2*/
  2872. union
  2873. {
  2874. __IOM uint32_t SMPTIM2;
  2875. struct
  2876. {
  2877. __IOM uint32_t SMPCYCCFG0 : 3;
  2878. __IOM uint32_t SMPCYCCFG1 : 3;
  2879. __IOM uint32_t SMPCYCCFG2 : 3;
  2880. __IOM uint32_t SMPCYCCFG3 : 3;
  2881. __IOM uint32_t SMPCYCCFG4 : 3;
  2882. __IOM uint32_t SMPCYCCFG5 : 3;
  2883. __IOM uint32_t SMPCYCCFG6 : 3;
  2884. __IOM uint32_t SMPCYCCFG7 : 3;
  2885. __IOM uint32_t SMPCYCCFG8 : 3;
  2886. __IOM uint32_t SMPCYCCFG9 : 3;
  2887. __IM uint32_t RESERVED : 2;
  2888. } SMPTIM2_B;
  2889. };
  2890. /** Injected channel Data offset register1*/
  2891. union
  2892. {
  2893. __IOM uint32_t INJDOF1;
  2894. struct
  2895. {
  2896. __IOM uint32_t INJDOF1 : 12;
  2897. __IM uint32_t RESERVED : 20;
  2898. } INJDOF1_B;
  2899. };
  2900. /** Injected channel Data offset register2*/
  2901. union
  2902. {
  2903. __IOM uint32_t INJDOF2;
  2904. struct
  2905. {
  2906. __IOM uint32_t INJDOF2 : 12;
  2907. __IM uint32_t RESERVED : 20;
  2908. } INJDOF2_B;
  2909. };
  2910. /** Injected channel Data offset register3*/
  2911. union
  2912. {
  2913. __IOM uint32_t INJDOF3;
  2914. struct
  2915. {
  2916. __IOM uint32_t INJDOF3 : 12;
  2917. __IM uint32_t RESERVED : 20;
  2918. } INJDOF3_B;
  2919. };
  2920. /** Injected channel Data offset register4*/
  2921. union
  2922. {
  2923. __IOM uint32_t INJDOF4;
  2924. struct
  2925. {
  2926. __IOM uint32_t INJDOF4 : 12;
  2927. __IM uint32_t RESERVED : 20;
  2928. } INJDOF4_B;
  2929. };
  2930. /** Analog watchdog high threshold register*/
  2931. union
  2932. {
  2933. __IOM uint32_t AWDHT;
  2934. struct
  2935. {
  2936. __IOM uint32_t AWDHT : 12;
  2937. __IM uint32_t RESERVED : 20;
  2938. } AWDHT_B;
  2939. };
  2940. /** Analog watchdog low threshold register*/
  2941. union
  2942. {
  2943. __IOM uint32_t AWDLT;
  2944. struct
  2945. {
  2946. __IOM uint32_t AWDLT : 12;
  2947. __IM uint32_t RESERVED : 20;
  2948. } AWDLT_B;
  2949. };
  2950. /** Regular channel sequence register1*/
  2951. union
  2952. {
  2953. __IOM uint32_t REGSEQ1;
  2954. struct
  2955. {
  2956. __IOM uint32_t REGSEQC13 : 5;
  2957. __IOM uint32_t REGSEQC14 : 5;
  2958. __IOM uint32_t REGSEQC15 : 5;
  2959. __IOM uint32_t REGSEQC16 : 5;
  2960. __IOM uint32_t REGSEQLEN : 4;
  2961. __IM uint32_t RESERVED : 8;
  2962. } REGSEQ1_B;
  2963. };
  2964. /** Regular channel sequence register2*/
  2965. union
  2966. {
  2967. __IOM uint32_t REGSEQ2;
  2968. struct
  2969. {
  2970. __IOM uint32_t REGSEQC7 : 5;
  2971. __IOM uint32_t REGSEQC8 : 5;
  2972. __IOM uint32_t REGSEQC9 : 5;
  2973. __IOM uint32_t REGSEQC10 : 5;
  2974. __IOM uint32_t REGSEQC11 : 5;
  2975. __IOM uint32_t REGSEQC12 : 5;
  2976. __IM uint32_t RESERVED : 2;
  2977. } REGSEQ2_B;
  2978. };
  2979. /** Regular channel sequence register3*/
  2980. union
  2981. {
  2982. __IOM uint32_t REGSEQ3;
  2983. struct
  2984. {
  2985. __IOM uint32_t REGSEQC1 : 5;
  2986. __IOM uint32_t REGSEQC2 : 5;
  2987. __IOM uint32_t REGSEQC3 : 5;
  2988. __IOM uint32_t REGSEQC4 : 5;
  2989. __IOM uint32_t REGSEQC5 : 5;
  2990. __IOM uint32_t REGSEQC6 : 5;
  2991. __IM uint32_t RESERVED : 2;
  2992. } REGSEQ3_B;
  2993. };
  2994. /** Injected sequence register*/
  2995. union
  2996. {
  2997. __IOM uint32_t INJSEQ;
  2998. struct
  2999. {
  3000. __IOM uint32_t INJSEQC1 : 5;
  3001. __IOM uint32_t INJSEQC2 : 5;
  3002. __IOM uint32_t INJSEQC3 : 5;
  3003. __IOM uint32_t INJSEQC4 : 5;
  3004. __IOM uint32_t INJSEQLEN : 2;
  3005. __IM uint32_t RESERVED : 10;
  3006. } INJSEQ_B;
  3007. };
  3008. /** Injected Data register1*/
  3009. union
  3010. {
  3011. __IM uint32_t INJDATA1;
  3012. struct
  3013. {
  3014. __IM uint32_t INJDATA : 16;
  3015. __IM uint32_t RESERVED : 16;
  3016. } INJDATA1_B;
  3017. };
  3018. /** Injected Data register2*/
  3019. union
  3020. {
  3021. __IM uint32_t INJDATA2;
  3022. struct
  3023. {
  3024. __IM uint32_t INJDATA : 16;
  3025. __IM uint32_t RESERVED : 16;
  3026. } INJDATA2_B;
  3027. };
  3028. /** Injected Data register3*/
  3029. union
  3030. {
  3031. __IM uint32_t INJDATA3;
  3032. struct
  3033. {
  3034. __IM uint32_t INJDATA : 16;
  3035. __IM uint32_t RESERVED : 16;
  3036. } INJDATA3_B;
  3037. };
  3038. /** Injected Data register4*/
  3039. union
  3040. {
  3041. __IM uint32_t INJDATA4;
  3042. struct
  3043. {
  3044. __IM uint32_t INJDATA : 16;
  3045. __IM uint32_t RESERVED : 16;
  3046. } INJDATA4_B;
  3047. };
  3048. /** Regular Data register*/
  3049. union
  3050. {
  3051. __IOM uint32_t REGDATA;
  3052. struct
  3053. {
  3054. __IM uint32_t REGDATA : 16;
  3055. __IM uint32_t ADC2DATA : 16;
  3056. } REGDATA_B;
  3057. };
  3058. }ADC_T;
  3059. /**
  3060. * @brief External Interrupt(EINT)
  3061. */
  3062. typedef struct
  3063. {
  3064. /** Interrupt mask register */
  3065. union
  3066. {
  3067. __IOM uint32_t IMASK;
  3068. struct
  3069. {
  3070. __IOM uint32_t IMASK0 : 1;
  3071. __IOM uint32_t IMASK1 : 1;
  3072. __IOM uint32_t IMASK2 : 1;
  3073. __IOM uint32_t IMASK3 : 1;
  3074. __IOM uint32_t IMASK4 : 1;
  3075. __IOM uint32_t IMASK5 : 1;
  3076. __IOM uint32_t IMASK6 : 1;
  3077. __IOM uint32_t IMASK7 : 1;
  3078. __IOM uint32_t IMASK8 : 1;
  3079. __IOM uint32_t IMASK9 : 1;
  3080. __IOM uint32_t IMASK10 : 1;
  3081. __IOM uint32_t IMASK11 : 1;
  3082. __IOM uint32_t IMASK12 : 1;
  3083. __IOM uint32_t IMASK13 : 1;
  3084. __IOM uint32_t IMASK14 : 1;
  3085. __IOM uint32_t IMASK15 : 1;
  3086. __IOM uint32_t IMASK16 : 1;
  3087. __IOM uint32_t IMASK17 : 1;
  3088. __IOM uint32_t IMASK18 : 1;
  3089. __IM uint32_t RESERVED : 12;
  3090. } IMASK_B;
  3091. };
  3092. /** Event mask register */
  3093. union
  3094. {
  3095. __IOM uint32_t EMASK;
  3096. struct
  3097. {
  3098. __IOM uint32_t EMASK0 : 1;
  3099. __IOM uint32_t EMASK1 : 1;
  3100. __IOM uint32_t EMASK2 : 1;
  3101. __IOM uint32_t EMASK3 : 1;
  3102. __IOM uint32_t EMASK4 : 1;
  3103. __IOM uint32_t EMASK5 : 1;
  3104. __IOM uint32_t EMASK6 : 1;
  3105. __IOM uint32_t EMASK7 : 1;
  3106. __IOM uint32_t EMASK8 : 1;
  3107. __IOM uint32_t EMASK9 : 1;
  3108. __IOM uint32_t EMASK10 : 1;
  3109. __IOM uint32_t EMASK11 : 1;
  3110. __IOM uint32_t EMASK12 : 1;
  3111. __IOM uint32_t EMASK13 : 1;
  3112. __IOM uint32_t EMASK14 : 1;
  3113. __IOM uint32_t EMASK15 : 1;
  3114. __IOM uint32_t EMASK16 : 1;
  3115. __IOM uint32_t EMASK17 : 1;
  3116. __IOM uint32_t EMASK18 : 1;
  3117. __IM uint32_t RESERVED : 12;
  3118. } EEN_B;
  3119. };
  3120. /** Rising Trigger Event Enable register */
  3121. union
  3122. {
  3123. __IOM uint32_t RTEN;
  3124. struct
  3125. {
  3126. __IOM uint32_t PTEN0 : 1;
  3127. __IOM uint32_t PTEN1 : 1;
  3128. __IOM uint32_t PTEN2 : 1;
  3129. __IOM uint32_t PTEN3 : 1;
  3130. __IOM uint32_t PTEN4 : 1;
  3131. __IOM uint32_t PTEN5 : 1;
  3132. __IOM uint32_t PTEN6 : 1;
  3133. __IOM uint32_t PTEN7 : 1;
  3134. __IOM uint32_t PTEN8 : 1;
  3135. __IOM uint32_t PTEN9 : 1;
  3136. __IOM uint32_t PTEN10 : 1;
  3137. __IOM uint32_t PTEN11 : 1;
  3138. __IOM uint32_t PTEN12 : 1;
  3139. __IOM uint32_t PTEN13 : 1;
  3140. __IOM uint32_t PTEN14 : 1;
  3141. __IOM uint32_t PTEN15 : 1;
  3142. __IOM uint32_t PTEN16 : 1;
  3143. __IOM uint32_t PTEN17 : 1;
  3144. __IOM uint32_t PTEN18 : 1;
  3145. __IM uint32_t RESERVED : 12;
  3146. } RTEN_B;
  3147. };
  3148. /** Falling Trigger Event Enable register */
  3149. union
  3150. {
  3151. __IOM uint32_t FTEN;
  3152. struct
  3153. {
  3154. __IOM uint32_t FTEN0 : 1;
  3155. __IOM uint32_t FTEN1 : 1;
  3156. __IOM uint32_t FTEN2 : 1;
  3157. __IOM uint32_t FTEN3 : 1;
  3158. __IOM uint32_t FTEN4 : 1;
  3159. __IOM uint32_t FTEN5 : 1;
  3160. __IOM uint32_t FTEN6 : 1;
  3161. __IOM uint32_t FTEN7 : 1;
  3162. __IOM uint32_t FTEN8 : 1;
  3163. __IOM uint32_t FTEN9 : 1;
  3164. __IOM uint32_t FTEN10 : 1;
  3165. __IOM uint32_t FTEN11 : 1;
  3166. __IOM uint32_t FTEN12 : 1;
  3167. __IOM uint32_t FTEN13 : 1;
  3168. __IOM uint32_t FTEN14 : 1;
  3169. __IOM uint32_t FTEN15 : 1;
  3170. __IOM uint32_t FTEN16 : 1;
  3171. __IOM uint32_t FTEN17 : 1;
  3172. __IOM uint32_t FTEN18 : 1;
  3173. __IM uint32_t RESERVED : 12;
  3174. } FTEN_B;
  3175. };
  3176. /** Software Interrupt Enable register */
  3177. union
  3178. {
  3179. __IOM uint32_t SWINTE;
  3180. struct
  3181. {
  3182. __IOM uint32_t SWINTE0 : 1;
  3183. __IOM uint32_t SWINTE1 : 1;
  3184. __IOM uint32_t SWINTE2 : 1;
  3185. __IOM uint32_t SWINTE3 : 1;
  3186. __IOM uint32_t SWINTE4 : 1;
  3187. __IOM uint32_t SWINTE5 : 1;
  3188. __IOM uint32_t SWINTE6 : 1;
  3189. __IOM uint32_t SWINTE7 : 1;
  3190. __IOM uint32_t SWINTE8 : 1;
  3191. __IOM uint32_t SWINTE9 : 1;
  3192. __IOM uint32_t SWINTE10 : 1;
  3193. __IOM uint32_t SWINTE11 : 1;
  3194. __IOM uint32_t SWINTE12 : 1;
  3195. __IOM uint32_t SWINTE13 : 1;
  3196. __IOM uint32_t SWINTE14 : 1;
  3197. __IOM uint32_t SWINTE15 : 1;
  3198. __IOM uint32_t SWINTE16 : 1;
  3199. __IOM uint32_t SWINTE17 : 1;
  3200. __IOM uint32_t SWINTE18 : 1;
  3201. __IM uint32_t RESERVED : 12;
  3202. } SWINTE_B;
  3203. };
  3204. /** Interrupt Flag Enable register */
  3205. union
  3206. {
  3207. __IOM uint32_t IPEND;
  3208. struct
  3209. {
  3210. __IOM uint32_t IPEND0 : 1;
  3211. __IOM uint32_t IPEND1 : 1;
  3212. __IOM uint32_t IPEND2 : 1;
  3213. __IOM uint32_t IPEND3 : 1;
  3214. __IOM uint32_t IPEND4 : 1;
  3215. __IOM uint32_t IPEND5 : 1;
  3216. __IOM uint32_t IPEND6 : 1;
  3217. __IOM uint32_t IPEND7 : 1;
  3218. __IOM uint32_t IPEND8 : 1;
  3219. __IOM uint32_t IPEND9 : 1;
  3220. __IOM uint32_t IPEND10 : 1;
  3221. __IOM uint32_t IPEND11 : 1;
  3222. __IOM uint32_t IPEND12 : 1;
  3223. __IOM uint32_t IPEND13 : 1;
  3224. __IOM uint32_t IPEND14 : 1;
  3225. __IOM uint32_t IPEND15 : 1;
  3226. __IOM uint32_t IPEND16 : 1;
  3227. __IOM uint32_t IPEND17 : 1;
  3228. __IOM uint32_t IPEND18 : 1;
  3229. __IM uint32_t RESERVED : 12;
  3230. } IF_B;
  3231. };
  3232. }EINT_T;
  3233. /**
  3234. * @brief Independent watchdog(IWDT)
  3235. */
  3236. typedef struct
  3237. {
  3238. /** Keyword register */
  3239. union
  3240. {
  3241. __OM uint32_t KEY;
  3242. struct
  3243. {
  3244. __OM uint32_t KEY : 16;
  3245. __IM uint32_t RESERVED : 16;
  3246. } KEY_B;
  3247. };
  3248. /** Frequency Divider register */
  3249. union
  3250. {
  3251. __IOM uint32_t PSC;
  3252. struct
  3253. {
  3254. __IOM uint32_t PSC : 3;
  3255. __IM uint32_t RESERVED : 29;
  3256. } DIV_B;
  3257. };
  3258. /** Reload values register */
  3259. union
  3260. {
  3261. __IOM uint32_t CNTRLD;
  3262. struct
  3263. {
  3264. __IOM uint32_t CNTRLD : 12;
  3265. __IM uint32_t RESERVED : 20;
  3266. } CNTRLD_B;
  3267. };
  3268. /** Status register */
  3269. union
  3270. {
  3271. __IM uint32_t STS;
  3272. struct
  3273. {
  3274. __IM uint32_t PSCUFLG : 1;
  3275. __IM uint32_t CNTUFLG : 1;
  3276. __IM uint32_t RESERVED : 30;
  3277. } STS_B;
  3278. };
  3279. }IWDT_T;
  3280. /**
  3281. * @brief Serial peripheral interface(SPI)
  3282. */
  3283. typedef struct
  3284. {
  3285. /** Control register 1 */
  3286. union
  3287. {
  3288. __IOM uint32_t CTRL1;
  3289. struct
  3290. {
  3291. __IOM uint32_t CPHA : 1;
  3292. __IOM uint32_t CPOL : 1;
  3293. __IOM uint32_t MSMCFG : 1;
  3294. __IOM uint32_t BRSEL : 3;
  3295. __IOM uint32_t SPIEN : 1;
  3296. __IOM uint32_t LSBSEL : 1;
  3297. __IOM uint32_t ISSEL : 1;
  3298. __IOM uint32_t SSEN : 1;
  3299. __IOM uint32_t RXOMEN : 1;
  3300. __IOM uint32_t DFLSEL : 1;
  3301. __IOM uint32_t CECNXT : 1;
  3302. __IOM uint32_t CRCEN : 1;
  3303. __IOM uint32_t BMOEN : 1;
  3304. __IOM uint32_t BMEN : 1;
  3305. __IM uint32_t RESERVED : 16;
  3306. } CTRL1_B;
  3307. };
  3308. /** Control register 2 */
  3309. union
  3310. {
  3311. __IOM uint32_t CTRL2;
  3312. struct
  3313. {
  3314. __IOM uint32_t RXDEN : 1;
  3315. __IOM uint32_t TXDEN : 1;
  3316. __IOM uint32_t SSOEN : 1;
  3317. __IM uint32_t RESERVED1 : 2;
  3318. __IOM uint32_t ERRIEN : 1;
  3319. __IOM uint32_t RXBNEIEN : 1;
  3320. __IOM uint32_t TXBEIEN : 1;
  3321. __IM uint32_t RESERVED2 : 24;
  3322. } CTRL2_B;
  3323. };
  3324. /** Status register */
  3325. union
  3326. {
  3327. __IOM uint32_t STS;
  3328. struct
  3329. {
  3330. __IM uint32_t RXBNEFLG : 1;
  3331. __IM uint32_t TXBEFLG : 1;
  3332. __IM uint32_t SCHDIR : 1;
  3333. __IM uint32_t UDRFLG : 1;
  3334. __IOM uint32_t CRCEFLG : 1;
  3335. __IM uint32_t MEFLG : 1;
  3336. __IM uint32_t OVRFLG : 1;
  3337. __IM uint32_t BSYFLG : 1;
  3338. __IM uint32_t RESERVED : 24;
  3339. } STS_B;
  3340. };
  3341. /** Data register */
  3342. union
  3343. {
  3344. __IOM uint32_t DATA;
  3345. struct
  3346. {
  3347. __IOM uint32_t DATA : 16;
  3348. __IM uint32_t RESERVED : 16;
  3349. } DATA_B;
  3350. };
  3351. /** CRC polynomial register */
  3352. union
  3353. {
  3354. __IOM uint32_t CRCPOLY;
  3355. struct
  3356. {
  3357. __IOM uint32_t CRCPOLY : 16;
  3358. __IM uint32_t RESERVED : 16;
  3359. } CRCPOLY_B;
  3360. };
  3361. /** Receive CRC register */
  3362. union
  3363. {
  3364. __IM uint32_t RXCRC;
  3365. struct
  3366. {
  3367. __IM uint32_t RXCRC : 16;
  3368. __IM uint32_t RESERVED : 16;
  3369. }RXCRC_B;
  3370. };
  3371. /** Transmit CRC register */
  3372. union
  3373. {
  3374. __IM uint32_t TXCRC;
  3375. struct
  3376. {
  3377. __IM uint32_t TXCRC : 16;
  3378. __IM uint32_t RESERVED : 16;
  3379. }TXCRC_B;
  3380. };
  3381. /** Transmit I2S CTRL register */
  3382. union
  3383. {
  3384. __IOM uint32_t I2SCFG;
  3385. struct
  3386. {
  3387. __IOM uint32_t CHLEN : 1;
  3388. __IOM uint32_t DATLEN : 2;
  3389. __IOM uint32_t CPOL : 1;
  3390. __IOM uint32_t I2SSSEL : 2;
  3391. __IM uint32_t RESERVED1 : 1;
  3392. __IOM uint32_t PFSSEL : 1;
  3393. __IOM uint32_t I2SMOD : 2;
  3394. __IOM uint32_t I2SEN : 1;
  3395. __IOM uint32_t MODESEL : 1;
  3396. __IM uint32_t RESERVED2 : 20;
  3397. }I2SCFG_B;
  3398. };
  3399. /** Transmit I2S DIV register */
  3400. union
  3401. {
  3402. __IOM uint32_t I2SPSC;
  3403. struct
  3404. {
  3405. __IOM uint32_t I2SPSC : 8;
  3406. __IOM uint32_t ODDPSC : 1;
  3407. __IOM uint32_t MCIEN : 1;
  3408. __IM uint32_t RESERVED1 : 22;
  3409. }I2SPSC_B;
  3410. };
  3411. }SPI_T;
  3412. /**
  3413. * @brief Window watchdog (WWDT)
  3414. */
  3415. typedef struct
  3416. {
  3417. /** Control register */
  3418. union
  3419. {
  3420. __IOM uint32_t CTRL;
  3421. struct
  3422. {
  3423. __IOM uint32_t CNT : 7;
  3424. __IOM uint32_t WWDTEN : 1;
  3425. __IM uint32_t RESERVED : 24;
  3426. } CTRL_B;
  3427. };
  3428. /** Configure register */
  3429. union
  3430. {
  3431. __IOM uint32_t CFG;
  3432. struct
  3433. {
  3434. __IOM uint32_t WIN : 7;
  3435. __IOM uint32_t TBPSC : 2;
  3436. __IOM uint32_t EWIEN : 1;
  3437. __IM uint32_t RESERVED : 22;
  3438. } CFG_B;
  3439. };
  3440. /** Status register */
  3441. union
  3442. {
  3443. __IOM uint32_t STS;
  3444. struct
  3445. {
  3446. __IOM uint32_t EWIFLG : 1;
  3447. __IM uint32_t RESERVED : 31;
  3448. } STS_B;
  3449. };
  3450. }WWDT_T;
  3451. /**
  3452. * @brief Secure digital input/output interface (SDIO)
  3453. */
  3454. typedef struct
  3455. {
  3456. /** Power control register */
  3457. union
  3458. {
  3459. __IOM uint32_t PWRCTRL;
  3460. struct
  3461. {
  3462. __IOM uint32_t PWRCTRL : 2;
  3463. __IM uint32_t RESERVED : 30;
  3464. } PWRCTRL_B;
  3465. };
  3466. /** Clock control register */
  3467. union
  3468. {
  3469. __IOM uint32_t CLKCTRL;
  3470. struct
  3471. {
  3472. __IOM uint32_t CLKDIV : 8;
  3473. __IOM uint32_t CLKEN : 1;
  3474. __IOM uint32_t PWRSAV : 1;
  3475. __IOM uint32_t BYPASSEN : 1;
  3476. __IOM uint32_t WBSEL : 2;
  3477. __IOM uint32_t DEPSEL : 1;
  3478. __IOM uint32_t HFCEN : 1;
  3479. __IM uint32_t RESERVED : 17;
  3480. } CLKCTRL_B;
  3481. };
  3482. /** Argument register */
  3483. union
  3484. {
  3485. __IOM uint32_t ARG;
  3486. struct
  3487. {
  3488. __IOM uint32_t CMDARG : 32;
  3489. } ARG_B;
  3490. };
  3491. /** Command register */
  3492. union
  3493. {
  3494. __IOM uint32_t CMD;
  3495. struct
  3496. {
  3497. __IOM uint32_t CMDINDEX : 6;
  3498. __IOM uint32_t WAITRES : 2;
  3499. __IOM uint32_t WAITINT : 1;
  3500. __IOM uint32_t WENDDATA : 1;
  3501. __IOM uint32_t CPSMEN : 1;
  3502. __IOM uint32_t SDIOSC : 1;
  3503. __IOM uint32_t CMDCPEN : 1;
  3504. __IOM uint32_t INTEN : 1;
  3505. __IOM uint32_t ATACMD : 1;
  3506. __IM uint32_t RESERVED : 17;
  3507. } CMD_B;
  3508. };
  3509. /** Command response register */
  3510. union
  3511. {
  3512. __IM uint32_t CMDRES;
  3513. struct
  3514. {
  3515. __IM uint32_t CMDRES : 6;
  3516. __IM uint32_t RESERVED : 26;
  3517. } CMDRES_B;
  3518. };
  3519. /** SDIO response register1 */
  3520. union
  3521. {
  3522. __IM uint32_t RES1;
  3523. struct
  3524. {
  3525. __IM uint32_t CARDSTS1 : 32;
  3526. } RES1_B;
  3527. };
  3528. /** SDIO response register2 */
  3529. union
  3530. {
  3531. __IM uint32_t RES2;
  3532. struct
  3533. {
  3534. __IM uint32_t CARDSTS2 : 32;
  3535. } RES2_B;
  3536. };
  3537. /** SDIO response register3 */
  3538. union
  3539. {
  3540. __IM uint32_t RES3;
  3541. struct
  3542. {
  3543. __IM uint32_t CARDSTS3 : 32;
  3544. } RES3_B;
  3545. };
  3546. /** SDIO response register4 */
  3547. union
  3548. {
  3549. __IM uint32_t RES4;
  3550. struct
  3551. {
  3552. __IM uint32_t CARDSTS4 : 32;
  3553. } RES4_B;
  3554. };
  3555. /** Data timer register */
  3556. union
  3557. {
  3558. __IOM uint32_t DATATIME;
  3559. struct
  3560. {
  3561. __IOM uint32_t DATATIME : 32;
  3562. } DTMR_B;
  3563. };
  3564. /** Data length register */
  3565. union
  3566. {
  3567. __IOM uint32_t DATALEN;
  3568. struct
  3569. {
  3570. __IOM uint32_t DATALEN : 25;
  3571. __IM uint32_t RESERVED : 7;
  3572. } DLEN_B;
  3573. };
  3574. /** Data control register */
  3575. union
  3576. {
  3577. __IOM uint32_t DCTRL;
  3578. struct
  3579. {
  3580. __IOM uint32_t DTEN : 1;
  3581. __IOM uint32_t DTDRCFG : 1;
  3582. __IOM uint32_t DTSEL : 1;
  3583. __IOM uint32_t DMAEN : 1;
  3584. __IOM uint32_t DBSIZE : 4;
  3585. __IOM uint32_t RWSTR : 1;
  3586. __IOM uint32_t PWSTOP : 1;
  3587. __IOM uint32_t RDWAIT : 1;
  3588. __IOM uint32_t SDIOF : 1;
  3589. __IM uint32_t RESERVED : 20;
  3590. } DCTRL_B;
  3591. };
  3592. /** Data count register */
  3593. union
  3594. {
  3595. __IM uint32_t DCNT;
  3596. struct
  3597. {
  3598. __IM uint32_t DATACNT : 25;
  3599. __IM uint32_t RESERVED : 7;
  3600. } DCNT_B;
  3601. };
  3602. /** SDIO status register */
  3603. union
  3604. {
  3605. __IM uint32_t STS;
  3606. struct
  3607. {
  3608. __IM uint32_t COMRESP : 1;
  3609. __IM uint32_t DBDR : 1;
  3610. __IM uint32_t CMDRESTO : 1;
  3611. __IM uint32_t DATATO : 1;
  3612. __IM uint32_t TXUDRER : 1;
  3613. __IM uint32_t RXOVRER : 1;
  3614. __IM uint32_t CMDRES : 1;
  3615. __IM uint32_t CMDSENT : 1;
  3616. __IM uint32_t DATAEND : 1;
  3617. __IM uint32_t SBE : 1;
  3618. __IM uint32_t DBCP : 1;
  3619. __IM uint32_t CMDACT : 1;
  3620. __IM uint32_t TXACT : 1;
  3621. __IM uint32_t RXACT : 1;
  3622. __IM uint32_t TXFHF : 1;
  3623. __IM uint32_t RXFHF : 1;
  3624. __IM uint32_t TXFF : 1;
  3625. __IM uint32_t RXFF : 1;
  3626. __IM uint32_t TXFE : 1;
  3627. __IM uint32_t RXFE : 1;
  3628. __IM uint32_t TXDA : 1;
  3629. __IM uint32_t RXDA : 1;
  3630. __IM uint32_t SDIOINT : 1;
  3631. __IM uint32_t ATAEND : 1;
  3632. __IM uint32_t RESERVED : 8;
  3633. } STS_B;
  3634. };
  3635. /** SDIO interrupt clear register */
  3636. union
  3637. {
  3638. __IOM uint32_t ICF;
  3639. struct
  3640. {
  3641. __IOM uint32_t DBCE : 1;
  3642. __IOM uint32_t CRCE : 1;
  3643. __IOM uint32_t CRTO : 1;
  3644. __IOM uint32_t DTO : 1;
  3645. __IOM uint32_t TXFUE : 1;
  3646. __IOM uint32_t RXFOE : 1;
  3647. __IOM uint32_t CMDRES : 1;
  3648. __IOM uint32_t CMDSENT : 1;
  3649. __IOM uint32_t DATAEND : 1;
  3650. __IOM uint32_t SBE : 1;
  3651. __IOM uint32_t DBCP : 1;
  3652. __IM uint32_t RESERVED1 : 11;
  3653. __IOM uint32_t SDIOIT : 1;
  3654. __IOM uint32_t ATAEND : 1;
  3655. __IM uint32_t RESERVED2 : 8;
  3656. } ICF_B;
  3657. };
  3658. /** SDIO interrupt mask register */
  3659. union
  3660. {
  3661. __IOM uint32_t MASK;
  3662. struct
  3663. {
  3664. __IOM uint32_t CCRCFAIL : 1;
  3665. __IOM uint32_t DCRCFAIL : 1;
  3666. __IOM uint32_t CMDTO : 1;
  3667. __IOM uint32_t DATATO : 1;
  3668. __IOM uint32_t TXURER : 1;
  3669. __IOM uint32_t RXORER : 1;
  3670. __IOM uint32_t CMDRESRC : 1;
  3671. __IOM uint32_t CMDSENT : 1;
  3672. __IOM uint32_t DATAEND : 1;
  3673. __IOM uint32_t STRTER : 1;
  3674. __IOM uint32_t DBEND : 1;
  3675. __IOM uint32_t CMDACT : 1;
  3676. __IOM uint32_t TXACT : 1;
  3677. __IOM uint32_t RXACT : 1;
  3678. __IOM uint32_t TXHFERT : 1;
  3679. __IOM uint32_t RXHFFUL : 1;
  3680. __IOM uint32_t TXFUL : 1;
  3681. __IOM uint32_t RXFUL : 1;
  3682. __IOM uint32_t TXEPT : 1;
  3683. __IOM uint32_t RXFEIE : 1;
  3684. __IOM uint32_t TXDAVB : 1;
  3685. __IOM uint32_t RXDAVB : 1;
  3686. __IOM uint32_t SDIOINTREC : 1;
  3687. __IOM uint32_t ATACLPREC : 1;
  3688. __IM uint32_t RESERVEDIE : 8;
  3689. } MASK_B;
  3690. };
  3691. __IM uint32_t RESERVED[2];
  3692. /** SDIO FIFO count register */
  3693. union
  3694. {
  3695. __IM uint32_t FIFOCNT;
  3696. struct
  3697. {
  3698. __IM uint32_t FIFOCNT : 24;
  3699. __IM uint32_t RESERVED : 8;
  3700. } FIFOCNT_B;
  3701. };
  3702. __IM uint32_t RESERVED1[13];
  3703. /** SDIO data FIFO register */
  3704. union
  3705. {
  3706. __IOM uint32_t FIFODATA;
  3707. struct
  3708. {
  3709. __IOM uint32_t FIFODATA : 32;
  3710. } FIFODATA_B;
  3711. };
  3712. }SDIO_T;
  3713. /**
  3714. * @brief Digital to Analog Converter(DAC)
  3715. */
  3716. typedef struct
  3717. {
  3718. /** Control register */
  3719. union
  3720. {
  3721. __IOM uint32_t CTRL;
  3722. struct
  3723. {
  3724. __IOM uint32_t ENCH1 : 1;
  3725. __IOM uint32_t BUFFDCH1 : 1;
  3726. __IOM uint32_t TRGENCH1 : 1;
  3727. __IOM uint32_t TRGSELCH1 : 3;
  3728. __IOM uint32_t WAVENCH1 : 2;
  3729. __IOM uint32_t MAMPSELCH1 : 4;
  3730. __IOM uint32_t DMAENCH1 : 1;
  3731. __IM uint32_t RESERVED1 : 3;
  3732. __IOM uint32_t ENCH2 : 1;
  3733. __IOM uint32_t BUFFDCH2 : 1;
  3734. __IOM uint32_t TRGENCH2 : 1;
  3735. __IOM uint32_t TRGSELCH2 : 3;
  3736. __IOM uint32_t WAVENCH2 : 2;
  3737. __IOM uint32_t MAMPSELCH2 : 4;
  3738. __IOM uint32_t DMAENCH2 : 1;
  3739. __IM uint32_t RESERVED2 : 3;
  3740. } CTRL_B;
  3741. };
  3742. /** Software trigger register */
  3743. union
  3744. {
  3745. __IOM uint32_t SWTRG;
  3746. struct
  3747. {
  3748. __IOM uint32_t SWTRG1 : 1;
  3749. __IOM uint32_t SWTRG2 : 1;
  3750. __IM uint32_t RESERVED : 30;
  3751. } SWTRG_B;
  3752. };
  3753. /** Channel1 12-bit right-aligned register */
  3754. union
  3755. {
  3756. __IOM uint32_t DH12R1;
  3757. struct
  3758. {
  3759. __IOM uint32_t DATA : 12;
  3760. __IM uint32_t RESERVED : 20;
  3761. } DH12R1_B;
  3762. };
  3763. /** Channel1 12-bit left-aligned register */
  3764. union
  3765. {
  3766. __IOM uint32_t DH12L1;
  3767. struct
  3768. {
  3769. __IM uint32_t RESERVED1 : 4;
  3770. __IOM uint32_t DATA : 12;
  3771. __IM uint32_t RESERVED2 : 16;
  3772. } DH12L1_B;
  3773. };
  3774. /** Channel1 8-bit right-aligned register */
  3775. union
  3776. {
  3777. __IOM uint32_t DH8R1;
  3778. struct
  3779. {
  3780. __IOM uint32_t DATA : 8;
  3781. __IM uint32_t RESERVED : 24;
  3782. } DH8R1_B;
  3783. };
  3784. /** Channel2 12-bit right-aligned register */
  3785. union
  3786. {
  3787. __IOM uint32_t DH12R2;
  3788. struct
  3789. {
  3790. __IOM uint32_t DATA : 12;
  3791. __IM uint32_t RESERVED : 20;
  3792. } DH12R2_B;
  3793. };
  3794. /** Channel2 12-bit left-aligned register */
  3795. union
  3796. {
  3797. __IOM uint32_t DH12L2;
  3798. struct
  3799. {
  3800. __IM uint32_t RESERVED1 : 4;
  3801. __IOM uint32_t DATA : 12;
  3802. __IM uint32_t RESERVED2 : 16;
  3803. }DH12L2_B;
  3804. };
  3805. /** Channel2 8-bit right-aligned register */
  3806. union
  3807. {
  3808. __IOM uint32_t DH8R2;
  3809. struct
  3810. {
  3811. __IOM uint32_t DATA : 8;
  3812. __IM uint32_t RESERVED : 24;
  3813. } DH8R2_B;
  3814. };
  3815. /** Channel1,Channel2 12-bit right-aligned register */
  3816. union
  3817. {
  3818. __IOM uint32_t DH12RDUAL;
  3819. struct
  3820. {
  3821. __IOM uint32_t DATACH1 : 12;
  3822. __IM uint32_t RESERVED1 : 4;
  3823. __IOM uint32_t DATACH2 : 12;
  3824. __IM uint32_t RESERVED2 : 4;
  3825. } DH12RDUAL_B;
  3826. };
  3827. /** Channel1,Channel2 12-bit left-aligned register */
  3828. union
  3829. {
  3830. __IOM uint32_t DH12LDUAL;
  3831. struct
  3832. {
  3833. __IM uint32_t RESERVED1 : 4;
  3834. __IOM uint32_t DATACH1 : 12;
  3835. __IM uint32_t RESERVED2 : 4;
  3836. __IOM uint32_t DATACH2 : 12;
  3837. } DH12LDUAL_B;
  3838. };
  3839. /** Channel1,Channel2 8-bit right-aligned register */
  3840. union
  3841. {
  3842. __IOM uint32_t DH8RDUAL;
  3843. struct
  3844. {
  3845. __IOM uint32_t CH1DH : 8;
  3846. __IOM uint32_t CH2DH : 8;
  3847. __IM uint32_t RESERVED : 16;
  3848. } DH8RDUAL_B;
  3849. };
  3850. /** Channel1 data output register */
  3851. union
  3852. {
  3853. __IOM uint32_t DATAOCH1;
  3854. struct
  3855. {
  3856. __IOM uint32_t DATA : 12;
  3857. __IM uint32_t RESERVED : 20;
  3858. } DATAOCH1_B;
  3859. };
  3860. /** Channel2 data output register */
  3861. union
  3862. {
  3863. __IOM uint32_t DATAOCH2;
  3864. struct
  3865. {
  3866. __IOM uint32_t DATA : 12;
  3867. __IM uint32_t RESERVED : 20;
  3868. } DATAOCH2_B;
  3869. };
  3870. }DAC_T;
  3871. /**
  3872. * @brief EMMC Register
  3873. */
  3874. typedef struct
  3875. {
  3876. /** SRAM/NOR-Flash chip-select control register */
  3877. union
  3878. {
  3879. __IOM uint32_t CSCTRL;
  3880. struct
  3881. {
  3882. __IOM uint32_t MBKEN : 1;
  3883. __IOM uint32_t ADMUXEN : 1;
  3884. __IOM uint32_t MTYPECFG : 2;
  3885. __IOM uint32_t MDBWIDCFG : 2;
  3886. __IOM uint32_t NORFMACCEN : 1;
  3887. __IM uint32_t RESERVED1 : 1;
  3888. __IOM uint32_t BURSTEN : 1;
  3889. __IOM uint32_t WSPOLCFG : 1;
  3890. __IOM uint32_t WRAPBEN : 1;
  3891. __IOM uint32_t WTIMCFG : 1;
  3892. __IOM uint32_t WREN : 1;
  3893. __IOM uint32_t WAITEN : 1;
  3894. __IOM uint32_t EXTMODEEN : 1;
  3895. __IOM uint32_t WSASYNCEN : 1;
  3896. __IOM uint32_t CRAMPSIZECFG : 3;
  3897. __IOM uint32_t WRBURSTEN : 1;
  3898. __IOM uint32_t RESERVED2 : 12;
  3899. }CSCTRL_B;
  3900. };
  3901. }SNCTRL_T;
  3902. typedef struct
  3903. {
  3904. /** SRAM/NOR-Flash write timing registers */
  3905. union
  3906. {
  3907. __IOM uint32_t WRTTIM;
  3908. struct
  3909. {
  3910. __IOM uint32_t ADDRSETCFG : 4;
  3911. __IOM uint32_t ADDRHLDCFG : 4;
  3912. __IOM uint32_t DATASETCFG : 8;
  3913. __IOM uint32_t BUSTURNCFG : 4;
  3914. __IOM uint32_t CLKDIVCFG : 4;
  3915. __IOM uint32_t DATALATCFG : 4;
  3916. __IOM uint32_t ACCMODECFG : 2;
  3917. __IM uint32_t RESERVED2 : 2;
  3918. }WRTTIM_T;
  3919. };
  3920. }SNWCLK_T;
  3921. /**
  3922. * @brief Flexible Static Memory Controller
  3923. */
  3924. typedef struct
  3925. {
  3926. __IO uint32_t SNCTRL_T[8];
  3927. } EMMC_Bank1_T;
  3928. /**
  3929. * @brief Flexible Static Memory Controller Bank1E
  3930. */
  3931. typedef struct
  3932. {
  3933. __IO uint32_t WRTTIM[7];
  3934. } EMMC_Bank1E_T;
  3935. /**
  3936. * @brief Flexible Static Memory Controller Bank 2
  3937. */
  3938. typedef struct
  3939. {
  3940. /** PC Card/NAND Flash control register 2 */
  3941. union
  3942. {
  3943. __IOM uint32_t CTRL2;
  3944. struct
  3945. {
  3946. __IM uint32_t RESERVED1 : 1;
  3947. __IOM uint32_t WAITFEN : 1;
  3948. __IOM uint32_t MBKEN : 1;
  3949. __IOM uint32_t MTYPECFG : 1;
  3950. __IOM uint32_t DBWIDCFG : 2;
  3951. __IOM uint32_t ECCEN : 1;
  3952. __IM uint32_t RESERVED2 : 2;
  3953. __IOM uint32_t C2RDCFG : 4;
  3954. __IOM uint32_t A2RDCFG : 4;
  3955. __IOM uint32_t ECCPSCFG : 3;
  3956. __IM uint32_t RESERVED3 : 12;
  3957. }CTRL2_B;
  3958. };
  3959. /** FIFO status and interrupt register 2 */
  3960. union
  3961. {
  3962. __IOM uint32_t STSINT2;
  3963. struct
  3964. {
  3965. __IOM uint32_t IREFLG : 1;
  3966. __IOM uint32_t IHLFLG : 1;
  3967. __IOM uint32_t IFEFLG : 1;
  3968. __IOM uint32_t IREDEN : 1;
  3969. __IOM uint32_t IHLDEN : 1;
  3970. __IOM uint32_t IFEDEN : 1;
  3971. __IM uint32_t FEFLG : 1;
  3972. __IM uint32_t RESERVED :25;
  3973. }STSINT2_B;
  3974. };
  3975. /** Common memory space timing register 2 */
  3976. union
  3977. {
  3978. __IOM uint32_t CMSTIM2;
  3979. struct
  3980. {
  3981. __IOM uint32_t SET2 : 8;
  3982. __IOM uint32_t WAIT2 : 8;
  3983. __IOM uint32_t HLD2 : 8;
  3984. __IOM uint32_t HIZ2 : 8;
  3985. }CMSTIM2_B;
  3986. };
  3987. /** Attribute memory space timing register 2 */
  3988. union
  3989. {
  3990. __IOM uint32_t AMSTIM2;
  3991. struct
  3992. {
  3993. __IOM uint32_t SET2 : 8;
  3994. __IOM uint32_t WAIT2 : 8;
  3995. __IOM uint32_t HLD2 : 8;
  3996. __IOM uint32_t HIZ2 : 8;
  3997. }AMSTIM2_B;
  3998. };
  3999. __IOM uint32_t RESERVED;
  4000. /** ECC result register 2 */
  4001. union
  4002. {
  4003. __IM uint32_t ECCRS2;
  4004. struct
  4005. {
  4006. __IM uint32_t ECCRS2 : 32;
  4007. } ECCRS2_B;
  4008. };
  4009. }EMMC_Bank2_T;
  4010. /**
  4011. * @brief Flexible Static Memory Controller Bank 3
  4012. */
  4013. typedef struct
  4014. {
  4015. /** PC Card/NAND Flash control register 3 */
  4016. union
  4017. {
  4018. __IOM uint32_t CTRL3;
  4019. struct
  4020. {
  4021. __IM uint32_t RESERVED1 : 1;
  4022. __IOM uint32_t WAITFEN : 1;
  4023. __IOM uint32_t MBKEN : 1;
  4024. __IOM uint32_t MTYPECFG : 1;
  4025. __IOM uint32_t DBWIDCFG : 2;
  4026. __IOM uint32_t ECCEN : 1;
  4027. __IM uint32_t RESERVED2 : 2;
  4028. __IOM uint32_t C2RDCFG : 4;
  4029. __IOM uint32_t A2RDCFG : 4;
  4030. __IOM uint32_t ECCPSCFG : 3;
  4031. __IM uint32_t RESERVED3 : 12;
  4032. }CTRL3_B;
  4033. };
  4034. /** FIFO status and interrupt register 3 */
  4035. union
  4036. {
  4037. __IOM uint32_t STSINT3;
  4038. struct
  4039. {
  4040. __IOM uint32_t IREFLG : 1;
  4041. __IOM uint32_t IHLFLG : 1;
  4042. __IOM uint32_t IFEFLG : 1;
  4043. __IOM uint32_t IREDEN : 1;
  4044. __IOM uint32_t IHLDEN : 1;
  4045. __IOM uint32_t IFEDEN : 1;
  4046. __IM uint32_t FEFLG : 1;
  4047. __IM uint32_t RESERVED :16;
  4048. }STSINT3_B;
  4049. };
  4050. /** Common memory space timing register 3 */
  4051. union
  4052. {
  4053. __IOM uint32_t CMSTIM3;
  4054. struct
  4055. {
  4056. __IOM uint32_t SET3 : 8;
  4057. __IOM uint32_t WAIT3 : 8;
  4058. __IOM uint32_t HLD3 : 8;
  4059. __IOM uint32_t HIZ3 : 8;
  4060. }CMSTIM3_B;
  4061. };
  4062. /** Attribute memory space timing register 3 */
  4063. union
  4064. {
  4065. __IOM uint32_t AMSTIM3;
  4066. struct
  4067. {
  4068. __IOM uint32_t SET3 : 8;
  4069. __IOM uint32_t WAIT3 : 8;
  4070. __IOM uint32_t HLD3 : 8;
  4071. __IOM uint32_t HIZ3 : 8;
  4072. }AMSTIM3_B;
  4073. };
  4074. __IOM uint32_t RESERVED;
  4075. /** ECC result register 3 */
  4076. union
  4077. {
  4078. __IM uint32_t ECCRS3;
  4079. struct
  4080. {
  4081. __IM uint32_t ECCRS3 : 32;
  4082. } ECCRS3_B;
  4083. };
  4084. }EMMC_Bank3_T;
  4085. /**
  4086. * @brief Flexible Static Memory Controller Bank 4
  4087. */
  4088. typedef struct
  4089. {
  4090. /** PC Card/NAND Flash control register 4 */
  4091. union
  4092. {
  4093. __IOM uint32_t CTRL4;
  4094. struct
  4095. {
  4096. __IM uint32_t RESERVED1 : 1;
  4097. __IOM uint32_t WAITFEN : 1;
  4098. __IOM uint32_t MBKEN : 1;
  4099. __IOM uint32_t MTYPECFG : 1;
  4100. __IOM uint32_t DBWIDCFG : 2;
  4101. __IOM uint32_t ECCEN : 1;
  4102. __IM uint32_t RESERVED2 : 2;
  4103. __IOM uint32_t C2RDCFG : 4;
  4104. __IOM uint32_t A2RDCFG : 4;
  4105. __IOM uint32_t ECCPSCFG : 3;
  4106. __IM uint32_t RESERVED3 : 12;
  4107. }CTRL4_B;
  4108. };
  4109. /** FIFO status and interrupt register 4 */
  4110. union
  4111. {
  4112. __IOM uint32_t STSINT4;
  4113. struct
  4114. {
  4115. __IOM uint32_t IREFLG : 1;
  4116. __IOM uint32_t IHLFLG : 1;
  4117. __IOM uint32_t IFEFLG : 1;
  4118. __IOM uint32_t IREDEN : 1;
  4119. __IOM uint32_t IHLDEN : 1;
  4120. __IOM uint32_t IFEDEN : 1;
  4121. __IM uint32_t FEFLG : 1;
  4122. __IM uint32_t RESERVED :16;
  4123. }STSINT4_B;
  4124. };
  4125. /** Common memory space timing register 4 */
  4126. union
  4127. {
  4128. __IOM uint32_t CMSTIM4;
  4129. struct
  4130. {
  4131. __IOM uint32_t SET4 : 8;
  4132. __IOM uint32_t WAIT4 : 8;
  4133. __IOM uint32_t HLD4 : 8;
  4134. __IOM uint32_t HIZ4 : 8;
  4135. }CMSTIM4_B;
  4136. };
  4137. /** Attribute memory space timing register 4 */
  4138. union
  4139. {
  4140. __IOM uint32_t AMSTIM4;
  4141. struct
  4142. {
  4143. __IOM uint32_t SET4 : 8;
  4144. __IOM uint32_t WAIT4 : 8;
  4145. __IOM uint32_t HLD4 : 8;
  4146. __IOM uint32_t HIZ4 : 8;
  4147. }AMSTIM4_B;
  4148. };
  4149. /** I/O space timing register 4 */
  4150. union
  4151. {
  4152. __IOM uint32_t IOSTIM4;
  4153. struct
  4154. {
  4155. __IOM uint32_t SET4 : 8;
  4156. __IOM uint32_t WAIT4 : 8;
  4157. __IOM uint32_t HLD4 : 8;
  4158. __IOM uint32_t HIZ4 : 8;
  4159. }IOSTIM4_B;
  4160. };
  4161. }EMMC_Bank4_T;
  4162. /**
  4163. * @brief Queued serial peripheral interface(QSPI)
  4164. */
  4165. typedef struct
  4166. {
  4167. /** @brief Control register 1 */
  4168. union
  4169. {
  4170. __IOM uint32_t CTRL1;
  4171. struct
  4172. {
  4173. __IOM uint32_t DFS : 5;
  4174. __IM uint32_t RESERVED1 : 3;
  4175. __IOM uint32_t CPHA : 1;
  4176. __IOM uint32_t CPOL : 1;
  4177. __IOM uint32_t TXMODE : 2;
  4178. __IM uint32_t RESERVED2 : 2;
  4179. __IOM uint32_t SSTEN : 1;
  4180. __IM uint32_t RESERVED3 : 7;
  4181. __IOM uint32_t FRF : 2;
  4182. __IM uint32_t RESERVED4 : 8;
  4183. }CTRL1_B;
  4184. };
  4185. /** @brief Control register 2 */
  4186. union
  4187. {
  4188. __IOM uint32_t CTRL2;
  4189. struct
  4190. {
  4191. __IOM uint32_t NDF : 16;
  4192. __IM uint32_t RESERVED : 16;
  4193. }CTRL2_B;
  4194. };
  4195. /** @brief QSPI Enable register */
  4196. union
  4197. {
  4198. __IOM uint32_t SSIEN;
  4199. struct
  4200. {
  4201. __IOM uint32_t EN : 1;
  4202. __IM uint32_t RESERVED : 31;
  4203. }SSIEN_B;
  4204. };
  4205. __IM uint32_t RESERVED;
  4206. /** @brief QSPI Slave enable register */
  4207. union
  4208. {
  4209. __IOM uint32_t SLAEN;
  4210. struct
  4211. {
  4212. __IOM uint32_t SLAEN : 1;
  4213. __IM uint32_t RESERVED : 31;
  4214. }SLAEN_B;
  4215. };
  4216. /** @brief Baudrate register */
  4217. union
  4218. {
  4219. __IOM uint32_t BR;
  4220. struct
  4221. {
  4222. __IOM uint32_t CLKDIV : 16;
  4223. __IM uint32_t RESERVED : 16;
  4224. }BR_B;
  4225. };
  4226. /** @brief Transmission FIFO threshhold level register */
  4227. union
  4228. {
  4229. __IOM uint32_t TFTL;
  4230. struct
  4231. {
  4232. __IOM uint32_t TFT : 3;
  4233. __IM uint32_t RESERVED1 : 13;
  4234. __IOM uint32_t TFTH : 3;
  4235. __IM uint32_t RESERVED2 : 13;
  4236. }TFTL_B;
  4237. };
  4238. /** @brief Reception FIFO threshhold level register */
  4239. union
  4240. {
  4241. __IOM uint32_t RFTL;
  4242. struct
  4243. {
  4244. __IOM uint32_t RFT : 3;
  4245. __IM uint32_t RESERVED : 29;
  4246. }RFTL_B;
  4247. };
  4248. /** @brief Transmission FIFO level register */
  4249. union
  4250. {
  4251. __IOM uint32_t TFL;
  4252. struct
  4253. {
  4254. __IOM uint32_t TFL : 3;
  4255. __IM uint32_t RESERVED : 29;
  4256. }TFL_B;
  4257. };
  4258. /** @brief Reception FIFO level register */
  4259. union
  4260. {
  4261. __IOM uint32_t RFL;
  4262. struct
  4263. {
  4264. __IOM uint32_t RFL : 3;
  4265. __IM uint32_t RESERVED : 29;
  4266. }RFL_B;
  4267. };
  4268. /** @brief Status register */
  4269. union
  4270. {
  4271. __IOM uint32_t STS;
  4272. struct
  4273. {
  4274. __IOM uint32_t BUSYF : 1;
  4275. __IOM uint32_t TFNF : 1;
  4276. __IOM uint32_t TFEF : 1;
  4277. __IOM uint32_t RFNEF : 1;
  4278. __IOM uint32_t RFFF : 1;
  4279. __IM uint32_t RESERVED1 : 1;
  4280. __IOM uint32_t DCEF : 1;
  4281. __IM uint32_t RESERVED2 : 25;
  4282. }STS_B;
  4283. };
  4284. /** @brief Interrupt enable register */
  4285. union
  4286. {
  4287. __IOM uint32_t INTEN;
  4288. struct
  4289. {
  4290. __IOM uint32_t TFEIE : 1;
  4291. __IOM uint32_t TFOIE : 1;
  4292. __IOM uint32_t RFUIE : 1;
  4293. __IOM uint32_t RFOIE : 1;
  4294. __IOM uint32_t RFFIE : 1;
  4295. __IOM uint32_t MSTIE : 1;
  4296. __IM uint32_t RESERVED : 26;
  4297. }INTEN_B;
  4298. };
  4299. /** @brief Interrupt status register */
  4300. union
  4301. {
  4302. __IM uint32_t ISTS;
  4303. struct
  4304. {
  4305. __IM uint32_t TFEIF : 1;
  4306. __IM uint32_t TFOIF : 1;
  4307. __IM uint32_t RFUIF : 1;
  4308. __IM uint32_t RFOIF : 1;
  4309. __IM uint32_t RFFIF : 1;
  4310. __IM uint32_t MSTIF : 1;
  4311. __IM uint32_t RESERVED : 26;
  4312. }ISTS_B;
  4313. };
  4314. /** @brief Raw interrupt register */
  4315. union
  4316. {
  4317. __IM uint32_t RIS;
  4318. struct
  4319. {
  4320. __IM uint32_t TFEIF : 1;
  4321. __IM uint32_t TFOIF : 1;
  4322. __IM uint32_t RFUIF : 1;
  4323. __IM uint32_t RXOIR : 1;
  4324. __IM uint32_t RXFIR : 1;
  4325. __IM uint32_t MSTIR : 1;
  4326. __IM uint32_t RESERVED : 26;
  4327. }RIS_B;
  4328. };
  4329. /** @brief Transmission FIFO overflow interrupt clear register */
  4330. union
  4331. {
  4332. __IM uint32_t TFOIC;
  4333. struct
  4334. {
  4335. __IM uint32_t TFOIC : 1;
  4336. __IM uint32_t RESERVED : 31;
  4337. }TFOIC_B;
  4338. };
  4339. /** @brief Reception FIFO overflow interrupt clear register */
  4340. union
  4341. {
  4342. __IM uint32_t RFOIC;
  4343. struct
  4344. {
  4345. __IM uint32_t RFOIC : 1;
  4346. __IM uint32_t RESERVED : 31;
  4347. }RFOIC_B;
  4348. };
  4349. /** @brief Reception FIFO underflow interrupt clear register */
  4350. union
  4351. {
  4352. __IM uint32_t RFUIC;
  4353. struct
  4354. {
  4355. __IM uint32_t RFUIC : 1;
  4356. __IM uint32_t RESERVED : 31;
  4357. }RFUIC_B;
  4358. };
  4359. /** @brief Master interrupt clear register */
  4360. union
  4361. {
  4362. __IM uint32_t MIC;
  4363. struct
  4364. {
  4365. __IM uint32_t MIC : 1;
  4366. __IM uint32_t RESERVED : 31;
  4367. }MIC_B;
  4368. };
  4369. /** @brief Interrupt clear register */
  4370. union
  4371. {
  4372. __IM uint32_t ICF;
  4373. struct
  4374. {
  4375. __IM uint32_t ICF : 1;
  4376. __IM uint32_t RESERVED : 31;
  4377. }ICF_B;
  4378. };
  4379. __IM uint32_t RESERVED1[5];
  4380. /** @brief Data register */
  4381. union
  4382. {
  4383. __IOM uint32_t DATA;
  4384. struct
  4385. {
  4386. __IOM uint32_t DATA : 32;
  4387. }DATA_B;
  4388. };
  4389. __IM uint32_t RESERVED2[35];
  4390. /** @brief Reception sample register */
  4391. union
  4392. {
  4393. __IOM uint32_t RSD;
  4394. struct
  4395. {
  4396. __IOM uint32_t RSD : 8;
  4397. __IM uint32_t RESERVED1 : 8;
  4398. __IOM uint32_t RSE : 1;
  4399. __IM uint32_t RESERVED2 : 15;
  4400. }RSD_B;
  4401. };
  4402. /** @brief Reception sample register */
  4403. union
  4404. {
  4405. __IOM uint32_t CTRL3;
  4406. struct
  4407. {
  4408. __IOM uint32_t IAT : 2;
  4409. __IOM uint32_t ADDRLEN : 4;
  4410. __IM uint32_t RESERVED1 : 2;
  4411. __IOM uint32_t INSLEN : 2;
  4412. __IM uint32_t RESERVED2 : 1;
  4413. __IOM uint32_t WAITCYC : 5;
  4414. __IM uint32_t RESERVED3 : 14;
  4415. __IOM uint32_t CSEN : 1;
  4416. __IM uint32_t RESERVED4 : 1;
  4417. }CTRL3_B;
  4418. };
  4419. __IM uint32_t RESERVED3[66];
  4420. /** @brief IO switch register */
  4421. union
  4422. {
  4423. __IOM uint32_t IOSW;
  4424. struct
  4425. {
  4426. __IOM uint32_t IOSW : 1;
  4427. __IM uint32_t RESERVED : 31;
  4428. }IOSW_B;
  4429. };
  4430. }QSPI_T;
  4431. /**
  4432. * @brief SEC Inter-integrated circuit (SCI2C)
  4433. */
  4434. typedef struct
  4435. {
  4436. /** @brief Control register 1 */
  4437. union
  4438. {
  4439. __IOM uint32_t CTRL1;
  4440. struct
  4441. {
  4442. __IOM uint32_t MST : 1;
  4443. __IOM uint32_t SPD : 2;
  4444. __IOM uint32_t SAM : 1;
  4445. __IM uint32_t RESERVED1 : 1;
  4446. __IOM uint32_t RSTAEN : 1;
  4447. __IOM uint32_t SLADIS : 1;
  4448. __IOM uint32_t DSA : 1;
  4449. __IOM uint32_t TFEIC : 1;
  4450. __IOM uint32_t RFFIE : 1;
  4451. __IOM uint32_t DSMA : 1;
  4452. __IM uint32_t RESERVED2 : 21;
  4453. }CTRL1_B;
  4454. };
  4455. /** @brief Master address register */
  4456. union
  4457. {
  4458. __IOM uint32_t TARADDR;
  4459. struct
  4460. {
  4461. __IOM uint32_t ADDR : 10;
  4462. __IOM uint32_t STA : 1;
  4463. __IOM uint32_t GCEN : 1;
  4464. __IOM uint32_t MAM : 1;
  4465. __IM uint32_t RESERVED : 19;
  4466. }TARADDR_B;
  4467. };
  4468. /** @brief Slave address register */
  4469. union
  4470. {
  4471. __IOM uint32_t SLAADDR;
  4472. struct
  4473. {
  4474. __IOM uint32_t ADDR : 10;
  4475. __IM uint32_t RESERVED : 22;
  4476. }SLAADDR_B;
  4477. };
  4478. /** @brief High speed master code register */
  4479. union
  4480. {
  4481. __IOM uint32_t HSMC;
  4482. struct
  4483. {
  4484. __IOM uint32_t HSMC : 4;
  4485. __IM uint32_t RESERVED : 28;
  4486. }HSMC_B;
  4487. };
  4488. /** @brief Data register */
  4489. union
  4490. {
  4491. __IOM uint32_t DATA;
  4492. struct
  4493. {
  4494. __IOM uint32_t DATA : 8;
  4495. __IOM uint32_t CMD : 1;
  4496. __IOM uint32_t STOP : 1;
  4497. __IM uint32_t RESERVED : 22;
  4498. }DATA_B;
  4499. };
  4500. /** @brief Standard speed clock high counter register */
  4501. union
  4502. {
  4503. __IOM uint32_t SSCHC;
  4504. struct
  4505. {
  4506. __IOM uint32_t CNT : 16;
  4507. __IM uint32_t RESERVED : 16;
  4508. }SSCHC_B;
  4509. };
  4510. /** @brief Standard speed clock low counter register */
  4511. union
  4512. {
  4513. __IOM uint32_t SSCLC;
  4514. struct
  4515. {
  4516. __IOM uint32_t CNT : 16;
  4517. __IM uint32_t RESERVED : 16;
  4518. }SSCLC_B;
  4519. };
  4520. /** @brief Fast speed clock high counter register */
  4521. union
  4522. {
  4523. __IOM uint32_t FSCHC;
  4524. struct
  4525. {
  4526. __IOM uint32_t CNT : 16;
  4527. __IM uint32_t RESERVED : 16;
  4528. }FSCHC_B;
  4529. };
  4530. /** @brief Fast speed clock low counter register */
  4531. union
  4532. {
  4533. __IOM uint32_t FSCLC;
  4534. struct
  4535. {
  4536. __IOM uint32_t CNT : 16;
  4537. __IM uint32_t RESERVED : 16;
  4538. }FSCLC_B;
  4539. };
  4540. /** @brief High speed clock high counter */
  4541. union
  4542. {
  4543. __IOM uint32_t HSCHC;
  4544. struct
  4545. {
  4546. __IOM uint32_t CNT : 16;
  4547. __IM uint32_t RESERVED : 16;
  4548. }HSCHC_B;
  4549. };
  4550. /** @brief High speed clock low counter register */
  4551. union
  4552. {
  4553. __IOM uint32_t HSCLC;
  4554. struct
  4555. {
  4556. __IOM uint32_t CNT : 16;
  4557. __IM uint32_t RESERVED : 16;
  4558. }HSCLC_B;
  4559. };
  4560. /** @brief Interrupt status register */
  4561. union
  4562. {
  4563. __IM uint32_t INTSTS;
  4564. struct
  4565. {
  4566. __IM uint32_t RFUIF : 1;
  4567. __IM uint32_t RFOIF : 1;
  4568. __IM uint32_t RFFIF : 1;
  4569. __IM uint32_t TFOIF : 1;
  4570. __IM uint32_t TFEIF : 1;
  4571. __IM uint32_t RRIF : 1;
  4572. __IM uint32_t TAIF : 1;
  4573. __IM uint32_t RDIF : 1;
  4574. __IM uint32_t ACTIF : 1;
  4575. __IM uint32_t STPDIF : 1;
  4576. __IM uint32_t STADIF : 1;
  4577. __IM uint32_t GCIF : 1;
  4578. __IM uint32_t RSTADIF : 1;
  4579. __IM uint32_t MOHIF : 1;
  4580. __IM uint32_t RESERVED : 18;
  4581. }INTSTS_B;
  4582. };
  4583. /** @brief Interrupt enable register */
  4584. union
  4585. {
  4586. __IOM uint32_t INTEN;
  4587. struct
  4588. {
  4589. __IOM uint32_t RFUIE : 1;
  4590. __IOM uint32_t RFOIE : 1;
  4591. __IOM uint32_t RFFIE : 1;
  4592. __IOM uint32_t TFOIE : 1;
  4593. __IOM uint32_t TFEIE : 1;
  4594. __IOM uint32_t RRIE : 1;
  4595. __IOM uint32_t TAIE : 1;
  4596. __IOM uint32_t RDIE : 1;
  4597. __IOM uint32_t ACTIE : 1;
  4598. __IOM uint32_t STPDIE : 1;
  4599. __IOM uint32_t STADIE : 1;
  4600. __IOM uint32_t GCIE : 1;
  4601. __IOM uint32_t RSTADIE : 1;
  4602. __IOM uint32_t MOHIE : 1;
  4603. __IM uint32_t RESERVED : 18;
  4604. }INTEN_B;
  4605. };
  4606. /** @brief Raw interrupt status register */
  4607. union
  4608. {
  4609. __IM uint32_t RIS;
  4610. struct
  4611. {
  4612. __IM uint32_t RFUIF : 1;
  4613. __IM uint32_t RFOIF : 1;
  4614. __IM uint32_t RFFIF : 1;
  4615. __IM uint32_t TFOIF : 1;
  4616. __IM uint32_t TFEIF : 1;
  4617. __IM uint32_t RRIF : 1;
  4618. __IM uint32_t TAIF : 1;
  4619. __IM uint32_t RDIF : 1;
  4620. __IM uint32_t ACTIF : 1;
  4621. __IM uint32_t STPDIF : 1;
  4622. __IM uint32_t STADIF : 1;
  4623. __IM uint32_t GCIF : 1;
  4624. __IM uint32_t RSTADIF : 1;
  4625. __IM uint32_t RESERVED : 18;
  4626. }RIS_B;
  4627. };
  4628. /** @brief Reception FIFO threshold register */
  4629. union
  4630. {
  4631. __IOM uint32_t RFT;
  4632. struct
  4633. {
  4634. __IOM uint32_t RFT : 8;
  4635. __IM uint32_t RESERVED : 24;
  4636. }RFT_B;
  4637. };
  4638. /** @brief Transmission FIFO threshold register */
  4639. union
  4640. {
  4641. __IOM uint32_t TFT;
  4642. struct
  4643. {
  4644. __IOM uint32_t TFT : 8;
  4645. __IM uint32_t RESERVED : 24;
  4646. }TFT_B;
  4647. };
  4648. /** @brief Interruption clear register */
  4649. union
  4650. {
  4651. __IM uint32_t INTCLR;
  4652. struct
  4653. {
  4654. __IM uint32_t INTCLR : 1;
  4655. __IM uint32_t RESERVED : 31;
  4656. }INTCLR_B;
  4657. };
  4658. /** @brief Reception FIFO underflow interruption clear register */
  4659. union
  4660. {
  4661. __IM uint32_t RFUIC;
  4662. struct
  4663. {
  4664. __IM uint32_t RFUIC : 1;
  4665. __IM uint32_t RESERVED : 31;
  4666. }RFUIC_B;
  4667. };
  4668. /** @brief Reception FIFO overflow interruption clear register */
  4669. union
  4670. {
  4671. __IM uint32_t RFOIC;
  4672. struct
  4673. {
  4674. __IM uint32_t RFOIC : 1;
  4675. __IM uint32_t RESERVED : 31;
  4676. }RFOIC_B;
  4677. };
  4678. /** @brief Transmission FIFO overflow interruption clear register */
  4679. union
  4680. {
  4681. __IM uint32_t TFOIC;
  4682. struct
  4683. {
  4684. __IM uint32_t TFOIC : 1;
  4685. __IM uint32_t RESERVED : 31;
  4686. }TFOIC_B;
  4687. };
  4688. /** @brief Reception request interruption clear register */
  4689. union
  4690. {
  4691. __IM uint32_t RRIC;
  4692. struct
  4693. {
  4694. __IM uint32_t RRIC : 1;
  4695. __IM uint32_t RESERVED : 31;
  4696. }RRIC_B;
  4697. };
  4698. /** @brief Transmission abort interruption clear register */
  4699. union
  4700. {
  4701. __IM uint32_t TAIC;
  4702. struct
  4703. {
  4704. __IM uint32_t TAIC : 1;
  4705. __IM uint32_t RESERVED : 31;
  4706. }TAIC_B;
  4707. };
  4708. /** @brief Receive done interruption clear register */
  4709. union
  4710. {
  4711. __IM uint32_t RDIC;
  4712. struct
  4713. {
  4714. __IM uint32_t RDIC : 1;
  4715. __IM uint32_t RESERVED : 31;
  4716. }RDIC_B;
  4717. };
  4718. /** @brief Activity interruption clear register */
  4719. union
  4720. {
  4721. __IM uint32_t AIC;
  4722. struct
  4723. {
  4724. __IM uint32_t AIC : 1;
  4725. __IM uint32_t RESERVED : 31;
  4726. }AIC_B;
  4727. };
  4728. /** @brief Stop detection interruption clear register */
  4729. union
  4730. {
  4731. __IM uint32_t STPDIC;
  4732. struct
  4733. {
  4734. __IM uint32_t STPDIC : 1;
  4735. __IM uint32_t RESERVED : 31;
  4736. }STPDIC_B;
  4737. };
  4738. /** @brief Start detection interruption clear register */
  4739. union
  4740. {
  4741. __IM uint32_t STADIC;
  4742. struct
  4743. {
  4744. __IM uint32_t STADIC : 1;
  4745. __IM uint32_t RESERVED : 31;
  4746. }STADIC_B;
  4747. };
  4748. /** @brief General call interruption clear register */
  4749. union
  4750. {
  4751. __IM uint32_t GCIC;
  4752. struct
  4753. {
  4754. __IM uint32_t GCIC : 1;
  4755. __IM uint32_t RESERVED : 31;
  4756. }GCIC_B;
  4757. };
  4758. /** @brief Control register 2 */
  4759. union
  4760. {
  4761. __IOM uint32_t CTRL2;
  4762. struct
  4763. {
  4764. __IOM uint32_t I2CEN : 1;
  4765. __IOM uint32_t ABR : 1;
  4766. __IOM uint32_t TCB : 1;
  4767. __IM uint32_t RESERVED : 29;
  4768. }CTRL2_B;
  4769. };
  4770. /** @brief Status register 1 */
  4771. union
  4772. {
  4773. __IM uint32_t STS1;
  4774. struct
  4775. {
  4776. __IM uint32_t ACTF : 1;
  4777. __IM uint32_t TFNFF : 1;
  4778. __IM uint32_t TFEF : 1;
  4779. __IM uint32_t RFNEF : 1;
  4780. __IM uint32_t RFFF : 1;
  4781. __IM uint32_t MAF : 1;
  4782. __IM uint32_t SAF : 1;
  4783. __IM uint32_t RESERVED : 24;
  4784. }STS1_B;
  4785. };
  4786. /** @brief Transmission FIFO level */
  4787. union
  4788. {
  4789. __IOM uint32_t TFL;
  4790. struct
  4791. {
  4792. __IOM uint32_t TFL : 4;
  4793. __IM uint32_t RESERVED : 28;
  4794. }TFL_B;
  4795. };
  4796. /** @brief Reception FIFO level */
  4797. union
  4798. {
  4799. __IOM uint32_t RFL;
  4800. struct
  4801. {
  4802. __IOM uint32_t RFL : 4;
  4803. __IM uint32_t RESERVED : 28;
  4804. }RFL_B;
  4805. };
  4806. /** @brief SDA hold time length register */
  4807. union
  4808. {
  4809. __IOM uint32_t SDAHOLD;
  4810. struct
  4811. {
  4812. __IOM uint32_t TXHOLD : 16;
  4813. __IOM uint32_t RXHOLD : 8;
  4814. __IM uint32_t RESERVED : 8;
  4815. }SDAHOLD_B;
  4816. };
  4817. /** @brief Transmission abort source register */
  4818. union
  4819. {
  4820. __IM uint32_t TAS;
  4821. struct
  4822. {
  4823. __IM uint32_t AD7NA : 1;
  4824. __IM uint32_t AD10NA1 : 1;
  4825. __IM uint32_t AD10NA2 : 1;
  4826. __IM uint32_t TDNA : 1;
  4827. __IM uint32_t GCNA : 1;
  4828. __IM uint32_t GCR : 1;
  4829. __IM uint32_t HSAD : 1;
  4830. __IM uint32_t SNR : 1;
  4831. __IM uint32_t RNR10B : 1;
  4832. __IM uint32_t MSTDIS : 1;
  4833. __IM uint32_t ARBLOST : 1;
  4834. __IM uint32_t LFTF : 1;
  4835. __IM uint32_t SAL : 1;
  4836. __IM uint32_t SRI : 1;
  4837. __IM uint32_t USRARB : 1;
  4838. __IM uint32_t FLUCNT : 1;
  4839. __IM uint32_t RESERVED : 16;
  4840. }TAS_B;
  4841. };
  4842. /** @brief Slave data NACK only register */
  4843. union
  4844. {
  4845. __IOM uint32_t SDNO;
  4846. struct
  4847. {
  4848. __IOM uint32_t NACK : 1;
  4849. __IM uint32_t RESERVED : 31;
  4850. }SDNO_B;
  4851. };
  4852. /** @brief DMA control register */
  4853. union
  4854. {
  4855. __IOM uint32_t DMACTRL;
  4856. struct
  4857. {
  4858. __IOM uint32_t RXEN : 1;
  4859. __IOM uint32_t TXEN : 1;
  4860. __IM uint32_t RESERVED : 30;
  4861. }DMACTRL_B;
  4862. };
  4863. /** @brief DMA transmission data level register */
  4864. union
  4865. {
  4866. __IOM uint32_t DTDL;
  4867. struct
  4868. {
  4869. __IOM uint32_t DTDL : 4;
  4870. __IM uint32_t RESERVED : 28;
  4871. }DTDL_B;
  4872. };
  4873. /** @brief DMA teception data level register */
  4874. union
  4875. {
  4876. __IOM uint32_t DRDL;
  4877. struct
  4878. {
  4879. __IOM uint32_t DRDL : 4;
  4880. __IM uint32_t RESERVED : 28;
  4881. }DRDL_B;
  4882. };
  4883. /** @brief SDA delay register */
  4884. union
  4885. {
  4886. __IOM uint32_t SDADLY;
  4887. struct
  4888. {
  4889. __IOM uint32_t SDADLY : 8;
  4890. __IM uint32_t RESERVED : 24;
  4891. }SDADLY_B;
  4892. };
  4893. /** @brief Genernal call ACK register */
  4894. union
  4895. {
  4896. __IOM uint32_t GCA;
  4897. struct
  4898. {
  4899. __IOM uint32_t GCA : 1;
  4900. __IM uint32_t RESERVED : 31;
  4901. }GCA_B;
  4902. };
  4903. /** @brief Status register 2 */
  4904. union
  4905. {
  4906. __IM uint32_t STS2;
  4907. struct
  4908. {
  4909. __IM uint32_t I2CEN : 1;
  4910. __IM uint32_t SDWB : 1;
  4911. __IM uint32_t SRDL : 1;
  4912. __IM uint32_t RESERVED : 29;
  4913. }STS2_B;
  4914. };
  4915. /** @brief Low speed spike suppression limit */
  4916. union
  4917. {
  4918. __IOM uint32_t LSSSL;
  4919. struct
  4920. {
  4921. __IOM uint32_t LSSSL : 8;
  4922. __IM uint32_t RESERVED : 24;
  4923. }LSSSL_B;
  4924. };
  4925. /** @brief High speed spike suppression limit */
  4926. union
  4927. {
  4928. __IOM uint32_t HSSSL;
  4929. struct
  4930. {
  4931. __IOM uint32_t HSSSL : 8;
  4932. __IM uint32_t RESERVED : 24;
  4933. }HSSSL_B;
  4934. };
  4935. uint32_t RESERVED[22];
  4936. /** @brief Switch register */
  4937. union
  4938. {
  4939. __IOM uint32_t SW;
  4940. struct
  4941. {
  4942. __IOM uint32_t SW : 1;
  4943. __IM uint32_t RESERVED : 31;
  4944. }SW_B;
  4945. };
  4946. }SCI2C_T;
  4947. /**
  4948. * @brief Dynamic memory controler (DMC)
  4949. */
  4950. typedef struct
  4951. {
  4952. /** @brief Configuraion register */
  4953. union
  4954. {
  4955. __IOM uint32_t CFG;
  4956. struct
  4957. {
  4958. __IM uint32_t RESERVED1 : 3;
  4959. __IOM uint32_t BAWCFG : 2;
  4960. __IOM uint32_t RAWCFG : 4;
  4961. __IOM uint32_t CAWCFG : 4;
  4962. __IOM uint32_t DWCFG : 2;
  4963. __IM uint32_t RESERVED2 : 16;
  4964. }CFG_B;
  4965. };
  4966. /** @brief Timing register 0 */
  4967. union
  4968. {
  4969. __IOM uint32_t TIM0;
  4970. struct
  4971. {
  4972. __IOM uint32_t CASLSEL0 : 2;
  4973. __IOM uint32_t RASMINTSEL : 4;
  4974. __IOM uint32_t DTIMSEL : 3;
  4975. __IOM uint32_t PCPSEL : 3;
  4976. __IOM uint32_t WRTIMSEL : 2;
  4977. __IOM uint32_t ARPSEL : 4;
  4978. __IOM uint32_t XSR0 : 4;
  4979. __IOM uint32_t ATACP : 4;
  4980. __IOM uint32_t ECASLSEL1 : 1;
  4981. __IOM uint32_t EXSR1 : 5;
  4982. }TIM0_B;
  4983. };
  4984. /** @brief Timing register 1 */
  4985. union
  4986. {
  4987. __IOM uint32_t TIM1;
  4988. struct
  4989. {
  4990. __IOM uint32_t STBTIM : 16;
  4991. __IOM uint32_t ARNUMCFG : 4;
  4992. __IM uint32_t RESERVED : 12;
  4993. }TIM1_B;
  4994. };
  4995. /** @brief Control register 1 */
  4996. union
  4997. {
  4998. __IOM uint32_t CTRL1;
  4999. struct
  5000. {
  5001. __IOM uint32_t INIT : 1;
  5002. __IOM uint32_t SRMEN : 1;
  5003. __IOM uint32_t PDMEN : 1;
  5004. __IOM uint32_t PCACFG : 1;
  5005. __IOM uint32_t FRBSREN : 1;
  5006. __IOM uint32_t FRASREN : 1;
  5007. __IOM uint32_t RDNUMMCFG : 3;
  5008. __IOM uint32_t MODESET : 1;
  5009. __IM uint32_t RESERVED1 : 1;
  5010. __IM uint32_t SRMFLG : 1;
  5011. __IOM uint32_t BANKNUMCFG : 5;
  5012. __IM uint32_t RESERVED2 : 15;
  5013. }CTRL1_B;
  5014. };
  5015. /** @brief Refresh register */
  5016. union
  5017. {
  5018. __IOM uint32_t REF;
  5019. struct
  5020. {
  5021. __IOM uint32_t RCYCCFG : 16;
  5022. __IM uint32_t RESERVED : 16;
  5023. }REF_B;
  5024. };
  5025. /** @brief Chip select register */
  5026. union
  5027. {
  5028. __IOM uint32_t CHIPSEL;
  5029. struct
  5030. {
  5031. __IM uint32_t RESERVED : 16;
  5032. __IOM uint32_t BACHIPSEL : 16;
  5033. }CHIPSEL_B;
  5034. };
  5035. __IM uint32_t RESERVED[15];
  5036. /** @brief Mask register */
  5037. union
  5038. {
  5039. __IOM uint32_t MASK;
  5040. struct
  5041. {
  5042. __IOM uint32_t MSIZESEL : 5;
  5043. __IOM uint32_t MTYPESEL : 3;
  5044. __IM uint32_t RESERVED : 24;
  5045. }MASK_B;
  5046. };
  5047. __IM uint32_t RESERVED1[234];
  5048. /** @brief Switch register */
  5049. union
  5050. {
  5051. __IOM uint32_t SW;
  5052. struct
  5053. {
  5054. __IOM uint32_t MCSW : 1;
  5055. __IM uint32_t RESERVED : 31;
  5056. }SW_B;
  5057. };
  5058. /** @brief Control register 2 */
  5059. union
  5060. {
  5061. __IOM uint32_t CTRL2;
  5062. struct
  5063. {
  5064. __IOM uint32_t CPHACFG : 1;
  5065. __IOM uint32_t RDDEN : 1;
  5066. __IOM uint32_t RDDCFG : 3;
  5067. __IOM uint32_t WPEN : 1;
  5068. __IM uint32_t RESERVED : 26;
  5069. }CTRL2_B;
  5070. };
  5071. }DMC_T;
  5072. /**
  5073. * @brief Debug MCU(DBGMCU)
  5074. */
  5075. typedef struct
  5076. {
  5077. /** @brief ID register */
  5078. union
  5079. {
  5080. __IOM uint32_t IDCODE;
  5081. struct
  5082. {
  5083. __IOM uint32_t EQR : 12;
  5084. __IM uint32_t RESERVED : 4;
  5085. __IOM uint32_t WVR : 16;
  5086. }IDCODE_B;
  5087. };
  5088. /** @brief Control register */
  5089. union
  5090. {
  5091. __IOM uint32_t CFG;
  5092. struct
  5093. {
  5094. __IOM uint32_t SLEEP_CLK_STS : 1;
  5095. __IOM uint32_t STOP_CLK_STS : 1;
  5096. __IOM uint32_t STANDBY_CLK_STS : 1;
  5097. __IM uint32_t RESERVED1 : 2;
  5098. __IOM uint32_t IOEN : 1;
  5099. __IOM uint32_t MODE : 2;
  5100. __IOM uint32_t IWDT_STS : 1;
  5101. __IOM uint32_t WWDT_STS : 1;
  5102. __IOM uint32_t TMR1_STS : 1;
  5103. __IOM uint32_t TMR2_STS : 1;
  5104. __IOM uint32_t TMR3_STS : 1;
  5105. __IOM uint32_t TMR4_STS : 1;
  5106. __IOM uint32_t CAN1_STS : 1;
  5107. __IOM uint32_t I2C1_SMBUS_TIMEOUT_STS : 1;
  5108. __IOM uint32_t I2C2_SMBUS_TIMEOUT_STS : 1;
  5109. __IOM uint32_t TMR8_STS : 1;
  5110. __IOM uint32_t TMR5_STS : 1;
  5111. __IOM uint32_t TMR6_STS : 1;
  5112. __IOM uint32_t TMR7_STS : 1;
  5113. __IOM uint32_t CAN2_STS : 1;
  5114. __IM uint32_t RESERVED2 : 3;
  5115. __IOM uint32_t TMR12_STS : 1;
  5116. __IOM uint32_t TMR13_STS : 1;
  5117. __IOM uint32_t TMR14_STS : 1;
  5118. __IOM uint32_t TMR9_STS : 1;
  5119. __IOM uint32_t TMR10_STS : 1;
  5120. __IOM uint32_t TMR11_STS : 1;
  5121. __IM uint32_t RESERVED3 : 1;
  5122. }CFG_B;
  5123. };
  5124. }DBGMCU_T;
  5125. /**
  5126. * @brief USB Device controler(USBD)
  5127. */
  5128. typedef union
  5129. {
  5130. __IOM uint32_t EP;
  5131. struct
  5132. {
  5133. __IOM uint32_t ADDR : 4;
  5134. __IOM uint32_t TXSTS : 2;
  5135. __IOM uint32_t TXDTOG : 1;
  5136. __IOM uint32_t CTFT : 1;
  5137. __IOM uint32_t KIND : 1;
  5138. __IOM uint32_t TYPE : 2;
  5139. __IOM uint32_t SETUP : 1;
  5140. __IOM uint32_t RXSTS : 2;
  5141. __IOM uint32_t RXDTOG : 1;
  5142. __IOM uint32_t CTFR : 1;
  5143. __IM uint32_t RESERVED : 16;
  5144. }EP_B;
  5145. }USB_EP_REG_T;
  5146. typedef struct
  5147. {
  5148. /** Endpoint */
  5149. USB_EP_REG_T EP[8];
  5150. __IM uint32_t RESERVED[8];
  5151. /** @brief Control register */
  5152. union
  5153. {
  5154. __IOM uint32_t CTRL;
  5155. struct
  5156. {
  5157. __IOM uint32_t FORRST : 1;
  5158. __IOM uint32_t PWRDOWN : 1;
  5159. __IOM uint32_t LPWREN : 1;
  5160. __IOM uint32_t FORSUS : 1;
  5161. __IOM uint32_t WUPREQ : 1;
  5162. __IM uint32_t RESERVED1 : 3;
  5163. __IOM uint32_t ESOFIEN : 1;
  5164. __IOM uint32_t SOFIEN : 1;
  5165. __IOM uint32_t RSTIEN : 1;
  5166. __IOM uint32_t SUSIEN : 1;
  5167. __IOM uint32_t WUPIEN : 1;
  5168. __IOM uint32_t ERRIEN : 1;
  5169. __IOM uint32_t PMAOUIEN : 1;
  5170. __IOM uint32_t CTRIEN : 1;
  5171. __IM uint32_t RESERVED2 : 16;
  5172. }CTRL_B;
  5173. };
  5174. /** @brief Interrupt status register */
  5175. union
  5176. {
  5177. __IOM uint32_t INTSTS;
  5178. struct
  5179. {
  5180. __IOM uint32_t EPID : 4;
  5181. __IOM uint32_t DOT : 1;
  5182. __IM uint32_t RESERVED1 : 3;
  5183. __IOM uint32_t ESOFFLG : 1;
  5184. __IOM uint32_t SOFFLG : 1;
  5185. __IOM uint32_t RSTREQ : 1;
  5186. __IOM uint32_t SUSREQ : 1;
  5187. __IOM uint32_t WUPREQ : 1;
  5188. __IOM uint32_t ERRFLG : 1;
  5189. __IOM uint32_t PMOFLG : 1;
  5190. __IOM uint32_t CTFLG : 1;
  5191. __IM uint32_t RESERVED2 : 16;
  5192. }INTSTS_B;
  5193. };
  5194. /** @brief Frame number register */
  5195. union
  5196. {
  5197. __IM uint32_t FRANUM;
  5198. struct
  5199. {
  5200. __IM uint32_t FRANUM : 11;
  5201. __IM uint32_t LSOFNUM : 2;
  5202. __IM uint32_t LOCK : 1;
  5203. __IM uint32_t RXDMSTS : 1;
  5204. __IM uint32_t RXDPSTS : 1;
  5205. __IM uint32_t RESERVED : 16;
  5206. }FRANUM_B;
  5207. };
  5208. /** @brief Device address register */
  5209. union
  5210. {
  5211. __IOM uint32_t ADDR;
  5212. struct
  5213. {
  5214. __IOM uint32_t ADDR : 7;
  5215. __IOM uint32_t USBDEN : 1;
  5216. __IM uint32_t RESERVED : 24;
  5217. }ADDR_B;
  5218. };
  5219. /** @brief Buffer table address register */
  5220. union
  5221. {
  5222. __IOM uint32_t BUFFTB;
  5223. struct
  5224. {
  5225. __IM uint32_t RESERVED1 : 3;
  5226. __IOM uint32_t BUFFTB : 13;
  5227. __IM uint32_t RESERVED2 : 16;
  5228. }BUFFTB_B;
  5229. };
  5230. __IM uint32_t RESERVED1[43];
  5231. /** @brief Buffer table address register */
  5232. union
  5233. {
  5234. __IOM uint32_t SWITCH;
  5235. struct
  5236. {
  5237. __IOM uint32_t SWITCH : 1;
  5238. __IM uint32_t RESERVED : 31;
  5239. }SWITCH_B;
  5240. };
  5241. }USBD_T;
  5242. /** FMC base address in the alias region */
  5243. #define FMC_BASE ((uint32_t)0x08000000)
  5244. /** SRAM base address in the alias region */
  5245. #define SRAM_BASE ((uint32_t)0x20000000)
  5246. /** Peripheral base address in the alias region */
  5247. #define PERIPH_BASE ((uint32_t)0x40000000)
  5248. /** SRAM base address in the bit-band region */
  5249. #define SRAM_BB_BASE ((uint32_t)0x22000000)
  5250. /** Peripheral base address in the bit-band region */
  5251. #define PERIPH_BB_BASE ((uint32_t)0x42000000)
  5252. /** EMMC registers base address */
  5253. #define EMMC_R_BASE ((uint32_t)0xA0000000)
  5254. /** QSPI registers base address */
  5255. #define QSPI_BASE ((uint32_t)0xA0000000)
  5256. /** DMC registers base address */
  5257. #define DMC_BASE ((uint32_t)0xA0000000)
  5258. /** Peripheral memory map */
  5259. #define APB1PERIPH_BASE PERIPH_BASE
  5260. #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
  5261. #define AHBPERIPH_BASE (PERIPH_BASE + 0x20000)
  5262. #define TMR2_BASE (APB1PERIPH_BASE + 0x0000)
  5263. #define TMR3_BASE (APB1PERIPH_BASE + 0x0400)
  5264. #define TMR4_BASE (APB1PERIPH_BASE + 0x0800)
  5265. #define TMR5_BASE (APB1PERIPH_BASE + 0x0C00)
  5266. #define TMR6_BASE (APB1PERIPH_BASE + 0x1000)
  5267. #define TMR7_BASE (APB1PERIPH_BASE + 0x1400)
  5268. #define TMR12_BASE (APB1PERIPH_BASE + 0x1800)
  5269. #define TMR13_BASE (APB1PERIPH_BASE + 0x1C00)
  5270. #define TMR14_BASE (APB1PERIPH_BASE + 0x2000)
  5271. #define RTC_BASE (APB1PERIPH_BASE + 0x2800)
  5272. #define WWDT_BASE (APB1PERIPH_BASE + 0x2C00)
  5273. #define IWDT_BASE (APB1PERIPH_BASE + 0x3000)
  5274. #define SPI2_BASE (APB1PERIPH_BASE + 0x3800)
  5275. #define SPI3_BASE (APB1PERIPH_BASE + 0x3C00)
  5276. #define USART2_BASE (APB1PERIPH_BASE + 0x4400)
  5277. #define USART3_BASE (APB1PERIPH_BASE + 0x4800)
  5278. #define UART4_BASE (APB1PERIPH_BASE + 0x4C00)
  5279. #define UART5_BASE (APB1PERIPH_BASE + 0x5000)
  5280. #define I2C1_BASE (APB1PERIPH_BASE + 0x5400)
  5281. #define I2C2_BASE (APB1PERIPH_BASE + 0x5800)
  5282. #define USBD_BASE (APB1PERIPH_BASE + 0X5C00)
  5283. #define CAN1_BASE (APB1PERIPH_BASE + 0x6400)
  5284. #define CAN2_BASE (APB1PERIPH_BASE + 0x6800)
  5285. #define BAKPR_BASE (APB1PERIPH_BASE + 0x6C00)
  5286. #define PMU_BASE (APB1PERIPH_BASE + 0x7000)
  5287. #define DAC_BASE (APB1PERIPH_BASE + 0x7400)
  5288. #define CEC_BASE (APB1PERIPH_BASE + 0x7800)
  5289. #define AFIO_BASE (APB2PERIPH_BASE + 0x0000)
  5290. #define EINT_BASE (APB2PERIPH_BASE + 0x0400)
  5291. #define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
  5292. #define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00)
  5293. #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
  5294. #define GPIOD_BASE (APB2PERIPH_BASE + 0x1400)
  5295. #define GPIOE_BASE (APB2PERIPH_BASE + 0x1800)
  5296. #define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00)
  5297. #define GPIOG_BASE (APB2PERIPH_BASE + 0x2000)
  5298. #define ADC1_BASE (APB2PERIPH_BASE + 0x2400)
  5299. #define ADC2_BASE (APB2PERIPH_BASE + 0x2800)
  5300. #define TMR1_BASE (APB2PERIPH_BASE + 0x2C00)
  5301. #define SPI1_BASE (APB2PERIPH_BASE + 0x3000)
  5302. #define TMR8_BASE (APB2PERIPH_BASE + 0x3400)
  5303. #define USART1_BASE (APB2PERIPH_BASE + 0x3800)
  5304. #define ADC3_BASE (APB2PERIPH_BASE + 0x3C00)
  5305. #define TMR15_BASE (APB2PERIPH_BASE + 0x4000)
  5306. #define TMR16_BASE (APB2PERIPH_BASE + 0x4400)
  5307. #define TMR17_BASE (APB2PERIPH_BASE + 0x4800)
  5308. #define TMR9_BASE (APB2PERIPH_BASE + 0x4C00)
  5309. #define TMR10_BASE (APB2PERIPH_BASE + 0x5000)
  5310. #define TMR11_BASE (APB2PERIPH_BASE + 0x5400)
  5311. #define SDIO_BASE (PERIPH_BASE + 0x18000)
  5312. #define DMA1_BASE (AHBPERIPH_BASE + 0x0000)
  5313. #define DMA1_Channel1_BASE (AHBPERIPH_BASE + 0x0008)
  5314. #define DMA1_Channel2_BASE (AHBPERIPH_BASE + 0x001C)
  5315. #define DMA1_Channel3_BASE (AHBPERIPH_BASE + 0x0030)
  5316. #define DMA1_Channel4_BASE (AHBPERIPH_BASE + 0x0044)
  5317. #define DMA1_Channel5_BASE (AHBPERIPH_BASE + 0x0058)
  5318. #define DMA1_Channel6_BASE (AHBPERIPH_BASE + 0x006C)
  5319. #define DMA1_Channel7_BASE (AHBPERIPH_BASE + 0x0080)
  5320. #define DMA2_BASE (AHBPERIPH_BASE + 0x0400)
  5321. #define DMA2_Channel1_BASE (AHBPERIPH_BASE + 0x0408)
  5322. #define DMA2_Channel2_BASE (AHBPERIPH_BASE + 0x041C)
  5323. #define DMA2_Channel3_BASE (AHBPERIPH_BASE + 0x0430)
  5324. #define DMA2_Channel4_BASE (AHBPERIPH_BASE + 0x0444)
  5325. #define DMA2_Channel5_BASE (AHBPERIPH_BASE + 0x0458)
  5326. #define RCM_BASE (AHBPERIPH_BASE + 0x1000)
  5327. #define CRC_BASE (AHBPERIPH_BASE + 0x3000)
  5328. /** FMC registers base address */
  5329. #define FMC_R_BASE (AHBPERIPH_BASE + 0x2000)
  5330. /** FMC Option Bytes base address */
  5331. #define OB_BASE ((uint32_t)0x1FFFF800)
  5332. /** EMMC Bank1 registers base address */
  5333. #define EMMC_Bank1_R_BASE (EMMC_R_BASE + 0x0000)
  5334. /** EMMC Bank1E registers base address */
  5335. #define EMMC_Bank1E_R_BASE (EMMC_R_BASE + 0x0104)
  5336. /** EMMC Bank2 registers base address */
  5337. #define EMMC_Bank2_R_BASE (EMMC_R_BASE + 0x0060)
  5338. /** EMMC Bank3 registers base address */
  5339. #define EMMC_Bank3_R_BASE (EMMC_R_BASE + 0x0080)
  5340. /**EMMC Bank4 registers base address */
  5341. #define EMMC_Bank4_R_BASE (EMMC_R_BASE + 0x00A0)
  5342. /** Debug MCU registers base address */
  5343. #define DBGMCU_BASE ((uint32_t)0xE0042000)
  5344. #define CRC ((CRC_T *) CRC_BASE)
  5345. #define RTC ((RTC_T *) RTC_BASE)
  5346. #define PMU ((PMU_T *) PMU_BASE)
  5347. #define BAKPR ((BAKPR_T *) BAKPR_BASE)
  5348. #define TMR1 ((TMR_T *) TMR1_BASE)
  5349. #define TMR2 ((TMR_T *) TMR2_BASE)
  5350. #define TMR3 ((TMR_T *) TMR3_BASE)
  5351. #define TMR4 ((TMR_T *) TMR4_BASE)
  5352. #define TMR5 ((TMR_T *) TMR5_BASE)
  5353. #define TMR6 ((TMR_T *) TMR6_BASE)
  5354. #define TMR7 ((TMR_T *) TMR7_BASE)
  5355. #define TMR8 ((TMR_T *) TMR8_BASE)
  5356. #define TMR9 ((TMR_T *) TMR9_BASE)
  5357. #define TMR10 ((TMR_T *) TMR10_BASE)
  5358. #define TMR11 ((TMR_T *) TMR11_BASE)
  5359. #define TMR12 ((TMR_T *) TMR12_BASE)
  5360. #define TMR13 ((TMR_T *) TMR13_BASE)
  5361. #define TMR14 ((TMR_T *) TMR14_BASE)
  5362. #define TMR15 ((TMR_T *) TMR15_BASE)
  5363. #define TMR16 ((TMR_T *) TMR16_BASE)
  5364. #define TMR17 ((TMR_T *) TMR17_BASE)
  5365. #define DMA1 ((DMA_T *) DMA1_BASE)
  5366. #define DMA2 ((DMA_T *) DMA2_BASE)
  5367. #define DMA1_Channel1 ((DMA_Channel_T *) DMA1_Channel1_BASE)
  5368. #define DMA1_Channel2 ((DMA_Channel_T *) DMA1_Channel2_BASE)
  5369. #define DMA1_Channel3 ((DMA_Channel_T *) DMA1_Channel3_BASE)
  5370. #define DMA1_Channel4 ((DMA_Channel_T *) DMA1_Channel4_BASE)
  5371. #define DMA1_Channel5 ((DMA_Channel_T *) DMA1_Channel5_BASE)
  5372. #define DMA1_Channel6 ((DMA_Channel_T *) DMA1_Channel6_BASE)
  5373. #define DMA1_Channel7 ((DMA_Channel_T *) DMA1_Channel7_BASE)
  5374. #define DMA2_Channel1 ((DMA_Channel_T *) DMA2_Channel1_BASE)
  5375. #define DMA2_Channel2 ((DMA_Channel_T *) DMA2_Channel2_BASE)
  5376. #define DMA2_Channel3 ((DMA_Channel_T *) DMA2_Channel3_BASE)
  5377. #define DMA2_Channel4 ((DMA_Channel_T *) DMA2_Channel4_BASE)
  5378. #define DMA2_Channel5 ((DMA_Channel_T *) DMA2_Channel5_BASE)
  5379. #define CAN1 ((CAN_T *) CAN1_BASE)
  5380. #define CAN2 ((CAN_T *) CAN2_BASE)
  5381. #define I2C1 ((I2C_T *) I2C1_BASE)
  5382. #define I2C2 ((I2C_T *) I2C2_BASE)
  5383. #define OB ((OB_T *) OB_BASE)
  5384. #define ADC1 ((ADC_T *) ADC1_BASE)
  5385. #define ADC2 ((ADC_T *) ADC2_BASE)
  5386. #define ADC3 ((ADC_T *) ADC3_BASE)
  5387. #define EINT ((EINT_T *) EINT_BASE)
  5388. #define IWDT ((IWDT_T *) IWDT_BASE)
  5389. #define SDIO ((SDIO_T *) SDIO_BASE)
  5390. #define DAC ((DAC_T *) DAC_BASE)
  5391. #define SPI1 ((SPI_T *) SPI1_BASE)
  5392. #define SPI2 ((SPI_T *) SPI2_BASE)
  5393. #define SPI3 ((SPI_T *) SPI3_BASE)
  5394. #define WWDT ((WWDT_T *) WWDT_BASE)
  5395. #define USART2 ((USART_T *) USART2_BASE)
  5396. #define USART3 ((USART_T *) USART3_BASE)
  5397. #define UART4 ((USART_T *) UART4_BASE)
  5398. #define UART5 ((USART_T *) UART5_BASE)
  5399. #define AFIO ((AFIO_T *) AFIO_BASE)
  5400. #define GPIOA ((GPIO_T *) GPIOA_BASE)
  5401. #define GPIOB ((GPIO_T *) GPIOB_BASE)
  5402. #define GPIOC ((GPIO_T *) GPIOC_BASE)
  5403. #define GPIOD ((GPIO_T *) GPIOD_BASE)
  5404. #define GPIOE ((GPIO_T *) GPIOE_BASE)
  5405. #define GPIOF ((GPIO_T *) GPIOF_BASE)
  5406. #define GPIOG ((GPIO_T *) GPIOG_BASE)
  5407. #define USART1 ((USART_T *) USART1_BASE)
  5408. #define RCM ((RCM_T *) RCM_BASE)
  5409. #define FMC ((FMC_T *) FMC_R_BASE)
  5410. #define USBD ((USBD_T *)USBD_BASE)
  5411. #define EMMC_Bank1 ((EMMC_Bank1_T *) EMMC_Bank1_R_BASE)
  5412. #define EMMC_Bank1E ((EMMC_Bank1E_T *)EMMC_Bank1E_R_BASE)
  5413. #define EMMC_Bank2 ((EMMC_Bank2_T *) EMMC_Bank2_R_BASE)
  5414. #define EMMC_Bank3 ((EMMC_Bank3_T *) EMMC_Bank3_R_BASE)
  5415. #define EMMC_Bank4 ((EMMC_Bank4_T *) EMMC_Bank4_R_BASE)
  5416. #define DBGMCU ((DBGMCU_T *) DBGMCU_BASE)
  5417. #define I2C3 ((SCI2C_T *)(I2C1_BASE))
  5418. #define I2C4 ((SCI2C_T *)(I2C2_BASE))
  5419. #if defined (APM32F10X_MD) || defined (APM32F10X_LD)
  5420. #define QSPI ((QSPI_T *)QSPI_BASE)
  5421. #elif defined (APM32F10X_HD)
  5422. #define DMC ((DMC_T *)DMC_BASE)
  5423. #endif
  5424. /* Define one bit mask */
  5425. #define BIT0 ((uint32_t)0x00000001)
  5426. #define BIT1 ((uint32_t)0x00000002)
  5427. #define BIT2 ((uint32_t)0x00000004)
  5428. #define BIT3 ((uint32_t)0x00000008)
  5429. #define BIT4 ((uint32_t)0x00000010)
  5430. #define BIT5 ((uint32_t)0x00000020)
  5431. #define BIT6 ((uint32_t)0x00000040)
  5432. #define BIT7 ((uint32_t)0x00000080)
  5433. #define BIT8 ((uint32_t)0x00000100)
  5434. #define BIT9 ((uint32_t)0x00000200)
  5435. #define BIT10 ((uint32_t)0x00000400)
  5436. #define BIT11 ((uint32_t)0x00000800)
  5437. #define BIT12 ((uint32_t)0x00001000)
  5438. #define BIT13 ((uint32_t)0x00002000)
  5439. #define BIT14 ((uint32_t)0x00004000)
  5440. #define BIT15 ((uint32_t)0x00008000)
  5441. #define BIT16 ((uint32_t)0x00010000)
  5442. #define BIT17 ((uint32_t)0x00020000)
  5443. #define BIT18 ((uint32_t)0x00040000)
  5444. #define BIT19 ((uint32_t)0x00080000)
  5445. #define BIT20 ((uint32_t)0x00100000)
  5446. #define BIT21 ((uint32_t)0x00200000)
  5447. #define BIT22 ((uint32_t)0x00400000)
  5448. #define BIT23 ((uint32_t)0x00800000)
  5449. #define BIT24 ((uint32_t)0x01000000)
  5450. #define BIT25 ((uint32_t)0x02000000)
  5451. #define BIT26 ((uint32_t)0x04000000)
  5452. #define BIT27 ((uint32_t)0x08000000)
  5453. #define BIT28 ((uint32_t)0x10000000)
  5454. #define BIT29 ((uint32_t)0x20000000)
  5455. #define BIT30 ((uint32_t)0x40000000)
  5456. #define BIT31 ((uint32_t)0x80000000)
  5457. #define SET_BIT(REG, BIT) ((REG) |= (BIT))
  5458. #define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
  5459. #define READ_BIT(REG, BIT) ((REG) & (BIT))
  5460. #define CLEAR_REG(REG) ((REG) = (0x0))
  5461. #define WRITE_REG(REG, VAL) ((REG) = (VAL))
  5462. #define READ_REG(REG) ((REG))
  5463. #define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
  5464. #ifdef __cplusplus
  5465. }
  5466. #endif
  5467. #endif /* __APM32F10x_H */