apm32f0xx.h 161 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662
  1. /*!
  2. * @file apm32f0xx.h
  3. *
  4. * @brief CMSIS Cortex-M0 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.3
  9. *
  10. * @date 2022-09-20
  11. *
  12. * @attention
  13. *
  14. * Copyright (C) 2020-2022 Geehy Semiconductor
  15. *
  16. * You may not use this file except in compliance with the
  17. * GEEHY COPYRIGHT NOTICE (GEEHY SOFTWARE PACKAGE LICENSE).
  18. *
  19. * The program is only for reference, which is distributed in the hope
  20. * that it will be useful and instructional for customers to develop
  21. * their software. Unless required by applicable law or agreed to in
  22. * writing, the program is distributed on an "AS IS" BASIS, WITHOUT
  23. * ANY WARRANTY OR CONDITIONS OF ANY KIND, either express or implied.
  24. * See the GEEHY SOFTWARE PACKAGE LICENSE for the governing permissions
  25. * and limitations under the License.
  26. */
  27. /* Define to prevent recursive inclusion */
  28. #ifndef __APM32F0XX_H
  29. #define __APM32F0XX_H
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif /* __cplusplus */
  33. /** @addtogroup CMSIS
  34. @{
  35. */
  36. /** @addtogroup APM32F0xx
  37. * @brief Peripheral Access Layer
  38. @{
  39. */
  40. #if defined (APM32F030x6) || defined (APM32F030x8) || defined (APM32F030xC)
  41. #define APM32F030
  42. #endif /*!< APM32F030x6 or APM32F030x8 or APM32F030xC */
  43. #if defined (APM32F051x6) || defined (APM32F051x8)
  44. #define APM32F051
  45. #endif /*!< APM32F051x6 or APM32F051x8 */
  46. #if defined (APM32F070xB)
  47. #define APM32F070
  48. #endif /*!< APM32F070xB */
  49. #if defined (APM32F071x8) || defined (APM32F071xB)
  50. #define APM32F071
  51. #endif /*!< APM32F071x8 or APM32F071xB */
  52. #if defined (APM32F072x8) || defined (APM32F072xB)
  53. #define APM32F072
  54. #endif /*!< APM32F072x8 or APM32F072xB */
  55. #if defined (APM32F091xB) || defined (APM32F091xC)
  56. #define APM32F091
  57. #endif /*!< APM32F091xB or APM32F091xC */
  58. #if !defined (APM32F030) && !defined (APM32F051) && !defined (APM32F070) && \
  59. !defined (APM32F071) && !defined (APM32F072) && !defined (APM32F091)
  60. #error "Please select first the target APM32F0xx device used in your application (in apm32f0xx.h file)"
  61. #endif
  62. /** @defgroup HSE_Macros
  63. @{
  64. */
  65. /**
  66. * @brief Define Value of the External oscillator in Hz
  67. */
  68. #ifndef HSE_VALUE
  69. #define HSE_VALUE ((uint32_t)8000000)
  70. #endif
  71. /* Time out for HSE start up */
  72. #define HSE_STARTUP_TIMEOUT ((uint32_t)0x10000)
  73. /* Time out for HSI start up */
  74. #define HSI_STARTUP_TIMEOUT ((uint32_t)0x0500)
  75. /* Value of the Internal oscillator in Hz */
  76. #define HSI_VALUE ((uint32_t)8000000)
  77. #define HSI14_VALUE ((uint32_t)14000000)
  78. #define HSI48_VALUE ((uint32_t)48000000)
  79. #define LSE_VALUE ((uint32_t)32768)
  80. #define LSI_VALUE ((uint32_t)40000)
  81. /**@} end of group HSE_Macros */
  82. /** @defgroup APM32F0xx_StdPeripheral_Library_Version
  83. @{
  84. */
  85. /*!< [31:16] APM32F0XX Standard Peripheral Library main version V1.0.3*/
  86. #define __APM32F0_DEVICE_VERSION_MAIN (0x01) /*!< [31:24] main version */
  87. #define __APM32F0_DEVICE_VERSION_SUB1 (0x00) /*!< [23:16] sub1 version */
  88. #define __APM32F0_DEVICE_VERSION_SUB2 (0x03) /*!< [15:8] sub2 version */
  89. #define __APM32F0_DEVICE_VERSION_RC (0x00) /*!< [7:0] release candidate */
  90. #define __APM32F0_DEVICE_VERSION ((__APM32F0_DEVICE_VERSION_MAIN << 24)\
  91. |(__APM32F0_DEVICE_VERSION_SUB1 << 16)\
  92. |(__APM32F0_DEVICE_VERSION_SUB2 << 8 )\
  93. |(__APM32F0_DEVICE_VERSION_RC))
  94. /**@} end of group APM32F0xx_StdPeripheral_Library_Version */
  95. /** @defgroup Configuraion_for_CMSIS
  96. @{
  97. */
  98. /* Core Revision r0p1 */
  99. #define __CM0PLUS_REV 0
  100. /* APM32F0xx do not provide MPU */
  101. #define __MPU_PRESENT 0
  102. /* APM32F0xx uses 2 Bits for the Priority Levels */
  103. #define __NVIC_PRIO_BITS 2
  104. /* Set to 1 if different SysTick Config is used */
  105. #define __Vendor_SysTickConfig 0
  106. /* Set to 1 if different Vector Table Offset is used */
  107. #define __VTOR_PRESENT 1
  108. /**
  109. * @brief Interrupt Number Definition
  110. */
  111. typedef enum
  112. {
  113. /* Cortex-M0 Processor Exceptions Numbers */
  114. NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
  115. HardFault_IRQn = -13, /*!< 3 Cortex-M0 Hard Fault Interrupt */
  116. SVC_IRQn = -5, /*!< 11 Cortex-M0 SV Call Interrupt */
  117. PendSV_IRQn = -2, /*!< 14 Cortex-M0 Pend SV Interrupt */
  118. SysTick_IRQn = -1, /*!< 15 Cortex-M0 System Tick Interrupt */
  119. #if defined (APM32F030)
  120. /* APM32F030 specific Interrupt Numbers */
  121. WWDT_IRQn = 0, /*!< Window WatchDog Interrupt */
  122. RTC_IRQn = 2, /*!< RTC Interrupt through EINT Lines 17, 19 and 20 */
  123. FLASH_IRQn = 3, /*!< FLASH global Interrupt */
  124. RCM_IRQn = 4, /*!< RCM global Interrupt */
  125. EINT0_1_IRQn = 5, /*!< EINT Line 0 and 1 Interrupt */
  126. EINT2_3_IRQn = 6, /*!< EINT Line 2 and 3 Interrupt */
  127. EINT4_15_IRQn = 7, /*!< EINT Line 4 to 15 Interrupt */
  128. DMA1_CH1_IRQn = 9, /*!< DMA1 Channel 1 Interrupt */
  129. DMA1_CH2_3_IRQn = 10, /*!< DMA1 Channel 2 and Channel 3 Interrupt */
  130. DMA1_CH4_5_IRQn = 11, /*!< DMA1 Channel 4 and Channel 5 Interrupt */
  131. ADC1_IRQn = 12, /*!< ADC1 Interrupt */
  132. TMR1_BRK_UP_TRG_COM_IRQn = 13, /*!< TMR1 Break, Update, Trigger and Commutation Interrupt */
  133. TMR1_CC_IRQn = 14, /*!< TMR1 Capture Compare Interrupt */
  134. TMR3_IRQn = 16, /*!< TMR3 global Interrupt */
  135. TMR6_IRQn = 17, /*!< TMR6 global Interrupt */
  136. TMR7_IRQn = 18, /*!< TMR7 global Interrupt */
  137. TMR14_IRQn = 19, /*!< TMR14 global Interrupt */
  138. TMR15_IRQn = 20, /*!< TMR15 global Interrupt */
  139. TMR16_IRQn = 21, /*!< TMR16 global Interrupt */
  140. TMR17_IRQn = 22, /*!< TMR17 global Interrupt */
  141. I2C1_IRQn = 23, /*!< I2C1 Event Interrupt */
  142. I2C2_IRQn = 24, /*!< I2C2 Event Interrupt */
  143. SPI1_IRQn = 25, /*!< SPI1 global Interrupt */
  144. SPI2_IRQn = 26, /*!< SPI2 global Interrupt */
  145. USART1_IRQn = 27, /*!< USART1 global Interrupt */
  146. USART2_IRQn = 28, /*!< USART2 global Interrupt */
  147. USART3_6_IRQn = 29 /*!< USART3 to USART6 global Interrupt */
  148. #elif defined (APM32F051)
  149. /* APM32F051 specific Interrupt Numbers */
  150. WWDT_IRQn = 0, /*!< Window WatchDog Interrupt */
  151. PVD_IRQn = 1, /*!< PVD through EXTI Line detect Interrupt */
  152. RTC_IRQn = 2, /*!< RTC Interrupt through EINT Lines 17, 19 and 20 */
  153. FLASH_IRQn = 3, /*!< FLASH global Interrupt */
  154. RCM_IRQn = 4, /*!< RCM global Interrupt */
  155. EINT0_1_IRQn = 5, /*!< EINT Line 0 and 1 Interrupt */
  156. EINT2_3_IRQn = 6, /*!< EINT Line 2 and 3 Interrupt */
  157. EINT4_15_IRQn = 7, /*!< EINT Line 4 to 15 Interrupt */
  158. TSC_IRQn = 8, /*!< TSC Interrupt */
  159. DMA1_CH1_IRQn = 9, /*!< DMA1 Channel 1 Interrupt */
  160. DMA1_CH2_3_IRQn = 10, /*!< DMA1 Channel 2 and Channel 3 Interrupt */
  161. DMA1_CH4_5_IRQn = 11, /*!< DMA1 Channel 4 and Channel 5 Interrupt */
  162. ADC1_COMP_IRQn = 12, /*!< ADC1 and comparator Interrupt */
  163. TMR1_BRK_UP_TRG_COM_IRQn = 13, /*!< TMR1 Break, Update, Trigger and Commutation Interrupt */
  164. TMR1_CC_IRQn = 14, /*!< TMR1 Capture Compare Interrupt */
  165. TMR2_IRQn = 15, /*!< TMR2 global Interrupt */
  166. TMR3_IRQn = 16, /*!< TMR3 global Interrupt */
  167. TMR6_DAC_IRQn = 17, /*!< TMR6 and DAC Interrupt */
  168. TMR14_IRQn = 19, /*!< TMR14 global Interrupt */
  169. TMR15_IRQn = 20, /*!< TMR15 global Interrupt */
  170. TMR16_IRQn = 21, /*!< TMR16 global Interrupt */
  171. TMR17_IRQn = 22, /*!< TMR17 global Interrupt */
  172. I2C1_IRQn = 23, /*!< I2C1 Event Interrupt */
  173. I2C2_IRQn = 24, /*!< I2C2 Event Interrupt */
  174. SPI1_IRQn = 25, /*!< SPI1 global Interrupt */
  175. SPI2_IRQn = 26, /*!< SPI2 global Interrupt */
  176. USART1_IRQn = 27, /*!< USART1 global Interrupt */
  177. USART2_IRQn = 28, /*!< USART2 global Interrupt */
  178. CEC_IRQn = 30 /*!< CEC global Interrupt */
  179. #elif defined (APM32F070)
  180. /* APM32F070 specific Interrupt Numbers */
  181. WWDT_IRQn = 0, /*!< Window WatchDog Interrupt */
  182. RTC_IRQn = 2, /*!< RTC Interrupt through EINT Lines */
  183. FLASH_IRQn = 3, /*!< FLASH global Interrupt */
  184. RCM_IRQn = 4, /*!< RCM global Interrupt */
  185. EINT0_1_IRQn = 5, /*!< EINT Line 0 and 1 Interrupt */
  186. EINT2_3_IRQn = 6, /*!< EINT Line 2 and 3 Interrupt */
  187. EINT4_15_IRQn = 7, /*!< EINT Line 4 to 15 Interrupt */
  188. DMA1_CH1_IRQn = 9, /*!< DMA1 Channel 1 Interrupt */
  189. DMA1_CH2_3_IRQn = 10, /*!< DMA1 Channel 2 and Channel 3 Interrupts */
  190. DMA1_CH4_5_IRQn = 11, /*!< DMA1 Channel 4, Channel 5 Interrupts */
  191. ADC1_IRQn = 12, /*!< ADC1 Interrupt */
  192. TMR1_BRK_UP_TRG_COM_IRQn = 13, /*!< TMR1 Break, Update, Trigger and Commutation Interrupt */
  193. TMR1_CC_IRQn = 14, /*!< TMR1 Capture Compare Interrupt */
  194. TMR3_IRQn = 16, /*!< TMR3 global Interrupt */
  195. TMR6_IRQn = 17, /*!< TMR6 global Interrupt */
  196. TMR7_IRQn = 18, /*!< TMR7 global Interrupt */
  197. TMR14_IRQn = 19, /*!< TMR14 global Interrupt */
  198. TMR15_IRQn = 20, /*!< TMR15 global Interrupt */
  199. TMR16_IRQn = 21, /*!< TMR16 global Interrupt */
  200. TMR17_IRQn = 22, /*!< TMR17 global Interrupt */
  201. I2C1_IRQn = 23, /*!< I2C1 Event Interrupt */
  202. I2C2_IRQn = 24, /*!< I2C2 Event Interrupt */
  203. SPI1_IRQn = 25, /*!< SPI1 global Interrupt */
  204. SPI2_IRQn = 26, /*!< SPI2 global Interrupt */
  205. USART1_IRQn = 27, /*!< USART1 global Interrupt */
  206. USART2_IRQn = 28, /*!< USART2 global Interrupt */
  207. USART3_4_IRQn = 29, /*!< USART3 and USART4 global Interrupt */
  208. USBD_IRQn = 31 /*!< USB Low Priority global Interrupt */
  209. #elif defined (APM32F071)
  210. /* APM32F071 specific Interrupt Numbers */
  211. WWDT_IRQn = 0, /*!< Window WatchDog Interrupt */
  212. PVD_VDDIO2_IRQn = 1, /*!< PVD and VDDIO2 Interrupt */
  213. RTC_IRQn = 2, /*!< RTC Interrupt through EINT Lines */
  214. FLASH_IRQn = 3, /*!< FLASH global Interrupt */
  215. RCM_CRS_IRQn = 4, /*!< RCM and CRS global Interrupt */
  216. EINT0_1_IRQn = 5, /*!< EINT Line 0 and 1 Interrupt */
  217. EINT2_3_IRQn = 6, /*!< EINT Line 2 and 3 Interrupt */
  218. EINT4_15_IRQn = 7, /*!< EINT Line 4 to 15 Interrupt */
  219. TSC_IRQn = 8, /*!< TSC Interrupt */
  220. DMA1_CH1_IRQn = 9, /*!< DMA1 Channel 1 Interrupt */
  221. DMA1_CH2_3_IRQn = 10, /*!< DMA1 Channel 2 and Channel 3 Interrupts */
  222. DMA1_CH4_5_6_7_IRQn = 11, /*!< DMA1 Channel 4, Channel 5, Channel 6 and Channel 7 Interrupts */
  223. ADC1_COMP_IRQn = 12, /*!< ADC1 and comparator Interrupt */
  224. TMR1_BRK_UP_TRG_COM_IRQn = 13, /*!< TMR1 Break, Update, Trigger and Commutation Interrupt */
  225. TMR1_CC_IRQn = 14, /*!< TMR1 Capture Compare Interrupt */
  226. TMR2_IRQn = 15, /*!< TMR2 global Interrupt */
  227. TMR3_IRQn = 16, /*!< TMR3 global Interrupt */
  228. TMR6_DAC_IRQn = 17, /*!< TMR6 and DAC Interrupt */
  229. TMR7_IRQn = 18, /*!< TMR7 global Interrupt */
  230. TMR14_IRQn = 19, /*!< TMR14 global Interrupt */
  231. TMR15_IRQn = 20, /*!< TMR15 global Interrupt */
  232. TMR16_IRQn = 21, /*!< TMR16 global Interrupt */
  233. TMR17_IRQn = 22, /*!< TMR17 global Interrupt */
  234. I2C1_IRQn = 23, /*!< I2C1 Event Interrupt */
  235. I2C2_IRQn = 24, /*!< I2C2 Event Interrupt */
  236. SPI1_IRQn = 25, /*!< SPI1 global Interrupt */
  237. SPI2_IRQn = 26, /*!< SPI2 global Interrupt */
  238. USART1_IRQn = 27, /*!< USART1 global Interrupt */
  239. USART2_IRQn = 28, /*!< USART2 global Interrupt */
  240. USART3_4_IRQn = 29, /*!< USART3 and USART4 global Interrupt */
  241. CEC_IRQn = 30 /*!< CEC global Interrupt */
  242. #elif defined (APM32F072)
  243. /* APM32F072 specific Interrupt Numbers */
  244. WWDT_IRQn = 0, /*!< Window WatchDog Interrupt */
  245. PVD_VDDIO2_IRQn = 1, /*!< PVD and VDDIO2 Interrupt */
  246. RTC_IRQn = 2, /*!< RTC Interrupt through EINT Lines 17, 19 and 20 */
  247. FLASH_IRQn = 3, /*!< FLASH global Interrupt */
  248. RCM_CRS_IRQn = 4, /*!< RCM and CRS global Interrupt */
  249. EINT0_1_IRQn = 5, /*!< EINT Line 0 and 1 Interrupt */
  250. EINT2_3_IRQn = 6, /*!< EINT Line 2 and 3 Interrupt */
  251. EINT4_15_IRQn = 7, /*!< EINT Line 4 to 15 Interrupt */
  252. TSC_IRQn = 8, /*!< TSC Interrupt */
  253. DMA1_CH1_IRQn = 9, /*!< DMA1 Channel 1 Interrupt */
  254. DMA1_CH2_3_IRQn = 10, /*!< DMA1 Channel 2 and Channel 3 Interrupts */
  255. DMA1_CH4_5_6_7_IRQn = 11, /*!< DMA1 Channel 4, Channel 5, Channel 6 and Channel 7 Interrupts */
  256. ADC1_COMP_IRQn = 12, /*!< ADC1 and comparator Interrupt */
  257. TMR1_BRK_UP_TRG_COM_IRQn = 13, /*!< TMR1 Break, Update, Trigger and Commutation Interrupt */
  258. TMR1_CC_IRQn = 14, /*!< TMR1 Capture Compare Interrupt */
  259. TMR2_IRQn = 15, /*!< TMR2 global Interrupt */
  260. TMR3_IRQn = 16, /*!< TMR3 global Interrupt */
  261. TMR6_DAC_IRQn = 17, /*!< TMR6 and DAC Interrupt */
  262. TMR7_IRQn = 18, /*!< TMR7 global Interrupt */
  263. TMR14_IRQn = 19, /*!< TMR14 global Interrupt */
  264. TMR15_IRQn = 20, /*!< TMR15 global Interrupt */
  265. TMR16_IRQn = 21, /*!< TMR16 global Interrupt */
  266. TMR17_IRQn = 22, /*!< TMR17 global Interrupt */
  267. I2C1_IRQn = 23, /*!< I2C1 Event Interrupt */
  268. I2C2_IRQn = 24, /*!< I2C2 Event Interrupt */
  269. SPI1_IRQn = 25, /*!< SPI1 global Interrupt */
  270. SPI2_IRQn = 26, /*!< SPI2 global Interrupt */
  271. USART1_IRQn = 27, /*!< USART1 global Interrupt */
  272. USART2_IRQn = 28, /*!< USART2 global Interrupt */
  273. USART3_4_IRQn = 29, /*!< USART3 and USART4 global Interrupt */
  274. CEC_CAN_IRQn = 30, /*!< CEC and CAN global Interrupt */
  275. USBD_IRQn = 31 /*!< USB Low Priority global Interrupt */
  276. #elif defined (APM32F091)
  277. /* APM32F091 specific Interrupt Numbers */
  278. WWDT_IRQn = 0, /*!< Window WatchDog Interrupt */
  279. PVD_VDDIO2_IRQn = 1, /*!< PVD and VDDIO2 Interrupt */
  280. RTC_IRQn = 2, /*!< RTC Interrupt through EINT Lines 17, 19 and 20 */
  281. FLASH_IRQn = 3, /*!< FLASH global Interrupt */
  282. RCM_CRS_IRQn = 4, /*!< RCM and CRS global Interrupt */
  283. EINT0_1_IRQn = 5, /*!< EINT Line 0 and 1 Interrupt */
  284. EINT2_3_IRQn = 6, /*!< EINT Line 2 and 3 Interrupt */
  285. EINT4_15_IRQn = 7, /*!< EINT Line 4 to 15 Interrupt */
  286. TSC_IRQn = 8, /*!< TSC Interrupt */
  287. DMA1_CH1_IRQn = 9, /*!< DMA1 Channel 1 Interrupt */
  288. DMA1_CH2_3_DMA2_CH1_2_IRQn = 10, /*!< DMA1 Channel 2 and 3 DMA2 Channel 1 and 2 Interrupts */
  289. DMA1_CH4_7_DMA2_CH3_5_IRQn = 11, /*!< DMA1 Channel 4 to 7 DMA2 Channel 3 to 5 Interrupts */
  290. ADC1_COMP_IRQn = 12, /*!< ADC1 and comparator Interrupt */
  291. TMR1_BRK_UP_TRG_COM_IRQn = 13, /*!< TMR1 Break, Update, Trigger and Commutation Interrupt */
  292. TMR1_CC_IRQn = 14, /*!< TMR1 Capture Compare Interrupt */
  293. TMR2_IRQn = 15, /*!< TMR2 global Interrupt */
  294. TMR3_IRQn = 16, /*!< TMR3 global Interrupt */
  295. TMR6_DAC_IRQn = 17, /*!< TMR6 and DAC Interrupt */
  296. TMR7_IRQn = 18, /*!< TMR7 global Interrupt */
  297. TMR14_IRQn = 19, /*!< TMR14 global Interrupt */
  298. TMR15_IRQn = 20, /*!< TMR15 global Interrupt */
  299. TMR16_IRQn = 21, /*!< TMR16 global Interrupt */
  300. TMR17_IRQn = 22, /*!< TMR17 global Interrupt */
  301. I2C1_IRQn = 23, /*!< I2C1 Event Interrupt */
  302. I2C2_IRQn = 24, /*!< I2C2 Event Interrupt */
  303. SPI1_IRQn = 25, /*!< SPI1 global Interrupt */
  304. SPI2_IRQn = 26, /*!< SPI2 global Interrupt */
  305. USART1_IRQn = 27, /*!< USART1 global Interrupt */
  306. USART2_IRQn = 28, /*!< USART2 global Interrupt */
  307. USART3_8_IRQn = 29, /*!< USART3 and USART8 global Interrupt */
  308. CEC_CAN_IRQn = 30 /*!< CEC and CAN global Interrupt */
  309. #endif
  310. } IRQn_Type;
  311. /**@} end of group Configuraion_for_CMSIS */
  312. /* Includes */
  313. #include "core_cm0plus.h" /*!< Cortex-M0+ processor and core peripherals */
  314. #include "system_apm32f0xx.h" /*!< APM32F0xx System Header */
  315. #include <stdint.h>
  316. /** @defgroup Exported_types
  317. * @{
  318. */
  319. typedef enum {FALSE, TRUE} BOOL;
  320. enum {BIT_RESET, BIT_SET};
  321. enum {RESET = 0, SET = !RESET};
  322. enum {DISABLE = 0, ENABLE = !DISABLE};
  323. enum {ERROR = 0, SUCCESS = !ERROR};
  324. #ifndef __IM
  325. #define __IM __I
  326. #endif
  327. #ifndef __OM
  328. #define __OM __O
  329. #endif
  330. #ifndef __IOM
  331. #define __IOM __IO
  332. #endif
  333. #ifndef NULL
  334. #define NULL ((void *)0)
  335. #endif
  336. #if defined (__CC_ARM )
  337. #pragma anon_unions
  338. #endif
  339. /**@} end of group Exported_types */
  340. /** @defgroup Peripheral_registers_structures
  341. @{
  342. */
  343. /**
  344. * @brief Analog-to-digital converter (ADC)
  345. */
  346. typedef struct
  347. {
  348. /* interrupt and status register */
  349. union
  350. {
  351. __IOM uint32_t STS;
  352. struct
  353. {
  354. __IOM uint32_t ADCRDYFLG : 1;
  355. __IOM uint32_t EOSMPFLG : 1;
  356. __IOM uint32_t EOCFLG : 1;
  357. __IOM uint32_t EOSEQFLG : 1;
  358. __IOM uint32_t OVREFLG : 1;
  359. __IM uint32_t RESERVED1 : 2;
  360. __IOM uint32_t AWDFLG : 1;
  361. __IM uint32_t RESERVED2 : 24;
  362. } STS_B;
  363. } ;
  364. /* interrupt enable register */
  365. union
  366. {
  367. __IOM uint32_t INT;
  368. struct
  369. {
  370. __IOM uint32_t ADCRDYIEN : 1;
  371. __IOM uint32_t EOSMPIEN : 1;
  372. __IOM uint32_t EOCIEN : 1;
  373. __IOM uint32_t EOSEQIEN : 1;
  374. __IOM uint32_t OVRIEN : 1;
  375. __IM uint32_t RESERVED1 : 2;
  376. __IOM uint32_t AWDIEN : 1;
  377. __IM uint32_t RESERVED2 : 24;
  378. } INT_B;
  379. } ;
  380. /* control register */
  381. union
  382. {
  383. __IOM uint32_t CTRL;
  384. struct
  385. {
  386. __IOM uint32_t ADCEN : 1;
  387. __IOM uint32_t ADCD : 1;
  388. __IOM uint32_t STARTCEN : 1;
  389. __IM uint32_t RESERVED1 : 1;
  390. __IOM uint32_t STOPCEN : 1;
  391. __IM uint32_t RESERVED2 : 26;
  392. __IOM uint32_t CAL : 1;
  393. } CTRL_B;
  394. } ;
  395. /* configuration register 1 */
  396. union
  397. {
  398. __IOM uint32_t CFG1;
  399. struct
  400. {
  401. __IOM uint32_t DMAEN : 1;
  402. __IOM uint32_t DMACFG : 1;
  403. __IOM uint32_t SCANSEQDIR : 1;
  404. __IOM uint32_t DATARESCFG : 2;
  405. __IOM uint32_t DALIGCFG : 1;
  406. __IOM uint32_t EXTTRGSEL : 3;
  407. __IM uint32_t RESERVED1 : 1;
  408. __IOM uint32_t EXTPOLSEL : 2;
  409. __IOM uint32_t OVRMAG : 1;
  410. __IOM uint32_t CMODESEL : 1;
  411. __IOM uint32_t WAITCEN : 1;
  412. __IOM uint32_t AOEN : 1;
  413. __IOM uint32_t DISCEN : 1;
  414. __IM uint32_t RESERVED2 : 5;
  415. __IOM uint32_t AWDCHEN : 1;
  416. __IOM uint32_t AWDEN : 1;
  417. __IM uint32_t RESERVED3 : 2;
  418. __IOM uint32_t AWDCHSEL : 5;
  419. __IM uint32_t RESERVED4 : 1;
  420. } CFG1_B;
  421. } ;
  422. /* configuration register 2 */
  423. union
  424. {
  425. __IOM uint32_t CFG2;
  426. struct
  427. {
  428. __IM uint32_t RESERVED1 : 30;
  429. __IOM uint32_t CLKCFG : 2;
  430. } CFG2_B;
  431. } ;
  432. /* sampling time register */
  433. union
  434. {
  435. __IOM uint32_t SMPTIM;
  436. struct
  437. {
  438. __IOM uint32_t SMPCYCSEL : 3;
  439. __IM uint32_t RESERVED1 : 29;
  440. } SMPTIM_B;
  441. } ;
  442. __IM uint32_t RESERVED[2];
  443. /* watchdog threshold register */
  444. union
  445. {
  446. __IOM uint32_t AWDT;
  447. struct
  448. {
  449. __IOM uint32_t AWDLT : 12;
  450. __IM uint32_t RESERVED1 : 4;
  451. __IOM uint32_t AWDHT : 12;
  452. __IM uint32_t RESERVED2 : 4;
  453. } AWDT_B;
  454. } ;
  455. __IM uint32_t RESERVED1;
  456. /* channel selection register */
  457. union
  458. {
  459. __IOM uint32_t CHSEL;
  460. struct
  461. {
  462. __IOM uint32_t CH0SEL : 1;
  463. __IOM uint32_t CH1SEL : 1;
  464. __IOM uint32_t CH2SEL : 1;
  465. __IOM uint32_t CH3SEL : 1;
  466. __IOM uint32_t CH4SEL : 1;
  467. __IOM uint32_t CH5SEL : 1;
  468. __IOM uint32_t CH6SEL : 1;
  469. __IOM uint32_t CH7SEL : 1;
  470. __IOM uint32_t CH8SEL : 1;
  471. __IOM uint32_t CH9SEL : 1;
  472. __IOM uint32_t CH10SEL : 1;
  473. __IOM uint32_t CH11SEL : 1;
  474. __IOM uint32_t CH12SEL : 1;
  475. __IOM uint32_t CH13SEL : 1;
  476. __IOM uint32_t CH14SEL : 1;
  477. __IOM uint32_t CH15SEL : 1;
  478. __IOM uint32_t CH16SEL : 1;
  479. __IOM uint32_t CH17SEL : 1;
  480. __IOM uint32_t CH18SEL : 1;
  481. __IM uint32_t RESERVED1 : 13;
  482. } CHSEL_B;
  483. } ;
  484. __IM uint32_t RESERVED2[5];
  485. /* data register */
  486. union
  487. {
  488. __IM uint32_t DATA;
  489. struct
  490. {
  491. __IM uint32_t DATA : 16;
  492. __IM uint32_t RESERVED1 : 16;
  493. } DATA_B;
  494. } ;
  495. __IM uint32_t RESERVED3[177];
  496. /* common configuration register */
  497. union
  498. {
  499. __IOM uint32_t CCFG;
  500. struct
  501. {
  502. __IM uint32_t RESERVED1 : 22;
  503. __IOM uint32_t VREFEN : 1;
  504. __IOM uint32_t TSEN : 1;
  505. __IOM uint32_t VBATEN : 1;
  506. __IM uint32_t RESERVED2 : 7;
  507. } CCFG_B;
  508. } ;
  509. } ADC_T;
  510. /**
  511. * @brief Controller area network (CAN) TxMailBox Typedef
  512. */
  513. typedef struct
  514. {
  515. /* TX mailbox identifier register */
  516. union
  517. {
  518. __IOM uint32_t TXMID;
  519. struct
  520. {
  521. __IOM uint32_t TXMREQ : 1;
  522. __IOM uint32_t TXRFREQ : 1;
  523. __IOM uint32_t IDTYPESEL : 1;
  524. __IOM uint32_t EXTID : 18;
  525. __IOM uint32_t STDID : 11;
  526. } TXMID_B;
  527. } ;
  528. /* Mailbox data length control and time stamp register */
  529. union
  530. {
  531. __IOM uint32_t TXDLEN;
  532. struct
  533. {
  534. __IOM uint32_t DLCODE : 4;
  535. __IM uint32_t RESERVED1 : 4;
  536. __IOM uint32_t TXGT : 1;
  537. __IM uint32_t RESERVED2 : 7;
  538. __IOM uint32_t MTS : 16;
  539. } TXDLEN_B;
  540. } ;
  541. /* Mailbox data low register 0*/
  542. union
  543. {
  544. __IOM uint32_t TXMDL;
  545. struct
  546. {
  547. __IOM uint32_t DATABYTE0 : 8;
  548. __IOM uint32_t DATABYTE1 : 8;
  549. __IOM uint32_t DATABYTE2 : 8;
  550. __IOM uint32_t DATABYTE3 : 8;
  551. } TXMDL_B;
  552. } ;
  553. /* Mailbox data high register 0*/
  554. union
  555. {
  556. __IOM uint32_t TXMDH;
  557. struct
  558. {
  559. __IOM uint32_t DATABYTE4 : 8;
  560. __IOM uint32_t DATABYTE5 : 8;
  561. __IOM uint32_t DATABYTE6 : 8;
  562. __IOM uint32_t DATABYTE7 : 8;
  563. } TXMDH_B;
  564. } ;
  565. } CAN_TxMailBox_T;
  566. /**
  567. * @brief Controller area network (CAN) Receive FIFO MailBox Typedef
  568. */
  569. typedef struct
  570. {
  571. /* Receive FIFO mailbox identifier register */
  572. union
  573. {
  574. __IM uint32_t RXMID;
  575. struct
  576. {
  577. __IM uint32_t RESERVED1 : 1;
  578. __IM uint32_t RFTXREQ : 1;
  579. __IM uint32_t IDTYPESEL : 1;
  580. __IM uint32_t EXTID : 18;
  581. __IM uint32_t STDID : 11;
  582. } RXMID_B;
  583. } ;
  584. /* Receive FIFO mailbox data length control and time stamp register */
  585. union
  586. {
  587. __IM uint32_t RXDLEN;
  588. struct
  589. {
  590. __IM uint32_t DLCODE : 4;
  591. __IM uint32_t RESERVED1 : 4;
  592. __IM uint32_t FMIDX : 8;
  593. __IM uint32_t MTS : 16;
  594. } RXDLEN_B;
  595. } ;
  596. /* Receive FIFO mailbox data low register */
  597. union
  598. {
  599. __IM uint32_t RXMDL;
  600. struct
  601. {
  602. __IM uint32_t DATABYTE0 : 8;
  603. __IM uint32_t DATABYTE1 : 8;
  604. __IM uint32_t DATABYTE2 : 8;
  605. __IM uint32_t DATABYTE3 : 8;
  606. } RXMDL_B;
  607. } ;
  608. /* Receive FIFO mailbox data high register */
  609. union
  610. {
  611. __IM uint32_t RXMDH;
  612. struct
  613. {
  614. __IM uint32_t DATABYTE4 : 8;
  615. __IM uint32_t DATABYTE5 : 8;
  616. __IM uint32_t DATABYTE6 : 8;
  617. __IM uint32_t DATABYTE7 : 8;
  618. } RXMDH_B;
  619. } ;
  620. } CAN_RxFIFO_T;
  621. /**
  622. * @brief Controller area network (CAN) Filter register Typedef
  623. */
  624. typedef struct
  625. {
  626. /* CAN Filter1 register */
  627. union
  628. {
  629. __IOM uint32_t R1;
  630. struct
  631. {
  632. __IOM uint32_t FBIT0 : 1;
  633. __IOM uint32_t FBIT1 : 1;
  634. __IOM uint32_t FBIT2 : 1;
  635. __IOM uint32_t FBIT3 : 1;
  636. __IOM uint32_t FBIT4 : 1;
  637. __IOM uint32_t FBIT5 : 1;
  638. __IOM uint32_t FBIT6 : 1;
  639. __IOM uint32_t FBIT7 : 1;
  640. __IOM uint32_t FBIT8 : 1;
  641. __IOM uint32_t FBIT9 : 1;
  642. __IOM uint32_t FBIT10 : 1;
  643. __IOM uint32_t FBIT11 : 1;
  644. __IOM uint32_t FBIT12 : 1;
  645. __IOM uint32_t FBIT13 : 1;
  646. __IOM uint32_t FBIT14 : 1;
  647. __IOM uint32_t FBIT15 : 1;
  648. __IOM uint32_t FBIT16 : 1;
  649. __IOM uint32_t FBIT17 : 1;
  650. __IOM uint32_t FBIT18 : 1;
  651. __IOM uint32_t FBIT19 : 1;
  652. __IOM uint32_t FBIT20 : 1;
  653. __IOM uint32_t FBIT21 : 1;
  654. __IOM uint32_t FBIT22 : 1;
  655. __IOM uint32_t FBIT23 : 1;
  656. __IOM uint32_t FBIT24 : 1;
  657. __IOM uint32_t FBIT25 : 1;
  658. __IOM uint32_t FBIT26 : 1;
  659. __IOM uint32_t FBIT27 : 1;
  660. __IOM uint32_t FBIT28 : 1;
  661. __IOM uint32_t FBIT29 : 1;
  662. __IOM uint32_t FBIT30 : 1;
  663. __IOM uint32_t FBIT31 : 1;
  664. } R1_B;
  665. };
  666. /* CAN Filter2 register */
  667. union
  668. {
  669. __IOM uint32_t R2;
  670. struct
  671. {
  672. __IOM uint32_t FBIT0 : 1;
  673. __IOM uint32_t FBIT1 : 1;
  674. __IOM uint32_t FBIT2 : 1;
  675. __IOM uint32_t FBIT3 : 1;
  676. __IOM uint32_t FBIT4 : 1;
  677. __IOM uint32_t FBIT5 : 1;
  678. __IOM uint32_t FBIT6 : 1;
  679. __IOM uint32_t FBIT7 : 1;
  680. __IOM uint32_t FBIT8 : 1;
  681. __IOM uint32_t FBIT9 : 1;
  682. __IOM uint32_t FBIT10 : 1;
  683. __IOM uint32_t FBIT11 : 1;
  684. __IOM uint32_t FBIT12 : 1;
  685. __IOM uint32_t FBIT13 : 1;
  686. __IOM uint32_t FBIT14 : 1;
  687. __IOM uint32_t FBIT15 : 1;
  688. __IOM uint32_t FBIT16 : 1;
  689. __IOM uint32_t FBIT17 : 1;
  690. __IOM uint32_t FBIT18 : 1;
  691. __IOM uint32_t FBIT19 : 1;
  692. __IOM uint32_t FBIT20 : 1;
  693. __IOM uint32_t FBIT21 : 1;
  694. __IOM uint32_t FBIT22 : 1;
  695. __IOM uint32_t FBIT23 : 1;
  696. __IOM uint32_t FBIT24 : 1;
  697. __IOM uint32_t FBIT25 : 1;
  698. __IOM uint32_t FBIT26 : 1;
  699. __IOM uint32_t FBIT27 : 1;
  700. __IOM uint32_t FBIT28 : 1;
  701. __IOM uint32_t FBIT29 : 1;
  702. __IOM uint32_t FBIT30 : 1;
  703. __IOM uint32_t FBIT31 : 1;
  704. } R2_B;
  705. };
  706. } CAN_FilterRegister_T;
  707. /**
  708. * @brief Controller area network (CAN)
  709. */
  710. typedef struct
  711. {
  712. /* Master control register */
  713. union
  714. {
  715. __IOM uint32_t MCTRL;
  716. struct
  717. {
  718. __IOM uint32_t INITREQ : 1;
  719. __IOM uint32_t SLEEPREQ : 1;
  720. __IOM uint32_t TXFPCFG : 1;
  721. __IOM uint32_t RXFLOCK : 1;
  722. __IOM uint32_t ARTXMD : 1;
  723. __IOM uint32_t AWUPCFG : 1;
  724. __IOM uint32_t ALBOFFM : 1;
  725. __IOM uint32_t TTCM : 1;
  726. __IM uint32_t RESERVED1 : 7;
  727. __IOM uint32_t SWRST : 1;
  728. __IOM uint32_t DBGFRZE : 1;
  729. __IM uint32_t RESERVED2 : 15;
  730. } MCTRL_B;
  731. } ;
  732. /* Master status register */
  733. union
  734. {
  735. __IOM uint32_t MSTS;
  736. struct
  737. {
  738. __IM uint32_t INITFLG : 1;
  739. __IM uint32_t SLEEPFLG : 1;
  740. __IOM uint32_t ERRIFLG : 1;
  741. __IOM uint32_t WUPIFLG : 1;
  742. __IOM uint32_t SLEEPIFLG : 1;
  743. __IM uint32_t RESERVED1 : 3;
  744. __IM uint32_t TXMFLG : 1;
  745. __IM uint32_t RXMFLG : 1;
  746. __IM uint32_t LSAMVALUE : 1;
  747. __IM uint32_t RXSIGL : 1;
  748. __IM uint32_t RESERVED2 : 20;
  749. } MSTS_B;
  750. } ;
  751. /* Transmit status register */
  752. union
  753. {
  754. __IOM uint32_t TXSTS;
  755. struct
  756. {
  757. __IOM uint32_t REQCFLG0 : 1;
  758. __IOM uint32_t TXSUSFLG0 : 1;
  759. __IOM uint32_t ARBLSTFLG0 : 1;
  760. __IOM uint32_t TXERRFLG0 : 1;
  761. __IM uint32_t RESERVED1 : 3;
  762. __IOM uint32_t ABREQFLG0 : 1;
  763. __IOM uint32_t REQCFLG1 : 1;
  764. __IOM uint32_t TXSUSFLG1 : 1;
  765. __IOM uint32_t ARBLSTFLG1 : 1;
  766. __IOM uint32_t TXERRFLG1 : 1;
  767. __IM uint32_t RESERVED2 : 3;
  768. __IOM uint32_t ABREQFLG1 : 1;
  769. __IOM uint32_t REQCFLG2 : 1;
  770. __IOM uint32_t TXSUSFLG2 : 1;
  771. __IOM uint32_t ARBLSTFLG2 : 1;
  772. __IOM uint32_t TXERRFLG2 : 1;
  773. __IM uint32_t RESERVED3 : 3;
  774. __IOM uint32_t ABREQFLG2 : 1;
  775. __IM uint32_t EMNUM : 2;
  776. __IM uint32_t TXMEFLG0 : 1;
  777. __IM uint32_t TXMEFLG1 : 1;
  778. __IM uint32_t TXMEFLG2 : 1;
  779. __IM uint32_t LOWESTP0 : 1;
  780. __IM uint32_t LOWESTP1 : 1;
  781. __IM uint32_t LOWESTP2 : 1;
  782. } TXSTS_B;
  783. } ;
  784. /* Receive FIFO 0 register */
  785. union
  786. {
  787. __IOM uint32_t RXF0;
  788. struct
  789. {
  790. __IM uint32_t FMNUM0 : 2;
  791. __IM uint32_t RESERVED1 : 1;
  792. __IOM uint32_t FFULLFLG0 : 1;
  793. __IOM uint32_t FOVRFLG0 : 1;
  794. __IOM uint32_t RFOM0 : 1;
  795. __IM uint32_t RESERVED2 : 26;
  796. } RXF0_B;
  797. } ;
  798. /* Receive FIFO 1 register */
  799. union
  800. {
  801. __IOM uint32_t RXF1;
  802. struct
  803. {
  804. __IM uint32_t FMNUM1 : 2;
  805. __IM uint32_t RESERVED1 : 1;
  806. __IOM uint32_t FFULLFLG1 : 1;
  807. __IOM uint32_t FOVRFLG1 : 1;
  808. __IOM uint32_t RFOM1 : 1;
  809. __IM uint32_t RESERVED2 : 26;
  810. } RXF1_B;
  811. } ;
  812. /* Interrupt enable register */
  813. union
  814. {
  815. __IOM uint32_t INTEN;
  816. struct
  817. {
  818. __IOM uint32_t TXMEIE : 1;
  819. __IOM uint32_t FMIEN0 : 1;
  820. __IOM uint32_t FFULLIEN0 : 1;
  821. __IOM uint32_t FOVRIEN0 : 1;
  822. __IOM uint32_t FMPIEN1 : 1;
  823. __IOM uint32_t FFULLIEN1 : 1;
  824. __IOM uint32_t FOVRIEN1 : 1;
  825. __IM uint32_t RESERVED1 : 1;
  826. __IOM uint32_t ERRWIEN : 1;
  827. __IOM uint32_t ERRPIEN : 1;
  828. __IOM uint32_t BOFFIEN : 1;
  829. __IOM uint32_t LECIEN : 1;
  830. __IM uint32_t RESERVED2 : 3;
  831. __IOM uint32_t ERRIEN : 1;
  832. __IOM uint32_t WUPIEN : 1;
  833. __IOM uint32_t SLEEPIEN : 1;
  834. __IM uint32_t RESERVED3 : 14;
  835. } INTEN_B;
  836. } ;
  837. /* Error status register */
  838. union
  839. {
  840. __IOM uint32_t ERRSTS;
  841. struct
  842. {
  843. __IM uint32_t ERRWFLG : 1;
  844. __IM uint32_t ERRPFLG : 1;
  845. __IM uint32_t BOFLG : 1;
  846. __IM uint32_t RESERVED1 : 1;
  847. __IOM uint32_t LERRC : 3;
  848. __IM uint32_t RESERVED2 : 9;
  849. __IM uint32_t TXERRCNT : 8;
  850. __IM uint32_t RXERRCNT : 8;
  851. } ERRSTS_B;
  852. } ;
  853. /* Bit timing register */
  854. union
  855. {
  856. __IOM uint32_t BITTIM;
  857. struct
  858. {
  859. __IOM uint32_t BRPSC : 10;
  860. __IM uint32_t RESERVED1 : 6;
  861. __IOM uint32_t TIMSEG1 : 4;
  862. __IOM uint32_t TIMSEG2 : 3;
  863. __IM uint32_t RESERVED2 : 1;
  864. __IOM uint32_t RSYNJW : 2;
  865. __IM uint32_t RESERVED3 : 4;
  866. __IOM uint32_t LBKMEN : 1;
  867. __IOM uint32_t SILMEN : 1;
  868. } BITTIM_B;
  869. } ;
  870. __IM uint32_t RESERVED1[88];
  871. CAN_TxMailBox_T sTxMailBox[3];
  872. CAN_RxFIFO_T sRxFIFO[2];
  873. __IM uint32_t RESERVED2[12];
  874. /* Filter master register */
  875. union
  876. {
  877. __IOM uint32_t FCTRL;
  878. struct
  879. {
  880. __IOM uint32_t FIM : 1;
  881. __IM uint32_t RESERVED1 : 31;
  882. } FCTRL_B;
  883. } ;
  884. /* Filter mode register */
  885. union
  886. {
  887. __IOM uint32_t FMCFG;
  888. struct
  889. {
  890. __IOM uint32_t FMCFG0 : 1;
  891. __IOM uint32_t FMCFG1 : 1;
  892. __IOM uint32_t FMCFG2 : 1;
  893. __IOM uint32_t FMCFG3 : 1;
  894. __IOM uint32_t FMCFG4 : 1;
  895. __IOM uint32_t FMCFG5 : 1;
  896. __IOM uint32_t FMCFG6 : 1;
  897. __IOM uint32_t FMCFG7 : 1;
  898. __IOM uint32_t FMCFG8 : 1;
  899. __IOM uint32_t FMCFG9 : 1;
  900. __IOM uint32_t FMCFG10 : 1;
  901. __IOM uint32_t FMCFG11 : 1;
  902. __IOM uint32_t FMCFG12 : 1;
  903. __IOM uint32_t FMCFG13 : 1;
  904. __IM uint32_t RESERVED1 : 18;
  905. } FMCFG_B;
  906. } ;
  907. __IM uint32_t RESERVED3;
  908. /* Filter scale register */
  909. union
  910. {
  911. __IOM uint32_t FSCFG;
  912. struct
  913. {
  914. __IOM uint32_t FSCFG0 : 1;
  915. __IOM uint32_t FSCFG1 : 1;
  916. __IOM uint32_t FSCFG2 : 1;
  917. __IOM uint32_t FSCFG3 : 1;
  918. __IOM uint32_t FSCFG4 : 1;
  919. __IOM uint32_t FSCFG5 : 1;
  920. __IOM uint32_t FSCFG6 : 1;
  921. __IOM uint32_t FSCFG7 : 1;
  922. __IOM uint32_t FSCFG8 : 1;
  923. __IOM uint32_t FSCFG9 : 1;
  924. __IOM uint32_t FSCFG10 : 1;
  925. __IOM uint32_t FSCFG11 : 1;
  926. __IOM uint32_t FSCFG12 : 1;
  927. __IOM uint32_t FSCFG13 : 1;
  928. __IM uint32_t RESERVED1 : 18;
  929. } FSCFG_B;
  930. } ;
  931. __IM uint32_t RESERVED4;
  932. /* Filter FIFO assignment register */
  933. union
  934. {
  935. __IOM uint32_t FFASS;
  936. struct
  937. {
  938. __IOM uint32_t FFASS0 : 1;
  939. __IOM uint32_t FFASS1 : 1;
  940. __IOM uint32_t FFASS2 : 1;
  941. __IOM uint32_t FFASS3 : 1;
  942. __IOM uint32_t FFASS4 : 1;
  943. __IOM uint32_t FFASS5 : 1;
  944. __IOM uint32_t FFASS6 : 1;
  945. __IOM uint32_t FFASS7 : 1;
  946. __IOM uint32_t FFASS8 : 1;
  947. __IOM uint32_t FFASS9 : 1;
  948. __IOM uint32_t FFASS10 : 1;
  949. __IOM uint32_t FFASS11 : 1;
  950. __IOM uint32_t FFASS12 : 1;
  951. __IOM uint32_t FFASS13 : 1;
  952. __IM uint32_t RESERVED1 : 18;
  953. } FFASS_B;
  954. } ;
  955. __IM uint32_t RESERVED5;
  956. /* Filter activation register */
  957. union
  958. {
  959. __IOM uint32_t FACT;
  960. struct
  961. {
  962. __IOM uint32_t FACT0 : 1;
  963. __IOM uint32_t FACT1 : 1;
  964. __IOM uint32_t FACT2 : 1;
  965. __IOM uint32_t FACT3 : 1;
  966. __IOM uint32_t FACT4 : 1;
  967. __IOM uint32_t FACT5 : 1;
  968. __IOM uint32_t FACT6 : 1;
  969. __IOM uint32_t FACT7 : 1;
  970. __IOM uint32_t FACT8 : 1;
  971. __IOM uint32_t FACT9 : 1;
  972. __IOM uint32_t FACT10 : 1;
  973. __IOM uint32_t FACT11 : 1;
  974. __IOM uint32_t FACT12 : 1;
  975. __IOM uint32_t FACT13 : 1;
  976. __IM uint32_t RESERVED1 : 18;
  977. } FACT_B;
  978. } ;
  979. __IM uint32_t RESERVED6[8];
  980. /* Filter bank register */
  981. CAN_FilterRegister_T sFilterRegister[14];
  982. } CAN_T;
  983. /**
  984. * @brief HDMI-CEC registers (CEC)
  985. */
  986. typedef struct
  987. {
  988. /* Control register */
  989. union
  990. {
  991. __IOM uint32_t CTRL;
  992. struct
  993. {
  994. __IOM uint32_t CECEN : 1;
  995. __IOM uint32_t TXSM : 1;
  996. __IOM uint32_t TXEM : 1;
  997. __IM uint32_t RESERVED1 : 29;
  998. } CTRL_B;
  999. } ;
  1000. /* Configuration register */
  1001. union
  1002. {
  1003. __IOM uint32_t CFG;
  1004. struct
  1005. {
  1006. __IOM uint32_t SFTCFG : 3;
  1007. __IOM uint32_t RXTCFG : 1;
  1008. __IOM uint32_t RXSBRERR : 1;
  1009. __IOM uint32_t GEBRERR : 1;
  1010. __IOM uint32_t GELBPERR : 1;
  1011. __IOM uint32_t AEBGIB : 1;
  1012. __IOM uint32_t SFTOB : 1;
  1013. __IM uint32_t RESERVED1 : 7;
  1014. __IOM uint32_t OACFG : 15;
  1015. __IOM uint32_t LMODSEL : 1;
  1016. } CFG_B;
  1017. } ;
  1018. /* Tx data register */
  1019. union
  1020. {
  1021. __OM uint32_t TXDATA;
  1022. struct
  1023. {
  1024. __OM uint32_t TXDATA : 8;
  1025. __IM uint32_t RESERVED1 : 24;
  1026. } TXDATA_B;
  1027. } ;
  1028. /* Rx data register */
  1029. union
  1030. {
  1031. __IM uint32_t RXDATA;
  1032. struct
  1033. {
  1034. __IM uint32_t RXDATA : 8;
  1035. __IM uint32_t RESERVED1 : 24;
  1036. } RXDATA_B;
  1037. } ;
  1038. /* Interrupt and Status Register */
  1039. union
  1040. {
  1041. __IOM uint32_t STS;
  1042. struct
  1043. {
  1044. __IOM uint32_t RXBREFLG : 1;
  1045. __IOM uint32_t RXEFLG : 1;
  1046. __IOM uint32_t RXOVRFLG : 1;
  1047. __IOM uint32_t RXBRERRFLG : 1;
  1048. __IOM uint32_t RXSBPEFLG : 1;
  1049. __IOM uint32_t RXLBPEFLG : 1;
  1050. __IOM uint32_t RXMACKFLG : 1;
  1051. __IOM uint32_t ARBLOSFLG : 1;
  1052. __IOM uint32_t TXBREFLG : 1;
  1053. __IOM uint32_t TXEFLG : 1;
  1054. __IOM uint32_t TXBUFLG : 1;
  1055. __IOM uint32_t TXERRFLG : 1;
  1056. __IOM uint32_t TXMACKFLG : 1;
  1057. __IM uint32_t RESERVED1 : 19;
  1058. } STS_B;
  1059. } ;
  1060. /* interrupt enable register */
  1061. union
  1062. {
  1063. __IOM uint32_t INTEN;
  1064. struct
  1065. {
  1066. __IOM uint32_t RXBREIEN : 1;
  1067. __IOM uint32_t RXEIEN : 1;
  1068. __IOM uint32_t RXOVRIEN : 1;
  1069. __IOM uint32_t RXBRERRIEN : 1;
  1070. __IOM uint32_t RXSBPEIEN : 1;
  1071. __IOM uint32_t RXLBPEIEN : 1;
  1072. __IOM uint32_t RXMACKIEN : 1;
  1073. __IOM uint32_t ARBLOSIEN : 1;
  1074. __IOM uint32_t TXBREIEN : 1;
  1075. __IOM uint32_t TXIEN : 1;
  1076. __IOM uint32_t TXBUIEN : 1;
  1077. __IOM uint32_t TXERRIEN : 1;
  1078. __IOM uint32_t TXMACKIEN : 1;
  1079. __IM uint32_t RESERVED1 : 19;
  1080. } INTEN_B;
  1081. } ;
  1082. } CEC_T;
  1083. /**
  1084. * @brief Cyclic redundancy check calculation unit (CRC)
  1085. */
  1086. typedef struct
  1087. {
  1088. /* Data register */
  1089. union
  1090. {
  1091. __IOM uint32_t DATA;
  1092. struct
  1093. {
  1094. __IOM uint32_t DATA : 32;
  1095. } DATA_B;
  1096. } ;
  1097. /* Independent data register */
  1098. union
  1099. {
  1100. __IOM uint32_t INDATA;
  1101. struct
  1102. {
  1103. __IOM uint32_t INDATA : 8;
  1104. __IM uint32_t RESERVED1 : 24;
  1105. } INDATA_B;
  1106. } ;
  1107. /* Control register */
  1108. union
  1109. {
  1110. __IOM uint32_t CTRL;
  1111. struct
  1112. {
  1113. __IOM uint32_t RST : 1;
  1114. __IM uint32_t RESERVED1 : 2;
  1115. __IOM uint32_t POLSIZE : 2;
  1116. __IOM uint32_t REVI : 2;
  1117. __IOM uint32_t REVO : 1;
  1118. __IM uint32_t RESERVED2 : 24;
  1119. } CTRL_B;
  1120. } ;
  1121. __IM uint32_t RESERVED;
  1122. /* Initial CRC value */
  1123. union
  1124. {
  1125. __IOM uint32_t INITVAL;
  1126. struct
  1127. {
  1128. __IOM uint32_t VALUE : 32;
  1129. } INITVAL_B;
  1130. } ;
  1131. /* CRC polynomia register*/
  1132. union
  1133. {
  1134. __IOM uint32_t POL;
  1135. struct
  1136. {
  1137. __IOM uint32_t PPOL : 32;
  1138. } POL_B;
  1139. } ;
  1140. } CRC_T;
  1141. /**
  1142. * @brief CRS registers (CRS)
  1143. */
  1144. typedef struct
  1145. {
  1146. /* Control register */
  1147. union
  1148. {
  1149. __IOM uint32_t CTRL;
  1150. struct
  1151. {
  1152. __IOM uint32_t SNINTEN : 1;
  1153. __IOM uint32_t SWINTEN : 1;
  1154. __IOM uint32_t EINTEN : 1;
  1155. __IOM uint32_t ESINTEN : 1;
  1156. __IM uint32_t RESERVED1 : 1;
  1157. __IOM uint32_t CNTEN : 1;
  1158. __IOM uint32_t AUTOTRMEN : 1;
  1159. __IOM uint32_t SWSGNR : 1;
  1160. __IOM uint32_t HSI48TRM : 6;
  1161. __IM uint32_t RESERVED2 : 18;
  1162. } CTRL_B;
  1163. } ;
  1164. union
  1165. {
  1166. __IOM uint32_t CFG;
  1167. struct
  1168. {
  1169. __IOM uint32_t RLDVAL : 16;
  1170. __IOM uint32_t FELMT : 8;
  1171. __IOM uint32_t SYNCPSC : 3;
  1172. __IM uint32_t RESERVED1 : 1;
  1173. __IOM uint32_t SYNCSRCSEL : 2;
  1174. __IM uint32_t RESERVED2 : 1;
  1175. __IOM uint32_t SYNCPOLSEL : 1;
  1176. } CFG_B;
  1177. } ;
  1178. union
  1179. {
  1180. __IM uint32_t INTSTS;
  1181. struct
  1182. {
  1183. __IM uint32_t SNFLG : 1;
  1184. __IM uint32_t SWFLG : 1;
  1185. __IM uint32_t EFLG : 1;
  1186. __IM uint32_t ESFLG : 1;
  1187. __IM uint32_t RESERVED1 : 4;
  1188. __IM uint32_t ERRORFLG : 1;
  1189. __IM uint32_t SYNCMISS : 1;
  1190. __IM uint32_t TRMFLG : 1;
  1191. __IM uint32_t RESERVED2 : 4;
  1192. __IM uint32_t CNTDRCT : 1;
  1193. __IM uint32_t FECPT : 16;
  1194. } INTSTS_B;
  1195. } ;
  1196. union
  1197. {
  1198. __IOM uint32_t INTCLR;
  1199. struct
  1200. {
  1201. __IOM uint32_t SNCLR : 1;
  1202. __IOM uint32_t SWCLR : 1;
  1203. __IOM uint32_t ECLR : 1;
  1204. __IOM uint32_t ESCLR : 1;
  1205. __IM uint32_t RESERVED1 : 28;
  1206. } INTCLR_B;
  1207. } ;
  1208. } CRS_T;
  1209. /**
  1210. * @brief Comparator (COMP)
  1211. */
  1212. typedef struct
  1213. {
  1214. /* control and status register */
  1215. union
  1216. {
  1217. __IOM uint32_t CSTS;
  1218. struct
  1219. {
  1220. __IOM uint32_t EN1 : 1;
  1221. __IOM uint32_t SW1 : 1;
  1222. __IOM uint32_t MOD1 : 2;
  1223. __IOM uint32_t INVINSEL1 : 3;
  1224. __IM uint32_t RESERVED1 : 1;
  1225. __IOM uint32_t OUTSEL1 : 3;
  1226. __IOM uint32_t OPINV1 : 1;
  1227. __IOM uint32_t HYSCFG1 : 2;
  1228. __IM uint32_t OUTSTS1 : 1;
  1229. __IOM uint32_t LOCK1 : 1;
  1230. __IOM uint32_t EN2 : 1;
  1231. __IM uint32_t RESERVED2 : 1;
  1232. __IOM uint32_t MOD2 : 2;
  1233. __IOM uint32_t INVINSEL2 : 3;
  1234. __IOM uint32_t WMODEN : 1;
  1235. __IOM uint32_t OUTSEL2 : 3;
  1236. __IOM uint32_t OPINV2 : 1;
  1237. __IOM uint32_t HYSCFG2 : 2;
  1238. __IM uint32_t OUTSTS2 : 1;
  1239. __IOM uint32_t LOCK2 : 1;
  1240. } CSTS_B;
  1241. } ;
  1242. } COMP_T;
  1243. /**
  1244. * @brief Digital-to-Analog converter (DAC)
  1245. */
  1246. typedef struct
  1247. {
  1248. /* Control register */
  1249. union
  1250. {
  1251. __IOM uint32_t CTRL;
  1252. struct
  1253. {
  1254. __IOM uint32_t ENCH1 : 1;
  1255. __IOM uint32_t BUFFDCH1 : 1;
  1256. __IOM uint32_t TRGENCH1 : 1;
  1257. __IOM uint32_t TRGSELCH1 : 3;
  1258. __IOM uint32_t WAVENCH1 : 2;
  1259. __IOM uint32_t MAMPSELCH1 : 4;
  1260. __IOM uint32_t DMAENCH1 : 1;
  1261. __IOM uint32_t DMAUDRIEN1 : 1;
  1262. __IM uint32_t RESERVED1 : 2;
  1263. __IOM uint32_t ENCH2 : 1;
  1264. __IOM uint32_t BUFFDCH2 : 1;
  1265. __IOM uint32_t TRGENCH2 : 1;
  1266. __IOM uint32_t TRGSELCH2 : 3;
  1267. __IOM uint32_t WAVENCH2 : 2;
  1268. __IOM uint32_t MAMPSELCH2 : 4;
  1269. __IOM uint32_t DMAENCH2 : 1;
  1270. __IOM uint32_t DMAUDRIEN2 : 1;
  1271. __IM uint32_t RESERVED2 : 2;
  1272. } CTRL_B;
  1273. } ;
  1274. /* Software trigger register */
  1275. union
  1276. {
  1277. __OM uint32_t SWTRG;
  1278. struct
  1279. {
  1280. __OM uint32_t SWTRG1 : 1;
  1281. __OM uint32_t SWTRG2 : 1;
  1282. __IM uint32_t RESERVED1 : 30;
  1283. } SWTRG_B;
  1284. } ;
  1285. /* Channel1 12-bit right-aligned data holding register */
  1286. union
  1287. {
  1288. __IOM uint32_t DH12R1;
  1289. struct
  1290. {
  1291. __IOM uint32_t DATA : 12;
  1292. __IM uint32_t RESERVED1 : 20;
  1293. } DH12R1_B;
  1294. } ;
  1295. /* Channel1 12-bit left-aligned data holding register */
  1296. union
  1297. {
  1298. __IOM uint32_t DH12L1;
  1299. struct
  1300. {
  1301. __IM uint32_t RESERVED1 : 4;
  1302. __IOM uint32_t DATA : 12;
  1303. __IM uint32_t RESERVED2 : 16;
  1304. } DH12L1_B;
  1305. } ;
  1306. /* Channel1 8-bit right-aligned data holding register */
  1307. union
  1308. {
  1309. __IOM uint32_t DH8R1;
  1310. struct
  1311. {
  1312. __IOM uint32_t DATA : 8;
  1313. __IM uint32_t RESERVED2 : 24;
  1314. } DH8R1_B;
  1315. } ;
  1316. /* Channel2 12-bit right-aligned data holding register */
  1317. union
  1318. {
  1319. __IOM uint32_t DH12R2;
  1320. struct
  1321. {
  1322. __IOM uint32_t DATA : 12;
  1323. __IM uint32_t RESERVED1 : 20;
  1324. } DH12R2_B;
  1325. } ;
  1326. /* Channel2 12-bit left-aligned data holding register */
  1327. union
  1328. {
  1329. __IOM uint32_t DH12L2;
  1330. struct
  1331. {
  1332. __IM uint32_t RESERVED1 : 4;
  1333. __IOM uint32_t DATA : 12;
  1334. __IM uint32_t RESERVED2 : 16;
  1335. } DH12L2_B;
  1336. } ;
  1337. /* Channel2 8-bit right-aligned data holding register */
  1338. union
  1339. {
  1340. __IOM uint32_t DH8R2;
  1341. struct
  1342. {
  1343. __IOM uint32_t DATA : 8;
  1344. __IM uint32_t RESERVED1 : 24;
  1345. } DH8R2_B;
  1346. } ;
  1347. /* Dual DAC 12-bit right-aligned data holding register */
  1348. union
  1349. {
  1350. __IOM uint32_t DH12RDUAL;
  1351. struct
  1352. {
  1353. __IOM uint32_t DATACH1 : 12;
  1354. __IM uint32_t RESERVED1 : 4;
  1355. __IOM uint32_t DATACH2 : 12;
  1356. __IM uint32_t RESERVED2 : 4;
  1357. } DH12RDUAL_B;
  1358. } ;
  1359. /* Dual DAC 12-bit left-aligned data holding register */
  1360. union
  1361. {
  1362. __IOM uint32_t DH12LDUAL;
  1363. struct
  1364. {
  1365. __IM uint32_t RESERVED1 : 4;
  1366. __IOM uint32_t DATACH1 : 12;
  1367. __IM uint32_t RESERVED2 : 4;
  1368. __IOM uint32_t DATACH2 : 12;
  1369. } DH12LDUAL_B;
  1370. } ;
  1371. /* Dual DAC 8-bit right-aligned data holding register */
  1372. union
  1373. {
  1374. __IOM uint32_t DH8RDUAL;
  1375. struct
  1376. {
  1377. __IOM uint32_t DATACH1 : 8;
  1378. __IOM uint32_t DATACH2 : 8;
  1379. __IM uint32_t RESERVED1 : 16;
  1380. } DH8RDUAL_B;
  1381. } ;
  1382. /* DAC channel1 data output register */
  1383. union
  1384. {
  1385. __IM uint32_t DATAOCH1;
  1386. struct
  1387. {
  1388. __IM uint32_t DATA : 12;
  1389. __IM uint32_t RESERVED1 : 20;
  1390. } DATAOCH1_B;
  1391. } ;
  1392. /* DAC channel2 data output register */
  1393. union
  1394. {
  1395. __IM uint32_t DATAOCH2;
  1396. struct
  1397. {
  1398. __IM uint32_t DATA : 12;
  1399. __IM uint32_t RESERVED1 : 20;
  1400. } DATAOCH2_B;
  1401. } ;
  1402. /* Status register */
  1403. union
  1404. {
  1405. __IOM uint32_t STS;
  1406. struct
  1407. {
  1408. __IM uint32_t RESERVED1 : 13;
  1409. __IOM uint32_t DMAUDRFLG1 : 1;
  1410. __IM uint32_t RESERVED2 : 15;
  1411. __IOM uint32_t DMAUDRFLG2 : 1;
  1412. __IM uint32_t RESERVED3 : 2;
  1413. } STS_B;
  1414. } ;
  1415. } DAC_T;
  1416. /**
  1417. * @brief Debug support (DBG)
  1418. */
  1419. typedef struct
  1420. {
  1421. /* MCU Device ID Code Register */
  1422. union
  1423. {
  1424. __IM uint32_t IDCODE;
  1425. struct
  1426. {
  1427. __IM uint32_t EQR : 12;
  1428. __IM uint32_t RESERVED1 : 4;
  1429. __IM uint32_t WVR : 16;
  1430. } IDCODE_B;
  1431. } ;
  1432. /* Debug MCU Configuration Register */
  1433. union
  1434. {
  1435. __IOM uint32_t CFG;
  1436. struct
  1437. {
  1438. __IM uint32_t RESERVED1 : 1;
  1439. __IOM uint32_t STOP_CLK_STS : 1;
  1440. __IOM uint32_t STANDBY_CLK_STS : 1;
  1441. __IM uint32_t RESERVED2 : 29;
  1442. } CFG_B;
  1443. } ;
  1444. /* APB Low Freeze Register */
  1445. union
  1446. {
  1447. __IOM uint32_t APB1F;
  1448. struct
  1449. {
  1450. __IOM uint32_t TMR2_STS : 1;
  1451. __IOM uint32_t TMR3_STS : 1;
  1452. __IM uint32_t RESERVED1 : 2;
  1453. __IOM uint32_t TMR6_STS : 1;
  1454. __IOM uint32_t TMR7_STS : 1;
  1455. __IM uint32_t RESERVED2 : 2;
  1456. __IOM uint32_t TMR14_STS : 1;
  1457. __IM uint32_t RESERVED3 : 1;
  1458. __IOM uint32_t RTC_STS : 1;
  1459. __IOM uint32_t WWDT_STS : 1;
  1460. __IOM uint32_t IWDT_STS : 1;
  1461. __IM uint32_t RESERVED4 : 8;
  1462. __IOM uint32_t I2C1_SMBUS_TIMEOUT_STS : 1;
  1463. __IM uint32_t RESERVED5 : 3;
  1464. __IOM uint32_t CAN_STS : 1;
  1465. __IM uint32_t RESERVED6 : 6;
  1466. } APB1F_B;
  1467. } ;
  1468. /* APB High Freeze Register */
  1469. union
  1470. {
  1471. __IOM uint32_t APB2F;
  1472. struct
  1473. {
  1474. __IM uint32_t RESERVED1 : 11;
  1475. __IOM uint32_t TMR1_STS : 1;
  1476. __IM uint32_t RESERVED2 : 4;
  1477. __IOM uint32_t TMR15_STS : 1;
  1478. __IOM uint32_t TMR16_STS : 1;
  1479. __IOM uint32_t TMR17_STS : 1;
  1480. __IM uint32_t RESERVED3 : 13;
  1481. } APB2F_B;
  1482. } ;
  1483. } DBG_T;
  1484. /**
  1485. * @brief DMA controller (DMA)
  1486. */
  1487. typedef struct
  1488. {
  1489. /* DMA interrupt status register */
  1490. union
  1491. {
  1492. __IM uint32_t INTSTS;
  1493. struct
  1494. {
  1495. __IM uint32_t GINTFLG1 : 1;
  1496. __IM uint32_t TCFLG1 : 1;
  1497. __IM uint32_t HTFLG1 : 1;
  1498. __IM uint32_t TERRFLG1 : 1;
  1499. __IM uint32_t GINTFLG2 : 1;
  1500. __IM uint32_t TCFLG2 : 1;
  1501. __IM uint32_t HTFLG2 : 1;
  1502. __IM uint32_t TERRFLG2 : 1;
  1503. __IM uint32_t GINTFLG3 : 1;
  1504. __IM uint32_t TCFLG3 : 1;
  1505. __IM uint32_t HTFLG3 : 1;
  1506. __IM uint32_t TERRFLG3 : 1;
  1507. __IM uint32_t GINTFLG4 : 1;
  1508. __IM uint32_t TCFLG4 : 1;
  1509. __IM uint32_t HTFLG4 : 1;
  1510. __IM uint32_t TERRFLG4 : 1;
  1511. __IM uint32_t GINTFLG5 : 1;
  1512. __IM uint32_t TCFLG5 : 1;
  1513. __IM uint32_t HTFLG5 : 1;
  1514. __IM uint32_t TERRFLG5 : 1;
  1515. __IM uint32_t GINTFLG6 : 1;
  1516. __IM uint32_t TCFLG6 : 1;
  1517. __IM uint32_t HTFLG6 : 1;
  1518. __IM uint32_t TERRFLG6 : 1;
  1519. __IM uint32_t GINTFLG7 : 1;
  1520. __IM uint32_t TCFLG7 : 1;
  1521. __IM uint32_t HTFLG7 : 1;
  1522. __IM uint32_t TERRFLG7 : 1;
  1523. __IM uint32_t RESERVED1 : 4;
  1524. } ISTS_B;
  1525. } ;
  1526. /* DMA interrupt flag clear register */
  1527. union
  1528. {
  1529. __OM uint32_t INTFCLR;
  1530. struct
  1531. {
  1532. __OM uint32_t GINTCLR1 : 1;
  1533. __OM uint32_t TCCLR1 : 1;
  1534. __OM uint32_t HTCLR1 : 1;
  1535. __OM uint32_t TERRCLR1 : 1;
  1536. __OM uint32_t GINTCLR2 : 1;
  1537. __OM uint32_t TCCLR2 : 1;
  1538. __OM uint32_t HTCLR2 : 1;
  1539. __OM uint32_t TERRCLR2 : 1;
  1540. __OM uint32_t GINTCLR3 : 1;
  1541. __OM uint32_t TCCLR3 : 1;
  1542. __OM uint32_t HTCLR3 : 1;
  1543. __OM uint32_t TERRCLR3 : 1;
  1544. __OM uint32_t GINTCLR4 : 1;
  1545. __OM uint32_t TCCLR4 : 1;
  1546. __OM uint32_t HTCLR4 : 1;
  1547. __OM uint32_t TERRCLR4 : 1;
  1548. __OM uint32_t GINTCLR5 : 1;
  1549. __OM uint32_t TCCLR5 : 1;
  1550. __OM uint32_t HTCLR5 : 1;
  1551. __OM uint32_t TERRCLR5 : 1;
  1552. __OM uint32_t GINTCLR6 : 1;
  1553. __OM uint32_t TCCLR6 : 1;
  1554. __OM uint32_t HTCLR6 : 1;
  1555. __OM uint32_t TERRCLR6 : 1;
  1556. __OM uint32_t GINTCLR7 : 1;
  1557. __OM uint32_t TCCLR7 : 1;
  1558. __OM uint32_t HTCLR7 : 1;
  1559. __OM uint32_t TERRCLR7 : 1;
  1560. __IM uint32_t RESERVED1 : 4;
  1561. } INTFCLR_B;
  1562. } ;
  1563. /* DMA channel configuration register */
  1564. union
  1565. {
  1566. __IOM uint32_t CHCFG1;
  1567. struct
  1568. {
  1569. __IOM uint32_t CHEN : 1;
  1570. __IOM uint32_t TCINTEN : 1;
  1571. __IOM uint32_t HTINTEN : 1;
  1572. __IOM uint32_t TERRINTEN : 1;
  1573. __IOM uint32_t DIRCFG : 1;
  1574. __IOM uint32_t CIRMODE : 1;
  1575. __IOM uint32_t PERIMODE : 1;
  1576. __IOM uint32_t MIMODE : 1;
  1577. __IOM uint32_t PERSIZE : 2;
  1578. __IOM uint32_t MSIZE : 2;
  1579. __IOM uint32_t CHPL : 2;
  1580. __IOM uint32_t M2MMODE : 1;
  1581. __IM uint32_t RESERVED1 : 17;
  1582. } CHCFG1_B;
  1583. } ;
  1584. /* DMA channel 1 number of data register */
  1585. union
  1586. {
  1587. __IOM uint32_t CHNDATA1;
  1588. struct
  1589. {
  1590. __IOM uint32_t NDATAT : 16;
  1591. __IM uint32_t RESERVED1 : 16;
  1592. } CHNDATA1_B;
  1593. } ;
  1594. /* DMA channel 1 peripheral address register */
  1595. union
  1596. {
  1597. __IOM uint32_t CHPADDR1;
  1598. struct
  1599. {
  1600. __IOM uint32_t PERADDR : 32;
  1601. } CHPADDR1_B;
  1602. } ;
  1603. /* DMA channel 1 memory address register */
  1604. union
  1605. {
  1606. __IOM uint32_t CHMADDR1;
  1607. struct
  1608. {
  1609. __IOM uint32_t MEMADD : 32;
  1610. } CHMADDR1_B;
  1611. } ;
  1612. __IM uint32_t RESERVED1;
  1613. /* DMA channel configuration register */
  1614. union
  1615. {
  1616. __IOM uint32_t CHCFG2;
  1617. struct
  1618. {
  1619. __IOM uint32_t CHEN : 1;
  1620. __IOM uint32_t TCINTEN : 1;
  1621. __IOM uint32_t HTINTEN : 1;
  1622. __IOM uint32_t TERRINTEN : 1;
  1623. __IOM uint32_t DIRCFG : 1;
  1624. __IOM uint32_t CIRMODE : 1;
  1625. __IOM uint32_t PERIMODE : 1;
  1626. __IOM uint32_t MIMODE : 1;
  1627. __IOM uint32_t PERSIZE : 2;
  1628. __IOM uint32_t MSIZE : 2;
  1629. __IOM uint32_t CHPL : 2;
  1630. __IOM uint32_t M2MMODE : 1;
  1631. __IM uint32_t RESERVED1 : 17;
  1632. } CHCFG2_B;
  1633. } ;
  1634. /* DMA channel 2 number of data register */
  1635. union
  1636. {
  1637. __IOM uint32_t CHNDATA2;
  1638. struct
  1639. {
  1640. __IOM uint32_t NDATAT : 16;
  1641. __IM uint32_t RESERVED1 : 16;
  1642. } CHNDATA2_B;
  1643. } ;
  1644. /* DMA channel 2 peripheral address register */
  1645. union
  1646. {
  1647. __IOM uint32_t CHPADDR2;
  1648. struct
  1649. {
  1650. __IOM uint32_t PERADDR : 32;
  1651. } CHPADDR2_B;
  1652. } ;
  1653. /* DMA channel 2 memory address register */
  1654. union
  1655. {
  1656. __IOM uint32_t CHMADDR2;
  1657. struct
  1658. {
  1659. __IOM uint32_t MEMADD : 32;
  1660. } CHMADDR2_B;
  1661. } ;
  1662. __IM uint32_t RESERVED2;
  1663. /* DMA channel configuration register */
  1664. union
  1665. {
  1666. __IOM uint32_t CHCFG3;
  1667. struct
  1668. {
  1669. __IOM uint32_t CHEN : 1;
  1670. __IOM uint32_t TCINTEN : 1;
  1671. __IOM uint32_t HTINTEN : 1;
  1672. __IOM uint32_t TERRINTEN : 1;
  1673. __IOM uint32_t DIRCFG : 1;
  1674. __IOM uint32_t CIRMODE : 1;
  1675. __IOM uint32_t PERIMODE : 1;
  1676. __IOM uint32_t MIMODE : 1;
  1677. __IOM uint32_t PERSIZE : 2;
  1678. __IOM uint32_t MSIZE : 2;
  1679. __IOM uint32_t CHPL : 2;
  1680. __IOM uint32_t M2MMODE : 1;
  1681. __IM uint32_t RESERVED1 : 17;
  1682. } CHCFG3_B;
  1683. } ;
  1684. /* DMA channel 3 number of data register */
  1685. union
  1686. {
  1687. __IOM uint32_t CHNDATA3;
  1688. struct
  1689. {
  1690. __IOM uint32_t NDATAT : 16;
  1691. __IM uint32_t RESERVED1 : 16;
  1692. } CHNDATA3_B;
  1693. } ;
  1694. /* DMA channel 3 peripheral address register */
  1695. union
  1696. {
  1697. __IOM uint32_t CHPADDR3;
  1698. struct
  1699. {
  1700. __IOM uint32_t PERADDR : 32;
  1701. } CHPADDR3_B;
  1702. } ;
  1703. /* DMA channel 3 memory address register */
  1704. union
  1705. {
  1706. __IOM uint32_t CHMADDR3;
  1707. struct
  1708. {
  1709. __IOM uint32_t MEMADD : 32;
  1710. } CHMADDR3_B;
  1711. } ;
  1712. __IM uint32_t RESERVED3;
  1713. /* DMA channel configuration register */
  1714. union
  1715. {
  1716. __IOM uint32_t CHCFG4;
  1717. struct
  1718. {
  1719. __IOM uint32_t CHEN : 1;
  1720. __IOM uint32_t TCINTEN : 1;
  1721. __IOM uint32_t HTINTEN : 1;
  1722. __IOM uint32_t TERRINTEN : 1;
  1723. __IOM uint32_t DIRCFG : 1;
  1724. __IOM uint32_t CIRMODE : 1;
  1725. __IOM uint32_t PERIMODE : 1;
  1726. __IOM uint32_t MIMODE : 1;
  1727. __IOM uint32_t PERSIZE : 2;
  1728. __IOM uint32_t MSIZE : 2;
  1729. __IOM uint32_t CHPL : 2;
  1730. __IOM uint32_t M2MMODE : 1;
  1731. __IM uint32_t RESERVED1 : 17;
  1732. } CHCFG4_B;
  1733. } ;
  1734. /* DMA channel 4 number of data register */
  1735. union
  1736. {
  1737. __IOM uint32_t CHNDATA4;
  1738. struct
  1739. {
  1740. __IOM uint32_t NDATAT : 16;
  1741. __IM uint32_t RESERVED1 : 16;
  1742. } CHNDATA4_B;
  1743. } ;
  1744. /* DMA channel 4 peripheral address register */
  1745. union
  1746. {
  1747. __IOM uint32_t CHPADDR4;
  1748. struct
  1749. {
  1750. __IOM uint32_t PERADDR : 32;
  1751. } CHPADDR4_B;
  1752. } ;
  1753. /* DMA channel 4 memory address register */
  1754. union
  1755. {
  1756. __IOM uint32_t CHMADDR4;
  1757. struct
  1758. {
  1759. __IOM uint32_t MEMADD : 32;
  1760. } CHMADDR4_B;
  1761. } ;
  1762. __IM uint32_t RESERVED4;
  1763. /* DMA channel configuration register */
  1764. union
  1765. {
  1766. __IOM uint32_t CHCFG5;
  1767. struct
  1768. {
  1769. __IOM uint32_t CHEN : 1;
  1770. __IOM uint32_t TCINTEN : 1;
  1771. __IOM uint32_t HTINTEN : 1;
  1772. __IOM uint32_t TERRINTEN : 1;
  1773. __IOM uint32_t DIRCFG : 1;
  1774. __IOM uint32_t CIRMODE : 1;
  1775. __IOM uint32_t PERIMODE : 1;
  1776. __IOM uint32_t MIMODE : 1;
  1777. __IOM uint32_t PERSIZE : 2;
  1778. __IOM uint32_t MSIZE : 2;
  1779. __IOM uint32_t CHPL : 2;
  1780. __IOM uint32_t M2MMODE : 1;
  1781. __IM uint32_t RESERVED1 : 17;
  1782. } CHCFG5_B;
  1783. } ;
  1784. /* DMA channel 5 number of data register */
  1785. union
  1786. {
  1787. __IOM uint32_t CHNDATA5;
  1788. struct
  1789. {
  1790. __IOM uint32_t NDATAT : 16;
  1791. __IM uint32_t RESERVED1 : 16;
  1792. } CHNDATA5_B;
  1793. } ;
  1794. /* DMA channel 5 peripheral address register */
  1795. union
  1796. {
  1797. __IOM uint32_t CHPADDR5;
  1798. struct
  1799. {
  1800. __IOM uint32_t PERADDR : 32;
  1801. } CHPADDR5_B;
  1802. } ;
  1803. /* DMA channel 5 memory address register */
  1804. union
  1805. {
  1806. __IOM uint32_t CHMADDR5;
  1807. struct
  1808. {
  1809. __IOM uint32_t MEMADD : 32;
  1810. } CHMADDR5_B;
  1811. } ;
  1812. __IM uint32_t RESERVED5;
  1813. /* DMA channel configuration register */
  1814. union
  1815. {
  1816. __IOM uint32_t CHCFG6;
  1817. struct
  1818. {
  1819. __IOM uint32_t CHEN : 1;
  1820. __IOM uint32_t TCINTEN : 1;
  1821. __IOM uint32_t HTINTEN : 1;
  1822. __IOM uint32_t TERRINTEN : 1;
  1823. __IOM uint32_t DIRCFG : 1;
  1824. __IOM uint32_t CIRMODE : 1;
  1825. __IOM uint32_t PERIMODE : 1;
  1826. __IOM uint32_t MIMODE : 1;
  1827. __IOM uint32_t PERSIZE : 2;
  1828. __IOM uint32_t MSIZE : 2;
  1829. __IOM uint32_t CHPL : 2;
  1830. __IOM uint32_t M2MMODE : 1;
  1831. __IM uint32_t RESERVED1 : 17;
  1832. } CHCFG6_B;
  1833. } ;
  1834. /* DMA channel 6 number of data register */
  1835. union
  1836. {
  1837. __IOM uint32_t CHNDATA6;
  1838. struct
  1839. {
  1840. __IOM uint32_t NDATAT : 16;
  1841. __IM uint32_t RESERVED1 : 16;
  1842. } CHNDATA6_B;
  1843. } ;
  1844. /* DMA channel 6 peripheral address register */
  1845. union
  1846. {
  1847. __IOM uint32_t CHPADDR6;
  1848. struct
  1849. {
  1850. __IOM uint32_t PERADDR : 32;
  1851. } CHPADDR6_B;
  1852. } ;
  1853. /* DMA channel 6 memory address register */
  1854. union
  1855. {
  1856. __IOM uint32_t CHMADDR6;
  1857. struct
  1858. {
  1859. __IOM uint32_t MEMADD : 32;
  1860. } CHMADDR6_B;
  1861. } ;
  1862. __IM uint32_t RESERVED6;
  1863. /* DMA channel configuration register */
  1864. union
  1865. {
  1866. __IOM uint32_t CHCFG7;
  1867. struct
  1868. {
  1869. __IOM uint32_t CHEN : 1;
  1870. __IOM uint32_t TCINTEN : 1;
  1871. __IOM uint32_t HTINTEN : 1;
  1872. __IOM uint32_t TERRINTEN : 1;
  1873. __IOM uint32_t DIRCFG : 1;
  1874. __IOM uint32_t CIRMODE : 1;
  1875. __IOM uint32_t PERIMODE : 1;
  1876. __IOM uint32_t MIMODE : 1;
  1877. __IOM uint32_t PERSIZE : 2;
  1878. __IOM uint32_t MSIZE : 2;
  1879. __IOM uint32_t CHPL : 2;
  1880. __IOM uint32_t M2MMODE : 1;
  1881. __IM uint32_t RESERVED1 : 17;
  1882. } CHCFG7_B;
  1883. } ;
  1884. /* DMA channel 7 number of data register */
  1885. union
  1886. {
  1887. __IOM uint32_t CHNDATA7;
  1888. struct
  1889. {
  1890. __IOM uint32_t NDATAT : 16;
  1891. __IM uint32_t RESERVED1 : 16;
  1892. } CHNDATA7_B;
  1893. } ;
  1894. /* DMA channel 7 peripheral address register */
  1895. union
  1896. {
  1897. __IOM uint32_t CHPADDR7;
  1898. struct
  1899. {
  1900. __IOM uint32_t PERADDR : 32;
  1901. } CHPADDR7_B;
  1902. } ;
  1903. /* DMA channel 7 memory address register */
  1904. union
  1905. {
  1906. __IOM uint32_t CHMADDR7;
  1907. struct
  1908. {
  1909. __IOM uint32_t MEMADD : 32;
  1910. } CHMADDR7_B;
  1911. } ;
  1912. __IM uint32_t RESERVED7[6];
  1913. /* DMA channel remap selection register */
  1914. union
  1915. {
  1916. __IOM uint32_t CHSEL;
  1917. struct
  1918. {
  1919. __IOM uint32_t CHSEL1 : 4;
  1920. __IOM uint32_t CHSEL2 : 4;
  1921. __IOM uint32_t CHSEL3 : 4;
  1922. __IOM uint32_t CHSEL4 : 4;
  1923. __IOM uint32_t CHSEL5 : 4;
  1924. __IOM uint32_t CHSEL6 : 4;
  1925. __IOM uint32_t CHSEL7 : 4;
  1926. __IM uint32_t RESERVED1 : 4;
  1927. } CHSEL_B;
  1928. } ;
  1929. } DMA_T;
  1930. /**
  1931. * @brief DMA CHANNEL register
  1932. */
  1933. typedef struct
  1934. {
  1935. /* DMA channel configuration register */
  1936. union
  1937. {
  1938. __IOM uint32_t CHCFG;
  1939. struct
  1940. {
  1941. __IOM uint32_t CHEN : 1;
  1942. __IOM uint32_t TCINTEN : 1;
  1943. __IOM uint32_t HTINTEN : 1;
  1944. __IOM uint32_t TERRINTEN : 1;
  1945. __IOM uint32_t DIRCFG : 1;
  1946. __IOM uint32_t CIRMODE : 1;
  1947. __IOM uint32_t PERIMODE : 1;
  1948. __IOM uint32_t MIMODE : 1;
  1949. __IOM uint32_t PERSIZE : 2;
  1950. __IOM uint32_t MSIZE : 2;
  1951. __IOM uint32_t CHPL : 2;
  1952. __IOM uint32_t M2MMODE : 1;
  1953. __IM uint32_t RESERVED1 : 17;
  1954. } CHCFG_B;
  1955. } ;
  1956. /* DMA channelx number of data register */
  1957. union
  1958. {
  1959. __IOM uint32_t CHNDATA;
  1960. struct
  1961. {
  1962. __IOM uint32_t NDATAT : 16;
  1963. __IM uint32_t RESERVED1 : 16;
  1964. } CHNDATA_B;
  1965. } ;
  1966. /* DMA channelx peripheral address register */
  1967. union
  1968. {
  1969. __IOM uint32_t CHPADDR;
  1970. struct
  1971. {
  1972. __IOM uint32_t PERADDR : 32;
  1973. } CHPADDR_B;
  1974. } ;
  1975. /* DMA channelx memory address register */
  1976. union
  1977. {
  1978. __IOM uint32_t CHMADDR;
  1979. struct
  1980. {
  1981. __IOM uint32_t MEMADD : 32;
  1982. } CHMADDR_B;
  1983. } ;
  1984. } DMA_CHANNEL_T;
  1985. /**
  1986. * @brief External interrupt/event controller (EINT)
  1987. */
  1988. typedef struct
  1989. {
  1990. /* Interrupt mask register */
  1991. union
  1992. {
  1993. __IOM uint32_t IMASK;
  1994. struct
  1995. {
  1996. __IOM uint32_t IMASK0 : 1;
  1997. __IOM uint32_t IMASK1 : 1;
  1998. __IOM uint32_t IMASK2 : 1;
  1999. __IOM uint32_t IMASK3 : 1;
  2000. __IOM uint32_t IMASK4 : 1;
  2001. __IOM uint32_t IMASK5 : 1;
  2002. __IOM uint32_t IMASK6 : 1;
  2003. __IOM uint32_t IMASK7 : 1;
  2004. __IOM uint32_t IMASK8 : 1;
  2005. __IOM uint32_t IMASK9 : 1;
  2006. __IOM uint32_t IMASK10 : 1;
  2007. __IOM uint32_t IMASK11 : 1;
  2008. __IOM uint32_t IMASK12 : 1;
  2009. __IOM uint32_t IMASK13 : 1;
  2010. __IOM uint32_t IMASK14 : 1;
  2011. __IOM uint32_t IMASK15 : 1;
  2012. __IOM uint32_t IMASK16 : 1;
  2013. __IOM uint32_t IMASK17 : 1;
  2014. __IOM uint32_t IMASK18 : 1;
  2015. __IOM uint32_t IMASK19 : 1;
  2016. __IOM uint32_t IMASK20 : 1;
  2017. __IOM uint32_t IMASK21 : 1;
  2018. __IOM uint32_t IMASK22 : 1;
  2019. __IOM uint32_t IMASK23 : 1;
  2020. __IOM uint32_t IMASK24 : 1;
  2021. __IOM uint32_t IMASK25 : 1;
  2022. __IOM uint32_t IMASK26 : 1;
  2023. __IOM uint32_t IMASK27 : 1;
  2024. __IOM uint32_t IMASK28 : 1;
  2025. __IOM uint32_t IMASK29 : 1;
  2026. __IOM uint32_t IMASK30 : 1;
  2027. __IOM uint32_t IMASK31 : 1;
  2028. } IMASK_B;
  2029. } ;
  2030. /* Event mask register (EINT_EVTMASK) */
  2031. union
  2032. {
  2033. __IOM uint32_t EMASK;
  2034. struct
  2035. {
  2036. __IOM uint32_t EMASK0 : 1;
  2037. __IOM uint32_t EMASK1 : 1;
  2038. __IOM uint32_t EMASK2 : 1;
  2039. __IOM uint32_t EMASK3 : 1;
  2040. __IOM uint32_t EMASK4 : 1;
  2041. __IOM uint32_t EMASK5 : 1;
  2042. __IOM uint32_t EMASK6 : 1;
  2043. __IOM uint32_t EMASK7 : 1;
  2044. __IOM uint32_t EMASK8 : 1;
  2045. __IOM uint32_t EMASK9 : 1;
  2046. __IOM uint32_t EMASK10 : 1;
  2047. __IOM uint32_t EMASK11 : 1;
  2048. __IOM uint32_t EMASK12 : 1;
  2049. __IOM uint32_t EMASK13 : 1;
  2050. __IOM uint32_t EMASK14 : 1;
  2051. __IOM uint32_t EMASK15 : 1;
  2052. __IOM uint32_t EMASK16 : 1;
  2053. __IOM uint32_t EMASK17 : 1;
  2054. __IOM uint32_t EMASK18 : 1;
  2055. __IOM uint32_t EMASK19 : 1;
  2056. __IOM uint32_t EMASK20 : 1;
  2057. __IOM uint32_t EMASK21 : 1;
  2058. __IOM uint32_t EMASK22 : 1;
  2059. __IOM uint32_t EMASK23 : 1;
  2060. __IOM uint32_t EMASK24 : 1;
  2061. __IOM uint32_t EMASK25 : 1;
  2062. __IOM uint32_t EMASK26 : 1;
  2063. __IOM uint32_t EMASK27 : 1;
  2064. __IOM uint32_t EMASK28 : 1;
  2065. __IOM uint32_t EMASK29 : 1;
  2066. __IOM uint32_t EMASK30 : 1;
  2067. __IOM uint32_t EMASK31 : 1;
  2068. } EMASK_B;
  2069. } ;
  2070. union
  2071. {
  2072. __IOM uint32_t RTEN;
  2073. struct
  2074. {
  2075. __IOM uint32_t RTEN0 : 1;
  2076. __IOM uint32_t RTEN1 : 1;
  2077. __IOM uint32_t RTEN2 : 1;
  2078. __IOM uint32_t RTEN3 : 1;
  2079. __IOM uint32_t RTEN4 : 1;
  2080. __IOM uint32_t RTEN5 : 1;
  2081. __IOM uint32_t RTEN6 : 1;
  2082. __IOM uint32_t RTEN7 : 1;
  2083. __IOM uint32_t RTEN8 : 1;
  2084. __IOM uint32_t RTEN9 : 1;
  2085. __IOM uint32_t RTEN10 : 1;
  2086. __IOM uint32_t RTEN11 : 1;
  2087. __IOM uint32_t RTEN12 : 1;
  2088. __IOM uint32_t RTEN13 : 1;
  2089. __IOM uint32_t RTEN14 : 1;
  2090. __IOM uint32_t RTEN15 : 1;
  2091. __IOM uint32_t RTEN16 : 1;
  2092. __IOM uint32_t RTEN17 : 1;
  2093. __IM uint32_t RESERVED1 : 1;
  2094. __IOM uint32_t RTEN19 : 1;
  2095. __IOM uint32_t RTEN20 : 1;
  2096. __IOM uint32_t RTEN21 : 1;
  2097. __IOM uint32_t RTEN22 : 1;
  2098. __IM uint32_t RESERVED2 : 8;
  2099. __IOM uint32_t RTEN31 : 1;
  2100. } RTEN_B;
  2101. } ;
  2102. /* Falling Trigger selection register */
  2103. union
  2104. {
  2105. __IOM uint32_t FTEN;
  2106. struct
  2107. {
  2108. __IOM uint32_t FTEN0 : 1;
  2109. __IOM uint32_t FTEN1 : 1;
  2110. __IOM uint32_t FTEN2 : 1;
  2111. __IOM uint32_t FTEN3 : 1;
  2112. __IOM uint32_t FTEN4 : 1;
  2113. __IOM uint32_t FTEN5 : 1;
  2114. __IOM uint32_t FTEN6 : 1;
  2115. __IOM uint32_t FTEN7 : 1;
  2116. __IOM uint32_t FTEN8 : 1;
  2117. __IOM uint32_t FTEN9 : 1;
  2118. __IOM uint32_t FTEN10 : 1;
  2119. __IOM uint32_t FTEN11 : 1;
  2120. __IOM uint32_t FTEN12 : 1;
  2121. __IOM uint32_t FTEN13 : 1;
  2122. __IOM uint32_t FTEN14 : 1;
  2123. __IOM uint32_t FTEN15 : 1;
  2124. __IOM uint32_t FTEN16 : 1;
  2125. __IOM uint32_t FTEN17 : 1;
  2126. __IM uint32_t RESERVED1 : 1;
  2127. __IOM uint32_t FTEN19 : 1;
  2128. __IOM uint32_t FTEN20 : 1;
  2129. __IOM uint32_t FTEN21 : 1;
  2130. __IOM uint32_t FTEN22 : 1;
  2131. __IM uint32_t RESERVED2 : 8;
  2132. __IOM uint32_t FTEN31 : 1;
  2133. } FTEN_B;
  2134. } ;
  2135. /* Software interrupt event register */
  2136. union
  2137. {
  2138. __IOM uint32_t SWINTE;
  2139. struct
  2140. {
  2141. __IOM uint32_t SWINTE0 : 1;
  2142. __IOM uint32_t SWINTE1 : 1;
  2143. __IOM uint32_t SWINTE2 : 1;
  2144. __IOM uint32_t SWINTE3 : 1;
  2145. __IOM uint32_t SWINTE4 : 1;
  2146. __IOM uint32_t SWINTE5 : 1;
  2147. __IOM uint32_t SWINTE6 : 1;
  2148. __IOM uint32_t SWINTE7 : 1;
  2149. __IOM uint32_t SWINTE8 : 1;
  2150. __IOM uint32_t SWINTE9 : 1;
  2151. __IOM uint32_t SWINTE10 : 1;
  2152. __IOM uint32_t SWINTE11 : 1;
  2153. __IOM uint32_t SWINTE12 : 1;
  2154. __IOM uint32_t SWINTE13 : 1;
  2155. __IOM uint32_t SWINTE14 : 1;
  2156. __IOM uint32_t SWINTE15 : 1;
  2157. __IOM uint32_t SWINTE16 : 1;
  2158. __IOM uint32_t SWINTE17 : 1;
  2159. __IM uint32_t RESERVED1 : 1;
  2160. __IOM uint32_t SWINTE19 : 1;
  2161. __IOM uint32_t SWINTE20 : 1;
  2162. __IOM uint32_t SWINTE21 : 1;
  2163. __IOM uint32_t SWINTE22 : 1;
  2164. __IM uint32_t RESERVED2 : 8;
  2165. __IOM uint32_t SWINTE31 : 1;
  2166. } SWINTE_B;
  2167. } ;
  2168. /* Pending register */
  2169. union
  2170. {
  2171. __IOM uint32_t IPEND;
  2172. struct
  2173. {
  2174. __IOM uint32_t IPEND0 : 1;
  2175. __IOM uint32_t IPEND1 : 1;
  2176. __IOM uint32_t IPEND2 : 1;
  2177. __IOM uint32_t IPEND3 : 1;
  2178. __IOM uint32_t IPEND4 : 1;
  2179. __IOM uint32_t IPEND5 : 1;
  2180. __IOM uint32_t IPEND6 : 1;
  2181. __IOM uint32_t IPEND7 : 1;
  2182. __IOM uint32_t IPEND8 : 1;
  2183. __IOM uint32_t IPEND9 : 1;
  2184. __IOM uint32_t IPEND10 : 1;
  2185. __IOM uint32_t IPEND11 : 1;
  2186. __IOM uint32_t IPEND12 : 1;
  2187. __IOM uint32_t IPEND13 : 1;
  2188. __IOM uint32_t IPEND14 : 1;
  2189. __IOM uint32_t IPEND15 : 1;
  2190. __IOM uint32_t IPEND16 : 1;
  2191. __IOM uint32_t IPEND17 : 1;
  2192. __IM uint32_t RESERVED1 : 1;
  2193. __IOM uint32_t IPEND19 : 1;
  2194. __IOM uint32_t IPEND20 : 1;
  2195. __IOM uint32_t IPEND21 : 1;
  2196. __IOM uint32_t IPEND22 : 1;
  2197. __IM uint32_t RESERVED2 : 8;
  2198. __IOM uint32_t IPEND31 : 1;
  2199. } IPEND_B;
  2200. } ;
  2201. } EINT_T;
  2202. /**
  2203. * @brief FMC (FMC)
  2204. */
  2205. typedef struct
  2206. {
  2207. /* Flash access control register */
  2208. union
  2209. {
  2210. __IOM uint32_t CTRL1;
  2211. struct
  2212. {
  2213. __IOM uint32_t WS : 3;
  2214. __IM uint32_t RESERVED1 : 1;
  2215. __IOM uint32_t PBEN : 1;
  2216. __IM uint32_t PBSF : 1;
  2217. __IM uint32_t RESERVED3 : 26;
  2218. } CTRL1_B;
  2219. } ;
  2220. /* Flash key register */
  2221. union
  2222. {
  2223. __OM uint32_t KEY;
  2224. struct
  2225. {
  2226. __OM uint32_t KEY : 32;
  2227. } KEY_B;
  2228. } ;
  2229. /* Flash option key register */
  2230. union
  2231. {
  2232. __OM uint32_t OBKEY;
  2233. struct
  2234. {
  2235. __OM uint32_t OBKEY : 32;
  2236. } OBKEY_B;
  2237. } ;
  2238. /* Flash status register */
  2239. union
  2240. {
  2241. __IOM uint32_t STS;
  2242. struct
  2243. {
  2244. __IM uint32_t BUSYF : 1;
  2245. __IM uint32_t RESERVED1 : 1;
  2246. __IOM uint32_t PEF : 1;
  2247. __IM uint32_t RESERVED2 : 1;
  2248. __IOM uint32_t WPEF : 1;
  2249. __IOM uint32_t OCF : 1;
  2250. __IM uint32_t RESERVED3 : 26;
  2251. } STS_B;
  2252. } ;
  2253. /* Flash control register */
  2254. union
  2255. {
  2256. __IOM uint32_t CTRL2;
  2257. struct
  2258. {
  2259. __IOM uint32_t PG : 1;
  2260. __IOM uint32_t PAGEERA : 1;
  2261. __IOM uint32_t MASSERA : 1;
  2262. __IM uint32_t RESERVED1 : 1;
  2263. __IOM uint32_t OBP : 1;
  2264. __IOM uint32_t OBE : 1;
  2265. __IOM uint32_t STA : 1;
  2266. __IOM uint32_t LOCK : 1;
  2267. __IM uint32_t RESERVED2 : 1;
  2268. __IOM uint32_t OBWEN : 1;
  2269. __IOM uint32_t ERRIE : 1;
  2270. __IM uint32_t RESERVED3 : 1;
  2271. __IOM uint32_t OCIE : 1;
  2272. __IOM uint32_t OBLOAD : 1;
  2273. __IM uint32_t RESERVED4 : 18;
  2274. } CTRL2_B;
  2275. } ;
  2276. /* Flash address register */
  2277. union
  2278. {
  2279. __OM uint32_t ADDR;
  2280. struct
  2281. {
  2282. __OM uint32_t ADDR : 32;
  2283. } ADDR_B;
  2284. } ;
  2285. __IM uint32_t RESERVED;
  2286. /* Option byte register */
  2287. union
  2288. {
  2289. __IM uint32_t OBCS;
  2290. struct
  2291. {
  2292. __IM uint32_t OBE : 1;
  2293. __IM uint32_t READPROT : 2;
  2294. __IM uint32_t RESERVED1 : 5;
  2295. __IM uint32_t WDTSEL : 1;
  2296. __IM uint32_t RSTSTOP : 1;
  2297. __IM uint32_t RSTSTDB : 1;
  2298. __IM uint32_t RESERVED2 : 1;
  2299. __IM uint32_t nBOOT1 : 1;
  2300. __IM uint32_t VDDAMONI : 1;
  2301. __IM uint32_t SRAMPARITY : 1;
  2302. __IM uint32_t nBOOT0 : 1;
  2303. __IM uint32_t DATA0 : 8;
  2304. __IM uint32_t DATA1 : 8;
  2305. } OBCS_B;
  2306. } ;
  2307. /* Write protection register */
  2308. union
  2309. {
  2310. __IM uint32_t WRTPROT;
  2311. struct
  2312. {
  2313. __IM uint32_t WRTPROT : 32;
  2314. } WRTPROT_B;
  2315. } ;
  2316. } FMC_T;
  2317. /*
  2318. * @brief General-purpose I/Os (GPIO)
  2319. */
  2320. typedef struct
  2321. {
  2322. /* GPIO port mode register*/
  2323. union
  2324. {
  2325. __IOM uint32_t MODE;
  2326. struct
  2327. {
  2328. __IOM uint32_t MODE0 : 2;
  2329. __IOM uint32_t MODE1 : 2;
  2330. __IOM uint32_t MODE2 : 2;
  2331. __IOM uint32_t MODE3 : 2;
  2332. __IOM uint32_t MODE4 : 2;
  2333. __IOM uint32_t MODE5 : 2;
  2334. __IOM uint32_t MODE6 : 2;
  2335. __IOM uint32_t MODE7 : 2;
  2336. __IOM uint32_t MODE8 : 2;
  2337. __IOM uint32_t MODE9 : 2;
  2338. __IOM uint32_t MODE10 : 2;
  2339. __IOM uint32_t MODE11 : 2;
  2340. __IOM uint32_t MODE12 : 2;
  2341. __IOM uint32_t MODE13 : 2;
  2342. __IOM uint32_t MODE14 : 2;
  2343. __IOM uint32_t MODE15 : 2;
  2344. } MODE_B;
  2345. } ;
  2346. /* GPIO port output type register*/
  2347. union
  2348. {
  2349. __IOM uint32_t OMODE;
  2350. struct
  2351. {
  2352. __IOM uint32_t OMODE0 : 1;
  2353. __IOM uint32_t OMODE1 : 1;
  2354. __IOM uint32_t OMODE2 : 1;
  2355. __IOM uint32_t OMODE3 : 1;
  2356. __IOM uint32_t OMODE4 : 1;
  2357. __IOM uint32_t OMODE5 : 1;
  2358. __IOM uint32_t OMODE6 : 1;
  2359. __IOM uint32_t OMODE7 : 1;
  2360. __IOM uint32_t OMODE8 : 1;
  2361. __IOM uint32_t OMODE9 : 1;
  2362. __IOM uint32_t OMODE10 : 1;
  2363. __IOM uint32_t OMODE11 : 1;
  2364. __IOM uint32_t OMODE12 : 1;
  2365. __IOM uint32_t OMODE13 : 1;
  2366. __IOM uint32_t OMODE14 : 1;
  2367. __IOM uint32_t OMODE15 : 1;
  2368. __IOM uint32_t RESERVED1 : 16;
  2369. } OMODE_B;
  2370. } ;
  2371. /* GPIO port output speed register*/
  2372. union
  2373. {
  2374. __IOM uint32_t OSSEL;
  2375. struct
  2376. {
  2377. __IOM uint32_t OSSEL0 : 2;
  2378. __IOM uint32_t OSSEL1 : 2;
  2379. __IOM uint32_t OSSEL2 : 2;
  2380. __IOM uint32_t OSSEL3 : 2;
  2381. __IOM uint32_t OSSEL4 : 2;
  2382. __IOM uint32_t OSSEL5 : 2;
  2383. __IOM uint32_t OSSEL6 : 2;
  2384. __IOM uint32_t OSSEL7 : 2;
  2385. __IOM uint32_t OSSEL8 : 2;
  2386. __IOM uint32_t OSSEL9 : 2;
  2387. __IOM uint32_t OSSEL10 : 2;
  2388. __IOM uint32_t OSSEL11 : 2;
  2389. __IOM uint32_t OSSEL12 : 2;
  2390. __IOM uint32_t OSSEL13 : 2;
  2391. __IOM uint32_t OSSEL14 : 2;
  2392. __IOM uint32_t OSSEL15 : 2;
  2393. } OSSEL_B;
  2394. } ;
  2395. /* GPIO port pull-up/pull-down register*/
  2396. union
  2397. {
  2398. __IOM uint32_t PUPD;
  2399. struct
  2400. {
  2401. __IOM uint32_t PUPD0 : 2;
  2402. __IOM uint32_t PUPD1 : 2;
  2403. __IOM uint32_t PUPD2 : 2;
  2404. __IOM uint32_t PUPD3 : 2;
  2405. __IOM uint32_t PUPD4 : 2;
  2406. __IOM uint32_t PUPD5 : 2;
  2407. __IOM uint32_t PUPD6 : 2;
  2408. __IOM uint32_t PUPD7 : 2;
  2409. __IOM uint32_t PUPD8 : 2;
  2410. __IOM uint32_t PUPD9 : 2;
  2411. __IOM uint32_t PUPD10 : 2;
  2412. __IOM uint32_t PUPD11 : 2;
  2413. __IOM uint32_t PUPD12 : 2;
  2414. __IOM uint32_t PUPD13 : 2;
  2415. __IOM uint32_t PUPD14 : 2;
  2416. __IOM uint32_t PUPD15 : 2;
  2417. } PUPD_B;
  2418. } ;
  2419. /* GPIO port input data register*/
  2420. union
  2421. {
  2422. __IM uint32_t IDATA;
  2423. struct
  2424. {
  2425. __IM uint32_t IDATA0 : 1;
  2426. __IM uint32_t IDATA1 : 1;
  2427. __IM uint32_t IDATA2 : 1;
  2428. __IM uint32_t IDATA3 : 1;
  2429. __IM uint32_t IDATA4 : 1;
  2430. __IM uint32_t IDATA5 : 1;
  2431. __IM uint32_t IDATA6 : 1;
  2432. __IM uint32_t IDATA7 : 1;
  2433. __IM uint32_t IDATA8 : 1;
  2434. __IM uint32_t IDATA9 : 1;
  2435. __IM uint32_t IDATA10 : 1;
  2436. __IM uint32_t IDATA11 : 1;
  2437. __IM uint32_t IDATA12 : 1;
  2438. __IM uint32_t IDATA13 : 1;
  2439. __IM uint32_t IDATA14 : 1;
  2440. __IM uint32_t IDATA15 : 1;
  2441. __IM uint32_t RESERVED1 : 16;
  2442. } IDATA_B;
  2443. } ;
  2444. /* GPIO port output data register*/
  2445. union
  2446. {
  2447. __IOM uint32_t ODATA;
  2448. struct
  2449. {
  2450. __IOM uint32_t ODATA0 : 1;
  2451. __IOM uint32_t ODATA1 : 1;
  2452. __IOM uint32_t ODATA2 : 1;
  2453. __IOM uint32_t ODATA3 : 1;
  2454. __IOM uint32_t ODATA4 : 1;
  2455. __IOM uint32_t ODATA5 : 1;
  2456. __IOM uint32_t ODATA6 : 1;
  2457. __IOM uint32_t ODATA7 : 1;
  2458. __IOM uint32_t ODATA8 : 1;
  2459. __IOM uint32_t ODATA9 : 1;
  2460. __IOM uint32_t ODATA10 : 1;
  2461. __IOM uint32_t ODATA11 : 1;
  2462. __IOM uint32_t ODATA12 : 1;
  2463. __IOM uint32_t ODATA13 : 1;
  2464. __IOM uint32_t ODATA14 : 1;
  2465. __IOM uint32_t ODATA15 : 1;
  2466. __IOM uint32_t RESERVED1 : 16;
  2467. } ODATA_B;
  2468. } ;
  2469. /* GPIO port bit set/clear register*/
  2470. union
  2471. {
  2472. __OM uint32_t BSC;
  2473. struct
  2474. {
  2475. __OM uint32_t BS0 : 1;
  2476. __OM uint32_t BS1 : 1;
  2477. __OM uint32_t BS2 : 1;
  2478. __OM uint32_t BS3 : 1;
  2479. __OM uint32_t BS4 : 1;
  2480. __OM uint32_t BS5 : 1;
  2481. __OM uint32_t BS6 : 1;
  2482. __OM uint32_t BS7 : 1;
  2483. __OM uint32_t BS8 : 1;
  2484. __OM uint32_t BS9 : 1;
  2485. __OM uint32_t BS10 : 1;
  2486. __OM uint32_t BS11 : 1;
  2487. __OM uint32_t BS12 : 1;
  2488. __OM uint32_t BS13 : 1;
  2489. __OM uint32_t BS14 : 1;
  2490. __OM uint32_t BS15 : 1;
  2491. __OM uint32_t BC0 : 1;
  2492. __OM uint32_t BC1 : 1;
  2493. __OM uint32_t BC2 : 1;
  2494. __OM uint32_t BC3 : 1;
  2495. __OM uint32_t BC4 : 1;
  2496. __OM uint32_t BC5 : 1;
  2497. __OM uint32_t BC6 : 1;
  2498. __OM uint32_t BC7 : 1;
  2499. __OM uint32_t BC8 : 1;
  2500. __OM uint32_t BC9 : 1;
  2501. __OM uint32_t BC10 : 1;
  2502. __OM uint32_t BC11 : 1;
  2503. __OM uint32_t BC12 : 1;
  2504. __OM uint32_t BC13 : 1;
  2505. __OM uint32_t BC14 : 1;
  2506. __OM uint32_t BC15 : 1;
  2507. } BSC_B;
  2508. } ;
  2509. /* GPIO port configuration lock register*/
  2510. union
  2511. {
  2512. __IOM uint32_t LOCK;
  2513. struct
  2514. {
  2515. __IOM uint32_t LOCK0 : 1;
  2516. __IOM uint32_t LOCK1 : 1;
  2517. __IOM uint32_t LOCK2 : 1;
  2518. __IOM uint32_t LOCK3 : 1;
  2519. __IOM uint32_t LOCK4 : 1;
  2520. __IOM uint32_t LOCK5 : 1;
  2521. __IOM uint32_t LOCK6 : 1;
  2522. __IOM uint32_t LOCK7 : 1;
  2523. __IOM uint32_t LOCK8 : 1;
  2524. __IOM uint32_t LOCK9 : 1;
  2525. __IOM uint32_t LOCK10 : 1;
  2526. __IOM uint32_t LOCK11 : 1;
  2527. __IOM uint32_t LOCK12 : 1;
  2528. __IOM uint32_t LOCK13 : 1;
  2529. __IOM uint32_t LOCK14 : 1;
  2530. __IOM uint32_t LOCK15 : 1;
  2531. __IOM uint32_t LOCKKEY : 1;
  2532. __IOM uint32_t RESERVED1 : 15;
  2533. } LOCK_B;
  2534. } ;
  2535. /* GPIO alternate function low register*/
  2536. union
  2537. {
  2538. __IOM uint32_t ALFL;
  2539. struct
  2540. {
  2541. __IOM uint32_t AF0 : 4;
  2542. __IOM uint32_t AF1 : 4;
  2543. __IOM uint32_t AF2 : 4;
  2544. __IOM uint32_t AF3 : 4;
  2545. __IOM uint32_t AF4 : 4;
  2546. __IOM uint32_t AF5 : 4;
  2547. __IOM uint32_t AF6 : 4;
  2548. __IOM uint32_t AF7 : 4;
  2549. } ALFL_B;
  2550. } ;
  2551. /* GPIO alternate function high register*/
  2552. union
  2553. {
  2554. __IOM uint32_t ALFH;
  2555. struct
  2556. {
  2557. __IOM uint32_t AF0 : 4;
  2558. __IOM uint32_t AF1 : 4;
  2559. __IOM uint32_t AF2 : 4;
  2560. __IOM uint32_t AF3 : 4;
  2561. __IOM uint32_t AF4 : 4;
  2562. __IOM uint32_t AF5 : 4;
  2563. __IOM uint32_t AF6 : 4;
  2564. __IOM uint32_t AF7 : 4;
  2565. } ALFH_B;
  2566. } ;
  2567. /* Port bit clear register*/
  2568. union
  2569. {
  2570. __OM uint32_t BR;
  2571. struct
  2572. {
  2573. __OM uint32_t BR0 : 1;
  2574. __OM uint32_t BR1 : 1;
  2575. __OM uint32_t BR2 : 1;
  2576. __OM uint32_t BR3 : 1;
  2577. __OM uint32_t BR4 : 1;
  2578. __OM uint32_t BR5 : 1;
  2579. __OM uint32_t BR6 : 1;
  2580. __OM uint32_t BR7 : 1;
  2581. __OM uint32_t BR8 : 1;
  2582. __OM uint32_t BR9 : 1;
  2583. __OM uint32_t BR10 : 1;
  2584. __OM uint32_t BR11 : 1;
  2585. __OM uint32_t BR12 : 1;
  2586. __OM uint32_t BR13 : 1;
  2587. __OM uint32_t BR14 : 1;
  2588. __OM uint32_t BR15 : 1;
  2589. __OM uint32_t RESERVED1 : 16;
  2590. } BR_B;
  2591. } ;
  2592. } GPIO_T;
  2593. /**
  2594. * @brief Inter-integrated circuit (I2C)
  2595. */
  2596. typedef struct
  2597. {
  2598. /* Control register 1*/
  2599. union
  2600. {
  2601. __IOM uint32_t CTRL1;
  2602. struct
  2603. {
  2604. __IOM uint32_t I2CEN : 1;
  2605. __IOM uint32_t TXIEN : 1;
  2606. __IOM uint32_t RXIEN : 1;
  2607. __IOM uint32_t SADDRMIEN : 1;
  2608. __IOM uint32_t NACKRXIEN : 1;
  2609. __IOM uint32_t STOPIEN : 1;
  2610. __IOM uint32_t TXCIEN : 1;
  2611. __IOM uint32_t ERRIEN : 1;
  2612. __IOM uint32_t DNFCFG : 4;
  2613. __IOM uint32_t ANFD : 1;
  2614. __OM uint32_t SWRST : 1;
  2615. __IOM uint32_t DMATXEN : 1;
  2616. __IOM uint32_t DMARXEN : 1;
  2617. __IOM uint32_t SBCEN : 1;
  2618. __IOM uint32_t CLKSTRETCHD : 1;
  2619. __IOM uint32_t WUPEN : 1;
  2620. __IOM uint32_t RBEN : 1;
  2621. __IOM uint32_t HADDREN : 1;
  2622. __IOM uint32_t DEADDREN : 1;
  2623. __IOM uint32_t ALTEN : 1;
  2624. __IOM uint32_t PECEN : 1;
  2625. __IM uint32_t RESERVED2 : 8;
  2626. } CTRL1_B;
  2627. } ;
  2628. /* Control register 2*/
  2629. union
  2630. {
  2631. __IOM uint32_t CTRL2;
  2632. struct
  2633. {
  2634. __IOM uint32_t SADDR0 : 1;
  2635. __IOM uint32_t SADDR1 : 7;
  2636. __IOM uint32_t SADDR8 : 2;
  2637. __IOM uint32_t TXDIR : 1;
  2638. __IOM uint32_t SADDRLEN : 1;
  2639. __IOM uint32_t ADDR10 : 1;
  2640. __IOM uint32_t START : 1;
  2641. __IOM uint32_t STOP : 1;
  2642. __IOM uint32_t NACKEN : 1;
  2643. __IOM uint32_t NUMBYT : 8;
  2644. __IOM uint32_t RELOADEN : 1;
  2645. __IOM uint32_t ENDCFG : 1;
  2646. __IOM uint32_t PEC : 1;
  2647. __IOM uint32_t RESERVED1 : 5;
  2648. } CTRL2_B;
  2649. } ;
  2650. /* Own address register 1*/
  2651. union
  2652. {
  2653. __IOM uint32_t ADDR1;
  2654. struct
  2655. {
  2656. __IOM uint32_t ADDR0 : 1;
  2657. __IOM uint32_t ADDR1 : 7;
  2658. __IOM uint32_t ADDR8 : 2;
  2659. __IOM uint32_t ADDR1LEN : 1;
  2660. __IM uint32_t RESERVED1 : 4;
  2661. __IOM uint32_t ADDR1EN : 1;
  2662. __IM uint32_t RESERVED2 : 16;
  2663. } ADDR1_B;
  2664. } ;
  2665. /* Own address register 2*/
  2666. union
  2667. {
  2668. __IOM uint32_t ADDR2;
  2669. struct
  2670. {
  2671. __IM uint32_t RESERVED1 : 1;
  2672. __IOM uint32_t ADDR2 : 7;
  2673. __IOM uint32_t ADDR2MSK : 3;
  2674. __IM uint32_t RESERVED2 : 4;
  2675. __IOM uint32_t ADDR2EN : 1;
  2676. __IM uint32_t RESERVED3 : 16;
  2677. } ADDR2_B;
  2678. } ;
  2679. /* Timing register*/
  2680. union
  2681. {
  2682. __IOM uint32_t TIMING;
  2683. struct
  2684. {
  2685. __IOM uint32_t SCLL : 8;
  2686. __IOM uint32_t SCLH : 8;
  2687. __IOM uint32_t DATAHT : 4;
  2688. __IOM uint32_t DATAT : 4;
  2689. __IM uint32_t RESERVED1 : 4;
  2690. __IOM uint32_t TIMINGPSC : 4;
  2691. } TIMING_B;
  2692. } ;
  2693. /* Status register 1*/
  2694. union
  2695. {
  2696. __IOM uint32_t TIMEOUT;
  2697. struct
  2698. {
  2699. __IOM uint32_t TIMEOUTA : 12;
  2700. __IOM uint32_t IDLECLKTO : 1;
  2701. __IM uint32_t RESERVED1 : 2;
  2702. __IOM uint32_t CLKTOEN : 1;
  2703. __IOM uint32_t TIMEOUTB : 12;
  2704. __IM uint32_t RESERVED2 : 3;
  2705. __IOM uint32_t EXCLKTOEN : 1;
  2706. } TIMEOUT_B;
  2707. } ;
  2708. /* Interrupt and Status register*/
  2709. union
  2710. {
  2711. __IOM uint32_t STS;
  2712. struct
  2713. {
  2714. __IOM uint32_t TXBEFLG : 1;
  2715. __IOM uint32_t TXINTFLG : 1;
  2716. __IM uint32_t RXBNEFLG : 1;
  2717. __IM uint32_t ADDRMFLG : 1;
  2718. __IM uint32_t NACKFLG : 1;
  2719. __IM uint32_t STOPFLG : 1;
  2720. __IM uint32_t TXCFLG : 1;
  2721. __IM uint32_t TXCRFLG : 1;
  2722. __IM uint32_t BERRFLG : 1;
  2723. __IM uint32_t ALFLG : 1;
  2724. __IM uint32_t OVRURFLG : 1;
  2725. __IM uint32_t PECEFLG : 1;
  2726. __IM uint32_t TTEFLG : 1;
  2727. __IM uint32_t SMBALTFLG : 1;
  2728. __IM uint32_t RESERVED1 : 1;
  2729. __IM uint32_t BUSBSYFLG : 1;
  2730. __IM uint32_t TXDIRFLG : 1;
  2731. __IM uint32_t ADDRCMFLG : 7;
  2732. __IM uint32_t RESERVED2 : 8;
  2733. } STS_B;
  2734. } ;
  2735. /* Interrupt clear register*/
  2736. union
  2737. {
  2738. __OM uint32_t INTFCLR;
  2739. struct
  2740. {
  2741. __IM uint32_t RESERVED1 : 3;
  2742. __OM uint32_t ADDRMCLR : 1;
  2743. __OM uint32_t NACKCLR : 1;
  2744. __OM uint32_t STOPCLR : 1;
  2745. __IM uint32_t RESERVED2 : 2;
  2746. __OM uint32_t BERRCLR : 1;
  2747. __OM uint32_t ALCLR : 1;
  2748. __OM uint32_t OVRURCLR : 1;
  2749. __OM uint32_t PECECLR : 1;
  2750. __OM uint32_t TTECLR : 1;
  2751. __OM uint32_t SMBALTCLR : 1;
  2752. __IM uint32_t RESERVED3 : 18;
  2753. } INTFCLR_B;
  2754. } ;
  2755. /* PEC data register*/
  2756. union
  2757. {
  2758. __IM uint32_t PEC;
  2759. struct
  2760. {
  2761. __IM uint32_t PEC : 8;
  2762. __IM uint32_t RESERVED1 : 24;
  2763. } PEC_B;
  2764. } ;
  2765. /* Receive data register*/
  2766. union
  2767. {
  2768. __IM uint32_t RXDATA;
  2769. struct
  2770. {
  2771. __IM uint32_t RXDATA : 8;
  2772. __IM uint32_t RESERVED1 : 24;
  2773. } RXDATA_B;
  2774. } ;
  2775. /* Transmit data register*/
  2776. union
  2777. {
  2778. __IOM uint32_t TXDATA;
  2779. struct
  2780. {
  2781. __IOM uint32_t TXDATA : 8;
  2782. __IOM uint32_t RESERVED1 : 24;
  2783. } TXDATA_B;
  2784. } ;
  2785. } I2C_T;
  2786. /**
  2787. * @brief Independent watchdog (IWDT)
  2788. */
  2789. typedef struct
  2790. {
  2791. /* Key register */
  2792. union
  2793. {
  2794. __OM uint32_t KEY;
  2795. struct
  2796. {
  2797. __OM uint32_t KEY : 16;
  2798. __IM uint32_t RESERVED1 : 16;
  2799. } KEY_B;
  2800. } ;
  2801. /* Prescaler register */
  2802. union
  2803. {
  2804. __IOM uint32_t PSC;
  2805. struct
  2806. {
  2807. __IOM uint32_t PSC : 3;
  2808. __IM uint32_t RESERVED1 : 29;
  2809. } PSC_B;
  2810. } ;
  2811. /* Counter reload register */
  2812. union
  2813. {
  2814. __IOM uint32_t CNTRLD;
  2815. struct
  2816. {
  2817. __IOM uint32_t CNTRLD : 12;
  2818. __IM uint32_t RESERVED1 : 20;
  2819. } CNTRLD_B;
  2820. } ;
  2821. /* Status register */
  2822. union
  2823. {
  2824. __IM uint32_t STS;
  2825. struct
  2826. {
  2827. __IM uint32_t PSCUFLG : 1;
  2828. __IM uint32_t CNTUFLG : 1;
  2829. __IM uint32_t WINUFLG : 1;
  2830. __IM uint32_t RESERVED1 : 29;
  2831. } STS_B;
  2832. } ;
  2833. /* Window register */
  2834. union
  2835. {
  2836. __IOM uint32_t WIN;
  2837. struct
  2838. {
  2839. __IOM uint32_t WIN : 12;
  2840. __IM uint32_t RESERVED1 : 20;
  2841. } WIN_B;
  2842. } ;
  2843. } IWDT_T;
  2844. /**
  2845. * @brief Option bytes (OB)
  2846. */
  2847. typedef struct
  2848. {
  2849. /* Read protection option byte */
  2850. union
  2851. {
  2852. __IOM uint16_t READPROT;
  2853. struct
  2854. {
  2855. __IOM uint16_t READPROT : 8;
  2856. __IOM uint16_t nREADPROT : 8;
  2857. } READPORT_B;
  2858. } ;
  2859. /* User protection option byte */
  2860. union
  2861. {
  2862. __IOM uint16_t USER;
  2863. struct
  2864. {
  2865. __IOM uint16_t WDTSEL : 1;
  2866. __IOM uint16_t RSTSTOP : 1;
  2867. __IOM uint16_t RSTSTDBY : 1;
  2868. __IM uint16_t RESERVED1 : 1;
  2869. __IOM uint16_t BOT1 : 1;
  2870. __IOM uint16_t VDDAMON : 1;
  2871. __IOM uint16_t RPC : 1;
  2872. __IM uint16_t RESERVED2 : 1;
  2873. __IOM uint16_t nUSER : 8;
  2874. } USER_B;
  2875. } ;
  2876. /* User data option byte */
  2877. union
  2878. {
  2879. __IOM uint16_t DATA0;
  2880. struct
  2881. {
  2882. __IOM uint16_t DATA0 : 8;
  2883. __IOM uint16_t nDATA0 : 8;
  2884. } DATA0_B;
  2885. } ;
  2886. /* User data option byte */
  2887. union
  2888. {
  2889. __IOM uint16_t DATA1;
  2890. struct
  2891. {
  2892. __IOM uint16_t DATA1 : 8;
  2893. __IOM uint16_t nDATA1 : 8;
  2894. } DATA1_B;
  2895. } ;
  2896. /* Write protection option byte */
  2897. union
  2898. {
  2899. __IOM uint16_t WRTPROT0;
  2900. struct
  2901. {
  2902. __IOM uint16_t WRTPROT0 : 8;
  2903. __IOM uint16_t nWRTPROT0 : 8;
  2904. } WRTPROT0_B;
  2905. } ;
  2906. /* Write protection option byte */
  2907. union
  2908. {
  2909. __IOM uint16_t WRTPROT1;
  2910. struct
  2911. {
  2912. __IOM uint16_t WRTPROT1 : 8;
  2913. __IOM uint16_t nWRTPROT1 : 8;
  2914. } WRTPROT1_B;
  2915. } ;
  2916. } OB_T;
  2917. /**
  2918. * @brief Power control (PMU)
  2919. */
  2920. typedef struct
  2921. {
  2922. /* power control register */
  2923. union
  2924. {
  2925. __IOM uint32_t CTRL;
  2926. struct
  2927. {
  2928. __IOM uint32_t LPDSCFG : 1;
  2929. __IOM uint32_t PDDSCFG : 1;
  2930. __IOM uint32_t WUFLGCLR : 1;
  2931. __IOM uint32_t SBFLGCLR : 1;
  2932. __IOM uint32_t PVDEN : 1;
  2933. __IOM uint32_t PLSEL : 3;
  2934. __IOM uint32_t BPWEN : 1;
  2935. __IM uint32_t RESERVED1 : 23;
  2936. } CTRL_B;
  2937. } ;
  2938. /* power control/status register */
  2939. union
  2940. {
  2941. __IOM uint32_t CSTS;
  2942. struct
  2943. {
  2944. __IM uint32_t WUEFLG : 1;
  2945. __IM uint32_t SBFLG : 1;
  2946. __IM uint32_t PVDOFLG : 1;
  2947. __IM uint32_t RESERVED1 : 5;
  2948. __IOM uint32_t WKUPCFG1 : 1;
  2949. __IOM uint32_t WKUPCFG2 : 1;
  2950. __IOM uint32_t WKUPCFG3 : 1;
  2951. __IOM uint32_t WKUPCFG4 : 1;
  2952. __IOM uint32_t WKUPCFG5 : 1;
  2953. __IOM uint32_t WKUPCFG6 : 1;
  2954. __IOM uint32_t WKUPCFG7 : 1;
  2955. __IOM uint32_t WKUPCFG8 : 1;
  2956. __IM uint32_t RESERVED2 : 16;
  2957. } CSTS_B;
  2958. } ;
  2959. } PMU_T;
  2960. /**
  2961. * @brief Reset and clock control (RCM)
  2962. */
  2963. typedef struct
  2964. {
  2965. /*Clock control register 1 */
  2966. union
  2967. {
  2968. /* Clock control register */
  2969. __IOM uint32_t CTRL1;
  2970. struct
  2971. {
  2972. __IOM uint32_t HSIEN : 1;
  2973. __IM uint32_t HSIRDYFLG : 1;
  2974. __IM uint32_t RESERVED1 : 1;
  2975. __IOM uint32_t HSITRM : 5;
  2976. __IM uint32_t HSICAL : 8;
  2977. __IOM uint32_t HSEEN : 1;
  2978. __IM uint32_t HSERDYFLG : 1;
  2979. __IOM uint32_t HSEBCFG : 1;
  2980. __IOM uint32_t CSSEN : 1;
  2981. __IM uint32_t RESERVED2 : 4;
  2982. __IOM uint32_t PLLEN : 1;
  2983. __IM uint32_t PLLRDYFLG : 1;
  2984. __IM uint32_t RESERVED3 : 6;
  2985. } CTRL1_B;
  2986. } ;
  2987. /* Clock configuration register 1 */
  2988. union
  2989. {
  2990. __IOM uint32_t CFG1;
  2991. struct
  2992. {
  2993. __IOM uint32_t SCLKSEL : 2;
  2994. __IM uint32_t SCLKSWSTS : 2;
  2995. __IOM uint32_t AHBPSC : 4;
  2996. __IOM uint32_t APB1PSC : 3;
  2997. __IM uint32_t RESERVED1 : 3;
  2998. __IOM uint32_t ADCPSC : 1;
  2999. __IOM uint32_t PLLSRCSEL : 2;
  3000. __IOM uint32_t PLLHSEPSC : 1;
  3001. __IOM uint32_t PLLMULCFG : 4;
  3002. __IM uint32_t RESERVED3 : 2;
  3003. __IOM uint32_t MCOSEL : 4;
  3004. __IOM uint32_t MCOPSC : 3;
  3005. __IOM uint32_t MCOPLLPSC : 1;
  3006. } CFG1_B;
  3007. } ;
  3008. /* Clock interrupt register */
  3009. union
  3010. {
  3011. __IOM uint32_t INT;
  3012. struct
  3013. {
  3014. __IM uint32_t LSIRDYFLG : 1;
  3015. __IM uint32_t LSERDYFLG : 1;
  3016. __IM uint32_t HSIRDYFLG : 1;
  3017. __IM uint32_t HSERDYFLG : 1;
  3018. __IM uint32_t PLLRDYFLG : 1;
  3019. __IM uint32_t HSI14RDYFLG : 1;
  3020. __IM uint32_t HSI48RDYFLG : 1;
  3021. __IM uint32_t CSSFLG : 1;
  3022. __IOM uint32_t LSIRDYEN : 1;
  3023. __IOM uint32_t LSERDYEN : 1;
  3024. __IOM uint32_t HSIRDYEN : 1;
  3025. __IOM uint32_t HSERDYEN : 1;
  3026. __IOM uint32_t PLLRDYEN : 1;
  3027. __IOM uint32_t HSI14RDYEN : 1;
  3028. __IOM uint32_t HSI48RDYEN : 1;
  3029. __IM uint32_t RESERVED1 : 1;
  3030. __OM uint32_t LSIRDYCLR : 1;
  3031. __OM uint32_t LSERDYCLR : 1;
  3032. __OM uint32_t HSIRDYCLR : 1;
  3033. __OM uint32_t HSERDYCLR : 1;
  3034. __OM uint32_t PLLRDYCLR : 1;
  3035. __OM uint32_t HSI14RDYCLR : 1;
  3036. __OM uint32_t HSI48RDYCLR : 1;
  3037. __OM uint32_t CSSCLR : 1;
  3038. __IM uint32_t RESERVED2 : 8;
  3039. } INT_B;
  3040. } ;
  3041. /* APB2 peripheral reset register */
  3042. union
  3043. {
  3044. __IOM uint32_t APBRST2;
  3045. struct
  3046. {
  3047. __IOM uint32_t SYSCFGRST : 1;
  3048. __IM uint32_t RESERVED1 : 4;
  3049. __IOM uint32_t USART5RST : 1;
  3050. __IOM uint32_t USART6RST : 1;
  3051. __IOM uint32_t USART7RST : 1;
  3052. __IM uint32_t RESERVED2 : 1;
  3053. __IOM uint32_t ADCRST : 1;
  3054. __IM uint32_t RESERVED3 : 1;
  3055. __IOM uint32_t TMR1RST : 1;
  3056. __IOM uint32_t SPI1RST : 1;
  3057. __IM uint32_t RESERVED4 : 1;
  3058. __IOM uint32_t USART1RST : 1;
  3059. __IM uint32_t RESERVED5 : 1;
  3060. __IOM uint32_t TMR15RST : 1;
  3061. __IOM uint32_t TMR16RST : 1;
  3062. __IOM uint32_t TMR17RST : 1;
  3063. __IM uint32_t RESERVED6 : 3;
  3064. __IOM uint32_t DBGRST : 1;
  3065. __IM uint32_t RESERVED7 : 9;
  3066. } APBRST2_B;
  3067. } ;
  3068. /*APB1 peripheral reset register */
  3069. union
  3070. {
  3071. __IOM uint32_t APBRST1;
  3072. struct
  3073. {
  3074. __IOM uint32_t TMR2RST : 1;
  3075. __IOM uint32_t TMR3RST : 1;
  3076. __IM uint32_t RESERVED1 : 2;
  3077. __IOM uint32_t TMR6RST : 1;
  3078. __IOM uint32_t TMR7RST : 1;
  3079. __IM uint32_t RESERVED2 : 2;
  3080. __IOM uint32_t TMR14RST : 1;
  3081. __IM uint32_t RESERVED3 : 2;
  3082. __IOM uint32_t WWDTRST : 1;
  3083. __IM uint32_t RESERVED4 : 2;
  3084. __IOM uint32_t SPI2RST : 1;
  3085. __IM uint32_t RESERVED5 : 2;
  3086. __IOM uint32_t USART2RST : 1;
  3087. __IOM uint32_t USART3RST : 1;
  3088. __IOM uint32_t USART4RST : 1;
  3089. __IOM uint32_t USART5RST : 1;
  3090. __IOM uint32_t I2C1RST : 1;
  3091. __IOM uint32_t I2C2RST : 1;
  3092. __IOM uint32_t USBDRST : 1;
  3093. __IM uint32_t RESERVED6 : 1;
  3094. __IOM uint32_t CANRST : 1;
  3095. __IM uint32_t RESERVED7 : 1;
  3096. __IOM uint32_t CRSRST : 1;
  3097. __IOM uint32_t PMURST : 1;
  3098. __IOM uint32_t DACRST : 1;
  3099. __IOM uint32_t CECRST : 1;
  3100. __IM uint32_t RESERVED8 : 1;
  3101. } APBRST1_B;
  3102. } ;
  3103. /* AHB Peripheral Clock enable register */
  3104. union
  3105. {
  3106. __IOM uint32_t AHBCLKEN;
  3107. struct
  3108. {
  3109. __IOM uint32_t DMA1EN : 1;
  3110. __IOM uint32_t DMA2EN : 1;
  3111. __IOM uint32_t SRAMEN : 1;
  3112. __IM uint32_t RESERVED1 : 1;
  3113. __IOM uint32_t FMCEN : 1;
  3114. __IM uint32_t RESERVED2 : 1;
  3115. __IOM uint32_t CRCEN : 1;
  3116. __IM uint32_t RESERVED3 : 10;
  3117. __IOM uint32_t PAEN : 1;
  3118. __IOM uint32_t PBEN : 1;
  3119. __IOM uint32_t PCEN : 1;
  3120. __IOM uint32_t PDEN : 1;
  3121. __IOM uint32_t PEEN : 1;
  3122. __IOM uint32_t PFEN : 1;
  3123. __IM uint32_t RESERVED4 : 1;
  3124. __IOM uint32_t TSCEN : 1;
  3125. __IM uint32_t RESERVED5 : 7;
  3126. } AHBCLKEN_B;
  3127. } ;
  3128. union
  3129. {
  3130. __IOM uint32_t APBCLKEN2;
  3131. struct
  3132. {
  3133. __IOM uint32_t SCFGCOMPEN : 1;
  3134. __IM uint32_t RESERVED1 : 4;
  3135. __IOM uint32_t USART6EN : 1;
  3136. __IOM uint32_t USART7EN : 1;
  3137. __IOM uint32_t USART8EN : 1;
  3138. __IM uint32_t RESERVED2 : 1;
  3139. __IOM uint32_t ADCEN : 1;
  3140. __IM uint32_t RESERVED3 : 1;
  3141. __IOM uint32_t TMR1EN : 1;
  3142. __IOM uint32_t SPI1EN : 1;
  3143. __IM uint32_t RESERVED4 : 1;
  3144. __IOM uint32_t USART1V : 1;
  3145. __IM uint32_t RESERVED5 : 1;
  3146. __IOM uint32_t TMR15EN : 1;
  3147. __IOM uint32_t TMR16EN : 1;
  3148. __IOM uint32_t TMR17EN : 1;
  3149. __IM uint32_t RESERVED6 : 3;
  3150. __IOM uint32_t DBGEN : 1;
  3151. __IM uint32_t RESERVED7 : 9;
  3152. } APBCLKEN2_B;
  3153. } ;
  3154. /* APB1 peripheral clock enable register */
  3155. union
  3156. {
  3157. __IOM uint32_t APBCLKEN1;
  3158. struct
  3159. {
  3160. __IOM uint32_t TMR2EN : 1;
  3161. __IOM uint32_t TMR3EN : 1;
  3162. __IM uint32_t RESERVED1 : 2;
  3163. __IOM uint32_t TMR6EN : 1;
  3164. __IOM uint32_t TMR7EN : 1;
  3165. __IM uint32_t RESERVED2 : 2;
  3166. __IOM uint32_t TMR14EN : 1;
  3167. __IM uint32_t RESERVED3 : 2;
  3168. __IOM uint32_t WWDTEN : 1;
  3169. __IM uint32_t RESERVED4 : 2;
  3170. __IOM uint32_t SPI2EN : 1;
  3171. __IM uint32_t RESERVED5 : 2;
  3172. __IOM uint32_t USART2EN : 1;
  3173. __IOM uint32_t USART3EN : 1;
  3174. __IOM uint32_t USART4EN : 1;
  3175. __IOM uint32_t USART5EN : 1;
  3176. __IOM uint32_t I2C1EN : 1;
  3177. __IOM uint32_t I2C2EN : 1;
  3178. __IOM uint32_t USBDEN : 1;
  3179. __IM uint32_t RESERVED6 : 1;
  3180. __IOM uint32_t CANEN : 1;
  3181. __IM uint32_t RESERVED7 : 1;
  3182. __IOM uint32_t CRSEN : 1;
  3183. __IOM uint32_t PMUEN : 1;
  3184. __IOM uint32_t DACEN : 1;
  3185. __IOM uint32_t CECEN : 1;
  3186. __IM uint32_t RESERVED8 : 1;
  3187. } APBCLKEN1_B;
  3188. } ;
  3189. /* Backup domain control register */
  3190. union
  3191. {
  3192. __IOM uint32_t BDCTRL;
  3193. struct
  3194. {
  3195. __IOM uint32_t LSEEN : 1;
  3196. __IM uint32_t LSERDYFLG : 1;
  3197. __IOM uint32_t LSEBCFG : 1;
  3198. __IOM uint32_t LSEDRVCFG : 2;
  3199. __IM uint32_t RESERVED1 : 3;
  3200. __IOM uint32_t RTCSRCSEL : 2;
  3201. __IM uint32_t RESERVED2 : 5;
  3202. __IOM uint32_t RTCCLKEN : 1;
  3203. __IOM uint32_t BDRST : 1;
  3204. __IM uint32_t RESERVED3 : 15;
  3205. } BDCTRL_B;
  3206. } ;
  3207. /* Control/status register */
  3208. union
  3209. {
  3210. __IOM uint32_t CSTS;
  3211. struct
  3212. {
  3213. __IOM uint32_t LSIEN : 1;
  3214. __IM uint32_t LSIRDYFLG : 1;
  3215. __IM uint32_t RESERVED1 : 21;
  3216. __IM uint32_t PWRRSTFLG : 1;
  3217. __IOM uint32_t RSTFLGCLR : 1;
  3218. __IM uint32_t OBRSTFLG : 1;
  3219. __IM uint32_t PINRSTFLG : 1;
  3220. __IM uint32_t PODRSTFLG : 1;
  3221. __IM uint32_t SWRSTFLG : 1;
  3222. __IM uint32_t IWDTRSTFLG : 1;
  3223. __IM uint32_t WWDTRSTFLG : 1;
  3224. __IM uint32_t LPWRRSTFLG : 1;
  3225. } CSTS_B;
  3226. } ;
  3227. /* AHB peripheral reset register */
  3228. union
  3229. {
  3230. __IOM uint32_t AHBRST;
  3231. struct
  3232. {
  3233. __IM uint32_t RESERVED1 : 17;
  3234. __IOM uint32_t PARST : 1;
  3235. __IOM uint32_t PBRST : 1;
  3236. __IOM uint32_t PCRST : 1;
  3237. __IOM uint32_t PDRST : 1;
  3238. __IOM uint32_t PERST : 1;
  3239. __IOM uint32_t PFRST : 1;
  3240. __IM uint32_t RESERVED2 : 1;
  3241. __IOM uint32_t TSCRST : 1;
  3242. __IM uint32_t RESERVED3 : 7;
  3243. } AHBRST_B;
  3244. } ;
  3245. /* Clock configuration register 2 */
  3246. union
  3247. {
  3248. __IOM uint32_t CFG2;
  3249. struct
  3250. {
  3251. __IOM uint32_t PLLDIVCFG : 4;
  3252. __IM uint32_t RESERVED1 : 28;
  3253. } CFG2_B;
  3254. } ;
  3255. /*Clock configuration register 3 */
  3256. union
  3257. {
  3258. __IOM uint32_t CFG3;
  3259. struct
  3260. {
  3261. __IOM uint32_t USART1SEL : 2;
  3262. __IM uint32_t RESERVED1 : 2;
  3263. __IOM uint32_t I2C1SEL : 1;
  3264. __IM uint32_t RESERVED2 : 1;
  3265. __IOM uint32_t CECSEL : 1;
  3266. __IOM uint32_t USBDSEL : 1;
  3267. __IOM uint32_t ADCSEL : 1;
  3268. __IM uint32_t RESERVED3 : 7;
  3269. __IOM uint32_t USART2SEL : 2;
  3270. __IOM uint32_t USART3SEL : 2;
  3271. __IM uint32_t RESERVED4 : 12;
  3272. } CFG3_B;
  3273. } ;
  3274. union
  3275. {
  3276. __IOM uint32_t CTRL2;
  3277. struct
  3278. {
  3279. __IOM uint32_t HSI14EN : 1;
  3280. __IM uint32_t HSI14RDFLG : 1;
  3281. __IOM uint32_t HSI14TO : 1;
  3282. __IOM uint32_t HSI14TRM : 5;
  3283. __IM uint32_t HSI14CAL : 8;
  3284. __IOM uint32_t HSI48EN : 1;
  3285. __IM uint32_t HSI48RDFLG : 1;
  3286. __IM uint32_t RESERVED1 : 6;
  3287. __IM uint32_t HSI48CAL : 8;
  3288. } CTRL2_B;
  3289. } ;
  3290. } RCM_T;
  3291. /**
  3292. * @brief Real-time clock (RTC)
  3293. */
  3294. typedef struct
  3295. {
  3296. /* time register */
  3297. union
  3298. {
  3299. __IOM uint32_t TIME;
  3300. struct
  3301. {
  3302. __IOM uint32_t SECU : 4;
  3303. __IOM uint32_t SECT : 3;
  3304. __IM uint32_t RESERVED1 : 1;
  3305. __IOM uint32_t MINU : 4;
  3306. __IOM uint32_t MINT : 3;
  3307. __IM uint32_t RESERVED2 : 1;
  3308. __IOM uint32_t HRU : 4;
  3309. __IOM uint32_t HRT : 2;
  3310. __IOM uint32_t TIMEFCFG : 1;
  3311. __IM uint32_t RESERVED3 : 9;
  3312. } TIME_B;
  3313. } ;
  3314. /* date register */
  3315. union
  3316. {
  3317. __IOM uint32_t DATE;
  3318. struct
  3319. {
  3320. __IOM uint32_t DAYU : 4;
  3321. __IOM uint32_t DAYT : 2;
  3322. __IM uint32_t RESERVED1 : 2;
  3323. __IOM uint32_t MONU : 4;
  3324. __IOM uint32_t MONT : 1;
  3325. __IOM uint32_t WEEKSEL : 3;
  3326. __IOM uint32_t YRU : 4;
  3327. __IOM uint32_t YRT : 4;
  3328. __IM uint32_t RESERVED2 : 8;
  3329. } DATE_B;
  3330. } ;
  3331. /* control register */
  3332. union
  3333. {
  3334. __IOM uint32_t CTRL;
  3335. struct
  3336. {
  3337. __IOM uint32_t WUCLKSEL : 3;
  3338. __IOM uint32_t TSETECFG : 1;
  3339. __IOM uint32_t RCLKDEN : 1;
  3340. __IOM uint32_t RCMCFG : 1;
  3341. __IOM uint32_t TIMEFCFG : 1;
  3342. __IM uint32_t RESERVED1 : 1;
  3343. __IOM uint32_t ALREN : 1;
  3344. __IM uint32_t RESERVED2 : 1;
  3345. __IOM uint32_t WUTEN : 1;
  3346. __IOM uint32_t TSEN : 1;
  3347. __IOM uint32_t ALRIEN : 1;
  3348. __IM uint32_t RESERVED3 : 1;
  3349. __IOM uint32_t WUTIEN : 1;
  3350. __IOM uint32_t TSIEN : 1;
  3351. __OM uint32_t STCCFG : 1;
  3352. __OM uint32_t WTCCFG : 1;
  3353. __IOM uint32_t BAKP : 1;
  3354. __IOM uint32_t CALOSEL : 1;
  3355. __IOM uint32_t POLCFG : 1;
  3356. __IOM uint32_t OUTSEL : 2;
  3357. __IOM uint32_t CALOEN : 1;
  3358. __IM uint32_t RESERVED4 : 8;
  3359. } CTRL_B;
  3360. } ;
  3361. /* initialization and status register */
  3362. union
  3363. {
  3364. __IOM uint32_t STS;
  3365. struct
  3366. {
  3367. __IM uint32_t ALRWFLG : 1;
  3368. __IM uint32_t RESERVED1 : 1;
  3369. __IOM uint32_t WUTWFLG : 1;
  3370. __IOM uint32_t SOPFLG : 1;
  3371. __IM uint32_t INITSFLG : 1;
  3372. __IOM uint32_t RSFLG : 1;
  3373. __IM uint32_t RINITFLG : 1;
  3374. __IOM uint32_t INITEN : 1;
  3375. __IOM uint32_t ALRAFLG : 1;
  3376. __IM uint32_t RESERVED2 : 1;
  3377. __IOM uint32_t WUTFLG : 1;
  3378. __IOM uint32_t TSFLG : 1;
  3379. __IOM uint32_t TSOVRFLG : 1;
  3380. __IOM uint32_t TP1FLG : 1;
  3381. __IOM uint32_t TP2FLG : 1;
  3382. __IM uint32_t TP3FLG : 1;
  3383. __IM uint32_t RCALPFLG : 1;
  3384. __IM uint32_t RESERVED3 : 15;
  3385. } STS_B;
  3386. } ;
  3387. /* prescaler register */
  3388. union
  3389. {
  3390. __IOM uint32_t PSC;
  3391. struct
  3392. {
  3393. __IOM uint32_t SPSC : 15;
  3394. __IM uint32_t RESERVED1 : 1;
  3395. __IOM uint32_t APSC : 7;
  3396. __IM uint32_t RESERVED2 : 9;
  3397. } PSC_B;
  3398. } ;
  3399. /* auto-reload register */
  3400. union
  3401. {
  3402. __OM uint32_t AUTORLD;
  3403. struct
  3404. {
  3405. __OM uint32_t WUAUTORE : 15;
  3406. __IM uint32_t RESERVED1 : 17;
  3407. } AUTORLD_B;
  3408. } ;
  3409. __IM uint32_t RESERVED;
  3410. /* alarm A register */
  3411. union
  3412. {
  3413. __IOM uint32_t ALRMA;
  3414. struct
  3415. {
  3416. __IOM uint32_t SECU : 4;
  3417. __IOM uint32_t SECT : 3;
  3418. __IOM uint32_t SECMEN : 1;
  3419. __IOM uint32_t MINU : 4;
  3420. __IOM uint32_t MINT : 3;
  3421. __IOM uint32_t MINMEN : 1;
  3422. __IOM uint32_t HRU : 4;
  3423. __IOM uint32_t HRT : 2;
  3424. __IOM uint32_t TIMEFCFG : 1;
  3425. __IOM uint32_t HRMEN : 1;
  3426. __IOM uint32_t DAYU : 4;
  3427. __IOM uint32_t DAYT : 2;
  3428. __IOM uint32_t WEEKSEL : 1;
  3429. __IOM uint32_t DATEMEN : 1;
  3430. } ALRMA_B;
  3431. } ;
  3432. __IM uint32_t RESERVED1;
  3433. /* write protection register */
  3434. union
  3435. {
  3436. __OM uint32_t WRPROT;
  3437. struct
  3438. {
  3439. __OM uint32_t KEY : 8;
  3440. __IM uint32_t RESERVED1 : 24;
  3441. } WRPROT_B;
  3442. } ;
  3443. /* sub second register */
  3444. union
  3445. {
  3446. __IM uint32_t SUBSEC;
  3447. struct
  3448. {
  3449. __IM uint32_t SUBSEC : 16;
  3450. __IM uint32_t RESERVED1 : 16;
  3451. } SUBSEC_B;
  3452. } ;
  3453. /* shift control register */
  3454. union
  3455. {
  3456. __OM uint32_t SHIFT;
  3457. struct
  3458. {
  3459. __OM uint32_t SFSEC : 15;
  3460. __IM uint32_t RESERVED1 : 16;
  3461. __OM uint32_t ADD1SECEN : 1;
  3462. } SHIFT_B;
  3463. } ;
  3464. /* timestamp time register */
  3465. union
  3466. {
  3467. __IM uint32_t TSTIME;
  3468. struct
  3469. {
  3470. __IM uint32_t SECU : 4;
  3471. __IM uint32_t SECT : 3;
  3472. __IM uint32_t RESERVED1 : 1;
  3473. __IM uint32_t MINU : 4;
  3474. __IM uint32_t MINT : 3;
  3475. __IM uint32_t RESERVED2 : 1;
  3476. __IM uint32_t HRU : 4;
  3477. __IM uint32_t HRT : 2;
  3478. __IM uint32_t TIMEFCFG : 1;
  3479. __IM uint32_t RESERVED3 : 9;
  3480. } TSTIME_B;
  3481. } ;
  3482. /* timestamp date register */
  3483. union
  3484. {
  3485. __IM uint32_t TSDATE;
  3486. struct
  3487. {
  3488. __IM uint32_t DAYU : 4;
  3489. __IM uint32_t DAYT : 2;
  3490. __IM uint32_t RESERVED1 : 2;
  3491. __IM uint32_t MONU : 4;
  3492. __IM uint32_t MONT : 1;
  3493. __IM uint32_t WEEKSEL : 3;
  3494. __IM uint32_t RESERVED2 : 16;
  3495. } TSDATE_B;
  3496. } ;
  3497. /* time-stamp sub second register */
  3498. union
  3499. {
  3500. __IM uint32_t TSSUBSEC;
  3501. struct
  3502. {
  3503. __IM uint32_t SUBSEC : 16;
  3504. __IM uint32_t RESERVED1 : 16;
  3505. } TSSUBSEC_B;
  3506. } ;
  3507. /* calibration register */
  3508. union
  3509. {
  3510. __IOM uint32_t CAL;
  3511. struct
  3512. {
  3513. __IOM uint32_t RECALF : 9;
  3514. __IM uint32_t RESERVED1 : 4;
  3515. __IOM uint32_t CAL16CFG : 1;
  3516. __IOM uint32_t CAL8CFG : 1;
  3517. __IOM uint32_t ICALFEN : 1;
  3518. __IM uint32_t RESERVED2 : 16;
  3519. } CAL_B;
  3520. } ;
  3521. /* tamper and alternate function configuration register */
  3522. union
  3523. {
  3524. __IOM uint32_t TACFG;
  3525. struct
  3526. {
  3527. __IOM uint32_t TP1EN : 1;
  3528. __IOM uint32_t TP1ALCFG : 1;
  3529. __IOM uint32_t TPIEN : 1;
  3530. __IOM uint32_t TP2EN : 1;
  3531. __IOM uint32_t TP2ALCFG : 1;
  3532. __IOM uint32_t TP3EN : 1;
  3533. __IOM uint32_t TP3ALCFG : 1;
  3534. __IOM uint32_t TPTSEN : 1;
  3535. __IOM uint32_t TPSFSEL : 3;
  3536. __IOM uint32_t TPFCSEL : 2;
  3537. __IOM uint32_t TPPRDUSEL : 2;
  3538. __IOM uint32_t TPPUDIS : 1;
  3539. __IM uint32_t RESERVED1 : 2;
  3540. __IOM uint32_t PC13VAL : 1;
  3541. __IOM uint32_t PC13EN : 1;
  3542. __IOM uint32_t PC14VAL : 1;
  3543. __IOM uint32_t PC14EN : 1;
  3544. __IOM uint32_t PC15VAL : 1;
  3545. __IOM uint32_t PC15EN : 1;
  3546. __IM uint32_t RESERVED2 : 8;
  3547. } TACFG_B;
  3548. } ;
  3549. /* alarm A sub second register */
  3550. union
  3551. {
  3552. __IOM uint32_t ALRMASS;
  3553. struct
  3554. {
  3555. __IOM uint32_t SUBSEC : 15;
  3556. __IM uint32_t RESERVED1 : 9;
  3557. __IOM uint32_t MASKSEL : 4;
  3558. __IM uint32_t RESERVED2 : 4;
  3559. } ALRMASS_B;
  3560. } ;
  3561. __IM uint32_t RESERVED2[2];
  3562. union
  3563. {
  3564. __IOM uint32_t BAKP0;
  3565. struct
  3566. {
  3567. __IOM uint32_t BAKP : 32;
  3568. } BAKP0_B;
  3569. } ;
  3570. union
  3571. {
  3572. __IOM uint32_t BAKP1;
  3573. struct
  3574. {
  3575. __IOM uint32_t BAKP : 32;
  3576. } BAKP1_B;
  3577. } ;
  3578. union
  3579. {
  3580. __IOM uint32_t BAKP2;
  3581. struct
  3582. {
  3583. __IOM uint32_t BAKP : 32;
  3584. } BAKP2_B;
  3585. } ;
  3586. union
  3587. {
  3588. __IOM uint32_t BAKP3;
  3589. struct
  3590. {
  3591. __IOM uint32_t BAKP : 32;
  3592. } BAKP3_B;
  3593. } ;
  3594. union
  3595. {
  3596. __IOM uint32_t BAKP4;
  3597. struct
  3598. {
  3599. __IOM uint32_t BAKP : 32;
  3600. } BAKP4_B;
  3601. } ;
  3602. } RTC_T;
  3603. /**
  3604. * @brief Serial peripheral interface (SPI1)
  3605. */
  3606. typedef struct
  3607. {
  3608. /* control register 1 */
  3609. union
  3610. {
  3611. __IOM uint32_t CTRL1;
  3612. struct
  3613. {
  3614. __IOM uint32_t CPHA : 1;
  3615. __IOM uint32_t CPOL : 1;
  3616. __IOM uint32_t MSMCFG : 1;
  3617. __IOM uint32_t BRSEL : 3;
  3618. __IOM uint32_t SPIEN : 1;
  3619. __IOM uint32_t LSBSEL : 1;
  3620. __IOM uint32_t ISSEL : 1;
  3621. __IOM uint32_t SSEN : 1;
  3622. __IOM uint32_t RXOMEN : 1;
  3623. __IOM uint32_t CRCLSEL : 1;
  3624. __IOM uint32_t CRCNXT : 1;
  3625. __IOM uint32_t CRCEN : 1;
  3626. __IOM uint32_t BMOEN : 1;
  3627. __IOM uint32_t BMEN : 1;
  3628. __IM uint32_t RESERVED1 : 16;
  3629. } CTRL1_B;
  3630. } ;
  3631. /* control register 2 */
  3632. union
  3633. {
  3634. __IOM uint32_t CTRL2;
  3635. struct
  3636. {
  3637. __IOM uint32_t RXDEN : 1;
  3638. __IOM uint32_t TXDEN : 1;
  3639. __IOM uint32_t SSOEN : 1;
  3640. __IOM uint32_t NSSPEN : 1;
  3641. __IOM uint32_t FRFCFG : 1;
  3642. __IOM uint32_t ERRIEN : 1;
  3643. __IOM uint32_t RXBNEIEN : 1;
  3644. __IOM uint32_t TXBEIEN : 1;
  3645. __IOM uint32_t DSCFG : 4;
  3646. __IOM uint32_t FRTCFG : 1;
  3647. __IOM uint32_t LDRX : 1;
  3648. __IOM uint32_t LDTX : 1;
  3649. __IM uint32_t RESERVED1 : 17;
  3650. } CTRL2_B;
  3651. } ;
  3652. /* status register */
  3653. union
  3654. {
  3655. __IOM uint32_t STS;
  3656. struct
  3657. {
  3658. __IM uint32_t RXBNEFLG : 1;
  3659. __IM uint32_t TXBEFLG : 1;
  3660. __IM uint32_t SCHDIR : 1;
  3661. __IM uint32_t UDRFLG : 1;
  3662. __IOM uint32_t CRCEFLG : 1;
  3663. __IM uint32_t MEFLG : 1;
  3664. __IM uint32_t OVRFLG : 1;
  3665. __IM uint32_t BSYFLG : 1;
  3666. __IM uint32_t FRECFG : 1;
  3667. __IM uint32_t FRLSEL : 2;
  3668. __IM uint32_t FTLSEL : 2;
  3669. __IM uint32_t RESERVED1 : 19;
  3670. } STS_B;
  3671. } ;
  3672. /* data register */
  3673. union
  3674. {
  3675. __IOM uint32_t DATA;
  3676. struct
  3677. {
  3678. __IOM uint32_t DATA : 16;
  3679. __IM uint32_t RESERVED1 : 16;
  3680. } DATA_B;
  3681. } ;
  3682. /* CRC polynomial register */
  3683. union
  3684. {
  3685. __IOM uint32_t CRCPOLY;
  3686. struct
  3687. {
  3688. __IOM uint32_t CRCPOLY : 16;
  3689. __IM uint32_t RESERVED1 : 16;
  3690. } CRCPOLY_B;
  3691. } ;
  3692. /*RX CRC register */
  3693. union
  3694. {
  3695. __IM uint32_t RXCRC;
  3696. struct
  3697. {
  3698. __IM uint32_t RXCRC : 16;
  3699. __IM uint32_t RESERVED1 : 16;
  3700. } RXCRC_B;
  3701. } ;
  3702. /* TX CRC register */
  3703. union
  3704. {
  3705. __IM uint32_t TXCRC;
  3706. struct
  3707. {
  3708. __IM uint32_t TXCRC : 16;
  3709. __IM uint32_t RESERVED1 : 16;
  3710. } TXCRC_B;
  3711. } ;
  3712. /* I2S CFG register */
  3713. union
  3714. {
  3715. __IOM uint32_t I2SCFG;
  3716. struct
  3717. {
  3718. __IOM uint32_t CHLEN : 1;
  3719. __IOM uint32_t DATALEN : 2;
  3720. __IOM uint32_t CPOL : 1;
  3721. __IOM uint32_t I2SSSEL : 2;
  3722. __IM uint32_t RESERVED1 : 1;
  3723. __IOM uint32_t PFSSEL : 1;
  3724. __IOM uint32_t I2SMOD : 2;
  3725. __IOM uint32_t I2SEN : 1;
  3726. __IOM uint32_t MODESEL : 1;
  3727. __IM uint32_t RESERVED2 : 20;
  3728. } I2SCFG_B;
  3729. } ;
  3730. /* I2S Prescaler */
  3731. union
  3732. {
  3733. __IOM uint32_t I2SPSC;
  3734. struct
  3735. {
  3736. __IOM uint32_t I2SPSC : 8;
  3737. __IOM uint32_t ODDPSC : 1;
  3738. __IOM uint32_t MCOEN : 1;
  3739. __IM uint32_t RESERVED1 : 22;
  3740. } I2SPSC_B;
  3741. } ;
  3742. } SPI_T;
  3743. /**
  3744. * @brief System configuration controller (SYSCFG)
  3745. */
  3746. typedef struct
  3747. {
  3748. /* configuration register 1 */
  3749. union
  3750. {
  3751. __IOM uint32_t CFG1;
  3752. struct
  3753. {
  3754. __IOM uint32_t MMSEL : 2;
  3755. __IM uint32_t RESERVED1 : 4;
  3756. __IOM uint32_t IRSEL : 2;
  3757. __IOM uint32_t ADCDMARMP : 1;
  3758. __IOM uint32_t USART1TXRMP : 1;
  3759. __IOM uint32_t USART1RXRMP : 1;
  3760. __IOM uint32_t TMR16DMARMP : 1;
  3761. __IOM uint32_t TMR17DMARMP : 1;
  3762. __IOM uint32_t TMR16DMARMP2 : 1;
  3763. __IOM uint32_t TMR17DMARMP2 : 1;
  3764. __IM uint32_t RESERVED2 : 1;
  3765. __IOM uint32_t I2CPB6FMP : 1;
  3766. __IOM uint32_t I2CPB7FMP : 1;
  3767. __IOM uint32_t I2CPB8FMP : 1;
  3768. __IOM uint32_t I2CPB9FMP : 1;
  3769. __IOM uint32_t I2C1FMP : 1;
  3770. __IOM uint32_t I2C2FMP : 1;
  3771. __IOM uint32_t I2CPA9FMP : 1;
  3772. __IOM uint32_t I2CPA10FMP : 1;
  3773. __IOM uint32_t SPI2DMARMP : 1;
  3774. __IOM uint32_t USART2DMARMP : 1;
  3775. __IOM uint32_t USART3DMARMP : 1;
  3776. __IOM uint32_t I2C1DMARMP : 1;
  3777. __IOM uint32_t TMR1DMARMP : 1;
  3778. __IOM uint32_t TMR2DMARMP : 1;
  3779. __IOM uint32_t TMR3DMARMP : 1;
  3780. __IM uint32_t RESERVED3 : 1;
  3781. } CFG1_B;
  3782. } ;
  3783. __IM uint32_t RESERVED;
  3784. /* external interrupt configuration register 1 */
  3785. union
  3786. {
  3787. __IOM uint32_t EINTCFG1;
  3788. struct
  3789. {
  3790. __IOM uint32_t EINT0 : 4;
  3791. __IOM uint32_t EINT1 : 4;
  3792. __IOM uint32_t EINT2 : 4;
  3793. __IOM uint32_t EINT3 : 4;
  3794. __IM uint32_t RESERVED1 : 16;
  3795. } EINTCFG1_B;
  3796. } ;
  3797. /* external interrupt configuration register 2 */
  3798. union
  3799. {
  3800. __IOM uint32_t EINTCFG2;
  3801. struct
  3802. {
  3803. __IOM uint32_t EINT4 : 4;
  3804. __IOM uint32_t EINT5 : 4;
  3805. __IOM uint32_t EINT6 : 4;
  3806. __IOM uint32_t EINT7 : 4;
  3807. __IM uint32_t RESERVED1 : 16;
  3808. } EINTCFG2_B;
  3809. } ;
  3810. /* external interrupt configuration register 3 */
  3811. union
  3812. {
  3813. __IOM uint32_t EINTCFG3;
  3814. struct
  3815. {
  3816. __IOM uint32_t EINT8 : 4;
  3817. __IOM uint32_t EINT9 : 4;
  3818. __IOM uint32_t EINT10 : 4;
  3819. __IOM uint32_t EINT11 : 4;
  3820. __IM uint32_t RESERVED1 : 16;
  3821. } EINTCFG3_B;
  3822. } ;
  3823. /* external interrupt configuration register 4 */
  3824. union
  3825. {
  3826. __IOM uint32_t EINTCFG4;
  3827. struct
  3828. {
  3829. __IOM uint32_t EINT12 : 4;
  3830. __IOM uint32_t EINT13 : 4;
  3831. __IOM uint32_t EINT14 : 4;
  3832. __IOM uint32_t EINT15 : 4;
  3833. __IM uint32_t RESERVED1 : 16;
  3834. } EINTCFG4_B;
  3835. } ;
  3836. /* configuration register 2 */
  3837. union
  3838. {
  3839. __IOM uint32_t CFG2;
  3840. struct
  3841. {
  3842. __IOM uint32_t LOCK : 1;
  3843. __IOM uint32_t SRAMLOCK : 1;
  3844. __IOM uint32_t PVDLOCK : 1;
  3845. __IM uint32_t RESERVED1 : 5;
  3846. __IOM uint32_t SRAMEFLG : 1;
  3847. __IM uint32_t RESERVED2 : 23;
  3848. } CFG2_B;
  3849. } ;
  3850. } SYSCFG_T;
  3851. /**
  3852. * @brief Touch sensing controller (TSC)
  3853. */
  3854. typedef struct
  3855. {
  3856. /* I/O group 1~8 counter register */
  3857. union
  3858. {
  3859. __IM uint32_t IOGCNT;
  3860. struct
  3861. {
  3862. __IM uint32_t CNTVAL : 14;
  3863. __IM uint32_t RESERVED1 : 18;
  3864. } IOGCNT_B;
  3865. };
  3866. } TSC_IOGroupRegister_T;
  3867. typedef struct
  3868. {
  3869. /* configuration register */
  3870. union
  3871. {
  3872. __IOM uint32_t CTRL;
  3873. struct
  3874. {
  3875. __IOM uint32_t TSCEN : 1;
  3876. __IOM uint32_t STARTAFLG : 1;
  3877. __IOM uint32_t AMCFG : 1;
  3878. __IOM uint32_t SYNPPOL : 1;
  3879. __IOM uint32_t IODEFCFG : 1;
  3880. __IOM uint32_t MCNTVSEL : 3;
  3881. __IM uint32_t RESERVED1 : 4;
  3882. __IOM uint32_t PGCDFSEL : 3;
  3883. __IOM uint32_t SSCDFSEL : 1;
  3884. __IOM uint32_t SSEN : 1;
  3885. __IOM uint32_t SSERRVSEL : 7;
  3886. __IOM uint32_t CTPLSEL : 4;
  3887. __IOM uint32_t CTPHSEL : 4;
  3888. } CTRL_B;
  3889. } ;
  3890. /* interrupt enable register */
  3891. union
  3892. {
  3893. __IOM uint32_t INTEN;
  3894. struct
  3895. {
  3896. __IOM uint32_t EOAIEN : 1;
  3897. __IOM uint32_t MCEIEN : 1;
  3898. __IM uint32_t RESERVED1 : 30;
  3899. } INTEN_B;
  3900. } ;
  3901. /* interrupt clear register */
  3902. union
  3903. {
  3904. __IOM uint32_t INTFCLR;
  3905. struct
  3906. {
  3907. __IOM uint32_t EOAICLR : 1;
  3908. __IOM uint32_t MCEICLR : 1;
  3909. __IM uint32_t RESERVED1 : 30;
  3910. } INTFCLR_B;
  3911. } ;
  3912. /* interrupt status register */
  3913. union
  3914. {
  3915. __IOM uint32_t INTSTS;
  3916. struct
  3917. {
  3918. __IOM uint32_t EOAFLG : 1;
  3919. __IOM uint32_t MCEFLG : 1;
  3920. __IM uint32_t RESERVED1 : 30;
  3921. } INTSTS_B;
  3922. } ;
  3923. /* I/O hysteresis control register */
  3924. union
  3925. {
  3926. __IOM uint32_t IOHCTRL;
  3927. struct
  3928. {
  3929. __IOM uint32_t G1P1 : 1;
  3930. __IOM uint32_t G1P2 : 1;
  3931. __IOM uint32_t G1P3 : 1;
  3932. __IOM uint32_t G1P4 : 1;
  3933. __IOM uint32_t G2P1 : 1;
  3934. __IOM uint32_t G2P2 : 1;
  3935. __IOM uint32_t G2P3 : 1;
  3936. __IOM uint32_t G2P4 : 1;
  3937. __IOM uint32_t G3P1 : 1;
  3938. __IOM uint32_t G3P2 : 1;
  3939. __IOM uint32_t G3P3 : 1;
  3940. __IOM uint32_t G3P4 : 1;
  3941. __IOM uint32_t G4P1 : 1;
  3942. __IOM uint32_t G4P2 : 1;
  3943. __IOM uint32_t G4P3 : 1;
  3944. __IOM uint32_t G4P4 : 1;
  3945. __IOM uint32_t G5P1 : 1;
  3946. __IOM uint32_t G5P2 : 1;
  3947. __IOM uint32_t G5P3 : 1;
  3948. __IOM uint32_t G5P4 : 1;
  3949. __IOM uint32_t G6P1 : 1;
  3950. __IOM uint32_t G6P2 : 1;
  3951. __IOM uint32_t G6P3 : 1;
  3952. __IOM uint32_t G6P4 : 1;
  3953. __IM uint32_t RESERVED1 : 8;
  3954. } IOHCTRL_B;
  3955. } ;
  3956. __IM uint32_t RESERVED;
  3957. /* I/O analog switch control register */
  3958. union
  3959. {
  3960. __IOM uint32_t IOASWCTRL;
  3961. struct
  3962. {
  3963. __IOM uint32_t G1P1 : 1;
  3964. __IOM uint32_t G1P2 : 1;
  3965. __IOM uint32_t G1P3 : 1;
  3966. __IOM uint32_t G1P4 : 1;
  3967. __IOM uint32_t G2P1 : 1;
  3968. __IOM uint32_t G2P2 : 1;
  3969. __IOM uint32_t G2P3 : 1;
  3970. __IOM uint32_t G2P4 : 1;
  3971. __IOM uint32_t G3P1 : 1;
  3972. __IOM uint32_t G3P2 : 1;
  3973. __IOM uint32_t G3P3 : 1;
  3974. __IOM uint32_t G3P4 : 1;
  3975. __IOM uint32_t G4P1 : 1;
  3976. __IOM uint32_t G4P2 : 1;
  3977. __IOM uint32_t G4P3 : 1;
  3978. __IOM uint32_t G4P4 : 1;
  3979. __IOM uint32_t G5P1 : 1;
  3980. __IOM uint32_t G5P2 : 1;
  3981. __IOM uint32_t G5P3 : 1;
  3982. __IOM uint32_t G5P4 : 1;
  3983. __IOM uint32_t G6P1 : 1;
  3984. __IOM uint32_t G6P2 : 1;
  3985. __IOM uint32_t G6P3 : 1;
  3986. __IOM uint32_t G6P4 : 1;
  3987. __IM uint32_t RESERVED1 : 8;
  3988. } IOASWCTRL_B;
  3989. } ;
  3990. __IM uint32_t RESERVED1;
  3991. /* I/O sampling control register */
  3992. union
  3993. {
  3994. __IOM uint32_t IOSMPCTRL;
  3995. struct
  3996. {
  3997. __IOM uint32_t G1P1 : 1;
  3998. __IOM uint32_t G1P2 : 1;
  3999. __IOM uint32_t G1P3 : 1;
  4000. __IOM uint32_t G1P4 : 1;
  4001. __IOM uint32_t G2P1 : 1;
  4002. __IOM uint32_t G2P2 : 1;
  4003. __IOM uint32_t G2P3 : 1;
  4004. __IOM uint32_t G2P4 : 1;
  4005. __IOM uint32_t G3P1 : 1;
  4006. __IOM uint32_t G3P2 : 1;
  4007. __IOM uint32_t G3P3 : 1;
  4008. __IOM uint32_t G3P4 : 1;
  4009. __IOM uint32_t G4P1 : 1;
  4010. __IOM uint32_t G4P2 : 1;
  4011. __IOM uint32_t G4P3 : 1;
  4012. __IOM uint32_t G4P4 : 1;
  4013. __IOM uint32_t G5P1 : 1;
  4014. __IOM uint32_t G5P2 : 1;
  4015. __IOM uint32_t G5P3 : 1;
  4016. __IOM uint32_t G5P4 : 1;
  4017. __IOM uint32_t G6P1 : 1;
  4018. __IOM uint32_t G6P2 : 1;
  4019. __IOM uint32_t G6P3 : 1;
  4020. __IOM uint32_t G6P4 : 1;
  4021. __IM uint32_t RESERVED1 : 8;
  4022. } IOSMPCTRL_B;
  4023. } ;
  4024. __IM uint32_t RESERVED2;
  4025. /* I/O channel control register */
  4026. union
  4027. {
  4028. __IOM uint32_t IOCHCTRL;
  4029. struct
  4030. {
  4031. __IOM uint32_t G1P1 : 1;
  4032. __IOM uint32_t G1P2 : 1;
  4033. __IOM uint32_t G1P3 : 1;
  4034. __IOM uint32_t G1P4 : 1;
  4035. __IOM uint32_t G2P1 : 1;
  4036. __IOM uint32_t G2P2 : 1;
  4037. __IOM uint32_t G2P3 : 1;
  4038. __IOM uint32_t G2P4 : 1;
  4039. __IOM uint32_t G3P1 : 1;
  4040. __IOM uint32_t G3P2 : 1;
  4041. __IOM uint32_t G3P3 : 1;
  4042. __IOM uint32_t G3P4 : 1;
  4043. __IOM uint32_t G4P1 : 1;
  4044. __IOM uint32_t G4P2 : 1;
  4045. __IOM uint32_t G4P3 : 1;
  4046. __IOM uint32_t G4P4 : 1;
  4047. __IOM uint32_t G5P1 : 1;
  4048. __IOM uint32_t G5P2 : 1;
  4049. __IOM uint32_t G5P3 : 1;
  4050. __IOM uint32_t G5P4 : 1;
  4051. __IOM uint32_t G6P1 : 1;
  4052. __IOM uint32_t G6P2 : 1;
  4053. __IOM uint32_t G6P3 : 1;
  4054. __IOM uint32_t G6P4 : 1;
  4055. __IM uint32_t RESERVED1 : 8;
  4056. } IOCHCTRL_B;
  4057. } ;
  4058. __IM uint32_t RESERVED3;
  4059. /* I/O group control status register */
  4060. union
  4061. {
  4062. __IOM uint32_t IOGCSTS;
  4063. struct
  4064. {
  4065. __IOM uint32_t G1EN : 1;
  4066. __IOM uint32_t G2EN : 1;
  4067. __IOM uint32_t G3EN : 1;
  4068. __IOM uint32_t G4EN : 1;
  4069. __IOM uint32_t G5EN : 1;
  4070. __IOM uint32_t G6EN : 1;
  4071. __IOM uint32_t G7EN : 1;
  4072. __IOM uint32_t G8EN : 1;
  4073. __IM uint32_t RESERVED1 : 8;
  4074. __IM uint32_t G1STS : 1;
  4075. __IM uint32_t G2STS : 1;
  4076. __IM uint32_t G3STS : 1;
  4077. __IM uint32_t G4STS : 1;
  4078. __IM uint32_t G5STS : 1;
  4079. __IM uint32_t G6STS : 1;
  4080. __IM uint32_t G7STS : 1;
  4081. __IM uint32_t G8STS : 1;
  4082. __IM uint32_t RESERVED2 : 8;
  4083. } IOGCSTS_B;
  4084. } ;
  4085. TSC_IOGroupRegister_T IOGxCNT[8];
  4086. } TSC_T;
  4087. /**
  4088. * @brief Advanced-timers (TMR1)
  4089. */
  4090. typedef struct
  4091. {
  4092. /* control register 1 */
  4093. union
  4094. {
  4095. __IOM uint32_t CTRL1;
  4096. struct
  4097. {
  4098. __IOM uint32_t CNTEN : 1;
  4099. __IOM uint32_t UD : 1;
  4100. __IOM uint32_t URSSEL : 1;
  4101. __IOM uint32_t SPMEN : 1;
  4102. __IOM uint32_t CNTDIR : 1;
  4103. __IOM uint32_t CAMSEL : 2;
  4104. __IOM uint32_t ARPEN : 1;
  4105. __IOM uint32_t CLKDIV : 2;
  4106. __IM uint32_t RESERVED1 : 22;
  4107. } CTRL1_B;
  4108. } ;
  4109. /* control register 2 */
  4110. union
  4111. {
  4112. __IOM uint32_t CTRL2;
  4113. struct
  4114. {
  4115. __IOM uint32_t CCPEN : 1;
  4116. __IM uint32_t RESERVED1 : 1;
  4117. __IOM uint32_t CCUSEL : 1;
  4118. __IOM uint32_t CCDSEL : 1;
  4119. __IOM uint32_t MMSEL : 3;
  4120. __IOM uint32_t TI1SEL : 1;
  4121. __IOM uint32_t OC1OIS : 1;
  4122. __IOM uint32_t OC1NOIS : 1;
  4123. __IOM uint32_t OC2OIS : 1;
  4124. __IOM uint32_t OC2NOIS : 1;
  4125. __IOM uint32_t OC3OIS : 1;
  4126. __IOM uint32_t OC3NOIS : 1;
  4127. __IOM uint32_t OC4OIS : 1;
  4128. __IM uint32_t RESERVED2 : 17;
  4129. } CTRL2_B;
  4130. } ;
  4131. /* slave mode control register */
  4132. union
  4133. {
  4134. __IOM uint32_t SMCTRL;
  4135. struct
  4136. {
  4137. __IOM uint32_t SMFSEL : 3;
  4138. __IOM uint32_t OCCSEL : 1;
  4139. __IOM uint32_t TRGSEL : 3;
  4140. __IOM uint32_t MSMEN : 1;
  4141. __IOM uint32_t ETFCFG : 4;
  4142. __IOM uint32_t ETPCFG : 2;
  4143. __IOM uint32_t ECEN : 1;
  4144. __IOM uint32_t ETPOL : 1;
  4145. __IM uint32_t RESERVED1 : 16;
  4146. } SMCTRL_B;
  4147. } ;
  4148. /* DMA/Interrupt enable register */
  4149. union
  4150. {
  4151. __IOM uint32_t DIEN;
  4152. struct
  4153. {
  4154. __IOM uint32_t UIEN : 1;
  4155. __IOM uint32_t CC1IEN : 1;
  4156. __IOM uint32_t CC2IEN : 1;
  4157. __IOM uint32_t CC3IEN : 1;
  4158. __IOM uint32_t CC4IEN : 1;
  4159. __IOM uint32_t COMIEN : 1;
  4160. __IOM uint32_t TRGIEN : 1;
  4161. __IOM uint32_t BRKIEN : 1;
  4162. __IOM uint32_t UDIEN : 1;
  4163. __IOM uint32_t CC1DEN : 1;
  4164. __IOM uint32_t CC2DEN : 1;
  4165. __IOM uint32_t CC3DEN : 1;
  4166. __IOM uint32_t CC4DEN : 1;
  4167. __IOM uint32_t COMDEN : 1;
  4168. __IOM uint32_t TRGDEN : 1;
  4169. __IM uint32_t RESERVED1 : 17;
  4170. } DIEN_B;
  4171. } ;
  4172. /* status register */
  4173. union
  4174. {
  4175. __IOM uint32_t STS;
  4176. struct
  4177. {
  4178. __IOM uint32_t UIFLG : 1;
  4179. __IOM uint32_t CC1IFLG : 1;
  4180. __IOM uint32_t CC2IFLG : 1;
  4181. __IOM uint32_t CC3IFLG : 1;
  4182. __IOM uint32_t CC4IFLG : 1;
  4183. __IOM uint32_t COMIFLG : 1;
  4184. __IOM uint32_t TRGIFLG : 1;
  4185. __IOM uint32_t BRKIFLG : 1;
  4186. __IM uint32_t RESERVED1 : 1;
  4187. __IOM uint32_t CC1RCFLG : 1;
  4188. __IOM uint32_t CC2RCFLG : 1;
  4189. __IOM uint32_t CC3RCFLG : 1;
  4190. __IOM uint32_t CC4RCFLG : 1;
  4191. __IM uint32_t RESERVED2 : 19;
  4192. } STS_B;
  4193. } ;
  4194. /* event generation register */
  4195. union
  4196. {
  4197. __OM uint32_t CEG;
  4198. struct
  4199. {
  4200. __OM uint32_t UEG : 1;
  4201. __OM uint32_t CC1EG : 1;
  4202. __OM uint32_t CC2EG : 1;
  4203. __OM uint32_t CC3EG : 1;
  4204. __OM uint32_t CC4EG : 1;
  4205. __OM uint32_t COMG : 1;
  4206. __OM uint32_t TEG : 1;
  4207. __OM uint32_t BEG : 1;
  4208. __IM uint32_t RESERVED1 : 24;
  4209. } CEG_B;
  4210. } ;
  4211. union
  4212. {
  4213. /* capture/compare mode register (output mode) */
  4214. union
  4215. {
  4216. __IOM uint32_t CCM1_OUTPUT;
  4217. struct
  4218. {
  4219. __IOM uint32_t CC1SEL : 2;
  4220. __IOM uint32_t OC1FEN : 1;
  4221. __IOM uint32_t OC1PEN : 1;
  4222. __IOM uint32_t OC1MOD : 3;
  4223. __IOM uint32_t OC1CEN : 1;
  4224. __IOM uint32_t CC2SEL : 2;
  4225. __IOM uint32_t OC2FEN : 1;
  4226. __IOM uint32_t OC2PEN : 1;
  4227. __IOM uint32_t OC2MOD : 3;
  4228. __IOM uint32_t OC2CEN : 1;
  4229. __IM uint32_t RESERVED1 : 16;
  4230. } CCM1_OUTPUT_B;
  4231. } ;
  4232. /* capture/compare mode register 1 (input mode) */
  4233. union
  4234. {
  4235. __IOM uint32_t CCM1_INPUT;
  4236. struct
  4237. {
  4238. __IOM uint32_t CC1SEL : 2;
  4239. __IOM uint32_t IC1PSC : 2;
  4240. __IOM uint32_t IC1F : 4;
  4241. __IOM uint32_t CC2SEL : 2;
  4242. __IOM uint32_t IC2PSC : 2;
  4243. __IOM uint32_t IC2F : 4;
  4244. __IM uint32_t RESERVED1 : 16;
  4245. } CCM1_INPUT_B;
  4246. } ;
  4247. };
  4248. union
  4249. {
  4250. /* capture/compare mode register (output mode) */
  4251. union
  4252. {
  4253. __IOM uint32_t CCM2_OUTPUT;
  4254. struct
  4255. {
  4256. __IOM uint32_t CC3SEL : 2;
  4257. __IOM uint32_t OC3FEN : 1;
  4258. __IOM uint32_t OC3PEN : 1;
  4259. __IOM uint32_t OC3MOD : 3;
  4260. __IOM uint32_t OC3CEN : 1;
  4261. __IOM uint32_t CC4SEL : 2;
  4262. __IOM uint32_t OC4FEN : 1;
  4263. __IOM uint32_t OC4PEN : 1;
  4264. __IOM uint32_t OC4MOD : 3;
  4265. __IOM uint32_t OC4CEN : 1;
  4266. __IM uint32_t RESERVED1 : 16;
  4267. } CCM2_OUTPUT_B;
  4268. } ;
  4269. /* capture/compare mode register 2 (input mode) */
  4270. union
  4271. {
  4272. __IOM uint32_t CCM2_INPUT;
  4273. struct
  4274. {
  4275. __IOM uint32_t CC3SEL : 2;
  4276. __IOM uint32_t IC3PSC : 2;
  4277. __IOM uint32_t IC3F : 4;
  4278. __IOM uint32_t CC4SEL : 2;
  4279. __IOM uint32_t IC4PSC : 2;
  4280. __IOM uint32_t IC4F : 4;
  4281. __IM uint32_t RESERVED1 : 16;
  4282. } CCM2_INPUT_B;
  4283. } ;
  4284. };
  4285. /* capture/compare enable register */
  4286. union
  4287. {
  4288. __IOM uint32_t CCEN;
  4289. struct
  4290. {
  4291. __IOM uint32_t CC1EN : 1;
  4292. __IOM uint32_t CC1POL : 1;
  4293. __IOM uint32_t CC1NEN : 1;
  4294. __IOM uint32_t CC1NPOL : 1;
  4295. __IOM uint32_t CC2EN : 1;
  4296. __IOM uint32_t CC2POL : 1;
  4297. __IOM uint32_t CC2NEN : 1;
  4298. __IOM uint32_t CC2NPOL : 1;
  4299. __IOM uint32_t CC3EN : 1;
  4300. __IOM uint32_t CC3POL : 1;
  4301. __IOM uint32_t CC3NEN : 1;
  4302. __IOM uint32_t CC3NPOL : 1;
  4303. __IOM uint32_t CC4EN : 1;
  4304. __IOM uint32_t CC4POL : 1;
  4305. __IM uint32_t RESERVED1 : 18;
  4306. } CCEN_B;
  4307. } ;
  4308. /* counter */
  4309. union
  4310. {
  4311. __IOM uint32_t CNT;
  4312. struct
  4313. {
  4314. __IOM uint32_t CNT : 32;
  4315. } CNT_B;
  4316. } ;
  4317. /* prescaler */
  4318. union
  4319. {
  4320. __IOM uint32_t PSC;
  4321. struct
  4322. {
  4323. __IOM uint32_t PSC : 16;
  4324. __IM uint32_t RESERVED1 : 16;
  4325. } PSC_B;
  4326. } ;
  4327. /* auto-reload register */
  4328. union
  4329. {
  4330. __IOM uint32_t AUTORLD;
  4331. struct
  4332. {
  4333. __IOM uint32_t AUTORLD : 32;
  4334. } AUTORLD_B;
  4335. } ;
  4336. /* repetition counter register */
  4337. union
  4338. {
  4339. __IOM uint32_t REPCNT;
  4340. struct
  4341. {
  4342. __IOM uint32_t REPCNT : 8;
  4343. __IM uint32_t RESERVED1 : 24;
  4344. } REPCNT_B;
  4345. } ;
  4346. /* capture/compare register 1 */
  4347. union
  4348. {
  4349. __IOM uint32_t CC1;
  4350. struct
  4351. {
  4352. __IOM uint32_t CC1 : 32;
  4353. } CC1_B;
  4354. } ;
  4355. /* capture/compare register 2 */
  4356. union
  4357. {
  4358. __IOM uint32_t CC2;
  4359. struct
  4360. {
  4361. __IOM uint32_t CC2 : 32;
  4362. } CC2_B;
  4363. } ;
  4364. /* capture/compare register 3 */
  4365. union
  4366. {
  4367. __IOM uint32_t CC3;
  4368. struct
  4369. {
  4370. __IOM uint32_t CC3 : 32;
  4371. } CC3_B;
  4372. } ;
  4373. /* capture/compare register 4 */
  4374. union
  4375. {
  4376. __IOM uint32_t CC4;
  4377. struct
  4378. {
  4379. __IOM uint32_t CC4 : 32;
  4380. } CC4_B;
  4381. } ;
  4382. /* break and dead-time register */
  4383. union
  4384. {
  4385. __IOM uint32_t BDT;
  4386. struct
  4387. {
  4388. __IOM uint32_t DTS : 8;
  4389. __IOM uint32_t LOCKCFG : 2;
  4390. __IOM uint32_t IMOS : 1;
  4391. __IOM uint32_t RMOS : 1;
  4392. __IOM uint32_t BRKEN : 1;
  4393. __IOM uint32_t BRKPOL : 1;
  4394. __IOM uint32_t AOEN : 1;
  4395. __IOM uint32_t MOEN : 1;
  4396. __IM uint32_t RESERVED1 : 16;
  4397. } BDT_B;
  4398. } ;
  4399. /* DMA control register */
  4400. union
  4401. {
  4402. __IOM uint32_t DCTRL;
  4403. struct
  4404. {
  4405. __IOM uint32_t DBADDR : 5;
  4406. __IM uint32_t RESERVED1 : 3;
  4407. __IOM uint32_t DBLEN : 5;
  4408. __IM uint32_t RESERVED2 : 19;
  4409. } DCTRL_B;
  4410. } ;
  4411. /* DMA address for full transfer */
  4412. union
  4413. {
  4414. __IOM uint32_t DMADDR;
  4415. struct
  4416. {
  4417. __IOM uint32_t DMADDR : 16;
  4418. __IM uint32_t RESERVED1 : 16;
  4419. } DMADDR_B;
  4420. } ;
  4421. /* TMR14 Remap */
  4422. union
  4423. {
  4424. __IOM uint32_t OPT;
  4425. struct
  4426. {
  4427. __IOM uint32_t RMPSEL : 2;
  4428. __IM uint32_t RESERVED1 : 30;
  4429. } OPT_B;
  4430. } ;
  4431. } TMR_T;
  4432. /**
  4433. * @brief Universal synchronous asynchronous receiver transmitter (USART)
  4434. */
  4435. typedef struct
  4436. {
  4437. /* Control register 1 */
  4438. union
  4439. {
  4440. __IOM uint32_t CTRL1;
  4441. struct
  4442. {
  4443. __IOM uint32_t UEN : 1;
  4444. __IOM uint32_t USWMEN : 1;
  4445. __IOM uint32_t RXEN : 1;
  4446. __IOM uint32_t TXEN : 1;
  4447. __IOM uint32_t IDLEIEN : 1;
  4448. __IOM uint32_t RXBNEIEN : 1;
  4449. __IOM uint32_t TXCIEN : 1;
  4450. __IOM uint32_t TXBEIEN : 1;
  4451. __IOM uint32_t PEIEN : 1;
  4452. __IOM uint32_t PCFG : 1;
  4453. __IOM uint32_t PCEN : 1;
  4454. __IOM uint32_t WUPMCFG : 1;
  4455. __IOM uint32_t DBLCFG0 : 1;
  4456. __IOM uint32_t RXMUTEEN : 1;
  4457. __IOM uint32_t CMIEN : 1;
  4458. __IOM uint32_t OSMCFG : 1;
  4459. __IOM uint32_t DDLTEN : 5;
  4460. __IOM uint32_t DLTEN : 5;
  4461. __IOM uint32_t RXTOIEN : 1;
  4462. __IOM uint32_t EOBIEN : 1;
  4463. __IOM uint32_t DBLCFG1 : 1;
  4464. __IM uint32_t RESERVED2 : 3;
  4465. } CTRL1_B;
  4466. } ;
  4467. /* Control register 2 */
  4468. union
  4469. {
  4470. __IOM uint32_t CTRL2;
  4471. struct
  4472. {
  4473. __IM uint32_t RESERVED1 : 4;
  4474. __IOM uint32_t ADDRLEN : 1;
  4475. __IOM uint32_t LBDLCFG : 1;
  4476. __IOM uint32_t LBDIEN : 1;
  4477. __IM uint32_t RESERVED2 : 1;
  4478. __IOM uint32_t LBCPOEN : 1;
  4479. __IOM uint32_t CPHA : 1;
  4480. __IOM uint32_t CPOL : 1;
  4481. __IOM uint32_t CLKEN : 1;
  4482. __IOM uint32_t STOPCFG : 2;
  4483. __IOM uint32_t LINMEN : 1;
  4484. __IOM uint32_t SWAPEN : 1;
  4485. __IOM uint32_t RXINVEN : 1;
  4486. __IOM uint32_t TXINVEN : 1;
  4487. __IOM uint32_t BINVEN : 1;
  4488. __IOM uint32_t MSBFEN : 1;
  4489. __IOM uint32_t ABRDEN : 1;
  4490. __IOM uint32_t ABRDCFG : 2;
  4491. __IOM uint32_t RXTODEN : 1;
  4492. __IOM uint32_t ADDRL : 4;
  4493. __IOM uint32_t ADDRH : 4;
  4494. } CTRL2_B;
  4495. } ;
  4496. /* Control register 3 */
  4497. union
  4498. {
  4499. __IOM uint32_t CTRL3;
  4500. struct
  4501. {
  4502. __IOM uint32_t ERRIEN : 1;
  4503. __IOM uint32_t IREN : 1;
  4504. __IOM uint32_t IRLPEN : 1;
  4505. __IOM uint32_t HDEN : 1;
  4506. __IOM uint32_t SCNACKEN : 1;
  4507. __IOM uint32_t SCEN : 1;
  4508. __IOM uint32_t DMARXEN : 1;
  4509. __IOM uint32_t DMATXEN : 1;
  4510. __IOM uint32_t RTSEN : 1;
  4511. __IOM uint32_t CTSEN : 1;
  4512. __IOM uint32_t CTSIEN : 1;
  4513. __IOM uint32_t SAMCFG : 1;
  4514. __IOM uint32_t OVRDEDIS : 1;
  4515. __IOM uint32_t DDISRXEEN : 1;
  4516. __IOM uint32_t DEN : 1;
  4517. __IOM uint32_t DPCFG : 1;
  4518. __IM uint32_t RESERVED1 : 1;
  4519. __IOM uint32_t SCARCCFG : 3;
  4520. __IOM uint32_t WSIFLGSEL : 2;
  4521. __IOM uint32_t WSMIEN : 1;
  4522. __IM uint32_t RESERVED2 : 9;
  4523. } CTRL3_B;
  4524. } ;
  4525. /* Baud rate register */
  4526. union
  4527. {
  4528. __IOM uint32_t BR;
  4529. struct
  4530. {
  4531. __IOM uint32_t FBR : 4;
  4532. __IOM uint32_t MBR : 12;
  4533. __IM uint32_t RESERVED1 : 16;
  4534. } BR_B;
  4535. } ;
  4536. /* Guard time and prescaler */
  4537. union
  4538. {
  4539. __IOM uint32_t GTPSC;
  4540. struct
  4541. {
  4542. __IOM uint32_t PSC : 8;
  4543. __IOM uint32_t GRDT : 8;
  4544. __IM uint32_t RESERVED1 : 16;
  4545. } GTPSC_B;
  4546. } ;
  4547. /* Receiver timeout register */
  4548. union
  4549. {
  4550. __IOM uint32_t RXTO;
  4551. struct
  4552. {
  4553. __IOM uint32_t RXTO : 24;
  4554. __IOM uint32_t BLEN : 8;
  4555. } RXTO_B;
  4556. } ;
  4557. /* Request register */
  4558. union
  4559. {
  4560. __IOM uint32_t REQUEST;
  4561. struct
  4562. {
  4563. __IOM uint32_t ABRDQ : 1;
  4564. __IOM uint32_t TXBFQ : 1;
  4565. __IOM uint32_t MUTEQ : 1;
  4566. __IOM uint32_t RXDFQ : 1;
  4567. __IOM uint32_t TXDFQ : 1;
  4568. __IM uint32_t RESERVED1 : 27;
  4569. } REQUEST_B;
  4570. } ;
  4571. /* Interrupt & status register */
  4572. union
  4573. {
  4574. __IM uint32_t STS;
  4575. struct
  4576. {
  4577. __IM uint32_t PEFLG : 1;
  4578. __IM uint32_t FEFLG : 1;
  4579. __IM uint32_t NEFLG : 1;
  4580. __IM uint32_t OVREFLG : 1;
  4581. __IM uint32_t IDLEFLG : 1;
  4582. __IM uint32_t RXBNEFLG : 1;
  4583. __IM uint32_t TXCFLG : 1;
  4584. __IM uint32_t TXBEFLG : 1;
  4585. __IM uint32_t LBDFLG : 1;
  4586. __IM uint32_t CTSFLG : 1;
  4587. __IM uint32_t CTSCFG : 1;
  4588. __IM uint32_t RXTOFLG : 1;
  4589. __IM uint32_t EOBFLG : 1;
  4590. __IM uint32_t RESERVED1 : 1;
  4591. __IM uint32_t ABRDEFLG : 1;
  4592. __IM uint32_t ABRDFLG : 1;
  4593. __IM uint32_t BSYFLG : 1;
  4594. __IM uint32_t CMFLG : 1;
  4595. __IM uint32_t TXBFFLG : 1;
  4596. __IM uint32_t RXWFMUTE : 1;
  4597. __IM uint32_t WSMFLG : 1;
  4598. __IM uint32_t TXENACKFLG : 1;
  4599. __IM uint32_t RXENACKFLG : 1;
  4600. __IM uint32_t RESERVED2 : 9;
  4601. } STS_B;
  4602. } ;
  4603. /* Interrupt flag clear register */
  4604. union
  4605. {
  4606. __IOM uint32_t INTFCLR;
  4607. struct
  4608. {
  4609. __IOM uint32_t PECLR : 1;
  4610. __IOM uint32_t FECLR : 1;
  4611. __IOM uint32_t NECLR : 1;
  4612. __IOM uint32_t OVRECLR : 1;
  4613. __IOM uint32_t IDLECLR : 1;
  4614. __IM uint32_t RESERVED1 : 1;
  4615. __IOM uint32_t TXCCLR : 1;
  4616. __IM uint32_t RESERVED2 : 1;
  4617. __IOM uint32_t LBDCLR : 1;
  4618. __IOM uint32_t CTSCLR : 1;
  4619. __IM uint32_t RESERVED3 : 1;
  4620. __IOM uint32_t RXTOCLR : 1;
  4621. __IOM uint32_t EOBCLR : 1;
  4622. __IM uint32_t RESERVED4 : 4;
  4623. __IOM uint32_t CMCLR : 1;
  4624. __IM uint32_t RESERVED5 : 2;
  4625. __IOM uint32_t WSMCLR : 1;
  4626. __IM uint32_t RESERVED6 : 11;
  4627. } INTFCLR_B;
  4628. } ;
  4629. /* Receive data register */
  4630. union
  4631. {
  4632. __IM uint32_t RXDATA;
  4633. struct
  4634. {
  4635. __IM uint32_t RXDATA : 9;
  4636. __IM uint32_t RESERVED1 : 23;
  4637. } RXDATA_B;
  4638. } ;
  4639. /* Transmit data register */
  4640. union
  4641. {
  4642. __IOM uint32_t TXDATA;
  4643. struct
  4644. {
  4645. __IOM uint32_t TXDATA : 9;
  4646. __IM uint32_t RESERVED1 : 23;
  4647. } TXDATA_B;
  4648. } ;
  4649. } USART_T;
  4650. /**
  4651. * @brief Window watchdog (WWDT)
  4652. */
  4653. typedef struct
  4654. {
  4655. union
  4656. {
  4657. /* Control register */
  4658. __IOM uint32_t CTRL;
  4659. struct
  4660. {
  4661. __IOM uint32_t CNT : 7;
  4662. __IOM uint32_t WWDTEN : 1;
  4663. __IM uint32_t RESERVED1 : 24;
  4664. } CTRL_B;
  4665. } ;
  4666. union
  4667. {
  4668. /* Configuration register */
  4669. __IOM uint32_t CFG;
  4670. struct
  4671. {
  4672. __IOM uint32_t WIN : 7;
  4673. __IOM uint32_t TBPSC : 2;
  4674. __IOM uint32_t EWIEN : 1;
  4675. __IM uint32_t RESERVED1 : 22;
  4676. } CFG_B;
  4677. } ;
  4678. union
  4679. {
  4680. /* Status register */
  4681. __IOM uint32_t STS;
  4682. struct
  4683. {
  4684. __IOM uint32_t EWIFLG : 1;
  4685. __IM uint32_t RESERVED1 : 31;
  4686. } STS_B;
  4687. } ;
  4688. } WWDT_T;
  4689. /**
  4690. * @brief Universal Serial Bus Device (USB)
  4691. */
  4692. typedef union
  4693. {
  4694. __IOM uint32_t EP;
  4695. struct
  4696. {
  4697. __IOM uint32_t ADDR : 4;
  4698. __IOM uint32_t TXSTS : 2;
  4699. __IOM uint32_t TXDTOG : 1;
  4700. __IOM uint32_t CTFT : 1;
  4701. __IOM uint32_t KIND : 1;
  4702. __IOM uint32_t TYPE : 2;
  4703. __IOM uint32_t SETUP : 1;
  4704. __IOM uint32_t RXSTS : 2;
  4705. __IOM uint32_t RXDTOG : 1;
  4706. __IOM uint32_t CTFR : 1;
  4707. __IM uint32_t RESERVED : 16;
  4708. } EP_B;
  4709. } USB_EP_REG_T;
  4710. typedef struct
  4711. {
  4712. /* Endpoint */
  4713. USB_EP_REG_T EP[8];
  4714. __IOM uint32_t RESERVED1[8];
  4715. /**
  4716. * @brief Control register
  4717. */
  4718. union
  4719. {
  4720. __IOM uint32_t CTRL;
  4721. struct
  4722. {
  4723. __IOM uint32_t FORRST : 1;
  4724. __IOM uint32_t PWRDOWN : 1;
  4725. __IOM uint32_t LPWREN : 1;
  4726. __IOM uint32_t FORSUS : 1;
  4727. __IOM uint32_t WKUPREQ : 1;
  4728. __IOM uint32_t L1WKUPREQ : 1;
  4729. __IM uint32_t RESERVED1 : 1;
  4730. __IOM uint32_t L1STSREQIM : 1;
  4731. __IOM uint32_t ESOFIEN : 1;
  4732. __IOM uint32_t SOFIEN : 1;
  4733. __IOM uint32_t RSTIEN : 1;
  4734. __IOM uint32_t SUSIEN : 1;
  4735. __IOM uint32_t WKUPIEN : 1;
  4736. __IOM uint32_t ERRIEN : 1;
  4737. __IOM uint32_t PMAOUIEN : 1;
  4738. __IOM uint32_t CTRIEN : 1;
  4739. __IM uint32_t RESERVED2 : 16;
  4740. } CTRL_B;
  4741. };
  4742. /**
  4743. * @brief Interrupt status register
  4744. */
  4745. union
  4746. {
  4747. __IOM uint32_t INTSTS;
  4748. struct
  4749. {
  4750. __IOM uint32_t EPID : 4;
  4751. __IOM uint32_t DOT : 1;
  4752. __IM uint32_t RESERVED1 : 2;
  4753. __IOM uint32_t L1STSREQ : 1;
  4754. __IOM uint32_t ESOFFLG : 1;
  4755. __IOM uint32_t SOFFLG : 1;
  4756. __IOM uint32_t RSTREQ : 1;
  4757. __IOM uint32_t SUSREQ : 1;
  4758. __IOM uint32_t WUPREQ : 1;
  4759. __IOM uint32_t ERRFLG : 1;
  4760. __IOM uint32_t PMOFLG : 1;
  4761. __IOM uint32_t CTFLG : 1;
  4762. __IM uint32_t RESERVED2 : 16;
  4763. } INTSTS_B;
  4764. };
  4765. /**
  4766. * @brief Frame number register
  4767. */
  4768. union
  4769. {
  4770. __IOM uint32_t FRANUM;
  4771. struct
  4772. {
  4773. __IOM uint32_t FRANUM : 11;
  4774. __IOM uint32_t LSOFNUM : 2;
  4775. __IOM uint32_t LOCK : 1;
  4776. __IOM uint32_t RXDMSTS : 1;
  4777. __IOM uint32_t RXDPSTS : 1;
  4778. __IM uint32_t RESERVED : 16;
  4779. } FRANUM_B;
  4780. };
  4781. /**
  4782. * @brief Device address register
  4783. */
  4784. union
  4785. {
  4786. __IOM uint32_t ADDR;
  4787. struct
  4788. {
  4789. __IOM uint32_t ADDR : 7;
  4790. __IOM uint32_t USBDEN : 1;
  4791. __IM uint32_t RESERVED : 24;
  4792. } ADDR_B;
  4793. };
  4794. /**
  4795. * @brief Buffer table address register
  4796. */
  4797. union
  4798. {
  4799. __IOM uint32_t BUFFTB;
  4800. struct
  4801. {
  4802. __IM uint32_t RESERVED1 : 3;
  4803. __IOM uint32_t BUFFTB : 13;
  4804. __IM uint32_t RESERVED2 : 16;
  4805. } BUFFTB_B;
  4806. };
  4807. /**
  4808. * @brief LPM control and status regiter
  4809. */
  4810. union
  4811. {
  4812. __IOM uint32_t LPMCTRLSTS;
  4813. struct
  4814. {
  4815. __IOM uint32_t LPMEN : 1;
  4816. __IOM uint32_t LPMACKEN : 1;
  4817. __IM uint32_t RESERVED1 : 1;
  4818. __IOM uint32_t REMWAKE : 1;
  4819. __IOM uint32_t BESL : 4;
  4820. __IM uint32_t RESERVED2 : 24;
  4821. } LPMCTRLSTS_B;
  4822. };
  4823. /**
  4824. * @brief Battery charging detector regiter
  4825. */
  4826. union
  4827. {
  4828. __IOM uint32_t BCD;
  4829. struct
  4830. {
  4831. __IOM uint32_t BCDEN : 1;
  4832. __IOM uint32_t DCDEN : 1;
  4833. __IOM uint32_t PDEN : 1;
  4834. __IOM uint32_t SDEN : 1;
  4835. __IOM uint32_t DCDFLG : 1;
  4836. __IOM uint32_t PDFLG : 1;
  4837. __IOM uint32_t SDFLG : 1;
  4838. __IOM uint32_t DMPUDFLG : 1;
  4839. __IM uint32_t RESERVED1 : 7;
  4840. __IOM uint32_t DPPUCTRL : 1;
  4841. __IM uint32_t RESERVED2 : 16;
  4842. } BCD_B;
  4843. };
  4844. } USBD_T;
  4845. /**@} end of group Peripheral_registers_structures*/
  4846. /** @defgroup Peripheral_memory_map
  4847. @{
  4848. */
  4849. /*@} end of group Device_Register*/
  4850. /* FMC base address in the alias region */
  4851. #define FMC_BASE ((uint32_t)0x08000000)
  4852. /* SRAM base address in the alias region */
  4853. #define SRAM_BASE ((uint32_t)0x20000000)
  4854. /* Peripheral base address in the alias region */
  4855. #define PERIPH_BASE ((uint32_t)0x40000000)
  4856. /* Peripheral memory map */
  4857. #define APBPERIPH_BASE PERIPH_BASE
  4858. #define AHBPERIPH_BASE (PERIPH_BASE + 0x00020000)
  4859. #define AHB2PERIPH_BASE (PERIPH_BASE + 0x08000000)
  4860. #define TMR2_BASE (APBPERIPH_BASE + 0x00000000)
  4861. #define TMR3_BASE (APBPERIPH_BASE + 0x00000400)
  4862. #define TMR6_BASE (APBPERIPH_BASE + 0x00001000)
  4863. #define TMR7_BASE (APBPERIPH_BASE + 0x00001400)
  4864. #define TMR14_BASE (APBPERIPH_BASE + 0x00002000)
  4865. #define RTC_BASE (APBPERIPH_BASE + 0x00002800)
  4866. #define WWDT_BASE (APBPERIPH_BASE + 0x00002C00)
  4867. #define IWDT_BASE (APBPERIPH_BASE + 0x00003000)
  4868. #define SPI2_BASE (APBPERIPH_BASE + 0x00003800)
  4869. #define USART2_BASE (APBPERIPH_BASE + 0x00004400)
  4870. #define USART3_BASE (APBPERIPH_BASE + 0x00004800)
  4871. #define USART4_BASE (APBPERIPH_BASE + 0x00004C00)
  4872. #define USART5_BASE (APBPERIPH_BASE + 0x00005000)
  4873. #define I2C1_BASE (APBPERIPH_BASE + 0x00005400)
  4874. #define I2C2_BASE (APBPERIPH_BASE + 0x00005800)
  4875. #define USBD_BASE (APBPERIPH_BASE + 0x00005C00)
  4876. #define CAN_BASE (APBPERIPH_BASE + 0x00006400)
  4877. #define CRS_BASE (APBPERIPH_BASE + 0x00006C00)
  4878. #define PMU_BASE (APBPERIPH_BASE + 0x00007000)
  4879. #define DAC_BASE (APBPERIPH_BASE + 0x00007400)
  4880. #define CEC_BASE (APBPERIPH_BASE + 0x00007800)
  4881. #define SYSCFG_BASE (APBPERIPH_BASE + 0x00010000)
  4882. #define COMP_BASE (APBPERIPH_BASE + 0x0001001C)
  4883. #define EINT_BASE (APBPERIPH_BASE + 0x00010400)
  4884. #define USART6_BASE (APBPERIPH_BASE + 0x00011400)
  4885. #define USART7_BASE (APBPERIPH_BASE + 0x00011800)
  4886. #define USART8_BASE (APBPERIPH_BASE + 0x00011C00)
  4887. #define ADC_BASE (APBPERIPH_BASE + 0x00012400)
  4888. #define TMR1_BASE (APBPERIPH_BASE + 0x00012C00)
  4889. #define SPI1_BASE (APBPERIPH_BASE + 0x00013000)
  4890. #define USART1_BASE (APBPERIPH_BASE + 0x00013800)
  4891. #define TMR15_BASE (APBPERIPH_BASE + 0x00014000)
  4892. #define TMR16_BASE (APBPERIPH_BASE + 0x00014400)
  4893. #define TMR17_BASE (APBPERIPH_BASE + 0x00014800)
  4894. #define DBG_BASE (APBPERIPH_BASE + 0x00015800)
  4895. #define DMA1_BASE (AHBPERIPH_BASE + 0x00000000)
  4896. #define DMA1_CHANNEL_1_BASE (DMA1_BASE + 0x00000008)
  4897. #define DMA1_CHANNEL_2_BASE (DMA1_BASE + 0x0000001C)
  4898. #define DMA1_CHANNEL_3_BASE (DMA1_BASE + 0x00000030)
  4899. #define DMA1_CHANNEL_4_BASE (DMA1_BASE + 0x00000044)
  4900. #define DMA1_CHANNEL_5_BASE (DMA1_BASE + 0x00000058)
  4901. #define DMA1_CHANNEL_6_BASE (DMA1_BASE + 0x0000006C)
  4902. #define DMA1_CHANNEL_7_BASE (DMA1_BASE + 0x00000080)
  4903. #define DMA2_BASE (AHBPERIPH_BASE + 0x00000400)
  4904. #define DMA2_CHANNEL_1_BASE (DMA2_BASE + 0x00000008)
  4905. #define DMA2_CHANNEL_2_BASE (DMA2_BASE + 0x0000001C)
  4906. #define DMA2_CHANNEL_3_BASE (DMA2_BASE + 0x00000030)
  4907. #define DMA2_CHANNEL_4_BASE (DMA2_BASE + 0x00000044)
  4908. #define DMA2_CHANNEL_5_BASE (DMA2_BASE + 0x00000058)
  4909. #define RCM_BASE (AHBPERIPH_BASE + 0x00001000)
  4910. #define FMC_R_BASE (AHBPERIPH_BASE + 0x00002000)
  4911. #define CRC_BASE (AHBPERIPH_BASE + 0x00003000)
  4912. #define TSC_BASE (AHBPERIPH_BASE + 0x00004000)
  4913. #define OB_BASE ((uint32_t)0x1FFFF800)
  4914. #define GPIOA_BASE (AHB2PERIPH_BASE + 0x00000000)
  4915. #define GPIOB_BASE (AHB2PERIPH_BASE + 0x00000400)
  4916. #define GPIOC_BASE (AHB2PERIPH_BASE + 0x00000800)
  4917. #define GPIOD_BASE (AHB2PERIPH_BASE + 0x00000C00)
  4918. #define GPIOE_BASE (AHB2PERIPH_BASE + 0x00001000)
  4919. #define GPIOF_BASE (AHB2PERIPH_BASE + 0x00001400)
  4920. /**@} end of group Peripheral_memory_map*/
  4921. /** @defgroup Peripheral_declaration
  4922. @{
  4923. */
  4924. #define ADC ((ADC_T*) ADC_BASE)
  4925. #define CAN ((CAN_T*) CAN_BASE)
  4926. #define CEC ((CEC_T*) CEC_BASE)
  4927. #define CRS ((CRS_T*) CRS_BASE)
  4928. #define CRC ((CRC_T*) CRC_BASE)
  4929. #define COMP ((COMP_T*) COMP_BASE)
  4930. #define DAC ((DAC_T*) DAC_BASE)
  4931. #define DBG ((DBG_T*) DBG_BASE)
  4932. #define EINT ((EINT_T*) EINT_BASE)
  4933. #define FMC ((FMC_T*) FMC_R_BASE)
  4934. #define I2C1 ((I2C_T*) I2C1_BASE)
  4935. #define I2C2 ((I2C_T*) I2C2_BASE)
  4936. #define IWDT ((IWDT_T*) IWDT_BASE)
  4937. #define OB ((OB_T*) OB_BASE)
  4938. #define PMU ((PMU_T*) PMU_BASE)
  4939. #define RCM ((RCM_T*) RCM_BASE)
  4940. #define RTC ((RTC_T*) RTC_BASE)
  4941. #define SPI1 ((SPI_T*) SPI1_BASE)
  4942. #define SPI2 ((SPI_T*) SPI2_BASE)
  4943. #define SYSCFG ((SYSCFG_T*) SYSCFG_BASE)
  4944. #define TSC ((TSC_T*) TSC_BASE)
  4945. #define USART1 ((USART_T*) USART1_BASE)
  4946. #define USART2 ((USART_T*) USART2_BASE)
  4947. #define USART3 ((USART_T*) USART3_BASE)
  4948. #define USART4 ((USART_T*) USART4_BASE)
  4949. #define USART5 ((USART_T*) USART5_BASE)
  4950. #define USART6 ((USART_T*) USART6_BASE)
  4951. #define USART7 ((USART_T*) USART7_BASE)
  4952. #define USART8 ((USART_T*) USART8_BASE)
  4953. #define USBD ((USBD_T*) USBD_BASE)
  4954. #define WWDT ((WWDT_T*) WWDT_BASE)
  4955. #define DMA1 ((DMA_T*) DMA1_BASE)
  4956. #define DMA1_CHANNEL_1 ((DMA_CHANNEL_T*) DMA1_CHANNEL_1_BASE)
  4957. #define DMA1_CHANNEL_2 ((DMA_CHANNEL_T*) DMA1_CHANNEL_2_BASE)
  4958. #define DMA1_CHANNEL_3 ((DMA_CHANNEL_T*) DMA1_CHANNEL_3_BASE)
  4959. #define DMA1_CHANNEL_4 ((DMA_CHANNEL_T*) DMA1_CHANNEL_4_BASE)
  4960. #define DMA1_CHANNEL_5 ((DMA_CHANNEL_T*) DMA1_CHANNEL_5_BASE)
  4961. #define DMA1_CHANNEL_6 ((DMA_CHANNEL_T*) DMA1_CHANNEL_6_BASE)
  4962. #define DMA1_CHANNEL_7 ((DMA_CHANNEL_T*) DMA1_CHANNEL_7_BASE)
  4963. #define DMA2 ((DMA_T *) DMA2_BASE)
  4964. #define DMA2_CHANNEL_1 ((DMA_CHANNEL_T *) DMA2_CHANNEL_1_BASE)
  4965. #define DMA2_CHANNEL_2 ((DMA_CHANNEL_T *) DMA2_CHANNEL_2_BASE)
  4966. #define DMA2_CHANNEL_3 ((DMA_CHANNEL_T *) DMA2_CHANNEL_3_BASE)
  4967. #define DMA2_CHANNEL_4 ((DMA_CHANNEL_T *) DMA2_CHANNEL_4_BASE)
  4968. #define DMA2_CHANNEL_5 ((DMA_CHANNEL_T *) DMA2_CHANNEL_5_BASE)
  4969. #define GPIOF ((GPIO_T*) GPIOF_BASE)
  4970. #define GPIOE ((GPIO_T*) GPIOE_BASE)
  4971. #define GPIOD ((GPIO_T*) GPIOD_BASE)
  4972. #define GPIOC ((GPIO_T*) GPIOC_BASE)
  4973. #define GPIOB ((GPIO_T*) GPIOB_BASE)
  4974. #define GPIOA ((GPIO_T*) GPIOA_BASE)
  4975. #define TMR1 ((TMR_T*) TMR1_BASE)
  4976. #define TMR2 ((TMR_T*) TMR2_BASE)
  4977. #define TMR3 ((TMR_T*) TMR3_BASE)
  4978. #define TMR6 ((TMR_T*) TMR6_BASE)
  4979. #define TMR7 ((TMR_T*) TMR7_BASE)
  4980. #define TMR14 ((TMR_T*) TMR14_BASE)
  4981. #define TMR15 ((TMR_T*) TMR15_BASE)
  4982. #define TMR16 ((TMR_T*) TMR16_BASE)
  4983. #define TMR17 ((TMR_T*) TMR17_BASE)
  4984. /**@} end of group Peripheral_declaration*/
  4985. /** @defgroup Exported_Macros
  4986. @{
  4987. */
  4988. /* Define one bit mask */
  4989. #define BIT0 0x00000001
  4990. #define BIT1 0x00000002
  4991. #define BIT2 0x00000004
  4992. #define BIT3 0x00000008
  4993. #define BIT4 0x00000010
  4994. #define BIT5 0x00000020
  4995. #define BIT6 0x00000040
  4996. #define BIT7 0x00000080
  4997. #define BIT8 0x00000100
  4998. #define BIT9 0x00000200
  4999. #define BIT10 0x00000400
  5000. #define BIT11 0x00000800
  5001. #define BIT12 0x00001000
  5002. #define BIT13 0x00002000
  5003. #define BIT14 0x00004000
  5004. #define BIT15 0x00008000
  5005. #define BIT16 0x00010000
  5006. #define BIT17 0x00020000
  5007. #define BIT18 0x00040000
  5008. #define BIT19 0x00080000
  5009. #define BIT20 0x00100000
  5010. #define BIT21 0x00200000
  5011. #define BIT22 0x00400000
  5012. #define BIT23 0x00800000
  5013. #define BIT24 0x01000000
  5014. #define BIT25 0x02000000
  5015. #define BIT26 0x04000000
  5016. #define BIT27 0x08000000
  5017. #define BIT28 0x10000000
  5018. #define BIT29 0x20000000
  5019. #define BIT30 0x40000000
  5020. #define BIT31 0x80000000
  5021. #define SET_BIT(REG, BIT) ((REG) |= (BIT))
  5022. #define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
  5023. #define READ_BIT(REG, BIT) ((REG) & (BIT))
  5024. #define CLEAR_REG(REG) ((REG) = (0x0))
  5025. #define WRITE_REG(REG, VAL) ((REG) = (VAL))
  5026. #define READ_REG(REG) ((REG))
  5027. #define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
  5028. /**@} end of group Exported_Macros*/
  5029. #ifdef __cplusplus
  5030. }
  5031. #endif /* __cplusplus */
  5032. #endif /* __APM32F0xx_H */
  5033. /**@} end of group APM32F0xx */
  5034. /**@} end of group CMSIS */