apm32s10x.h 129 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528
  1. /*!
  2. * @file apm32s10x.h
  3. *
  4. * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File.
  5. *
  6. * @details This file contains all the peripheral register's definitions, bits definitions and memory mapping
  7. *
  8. * @version V1.0.1
  9. *
  10. * @date 2022-12-31
  11. *
  12. * @attention
  13. *
  14. * Copyright (C) 2022-2023 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 usefull 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 __APM32S10X_H
  29. #define __APM32S10X_H
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33. /*!
  34. * APM32S10X_MD: APM32 Medium density devices, the Flash memory density ranges between 64 and 128 Kbytes.
  35. */
  36. #if !defined (APM32S10X_MD)
  37. #error "Please select a the target APM32S10x device used in your application (in apm32s10x.h file)"
  38. #endif
  39. /** @addtogroup CMSIS
  40. @{
  41. */
  42. /** @addtogroup APM32S10x
  43. * @brief Peripheral Access Layer
  44. @{
  45. */
  46. /** @defgroup HSE_Macros
  47. @{
  48. */
  49. /*!
  50. * @brief Define Value of the External oscillator in Hz
  51. */
  52. #ifndef HSE_VALUE
  53. #define HSE_VALUE ((uint32_t)8000000)
  54. #endif
  55. /* Time out for HSE start up */
  56. #define HSE_STARTUP_TIMEOUT ((uint16_t)0x05000)
  57. /* Value of the Internal oscillator in Hz */
  58. #define HSI_VALUE ((uint32_t)8000000)
  59. /**@} end of group HSE_Macros */
  60. /** @defgroup APM32S10x_StdPeripheral_Library_Version
  61. @{
  62. */
  63. /*!
  64. * @brief APM32S10x Standard Peripheral Library version number
  65. */
  66. #define __APM32S10X_STDPERIPH_VERSION_MAIN (0x01) /*!< [31:24] main version */
  67. #define __APM32S10X_STDPERIPH_VERSION_SUB1 (0x00) /*!< [23:16] sub1 version */
  68. #define __APM32S10X_STDPERIPH_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */
  69. #define __APM32S10X_STDPERIPH_VERSION_RC (0x00) /*!< [7:0] release candidate */
  70. #define __APM32S10X_STDPERIPH_VERSION ( (__APM32S10X_STDPERIPH_VERSION_MAIN << 24)\
  71. |(__APM32S10X_STDPERIPH_VERSION_SUB1 << 16)\
  72. |(__APM32S10X_STDPERIPH_VERSION_SUB2 << 8)\
  73. |(__APM32S10X_STDPERIPH_VERSION_RC))
  74. /**@} end of group APM32S10x_StdPeripheral_Library_Version */
  75. /** @defgroup Configuraion_for_CMSIS
  76. @{
  77. */
  78. /* APM32 devices does not provide an MPU */
  79. #define __MPU_PRESENT 0
  80. /* APM32 uses 4 Bits for the Priority Levels */
  81. #define __NVIC_PRIO_BITS 4
  82. /* Set to 1 if different SysTick Config is used */
  83. #define __Vendor_SysTickConfig 0
  84. /**@} end of group Configuraion_for_CMSIS */
  85. /** @defgroup Peripheral_Enumerations
  86. @{
  87. */
  88. /*!
  89. * @brief APM32S10x Interrupt Number Definition, according to the selected device
  90. * in @ref Library_configuration_section
  91. */
  92. typedef enum IRQn
  93. {
  94. /*!**** Cortex-M3 Processor Exceptions Numbers ***************************************************/
  95. NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
  96. MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */
  97. BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */
  98. UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */
  99. SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */
  100. DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */
  101. PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */
  102. SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */
  103. /*!**** APM32 specific Interrupt Numbers *********************************************************/
  104. WWDT_IRQn = 0, /*!< Window WatchDog Interrupt */
  105. PVD_IRQn = 1, /*!< PVD through EINT Line detection Interrupt */
  106. TAMPER_IRQn = 2, /*!< Tamper Interrupt */
  107. RTC_IRQn = 3, /*!< RTC global Interrupt */
  108. FLASH_IRQn = 4, /*!< FLASH global Interrupt */
  109. RCM_IRQn = 5, /*!< RCM global Interrupt */
  110. EINT0_IRQn = 6, /*!< EINT Line0 Interrupt */
  111. EINT1_IRQn = 7, /*!< EINT Line1 Interrupt */
  112. EINT2_IRQn = 8, /*!< EINT Line2 Interrupt */
  113. EINT3_IRQn = 9, /*!< EINT Line3 Interrupt */
  114. EINT4_IRQn = 10, /*!< EINT Line4 Interrupt */
  115. DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */
  116. DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */
  117. DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */
  118. DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */
  119. DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */
  120. DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */
  121. DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */
  122. #if defined (APM32S10X_MD)
  123. /* APM32S10X Medium-density devices specific Interrupt Numbers */
  124. ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
  125. USBD1_HP_CAN1_TX_IRQn = 19, /*!< USB Device 1 High Priority or CAN1 TX Interrupts */
  126. USBD1_LP_CAN1_RX0_IRQn = 20, /*!< USB Device 1 Low Priority or CAN1 RX0 Interrupts */
  127. CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */
  128. CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */
  129. EINT9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */
  130. TMR1_BRK_IRQn = 24, /*!< TMR1 Break Interrupt */
  131. TMR1_UP_IRQn = 25, /*!< TMR1 Update Interrupt */
  132. TMR1_TRG_COM_IRQn = 26, /*!< TMR1 Trigger and Commutation Interrupt */
  133. TMR1_CC_IRQn = 27, /*!< TMR1 Capture Compare Interrupt */
  134. TMR2_IRQn = 28, /*!< TMR2 global Interrupt */
  135. TMR3_IRQn = 29, /*!< TMR3 global Interrupt */
  136. TMR4_IRQn = 30, /*!< TMR4 global Interrupt */
  137. I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */
  138. I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */
  139. I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */
  140. I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */
  141. SPI1_IRQn = 35, /*!< SPI1 global Interrupt */
  142. SPI2_IRQn = 36, /*!< SPI2 global Interrupt */
  143. USART1_IRQn = 37, /*!< USART1 global Interrupt */
  144. USART2_IRQn = 38, /*!< USART2 global Interrupt */
  145. USART3_IRQn = 39, /*!< USART3 global Interrupt */
  146. EINT15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */
  147. RTCAlarm_IRQn = 41, /*!< RTC Alarm through EINT Line Interrupt */
  148. USBDWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EINT Line Interrupt */
  149. FPU_IRQn = 43, /*!< FPU Global Interrupt */
  150. QSPI_IRQn = 44, /*!< QSPI Global Interrupt */
  151. USBD2_HP_CAN2_TX_IRQn = 45, /*!< USB Device 2 High Priority or CAN2 TX Interrupts */
  152. USBD2_LP_CAN2_RX0_IRQn = 46, /*!< USB Device 2 Low Priority or CAN2 RX0 Interrupts */
  153. CAN2_RX1_IRQn = 47, /*!< CAN2 RX1 Interrupts */
  154. CAN2_SCE_IRQn = 48, /*!< CAN2 SCE Interrupts */
  155. #endif
  156. } IRQn_Type;
  157. /**@} end of group Peripheral_Enumerations */
  158. /* Includes */
  159. #include "core_cm3.h"
  160. #include "system_apm32s10x.h"
  161. #include <stdint.h>
  162. /** @defgroup Exported_Types
  163. @{
  164. */
  165. typedef int32_t s32;
  166. typedef int16_t s16;
  167. typedef int8_t s8;
  168. typedef const int32_t sc32;
  169. typedef const int16_t sc16;
  170. typedef const int8_t sc8;
  171. typedef __IO int32_t vs32;
  172. typedef __IO int16_t vs16;
  173. typedef __IO int8_t vs8;
  174. typedef __I int32_t vsc32;
  175. typedef __I int16_t vsc16;
  176. typedef __I int8_t vsc8;
  177. typedef uint32_t u32;
  178. typedef uint16_t u16;
  179. typedef uint8_t u8;
  180. typedef const uint32_t uc32;
  181. typedef const uint16_t uc16;
  182. typedef const uint8_t uc8;
  183. typedef __IO uint32_t vu32;
  184. typedef __IO uint16_t vu16;
  185. typedef __IO uint8_t vu8;
  186. typedef __I uint32_t vuc32;
  187. typedef __I uint16_t vuc16;
  188. typedef __I uint8_t vuc8;
  189. #ifndef __IM
  190. #define __IM __I
  191. #endif
  192. #ifndef __OM
  193. #define __OM __O
  194. #endif
  195. #ifndef __IOM
  196. #define __IOM __IO
  197. #endif
  198. enum {BIT_RESET, BIT_SET};
  199. enum {RESET, SET};
  200. enum {DISABLE, ENABLE};
  201. enum {ERROR, SUCCESS};
  202. #ifndef NULL
  203. #define NULL ((void *)0)
  204. #endif
  205. #if defined (__CC_ARM )
  206. #pragma anon_unions
  207. #endif
  208. /**@} end of group Exported_types */
  209. /** @defgroup Peripheral_registers_structures
  210. @{
  211. */
  212. /*!
  213. * @brief Reset and clock management unit (RCM)
  214. */
  215. typedef struct
  216. {
  217. /* Clock control register */
  218. union
  219. {
  220. __IOM uint32_t CTRL;
  221. struct
  222. {
  223. __IOM uint32_t HSIEN : 1;
  224. __IM uint32_t HSIRDYFLG : 1;
  225. __IM uint32_t RESERVED1 : 1;
  226. __IOM uint32_t HSITRIM : 5;
  227. __IM uint32_t HSICAL : 8;
  228. __IOM uint32_t HSEEN : 1;
  229. __IM uint32_t HSERDYFLG : 1;
  230. __IOM uint32_t HSEBCFG : 1;
  231. __IOM uint32_t CSSEN : 1;
  232. __IM uint32_t RESERVED2 : 4;
  233. __IOM uint32_t PLLEN : 1;
  234. __IM uint32_t PLLRDYFLG : 1;
  235. __IM uint32_t RESERVED3 : 6;
  236. } CTRL_B;
  237. };
  238. /* Clock configuration register */
  239. union
  240. {
  241. __IOM uint32_t CFG;
  242. struct
  243. {
  244. __IOM uint32_t SCLKSEL : 2;
  245. __IM uint32_t SCLKSELSTS : 2;
  246. __IOM uint32_t AHBPSC : 4;
  247. __IOM uint32_t APB1PSC : 3;
  248. __IOM uint32_t APB2PSC : 3;
  249. __IOM uint32_t ADCPSC : 2;
  250. __IOM uint32_t PLLSRCSEL : 1;
  251. __IOM uint32_t PLLHSEPSC : 1;
  252. __IOM uint32_t PLLMULCFG : 4;
  253. __IOM uint32_t USBDPSC : 2;
  254. __IOM uint32_t MCOSEL : 3;
  255. __IOM uint32_t FPUPSC : 1;
  256. __IM uint32_t RESERVED : 4;
  257. } CFG_B;
  258. } ;
  259. /* Clock interrupt control register */
  260. union
  261. {
  262. __IOM uint32_t INT;
  263. struct
  264. {
  265. __IM uint32_t LSIRDYFLG : 1;
  266. __IM uint32_t LSERDYFLG : 1;
  267. __IM uint32_t HSIRDYFLG : 1;
  268. __IM uint32_t HSERDYFLG : 1;
  269. __IM uint32_t PLLRDYFLG : 1;
  270. __IM uint32_t RESERVED1 : 2;
  271. __IM uint32_t CSSIF : 1;
  272. __IOM uint32_t LSIRDYEN : 1;
  273. __IOM uint32_t LSERDYEN : 1;
  274. __IOM uint32_t HSIRDYEN : 1;
  275. __IOM uint32_t HSERDYEN : 1;
  276. __IOM uint32_t PLLRDYEN : 1;
  277. __IM uint32_t RESERVED2 : 3;
  278. __OM uint32_t LSIRDYCLR : 1;
  279. __OM uint32_t LSERDYCLR : 1;
  280. __OM uint32_t HSIRDYCLR : 1;
  281. __OM uint32_t HSERDYCLR : 1;
  282. __OM uint32_t PLLRDYCLR : 1;
  283. __IM uint32_t RESERVED3 : 2;
  284. __OM uint32_t CSSCLR : 1;
  285. __IM uint32_t RESERVED4 : 8;
  286. } INT_B;
  287. } ;
  288. /* APB2 peripheral reset register */
  289. union
  290. {
  291. __IOM uint32_t APB2RST;
  292. struct
  293. {
  294. __IOM uint32_t AFIO : 1;
  295. __IM uint32_t RESERVED1 : 1;
  296. __IOM uint32_t PA : 1;
  297. __IOM uint32_t PB : 1;
  298. __IOM uint32_t PC : 1;
  299. __IOM uint32_t PD : 1;
  300. __IOM uint32_t PE : 1;
  301. __IM uint32_t RESERVED2 : 2;
  302. __IOM uint32_t ADC1 : 1;
  303. __IOM uint32_t ADC2 : 1;
  304. __IOM uint32_t TMR1 : 1;
  305. __IOM uint32_t SPI1 : 1;
  306. __IM uint32_t RESERVED3 : 1;
  307. __IOM uint32_t USART1 : 1;
  308. __IM uint32_t RESERVED4 : 17;
  309. } APB2RST_B;
  310. } ;
  311. /* APB1 peripheral reset register */
  312. union
  313. {
  314. __IOM uint32_t APB1RST;
  315. struct
  316. {
  317. __IOM uint32_t TMR2 : 1;
  318. __IOM uint32_t TMR3 : 1;
  319. __IOM uint32_t TMR4 : 1;
  320. __IM uint32_t RESERVED1 : 8;
  321. __IOM uint32_t WWDT : 1;
  322. __IM uint32_t RESERVED2 : 2;
  323. __IOM uint32_t SPI2 : 1;
  324. __IM uint32_t RESERVED3 : 2;
  325. __IOM uint32_t USART2 : 1;
  326. __IOM uint32_t USART3 : 1;
  327. __IM uint32_t RESERVED4 : 2;
  328. __IOM uint32_t I2C1 : 1;
  329. __IOM uint32_t I2C2 : 1;
  330. __IOM uint32_t USBD : 1;
  331. __IM uint32_t RESERVED5 : 1;
  332. __IOM uint32_t CAN1 : 1;
  333. __IM uint32_t CAN2 : 1;
  334. __IOM uint32_t BAKP : 1;
  335. __IOM uint32_t PMU : 1;
  336. __IM uint32_t RESERVED6 : 3;
  337. } APB1RST_B;
  338. } ;
  339. /* AHB clock enable register */
  340. union
  341. {
  342. __IOM uint32_t AHBCLKEN;
  343. struct
  344. {
  345. __IOM uint32_t DMA1 : 1;
  346. __IM uint32_t RESERVED1 : 1;
  347. __IOM uint32_t SRAM : 1;
  348. __IOM uint32_t FPU : 1;
  349. __IOM uint32_t FMC : 1;
  350. __IOM uint32_t QSPI : 1;
  351. __IOM uint32_t CRC : 1;
  352. __IM uint32_t RESERVED2 : 25;
  353. } AHBCLKEN_B;
  354. } ;
  355. /* APB2 clock enable register */
  356. union
  357. {
  358. __IOM uint32_t APB2CLKEN;
  359. struct
  360. {
  361. __IOM uint32_t AFIO : 1;
  362. __IM uint32_t RESERVED1 : 1;
  363. __IOM uint32_t PA : 1;
  364. __IOM uint32_t PB : 1;
  365. __IOM uint32_t PC : 1;
  366. __IOM uint32_t PD : 1;
  367. __IOM uint32_t PE : 1;
  368. __IM uint32_t RESERVED2 : 2;
  369. __IOM uint32_t ADC1 : 1;
  370. __IOM uint32_t ADC2 : 1;
  371. __IOM uint32_t TMR1 : 1;
  372. __IOM uint32_t SPI1 : 1;
  373. __IM uint32_t RESERVED3 : 1;
  374. __IOM uint32_t USART1 : 1;
  375. __IM uint32_t RESERVED4 : 17;
  376. } APB2CLKEN_B;
  377. };
  378. /* APB1 clock enable register */
  379. union
  380. {
  381. __IOM uint32_t APB1CLKEN;
  382. struct
  383. {
  384. __IOM uint32_t TMR2 : 1;
  385. __IOM uint32_t TMR3 : 1;
  386. __IOM uint32_t TMR4 : 1;
  387. __IM uint32_t RESERVED1 : 8;
  388. __IOM uint32_t WWDT : 1;
  389. __IM uint32_t RESERVED2 : 2;
  390. __IOM uint32_t SPI2 : 1;
  391. __IM uint32_t RESERVED3 : 2;
  392. __IOM uint32_t USART2 : 1;
  393. __IOM uint32_t USART3 : 1;
  394. __IM uint32_t RESERVED4 : 2;
  395. __IOM uint32_t I2C1 : 1;
  396. __IOM uint32_t I2C2 : 1;
  397. __IOM uint32_t USBD : 1;
  398. __IM uint32_t RESERVED5 : 1;
  399. __IOM uint32_t CAN1 : 1;
  400. __IM uint32_t CAN2 : 1;
  401. __IOM uint32_t BAKP : 1;
  402. __IOM uint32_t PMU : 1;
  403. __IM uint32_t RESERVED6 : 3;
  404. } APB1CLKEN_B;
  405. } ;
  406. /* Backup domain control register */
  407. union
  408. {
  409. __IOM uint32_t BDCTRL;
  410. struct
  411. {
  412. __IOM uint32_t LSEEN : 1;
  413. __IM uint32_t LSERDYFLG : 1;
  414. __IOM uint32_t LSEBCFG : 1;
  415. __IM uint32_t RESERVED1 : 5;
  416. __IOM uint32_t RTCSRCSEL : 2;
  417. __IM uint32_t RESERVED2 : 5;
  418. __IOM uint32_t RTCCLKEN : 1;
  419. __IOM uint32_t BDRST : 1;
  420. __IM uint32_t RESERVED3 : 15;
  421. } BDCTRL_B;
  422. } ;
  423. /* Control/status register */
  424. union
  425. {
  426. __IOM uint32_t CSTS;
  427. struct
  428. {
  429. __IOM uint32_t LSIEN : 1;
  430. __IM uint32_t LSIRDYFLG : 1;
  431. __IM uint32_t RESERVED1 : 22;
  432. __IOM uint32_t RSTFLGCLR : 1;
  433. __IM uint32_t RESERVED2 : 1;
  434. __IOM uint32_t NRSTFLG : 1;
  435. __IOM uint32_t PODRSTFLG : 1;
  436. __IOM uint32_t SWRSTFLG : 1;
  437. __IOM uint32_t IWDTRSTFLG : 1;
  438. __IOM uint32_t WWDTRSTFLG : 1;
  439. __IOM uint32_t LPWRRSTFLG : 1;
  440. } CSTS_B;
  441. } ;
  442. } RCM_T;
  443. /*!
  444. * @brief General purpose I/O (GPIO)
  445. */
  446. typedef struct
  447. {
  448. /* Port configure register low */
  449. union
  450. {
  451. __IOM uint32_t CFGLOW;
  452. struct
  453. {
  454. __IOM uint32_t MODE0 : 2;
  455. __IOM uint32_t CFG0 : 2;
  456. __IOM uint32_t MODE1 : 2;
  457. __IOM uint32_t CFG1 : 2;
  458. __IOM uint32_t MODE2 : 2;
  459. __IOM uint32_t CFG2 : 2;
  460. __IOM uint32_t MODE3 : 2;
  461. __IOM uint32_t CFG3 : 2;
  462. __IOM uint32_t MODE4 : 2;
  463. __IOM uint32_t CFG4 : 2;
  464. __IOM uint32_t MODE5 : 2;
  465. __IOM uint32_t CFG5 : 2;
  466. __IOM uint32_t MODE6 : 2;
  467. __IOM uint32_t CFG6 : 2;
  468. __IOM uint32_t MODE7 : 2;
  469. __IOM uint32_t CFG7 : 2;
  470. } CFGLOW_B;
  471. } ;
  472. /* Port configure register high */
  473. union
  474. {
  475. __IOM uint32_t CFGHIG;
  476. struct
  477. {
  478. __IOM uint32_t MODE8 : 2;
  479. __IOM uint32_t CFG8 : 2;
  480. __IOM uint32_t MODE9 : 2;
  481. __IOM uint32_t CFG9 : 2;
  482. __IOM uint32_t MODE10 : 2;
  483. __IOM uint32_t CFG10 : 2;
  484. __IOM uint32_t MODE11 : 2;
  485. __IOM uint32_t CFG11 : 2;
  486. __IOM uint32_t MODE12 : 2;
  487. __IOM uint32_t CFG12 : 2;
  488. __IOM uint32_t MODE13 : 2;
  489. __IOM uint32_t CFG13 : 2;
  490. __IOM uint32_t MODE14 : 2;
  491. __IOM uint32_t CFG14 : 2;
  492. __IOM uint32_t MODE15 : 2;
  493. __IOM uint32_t CFG15 : 2;
  494. } CFGHIG_B;
  495. } ;
  496. /* Port data in register */
  497. union
  498. {
  499. __IM uint32_t IDATA;
  500. struct
  501. {
  502. __IM uint32_t IDATA0 : 1;
  503. __IM uint32_t IDATA1 : 1;
  504. __IM uint32_t IDATA2 : 1;
  505. __IM uint32_t IDATA3 : 1;
  506. __IM uint32_t IDATA4 : 1;
  507. __IM uint32_t IDATA5 : 1;
  508. __IM uint32_t IDATA6 : 1;
  509. __IM uint32_t IDATA7 : 1;
  510. __IM uint32_t IDATA8 : 1;
  511. __IM uint32_t IDATA9 : 1;
  512. __IM uint32_t IDATA10 : 1;
  513. __IM uint32_t IDATA11 : 1;
  514. __IM uint32_t IDATA12 : 1;
  515. __IM uint32_t IDATA13 : 1;
  516. __IM uint32_t IDATA14 : 1;
  517. __IM uint32_t IDATA15 : 1;
  518. __IM uint32_t RESERVED : 16;
  519. } IDATA_B;
  520. } ;
  521. /* Port data output register */
  522. union
  523. {
  524. __IOM uint32_t ODATA;
  525. struct
  526. {
  527. __IOM uint32_t ODATA0 : 1;
  528. __IOM uint32_t ODATA1 : 1;
  529. __IOM uint32_t ODATA2 : 1;
  530. __IOM uint32_t ODATA3 : 1;
  531. __IOM uint32_t ODATA4 : 1;
  532. __IOM uint32_t ODATA5 : 1;
  533. __IOM uint32_t ODATA6 : 1;
  534. __IOM uint32_t ODATA7 : 1;
  535. __IOM uint32_t ODATA8 : 1;
  536. __IOM uint32_t ODATA9 : 1;
  537. __IOM uint32_t ODATA10 : 1;
  538. __IOM uint32_t ODATA11 : 1;
  539. __IOM uint32_t ODATA12 : 1;
  540. __IOM uint32_t ODATA13 : 1;
  541. __IOM uint32_t ODATA14 : 1;
  542. __IOM uint32_t ODATA15 : 1;
  543. __IM uint32_t RESERVED : 16;
  544. } ODATA_B;
  545. } ;
  546. /* Port bit set/clear register */
  547. union
  548. {
  549. __OM uint32_t BSC;
  550. struct
  551. {
  552. __OM uint32_t BS0 : 1;
  553. __OM uint32_t BS1 : 1;
  554. __OM uint32_t BS2 : 1;
  555. __OM uint32_t BS3 : 1;
  556. __OM uint32_t BS4 : 1;
  557. __OM uint32_t BS5 : 1;
  558. __OM uint32_t BS6 : 1;
  559. __OM uint32_t BS7 : 1;
  560. __OM uint32_t BS8 : 1;
  561. __OM uint32_t BS9 : 1;
  562. __OM uint32_t BS10 : 1;
  563. __OM uint32_t BS11 : 1;
  564. __OM uint32_t BS12 : 1;
  565. __OM uint32_t BS13 : 1;
  566. __OM uint32_t BS14 : 1;
  567. __OM uint32_t BS15 : 1;
  568. __OM uint32_t BR0 : 1;
  569. __OM uint32_t BC1 : 1;
  570. __OM uint32_t BC2 : 1;
  571. __OM uint32_t BR3 : 1;
  572. __OM uint32_t BC4 : 1;
  573. __OM uint32_t BC5 : 1;
  574. __OM uint32_t BC6 : 1;
  575. __OM uint32_t BC7 : 1;
  576. __OM uint32_t BC8 : 1;
  577. __OM uint32_t BC9 : 1;
  578. __OM uint32_t BC10 : 1;
  579. __OM uint32_t BC11 : 1;
  580. __OM uint32_t BC12 : 1;
  581. __OM uint32_t BC13 : 1;
  582. __OM uint32_t BC14 : 1;
  583. __OM uint32_t BC15 : 1;
  584. } BSC_B;
  585. } ;
  586. /* Port bit clear register */
  587. union
  588. {
  589. __OM uint32_t BC;
  590. struct
  591. {
  592. __OM uint32_t BC0 : 1;
  593. __OM uint32_t BC1 : 1;
  594. __OM uint32_t BC2 : 1;
  595. __OM uint32_t BC3 : 1;
  596. __OM uint32_t BC4 : 1;
  597. __OM uint32_t BC5 : 1;
  598. __OM uint32_t BC6 : 1;
  599. __OM uint32_t BC7 : 1;
  600. __OM uint32_t BC8 : 1;
  601. __OM uint32_t BC9 : 1;
  602. __OM uint32_t BC10 : 1;
  603. __OM uint32_t BC11 : 1;
  604. __OM uint32_t BC12 : 1;
  605. __OM uint32_t BC13 : 1;
  606. __OM uint32_t BC14 : 1;
  607. __OM uint32_t BC15 : 1;
  608. __IM uint32_t RESERVED : 16;
  609. } BC_B;
  610. } ;
  611. /* Port configuration lock register */
  612. union
  613. {
  614. __IOM uint32_t LOCK;
  615. struct
  616. {
  617. __IOM uint32_t LOCK0 : 1;
  618. __IOM uint32_t LOCK1 : 1;
  619. __IOM uint32_t LOCK2 : 1;
  620. __IOM uint32_t LOCK3 : 1;
  621. __IOM uint32_t LOCK4 : 1;
  622. __IOM uint32_t LOCK5 : 1;
  623. __IOM uint32_t LOCK6 : 1;
  624. __IOM uint32_t LOCK7 : 1;
  625. __IOM uint32_t LOCK8 : 1;
  626. __IOM uint32_t LOCK9 : 1;
  627. __IOM uint32_t LOCK10 : 1;
  628. __IOM uint32_t LOCK11 : 1;
  629. __IOM uint32_t LOCK12 : 1;
  630. __IOM uint32_t LOCK13 : 1;
  631. __IOM uint32_t LOCK14 : 1;
  632. __IOM uint32_t LOCK15 : 1;
  633. __IOM uint32_t LOCKKEY : 1;
  634. __IM uint32_t RESERVED : 16;
  635. } LOCK_B;
  636. } ;
  637. } GPIO_T;
  638. /*!
  639. * @brief Alternate function I/O (AFIO)
  640. */
  641. typedef struct
  642. {
  643. /* Event control register */
  644. union
  645. {
  646. __IOM uint32_t EVCTRL;
  647. struct
  648. {
  649. __IOM uint32_t PINSEL : 4;
  650. __IOM uint32_t PORTSEL : 3;
  651. __IOM uint32_t EVOEN : 1;
  652. __IM uint32_t RESERVED : 24;
  653. } EVCTRL_B;
  654. } ;
  655. /* Alternate function IO remap and Serial wire JTAG configuration register */
  656. union
  657. {
  658. __IOM uint32_t REMAP1;
  659. struct
  660. {
  661. __IOM uint32_t SPI1RMP : 1;
  662. __IOM uint32_t I2C1RMP : 1;
  663. __IOM uint32_t USART1RMP : 1;
  664. __IOM uint32_t USART2RMP : 1;
  665. __IOM uint32_t USART3RMP : 2;
  666. __IOM uint32_t TMR1RMP : 2;
  667. __IOM uint32_t TMR2RMP : 2;
  668. __IOM uint32_t TMR3RMP : 2;
  669. __IOM uint32_t TMR4RMP : 1;
  670. __IOM uint32_t CAN1RMP : 2;
  671. __IOM uint32_t PD01RMP : 1;
  672. __IM uint32_t RESERVED1 : 1;
  673. __IOM uint32_t ADC1_ETRGINJC_RMP : 1;
  674. __IOM uint32_t ADC1_ETRGREGC_RMP : 1;
  675. __IOM uint32_t ADC2_ETRGINJC_RMP : 1;
  676. __IOM uint32_t ADC2_ETRGREGC_RMP : 1;
  677. __IM uint32_t RESERVED2 : 1;
  678. __IOM uint32_t CAN2RMP : 1;
  679. __IM uint32_t RESERVED3 : 1;
  680. __OM uint32_t SWJCFG : 3;
  681. __IM uint32_t RESERVED4 : 5;
  682. } REMAP1_B;
  683. } ;
  684. /* External interrupt select register1 */
  685. union
  686. {
  687. __IOM uint32_t EINTSEL1;
  688. struct
  689. {
  690. __IOM uint32_t EINT0 : 4;
  691. __IOM uint32_t EINT1 : 4;
  692. __IOM uint32_t EINT2 : 4;
  693. __IOM uint32_t EINT3 : 4;
  694. __IM uint32_t RESERVED : 16;
  695. } EINTSEL1_B;
  696. } ;
  697. /* External interrupt select register2 */
  698. union
  699. {
  700. __IOM uint32_t EINTSEL2;
  701. struct
  702. {
  703. __IOM uint32_t EINT4 : 4;
  704. __IOM uint32_t EINT5 : 4;
  705. __IOM uint32_t EINT6 : 4;
  706. __IOM uint32_t EINT7 : 4;
  707. __IM uint32_t RESERVED : 16;
  708. } EINTSEL2_B;
  709. } ;
  710. /* External interrupt select register3 */
  711. union
  712. {
  713. __IOM uint32_t EINTSEL3;
  714. struct
  715. {
  716. __IOM uint32_t EINT8 : 4;
  717. __IOM uint32_t EINT9 : 4;
  718. __IOM uint32_t EINT10 : 4;
  719. __IOM uint32_t EINT11 : 4;
  720. __IM uint32_t RESERVED : 16;
  721. } EINTSEL3_B;
  722. } ;
  723. /* External interrupt select register4 */
  724. union
  725. {
  726. __IOM uint32_t EINTSEL4;
  727. struct
  728. {
  729. __IOM uint32_t EINT12 : 4;
  730. __IOM uint32_t EINT13 : 4;
  731. __IOM uint32_t EINT14 : 4;
  732. __IOM uint32_t EINT15 : 4;
  733. __IM uint32_t RESERVED : 16;
  734. } EINTSEL4_B;
  735. } ;
  736. } AFIO_T;
  737. /*!
  738. * @brief Universal synchronous asynchronous receiver transmitter (USART)
  739. */
  740. typedef struct
  741. {
  742. /* Status register */
  743. union
  744. {
  745. __IOM uint32_t STS;
  746. struct
  747. {
  748. __IM uint32_t PEFLG : 1;
  749. __IM uint32_t FEFLG : 1;
  750. __IM uint32_t NEFLG : 1;
  751. __IM uint32_t OVREFLG : 1;
  752. __IM uint32_t IDLEFLG : 1;
  753. __IOM uint32_t RXBNEFLG : 1;
  754. __IOM uint32_t TXCFLG : 1;
  755. __IM uint32_t TXBEFLG : 1;
  756. __IOM uint32_t LBDFLG : 1;
  757. __IOM uint32_t CTSFLG : 1;
  758. __IM uint32_t RESERVED : 22;
  759. } STS_B;
  760. } ;
  761. /* TX Buffer Data Register */
  762. union
  763. {
  764. __IOM uint32_t DATA;
  765. struct
  766. {
  767. __IOM uint32_t DATA : 9;
  768. __IM uint32_t RESERVED : 23;
  769. } DATA_B;
  770. } ;
  771. /* Baud rate register */
  772. union
  773. {
  774. __IOM uint32_t BR;
  775. struct
  776. {
  777. __IOM uint32_t FBR : 4;
  778. __IOM uint32_t IBR : 12;
  779. __IM uint32_t RESERVED : 16;
  780. } BR_B;
  781. } ;
  782. /* Control register 1 */
  783. union
  784. {
  785. __IOM uint32_t CTRL1;
  786. struct
  787. {
  788. __IOM uint32_t TXBF : 1;
  789. __IOM uint32_t RXMUTEEN : 1;
  790. __IOM uint32_t RXEN : 1;
  791. __IOM uint32_t TXEN : 1;
  792. __IOM uint32_t IDLEIEN : 1;
  793. __IOM uint32_t RXBNEIEN : 1;
  794. __IOM uint32_t TXCIEN : 1;
  795. __IOM uint32_t TXBEIEN : 1;
  796. __IOM uint32_t PEIEN : 1;
  797. __IOM uint32_t PCFG : 1;
  798. __IOM uint32_t PCEN : 1;
  799. __IOM uint32_t WUPMCFG : 1;
  800. __IOM uint32_t DBLCFG : 1;
  801. __IOM uint32_t UEN : 1;
  802. __IM uint32_t RESERVED : 18;
  803. } CTRL1_B;
  804. } ;
  805. /* Control register 2 */
  806. union
  807. {
  808. __IOM uint32_t CTRL2;
  809. struct
  810. {
  811. __IOM uint32_t ADDR : 4;
  812. __IM uint32_t RESERVED1 : 1;
  813. __IOM uint32_t LBDLCFG : 1;
  814. __IOM uint32_t LBDIEN : 1;
  815. __IM uint32_t RESERVED2 : 1;
  816. __IOM uint32_t LBCPOEN : 1;
  817. __IOM uint32_t CPHA : 1;
  818. __IOM uint32_t CPOL : 1;
  819. __IOM uint32_t CLKEN : 1;
  820. __IOM uint32_t STOPCFG : 2;
  821. __IOM uint32_t LINMEN : 1;
  822. __IM uint32_t RESERVED3 : 17;
  823. } CTRL2_B;
  824. } ;
  825. /* Control register 3 */
  826. union
  827. {
  828. __IOM uint32_t CTRL3;
  829. struct
  830. {
  831. __IOM uint32_t ERRIEN : 1;
  832. __IOM uint32_t IREN : 1;
  833. __IOM uint32_t IRLPEN : 1;
  834. __IOM uint32_t HDEN : 1;
  835. __IOM uint32_t SCNACKEN : 1;
  836. __IOM uint32_t SCEN : 1;
  837. __IOM uint32_t DMARXEN : 1;
  838. __IOM uint32_t DMATXEN : 1;
  839. __IOM uint32_t RTSEN : 1;
  840. __IOM uint32_t CTSEN : 1;
  841. __IOM uint32_t CTSIEN : 1;
  842. __IM uint32_t RESERVED : 21;
  843. } CTRL3_B;
  844. } ;
  845. /* Guard TMRe and divider number register */
  846. union
  847. {
  848. __IOM uint32_t GTPSC;
  849. struct
  850. {
  851. __IOM uint32_t PSC : 8;
  852. __IOM uint32_t GRDT : 8;
  853. __IM uint32_t RESERVED : 16;
  854. } GTPSC_B;
  855. } ;
  856. } USART_T;
  857. /*!
  858. * @brief Flash memory controller(FMC)
  859. */
  860. typedef struct
  861. {
  862. /* FMC access control register */
  863. union
  864. {
  865. __IOM uint32_t CTRL1;
  866. struct
  867. {
  868. __IOM uint32_t WS : 3;
  869. __IOM uint32_t HCAEN : 1;
  870. __IOM uint32_t PBEN : 1;
  871. __IM uint32_t PBSF : 1;
  872. __IM uint32_t RESERVED : 26;
  873. } CTRL1_B;
  874. } ;
  875. /* key register */
  876. union
  877. {
  878. __OM uint32_t KEY;
  879. struct
  880. {
  881. __OM uint32_t KEY : 32;
  882. } KEY_B;
  883. } ;
  884. /* option byte key register */
  885. union
  886. {
  887. __OM uint32_t OBKEY;
  888. struct
  889. {
  890. __OM uint32_t OBKEY : 32;
  891. } OBKEY_B;
  892. };
  893. /* status register */
  894. union
  895. {
  896. __IOM uint32_t STS;
  897. struct
  898. {
  899. __IM uint32_t BUSYF : 1;
  900. __IM uint32_t RESERVED1 : 1;
  901. __IOM uint32_t PEF : 1;
  902. __IM uint32_t RESERVED2 : 1;
  903. __IOM uint32_t WPEF : 1;
  904. __IOM uint32_t OCF : 1;
  905. __IM uint32_t RESERVED3 : 26;
  906. } STS_B;
  907. };
  908. /* status register */
  909. union
  910. {
  911. __IOM uint32_t CTRL2;
  912. struct
  913. {
  914. __IOM uint32_t PG : 1;
  915. __IOM uint32_t PAGEERA : 1;
  916. __IOM uint32_t MASSERA : 1;
  917. __IM uint32_t RESERVED1 : 1;
  918. __IOM uint32_t OBP : 1;
  919. __IOM uint32_t OBE : 1;
  920. __IOM uint32_t STA : 1;
  921. __IOM uint32_t LOCK : 1;
  922. __IM uint32_t RESERVED2 : 1;
  923. __IOM uint32_t OBWEN : 1;
  924. __IOM uint32_t ERRIE : 1;
  925. __IM uint32_t RESERVED3 : 1;
  926. __IOM uint32_t OCIE : 1;
  927. __IM uint32_t RESERVED4 : 19;
  928. } CTRL2_B;
  929. } ;
  930. /* address register */
  931. union
  932. {
  933. __OM uint32_t ADDR;
  934. struct
  935. {
  936. __OM uint32_t ADDR : 32;
  937. } ADDR_B;
  938. };
  939. __IM uint32_t RESERVED;
  940. /* Option byte register */
  941. union
  942. {
  943. __IOM uint32_t OBCS;
  944. struct
  945. {
  946. __IM uint32_t OBE : 1;
  947. __IM uint32_t READPROT : 1;
  948. __IM uint32_t WDTSEL : 1;
  949. __IM uint32_t RSTSTOP : 1;
  950. __IM uint32_t RSTSTDB : 1;
  951. __IM uint32_t UOB : 5;
  952. __IM uint32_t DATA0 : 8;
  953. __IM uint32_t DATA1 : 8;
  954. __IM uint32_t RESERVED : 6;
  955. } OBCS_B;
  956. };
  957. /* Write protection register */
  958. union
  959. {
  960. __IM uint32_t WRTPROT;
  961. struct
  962. {
  963. __IM uint32_t WRTPORT : 32;
  964. } WRTPORT_B;
  965. };
  966. } FMC_T;
  967. /*!
  968. * @brief CRC calculation unit (CRC)
  969. */
  970. typedef struct
  971. {
  972. /*! @brief DATA register */
  973. union
  974. {
  975. __IOM uint32_t DATA;
  976. struct
  977. {
  978. __IOM uint32_t DATA : 32;
  979. } DATA_B;
  980. } ;
  981. /*! @brief independent DATA register */
  982. union
  983. {
  984. __IOM uint32_t INDATA;
  985. struct
  986. {
  987. __IOM uint32_t INDATA : 8;
  988. __IM uint32_t RESERVED : 24;
  989. } INDATA_B;
  990. };
  991. /*! @brief Countrol register */
  992. union
  993. {
  994. __IOM uint32_t CTRL;
  995. struct
  996. {
  997. __IOM uint32_t RST : 1;
  998. __IM uint32_t RESERVED : 31;
  999. } CTRL_B;
  1000. };
  1001. } CRC_T;
  1002. /*!
  1003. * @brief Real time clock (RTC)
  1004. */
  1005. typedef struct
  1006. {
  1007. /*! @brief Control register */
  1008. union
  1009. {
  1010. __IOM uint32_t CTRL;
  1011. struct
  1012. {
  1013. __IOM uint32_t SECIEN : 1;
  1014. __IOM uint32_t ALRIEN : 1;
  1015. __IOM uint32_t OVRIEN : 1;
  1016. __IM uint32_t RESERVED : 29;
  1017. } CTRL_B;
  1018. };
  1019. /*! @brief Control and State register */
  1020. union
  1021. {
  1022. __IOM uint32_t CSTS;
  1023. struct
  1024. {
  1025. __IOM uint32_t SECFLG : 1;
  1026. __IOM uint32_t ALRFLG : 1;
  1027. __IOM uint32_t OVRFLG : 1;
  1028. __IOM uint32_t RSYNCFLG : 1;
  1029. __IOM uint32_t CFGMFLG : 1;
  1030. __IM uint32_t OCFLG : 1;
  1031. __IM uint32_t RESERVED : 26;
  1032. } CSTS_B;
  1033. };
  1034. /*! @brief RTC predivision loading register High Bit */
  1035. union
  1036. {
  1037. __OM uint32_t PSCRLDH;
  1038. struct
  1039. {
  1040. __OM uint32_t PSCRLDH : 4;
  1041. __IM uint32_t RESERVED : 28;
  1042. } PSCRLDH_B;
  1043. };
  1044. /*! @brief RTC predivision loading register Low Bit */
  1045. union
  1046. {
  1047. __OM uint32_t PSCRLDL;
  1048. struct
  1049. {
  1050. __OM uint32_t PSCRLDL : 16;
  1051. __IM uint32_t RESERVED : 16;
  1052. } PSCRLDL_B;
  1053. };
  1054. /*! @brief RTC predivider remainder register High Bit */
  1055. union
  1056. {
  1057. __IM uint32_t PSCH;
  1058. struct
  1059. {
  1060. __IM uint32_t PSCH : 4;
  1061. __IM uint32_t RESERVED : 28;
  1062. } PSCH_B;
  1063. };
  1064. /*! @brief RTC predivider remainder register Low Bit */
  1065. union
  1066. {
  1067. __IM uint32_t PSCL;
  1068. struct
  1069. {
  1070. __IM uint32_t PSCL : 16;
  1071. __IM uint32_t RESERVED : 16;
  1072. } PSCL_B;
  1073. };
  1074. /*! @brief RTC count register High Bit */
  1075. union
  1076. {
  1077. __IOM uint32_t CNTH;
  1078. struct
  1079. {
  1080. __IOM uint32_t CNTH : 16;
  1081. __IM uint32_t RESERVED : 16;
  1082. } CNTH_B;
  1083. };
  1084. /*! @brief RTC count register Low Bit */
  1085. union
  1086. {
  1087. __IOM uint32_t CNTL;
  1088. struct
  1089. {
  1090. __IOM uint32_t CNTL : 16;
  1091. __IM uint32_t RESERVED : 16;
  1092. } CNTL_B;
  1093. };
  1094. /*! @brief RTC alarm clock register High Bit */
  1095. union
  1096. {
  1097. __OM uint32_t ALRH;
  1098. struct
  1099. {
  1100. __OM uint32_t ALRH : 16;
  1101. __IM uint32_t RESERVED : 16;
  1102. } ALRH_B;
  1103. };
  1104. /*! @brief RTC alarm clock register Low Bit */
  1105. union
  1106. {
  1107. __OM uint32_t ALRL;
  1108. struct
  1109. {
  1110. __OM uint32_t ALRL : 16;
  1111. __IM uint32_t RESERVED : 16;
  1112. } ALRL_B;
  1113. };
  1114. } RTC_T;
  1115. /*!
  1116. * @brief Power Management Unit(PMU)
  1117. */
  1118. typedef struct
  1119. {
  1120. /*! @brief Control register */
  1121. union
  1122. {
  1123. __IOM uint32_t CTRL;
  1124. struct
  1125. {
  1126. __IOM uint32_t LPDSCFG : 1;
  1127. __IOM uint32_t PDDSCFG : 1;
  1128. __IOM uint32_t WUFLGCLR : 1;
  1129. __IOM uint32_t SBFLGCLR : 1;
  1130. __IOM uint32_t PVDEN : 1;
  1131. __IOM uint32_t PLSEL : 3;
  1132. __IOM uint32_t BPWEN : 1;
  1133. __IM uint32_t RESERVED : 23;
  1134. } CTRL_B;
  1135. };
  1136. /*! @brief PMU Status register */
  1137. union
  1138. {
  1139. __IOM uint32_t CSTS;
  1140. struct
  1141. {
  1142. __IM uint32_t WUEFLG : 1;
  1143. __IM uint32_t SBFLG : 1;
  1144. __IM uint32_t PVDOFLG : 1;
  1145. __IM uint32_t RESERVED : 5;
  1146. __IOM uint32_t WKUPCFG : 1;
  1147. __IM uint32_t RESERVED2 : 23;
  1148. } CSTS_B;
  1149. };
  1150. } PMU_T;
  1151. /*!
  1152. * @brief Backup register (BAKPR)
  1153. */
  1154. typedef struct
  1155. {
  1156. __IM uint32_t RESERVED;
  1157. /*! @brief BAKPR DATA1 register */
  1158. union
  1159. {
  1160. __IOM uint32_t DATA1;
  1161. struct
  1162. {
  1163. __IOM uint32_t DATA : 16;
  1164. __IM uint32_t RESERVED : 16;
  1165. } DATA1_B;
  1166. };
  1167. /*! @brief BAKPR DATA2 register */
  1168. union
  1169. {
  1170. __IOM uint32_t DATA2;
  1171. struct
  1172. {
  1173. __IOM uint32_t DATA : 16;
  1174. __IM uint32_t RESERVED : 16;
  1175. } DATA2_B;
  1176. };
  1177. /*! @brief BAKPR DATA3 register */
  1178. union
  1179. {
  1180. __IOM uint32_t DATA3;
  1181. struct
  1182. {
  1183. __IOM uint32_t DATA : 16;
  1184. __IM uint32_t RESERVED : 16;
  1185. } DATA3_B;
  1186. };
  1187. /*! @brief BAKPR DATA4 register */
  1188. union
  1189. {
  1190. __IOM uint32_t DATA4;
  1191. struct
  1192. {
  1193. __IOM uint32_t DATA : 16;
  1194. __IM uint32_t RESERVED : 16;
  1195. } DATA4_B;
  1196. };
  1197. /*! @brief BAKPR DATA5 register */
  1198. union
  1199. {
  1200. __IOM uint32_t DATA5;
  1201. struct
  1202. {
  1203. __IOM uint32_t DATA : 16;
  1204. __IM uint32_t RESERVED : 16;
  1205. } DATA5_B;
  1206. };
  1207. /*! @brief BAKPR DATA6 register */
  1208. union
  1209. {
  1210. __IOM uint32_t DATA6;
  1211. struct
  1212. {
  1213. __IOM uint32_t DATA : 16;
  1214. __IM uint32_t RESERVED : 16;
  1215. } DATA6_B;
  1216. };
  1217. /*! @brief BAKPR DATA7 register */
  1218. union
  1219. {
  1220. __IOM uint32_t DATA7;
  1221. struct
  1222. {
  1223. __IOM uint32_t DATA : 16;
  1224. __IM uint32_t RESERVED : 16;
  1225. } DATA7_B;
  1226. };
  1227. /*! @brief BAKPR DATA8 register */
  1228. union
  1229. {
  1230. __IOM uint32_t DATA8;
  1231. struct
  1232. {
  1233. __IOM uint32_t DATA : 16;
  1234. __IM uint32_t RESERVED : 16;
  1235. } DATA8_B;
  1236. };
  1237. /*! @brief BAKPR DATA9 register */
  1238. union
  1239. {
  1240. __IOM uint32_t DATA9;
  1241. struct
  1242. {
  1243. __IOM uint32_t DATA : 16;
  1244. __IM uint32_t RESERVED : 16;
  1245. } DATA9_B;
  1246. };
  1247. /*! @brief BAKPR DATA10 register */
  1248. union
  1249. {
  1250. __IOM uint32_t DATA10;
  1251. struct
  1252. {
  1253. __IOM uint32_t DATA : 16;
  1254. __IM uint32_t RESERVED : 16;
  1255. } DATA10_B;
  1256. };
  1257. /*! @brief BAKPR Clock Calibration register */
  1258. union
  1259. {
  1260. __IOM uint32_t CLKCAL;
  1261. struct
  1262. {
  1263. __IOM uint32_t CALVALUE : 7;
  1264. __IOM uint32_t CALCOEN : 1;
  1265. __IOM uint32_t ASPOEN : 1;
  1266. __IOM uint32_t ASPOSEL : 1;
  1267. __IM uint32_t RESERVED : 22;
  1268. } CLKCAL_B;
  1269. } ;
  1270. /*! @brief BAKPR Control register */
  1271. union
  1272. {
  1273. __IOM uint32_t CTRL;
  1274. struct
  1275. {
  1276. __IOM uint32_t TPFCFG : 1;
  1277. __IOM uint32_t TPALCFG : 1;
  1278. __IM uint32_t RESERVED : 30;
  1279. } CTRL_B;
  1280. };
  1281. /*! @brief BAKPR Control register */
  1282. union
  1283. {
  1284. __IOM uint32_t CSTS;
  1285. struct
  1286. {
  1287. __OM uint32_t TECLR : 1;
  1288. __OM uint32_t TICLR : 1;
  1289. __IOM uint32_t TPIEN : 1;
  1290. __IM uint32_t RESERVED1 : 5;
  1291. __IM uint32_t TEFLG : 1;
  1292. __IM uint32_t TIFLG : 1;
  1293. __IM uint32_t RESERVED2 : 22;
  1294. } CSTS_B;
  1295. };
  1296. __IM uint32_t RESERVED1[2];
  1297. /*! @brief BAKPR DATA11 register */
  1298. union
  1299. {
  1300. __IOM uint32_t DATA11;
  1301. struct
  1302. {
  1303. __IOM uint32_t DATA : 16;
  1304. __IM uint32_t RESERVED : 16;
  1305. } DATA11_B;
  1306. };
  1307. /*! @brief BAKPR DATA12 register */
  1308. union
  1309. {
  1310. __IOM uint32_t DATA12;
  1311. struct
  1312. {
  1313. __IOM uint32_t DATA : 16;
  1314. __IM uint32_t RESERVED : 16;
  1315. } DATA12_B;
  1316. };
  1317. /*! @brief BAKPR DATA13 register */
  1318. union
  1319. {
  1320. __IOM uint32_t DATA13;
  1321. struct
  1322. {
  1323. __IOM uint32_t DATA : 16;
  1324. __IM uint32_t RESERVED : 16;
  1325. } DATA13_B;
  1326. };
  1327. /*! @brief BAKPR DATA14 register */
  1328. union
  1329. {
  1330. __IOM uint32_t DATA14;
  1331. struct
  1332. {
  1333. __IOM uint32_t DATA : 16;
  1334. __IM uint32_t RESERVED : 16;
  1335. } DATA14_B;
  1336. };
  1337. /*! @brief BAKPR DATA15 register */
  1338. union
  1339. {
  1340. __IOM uint32_t DATA15;
  1341. struct
  1342. {
  1343. __IOM uint32_t DATA : 16;
  1344. __IM uint32_t RESERVED : 16;
  1345. } DATA15_B;
  1346. };
  1347. /*! @brief BAKPR DATA16 register */
  1348. union
  1349. {
  1350. __IOM uint32_t DATA16;
  1351. struct
  1352. {
  1353. __IOM uint32_t DATA : 16;
  1354. __IM uint32_t RESERVED : 16;
  1355. } DATA16_B;
  1356. };
  1357. /*! @brief BAKPR DATA17 register */
  1358. union
  1359. {
  1360. __IOM uint32_t DATA17;
  1361. struct
  1362. {
  1363. __IOM uint32_t DATA : 16;
  1364. __IM uint32_t RESERVED : 16;
  1365. } DATA17_B;
  1366. };
  1367. /*! @brief BAKPR DATA18 register */
  1368. union
  1369. {
  1370. __IOM uint32_t DATA18;
  1371. struct
  1372. {
  1373. __IOM uint32_t DATA : 16;
  1374. __IM uint32_t RESERVED : 16;
  1375. } DATA18_B;
  1376. };
  1377. /*! @brief BAKPR DATA19 register */
  1378. union
  1379. {
  1380. __IOM uint32_t DATA19;
  1381. struct
  1382. {
  1383. __IOM uint32_t DATA : 16;
  1384. __IM uint32_t RESERVED : 16;
  1385. } DATA19_B;
  1386. };
  1387. /*! @brief BAKPR DATA20 register */
  1388. union
  1389. {
  1390. __IOM uint32_t DATA20;
  1391. struct
  1392. {
  1393. __IOM uint32_t DATA : 16;
  1394. __IM uint32_t RESERVED : 16;
  1395. } DATA20_B;
  1396. };
  1397. /*! @brief BAKPR DATA21 register */
  1398. union
  1399. {
  1400. __IOM uint32_t DATA21;
  1401. struct
  1402. {
  1403. __IOM uint32_t DATA : 16;
  1404. __IM uint32_t RESERVED : 16;
  1405. } DATA21_B;
  1406. };
  1407. /*! @brief BAKPR DATA22 register */
  1408. union
  1409. {
  1410. __IOM uint32_t DATA22;
  1411. struct
  1412. {
  1413. __IOM uint32_t DATA : 16;
  1414. __IM uint32_t RESERVED : 16;
  1415. } DATA22_B;
  1416. };
  1417. /*! @brief BAKPR DATA23 register */
  1418. union
  1419. {
  1420. __IOM uint32_t DATA23;
  1421. struct
  1422. {
  1423. __IOM uint32_t DATA : 16;
  1424. __IM uint32_t RESERVED : 16;
  1425. } DATA23_B;
  1426. };
  1427. /*! @brief BAKPR DATA24 register */
  1428. union
  1429. {
  1430. __IOM uint32_t DATA24;
  1431. struct
  1432. {
  1433. __IOM uint32_t DATA : 16;
  1434. __IM uint32_t RESERVED : 16;
  1435. } DATA24_B;
  1436. };
  1437. /*! @brief BAKPR DATA25 register */
  1438. union
  1439. {
  1440. __IOM uint32_t DATA25;
  1441. struct
  1442. {
  1443. __IOM uint32_t DATA : 16;
  1444. __IM uint32_t RESERVED : 16;
  1445. } DATA25_B;
  1446. };
  1447. /*! @brief BAKPR DATA26 register */
  1448. union
  1449. {
  1450. __IOM uint32_t DATA26;
  1451. struct
  1452. {
  1453. __IOM uint32_t DATA : 16;
  1454. __IM uint32_t RESERVED : 16;
  1455. } DATA26_B;
  1456. };
  1457. /*! @brief BAKPR DATA27 register */
  1458. union
  1459. {
  1460. __IOM uint32_t DATA27;
  1461. struct
  1462. {
  1463. __IOM uint32_t DATA : 16;
  1464. __IM uint32_t RESERVED : 16;
  1465. } DATA27_B;
  1466. };
  1467. /*! @brief BAKPR DATA28 register */
  1468. union
  1469. {
  1470. __IOM uint32_t DATA28;
  1471. struct
  1472. {
  1473. __IOM uint32_t DATA : 16;
  1474. __IM uint32_t RESERVED : 16;
  1475. } DATA28_B;
  1476. };
  1477. /*! @brief BAKPR DATA29 register */
  1478. union
  1479. {
  1480. __IOM uint32_t DATA29;
  1481. struct
  1482. {
  1483. __IOM uint32_t DATA : 16;
  1484. __IM uint32_t RESERVED : 16;
  1485. } DATA29_B;
  1486. };
  1487. /*! @brief BAKPR DATA30 register */
  1488. union
  1489. {
  1490. __IOM uint32_t DATA30;
  1491. struct
  1492. {
  1493. __IOM uint32_t DATA : 16;
  1494. __IM uint32_t RESERVED : 16;
  1495. } DATA30_B;
  1496. };
  1497. /*! @brief BAKPR DATA31 register */
  1498. union
  1499. {
  1500. __IOM uint32_t DATA31;
  1501. struct
  1502. {
  1503. __IOM uint32_t DATA : 16;
  1504. __IM uint32_t RESERVED : 16;
  1505. } DATA31_B;
  1506. };
  1507. /*! @brief BAKPR DATA32 register */
  1508. union
  1509. {
  1510. __IOM uint32_t DATA32;
  1511. struct
  1512. {
  1513. __IOM uint32_t DATA : 16;
  1514. __IM uint32_t RESERVED : 16;
  1515. } DATA32_B;
  1516. };
  1517. /*! @brief BAKPR DATA33 register */
  1518. union
  1519. {
  1520. __IOM uint32_t DATA33;
  1521. struct
  1522. {
  1523. __IOM uint32_t DATA : 16;
  1524. __IM uint32_t RESERVED : 16;
  1525. } DATA33_B;
  1526. };
  1527. /*! @brief BAKPR DATA34 register */
  1528. union
  1529. {
  1530. __IOM uint32_t DATA34;
  1531. struct
  1532. {
  1533. __IOM uint32_t DATA : 16;
  1534. __IM uint32_t RESERVED : 16;
  1535. } DATA34_B;
  1536. };
  1537. /*! @brief BAKPR DATA35 register */
  1538. union
  1539. {
  1540. __IOM uint32_t DATA35;
  1541. struct
  1542. {
  1543. __IOM uint32_t DATA : 16;
  1544. __IM uint32_t RESERVED : 16;
  1545. } DATA35_B;
  1546. };
  1547. /*! @brief BAKPR DATA36 register */
  1548. union
  1549. {
  1550. __IOM uint32_t DATA36;
  1551. struct
  1552. {
  1553. __IOM uint32_t DATA : 16;
  1554. __IM uint32_t RESERVED : 16;
  1555. } DATA36_B;
  1556. };
  1557. /*! @brief BAKPR DATA37 register */
  1558. union
  1559. {
  1560. __IOM uint32_t DATA37;
  1561. struct
  1562. {
  1563. __IOM uint32_t DATA : 16;
  1564. __IM uint32_t RESERVED : 16;
  1565. } DATA37_B;
  1566. };
  1567. /*! @brief BAKPR DATA38 register */
  1568. union
  1569. {
  1570. __IOM uint32_t DATA38;
  1571. struct
  1572. {
  1573. __IOM uint32_t DATA : 16;
  1574. __IM uint32_t RESERVED : 16;
  1575. } DATA38_B;
  1576. };
  1577. /*! @brief BAKPR DATA39 register */
  1578. union
  1579. {
  1580. __IOM uint32_t DATA39;
  1581. struct
  1582. {
  1583. __IOM uint32_t DATA : 16;
  1584. __IM uint32_t RESERVED : 16;
  1585. } DATA39_B;
  1586. };
  1587. /*! @brief BAKPR DATA40 register */
  1588. union
  1589. {
  1590. __IOM uint32_t DATA40;
  1591. struct
  1592. {
  1593. __IOM uint32_t DATA : 16;
  1594. __IM uint32_t RESERVED : 16;
  1595. } DATA40_B;
  1596. };
  1597. /*! @brief BAKPR DATA41 register */
  1598. union
  1599. {
  1600. __IOM uint32_t DATA41;
  1601. struct
  1602. {
  1603. __IOM uint32_t DATA : 16;
  1604. __IM uint32_t RESERVED : 16;
  1605. } DATA41_B;
  1606. };
  1607. /*! @brief BAKPR DATA42 register */
  1608. union
  1609. {
  1610. __IOM uint32_t DATA42;
  1611. struct
  1612. {
  1613. __IOM uint32_t DATA : 16;
  1614. __IM uint32_t RESERVED : 16;
  1615. } DATA42_B;
  1616. };
  1617. } BAKPR_T;
  1618. /*!
  1619. * @brief Timer register(TMR)
  1620. */
  1621. typedef struct
  1622. {
  1623. /*! @brief Countrol register 1 */
  1624. union
  1625. {
  1626. __IOM uint32_t CTRL1;
  1627. struct
  1628. {
  1629. __IOM uint32_t CNTEN : 1;
  1630. __IOM uint32_t UD : 1;
  1631. __IOM uint32_t URSSEL : 1;
  1632. __IOM uint32_t SPMEN : 1;
  1633. __IOM uint32_t CNTDIR : 1;
  1634. __IOM uint32_t CAMSEL : 2;
  1635. __IOM uint32_t ARPEN : 1;
  1636. __IOM uint32_t CLKDIV : 2;
  1637. __IM uint32_t RESERVED : 22;
  1638. } CTRL1_B;
  1639. };
  1640. /*! @brief Countrol register 2 */
  1641. union
  1642. {
  1643. __IOM uint32_t CTRL2;
  1644. struct
  1645. {
  1646. __IOM uint32_t CCPEN : 1;
  1647. __IM uint32_t RESERVED1 : 1;
  1648. __IOM uint32_t CCUSEL : 1;
  1649. __IOM uint32_t CCDSEL : 1;
  1650. __IOM uint32_t MMSEL : 3;
  1651. __IOM uint32_t TI1SEL : 1;
  1652. __IOM uint32_t OC1OIS : 1;
  1653. __IOM uint32_t OC1NOIS : 1;
  1654. __IOM uint32_t OC2OIS : 1;
  1655. __IOM uint32_t OC2NOIS : 1;
  1656. __IOM uint32_t OC3OIS : 1;
  1657. __IOM uint32_t OC3NOIS : 1;
  1658. __IOM uint32_t OC4OIS : 1;
  1659. __IM uint32_t RESERVED2 : 17;
  1660. } CTRL2_B;
  1661. };
  1662. /*! @brief Control register from mode */
  1663. union
  1664. {
  1665. __IOM uint32_t SMCTRL;
  1666. struct
  1667. {
  1668. __IOM uint32_t SMFSEL : 3;
  1669. __IM uint32_t RESERVED1 : 1;
  1670. __IOM uint32_t TRGSEL : 3;
  1671. __IOM uint32_t MSMEN : 1;
  1672. __IOM uint32_t ETFCFG : 4;
  1673. __IOM uint32_t ETPCFG : 2;
  1674. __IOM uint32_t ECEN : 1;
  1675. __IOM uint32_t ETPOL : 1;
  1676. __IM uint32_t RESERVED2 : 16;
  1677. } SMCTRL_B;
  1678. };
  1679. /*! @brief DMA and Interrupt enable register */
  1680. union
  1681. {
  1682. __IOM uint32_t DIEN;
  1683. struct
  1684. {
  1685. __IOM uint32_t UIEN : 1;
  1686. __IOM uint32_t CC1IEN : 1;
  1687. __IOM uint32_t CC2IEN : 1;
  1688. __IOM uint32_t CC3IEN : 1;
  1689. __IOM uint32_t CC4IEN : 1;
  1690. __IOM uint32_t COMIEN : 1;
  1691. __IOM uint32_t TRGIEN : 1;
  1692. __IOM uint32_t BRKIEN : 1;
  1693. __IOM uint32_t UDIEN : 1;
  1694. __IOM uint32_t CC1DEN : 1;
  1695. __IOM uint32_t CC2DEN : 1;
  1696. __IOM uint32_t CC3DEN : 1;
  1697. __IOM uint32_t CC4DEN : 1;
  1698. __IOM uint32_t COMDEN : 1;
  1699. __IOM uint32_t TRGDEN : 1;
  1700. __IM uint32_t RESERVED : 17;
  1701. } DIEN_B;
  1702. };
  1703. /*! @brief Status register */
  1704. union
  1705. {
  1706. __IOM uint32_t STS;
  1707. struct
  1708. {
  1709. __IOM uint32_t UIFLG : 1;
  1710. __IOM uint32_t CC1IFLG : 1;
  1711. __IOM uint32_t CC2IFLG : 1;
  1712. __IOM uint32_t CC3IFLG : 1;
  1713. __IOM uint32_t CC4IFLG : 1;
  1714. __IOM uint32_t COMIFLG : 1;
  1715. __IOM uint32_t TRGIFLG : 1;
  1716. __IOM uint32_t BRKIFLG : 1;
  1717. __IM uint32_t RESERVED1 : 1;
  1718. __IOM uint32_t CC1RCFLG : 1;
  1719. __IOM uint32_t CC2RCFLG : 1;
  1720. __IOM uint32_t CC3RCFLG : 1;
  1721. __IOM uint32_t CC4RCFLG : 1;
  1722. __IM uint32_t RESERVED2 : 19;
  1723. } STS_B;
  1724. };
  1725. /*! @brief Software controls event generation registers */
  1726. union
  1727. {
  1728. __OM uint32_t CEG;
  1729. struct
  1730. {
  1731. __OM uint32_t UEG : 1;
  1732. __OM uint32_t CC1EG : 1;
  1733. __OM uint32_t CC2EG : 1;
  1734. __OM uint32_t CC3EG : 1;
  1735. __OM uint32_t CC4EG : 1;
  1736. __OM uint32_t COMG : 1;
  1737. __OM uint32_t TEG : 1;
  1738. __OM uint32_t BEG : 1;
  1739. __IM uint32_t RESERVED : 24;
  1740. } CEG_B;
  1741. };
  1742. /*! @brief Capture the compare mode register 1 */
  1743. union
  1744. {
  1745. __IOM uint32_t CCM1;
  1746. /*! @brief Compare mode */
  1747. struct
  1748. {
  1749. __IOM uint32_t CC1SEL : 2;
  1750. __IOM uint32_t OC1FEN : 1;
  1751. __IOM uint32_t OC1PEN : 1;
  1752. __IOM uint32_t OC1MOD : 3;
  1753. __IOM uint32_t OC1CEN : 1;
  1754. __IOM uint32_t CC2SEL : 2;
  1755. __IOM uint32_t OC2FEN : 1;
  1756. __IOM uint32_t OC2PEN : 1;
  1757. __IOM uint32_t OC2MOD : 3;
  1758. __IOM uint32_t OC2CEN : 1;
  1759. __IM uint32_t RESERVED : 16;
  1760. } CCM1_COMPARE_B;
  1761. /*! @brief Capture mode */
  1762. struct
  1763. {
  1764. __IOM uint32_t CC1SEL : 2;
  1765. __IOM uint32_t IC1PSC : 2;
  1766. __IOM uint32_t IC1F : 4;
  1767. __IOM uint32_t CC2SEL : 2;
  1768. __IOM uint32_t IC2PSC : 2;
  1769. __IOM uint32_t IC2F : 4;
  1770. __IM uint32_t RESERVED : 16;
  1771. } CCM1_CAPTURE_B;
  1772. };
  1773. /*! @brief Capture the compare mode register 2 */
  1774. union
  1775. {
  1776. __IOM uint32_t CCM2;
  1777. /*! @brief Compare mode */
  1778. struct
  1779. {
  1780. __IOM uint32_t CC3SEL : 2;
  1781. __IOM uint32_t OC3FEN : 1;
  1782. __IOM uint32_t OC3PEN : 1;
  1783. __IOM uint32_t OC3MOD : 3;
  1784. __IOM uint32_t OC3CEN : 1;
  1785. __IOM uint32_t CC4SEL : 2;
  1786. __IOM uint32_t OC4FEN : 1;
  1787. __IOM uint32_t OC4PEN : 1;
  1788. __IOM uint32_t OC4MOD : 3;
  1789. __IOM uint32_t OC4CEN : 1;
  1790. __IM uint32_t RESERVED : 16;
  1791. } CCM2_COMPARE_B;
  1792. /*! @brief Capture mode */
  1793. struct
  1794. {
  1795. __IOM uint32_t CC3SEL : 2;
  1796. __IOM uint32_t IC3PSC : 2;
  1797. __IOM uint32_t IC3F : 4;
  1798. __IOM uint32_t CC4SEL : 2;
  1799. __IOM uint32_t IC4PSC : 2;
  1800. __IOM uint32_t IC4F : 4;
  1801. __IM uint32_t RESERVED : 16;
  1802. } CCM2_CAPTURE_B;
  1803. };
  1804. /*! @brief Channel control register */
  1805. union
  1806. {
  1807. __IOM uint32_t CCEN;
  1808. struct
  1809. {
  1810. __IOM uint32_t CC1EN : 1;
  1811. __IOM uint32_t CC1POL : 1;
  1812. __IOM uint32_t CC1NEN : 1;
  1813. __IOM uint32_t CC1NPOL : 1;
  1814. __IOM uint32_t CC2EN : 1;
  1815. __IOM uint32_t CC2POL : 1;
  1816. __IOM uint32_t CC2NEN : 1;
  1817. __IOM uint32_t CC2NPOL : 1;
  1818. __IOM uint32_t CC3EN : 1;
  1819. __IOM uint32_t CC3POL : 1;
  1820. __IOM uint32_t CC3NEN : 1;
  1821. __IOM uint32_t CC3NPOL : 1;
  1822. __IOM uint32_t CC4EN : 1;
  1823. __IOM uint32_t CC4POL : 1;
  1824. __IM uint32_t RESERVED : 18;
  1825. } CCEN_B;
  1826. };
  1827. /*! @brief Counting register */
  1828. union
  1829. {
  1830. __IOM uint32_t CNT;
  1831. struct
  1832. {
  1833. __IOM uint32_t CNT : 16;
  1834. __IM uint32_t RESERVED : 16;
  1835. } CNT_B;
  1836. };
  1837. /*! @brief Division register */
  1838. union
  1839. {
  1840. __IOM uint32_t PSC;
  1841. struct
  1842. {
  1843. __IOM uint32_t PSC : 16;
  1844. __IM uint32_t RESERVED : 16;
  1845. } PSC_B;
  1846. };
  1847. /*! @brief Automatic reload register */
  1848. union
  1849. {
  1850. __IOM uint32_t AUTORLD;
  1851. struct
  1852. {
  1853. __IOM uint32_t AUTORLD : 16;
  1854. __IM uint32_t RESERVED : 16;
  1855. } AUTORLD_B;
  1856. };
  1857. /*! @brief Repeat count register */
  1858. union
  1859. {
  1860. __IOM uint32_t REPCNT;
  1861. struct
  1862. {
  1863. __IOM uint32_t REPCNT : 8;
  1864. __IM uint32_t RESERVED : 24;
  1865. } REPCNT_B;
  1866. };
  1867. /*! @brief Capture comparison register channel 1 */
  1868. union
  1869. {
  1870. __IOM uint32_t CC1;
  1871. struct
  1872. {
  1873. __IOM uint32_t CC1 : 16;
  1874. __IM uint32_t RESERVED : 16;
  1875. } CC1_B;
  1876. };
  1877. /*! @brief Capture comparison register channel 2 */
  1878. union
  1879. {
  1880. __IOM uint32_t CC2;
  1881. struct
  1882. {
  1883. __IOM uint32_t CC2 : 16;
  1884. __IM uint32_t RESERVED : 16;
  1885. } CC2_B;
  1886. };
  1887. /*! @brief Capture comparison register channel 3 */
  1888. union
  1889. {
  1890. __IOM uint32_t CC3;
  1891. struct
  1892. {
  1893. __IOM uint32_t CC3 : 16;
  1894. __IM uint32_t RESERVED : 16;
  1895. } CC3_B;
  1896. };
  1897. /*! @brief Capture comparison register channel 4 */
  1898. union
  1899. {
  1900. __IOM uint32_t CC4;
  1901. struct
  1902. {
  1903. __IOM uint32_t CC4 : 16;
  1904. __IM uint32_t RESERVED : 16;
  1905. } CC4_B;
  1906. };
  1907. /*! @brief Brake and dead zone registers */
  1908. union
  1909. {
  1910. __IOM uint32_t BDT;
  1911. struct
  1912. {
  1913. __IOM uint32_t DTS : 8;
  1914. __IOM uint32_t LOCKCFG : 2;
  1915. __IOM uint32_t IMOS : 1;
  1916. __IOM uint32_t RMOS : 1;
  1917. __IOM uint32_t BRKEN : 1;
  1918. __IOM uint32_t BRKPOL : 1;
  1919. __IOM uint32_t AOEN : 1;
  1920. __IOM uint32_t MOEN : 1;
  1921. __IM uint32_t RESERVED : 16;
  1922. } BDT_B;
  1923. };
  1924. /*! @brief DMA control register */
  1925. union
  1926. {
  1927. __IOM uint32_t DCTRL;
  1928. struct
  1929. {
  1930. __IOM uint32_t DBADDR : 5;
  1931. __IM uint32_t RESERVED1 : 3;
  1932. __IOM uint32_t DBLEN : 5;
  1933. __IM uint32_t RESERVED2 : 19;
  1934. } DCTRL_B;
  1935. };
  1936. /*! @brief Consecutive DMA addresses */
  1937. union
  1938. {
  1939. __IOM uint32_t DMADDR;
  1940. struct
  1941. {
  1942. __IOM uint32_t DMADDR : 16;
  1943. __IM uint32_t RESERVED2 : 16;
  1944. } DMADDR_B;
  1945. };
  1946. } TMR_T;
  1947. /*!
  1948. * @brief Direct Memory Access register(DMA)
  1949. */
  1950. typedef struct
  1951. {
  1952. /*! @brief Interrupt status register */
  1953. union
  1954. {
  1955. __IM uint32_t INTSTS;
  1956. struct
  1957. {
  1958. __IM uint32_t GINTFLG1 : 1;
  1959. __IM uint32_t TCFLG1 : 1;
  1960. __IM uint32_t HTFLG1 : 1;
  1961. __IM uint32_t TERRFLG1 : 1;
  1962. __IM uint32_t GINTFLG2 : 1;
  1963. __IM uint32_t TCFLG2 : 1;
  1964. __IM uint32_t HTFLG2 : 1;
  1965. __IM uint32_t TERRFLG2 : 1;
  1966. __IM uint32_t GINTFLG3 : 1;
  1967. __IM uint32_t TCFLG3 : 1;
  1968. __IM uint32_t HTFLG3 : 1;
  1969. __IM uint32_t TERRFLG3 : 1;
  1970. __IM uint32_t GINTFLG4 : 1;
  1971. __IM uint32_t TCFLG4 : 1;
  1972. __IM uint32_t HTFLG4 : 1;
  1973. __IM uint32_t TERRFLG4 : 1;
  1974. __IM uint32_t GINTFLG5 : 1;
  1975. __IM uint32_t TCFLG5 : 1;
  1976. __IM uint32_t HTFLG5 : 1;
  1977. __IM uint32_t TERRFLG5 : 1;
  1978. __IM uint32_t GINTFLG6 : 1;
  1979. __IM uint32_t TCFLG6 : 1;
  1980. __IM uint32_t HTFLG6 : 1;
  1981. __IM uint32_t TERRFLG6 : 1;
  1982. __IM uint32_t GINTFLG7 : 1;
  1983. __IM uint32_t TCFLG7 : 1;
  1984. __IM uint32_t HTFLG7 : 1;
  1985. __IM uint32_t TERRFLG7 : 1;
  1986. __IM uint32_t RESERVED : 4;
  1987. } INTSTS_B;
  1988. };
  1989. /*! @brief Interrupt reset register */
  1990. union
  1991. {
  1992. __OM uint32_t INTFCLR;
  1993. struct
  1994. {
  1995. __OM uint32_t GINTCLR1 : 1;
  1996. __OM uint32_t TCCLR1 : 1;
  1997. __OM uint32_t HTCLR1 : 1;
  1998. __OM uint32_t TERRCLR1 : 1;
  1999. __OM uint32_t GINTCLR2 : 1;
  2000. __OM uint32_t TCCLR2 : 1;
  2001. __OM uint32_t HTCLR2 : 1;
  2002. __OM uint32_t TERRCLR2 : 1;
  2003. __OM uint32_t GINTCLR3 : 1;
  2004. __OM uint32_t TCCLR3 : 1;
  2005. __OM uint32_t HTCLR3 : 1;
  2006. __OM uint32_t TERRCLR3 : 1;
  2007. __OM uint32_t GINTCLR4 : 1;
  2008. __OM uint32_t TCCLR4 : 1;
  2009. __OM uint32_t HTCLR4 : 1;
  2010. __OM uint32_t TERRCLR4 : 1;
  2011. __OM uint32_t GINTCLR5 : 1;
  2012. __OM uint32_t TCCLR5 : 1;
  2013. __OM uint32_t HTCLR5 : 1;
  2014. __OM uint32_t TERRCLR5 : 1;
  2015. __OM uint32_t GINTCLR6 : 1;
  2016. __OM uint32_t TCCLR6 : 1;
  2017. __OM uint32_t HTCLR6 : 1;
  2018. __OM uint32_t TERRCLR6 : 1;
  2019. __OM uint32_t GINTCLR7 : 1;
  2020. __OM uint32_t TCCLR7 : 1;
  2021. __OM uint32_t HTCLR7 : 1;
  2022. __OM uint32_t TERRCLR7 : 1;
  2023. __IM uint32_t RESERVED : 4;
  2024. } INTFCLR_B;
  2025. };
  2026. } DMA_T;
  2027. /*!
  2028. * @brief DMA Channel register
  2029. */
  2030. typedef struct
  2031. {
  2032. /*! @brief DMA Channel setup register */
  2033. union
  2034. {
  2035. __IOM uint32_t CHCFG;
  2036. struct
  2037. {
  2038. __IOM uint32_t CHEN : 1;
  2039. __IOM uint32_t TCINTEN : 1;
  2040. __IOM uint32_t HTINTEN : 1;
  2041. __IOM uint32_t TERRINTEN : 1;
  2042. __IOM uint32_t DIRCFG : 1;
  2043. __IOM uint32_t CIRMODE : 1;
  2044. __IOM uint32_t PERIMODE : 1;
  2045. __IOM uint32_t MIMODE : 1;
  2046. __IOM uint32_t PERSIZE : 2;
  2047. __IOM uint32_t MEMSIZE : 2;
  2048. __IOM uint32_t CHPL : 2;
  2049. __IOM uint32_t M2MMODE : 1;
  2050. __IM uint32_t RESERVED : 17;
  2051. } CHCFG_B;
  2052. };
  2053. /*! @brief DMA Channel transfer number register*/
  2054. union
  2055. {
  2056. __IOM uint32_t CHNDATA;
  2057. struct
  2058. {
  2059. __IOM uint32_t NDATA : 16;
  2060. __IM uint32_t RESERVED : 16;
  2061. } CHNDATA_B;
  2062. };
  2063. /*! @brief DMA Channel peripheral address register */
  2064. union
  2065. {
  2066. __IOM uint32_t CHPADDR;
  2067. struct
  2068. {
  2069. __IOM uint32_t PERADDR : 32;
  2070. } CHPADDR_B;
  2071. };
  2072. /*! @brief DMA Channel memory address register */
  2073. union
  2074. {
  2075. __IOM uint32_t CHMADDR;
  2076. struct
  2077. {
  2078. __IOM uint32_t MEMADDR : 32;
  2079. } CHMADDR_B;
  2080. };
  2081. } DMA_Channel_T;
  2082. /*!
  2083. * @brief CAN sending mailbox
  2084. */
  2085. typedef struct
  2086. {
  2087. /*! @brief CAN Each mailbox contains the sending mailbox identifier register */
  2088. union
  2089. {
  2090. __IOM uint32_t TXMID;
  2091. struct
  2092. {
  2093. __IOM uint32_t TXMREQ : 1;
  2094. __IOM uint32_t TXRFREQ : 1;
  2095. __IOM uint32_t IDTYPESEL : 1;
  2096. __IOM uint32_t EXTID : 18;
  2097. __IOM uint32_t STDID : 11;
  2098. } TXMID_B;
  2099. };
  2100. /*! @brief CAN Send the mailbox data length and timestamp register */
  2101. union
  2102. {
  2103. __IOM uint32_t TXDLEN;
  2104. struct
  2105. {
  2106. __IOM uint32_t DLCODE : 4;
  2107. __IOM uint32_t RESERVED : 28;
  2108. } TXDLEN_B;
  2109. };
  2110. /*! @brief CAN Send mailbox low byte data register */
  2111. union
  2112. {
  2113. __IOM uint32_t TXMDL;
  2114. struct
  2115. {
  2116. __IOM uint32_t DATABYTE0 : 8;
  2117. __IOM uint32_t DATABYTE1 : 8;
  2118. __IOM uint32_t DATABYTE2 : 8;
  2119. __IOM uint32_t DATABYTE3 : 8;
  2120. } TXMDL_B;
  2121. };
  2122. /*! @brief CAN Send mailbox High byte data register */
  2123. union
  2124. {
  2125. __IOM uint32_t TXMDH;
  2126. struct
  2127. {
  2128. __IOM uint32_t DATABYTE4 : 8;
  2129. __IOM uint32_t DATABYTE5 : 8;
  2130. __IOM uint32_t DATABYTE6 : 8;
  2131. __IOM uint32_t DATABYTE7 : 8;
  2132. } TXMDH_B;
  2133. };
  2134. } CAN_TxMailBox_T;
  2135. /*!
  2136. * @brief CAN receive mailbox
  2137. */
  2138. typedef struct
  2139. {
  2140. /*! @brief CAN Each mailbox contains the receive mailbox identifier register */
  2141. union
  2142. {
  2143. __IM uint32_t RXMID;
  2144. struct
  2145. {
  2146. __IM uint32_t RESERVED : 1;
  2147. __IM uint32_t RFTXREQ : 1;
  2148. __IM uint32_t IDTYPESEL : 1;
  2149. __IM uint32_t EXTID : 18;
  2150. __IM uint32_t STDID : 11;
  2151. } RXMID_B;
  2152. };
  2153. /*! @brief CAN receive the mailbox data length and timestamp register */
  2154. union
  2155. {
  2156. __IM uint32_t RXDLEN;
  2157. struct
  2158. {
  2159. __IM uint32_t DLCODE : 4;
  2160. __IM uint32_t RESERVED1 : 4;
  2161. __IM uint32_t FMIDX : 8;
  2162. __IM uint32_t RESERVED2 : 16;
  2163. } RXDLEN_B;
  2164. };
  2165. /*! @brief CAN receive mailbox low byte data register */
  2166. union
  2167. {
  2168. __IM uint32_t RXMDL;
  2169. struct
  2170. {
  2171. __IM uint32_t DATABYTE0 : 8;
  2172. __IM uint32_t DATABYTE1 : 8;
  2173. __IM uint32_t DATABYTE2 : 8;
  2174. __IM uint32_t DATABYTE3 : 8;
  2175. } RXMDL_B;
  2176. };
  2177. /*! @brief CAN receive mailbox High byte data register */
  2178. union
  2179. {
  2180. __IOM uint32_t RXMDH;
  2181. struct
  2182. {
  2183. __IM uint32_t DATABYTE4 : 8;
  2184. __IM uint32_t DATABYTE5 : 8;
  2185. __IM uint32_t DATABYTE6 : 8;
  2186. __IM uint32_t DATABYTE7 : 8;
  2187. } RXMDH_B;
  2188. };
  2189. } CAN_RxMailBox_T;
  2190. /*!
  2191. * @brief CAN Filter bank register
  2192. */
  2193. typedef struct
  2194. {
  2195. /*! @brief CAN Filter bank register 1 */
  2196. union
  2197. {
  2198. __IOM uint32_t FBANK1;
  2199. struct
  2200. {
  2201. __IOM uint32_t FBIT0 : 1;
  2202. __IOM uint32_t FBIT1 : 1;
  2203. __IOM uint32_t FBIT2 : 1;
  2204. __IOM uint32_t FBIT3 : 1;
  2205. __IOM uint32_t FBIT4 : 1;
  2206. __IOM uint32_t FBIT5 : 1;
  2207. __IOM uint32_t FBIT6 : 1;
  2208. __IOM uint32_t FBIT7 : 1;
  2209. __IOM uint32_t FBIT8 : 1;
  2210. __IOM uint32_t FBIT9 : 1;
  2211. __IOM uint32_t FBIT10 : 1;
  2212. __IOM uint32_t FBIT11 : 1;
  2213. __IOM uint32_t FBIT12 : 1;
  2214. __IOM uint32_t FBIT13 : 1;
  2215. __IOM uint32_t FBIT14 : 1;
  2216. __IOM uint32_t FBIT15 : 1;
  2217. __IOM uint32_t FBIT16 : 1;
  2218. __IOM uint32_t FBIT17 : 1;
  2219. __IOM uint32_t FBIT18 : 1;
  2220. __IOM uint32_t FBIT19 : 1;
  2221. __IOM uint32_t FBIT20 : 1;
  2222. __IOM uint32_t FBIT21 : 1;
  2223. __IOM uint32_t FBIT22 : 1;
  2224. __IOM uint32_t FBIT23 : 1;
  2225. __IOM uint32_t FBIT24 : 1;
  2226. __IOM uint32_t FBIT25 : 1;
  2227. __IOM uint32_t FBIT26 : 1;
  2228. __IOM uint32_t FBIT27 : 1;
  2229. __IOM uint32_t FBIT28 : 1;
  2230. __IOM uint32_t FBIT29 : 1;
  2231. __IOM uint32_t FBIT30 : 1;
  2232. __IOM uint32_t FBIT31 : 1;
  2233. } FBANK1_B;
  2234. };
  2235. /*! @brief CAN Filter bank register 2 */
  2236. union
  2237. {
  2238. __IOM uint32_t FBANK2;
  2239. struct
  2240. {
  2241. __IOM uint32_t FBIT0 : 1;
  2242. __IOM uint32_t FBIT1 : 1;
  2243. __IOM uint32_t FBIT2 : 1;
  2244. __IOM uint32_t FBIT3 : 1;
  2245. __IOM uint32_t FBIT4 : 1;
  2246. __IOM uint32_t FBIT5 : 1;
  2247. __IOM uint32_t FBIT6 : 1;
  2248. __IOM uint32_t FBIT7 : 1;
  2249. __IOM uint32_t FBIT8 : 1;
  2250. __IOM uint32_t FBIT9 : 1;
  2251. __IOM uint32_t FBIT10 : 1;
  2252. __IOM uint32_t FBIT11 : 1;
  2253. __IOM uint32_t FBIT12 : 1;
  2254. __IOM uint32_t FBIT13 : 1;
  2255. __IOM uint32_t FBIT14 : 1;
  2256. __IOM uint32_t FBIT15 : 1;
  2257. __IOM uint32_t FBIT16 : 1;
  2258. __IOM uint32_t FBIT17 : 1;
  2259. __IOM uint32_t FBIT18 : 1;
  2260. __IOM uint32_t FBIT19 : 1;
  2261. __IOM uint32_t FBIT20 : 1;
  2262. __IOM uint32_t FBIT21 : 1;
  2263. __IOM uint32_t FBIT22 : 1;
  2264. __IOM uint32_t FBIT23 : 1;
  2265. __IOM uint32_t FBIT24 : 1;
  2266. __IOM uint32_t FBIT25 : 1;
  2267. __IOM uint32_t FBIT26 : 1;
  2268. __IOM uint32_t FBIT27 : 1;
  2269. __IOM uint32_t FBIT28 : 1;
  2270. __IOM uint32_t FBIT29 : 1;
  2271. __IOM uint32_t FBIT30 : 1;
  2272. __IOM uint32_t FBIT31 : 1;
  2273. } FBANK2_B;
  2274. };
  2275. } CAN_FilterRegister_T;
  2276. /*!
  2277. * @brief Controller Area Network(CAN)
  2278. */
  2279. typedef struct
  2280. {
  2281. /*! @brief CAN Master control register */
  2282. union
  2283. {
  2284. __IOM uint32_t MCTRL;
  2285. struct
  2286. {
  2287. __IOM uint32_t INITREQ : 1;
  2288. __IOM uint32_t SLEEPREQ : 1;
  2289. __IOM uint32_t TXFPCFG : 1;
  2290. __IOM uint32_t RXFLOCK : 1;
  2291. __IOM uint32_t ARTXMD : 1;
  2292. __IOM uint32_t AWUPCFG : 1;
  2293. __IOM uint32_t ALBOFFM : 1;
  2294. __IM uint32_t RESERVED1 : 8;
  2295. __IOM uint32_t SWRST : 1;
  2296. __IOM uint32_t DBGFRZE : 1;
  2297. __IM uint32_t RESERVED2 : 15;
  2298. } MCTRL_B;
  2299. };
  2300. /*! @brief CAN Master States register */
  2301. union
  2302. {
  2303. __IOM uint32_t MSTS;
  2304. struct
  2305. {
  2306. __IM uint32_t INITFLG : 1;
  2307. __IM uint32_t SLEEPFLG : 1;
  2308. __IOM uint32_t ERRIFLG : 1;
  2309. __IOM uint32_t WUPIFLG : 1;
  2310. __IOM uint32_t SLEEPIFLG : 1;
  2311. __IM uint32_t RESERVED1 : 3;
  2312. __IM uint32_t TXMFLG : 1;
  2313. __IM uint32_t RXMFLG : 1;
  2314. __IM uint32_t LSAMVALUE : 1;
  2315. __IM uint32_t RXSIGL : 1;
  2316. __IM uint32_t RESERVED2 : 20;
  2317. } MSTS_B;
  2318. };
  2319. /*! @brief CAN Send States register */
  2320. union
  2321. {
  2322. __IOM uint32_t TXSTS;
  2323. struct
  2324. {
  2325. __IOM uint32_t REQCFLG0 : 1;
  2326. __IOM uint32_t TXSUSFLG0 : 1;
  2327. __IOM uint32_t ARBLSTFLG0 : 1;
  2328. __IOM uint32_t TXERRFLG0 : 1;
  2329. __IM uint32_t RESERVED1 : 3;
  2330. __IOM uint32_t ABREQFLG0 : 1;
  2331. __IOM uint32_t REQCFLG1 : 1;
  2332. __IOM uint32_t TXSUSFLG1 : 1;
  2333. __IOM uint32_t ARBLSTFLG1 : 1;
  2334. __IOM uint32_t TXERRFLG1 : 1;
  2335. __IM uint32_t RESERVED2 : 3;
  2336. __IOM uint32_t ABREQFLG1 : 1;
  2337. __IOM uint32_t REQCFLG2 : 1;
  2338. __IOM uint32_t TXSUSFLG2 : 1;
  2339. __IOM uint32_t ARBLSTFLG2 : 1;
  2340. __IOM uint32_t TXERRFLG2 : 1;
  2341. __IM uint32_t RESERVED3 : 3;
  2342. __IOM uint32_t ABREQFLG2 : 1;
  2343. __IM uint32_t EMNUM : 2;
  2344. __IM uint32_t TXMEFLG0 : 1;
  2345. __IM uint32_t TXMEFLG1 : 1;
  2346. __IM uint32_t TXMEFLG2 : 1;
  2347. __IM uint32_t LOWESTP0 : 1;
  2348. __IM uint32_t LOWESTP1 : 1;
  2349. __IM uint32_t LOWESTP2 : 1;
  2350. } TXSTS_B;
  2351. };
  2352. /*! @brief CAN Receive FIFO 0 register */
  2353. union
  2354. {
  2355. __IOM uint32_t RXF0;
  2356. struct
  2357. {
  2358. __IM uint32_t FMNUM0 : 2;
  2359. __IM uint32_t RESERVED : 1;
  2360. __IOM uint32_t FFULLFLG0 : 1;
  2361. __IOM uint32_t FOVRFLG0 : 1;
  2362. __IOM uint32_t RFOM0 : 1;
  2363. __IM uint32_t RESERVED1 : 26;
  2364. } RXF0_B;
  2365. };
  2366. /*! @brief CAN Receive FIFO 1 register */
  2367. union
  2368. {
  2369. __IOM uint32_t RXF1;
  2370. struct
  2371. {
  2372. __IM uint32_t FMNUM1 : 2;
  2373. __IM uint32_t RESERVED1 : 1;
  2374. __IOM uint32_t FFULLFLG1 : 1;
  2375. __IOM uint32_t FOVRFLG1 : 1;
  2376. __IOM uint32_t RFOM1 : 1;
  2377. __IM uint32_t RESERVED2 : 26;
  2378. } RXF1_B;
  2379. };
  2380. /*! @brief CAN Interrupts register */
  2381. union
  2382. {
  2383. __IOM uint32_t INTEN;
  2384. struct
  2385. {
  2386. __IOM uint32_t TXMEIEN : 1;
  2387. __IOM uint32_t FMIEN0 : 1;
  2388. __IOM uint32_t FFULLIEN0 : 1;
  2389. __IOM uint32_t FOVRIEN0 : 1;
  2390. __IOM uint32_t FMIEN1 : 1;
  2391. __IOM uint32_t FFULLIEN1 : 1;
  2392. __IOM uint32_t FOVRIEN1 : 1;
  2393. __IM uint32_t RESERVED1 : 1;
  2394. __IOM uint32_t ERRWIEN : 1;
  2395. __IOM uint32_t ERRPIEN : 1;
  2396. __IOM uint32_t BOFFIEN : 1;
  2397. __IOM uint32_t LECIEN : 1;
  2398. __IM uint32_t RESERVED2 : 3;
  2399. __IOM uint32_t ERRIEN : 1;
  2400. __IOM uint32_t WUPIEN : 1;
  2401. __IOM uint32_t SLEEPIEN : 1;
  2402. __IM uint32_t RESERVED3 : 14;
  2403. } INTEN_B;
  2404. };
  2405. /*! @brief CAN Error States register */
  2406. union
  2407. {
  2408. __IOM uint32_t ERRSTS;
  2409. struct
  2410. {
  2411. __IM uint32_t ERRWFLG : 1;
  2412. __IM uint32_t ERRPFLG : 1;
  2413. __IM uint32_t BOFLG : 1;
  2414. __IM uint32_t RESERVED1 : 1;
  2415. __IOM uint32_t LERRC : 3;
  2416. __IM uint32_t RESERVED2 : 9;
  2417. __IM uint32_t TXERRCNT : 8;
  2418. __IM uint32_t RXERRCNT : 8;
  2419. } ERRSTS_B;
  2420. };
  2421. /*! @brief CAN Bit Time register */
  2422. union
  2423. {
  2424. __IOM uint32_t BITTIM;
  2425. struct
  2426. {
  2427. __IOM uint32_t BRPSC : 10;
  2428. __IM uint32_t RESERVED1 : 6;
  2429. __IOM uint32_t TIMSEG1 : 4;
  2430. __IOM uint32_t TIMSEG2 : 3;
  2431. __IM uint32_t RESERVED2 : 1;
  2432. __IOM uint32_t RSYNJW : 2;
  2433. __IM uint32_t RESERVED3 : 4;
  2434. __IOM uint32_t LBKMEN : 1;
  2435. __IOM uint32_t SILMEN : 1;
  2436. } BITTIM_B;
  2437. };
  2438. __IM uint32_t RESERVED0[88];
  2439. CAN_TxMailBox_T sTxMailBox[3];
  2440. CAN_RxMailBox_T sRxMailBox[2];
  2441. __IM uint32_t RESERVED1[12];
  2442. /*! @brief CAN Filter the master control register */
  2443. union
  2444. {
  2445. __IOM uint32_t FCTRL;
  2446. struct
  2447. {
  2448. __IOM uint32_t FINITEN : 1;
  2449. __IM uint32_t RESERVED : 7;
  2450. __IOM uint32_t CAN2BN : 6;
  2451. __IM uint32_t RESERVED1 : 18;
  2452. } FCTRL_B;
  2453. };
  2454. /*! @brief CAN Filter register */
  2455. union
  2456. {
  2457. __IOM uint32_t FMCFG;
  2458. struct
  2459. {
  2460. __IOM uint32_t FMCFG0 : 1;
  2461. __IOM uint32_t FMCFG1 : 1;
  2462. __IOM uint32_t FMCFG2 : 1;
  2463. __IOM uint32_t FMCFG3 : 1;
  2464. __IOM uint32_t FMCFG4 : 1;
  2465. __IOM uint32_t FMCFG5 : 1;
  2466. __IOM uint32_t FMCFG6 : 1;
  2467. __IOM uint32_t FMCFG7 : 1;
  2468. __IOM uint32_t FMCFG8 : 1;
  2469. __IOM uint32_t FMCFG9 : 1;
  2470. __IOM uint32_t FMCFG10 : 1;
  2471. __IOM uint32_t FMCFG11 : 1;
  2472. __IOM uint32_t FMCFG12 : 1;
  2473. __IOM uint32_t FMCFG13 : 1;
  2474. __IOM uint32_t FMCFG14 : 1;
  2475. __IOM uint32_t FMCFG15 : 1;
  2476. __IOM uint32_t FMCFG16 : 1;
  2477. __IOM uint32_t FMCFG17 : 1;
  2478. __IOM uint32_t FMCFG18 : 1;
  2479. __IOM uint32_t FMCFG19 : 1;
  2480. __IOM uint32_t FMCFG20 : 1;
  2481. __IOM uint32_t FMCFG21 : 1;
  2482. __IOM uint32_t FMCFG22 : 1;
  2483. __IOM uint32_t FMCFG23 : 1;
  2484. __IOM uint32_t FMCFG24 : 1;
  2485. __IOM uint32_t FMCFG25 : 1;
  2486. __IOM uint32_t FMCFG26 : 1;
  2487. __IOM uint32_t FMCFG27 : 1;
  2488. __IM uint32_t RESERVED : 4;
  2489. } FMCFG_B;
  2490. };
  2491. __IM uint32_t RESERVED2;
  2492. /*! @brief CAN Filter bit scale register */
  2493. union
  2494. {
  2495. __IOM uint32_t FSCFG;
  2496. struct
  2497. {
  2498. __IOM uint32_t FSCFG0 : 1;
  2499. __IOM uint32_t FSCFG1 : 1;
  2500. __IOM uint32_t FSCFG2 : 1;
  2501. __IOM uint32_t FSCFG3 : 1;
  2502. __IOM uint32_t FSCFG4 : 1;
  2503. __IOM uint32_t FSCFG5 : 1;
  2504. __IOM uint32_t FSCFG6 : 1;
  2505. __IOM uint32_t FSCFG7 : 1;
  2506. __IOM uint32_t FSCFG8 : 1;
  2507. __IOM uint32_t FSCFG9 : 1;
  2508. __IOM uint32_t FSCFG10 : 1;
  2509. __IOM uint32_t FSCFG11 : 1;
  2510. __IOM uint32_t FSCFG12 : 1;
  2511. __IOM uint32_t FSCFG13 : 1;
  2512. __IOM uint32_t FSCFG14 : 1;
  2513. __IOM uint32_t FSCFG15 : 1;
  2514. __IOM uint32_t FSCFG16 : 1;
  2515. __IOM uint32_t FSCFG17 : 1;
  2516. __IOM uint32_t FSCFG18 : 1;
  2517. __IOM uint32_t FSCFG19 : 1;
  2518. __IOM uint32_t FSCFG20 : 1;
  2519. __IOM uint32_t FSCFG21 : 1;
  2520. __IOM uint32_t FSCFG22 : 1;
  2521. __IOM uint32_t FSCFG23 : 1;
  2522. __IOM uint32_t FSCFG24 : 1;
  2523. __IOM uint32_t FSCFG25 : 1;
  2524. __IOM uint32_t FSCFG26 : 1;
  2525. __IOM uint32_t FSCFG27 : 1;
  2526. __IM uint32_t RESERVED : 4;
  2527. } FSCFG_B;
  2528. };
  2529. __IM uint32_t RESERVED3;
  2530. /*! @brief CAN Filter FIFO associated registers */
  2531. union
  2532. {
  2533. __IOM uint32_t FFASS;
  2534. struct
  2535. {
  2536. __IOM uint32_t FFASS0 : 1;
  2537. __IOM uint32_t FFASS1 : 1;
  2538. __IOM uint32_t FFASS2 : 1;
  2539. __IOM uint32_t FFASS3 : 1;
  2540. __IOM uint32_t FFASS4 : 1;
  2541. __IOM uint32_t FFASS5 : 1;
  2542. __IOM uint32_t FFASS6 : 1;
  2543. __IOM uint32_t FFASS7 : 1;
  2544. __IOM uint32_t FFASS8 : 1;
  2545. __IOM uint32_t FFASS9 : 1;
  2546. __IOM uint32_t FFASS10 : 1;
  2547. __IOM uint32_t FFASS11 : 1;
  2548. __IOM uint32_t FFASS12 : 1;
  2549. __IOM uint32_t FFASS13 : 1;
  2550. __IOM uint32_t FFASS14 : 1;
  2551. __IOM uint32_t FFASS15 : 1;
  2552. __IOM uint32_t FFASS16 : 1;
  2553. __IOM uint32_t FFASS17 : 1;
  2554. __IOM uint32_t FFASS18 : 1;
  2555. __IOM uint32_t FFASS19 : 1;
  2556. __IOM uint32_t FFASS20 : 1;
  2557. __IOM uint32_t FFASS21 : 1;
  2558. __IOM uint32_t FFASS22 : 1;
  2559. __IOM uint32_t FFASS23 : 1;
  2560. __IOM uint32_t FFASS24 : 1;
  2561. __IOM uint32_t FFASS25 : 1;
  2562. __IOM uint32_t FFASS26 : 1;
  2563. __IOM uint32_t FFASS27 : 1;
  2564. __IM uint32_t RESERVED : 4;
  2565. } FFASS_B;
  2566. };
  2567. __IM uint32_t RESERVED4;
  2568. /*! @brief CAN Filter activation register */
  2569. union
  2570. {
  2571. __IOM uint32_t FACT;
  2572. struct
  2573. {
  2574. __IOM uint32_t FACT0 : 1;
  2575. __IOM uint32_t FACT1 : 1;
  2576. __IOM uint32_t FACT2 : 1;
  2577. __IOM uint32_t FACT3 : 1;
  2578. __IOM uint32_t FACT4 : 1;
  2579. __IOM uint32_t FACT5 : 1;
  2580. __IOM uint32_t FACT6 : 1;
  2581. __IOM uint32_t FACT7 : 1;
  2582. __IOM uint32_t FACT8 : 1;
  2583. __IOM uint32_t FACT9 : 1;
  2584. __IOM uint32_t FACT10 : 1;
  2585. __IOM uint32_t FACT11 : 1;
  2586. __IOM uint32_t FACT12 : 1;
  2587. __IOM uint32_t FACT13 : 1;
  2588. __IOM uint32_t FACT14 : 1;
  2589. __IOM uint32_t FACT15 : 1;
  2590. __IOM uint32_t FACT16 : 1;
  2591. __IOM uint32_t FACT17 : 1;
  2592. __IOM uint32_t FACT18 : 1;
  2593. __IOM uint32_t FACT19 : 1;
  2594. __IOM uint32_t FACT20 : 1;
  2595. __IOM uint32_t FACT21 : 1;
  2596. __IOM uint32_t FACT22 : 1;
  2597. __IOM uint32_t FACT23 : 1;
  2598. __IOM uint32_t FACT24 : 1;
  2599. __IOM uint32_t FACT25 : 1;
  2600. __IOM uint32_t FACT26 : 1;
  2601. __IOM uint32_t FACT27 : 1;
  2602. __IM uint32_t RESERVED : 4;
  2603. } FACT_B;
  2604. };
  2605. __IM uint32_t RESERVED5[8];
  2606. CAN_FilterRegister_T sFilterRegister[28];
  2607. } CAN_T;
  2608. /*!
  2609. * @brief I2C register (I2C)
  2610. */
  2611. typedef struct
  2612. {
  2613. /*! @brief Control register 1 */
  2614. union
  2615. {
  2616. __IOM uint32_t CTRL1;
  2617. struct
  2618. {
  2619. __IOM uint32_t I2CEN : 1;
  2620. __IOM uint32_t SMBEN : 1;
  2621. __IM uint32_t RESERVED1 : 1;
  2622. __IOM uint32_t SMBTCFG : 1;
  2623. __IOM uint32_t ARPEN : 1;
  2624. __IOM uint32_t PECEN : 1;
  2625. __IOM uint32_t SRBEN : 1;
  2626. __IOM uint32_t CLKSTRETCHD : 1;
  2627. __IOM uint32_t START : 1;
  2628. __IOM uint32_t STOP : 1;
  2629. __IOM uint32_t ACKEN : 1;
  2630. __IOM uint32_t ACKPOS : 1;
  2631. __IOM uint32_t PEC : 1;
  2632. __IOM uint32_t ALERTEN : 1;
  2633. __IM uint32_t RESERVED2 : 1;
  2634. __IOM uint32_t SWRST : 1;
  2635. __IM uint32_t RESERVED3 : 16;
  2636. } CTRL1_B;
  2637. } ;
  2638. /*! @brief Control register 2 */
  2639. union
  2640. {
  2641. __IOM uint32_t CTRL2;
  2642. struct
  2643. {
  2644. __IOM uint32_t CLKFCFG : 6;
  2645. __IM uint32_t RESERVED1 : 2;
  2646. __IOM uint32_t ERRIEN : 1;
  2647. __IOM uint32_t EVIEN : 1;
  2648. __IOM uint32_t BUFIEN : 1;
  2649. __IOM uint32_t DMAEN : 1;
  2650. __IOM uint32_t LTCFG : 1;
  2651. __IM uint32_t RESERVED2 : 19;
  2652. } CTRL2_B;
  2653. } ;
  2654. /*! @brief Slave machine address register 1 */
  2655. union
  2656. {
  2657. __IOM uint32_t SADDR1;
  2658. struct
  2659. {
  2660. __IOM uint32_t ADDR0 : 1;
  2661. __IOM uint32_t ADDR1_7 : 7;
  2662. __IOM uint32_t ADDR8_9 : 2;
  2663. __IM uint32_t RESERVED1 : 5;
  2664. __IOM uint32_t ADDRLEN : 1;
  2665. __IM uint32_t RESERVED2 : 16;
  2666. } SADDR1_B;
  2667. };
  2668. /*! @brief Slave machine address register 2 */
  2669. union
  2670. {
  2671. __IOM uint32_t SADDR2;
  2672. struct
  2673. {
  2674. __IOM uint32_t ADDRNUM : 1;
  2675. __IOM uint32_t ADDR2 : 7;
  2676. __IM uint32_t RESERVED : 24;
  2677. } SADDR2_B;
  2678. };
  2679. /*! @brief Cache data register */
  2680. union
  2681. {
  2682. __IOM uint32_t DATA;
  2683. struct
  2684. {
  2685. __IOM uint32_t DATA : 8;
  2686. __IM uint32_t RESERVED : 24;
  2687. } DATA_B;
  2688. };
  2689. /*! @brief Status register 1 */
  2690. union
  2691. {
  2692. __IOM uint32_t STS1;
  2693. struct
  2694. {
  2695. __IM uint32_t STARTFLG : 1;
  2696. __IM uint32_t ADDRFLG : 1;
  2697. __IM uint32_t BTCFLG : 1;
  2698. __IM uint32_t ADDR10FLG : 1;
  2699. __IM uint32_t STOPFLG : 1;
  2700. __IM uint32_t RESERVED1 : 1;
  2701. __IM uint32_t RXBNEFLG : 1;
  2702. __IM uint32_t TXBEFLG : 1;
  2703. __IOM uint32_t BERRFLG : 1;
  2704. __IOM uint32_t ALFLG : 1;
  2705. __IOM uint32_t AEFLG : 1;
  2706. __IOM uint32_t OVRURFLG : 1;
  2707. __IOM uint32_t PECEFLG : 1;
  2708. __IM uint32_t RESERVED2 : 1;
  2709. __IOM uint32_t TTEFLG : 1;
  2710. __IOM uint32_t SMBALTFLG : 1;
  2711. __IM uint32_t RESERVED3 : 16;
  2712. } STS1_B;
  2713. };
  2714. /*! @brief Status register 2 */
  2715. union
  2716. {
  2717. __IOM uint32_t STS2;
  2718. struct
  2719. {
  2720. __IM uint32_t MSFLG : 1;
  2721. __IM uint32_t BUSBSYFLG : 1;
  2722. __IM uint32_t TRFLG : 1;
  2723. __IM uint32_t RESERVED1 : 1;
  2724. __IM uint32_t GENCALLFLG : 1;
  2725. __IM uint32_t SMBDADDRFLG : 1;
  2726. __IM uint32_t SMMHADDR : 1;
  2727. __IM uint32_t DUALADDRFLG : 1;
  2728. __IM uint32_t PECVALUE : 8;
  2729. __IM uint32_t RESERVED2 : 16;
  2730. } STS2_B;
  2731. };
  2732. /*! @brief Clock control register */
  2733. union
  2734. {
  2735. __IOM uint32_t CLKCTRL;
  2736. struct
  2737. {
  2738. __IOM uint32_t CLKS : 12;
  2739. __IM uint32_t RESERVED1 : 2;
  2740. __IOM uint32_t FDUTYCFG : 1;
  2741. __IOM uint32_t SPEEDCFG : 1;
  2742. __IM uint32_t RESERVED2 : 16;
  2743. } CLKCTRL_B;
  2744. };
  2745. /*! @brief Maximum rise time */
  2746. union
  2747. {
  2748. __IOM uint32_t RISETMAX;
  2749. struct
  2750. {
  2751. __IOM uint32_t RISETMAX : 6;
  2752. __IM uint32_t RESERVED : 26;
  2753. } RISETMAX_B;
  2754. };
  2755. __IM uint32_t RESERVED[55];
  2756. /*! @brief I2C Switching register */
  2757. union
  2758. {
  2759. __IOM uint32_t SWITCH;
  2760. struct
  2761. {
  2762. __IOM uint32_t SWITCH : 1;
  2763. __IM uint32_t RESERVED1 : 31;
  2764. } SWITCH_B;
  2765. };
  2766. } I2C_T;
  2767. typedef struct
  2768. {
  2769. __IOM uint16_t RDP;
  2770. __IOM uint16_t USER;
  2771. __IOM uint16_t Data0;
  2772. __IOM uint16_t Data1;
  2773. __IOM uint16_t WRP0;
  2774. __IOM uint16_t WRP1;
  2775. __IOM uint16_t WRP2;
  2776. __IOM uint16_t WRP3;
  2777. } OB_T;
  2778. /*!
  2779. * @brief Analog to Digital Converter(ADC)
  2780. */
  2781. typedef struct
  2782. {
  2783. /* Status register */
  2784. union
  2785. {
  2786. __IOM uint32_t STS;
  2787. struct
  2788. {
  2789. __IOM uint32_t AWDFLG : 1;
  2790. __IOM uint32_t EOCFLG : 1;
  2791. __IOM uint32_t INJEOCFLG : 1;
  2792. __IOM uint32_t INJCSFLG : 1;
  2793. __IOM uint32_t REGCSFLG : 1;
  2794. __IM uint32_t RESERVED : 27;
  2795. } STS_B;
  2796. };
  2797. /* Control register1*/
  2798. union
  2799. {
  2800. __IOM uint32_t CTRL1;
  2801. struct
  2802. {
  2803. __IOM uint32_t AWDCHSEL : 5;
  2804. __IOM uint32_t EOCIEN : 1;
  2805. __IOM uint32_t AWDIEN : 1;
  2806. __IOM uint32_t INJEOCIEN : 1;
  2807. __IOM uint32_t SCANEN : 1;
  2808. __IOM uint32_t AWDSGLEN : 1;
  2809. __IOM uint32_t INJGACEN : 1;
  2810. __IOM uint32_t REGDISCEN : 1;
  2811. __IOM uint32_t INJDISCEN : 1;
  2812. __IOM uint32_t DISCNUMCFG : 3;
  2813. __IOM uint32_t DUALMCFG : 4;
  2814. __IM uint32_t RESERVED1 : 2;
  2815. __IOM uint32_t INJAWDEN : 1;
  2816. __IOM uint32_t REGAWDEN : 1;
  2817. __IM uint32_t RESERVED2 : 8;
  2818. } CTRL1_B;
  2819. };
  2820. /* Control register2*/
  2821. union
  2822. {
  2823. __IOM uint32_t CTRL2;
  2824. struct
  2825. {
  2826. __IOM uint32_t ADCEN : 1;
  2827. __IOM uint32_t CONTCEN : 1;
  2828. __IOM uint32_t CAL : 1;
  2829. __IOM uint32_t CALRST : 1;
  2830. __IM uint32_t RESERVED1 : 4;
  2831. __IOM uint32_t DMAEN : 1;
  2832. __IM uint32_t RESERVED2 : 2;
  2833. __IOM uint32_t DALIGNCFG : 1;
  2834. __IOM uint32_t INJGEXTTRGSEL : 3;
  2835. __IOM uint32_t INJEXTTRGEN : 1;
  2836. __IM uint32_t RESERVED3 : 1;
  2837. __IOM uint32_t REGEXTTRGSEL : 3;
  2838. __IOM uint32_t REGEXTTRGEN : 1;
  2839. __IOM uint32_t INJSWSC : 1;
  2840. __IOM uint32_t REGSWSC : 1;
  2841. __IOM uint32_t TSVREFEN : 1;
  2842. __IM uint32_t RESERVED4 : 8;
  2843. } CTRL2_B;
  2844. };
  2845. /* Sample time register1*/
  2846. union
  2847. {
  2848. __IOM uint32_t SMPTIM1;
  2849. struct
  2850. {
  2851. __IOM uint32_t SMPCYCCFG10 : 3;
  2852. __IOM uint32_t SMPCYCCFG11 : 3;
  2853. __IOM uint32_t SMPCYCCFG12 : 3;
  2854. __IOM uint32_t SMPCYCCFG13 : 3;
  2855. __IOM uint32_t SMPCYCCFG14 : 3;
  2856. __IOM uint32_t SMPCYCCFG15 : 3;
  2857. __IOM uint32_t SMPCYCCFG16 : 3;
  2858. __IOM uint32_t SMPCYCCFG17 : 3;
  2859. __IM uint32_t RESERVED : 8;
  2860. } SMPTIM1_B;
  2861. };
  2862. /* Sample time register2*/
  2863. union
  2864. {
  2865. __IOM uint32_t SMPTIM2;
  2866. struct
  2867. {
  2868. __IOM uint32_t SMPCYCCFG0 : 3;
  2869. __IOM uint32_t SMPCYCCFG1 : 3;
  2870. __IOM uint32_t SMPCYCCFG2 : 3;
  2871. __IOM uint32_t SMPCYCCFG3 : 3;
  2872. __IOM uint32_t SMPCYCCFG4 : 3;
  2873. __IOM uint32_t SMPCYCCFG5 : 3;
  2874. __IOM uint32_t SMPCYCCFG6 : 3;
  2875. __IOM uint32_t SMPCYCCFG7 : 3;
  2876. __IOM uint32_t SMPCYCCFG8 : 3;
  2877. __IOM uint32_t SMPCYCCFG9 : 3;
  2878. __IM uint32_t RESERVED : 2;
  2879. } SMPTIM2_B;
  2880. };
  2881. /* Injected channel Data offset register1*/
  2882. union
  2883. {
  2884. __IOM uint32_t INJDOF1;
  2885. struct
  2886. {
  2887. __IOM uint32_t INJDOF1 : 12;
  2888. __IM uint32_t RESERVED : 20;
  2889. } INJDOF1_B;
  2890. };
  2891. /* Injected channel Data offset register2*/
  2892. union
  2893. {
  2894. __IOM uint32_t INJDOF2;
  2895. struct
  2896. {
  2897. __IOM uint32_t INJDOF2 : 12;
  2898. __IM uint32_t RESERVED : 20;
  2899. } INJDOF2_B;
  2900. };
  2901. /* Injected channel Data offset register3*/
  2902. union
  2903. {
  2904. __IOM uint32_t INJDOF3;
  2905. struct
  2906. {
  2907. __IOM uint32_t INJDOF3 : 12;
  2908. __IM uint32_t RESERVED : 20;
  2909. } INJDOF3_B;
  2910. };
  2911. /* Injected channel Data offset register4*/
  2912. union
  2913. {
  2914. __IOM uint32_t INJDOF4;
  2915. struct
  2916. {
  2917. __IOM uint32_t INJDOF4 : 12;
  2918. __IM uint32_t RESERVED : 20;
  2919. } INJDOF4_B;
  2920. };
  2921. /* Analog watchdog high threshold register*/
  2922. union
  2923. {
  2924. __IOM uint32_t AWDHT;
  2925. struct
  2926. {
  2927. __IOM uint32_t AWDHT : 12;
  2928. __IM uint32_t RESERVED : 20;
  2929. } AWDHT_B;
  2930. };
  2931. /* Analog watchdog low threshold register*/
  2932. union
  2933. {
  2934. __IOM uint32_t AWDLT;
  2935. struct
  2936. {
  2937. __IOM uint32_t AWDLT : 12;
  2938. __IM uint32_t RESERVED : 20;
  2939. } AWDLT_B;
  2940. };
  2941. /* Regular channel sequence register1*/
  2942. union
  2943. {
  2944. __IOM uint32_t REGSEQ1;
  2945. struct
  2946. {
  2947. __IOM uint32_t REGSEQC13 : 5;
  2948. __IOM uint32_t REGSEQC14 : 5;
  2949. __IOM uint32_t REGSEQC15 : 5;
  2950. __IOM uint32_t REGSEQC16 : 5;
  2951. __IOM uint32_t REGSEQLEN : 4;
  2952. __IM uint32_t RESERVED : 8;
  2953. } REGSEQ1_B;
  2954. };
  2955. /* Regular channel sequence register2*/
  2956. union
  2957. {
  2958. __IOM uint32_t REGSEQ2;
  2959. struct
  2960. {
  2961. __IOM uint32_t REGSEQC7 : 5;
  2962. __IOM uint32_t REGSEQC8 : 5;
  2963. __IOM uint32_t REGSEQC9 : 5;
  2964. __IOM uint32_t REGSEQC10 : 5;
  2965. __IOM uint32_t REGSEQC11 : 5;
  2966. __IOM uint32_t REGSEQC12 : 5;
  2967. __IM uint32_t RESERVED : 2;
  2968. } REGSEQ2_B;
  2969. };
  2970. /* Regular channel sequence register3*/
  2971. union
  2972. {
  2973. __IOM uint32_t REGSEQ3;
  2974. struct
  2975. {
  2976. __IOM uint32_t REGSEQC1 : 5;
  2977. __IOM uint32_t REGSEQC2 : 5;
  2978. __IOM uint32_t REGSEQC3 : 5;
  2979. __IOM uint32_t REGSEQC4 : 5;
  2980. __IOM uint32_t REGSEQC5 : 5;
  2981. __IOM uint32_t REGSEQC6 : 5;
  2982. __IM uint32_t RESERVED : 2;
  2983. } REGSEQ3_B;
  2984. };
  2985. /* Injected sequence register*/
  2986. union
  2987. {
  2988. __IOM uint32_t INJSEQ;
  2989. struct
  2990. {
  2991. __IOM uint32_t INJSEQC1 : 5;
  2992. __IOM uint32_t INJSEQC2 : 5;
  2993. __IOM uint32_t INJSEQC3 : 5;
  2994. __IOM uint32_t INJSEQC4 : 5;
  2995. __IOM uint32_t INJSEQLEN : 2;
  2996. __IM uint32_t RESERVED : 10;
  2997. } INJSEQ_B;
  2998. };
  2999. /* Injected Data register1*/
  3000. union
  3001. {
  3002. __IM uint32_t INJDATA1;
  3003. struct
  3004. {
  3005. __IM uint32_t INJDATA : 16;
  3006. __IM uint32_t RESERVED : 16;
  3007. } INJDATA1_B;
  3008. };
  3009. /* Injected Data register2*/
  3010. union
  3011. {
  3012. __IM uint32_t INJDATA2;
  3013. struct
  3014. {
  3015. __IM uint32_t INJDATA : 16;
  3016. __IM uint32_t RESERVED : 16;
  3017. } INJDATA2_B;
  3018. };
  3019. /* Injected Data register3*/
  3020. union
  3021. {
  3022. __IM uint32_t INJDATA3;
  3023. struct
  3024. {
  3025. __IM uint32_t INJDATA : 16;
  3026. __IM uint32_t RESERVED : 16;
  3027. } INJDATA3_B;
  3028. };
  3029. /* Injected Data register4*/
  3030. union
  3031. {
  3032. __IM uint32_t INJDATA4;
  3033. struct
  3034. {
  3035. __IM uint32_t INJDATA : 16;
  3036. __IM uint32_t RESERVED : 16;
  3037. } INJDATA4_B;
  3038. };
  3039. /* Regular Data register*/
  3040. union
  3041. {
  3042. __IOM uint32_t REGDATA;
  3043. struct
  3044. {
  3045. __IM uint32_t REGDATA : 16;
  3046. __IM uint32_t ADC2DATA : 16;
  3047. } REGDATA_B;
  3048. };
  3049. } ADC_T;
  3050. /*!
  3051. * @brief External Interrupt(EINT)
  3052. */
  3053. typedef struct
  3054. {
  3055. /* Interrupt mask register */
  3056. union
  3057. {
  3058. __IOM uint32_t IMASK;
  3059. struct
  3060. {
  3061. __IOM uint32_t IMASK0 : 1;
  3062. __IOM uint32_t IMASK1 : 1;
  3063. __IOM uint32_t IMASK2 : 1;
  3064. __IOM uint32_t IMASK3 : 1;
  3065. __IOM uint32_t IMASK4 : 1;
  3066. __IOM uint32_t IMASK5 : 1;
  3067. __IOM uint32_t IMASK6 : 1;
  3068. __IOM uint32_t IMASK7 : 1;
  3069. __IOM uint32_t IMASK8 : 1;
  3070. __IOM uint32_t IMASK9 : 1;
  3071. __IOM uint32_t IMASK10 : 1;
  3072. __IOM uint32_t IMASK11 : 1;
  3073. __IOM uint32_t IMASK12 : 1;
  3074. __IOM uint32_t IMASK13 : 1;
  3075. __IOM uint32_t IMASK14 : 1;
  3076. __IOM uint32_t IMASK15 : 1;
  3077. __IOM uint32_t IMASK16 : 1;
  3078. __IOM uint32_t IMASK17 : 1;
  3079. __IOM uint32_t IMASK18 : 1;
  3080. __IM uint32_t RESERVED : 12;
  3081. } IMASK_B;
  3082. };
  3083. /* Event mask register */
  3084. union
  3085. {
  3086. __IOM uint32_t EMASK;
  3087. struct
  3088. {
  3089. __IOM uint32_t EMASK0 : 1;
  3090. __IOM uint32_t EMASK1 : 1;
  3091. __IOM uint32_t EMASK2 : 1;
  3092. __IOM uint32_t EMASK3 : 1;
  3093. __IOM uint32_t EMASK4 : 1;
  3094. __IOM uint32_t EMASK5 : 1;
  3095. __IOM uint32_t EMASK6 : 1;
  3096. __IOM uint32_t EMASK7 : 1;
  3097. __IOM uint32_t EMASK8 : 1;
  3098. __IOM uint32_t EMASK9 : 1;
  3099. __IOM uint32_t EMASK10 : 1;
  3100. __IOM uint32_t EMASK11 : 1;
  3101. __IOM uint32_t EMASK12 : 1;
  3102. __IOM uint32_t EMASK13 : 1;
  3103. __IOM uint32_t EMASK14 : 1;
  3104. __IOM uint32_t EMASK15 : 1;
  3105. __IOM uint32_t EMASK16 : 1;
  3106. __IOM uint32_t EMASK17 : 1;
  3107. __IOM uint32_t EMASK18 : 1;
  3108. __IM uint32_t RESERVED : 12;
  3109. } EEN_B;
  3110. };
  3111. /* Rising Trigger Event Enable register */
  3112. union
  3113. {
  3114. __IOM uint32_t RTEN;
  3115. struct
  3116. {
  3117. __IOM uint32_t RTEN0 : 1;
  3118. __IOM uint32_t RTEN1 : 1;
  3119. __IOM uint32_t RTEN2 : 1;
  3120. __IOM uint32_t RTEN3 : 1;
  3121. __IOM uint32_t RTEN4 : 1;
  3122. __IOM uint32_t RTEN5 : 1;
  3123. __IOM uint32_t RTEN6 : 1;
  3124. __IOM uint32_t RTEN7 : 1;
  3125. __IOM uint32_t RTEN8 : 1;
  3126. __IOM uint32_t RTEN9 : 1;
  3127. __IOM uint32_t RTEN10 : 1;
  3128. __IOM uint32_t RTEN11 : 1;
  3129. __IOM uint32_t RTEN12 : 1;
  3130. __IOM uint32_t RTEN13 : 1;
  3131. __IOM uint32_t RTEN14 : 1;
  3132. __IOM uint32_t RTEN15 : 1;
  3133. __IOM uint32_t RTEN16 : 1;
  3134. __IOM uint32_t RTEN17 : 1;
  3135. __IOM uint32_t RTEN18 : 1;
  3136. __IM uint32_t RESERVED : 12;
  3137. } RTEN_B;
  3138. };
  3139. /* Falling Trigger Event Enable register */
  3140. union
  3141. {
  3142. __IOM uint32_t FTEN;
  3143. struct
  3144. {
  3145. __IOM uint32_t FTEN0 : 1;
  3146. __IOM uint32_t FTEN1 : 1;
  3147. __IOM uint32_t FTEN2 : 1;
  3148. __IOM uint32_t FTEN3 : 1;
  3149. __IOM uint32_t FTEN4 : 1;
  3150. __IOM uint32_t FTEN5 : 1;
  3151. __IOM uint32_t FTEN6 : 1;
  3152. __IOM uint32_t FTEN7 : 1;
  3153. __IOM uint32_t FTEN8 : 1;
  3154. __IOM uint32_t FTEN9 : 1;
  3155. __IOM uint32_t FTEN10 : 1;
  3156. __IOM uint32_t FTEN11 : 1;
  3157. __IOM uint32_t FTEN12 : 1;
  3158. __IOM uint32_t FTEN13 : 1;
  3159. __IOM uint32_t FTEN14 : 1;
  3160. __IOM uint32_t FTEN15 : 1;
  3161. __IOM uint32_t FTEN16 : 1;
  3162. __IOM uint32_t FTEN17 : 1;
  3163. __IOM uint32_t FTEN18 : 1;
  3164. __IM uint32_t RESERVED : 12;
  3165. } FTEN_B;
  3166. };
  3167. /* Software Interrupt Enable register */
  3168. union
  3169. {
  3170. __IOM uint32_t SWINTE;
  3171. struct
  3172. {
  3173. __IOM uint32_t SWINTE0 : 1;
  3174. __IOM uint32_t SWINTE1 : 1;
  3175. __IOM uint32_t SWINTE2 : 1;
  3176. __IOM uint32_t SWINTE3 : 1;
  3177. __IOM uint32_t SWINTE4 : 1;
  3178. __IOM uint32_t SWINTE5 : 1;
  3179. __IOM uint32_t SWINTE6 : 1;
  3180. __IOM uint32_t SWINTE7 : 1;
  3181. __IOM uint32_t SWINTE8 : 1;
  3182. __IOM uint32_t SWINTE9 : 1;
  3183. __IOM uint32_t SWINTE10 : 1;
  3184. __IOM uint32_t SWINTE11 : 1;
  3185. __IOM uint32_t SWINTE12 : 1;
  3186. __IOM uint32_t SWINTE13 : 1;
  3187. __IOM uint32_t SWINTE14 : 1;
  3188. __IOM uint32_t SWINTE15 : 1;
  3189. __IOM uint32_t SWINTE16 : 1;
  3190. __IOM uint32_t SWINTE17 : 1;
  3191. __IOM uint32_t SWINTE18 : 1;
  3192. __IM uint32_t RESERVED : 12;
  3193. } SWINTE_B;
  3194. };
  3195. /* Interrupt Flag Enable register */
  3196. union
  3197. {
  3198. __IOM uint32_t IPEND;
  3199. struct
  3200. {
  3201. __IOM uint32_t IPEND0 : 1;
  3202. __IOM uint32_t IPEND1 : 1;
  3203. __IOM uint32_t IPEND2 : 1;
  3204. __IOM uint32_t IPEND3 : 1;
  3205. __IOM uint32_t IPEND4 : 1;
  3206. __IOM uint32_t IPEND5 : 1;
  3207. __IOM uint32_t IPEND6 : 1;
  3208. __IOM uint32_t IPEND7 : 1;
  3209. __IOM uint32_t IPEND8 : 1;
  3210. __IOM uint32_t IPEND9 : 1;
  3211. __IOM uint32_t IPEND10 : 1;
  3212. __IOM uint32_t IPEND11 : 1;
  3213. __IOM uint32_t IPEND12 : 1;
  3214. __IOM uint32_t IPEND13 : 1;
  3215. __IOM uint32_t IPEND14 : 1;
  3216. __IOM uint32_t IPEND15 : 1;
  3217. __IOM uint32_t IPEND16 : 1;
  3218. __IOM uint32_t IPEND17 : 1;
  3219. __IOM uint32_t IPEND18 : 1;
  3220. __IM uint32_t RESERVED : 12;
  3221. } IF_B;
  3222. };
  3223. } EINT_T;
  3224. /*!
  3225. * @brief Independent watchdog(IWDT)
  3226. */
  3227. typedef struct
  3228. {
  3229. /* Keyword register */
  3230. union
  3231. {
  3232. __OM uint32_t KEY;
  3233. struct
  3234. {
  3235. __OM uint32_t KEY : 16;
  3236. __IM uint32_t RESERVED : 16;
  3237. } KEY_B;
  3238. };
  3239. /* Frequency Divider register */
  3240. union
  3241. {
  3242. __IOM uint32_t PSC;
  3243. struct
  3244. {
  3245. __IOM uint32_t PSC : 3;
  3246. __IM uint32_t RESERVED : 29;
  3247. } DIV_B;
  3248. };
  3249. /* Reload values register */
  3250. union
  3251. {
  3252. __IOM uint32_t CNTRLD;
  3253. struct
  3254. {
  3255. __IOM uint32_t CNTRLD : 12;
  3256. __IM uint32_t RESERVED : 20;
  3257. } CNTRLD_B;
  3258. };
  3259. /* Status register */
  3260. union
  3261. {
  3262. __IM uint32_t STS;
  3263. struct
  3264. {
  3265. __IM uint32_t PSCUFLG : 1;
  3266. __IM uint32_t CNTUFLG : 1;
  3267. __IM uint32_t RESERVED : 30;
  3268. } STS_B;
  3269. };
  3270. } IWDT_T;
  3271. /*!
  3272. * @brief Serial peripheral interface(SPI)
  3273. */
  3274. typedef struct
  3275. {
  3276. /* Control register 1 */
  3277. union
  3278. {
  3279. __IOM uint32_t CTRL1;
  3280. struct
  3281. {
  3282. __IOM uint32_t CPHA : 1;
  3283. __IOM uint32_t CPOL : 1;
  3284. __IOM uint32_t MSMCFG : 1;
  3285. __IOM uint32_t BRSEL : 3;
  3286. __IOM uint32_t SPIEN : 1;
  3287. __IOM uint32_t LSBSEL : 1;
  3288. __IOM uint32_t ISSEL : 1;
  3289. __IOM uint32_t SSEN : 1;
  3290. __IOM uint32_t RXOMEN : 1;
  3291. __IOM uint32_t DFLSEL : 1;
  3292. __IOM uint32_t CRCNXT : 1;
  3293. __IOM uint32_t CRCEN : 1;
  3294. __IOM uint32_t BMOEN : 1;
  3295. __IOM uint32_t BMEN : 1;
  3296. __IM uint32_t RESERVED : 16;
  3297. } CTRL1_B;
  3298. };
  3299. /* Control register 2 */
  3300. union
  3301. {
  3302. __IOM uint32_t CTRL2;
  3303. struct
  3304. {
  3305. __IOM uint32_t RXDEN : 1;
  3306. __IOM uint32_t TXDEN : 1;
  3307. __IOM uint32_t SSOEN : 1;
  3308. __IM uint32_t RESERVED1 : 2;
  3309. __IOM uint32_t ERRIEN : 1;
  3310. __IOM uint32_t RXBNEIEN : 1;
  3311. __IOM uint32_t TXBEIEN : 1;
  3312. __IM uint32_t RESERVED2 : 24;
  3313. } CTRL2_B;
  3314. };
  3315. /* Status register */
  3316. union
  3317. {
  3318. __IOM uint32_t STS;
  3319. struct
  3320. {
  3321. __IM uint32_t RXBNEFLG : 1;
  3322. __IM uint32_t TXBEFLG : 1;
  3323. __IM uint32_t SCHDIR : 1;
  3324. __IM uint32_t UDRFLG : 1;
  3325. __IOM uint32_t CRCEFLG : 1;
  3326. __IM uint32_t MEFLG : 1;
  3327. __IM uint32_t OVRFLG : 1;
  3328. __IM uint32_t BSYFLG : 1;
  3329. __IM uint32_t RESERVED : 24;
  3330. } STS_B;
  3331. };
  3332. /* Data register */
  3333. union
  3334. {
  3335. __IOM uint32_t DATA;
  3336. struct
  3337. {
  3338. __IOM uint32_t DATA : 16;
  3339. __IM uint32_t RESERVED : 16;
  3340. } DATA_B;
  3341. };
  3342. /* CRC polynomial register */
  3343. union
  3344. {
  3345. __IOM uint32_t CRCPOLY;
  3346. struct
  3347. {
  3348. __IOM uint32_t CRCPOLY : 16;
  3349. __IM uint32_t RESERVED : 16;
  3350. } CRCPOLY_B;
  3351. };
  3352. /* Receive CRC register */
  3353. union
  3354. {
  3355. __IM uint32_t RXCRC;
  3356. struct
  3357. {
  3358. __IM uint32_t RXCRC : 16;
  3359. __IM uint32_t RESERVED : 16;
  3360. } RXCRC_B;
  3361. };
  3362. /* Transmit CRC register */
  3363. union
  3364. {
  3365. __IM uint32_t TXCRC;
  3366. struct
  3367. {
  3368. __IM uint32_t TXCRC : 16;
  3369. __IM uint32_t RESERVED : 16;
  3370. } TXCRC_B;
  3371. };
  3372. } SPI_T;
  3373. /*!
  3374. * @brief Window watchdog (WWDT)
  3375. */
  3376. typedef struct
  3377. {
  3378. /* Control register */
  3379. union
  3380. {
  3381. __IOM uint32_t CTRL;
  3382. struct
  3383. {
  3384. __IOM uint32_t CNT : 7;
  3385. __IOM uint32_t WWDTEN : 1;
  3386. __IM uint32_t RESERVED : 24;
  3387. } CTRL_B;
  3388. };
  3389. /* Configure register */
  3390. union
  3391. {
  3392. __IOM uint32_t CFG;
  3393. struct
  3394. {
  3395. __IOM uint32_t WIN : 7;
  3396. __IOM uint32_t TBPSC : 2;
  3397. __IOM uint32_t EWIEN : 1;
  3398. __IM uint32_t RESERVED : 22;
  3399. } CFG_B;
  3400. };
  3401. /* Status register */
  3402. union
  3403. {
  3404. __IOM uint32_t STS;
  3405. struct
  3406. {
  3407. __IOM uint32_t EWIFLG : 1;
  3408. __IM uint32_t RESERVED : 31;
  3409. } STS_B;
  3410. };
  3411. } WWDT_T;
  3412. /*!
  3413. * @brief Queued serial peripheral interface(QSPI)
  3414. */
  3415. typedef struct
  3416. {
  3417. /*! @brief Control register 1 */
  3418. union
  3419. {
  3420. __IOM uint32_t CTRL1;
  3421. struct
  3422. {
  3423. __IOM uint32_t DFS : 5;
  3424. __IM uint32_t RESERVED1 : 3;
  3425. __IOM uint32_t CPHA : 1;
  3426. __IOM uint32_t CPOL : 1;
  3427. __IOM uint32_t TXMODE : 2;
  3428. __IM uint32_t RESERVED2 : 2;
  3429. __IOM uint32_t SSTEN : 1;
  3430. __IM uint32_t RESERVED3 : 7;
  3431. __IOM uint32_t FRF : 2;
  3432. __IM uint32_t RESERVED4 : 8;
  3433. } CTRL1_B;
  3434. };
  3435. /*! @brief Control register 2 */
  3436. union
  3437. {
  3438. __IOM uint32_t CTRL2;
  3439. struct
  3440. {
  3441. __IOM uint32_t NDF : 16;
  3442. __IM uint32_t RESERVED : 16;
  3443. } CTRL2_B;
  3444. };
  3445. /*! @brief QSPI Enable register */
  3446. union
  3447. {
  3448. __IOM uint32_t SSIEN;
  3449. struct
  3450. {
  3451. __IOM uint32_t EN : 1;
  3452. __IM uint32_t RESERVED : 31;
  3453. } SSIEN_B;
  3454. };
  3455. __IM uint32_t RESERVED;
  3456. /*! @brief QSPI Slave enable register */
  3457. union
  3458. {
  3459. __IOM uint32_t SLAEN;
  3460. struct
  3461. {
  3462. __IOM uint32_t SLAEN : 1;
  3463. __IM uint32_t RESERVED : 31;
  3464. } SLAEN_B;
  3465. };
  3466. /*! @brief Baudrate register */
  3467. union
  3468. {
  3469. __IOM uint32_t BR;
  3470. struct
  3471. {
  3472. __IOM uint32_t CLKDIV : 16;
  3473. __IM uint32_t RESERVED : 16;
  3474. } BR_B;
  3475. };
  3476. /*! @brief Transmission FIFO threshhold level register */
  3477. union
  3478. {
  3479. __IOM uint32_t TFTL;
  3480. struct
  3481. {
  3482. __IOM uint32_t TFT : 3;
  3483. __IM uint32_t RESERVED1 : 13;
  3484. __IOM uint32_t TFTH : 3;
  3485. __IM uint32_t RESERVED2 : 13;
  3486. } TFTL_B;
  3487. };
  3488. /*! @brief Reception FIFO threshhold level register */
  3489. union
  3490. {
  3491. __IOM uint32_t RFTL;
  3492. struct
  3493. {
  3494. __IOM uint32_t RFT : 3;
  3495. __IM uint32_t RESERVED : 29;
  3496. } RFTL_B;
  3497. };
  3498. /*! @brief Transmission FIFO level register */
  3499. union
  3500. {
  3501. __IOM uint32_t TFL;
  3502. struct
  3503. {
  3504. __IOM uint32_t TFL : 3;
  3505. __IM uint32_t RESERVED : 29;
  3506. } TFL_B;
  3507. };
  3508. /*! @brief Reception FIFO level register */
  3509. union
  3510. {
  3511. __IOM uint32_t RFL;
  3512. struct
  3513. {
  3514. __IOM uint32_t RFL : 3;
  3515. __IM uint32_t RESERVED : 29;
  3516. } RFL_B;
  3517. };
  3518. /*! @brief Status register */
  3519. union
  3520. {
  3521. __IOM uint32_t STS;
  3522. struct
  3523. {
  3524. __IOM uint32_t BUSYF : 1;
  3525. __IOM uint32_t TFNF : 1;
  3526. __IOM uint32_t TFEF : 1;
  3527. __IOM uint32_t RFNEF : 1;
  3528. __IOM uint32_t RFFF : 1;
  3529. __IM uint32_t RESERVED1 : 1;
  3530. __IOM uint32_t DCEF : 1;
  3531. __IM uint32_t RESERVED2 : 25;
  3532. } STS_B;
  3533. };
  3534. /*! @brief Interrupt enable register */
  3535. union
  3536. {
  3537. __IOM uint32_t INTEN;
  3538. struct
  3539. {
  3540. __IOM uint32_t TFEIE : 1;
  3541. __IOM uint32_t TFOIE : 1;
  3542. __IOM uint32_t RFUIE : 1;
  3543. __IOM uint32_t RFOIE : 1;
  3544. __IOM uint32_t RFFIE : 1;
  3545. __IOM uint32_t MSTIE : 1;
  3546. __IM uint32_t RESERVED : 26;
  3547. } INTEN_B;
  3548. };
  3549. /*! @brief Interrupt status register */
  3550. union
  3551. {
  3552. __IM uint32_t ISTS;
  3553. struct
  3554. {
  3555. __IM uint32_t TFEIF : 1;
  3556. __IM uint32_t TFOIF : 1;
  3557. __IM uint32_t RFUIF : 1;
  3558. __IM uint32_t RFOIF : 1;
  3559. __IM uint32_t RFFIF : 1;
  3560. __IM uint32_t MSTIF : 1;
  3561. __IM uint32_t RESERVED : 26;
  3562. } ISTS_B;
  3563. };
  3564. /*! @brief Raw interrupt register */
  3565. union
  3566. {
  3567. __IM uint32_t RIS;
  3568. struct
  3569. {
  3570. __IM uint32_t TFEIF : 1;
  3571. __IM uint32_t TFOIF : 1;
  3572. __IM uint32_t RFUIF : 1;
  3573. __IM uint32_t RXOIR : 1;
  3574. __IM uint32_t RXFIR : 1;
  3575. __IM uint32_t MSTIR : 1;
  3576. __IM uint32_t RESERVED : 26;
  3577. } RIS_B;
  3578. };
  3579. /*! @brief Transmission FIFO overflow interrupt clear register */
  3580. union
  3581. {
  3582. __IM uint32_t TFOIC;
  3583. struct
  3584. {
  3585. __IM uint32_t TFOIC : 1;
  3586. __IM uint32_t RESERVED : 31;
  3587. } TFOIC_B;
  3588. };
  3589. /*! @brief Reception FIFO overflow interrupt clear register */
  3590. union
  3591. {
  3592. __IM uint32_t RFOIC;
  3593. struct
  3594. {
  3595. __IM uint32_t RFOIC : 1;
  3596. __IM uint32_t RESERVED : 31;
  3597. } RFOIC_B;
  3598. };
  3599. /*! @brief Reception FIFO underflow interrupt clear register */
  3600. union
  3601. {
  3602. __IM uint32_t RFUIC;
  3603. struct
  3604. {
  3605. __IM uint32_t RFUIC : 1;
  3606. __IM uint32_t RESERVED : 31;
  3607. } RFUIC_B;
  3608. };
  3609. /*! @brief Master interrupt clear register */
  3610. union
  3611. {
  3612. __IM uint32_t MIC;
  3613. struct
  3614. {
  3615. __IM uint32_t MIC : 1;
  3616. __IM uint32_t RESERVED : 31;
  3617. } MIC_B;
  3618. };
  3619. /*! @brief Interrupt clear register */
  3620. union
  3621. {
  3622. __IM uint32_t ICF;
  3623. struct
  3624. {
  3625. __IM uint32_t ICF : 1;
  3626. __IM uint32_t RESERVED : 31;
  3627. } ICF_B;
  3628. };
  3629. __IM uint32_t RESERVED1[5];
  3630. /*! @brief Data register */
  3631. union
  3632. {
  3633. __IOM uint32_t DATA;
  3634. struct
  3635. {
  3636. __IOM uint32_t DATA : 32;
  3637. } DATA_B;
  3638. };
  3639. __IM uint32_t RESERVED2[35];
  3640. /*! @brief Reception sample register */
  3641. union
  3642. {
  3643. __IOM uint32_t RSD;
  3644. struct
  3645. {
  3646. __IOM uint32_t RSD : 8;
  3647. __IM uint32_t RESERVED1 : 8;
  3648. __IOM uint32_t RSE : 1;
  3649. __IM uint32_t RESERVED2 : 15;
  3650. } RSD_B;
  3651. };
  3652. /*! @brief Reception sample register */
  3653. union
  3654. {
  3655. __IOM uint32_t CTRL3;
  3656. struct
  3657. {
  3658. __IOM uint32_t IAT : 2;
  3659. __IOM uint32_t ADDRLEN : 4;
  3660. __IM uint32_t RESERVED1 : 2;
  3661. __IOM uint32_t INSLEN : 2;
  3662. __IM uint32_t RESERVED2 : 1;
  3663. __IOM uint32_t WAITCYC : 5;
  3664. __IM uint32_t RESERVED3 : 14;
  3665. __IOM uint32_t CSEN : 1;
  3666. __IM uint32_t RESERVED4 : 1;
  3667. } CTRL3_B;
  3668. };
  3669. __IM uint32_t RESERVED3[66];
  3670. /*! @brief IO switch register */
  3671. union
  3672. {
  3673. __IOM uint32_t IOSW;
  3674. struct
  3675. {
  3676. __IOM uint32_t IOSW : 1;
  3677. __IM uint32_t RESERVED : 31;
  3678. } IOSW_B;
  3679. };
  3680. } QSPI_T;
  3681. /*!
  3682. * @brief Debug MCU(DBGMCU)
  3683. */
  3684. typedef struct
  3685. {
  3686. /*! @brief ID register */
  3687. union
  3688. {
  3689. __IOM uint32_t IDCODE;
  3690. struct
  3691. {
  3692. __IOM uint32_t EQR : 12;
  3693. __IM uint32_t RESERVED : 4;
  3694. __IOM uint32_t WVR : 16;
  3695. } IDCODE_B;
  3696. };
  3697. /*! @brief Control register */
  3698. union
  3699. {
  3700. __IOM uint32_t CFG;
  3701. struct
  3702. {
  3703. __IOM uint32_t SLEEP_CLK_STS : 1;
  3704. __IOM uint32_t STOP_CLK_STS : 1;
  3705. __IOM uint32_t STANDBY_CLK_STS : 1;
  3706. __IM uint32_t RESERVED1 : 2;
  3707. __IOM uint32_t TRACE_IOEN : 1;
  3708. __IOM uint32_t TRACE_MODE : 2;
  3709. __IOM uint32_t IWDT_STS : 1;
  3710. __IOM uint32_t WWDT_STS : 1;
  3711. __IOM uint32_t TMR1_STS : 1;
  3712. __IOM uint32_t TMR2_STS : 1;
  3713. __IOM uint32_t TMR3_STS : 1;
  3714. __IOM uint32_t TMR4_STS : 1;
  3715. __IOM uint32_t CAN1_STS : 1;
  3716. __IOM uint32_t I2C1_SMBUS_TIMEOUT_STS : 1;
  3717. __IOM uint32_t I2C2_SMBUS_TIMEOUT_STS : 1;
  3718. __IM uint32_t RESERVED2 : 4;
  3719. __IOM uint32_t CAN2_STS : 1;
  3720. __IM uint32_t RESERVED3 : 10;
  3721. } CFG_B;
  3722. };
  3723. } DBGMCU_T;
  3724. /*!
  3725. * @brief USB Device controler(USBD)
  3726. */
  3727. typedef union
  3728. {
  3729. __IOM uint32_t EP;
  3730. struct
  3731. {
  3732. __IOM uint32_t ADDR : 4;
  3733. __IOM uint32_t TXSTS : 2;
  3734. __IOM uint32_t TXDTOG : 1;
  3735. __IOM uint32_t CTFT : 1;
  3736. __IOM uint32_t KIND : 1;
  3737. __IOM uint32_t TYPE : 2;
  3738. __IOM uint32_t SETUP : 1;
  3739. __IOM uint32_t RXSTS : 2;
  3740. __IOM uint32_t RXDTOG : 1;
  3741. __IOM uint32_t CTFR : 1;
  3742. __IM uint32_t RESERVED : 16;
  3743. } EP_B;
  3744. } USBD_EP_REG_T;
  3745. typedef struct
  3746. {
  3747. /* Endpoint */
  3748. USBD_EP_REG_T EP[8];
  3749. __IM uint32_t RESERVED[8];
  3750. /*! @brief Control register */
  3751. union
  3752. {
  3753. __IOM uint32_t CTRL;
  3754. struct
  3755. {
  3756. __IOM uint32_t FORRST : 1;
  3757. __IOM uint32_t PWRDOWN : 1;
  3758. __IOM uint32_t LPWREN : 1;
  3759. __IOM uint32_t FORSUS : 1;
  3760. __IOM uint32_t WUPREQ : 1;
  3761. __IM uint32_t RESERVED1 : 3;
  3762. __IOM uint32_t ESOFIEN : 1;
  3763. __IOM uint32_t SOFIEN : 1;
  3764. __IOM uint32_t RSTIEN : 1;
  3765. __IOM uint32_t SUSIEN : 1;
  3766. __IOM uint32_t WUPIEN : 1;
  3767. __IOM uint32_t ERRIEN : 1;
  3768. __IOM uint32_t PMAOUIEN : 1;
  3769. __IOM uint32_t CTRIEN : 1;
  3770. __IM uint32_t RESERVED2 : 16;
  3771. } CTRL_B;
  3772. };
  3773. /*! @brief Interrupt status register */
  3774. union
  3775. {
  3776. __IOM uint32_t INTSTS;
  3777. struct
  3778. {
  3779. __IOM uint32_t EPID : 4;
  3780. __IOM uint32_t DOT : 1;
  3781. __IM uint32_t RESERVED1 : 3;
  3782. __IOM uint32_t ESOFFLG : 1;
  3783. __IOM uint32_t SOFFLG : 1;
  3784. __IOM uint32_t RSTREQ : 1;
  3785. __IOM uint32_t SUSREQ : 1;
  3786. __IOM uint32_t WUPREQ : 1;
  3787. __IOM uint32_t ERRFLG : 1;
  3788. __IOM uint32_t PMOFLG : 1;
  3789. __IOM uint32_t CTFLG : 1;
  3790. __IM uint32_t RESERVED2 : 16;
  3791. } INTSTS_B;
  3792. };
  3793. /*! @brief Frame number register */
  3794. union
  3795. {
  3796. __IM uint32_t FRANUM;
  3797. struct
  3798. {
  3799. __IM uint32_t FRANUM : 11;
  3800. __IM uint32_t LSOFNUM : 2;
  3801. __IM uint32_t LOCK : 1;
  3802. __IM uint32_t RXDMSTS : 1;
  3803. __IM uint32_t RXDPSTS : 1;
  3804. __IM uint32_t RESERVED : 16;
  3805. } FRANUM_B;
  3806. };
  3807. /*! @brief Device address register */
  3808. union
  3809. {
  3810. __IOM uint32_t ADDR;
  3811. struct
  3812. {
  3813. __IOM uint32_t ADDR : 7;
  3814. __IOM uint32_t USBDEN : 1;
  3815. __IM uint32_t RESERVED : 24;
  3816. } ADDR_B;
  3817. };
  3818. /*! @brief Buffer table address register */
  3819. union
  3820. {
  3821. __IOM uint32_t BUFFTB;
  3822. struct
  3823. {
  3824. __IM uint32_t RESERVED1 : 3;
  3825. __IOM uint32_t BUFFTB : 13;
  3826. __IM uint32_t RESERVED2 : 16;
  3827. } BUFFTB_B;
  3828. };
  3829. __IM uint32_t RESERVED1[43];
  3830. /*! @brief Buffer table address register*/
  3831. union
  3832. {
  3833. __IOM uint32_t SWITCH;
  3834. struct
  3835. {
  3836. __IOM uint32_t SWITCH : 1;
  3837. __IM uint32_t RESERVED : 31;
  3838. } SWITCH_B;
  3839. };
  3840. } USBD_T;
  3841. /**@} end of group Peripheral_registers_structures */
  3842. /** @defgroup Peripheral_memory_map
  3843. @{
  3844. */
  3845. /* FMC base address in the alias region */
  3846. #define FMC_BASE ((uint32_t)0x08000000)
  3847. /* SRAM base address in the alias region */
  3848. #define SRAM_BASE ((uint32_t)0x20000000)
  3849. /* Peripheral base address in the alias region */
  3850. #define PERIPH_BASE ((uint32_t)0x40000000)
  3851. /* SRAM base address in the bit-band region */
  3852. #define SRAM_BB_BASE ((uint32_t)0x22000000)
  3853. /* Peripheral base address in the bit-band region */
  3854. #define PERIPH_BB_BASE ((uint32_t)0x42000000)
  3855. /* QSPI registers base address */
  3856. #define QSPI_BASE ((uint32_t)0xA0000000)
  3857. /* Peripheral memory map */
  3858. #define APB1PERIPH_BASE PERIPH_BASE
  3859. #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
  3860. #define AHBPERIPH_BASE (PERIPH_BASE + 0x20000)
  3861. #define TMR2_BASE (APB1PERIPH_BASE + 0x0000)
  3862. #define TMR3_BASE (APB1PERIPH_BASE + 0x0400)
  3863. #define TMR4_BASE (APB1PERIPH_BASE + 0x0800)
  3864. #define RTC_BASE (APB1PERIPH_BASE + 0x2800)
  3865. #define WWDT_BASE (APB1PERIPH_BASE + 0x2C00)
  3866. #define IWDT_BASE (APB1PERIPH_BASE + 0x3000)
  3867. #define SPI2_BASE (APB1PERIPH_BASE + 0x3800)
  3868. #define USART2_BASE (APB1PERIPH_BASE + 0x4400)
  3869. #define USART3_BASE (APB1PERIPH_BASE + 0x4800)
  3870. #define I2C1_BASE (APB1PERIPH_BASE + 0x5400)
  3871. #define I2C2_BASE (APB1PERIPH_BASE + 0x5800)
  3872. #define USBD_BASE (APB1PERIPH_BASE + 0X5C00)
  3873. #define CAN1_BASE (APB1PERIPH_BASE + 0x6400)
  3874. #define CAN2_BASE (APB1PERIPH_BASE + 0x6800)
  3875. #define BAKPR_BASE (APB1PERIPH_BASE + 0x6C00)
  3876. #define PMU_BASE (APB1PERIPH_BASE + 0x7000)
  3877. #define CEC_BASE (APB1PERIPH_BASE + 0x7800)
  3878. #define AFIO_BASE (APB2PERIPH_BASE + 0x0000)
  3879. #define EINT_BASE (APB2PERIPH_BASE + 0x0400)
  3880. #define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
  3881. #define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00)
  3882. #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
  3883. #define GPIOD_BASE (APB2PERIPH_BASE + 0x1400)
  3884. #define GPIOE_BASE (APB2PERIPH_BASE + 0x1800)
  3885. #define ADC1_BASE (APB2PERIPH_BASE + 0x2400)
  3886. #define ADC2_BASE (APB2PERIPH_BASE + 0x2800)
  3887. #define TMR1_BASE (APB2PERIPH_BASE + 0x2C00)
  3888. #define SPI1_BASE (APB2PERIPH_BASE + 0x3000)
  3889. #define USART1_BASE (APB2PERIPH_BASE + 0x3800)
  3890. #define DMA1_BASE (AHBPERIPH_BASE + 0x0000)
  3891. #define DMA1_Channel1_BASE (AHBPERIPH_BASE + 0x0008)
  3892. #define DMA1_Channel2_BASE (AHBPERIPH_BASE + 0x001C)
  3893. #define DMA1_Channel3_BASE (AHBPERIPH_BASE + 0x0030)
  3894. #define DMA1_Channel4_BASE (AHBPERIPH_BASE + 0x0044)
  3895. #define DMA1_Channel5_BASE (AHBPERIPH_BASE + 0x0058)
  3896. #define DMA1_Channel6_BASE (AHBPERIPH_BASE + 0x006C)
  3897. #define DMA1_Channel7_BASE (AHBPERIPH_BASE + 0x0080)
  3898. #define RCM_BASE (AHBPERIPH_BASE + 0x1000)
  3899. #define CRC_BASE (AHBPERIPH_BASE + 0x3000)
  3900. /* FMC registers base address */
  3901. #define FMC_R_BASE (AHBPERIPH_BASE + 0x2000)
  3902. /* FMC Option Bytes base address */
  3903. #define OB_BASE ((uint32_t)0x1FFFF800)
  3904. /* Debug MCU registers base address */
  3905. #define DBGMCU_BASE ((uint32_t)0xE0042000)
  3906. /**@} end of group Peripheral_memory_map */
  3907. /** @defgroup Peripheral_declaration
  3908. @{
  3909. */
  3910. #define CRC ((CRC_T *) CRC_BASE)
  3911. #define RTC ((RTC_T *) RTC_BASE)
  3912. #define PMU ((PMU_T *) PMU_BASE)
  3913. #define BAKPR ((BAKPR_T *) BAKPR_BASE)
  3914. #define TMR1 ((TMR_T *) TMR1_BASE)
  3915. #define TMR2 ((TMR_T *) TMR2_BASE)
  3916. #define TMR3 ((TMR_T *) TMR3_BASE)
  3917. #define TMR4 ((TMR_T *) TMR4_BASE)
  3918. #define DMA1 ((DMA_T *) DMA1_BASE)
  3919. #define DMA1_Channel1 ((DMA_Channel_T *) DMA1_Channel1_BASE)
  3920. #define DMA1_Channel2 ((DMA_Channel_T *) DMA1_Channel2_BASE)
  3921. #define DMA1_Channel3 ((DMA_Channel_T *) DMA1_Channel3_BASE)
  3922. #define DMA1_Channel4 ((DMA_Channel_T *) DMA1_Channel4_BASE)
  3923. #define DMA1_Channel5 ((DMA_Channel_T *) DMA1_Channel5_BASE)
  3924. #define DMA1_Channel6 ((DMA_Channel_T *) DMA1_Channel6_BASE)
  3925. #define DMA1_Channel7 ((DMA_Channel_T *) DMA1_Channel7_BASE)
  3926. #define CAN1 ((CAN_T *) CAN1_BASE)
  3927. #define CAN2 ((CAN_T *) CAN2_BASE)
  3928. #define I2C1 ((I2C_T *) I2C1_BASE)
  3929. #define I2C2 ((I2C_T *) I2C2_BASE)
  3930. #define OB ((OB_T *) OB_BASE)
  3931. #define ADC1 ((ADC_T *) ADC1_BASE)
  3932. #define ADC2 ((ADC_T *) ADC2_BASE)
  3933. #define EINT ((EINT_T *) EINT_BASE)
  3934. #define IWDT ((IWDT_T *) IWDT_BASE)
  3935. #define SPI1 ((SPI_T *) SPI1_BASE)
  3936. #define SPI2 ((SPI_T *) SPI2_BASE)
  3937. #define WWDT ((WWDT_T *) WWDT_BASE)
  3938. #define USART2 ((USART_T *) USART2_BASE)
  3939. #define USART3 ((USART_T *) USART3_BASE)
  3940. #define AFIO ((AFIO_T *) AFIO_BASE)
  3941. #define GPIOA ((GPIO_T *) GPIOA_BASE)
  3942. #define GPIOB ((GPIO_T *) GPIOB_BASE)
  3943. #define GPIOC ((GPIO_T *) GPIOC_BASE)
  3944. #define GPIOD ((GPIO_T *) GPIOD_BASE)
  3945. #define GPIOE ((GPIO_T *) GPIOE_BASE)
  3946. #define USART1 ((USART_T *) USART1_BASE)
  3947. #define RCM ((RCM_T *) RCM_BASE)
  3948. #define FMC ((FMC_T *) FMC_R_BASE)
  3949. #define USBD ((USBD_T *) USBD_BASE)
  3950. #define QSPI ((QSPI_T *) QSPI_BASE)
  3951. #define DBGMCU ((DBGMCU_T *) DBGMCU_BASE)
  3952. /**@} end of group Peripheral_declaration */
  3953. /** @defgroup Exported_Macros
  3954. @{
  3955. */
  3956. /* Define one bit mask */
  3957. #define BIT0 ((uint32_t)0x00000001)
  3958. #define BIT1 ((uint32_t)0x00000002)
  3959. #define BIT2 ((uint32_t)0x00000004)
  3960. #define BIT3 ((uint32_t)0x00000008)
  3961. #define BIT4 ((uint32_t)0x00000010)
  3962. #define BIT5 ((uint32_t)0x00000020)
  3963. #define BIT6 ((uint32_t)0x00000040)
  3964. #define BIT7 ((uint32_t)0x00000080)
  3965. #define BIT8 ((uint32_t)0x00000100)
  3966. #define BIT9 ((uint32_t)0x00000200)
  3967. #define BIT10 ((uint32_t)0x00000400)
  3968. #define BIT11 ((uint32_t)0x00000800)
  3969. #define BIT12 ((uint32_t)0x00001000)
  3970. #define BIT13 ((uint32_t)0x00002000)
  3971. #define BIT14 ((uint32_t)0x00004000)
  3972. #define BIT15 ((uint32_t)0x00008000)
  3973. #define BIT16 ((uint32_t)0x00010000)
  3974. #define BIT17 ((uint32_t)0x00020000)
  3975. #define BIT18 ((uint32_t)0x00040000)
  3976. #define BIT19 ((uint32_t)0x00080000)
  3977. #define BIT20 ((uint32_t)0x00100000)
  3978. #define BIT21 ((uint32_t)0x00200000)
  3979. #define BIT22 ((uint32_t)0x00400000)
  3980. #define BIT23 ((uint32_t)0x00800000)
  3981. #define BIT24 ((uint32_t)0x01000000)
  3982. #define BIT25 ((uint32_t)0x02000000)
  3983. #define BIT26 ((uint32_t)0x04000000)
  3984. #define BIT27 ((uint32_t)0x08000000)
  3985. #define BIT28 ((uint32_t)0x10000000)
  3986. #define BIT29 ((uint32_t)0x20000000)
  3987. #define BIT30 ((uint32_t)0x40000000)
  3988. #define BIT31 ((uint32_t)0x80000000)
  3989. #define SET_BIT(REG, BIT) ((REG) |= (BIT))
  3990. #define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
  3991. #define READ_BIT(REG, BIT) ((REG) & (BIT))
  3992. #define CLEAR_REG(REG) ((REG) = (0x0))
  3993. #define WRITE_REG(REG, VAL) ((REG) = (VAL))
  3994. #define READ_REG(REG) ((REG))
  3995. #define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
  3996. /**@} end of group Exported_Macros */
  3997. /**@} end of group APM32S10x */
  3998. /**@} end of group CMSIS */
  3999. #ifdef __cplusplus
  4000. }
  4001. #endif
  4002. #endif /* __APM32S10X_H */