NUC1xx.h 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /* */
  3. /* Copyright (c) Nuvoton Technology Corp. All rights reserved. */
  4. /* */
  5. /*---------------------------------------------------------------------------------------------------------*/
  6. #ifndef __NUC1xx_H__
  7. #define __NUC1xx_H__
  8. /*
  9. * ==========================================================================
  10. * ---------- Interrupt Number Definition -----------------------------------
  11. * ==========================================================================
  12. */
  13. typedef enum IRQn
  14. {
  15. /****** Cortex-M0 Processor Exceptions Numbers ***************************************************/
  16. NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
  17. HardFault_IRQn = -13, /*!< 3 Cortex-M0 Hard Fault Interrupt */
  18. SVCall_IRQn = -5, /*!< 11 Cortex-M0 SV Call Interrupt */
  19. PendSV_IRQn = -2, /*!< 14 Cortex-M0 Pend SV Interrupt */
  20. SysTick_IRQn = -1, /*!< 15 Cortex-M0 System Tick Interrupt */
  21. /****** ARMIKMCU Swift specific Interrupt Numbers ************************************************/
  22. BOD_IRQn = 0,
  23. WDT_IRQn = 1,
  24. EINT0_IRQn = 2,
  25. EINT1_IRQn = 3,
  26. GPAB_IRQn = 4,
  27. GPCDE_IRQn = 5,
  28. PWMA_IRQn = 6,
  29. PWMB_IRQn = 7,
  30. TMR0_IRQn = 8,
  31. TMR1_IRQn = 9,
  32. TMR2_IRQn = 10,
  33. TMR3_IRQn = 11,
  34. UART0_IRQn = 12,
  35. UART1_IRQn = 13,
  36. SPI0_IRQn = 14,
  37. SPI1_IRQn = 15,
  38. SPI2_IRQn = 16,
  39. SPI3_IRQn = 17,
  40. I2C0_IRQn = 18,
  41. I2C1_IRQn = 19,
  42. CAN0_IRQn = 20,
  43. CAN1_IRQn = 21,
  44. SD_IRQn = 22,
  45. USBD_IRQn = 23,
  46. PS2_IRQn = 24,
  47. ACMP_IRQn = 25,
  48. PDMA_IRQn = 26,
  49. I2S_IRQn = 27,
  50. PWRWU_IRQn = 28,
  51. ADC_IRQn = 29,
  52. DAC_IRQn = 30,
  53. RTC_IRQn = 31
  54. /*!< maximum of 32 Interrupts are possible */
  55. } IRQn_Type;
  56. /*
  57. * ==========================================================================
  58. * ----------- Processor and Core Peripheral Section ------------------------
  59. * ==========================================================================
  60. */
  61. /* Configuration of the Cortex-M0 Processor and Core Peripherals */
  62. #define __MPU_PRESENT 0 /*!< armikcmu does not provide a MPU present or not */
  63. #define __NVIC_PRIO_BITS 2 /*!< armikcmu Supports 2 Bits for the Priority Levels */
  64. #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */
  65. #include "core_cm0.h" /* Cortex-M0 processor and core peripherals */
  66. #include "system_NUC1xx.h" /* NUC1xx System */
  67. // #include "System\SysInfra.h"
  68. /**
  69. * Initialize the system clock
  70. *
  71. * @param none
  72. * @return none
  73. *
  74. * @brief Setup the microcontroller system
  75. * Initialize the PLL and update the SystemFrequency variable
  76. */
  77. extern void SystemInit (void);
  78. /******************************************************************************/
  79. /* Device Specific Peripheral registers structures */
  80. /******************************************************************************/
  81. /*--------------------- General Purpose Input and Ouptut ---------------------*/
  82. typedef struct
  83. {
  84. __IO uint32_t PMD0:2;
  85. __IO uint32_t PMD1:2;
  86. __IO uint32_t PMD2:2;
  87. __IO uint32_t PMD3:2;
  88. __IO uint32_t PMD4:2;
  89. __IO uint32_t PMD5:2;
  90. __IO uint32_t PMD6:2;
  91. __IO uint32_t PMD7:2;
  92. __IO uint32_t PMD8:2;
  93. __IO uint32_t PMD9:2;
  94. __IO uint32_t PMD10:2;
  95. __IO uint32_t PMD11:2;
  96. __IO uint32_t PMD12:2;
  97. __IO uint32_t PMD13:2;
  98. __IO uint32_t PMD14:2;
  99. __IO uint32_t PMD15:2;
  100. } GPIO_PMD_T;
  101. typedef __IO uint32_t GPIO_SCH_T;
  102. typedef __IO uint32_t GPIO_DOUT_T;
  103. typedef __IO uint32_t GPIO_DMASK_T;
  104. typedef __IO uint32_t GPIO_PIN_T;
  105. typedef __IO uint32_t GPIO_DBEN_T;
  106. typedef __IO uint32_t GPIO_IMD_T;
  107. typedef __IO uint32_t GPIO_IEN_T;
  108. typedef __IO uint32_t GPIO_ISRC_T;
  109. typedef struct
  110. {
  111. __IO uint32_t DBCLKSEL:4;
  112. __IO uint32_t DBCLKSRC:1;
  113. __IO uint32_t ICLK_ON:1;
  114. __I uint32_t RESERVE:26;
  115. } GPIO_DBNCECON_T;
  116. typedef struct
  117. {
  118. GPIO_PMD_T PMD;
  119. GPIO_SCH_T SCH;
  120. GPIO_DOUT_T DOUT;
  121. GPIO_DMASK_T DMASK;
  122. GPIO_PIN_T PIN;
  123. GPIO_DBEN_T DBEN;
  124. GPIO_IMD_T IMD;
  125. GPIO_IEN_T IEN;
  126. GPIO_ISRC_T ISRC;
  127. } GPIO_T;
  128. /*------------------------- UART Interface Controller ------------------------*/
  129. typedef __IO uint32_t UART_DATA_T;
  130. typedef struct
  131. {
  132. __IO uint32_t RDA_IEN:1;
  133. __IO uint32_t THRE_IEN:1;
  134. __IO uint32_t RLS_IEN:1;
  135. __IO uint32_t MS_IEN:1;
  136. __IO uint32_t RTO_IEN:1;
  137. __IO uint32_t BUF_ERR_IEN:1;
  138. __IO uint32_t WAKE_IEN:1;
  139. __I uint32_t RESERVE0:4;
  140. __IO uint32_t TOC_EN:1; /* Time-out counter enable */
  141. __IO uint32_t AUTO_RTS_EN:1;
  142. __IO uint32_t AUTO_CTS_EN:1;
  143. __IO uint32_t DMA_TX_EN:1;
  144. __IO uint32_t DMA_RX_EN:1;
  145. __I uint32_t RESERVE1:15;
  146. __IO uint32_t nDEBUGACK_EN:1;
  147. } UART_IER_T;
  148. typedef struct
  149. {
  150. __I uint32_t RESERVE0:1;
  151. __IO uint32_t RFR:1;
  152. __IO uint32_t TFR:1;
  153. __I uint32_t RESERVE1:1;
  154. __IO uint32_t RFITL:4; /* Rx FIFO Interrupt Trigger Level */
  155. __I uint32_t RESERVE2:8;
  156. __IO uint32_t RTS_TRIG_LEVEL:4;
  157. __I uint32_t RESERVE3:12;
  158. } UART_FCR_T;
  159. typedef struct
  160. {
  161. __IO uint32_t WLS:2; /* Word length select */
  162. __IO uint32_t NSB:1; /* Number of STOP bit */
  163. __IO uint32_t PBE:1; /* Parity bit enable */
  164. __IO uint32_t EPE:1; /* Even parity enable */
  165. __IO uint32_t SPE:1; /* Stick parity enable*/
  166. __IO uint32_t BCB:1; /* Break control bit */
  167. __I uint32_t RESERVE:25;
  168. } UART_LCR_T;
  169. typedef struct
  170. {
  171. __I uint32_t RESERVE0:1;
  172. __IO uint32_t RTS_INV:1;
  173. __I uint32_t RESERVE1:2;
  174. __IO uint32_t LBME:1;
  175. __I uint32_t RESERVE2:4;
  176. __IO uint32_t RTS_ACT_LEVEL:1;
  177. __I uint32_t RESERVE3:3;
  178. __I uint32_t RTS:1; /* RTS status */
  179. __I uint32_t RESERVE4:18;
  180. } UART_MCR_T;
  181. typedef struct
  182. {
  183. __IO uint32_t DCTS:1;
  184. __I uint32_t RESERVE0:3;
  185. __I uint32_t CTS:1; /* CTS status */
  186. __I uint32_t RESERVE1:3;
  187. __IO uint32_t CTS_ACT_LEVEL:1;
  188. __I uint32_t RESERVE2:23;
  189. } UART_MSR_T;
  190. typedef struct
  191. {
  192. __IO uint32_t RX_OVERFLOW:1;
  193. __I uint32_t RESERVE0:3;
  194. __IO uint32_t PEI:1;
  195. __IO uint32_t FEI:1;
  196. __IO uint32_t BII:1;
  197. __I uint32_t RESERVE1:1;
  198. __I uint32_t RX_POINTER:6;
  199. __I uint32_t RX_EMPTY:1;
  200. __I uint32_t RX_FULL:1;
  201. __I uint32_t TX_POINTER:6;
  202. __I uint32_t TX_EMPTY:1;
  203. __I uint32_t TX_FULL:1;
  204. __IO uint32_t TX_OVERFLOW:1;
  205. __I uint32_t RESERVE2:3;
  206. __I uint32_t TE:1; /* Transmitter empty flag */
  207. __I uint32_t RESERVE3:3;
  208. } UART_FSR_T;
  209. typedef struct
  210. {
  211. __IO uint32_t RDA_IF:1;
  212. __IO uint32_t THRE_IF:1;
  213. __IO uint32_t RLS_IF:1;
  214. __IO uint32_t MODEM_IF:1;
  215. __IO uint32_t TOUT_IF:1;
  216. __IO uint32_t BUF_ERR_IF:1;
  217. __IO uint32_t WAKE_IF:1;
  218. __IO uint32_t SW_TX:1;
  219. __IO uint32_t RDA_INT:1;
  220. __IO uint32_t THRE_INT:1;
  221. __IO uint32_t RLS_INT:1;
  222. __IO uint32_t MODEM_INT:1;
  223. __IO uint32_t TOUT_INT:1;
  224. __IO uint32_t BUF_ERR_INT:1;
  225. __IO uint32_t WAKE_INT:1;
  226. __IO uint32_t SW_RX:1;
  227. __I uint32_t RESERVE0:2;
  228. __IO uint32_t HW_RLS_IF:1;
  229. __IO uint32_t HW_MODEM_IF:1;
  230. __IO uint32_t HW_TOUT_IF:1;
  231. __IO uint32_t HW_BUF_ERR_IF:1;
  232. __IO uint32_t HW_WAKE_IF:1;
  233. __IO uint32_t EDMA_TX:1;
  234. __I uint32_t RESERVE1:2;
  235. __IO uint32_t HW_RLS_INT:1;
  236. __IO uint32_t HW_MODEM_INT:1;
  237. __IO uint32_t HW_TOUT_INT:1;
  238. __IO uint32_t HW_BUF_ERR_INT:1;
  239. __IO uint32_t HW_WAKE_INT:1;
  240. __IO uint32_t EDMA_RX:1;
  241. } UART_ISR_T;
  242. typedef __IO uint32_t UART_TOR_T;
  243. typedef struct
  244. {
  245. __IO uint32_t DIV:16;
  246. __I uint32_t RESERVE0:8;
  247. __IO uint32_t DIVX:4;
  248. __IO uint32_t DIVX1:1;
  249. __IO uint32_t DIVX_EN:1;
  250. __I uint32_t RESERVE1:2;
  251. } UART_BAUD_T;
  252. typedef struct
  253. {
  254. __IO uint32_t IrDA_EN:1;
  255. __I uint32_t RESERVE0:2;
  256. __IO uint32_t RX_EN:1;
  257. __IO uint32_t TX_EN:1;
  258. __IO uint32_t TX_INV_EN:1;
  259. __IO uint32_t RX_INV_EN:1;
  260. __I uint32_t RESERVE1:25;
  261. } UART_IRCR_T;
  262. typedef struct
  263. {
  264. __IO uint32_t LINBCNT:4;
  265. __I uint32_t RESERVE0:2;
  266. __IO uint32_t LINRX_EN:1;
  267. __IO uint32_t LINTX_EN:1;
  268. __I uint32_t RESERVE1:24;
  269. } UART_LINCON_T;
  270. typedef struct
  271. {
  272. __IO uint32_t LIN_EN:2;
  273. __IO uint32_t IrDA_EN:2;
  274. __I uint32_t RESERVE0:32;
  275. } UART_FUNSEL_T;
  276. typedef struct
  277. {
  278. UART_DATA_T DATA;
  279. UART_IER_T IER;
  280. UART_FCR_T FCR;
  281. UART_LCR_T LCR;
  282. UART_MCR_T MCR;
  283. UART_MSR_T MSR;
  284. UART_FSR_T FSR;
  285. UART_ISR_T ISR;
  286. UART_TOR_T TOR;
  287. UART_BAUD_T BAUD;
  288. UART_IRCR_T IRCR;
  289. UART_LINCON_T LINCON;
  290. UART_FUNSEL_T FUNSEL;
  291. } UART_T;
  292. /*----------------------------- Timer Controller -----------------------------*/
  293. typedef struct
  294. {
  295. __IO uint32_t PRESCALE:8;
  296. __I uint32_t RESERVE0:8;
  297. __IO uint32_t TDR_EN:1;
  298. __I uint32_t RESERVE1:8;
  299. __IO uint32_t CACT:1;
  300. __IO uint32_t CRST:1;
  301. __IO uint32_t MODE:2;
  302. __IO uint32_t IE:1;
  303. __IO uint32_t CEN:1;
  304. __IO uint32_t nDBGACK_EN:1;
  305. } TIMER_TCSR_T;
  306. typedef __IO uint32_t TIMER_TICR_T;
  307. typedef __IO uint32_t TIMER_TDR_T;
  308. typedef struct
  309. {
  310. __IO uint32_t TIF:1;
  311. __I uint32_t RESERVE:31;
  312. } TIMER_TISR_T;
  313. typedef struct
  314. {
  315. TIMER_TCSR_T TCSR;
  316. TIMER_TICR_T TICR;
  317. TIMER_TISR_T TISR;
  318. TIMER_TDR_T TDR;
  319. } TIMER_T;
  320. /*----------------------------- WDT Controller -----------------------------*/
  321. typedef struct
  322. {
  323. __IO uint32_t WTR:1;
  324. __IO uint32_t WTRE:1;
  325. __IO uint32_t WTRF:1;
  326. __IO uint32_t WTIF:1;
  327. __I uint32_t RESERVE:2;
  328. __IO uint32_t WTIE:1;
  329. __IO uint32_t WTE:1;
  330. __IO uint32_t WTIS:3;
  331. __I uint32_t RESERVE1:21;
  332. } WDT_WTCR_T;
  333. typedef struct
  334. {
  335. WDT_WTCR_T WTCR;
  336. } WDT_T;
  337. /*------------------------- SPI Interface Controller -------------------------*/
  338. typedef struct
  339. {
  340. __IO uint32_t GO_BUSY:1;
  341. __IO uint32_t RX_NEG:1;
  342. __IO uint32_t TX_NEG:1;
  343. __IO uint32_t TX_BIT_LEN:5;
  344. __IO uint32_t TX_NUM:2;
  345. __IO uint32_t LSB:1;
  346. __IO uint32_t CLKP:1;
  347. __IO uint32_t SLEEP:4;
  348. __IO uint32_t IF:1;
  349. __IO uint32_t IE:1;
  350. __IO uint32_t SLAVE:1;
  351. __IO uint32_t BYTE_SLEEP:1;
  352. __IO uint32_t BYTE_ENDIAN:1;
  353. __IO uint32_t FOURB:1;
  354. __IO uint32_t TWOB:1;
  355. __IO uint32_t VARCLK_EN:1;
  356. __I uint32_t RESERVE:8;
  357. } SPI_CNTRL_T;
  358. typedef struct
  359. {
  360. __IO uint32_t DIVIDER:16;
  361. __IO uint32_t DIVIDER2:16;
  362. } SPI_DIVIDER_T;
  363. typedef struct
  364. {
  365. __IO uint32_t SSR:2;
  366. __IO uint32_t SS_LVL:1;
  367. __IO uint32_t ASS:1;
  368. __IO uint32_t SS_LTRIG:1;
  369. __IO uint32_t LTRIG_FLAG:1;
  370. __I uint32_t RESERVE:26;
  371. } SPI_SSR_T;
  372. typedef __I uint32_t SPI_RX_T;
  373. typedef __O uint32_t SPI_TX_T;
  374. typedef struct
  375. {
  376. __IO uint32_t JS:1;
  377. __I uint32_t RESERVE0:3;
  378. __IO uint32_t JS_RW:1;
  379. __IO uint32_t CS_ACT:1;
  380. __IO uint32_t DATA_RDY:1;
  381. __IO uint32_t CS_DEACT:1;
  382. __IO uint32_t READYB:1;
  383. __I uint32_t RESERVE1:23;
  384. } SPI_JS_T;
  385. typedef __IO uint32_t SPI_VARCLK_T;
  386. typedef struct
  387. {
  388. __IO uint32_t TX_DMA_GO:1;
  389. __IO uint32_t RX_DMA_GO:1;
  390. __I uint32_t RESERVE:30;
  391. } SPI_DMA_T;
  392. typedef struct
  393. {
  394. SPI_CNTRL_T CNTRL;
  395. SPI_DIVIDER_T DIVIDER;
  396. SPI_SSR_T SSR;
  397. uint32_t RESERVE0;
  398. SPI_RX_T RX[2];
  399. uint32_t RESERVE1;
  400. uint32_t RESERVE2;
  401. SPI_TX_T TX[2];
  402. uint32_t RESERVE3;
  403. uint32_t RESERVE4;
  404. SPI_JS_T JS;
  405. SPI_VARCLK_T VARCLK;
  406. SPI_DMA_T DMA;
  407. } SPI_T;
  408. /*------------------------------ I2C Controller ------------------------------*/
  409. typedef struct
  410. {
  411. __I uint32_t RESERVE0:2;
  412. __IO uint32_t AA:1;
  413. __IO uint32_t SI:1;
  414. __IO uint32_t STO:1;
  415. __IO uint32_t STA:1;
  416. __IO uint32_t ENSI:1;
  417. __IO uint32_t EI:1;
  418. __I uint32_t RESERVE1:24;
  419. } I2C_CON_T;
  420. typedef struct
  421. {
  422. __IO uint32_t GC:1;
  423. __IO uint32_t ADDR:7;
  424. __I uint32_t RESERVE:24;
  425. } I2C_ADDR_T;
  426. typedef __IO uint32_t I2C_DATA_T;
  427. typedef __I uint32_t I2C_STATUS_T;
  428. typedef __IO uint32_t I2C_CLK_T;
  429. typedef struct
  430. {
  431. __IO uint32_t TIF:1;
  432. __IO uint32_t DIV4:1;
  433. __IO uint32_t ENTI:1;
  434. __I uint32_t RESERVE:29;
  435. } I2C_TOC_T;
  436. typedef struct
  437. {
  438. __I uint32_t RESERVE0:1;
  439. __IO uint32_t ADM:7;
  440. __I uint32_t RESERVE1:24;
  441. } I2C_ADRM_T;
  442. typedef struct
  443. {
  444. I2C_CON_T CON;
  445. I2C_ADDR_T ADDR0;
  446. I2C_DATA_T DATA;
  447. I2C_STATUS_T STATUS;
  448. I2C_CLK_T CLK;
  449. I2C_TOC_T TOC;
  450. I2C_ADDR_T ADDR1;
  451. I2C_ADDR_T ADDR2;
  452. I2C_ADDR_T ADDR3;
  453. I2C_ADRM_T ADRM0;
  454. I2C_ADRM_T ADRM1;
  455. I2C_ADRM_T ADRM2;
  456. I2C_ADRM_T ADRM3;
  457. } I2C_T;
  458. /*----------------------------- RTC Controller -------------------------------*/
  459. typedef __IO uint32_t RTC_INIR_T;
  460. typedef struct
  461. {
  462. __IO uint32_t AER:16;
  463. __I uint32_t ENF:1;
  464. __I uint32_t RESERVE1:15;
  465. } RTC_AER_T;
  466. typedef struct
  467. {
  468. __IO uint32_t FRACTION:6;
  469. __I uint32_t RESERVE0:2;
  470. __IO uint32_t INTEGER:4;
  471. __I uint32_t RESERVE1:20;
  472. } RTC_FCR_T;
  473. typedef struct
  474. {
  475. __IO uint32_t SEC1:4;
  476. __IO uint32_t SEC10:3;
  477. __I uint32_t RESERVE0:1;
  478. __IO uint32_t MIN1:4;
  479. __IO uint32_t MIN10:3;
  480. __I uint32_t RESERVE1:1;
  481. __IO uint32_t HR1:4;
  482. __IO uint32_t HR10:2;
  483. __I uint32_t RESERVE2:10;
  484. } RTC_TLR_T;
  485. typedef struct
  486. {
  487. __IO uint32_t DAY1:4;
  488. __IO uint32_t DAY10:2;
  489. __I uint32_t RESERVE0:2;
  490. __IO uint32_t MON1:4;
  491. __IO uint32_t MON10:1;
  492. __I uint32_t RESERVE1:3;
  493. __IO uint32_t YEAR1:4;
  494. __IO uint32_t YEAR10:4;
  495. __I uint32_t RESERVE2:8;
  496. } RTC_CLR_T;
  497. typedef struct
  498. {
  499. __IO uint32_t HR24:1;
  500. __I uint32_t RESERVE:31;
  501. } RTC_TSSR_T;
  502. typedef struct
  503. {
  504. __IO uint32_t DWR:3;
  505. __I uint32_t RESERVE:29;
  506. } RTC_DWR_T;
  507. typedef RTC_TLR_T RTC_TAR_T;
  508. typedef RTC_CLR_T RTC_CAR_T;
  509. typedef struct
  510. {
  511. __IO uint32_t LIR:1;
  512. __I uint32_t RESERVE:31;
  513. } RTC_LIR_T;
  514. typedef struct
  515. {
  516. __IO uint32_t AIER:1;
  517. __IO uint32_t TIER:1;
  518. __I uint32_t RESERVE:30;
  519. } RTC_RIER_T;
  520. //typedef __IO uint32_t RTC_RIIR_T;
  521. typedef struct
  522. {
  523. __IO uint32_t AI:1;
  524. __IO uint32_t TI:1;
  525. __I uint32_t RESERVE:30;
  526. } RTC_RIIR_T;
  527. typedef struct
  528. {
  529. __IO uint32_t TTR:3;
  530. __I uint32_t RESERVE:30;
  531. } RTC_TTR_T;
  532. typedef struct
  533. {
  534. __IO uint32_t PTOUT:16;
  535. __I uint32_t RESERVE0:7;
  536. __IO uint32_t PWROFF:1;
  537. __I uint32_t RESERVE1:8;
  538. } RTC_PWRCON_T;
  539. typedef struct
  540. {
  541. RTC_INIR_T INIR;
  542. RTC_AER_T AER;
  543. RTC_FCR_T FCR;
  544. RTC_TLR_T TLR;
  545. RTC_CLR_T CLR;
  546. RTC_TSSR_T TSSR;
  547. RTC_DWR_T DWR;
  548. RTC_TAR_T TAR;
  549. RTC_CAR_T CAR;
  550. RTC_LIR_T LIR;
  551. RTC_RIER_T RIER;
  552. RTC_RIIR_T RIIR;
  553. RTC_TTR_T TTR;
  554. RTC_PWRCON_T PWRCON;
  555. } RTC_T;
  556. /*----------------------------- ADC Controller -------------------------------*/
  557. typedef struct
  558. {
  559. __IO uint32_t RSLT:16;
  560. __IO uint32_t OVERRUN:1;
  561. __IO uint32_t VALID:1;
  562. __I uint32_t RESERVE1:14;
  563. } ADC_ADDR_T;
  564. typedef struct
  565. {
  566. __IO uint32_t ADEN:1;
  567. __IO uint32_t ADIE:1;
  568. __IO uint32_t ADMD:2;
  569. __IO uint32_t TRGS:2;
  570. __IO uint32_t TRGCOND:2;
  571. __IO uint32_t TRGEN:1;
  572. __IO uint32_t PTEN:1;
  573. __IO uint32_t DIFF:1;
  574. __IO uint32_t ADST:1;
  575. __I uint32_t RESERVE0:4;
  576. __IO uint32_t ADCLKDIV:7;
  577. __I uint32_t RESERVE1:9;
  578. } ADC_ADCR_T;
  579. typedef struct
  580. {
  581. __IO uint32_t CHEN:8;
  582. __IO uint32_t PRESEL:2;
  583. __I uint32_t RESERVE:22;
  584. } ADC_ADCHER_T;
  585. typedef struct
  586. {
  587. __IO uint32_t CMPEN:1;
  588. __IO uint32_t CMPIE:1;
  589. __IO uint32_t CMPCOND:1;
  590. __IO uint32_t CMPCH:3;
  591. __I uint32_t RESERVE0:2;
  592. __IO uint32_t CMPMATCNT:4;
  593. __I uint32_t RESERVE1:4;
  594. __IO uint32_t CMPD:12;
  595. __I uint32_t RESERVE2:4;
  596. } ADC_ADCMPR_T;
  597. typedef struct
  598. {
  599. __IO uint32_t ADF:1;
  600. __IO uint32_t CMPF0:1;
  601. __IO uint32_t CMPF1:1;
  602. __IO uint32_t BUSY:1;
  603. __IO uint32_t CHANNEL:3;
  604. __I uint32_t RESERVE0:1;
  605. __IO uint32_t VALID:8;
  606. __IO uint32_t OVERRUN:8;
  607. __I uint32_t RESERVE1:8;
  608. } ADC_ADSR_T;
  609. typedef struct
  610. {
  611. __IO uint32_t CALEN:1;
  612. __IO uint32_t CALDONE:1;
  613. __I uint32_t RESERVE:30;
  614. } ADC_ADCALR_T;
  615. typedef struct
  616. {
  617. ADC_ADDR_T ADDR[8];
  618. ADC_ADCR_T ADCR;
  619. ADC_ADCHER_T ADCHER;
  620. ADC_ADCMPR_T ADCMPR[2];
  621. ADC_ADSR_T ADSR;
  622. ADC_ADCALR_T ADCALR;
  623. } ADC_T;
  624. /*---------------------- Analog Comparator Controller -------------------------*/
  625. typedef struct
  626. {
  627. __IO uint32_t CMPEN:1;
  628. __IO uint32_t CMPIE:1;
  629. __IO uint32_t CMP_HYSEN:1;
  630. __IO uint32_t CP:1;
  631. __IO uint32_t CN:1;
  632. __IO uint32_t COE:1;
  633. __I uint32_t RESERVE:26;
  634. } ACMP_CMPCR_T;
  635. typedef struct
  636. {
  637. __IO uint32_t CMPF1:1;
  638. __IO uint32_t CMPF2:1;
  639. __IO uint32_t CO1:1;
  640. __IO uint32_t CO2:1;
  641. __I uint32_t RESERVE:28;
  642. } ACMP_CMPSR_T;
  643. typedef struct
  644. {
  645. ACMP_CMPCR_T CMPCR[2];
  646. ACMP_CMPSR_T CMPSR;
  647. } ACMP_T;
  648. /*---------------------------- Clock Controller ------------------------------*/
  649. typedef struct
  650. {
  651. __IO uint32_t XTL12M_EN:1;
  652. __IO uint32_t XTL32K_EN:1;
  653. __IO uint32_t OSC22M_EN:1;
  654. __IO uint32_t OSC10K_EN:1;
  655. __IO uint32_t WU_DLY:1;
  656. __IO uint32_t WINT_EN:1;
  657. __IO uint32_t PD_WU_STS:1;
  658. __IO uint32_t PWR_DOWN:1;
  659. __IO uint32_t PD_WAIT_CPU:1;
  660. __I uint32_t RESERVE:23;
  661. } SYSCLK_PWRCON_T;
  662. typedef struct
  663. {
  664. __IO uint32_t CPU_EN:1;
  665. __IO uint32_t PDMA_EN:1;
  666. __IO uint32_t ISP_EN:1;
  667. __I uint32_t RESERVE:29;
  668. } SYSCLK_AHBCLK_T;
  669. typedef struct
  670. {
  671. __IO uint32_t WDG_EN:1;
  672. __IO uint32_t RTC_EN:1;
  673. __IO uint32_t TMR0_EN:1;
  674. __IO uint32_t TMR1_EN:1;
  675. __IO uint32_t TMR2_EN:1;
  676. __IO uint32_t TMR3_EN:1;
  677. __I uint32_t RESERVE0:2;
  678. __IO uint32_t I2C0_EN:1;
  679. __IO uint32_t I2C1_EN:1;
  680. __I uint32_t RESERVE1:2;
  681. __IO uint32_t SPI0_EN:1;
  682. __IO uint32_t SPI1_EN:1;
  683. __IO uint32_t SPI2_EN:1;
  684. __IO uint32_t SPI3_EN:1;
  685. __IO uint32_t UART0_EN:1;
  686. __IO uint32_t UART1_EN:1;
  687. __I uint32_t RESERVE2:2;
  688. __IO uint32_t PWM01_EN:1;
  689. __IO uint32_t PWM23_EN:1;
  690. __I uint32_t RESERVE3:2;
  691. __IO uint32_t CAN0_EN:1;
  692. __IO uint32_t CAN1_EN:1;
  693. __I uint32_t RESERVE4:1;
  694. __IO uint32_t USBD_EN:1;
  695. __IO uint32_t ADC_EN:1;
  696. __I uint32_t RESERVE5:1;
  697. __IO uint32_t ACMP_EN:1;
  698. __IO uint32_t PS2_EN:1;
  699. } SYSCLK_APBCLK_T;
  700. typedef struct
  701. {
  702. __IO uint32_t HCLK_S:3;
  703. __IO uint32_t STCLK_S:3;
  704. __I uint32_t RESERVE:26;
  705. } SYSCLK_CLKSEL0_T;
  706. typedef struct
  707. {
  708. __IO uint32_t WDG_S:2;
  709. __IO uint32_t ADC_S:2;
  710. __I uint32_t RESERVE1:4;
  711. __IO uint32_t TMR0_S:3;
  712. __I uint32_t RESERVE2:1;
  713. __IO uint32_t TMR1_S:3;
  714. __I uint32_t RESERVE3:1;
  715. __IO uint32_t TMR2_S:3;
  716. __I uint32_t RESERVE4:1;
  717. __IO uint32_t TMR3_S:3;
  718. __I uint32_t RESERVE5:1;
  719. __IO uint32_t UART_S:2;
  720. __IO uint32_t CAN_S:2;
  721. __IO uint32_t PWM10_S:2;
  722. __IO uint32_t PWM32_S:2;
  723. } SYSCLK_CLKSEL1_T;
  724. typedef struct
  725. {
  726. __IO uint32_t HCLK_N:4;
  727. __IO uint32_t USB_N:4;
  728. __IO uint32_t UART_N:4;
  729. __IO uint32_t CAN_N:4;
  730. __IO uint32_t ADC_N:8;
  731. __I uint32_t RESERVE:8;
  732. } SYSCLK_CLKDIV_T;
  733. typedef struct
  734. {
  735. __IO uint32_t FB_DV:9;
  736. __IO uint32_t IN_DV:5;
  737. __IO uint32_t OUT_DV:2;
  738. __IO uint32_t PD:1;
  739. __IO uint32_t BP:1;
  740. __IO uint32_t OE:1;
  741. __IO uint32_t PLL_SRC:1;
  742. __I uint32_t RESERVE:12;
  743. } SYSCLK_PLLCON_T;
  744. typedef struct
  745. {
  746. __IO uint32_t TEST_SEL:8;
  747. __I uint32_t RESERVE:24;
  748. } SYSCLK_TREG_T;
  749. typedef struct
  750. {
  751. SYSCLK_PWRCON_T PWRCON;
  752. SYSCLK_AHBCLK_T AHBCLK;
  753. SYSCLK_APBCLK_T APBCLK;
  754. uint32_t RESERVED0;
  755. SYSCLK_CLKSEL0_T CLKSEL0;
  756. SYSCLK_CLKSEL1_T CLKSEL1;
  757. SYSCLK_CLKDIV_T CLKDIV;
  758. uint32_t RESERVED1;
  759. SYSCLK_PLLCON_T PLLCON;
  760. } SYSCLK_T;
  761. /*---------------------------- Global Controller -----------------------------*/
  762. typedef __I uint32_t GCR_PDID_T;
  763. typedef struct
  764. {
  765. __IO uint32_t RSTS_POR:1;
  766. __IO uint32_t RSTS_PAD:1;
  767. __IO uint32_t RSTS_WDG:1;
  768. __IO uint32_t RSTS_LVR:1;
  769. __IO uint32_t RSTS_BOD:1;
  770. __IO uint32_t RSTS_MCU:1;
  771. __IO uint32_t RSTS_PMU:1;
  772. __I uint32_t RESERVE:25;
  773. } GCR_RSTSRC_T;
  774. typedef struct
  775. {
  776. __IO uint32_t CHIP_RST:1;
  777. __IO uint32_t CPU_RST:1;
  778. __IO uint32_t PDMA_RST:1;
  779. __I uint32_t RESERVE:29;
  780. } GCR_IPRSTC1_T;
  781. typedef struct
  782. {
  783. __I uint32_t RESERVE0:1;
  784. __IO uint32_t GPIO_RST:1;
  785. __IO uint32_t TMR0_RST:1;
  786. __IO uint32_t TMR1_RST:1;
  787. __IO uint32_t TMR2_RST:1;
  788. __IO uint32_t TMR3_RST:1;
  789. __I uint32_t RESERVE1:2;
  790. __IO uint32_t I2C0_RST:1;
  791. __IO uint32_t I2C1_RST:1;
  792. __I uint32_t RESERVE2:2;
  793. __IO uint32_t SPI0_RST:1;
  794. __IO uint32_t SPI1_RST:1;
  795. __IO uint32_t SPI2_RST:1;
  796. __IO uint32_t SPI3_RST:1;
  797. __IO uint32_t UART0_RST:1;
  798. __IO uint32_t UART1_RST:1;
  799. __I uint32_t RESERVE3:2;
  800. __IO uint32_t PWM_RST:1;
  801. __I uint32_t RESERVE4:1;
  802. __IO uint32_t ACMP_RST:1;
  803. __IO uint32_t PS2_RST:1;
  804. __IO uint32_t CAN0_RST:1;
  805. __IO uint32_t CAN1_RST:1;
  806. __I uint32_t RESERVE5:1;
  807. __IO uint32_t USBD_RST:1;
  808. __IO uint32_t ADC_RST:1;
  809. __I uint32_t RESERVE6:3;
  810. } GCR_IPRSTC2_T;
  811. typedef __IO uint32_t GCR_MISCR_T;
  812. typedef struct
  813. {
  814. __IO uint32_t BOD_EN:1;
  815. __IO uint32_t BOD_VL:2;
  816. __IO uint32_t BOD_RSTEN:1;
  817. __IO uint32_t BOD_BYP_EN:1;
  818. __IO uint32_t BOD_LPM:1;
  819. __IO uint32_t BOD_OUT:1;
  820. __IO uint32_t LVR_EN:1;
  821. __IO uint32_t VTEMP_EN:1;
  822. __IO uint32_t LDO_BYP:1;
  823. __I uint32_t RESERVE1:22;
  824. } GCR_BODCR_T;
  825. typedef __IO uint32_t GCR_PORCR_T;
  826. typedef struct
  827. {
  828. __IO uint32_t ADC0:1;
  829. __IO uint32_t ADC1:1;
  830. __IO uint32_t ADC2:1;
  831. __IO uint32_t ADC3:1;
  832. __IO uint32_t ADC4:1;
  833. __IO uint32_t ADC5:1;
  834. __IO uint32_t ADC6:1;
  835. __IO uint32_t ADC7:1;
  836. __IO uint32_t I2C0_SDA:1;
  837. __IO uint32_t I2C0_SCL:1;
  838. __IO uint32_t I2C1_SDA:1;
  839. __IO uint32_t I2C1_SCL:1;
  840. __IO uint32_t PWM0:1;
  841. __IO uint32_t PWM1:1;
  842. __IO uint32_t PWM2:1;
  843. __IO uint32_t PWM3:1;
  844. __IO uint32_t SCHMITT:16;
  845. } GCR_GPAMFP_T;
  846. typedef struct
  847. {
  848. __IO uint32_t UART0_RX:1;
  849. __IO uint32_t UART0_TX:1;
  850. __IO uint32_t UART0_nRTS:1;
  851. __IO uint32_t UART0_nCTS:1;
  852. __IO uint32_t UART1_RX:1;
  853. __IO uint32_t UART1_TX:1;
  854. __IO uint32_t UART1_nRTS:1;
  855. __IO uint32_t UART1_nCTS:1;
  856. __IO uint32_t TM0:1;
  857. __IO uint32_t TM1:1;
  858. __IO uint32_t TM2:1;
  859. __IO uint32_t TM3:1;
  860. __IO uint32_t CPO0:1;
  861. __IO uint32_t CPO1:1;
  862. __IO uint32_t INT0:1;
  863. __IO uint32_t INT1:1;
  864. __IO uint32_t SCHMITT:16;
  865. } GCR_GPBMFP_T;
  866. typedef struct
  867. {
  868. __IO uint32_t SPI0_SS0:1;
  869. __IO uint32_t SPI0_CLK:1;
  870. __IO uint32_t SPI0_MISO0:1;
  871. __IO uint32_t SPI0_MOSI0:1;
  872. __IO uint32_t SPI0_MISO1:1;
  873. __IO uint32_t SPI0_MOSI1:1;
  874. __IO uint32_t CPP0:1;
  875. __IO uint32_t CPN0:1;
  876. __IO uint32_t SPI1_SS0:1;
  877. __IO uint32_t SPI1_CLK:1;
  878. __IO uint32_t SPI1_MISO0:1;
  879. __IO uint32_t SPI1_MOSI0:1;
  880. __IO uint32_t SPI1_MISO1:1;
  881. __IO uint32_t SPI1_MOSI1:1;
  882. __IO uint32_t CPP1:1;
  883. __IO uint32_t CPN1:1;
  884. __IO uint32_t SCHMITT:16;
  885. } GCR_GPCMFP_T;
  886. typedef struct
  887. {
  888. __IO uint32_t SPI2_SS0:1;
  889. __IO uint32_t SPI2_CLK:1;
  890. __IO uint32_t SPI2_MISO0:1;
  891. __IO uint32_t SPI2_MOSI0:1;
  892. __IO uint32_t SPI2_MISO1:1;
  893. __IO uint32_t SPI2_MOSI1:1;
  894. __IO uint32_t CAN0_RX:1;
  895. __IO uint32_t CAN0_TX:1;
  896. __IO uint32_t SPI3_SS0:1;
  897. __IO uint32_t SPI3_CLK:1;
  898. __IO uint32_t SPI3_MISO0:1;
  899. __IO uint32_t SPI3_MOSI0:1;
  900. __IO uint32_t SPI3_MISO1:1;
  901. __IO uint32_t SPI3_MOSI1:1;
  902. __IO uint32_t CAN1_RX:1;
  903. __IO uint32_t CAN1_TX:1;
  904. __IO uint32_t SCHMITT:16;
  905. } GCR_GPDMFP_T;
  906. typedef struct
  907. {
  908. __I uint32_t RESERVE:16;
  909. __IO uint32_t SCHMITT:16;
  910. } GCR_GPEMFP_T;
  911. typedef struct
  912. {
  913. __IO uint32_t SPI0_SS1:1; /* GPB10 */
  914. __IO uint32_t SPI1_SS1:1; /* GPB9 */
  915. __IO uint32_t SPI2_SS1:1; /* GPA7 */
  916. __IO uint32_t SPI3_SS1:1; /* GPB14 */
  917. __I uint32_t RESERVE:28;
  918. } GCR_USPIMFP_T;
  919. typedef __IO uint32_t GCR_REGLOCK_T;
  920. typedef __IO uint32_t GCR_RCADJ_T;
  921. typedef struct
  922. {
  923. __IO uint32_t INTSRC:3;
  924. __I uint32_t RESERVE:29;
  925. } GCR_INTSRC_T;
  926. typedef struct
  927. {
  928. __IO uint32_t NMISEL:5;
  929. __I uint32_t RESERVE0:2;
  930. __IO uint32_t INT_TEST:1;
  931. __I uint32_t RESERVE1:24;
  932. } GCR_NMISEL_T;
  933. typedef __IO uint32_t GCR_MCUIRQ_T;
  934. typedef struct
  935. {
  936. GCR_PDID_T PDID;
  937. GCR_RSTSRC_T RSTSRC;
  938. GCR_IPRSTC1_T IPRSTC1;
  939. GCR_IPRSTC2_T IPRSTC2;
  940. uint32_t RESERVE0;
  941. GCR_MISCR_T MISCR;
  942. GCR_BODCR_T BODCR;
  943. GCR_PORCR_T PORCR;
  944. uint32_t RESERVE1[4];
  945. GCR_GPAMFP_T GPAMFP;
  946. GCR_GPBMFP_T GPBMFP;
  947. GCR_GPCMFP_T GPCMFP;
  948. GCR_GPDMFP_T GPDMFP;
  949. GCR_GPEMFP_T GPEMFP;
  950. uint32_t RESERVE2[3];
  951. GCR_USPIMFP_T USPIMFP;
  952. uint32_t RESERVE3[43];
  953. GCR_REGLOCK_T REGLOCK;
  954. uint32_t RESERVE4[3];
  955. GCR_RCADJ_T RCADJ;
  956. } GCR_T;
  957. typedef struct
  958. {
  959. GCR_INTSRC_T INTSRC;
  960. GCR_NMISEL_T NMISEL;
  961. GCR_MCUIRQ_T MCUIRQ;
  962. } GCR_INT_T;
  963. /*-------------------------- FLASH Memory Controller -------------------------*/
  964. typedef struct
  965. {
  966. __IO uint32_t ISPEN:1;
  967. __IO uint32_t BS:1;
  968. __I uint32_t RESERVE0:3;
  969. __IO uint32_t LDUEN:1;
  970. __IO uint32_t ISPFF:1;
  971. __IO uint32_t SWRST:1;
  972. __IO uint32_t PT:3;
  973. __I uint32_t RESERVE1:1;
  974. __IO uint32_t ET:3;
  975. __I uint32_t RESERVE2:17;
  976. } FMC_ISPCON_T;
  977. typedef __IO uint32_t FMC_ISPADR_T;
  978. typedef __IO uint32_t FMC_ISPDAT_T;
  979. typedef struct
  980. {
  981. __IO uint32_t FCTRL:4;
  982. __IO uint32_t FCEN:1;
  983. __IO uint32_t FOEN:1;
  984. __I uint32_t RESERVE:26;
  985. } FMC_ISPCMD_T;
  986. typedef struct
  987. {
  988. __IO uint32_t ISPGO:1;
  989. __I uint32_t RESERVE:31;
  990. } FMC_ISPTRG_T;
  991. typedef __I uint32_t FMC_DFBADR_T;
  992. typedef struct
  993. {
  994. __IO uint32_t FPSEN:1;
  995. __IO uint32_t FATS:3;
  996. __I uint32_t RESERVE:28;
  997. } FMC_FATCON_T;
  998. typedef struct
  999. {
  1000. FMC_ISPCON_T ISPCON;
  1001. FMC_ISPADR_T ISPADR;
  1002. FMC_ISPDAT_T ISPDAT;
  1003. FMC_ISPCMD_T ISPCMD;
  1004. FMC_ISPTRG_T ISPTRG;
  1005. FMC_DFBADR_T DFBADR;
  1006. FMC_FATCON_T FATCON;
  1007. } FMC_T;
  1008. /*------------------------ PS2 Device Interface Controller -------------------*/
  1009. typedef struct
  1010. {
  1011. __IO uint32_t PS2EN:1;
  1012. __IO uint32_t TXINTEN:1;
  1013. __IO uint32_t RXINTEN:1;
  1014. __IO uint32_t TXFIFO_DEPTH:4;
  1015. __IO uint32_t ACK:1;
  1016. __IO uint32_t CLRFIFO:1;
  1017. __IO uint32_t OVERRIDE:1;
  1018. __IO uint32_t FPS2CLK:1;
  1019. __IO uint32_t FPS2DAT:1;
  1020. __I uint32_t RESERVE:20;
  1021. } PS2_CON_T;
  1022. typedef __IO uint32_t PS2_DATA_T;
  1023. typedef struct
  1024. {
  1025. __IO uint32_t PS2CLK:1;
  1026. __IO uint32_t PS2DATA:1;
  1027. __IO uint32_t FRAMERR:1;
  1028. __IO uint32_t RXPARTY:1;
  1029. __IO uint32_t RXBUSY:1;
  1030. __IO uint32_t TXBUSY:1;
  1031. __IO uint32_t RXOVF:1;
  1032. __IO uint32_t TXEMPTY:1;
  1033. __IO uint32_t BYTEIDX:4;
  1034. __I uint32_t RESERVE:20;
  1035. } PS2_STATUS_T;
  1036. typedef __IO uint32_t PS2_INTID_T;
  1037. typedef struct
  1038. {
  1039. PS2_CON_T PS2CON;
  1040. PS2_DATA_T TXDATA[4];
  1041. PS2_DATA_T RXDATA;
  1042. PS2_STATUS_T STATUS;
  1043. PS2_INTID_T INTID;
  1044. } PS2_T;
  1045. /*---------------------------- CAN Bus Controller ----------------------------*/
  1046. typedef struct
  1047. {
  1048. __IO uint32_t RSTM:1;
  1049. __IO uint32_t LOM:1;
  1050. __I uint32_t RESERVE:30;
  1051. } CAN_OPMODE_T;
  1052. typedef struct
  1053. {
  1054. __IO uint32_t TR:1;
  1055. __IO uint32_t ABRT:1;
  1056. __I uint32_t RESERVE2:3;
  1057. __IO uint32_t OVERFLOAD_EN:1;
  1058. __IO uint32_t WAKEUP_EN:1;
  1059. __IO uint32_t CAN_EN:1;
  1060. __I uint32_t RESERVE:24;
  1061. } CAN_CMD_T;
  1062. typedef struct
  1063. {
  1064. __I uint32_t RESERVE0:3;
  1065. __IO uint32_t TCS:1;
  1066. __IO uint32_t RS:1;
  1067. __IO uint32_t TS:1;
  1068. __IO uint32_t BS:1;
  1069. __IO uint32_t BS2:1;
  1070. __IO uint32_t EAS:1;
  1071. __IO uint32_t EPS:1;
  1072. __I uint32_t RESERVE1:22;
  1073. } CAN_BSR_T;
  1074. typedef struct
  1075. {
  1076. __IO uint32_t RI:1;
  1077. __IO uint32_t TI:1;
  1078. __I uint32_t RESERVE0:2;
  1079. __IO uint32_t WUI:1;
  1080. __I uint32_t RESERVE1:1;
  1081. __IO uint32_t ALI:1;
  1082. __IO uint32_t BEI:1;
  1083. __I uint32_t RESERVE2:24;
  1084. } CAN_INTR_T;
  1085. typedef struct
  1086. {
  1087. __IO uint32_t RIE:1;
  1088. __IO uint32_t TIE:1;
  1089. __I uint32_t RESERVE0:2;
  1090. __IO uint32_t WUIE:1;
  1091. __I uint32_t RESERVE1:1;
  1092. __IO uint32_t ALIE:1;
  1093. __IO uint32_t BEIE:1;
  1094. __I uint32_t RESERVE2:24;
  1095. } CAN_INTEN_T;
  1096. typedef struct
  1097. {
  1098. __IO uint32_t BRP:4;
  1099. __IO uint32_t SJW:2;
  1100. __IO uint32_t TSEG1:5;
  1101. __IO uint32_t TSEG2:4;
  1102. __IO uint32_t SAMP:1;
  1103. __I uint32_t RESERVE2:16;
  1104. } CAN_BTIMR_T;
  1105. typedef struct
  1106. {
  1107. __IO uint32_t BIT_ERR:4;
  1108. __IO uint32_t ACK_ERR:2;
  1109. __IO uint32_t CRC_ERR:5;
  1110. __IO uint32_t FORM_ERR:4;
  1111. __IO uint32_t STUFF_ERR:1;
  1112. __I uint32_t RESERVE:16;
  1113. } CAN_ERRCR_T;
  1114. typedef struct
  1115. {
  1116. __IO uint32_t RECNT:8;
  1117. __I uint32_t RESERVE:24;
  1118. } CAN_RECNTR_T;
  1119. typedef struct
  1120. {
  1121. __IO uint32_t TECNT:8;
  1122. __I uint32_t RESERVE:24;
  1123. } CAN_TECNTR_T;
  1124. typedef struct
  1125. {
  1126. __IO uint32_t TXDLC:6;
  1127. __IO uint32_t TXRTR:1;
  1128. __IO uint32_t TXFF:1;
  1129. __I uint32_t RESERVE:24;
  1130. } CAN_TXFINFO_T;
  1131. typedef struct
  1132. {
  1133. __I uint32_t RESERVE:3;
  1134. __IO uint32_t TXID:29;
  1135. } CAN_TXID_T;
  1136. typedef __IO uint32_t CAN_TXDATA_T;
  1137. typedef struct
  1138. {
  1139. __IO uint32_t RXDLC:4;
  1140. __I uint32_t RESERVE0:2;
  1141. __IO uint32_t RXRTR:1;
  1142. __IO uint32_t RXIDE:1;
  1143. __I uint32_t RESERVE1:24;
  1144. } CAN_RXFINFO_T;
  1145. typedef struct
  1146. {
  1147. __I uint32_t RESERVE:3;
  1148. __IO uint32_t RXID:29;
  1149. } CAN_RXID_T;
  1150. typedef __IO uint32_t CAN_RXDATA_T;
  1151. typedef struct
  1152. {
  1153. __I uint32_t RESERVE:3;
  1154. __IO uint32_t ACR:29;
  1155. } CAN_ACR_T;
  1156. typedef struct
  1157. {
  1158. __I uint32_t RESERVE:3;
  1159. __IO uint32_t AMR:29;
  1160. } CAN_AMR_T;
  1161. typedef struct
  1162. {
  1163. __I uint32_t RESERVE:32;
  1164. } CAN_RESERVE_T;
  1165. typedef struct
  1166. {
  1167. CAN_OPMODE_T OPMODE;
  1168. CAN_CMD_T CMD;
  1169. CAN_BSR_T BSR;
  1170. CAN_INTR_T INTR;
  1171. CAN_INTEN_T INTEN;
  1172. CAN_BTIMR_T BTIMR;
  1173. CAN_RESERVE_T PROTECT[2];
  1174. CAN_ERRCR_T ERRCR;
  1175. CAN_RESERVE_T PROTECT1;
  1176. CAN_RECNTR_T RECNTR;
  1177. CAN_TECNTR_T TECNTR;
  1178. CAN_TXFINFO_T TXFINFO;
  1179. CAN_TXID_T TXID;
  1180. CAN_TXDATA_T TXDATA[2];
  1181. CAN_RXFINFO_T RXFINFO;
  1182. CAN_RXID_T RXID;
  1183. CAN_RXDATA_T RX_DATA[2];
  1184. CAN_ACR_T ACR;
  1185. CAN_AMR_T AMR;
  1186. } CAN_T;
  1187. /*--------------------------- USB Device Controller --------------------------*/
  1188. typedef struct
  1189. {
  1190. __IO uint32_t BUS:1;
  1191. __IO uint32_t USB:1;
  1192. __IO uint32_t FLD:1;
  1193. __IO uint32_t WAKEUP:1;
  1194. __I uint32_t RESERVE0:4;
  1195. __IO uint32_t WAKEUP_EN:1;
  1196. __I uint32_t RESERVE1:6;
  1197. __IO uint32_t INNAK_EN:1;
  1198. __I uint32_t RESERVE2:16;
  1199. } USBD_IEF_T;
  1200. typedef struct
  1201. {
  1202. __IO uint32_t BUS:1;
  1203. __IO uint32_t USB:1;
  1204. __IO uint32_t FLD:1;
  1205. __IO uint32_t WAKEUP:1;
  1206. __I uint32_t RESERVE0:12;
  1207. __IO uint32_t EPTF:6;
  1208. __I uint32_t RESERVE1:9;
  1209. __IO uint32_t SETUP:1;
  1210. } USBD_EVF_T;
  1211. typedef struct
  1212. {
  1213. __IO uint32_t FADDR:7;
  1214. __I uint32_t RESERVE:25;
  1215. } USBD_FADDR_T;
  1216. typedef struct
  1217. {
  1218. __I uint32_t RESERVE0:7;
  1219. __IO uint32_t OVERRUN:1;
  1220. __IO uint32_t STS0:3;
  1221. __IO uint32_t STS1:3;
  1222. __IO uint32_t STS2:3;
  1223. __IO uint32_t STS3:3;
  1224. __IO uint32_t STS4:3;
  1225. __IO uint32_t STS5:3;
  1226. __I uint32_t RESERVE1:6;
  1227. } USBD_STS_T;
  1228. typedef struct
  1229. {
  1230. __IO uint32_t USBRST:1;
  1231. __IO uint32_t SUSPEND:1;
  1232. __IO uint32_t RESUME:1;
  1233. __IO uint32_t TIMEOUT:1;
  1234. __IO uint32_t PHY_EN:1;
  1235. __IO uint32_t RWAKEUP:1;
  1236. __I uint32_t RESERVE0:1;
  1237. __IO uint32_t USB_EN:1;
  1238. __IO uint32_t DPPU_EN:1;
  1239. __IO uint32_t PDB:1;
  1240. __I uint32_t RESERVE1:22;
  1241. } USBD_ATTR_T;
  1242. typedef struct
  1243. {
  1244. __IO uint32_t FLODET:1;
  1245. __I uint32_t RESERVE:31;
  1246. } USBD_FLODET_T;
  1247. typedef struct
  1248. {
  1249. __I uint32_t RESERVE0:3;
  1250. __IO uint32_t BUFSEG:6;
  1251. __I uint32_t RESERVE:23;
  1252. } USBD_BUFSEG_T;
  1253. typedef struct
  1254. {
  1255. __IO uint32_t MXPLD:9;
  1256. __I uint32_t RESERVE:23;
  1257. } USBD_MXPLD_T;
  1258. typedef struct
  1259. {
  1260. __IO uint32_t EPT:4;
  1261. __IO uint32_t ISOCH:1;
  1262. __IO uint32_t STATE:2;
  1263. __IO uint32_t DSQ:1;
  1264. __I uint32_t RESERVE0:1;
  1265. __IO uint32_t STALL_CTL:1;
  1266. __I uint32_t RESERVE1:22;
  1267. } USBD_CFG_T;
  1268. typedef struct
  1269. {
  1270. __IO uint32_t CFGP:1;
  1271. __IO uint32_t STALL:1;
  1272. __I uint32_t RESERVE:30;
  1273. } USBD_CFGP_T;
  1274. typedef struct
  1275. {
  1276. __IO uint32_t DRVSE0:1;
  1277. __I uint32_t RESERVE:31;
  1278. } USBD_DRVSE0_T;
  1279. typedef struct
  1280. {
  1281. __IO uint32_t BISTEN:1;
  1282. __IO uint32_t FINISH:1;
  1283. __IO uint32_t BISTFAIL:1;
  1284. __I uint32_t RESERVE:29;
  1285. } USBD_BIST_T;
  1286. typedef struct
  1287. {
  1288. __IO uint32_t PDMA_RW:1;
  1289. __IO uint32_t PDMA_EN:1;
  1290. __I uint32_t RESERVE:30;
  1291. } USBD_PDMA_T;
  1292. typedef struct
  1293. {
  1294. USBD_BUFSEG_T BUFSEG;
  1295. USBD_MXPLD_T MXPLD;
  1296. USBD_CFG_T CFG;
  1297. USBD_CFGP_T CFGP;
  1298. } USBD_EP_T;
  1299. typedef struct
  1300. {
  1301. USBD_IEF_T IEF;
  1302. USBD_EVF_T EVF;
  1303. USBD_FADDR_T FADDR;
  1304. USBD_STS_T STS;
  1305. USBD_ATTR_T ATTR;
  1306. USBD_FLODET_T FLODET;
  1307. USBD_BUFSEG_T BUFSEG;
  1308. uint32_t RESERVE0;
  1309. USBD_EP_T EP[6];
  1310. uint32_t RESERVE1[4];
  1311. USBD_DRVSE0_T DRVSE0;
  1312. uint32_t RESERVE2[3];
  1313. USBD_BIST_T BIST;
  1314. USBD_PDMA_T PDMA;
  1315. } USBD_T;
  1316. /*------------------------------ PDMA Controller -----------------------------*/
  1317. typedef struct
  1318. {
  1319. __IO uint32_t PDMACEN:1;
  1320. __IO uint32_t SW_RST:1;
  1321. __IO uint32_t MODE_SEL:2;
  1322. __IO uint32_t SAD_SEL:2;
  1323. __IO uint32_t DAD_SEL:2;
  1324. __I uint32_t RESERVE0:4;
  1325. __IO uint32_t WAR_BCR_SEL:4;
  1326. __I uint32_t RESERVE1:3;
  1327. __IO uint32_t APB_TWS:2;
  1328. __I uint32_t RESERVE2:2;
  1329. __IO uint32_t TRIG_EN:1;
  1330. __I uint32_t RESERVE3:8;
  1331. } PDMA_CSR_T;
  1332. typedef __IO uint32_t PDMA_SAR_T;
  1333. typedef __IO uint32_t PDMA_DAR_T;
  1334. typedef __IO uint32_t PDMA_BCR_T;
  1335. typedef __IO uint32_t PDMA_CSAR_T;
  1336. typedef __IO uint32_t PDMA_CDAR_T;
  1337. typedef struct
  1338. {
  1339. __IO uint32_t CBCR:24;
  1340. __I uint32_t RESERVE:8;
  1341. } PDMA_CBCR_T;
  1342. typedef struct
  1343. {
  1344. __IO uint32_t TABORT_IE:1;
  1345. __IO uint32_t BLKD_IE:1;
  1346. __IO uint32_t WAR_IE:1;
  1347. __I uint32_t RESERVE:29;
  1348. } PDMA_IER_T;
  1349. //typedef __IO uint32_t PDMA_ISR_T;
  1350. typedef struct
  1351. {
  1352. __IO uint32_t TABORT_IF:1;
  1353. __IO uint32_t BLKD_IF:1;
  1354. __I uint32_t RESERVE:6;
  1355. __IO uint32_t WAR_IF:4;
  1356. __I uint32_t RESERVE1:3;
  1357. __IO uint32_t BUSY:1;
  1358. __I uint32_t RESERVE2:15;
  1359. __IO uint32_t INTR:1;
  1360. } PDMA_ISR_T;
  1361. typedef __IO uint32_t PDMA_SBUF_T;
  1362. typedef struct
  1363. {
  1364. __IO uint32_t PDMA_RST:1;
  1365. __I uint32_t RESERVE0:7;
  1366. __IO uint32_t HCLK0_EN:1;
  1367. __IO uint32_t HCLK1_EN:1;
  1368. __IO uint32_t HCLK2_EN:1;
  1369. __IO uint32_t HCLK3_EN:1;
  1370. __IO uint32_t HCLK4_EN:1;
  1371. __IO uint32_t HCLK5_EN:1;
  1372. __IO uint32_t HCLK6_EN:1;
  1373. __IO uint32_t HCLK7_EN:1;
  1374. __IO uint32_t HCLK8_EN:1;
  1375. __IO uint32_t HCLK9_EN:1;
  1376. __IO uint32_t HCLK10_EN:1;
  1377. __IO uint32_t HCLK11_EN:1;
  1378. __I uint32_t RESERVE1:12;
  1379. } PDMA_GCRCSR_T;
  1380. typedef struct
  1381. {
  1382. __IO uint32_t UART0_RXSEL:4;
  1383. __IO uint32_t UART0_TXSEL:4;
  1384. __IO uint32_t UART1_RXSEL:4;
  1385. __IO uint32_t UART1_TXSEL:4;
  1386. __IO uint32_t USBD_RXSEL:4;
  1387. __IO uint32_t USBD_TXSEL:4;
  1388. __IO uint32_t ADC_RXSEL:4;
  1389. __IO uint32_t ADC_TXSEL:4;
  1390. } PDMA_PDSSR1_T;
  1391. typedef struct
  1392. {
  1393. __IO uint32_t SPI0_RXSEL:4;
  1394. __IO uint32_t SPI0_TXSEL:4;
  1395. __IO uint32_t SPI1_RXSEL:4;
  1396. __IO uint32_t SPI1_TXSEL:4;
  1397. __IO uint32_t SPI2_RXSEL:4;
  1398. __IO uint32_t SPI2_TXSEL:4;
  1399. __IO uint32_t SPI3_RXSEL:4;
  1400. __IO uint32_t SPI3_TXSEL:4;
  1401. } PDMA_PDSSR0_T;
  1402. typedef __IO uint32_t PDMA_GCRISR_T;
  1403. typedef struct
  1404. {
  1405. PDMA_GCRCSR_T GCRCSR;
  1406. PDMA_PDSSR0_T PDSSR0;
  1407. PDMA_PDSSR1_T PDSSR1;
  1408. PDMA_GCRISR_T GCRISR;
  1409. } PDMA_GCR_T;
  1410. typedef struct
  1411. {
  1412. PDMA_CSR_T CSR;
  1413. PDMA_SAR_T SAR;
  1414. PDMA_DAR_T DAR;
  1415. PDMA_BCR_T BCR;
  1416. uint32_t POINT;
  1417. PDMA_CSAR_T CSAR;
  1418. PDMA_CDAR_T CDAR;
  1419. PDMA_CBCR_T CBCR;
  1420. PDMA_IER_T IER;
  1421. PDMA_ISR_T ISR;
  1422. PDMA_SBUF_T SBUF[4];
  1423. } PDMA_T;
  1424. /*----------------------------- PWM Controller -------------------------------*/
  1425. typedef struct
  1426. {
  1427. __IO uint32_t CP0:8;
  1428. __IO uint32_t CP1:8;
  1429. __IO uint32_t DZI0:8;
  1430. __IO uint32_t DZI1:8;
  1431. } PWM_PPR_T;
  1432. typedef struct
  1433. {
  1434. __IO uint32_t CSR0:3;
  1435. __I uint32_t RESERVE0:1;
  1436. __IO uint32_t CSR1:3;
  1437. __I uint32_t RESERVE1:1;
  1438. __IO uint32_t CSR2:3;
  1439. __I uint32_t RESERVE2:1;
  1440. __IO uint32_t CSR3:3;
  1441. __I uint32_t RESERVE:17;
  1442. } PWM_CSR_T;
  1443. typedef struct
  1444. {
  1445. __IO uint32_t CH0EN:1;
  1446. __I uint32_t RESERVE0:1;
  1447. __IO uint32_t CH0INV:1;
  1448. __IO uint32_t CH0MOD:1;
  1449. __IO uint32_t DZEN0:1;
  1450. __IO uint32_t DZEN1:1;
  1451. __I uint32_t RESERVE1:2;
  1452. __IO uint32_t CH1EN:1;
  1453. __I uint32_t RESERVE2:1;
  1454. __IO uint32_t CH1INV:1;
  1455. __IO uint32_t CH1MOD:1;
  1456. __I uint32_t RESERVE3:4;
  1457. __IO uint32_t CH2EN:1;
  1458. __I uint32_t RESERVE4:1;
  1459. __IO uint32_t CH2INV:1;
  1460. __IO uint32_t CH2MOD:1;
  1461. __I uint32_t RESERVE5:4;
  1462. __IO uint32_t CH3EN:1;
  1463. __I uint32_t RESERVE6:1;
  1464. __IO uint32_t CH3INV:1;
  1465. __IO uint32_t CH3MOD:1;
  1466. __I uint32_t RESERVE7:4;
  1467. } PWM_PCR_T;
  1468. typedef __IO uint32_t PWM_CNR_T;
  1469. typedef __IO uint32_t PWM_CMR_T;
  1470. typedef __IO uint32_t PWM_PDR_T;
  1471. typedef struct
  1472. {
  1473. __IO uint32_t PWMIE0:1;
  1474. __IO uint32_t PWMIE1:1;
  1475. __IO uint32_t PWMIE2:1;
  1476. __IO uint32_t PWMIE3:1;
  1477. __I uint32_t RESERVE:28;
  1478. } PWM_PIER_T;
  1479. typedef struct
  1480. {
  1481. __IO uint32_t PWMIF0:1;
  1482. __IO uint32_t PWMIF1:1;
  1483. __IO uint32_t PWMIF2:1;
  1484. __IO uint32_t PWMIF3:1;
  1485. __I uint32_t RESERVE:28;
  1486. } PWM_PIIR_T;
  1487. typedef struct
  1488. {
  1489. __IO uint32_t INV0:1;
  1490. __IO uint32_t CRL_IE0:1;
  1491. __IO uint32_t CFL_IE0:1;
  1492. __IO uint32_t CAPCH0EN:1;
  1493. __IO uint32_t CAPIF0:1;
  1494. __I uint32_t RESERVE0:1;
  1495. __IO uint32_t CRLRI0:1;
  1496. __IO uint32_t CFLRI0:1;
  1497. __I uint32_t RESERVE1:8;
  1498. __IO uint32_t INV1:1;
  1499. __IO uint32_t CRL_IE1:1;
  1500. __IO uint32_t CFL_IE1:1;
  1501. __IO uint32_t CAPCH1EN:1;
  1502. __IO uint32_t CAPIF1:1;
  1503. __I uint32_t RESERVE2:1;
  1504. __IO uint32_t CRLRI1:1;
  1505. __IO uint32_t CFLRI1:1;
  1506. __I uint32_t RESERVE3:8;
  1507. } PWM_CCR0_T;
  1508. typedef struct
  1509. {
  1510. __IO uint32_t INV2:1;
  1511. __IO uint32_t CRL_IE2:1;
  1512. __IO uint32_t CFL_IE2:1;
  1513. __IO uint32_t CAPCH2EN:1;
  1514. __IO uint32_t CAPIF2:1;
  1515. __I uint32_t RESERVE0:1;
  1516. __IO uint32_t CRLRI2:1;
  1517. __IO uint32_t CFLRI2:1;
  1518. __I uint32_t RESERVE1:8;
  1519. __IO uint32_t INV3:1;
  1520. __IO uint32_t CRL_IE3:1;
  1521. __IO uint32_t CFL_IE3:1;
  1522. __IO uint32_t CAPCH3EN:1;
  1523. __IO uint32_t CAPIF3:1;
  1524. __I uint32_t RESERVE2:1;
  1525. __IO uint32_t CRLRI3:1;
  1526. __IO uint32_t CFLRI3:1;
  1527. __I uint32_t RESERVE3:8;
  1528. } PWM_CCR1_T;
  1529. typedef __IO uint32_t PWM_CRLR_T;
  1530. typedef __IO uint32_t PWM_CFLR_T;
  1531. typedef __IO uint32_t PWM_CAPENR_T;
  1532. typedef struct
  1533. {
  1534. __IO uint32_t PWM0:1;
  1535. __IO uint32_t PWM1:1;
  1536. __IO uint32_t PWM2:1;
  1537. __IO uint32_t PWM3:1;
  1538. __I uint32_t RESERVE:28;
  1539. } PWM_POE_T;
  1540. typedef struct
  1541. {
  1542. PWM_PPR_T PPR;
  1543. PWM_CSR_T CSR;
  1544. PWM_PCR_T PCR;
  1545. PWM_CNR_T CNR0;
  1546. PWM_CMR_T CMR0;
  1547. PWM_PDR_T PDR0;
  1548. PWM_CNR_T CNR1;
  1549. PWM_CMR_T CMR1;
  1550. PWM_PDR_T PDR1;
  1551. PWM_CNR_T CNR2;
  1552. PWM_CMR_T CMR2;
  1553. PWM_PDR_T PDR2;
  1554. PWM_CNR_T CNR3;
  1555. PWM_CMR_T CMR3;
  1556. PWM_PDR_T PDR3;
  1557. __I uint32_t RESERVE0;
  1558. PWM_PIER_T PIER;
  1559. PWM_PIIR_T PIIR;
  1560. __I uint32_t RESERVE1[2];
  1561. PWM_CCR0_T CCR0;
  1562. PWM_CCR1_T CCR1;
  1563. PWM_CRLR_T CRLR0;
  1564. PWM_CFLR_T CFLR0;
  1565. PWM_CRLR_T CRLR1;
  1566. PWM_CFLR_T CFLR1;
  1567. PWM_CRLR_T CRLR2;
  1568. PWM_CFLR_T CFLR2;
  1569. PWM_CRLR_T CRLR3;
  1570. PWM_CFLR_T CFLR3;
  1571. PWM_CAPENR_T CAPENR;
  1572. PWM_POE_T POE;
  1573. } PWM_T;
  1574. /******************************************************************************/
  1575. /* Peripheral memory map */
  1576. /******************************************************************************/
  1577. /* Peripheral and SRAM base address */
  1578. #define FLASH_BASE (( uint32_t)0x00000000)
  1579. #define SRAM_BASE (( uint32_t)0x20000000)
  1580. #define AHB_BASE (( uint32_t)0x50000000)
  1581. #define APB1_BASE (( uint32_t)0x40000000)
  1582. #define APB2_BASE (( uint32_t)0x40100000)
  1583. /* Peripheral memory map */
  1584. #define GPIO_BASE (AHB_BASE + 0x4000)
  1585. #define GPIOA_BASE (GPIO_BASE )
  1586. #define GPIOB_BASE (GPIO_BASE + 0x0040)
  1587. #define GPIOC_BASE (GPIO_BASE + 0x0080)
  1588. #define GPIOD_BASE (GPIO_BASE + 0x00C0)
  1589. #define GPIOE_BASE (GPIO_BASE + 0x0100)
  1590. #define GPIO_DBNCECON_BASE (GPIO_BASE + 0x0180)
  1591. #define UART0_BASE (APB1_BASE + 0x50000)
  1592. #define UART1_BASE (APB2_BASE + 0x50000)
  1593. #define TIMER0_BASE (APB1_BASE + 0x10000)
  1594. #define TIMER1_BASE (APB1_BASE + 0x10020)
  1595. #define TIMER2_BASE (APB2_BASE + 0x10000)
  1596. #define TIMER3_BASE (APB2_BASE + 0x10020)
  1597. #define WDT_BASE (APB1_BASE + 0x4000)
  1598. #define SPI0_BASE (APB1_BASE + 0x30000)
  1599. #define SPI1_BASE (APB1_BASE + 0x34000)
  1600. #define SPI2_BASE (APB2_BASE + 0x30000)
  1601. #define SPI3_BASE (APB2_BASE + 0x34000)
  1602. #define I2C0_BASE (APB1_BASE + 0x20000)
  1603. #define I2C1_BASE (APB2_BASE + 0x20000)
  1604. #define RTC_BASE (APB1_BASE + 0x08000)
  1605. #define ADC_BASE (APB1_BASE + 0xE0000)
  1606. #define ADC_ADSR (ADC_BASE + 0x30)
  1607. #define ACMP_BASE (APB1_BASE + 0xD0000)
  1608. #define SYSCLK_BASE (AHB_BASE + 0x00200)
  1609. #define GCR_BASE (AHB_BASE + 0x00000)
  1610. #define INT_BASE (AHB_BASE + 0x00300)
  1611. #define FMC_BASE (AHB_BASE + 0x0C000)
  1612. #define PS2_BASE (APB2_BASE + 0x00000)
  1613. #define CAN0_BASE (APB2_BASE + 0x80000)
  1614. #define CAN1_BASE (APB2_BASE + 0x84000)
  1615. #define USBD_BASE (APB1_BASE + 0x60000)
  1616. #define PDMA0_BASE (AHB_BASE + 0x08000)
  1617. #define PDMA1_BASE (AHB_BASE + 0x08100)
  1618. #define PDMA2_BASE (AHB_BASE + 0x08200)
  1619. #define PDMA3_BASE (AHB_BASE + 0x08300)
  1620. #define PDMA4_BASE (AHB_BASE + 0x08400)
  1621. #define PDMA5_BASE (AHB_BASE + 0x08500)
  1622. #define PDMA6_BASE (AHB_BASE + 0x08600)
  1623. #define PDMA7_BASE (AHB_BASE + 0x08700)
  1624. #define PDMA8_BASE (AHB_BASE + 0x08800)
  1625. #define PDMA9_BASE (AHB_BASE + 0x08900)
  1626. #define PDMA10_BASE (AHB_BASE + 0x08A00)
  1627. #define PDMA11_BASE (AHB_BASE + 0x08B00)
  1628. #define PDMA_GCR_BASE (AHB_BASE + 0x08F00)
  1629. #define PWM_BASE (APB1_BASE + 0x40000)
  1630. /******************************************************************************/
  1631. /* Peripheral declaration */
  1632. /******************************************************************************/
  1633. #define GPIOA ((GPIO_T *) GPIOA_BASE)
  1634. #define GPIOB ((GPIO_T *) GPIOB_BASE)
  1635. #define GPIOC ((GPIO_T *) GPIOC_BASE)
  1636. #define GPIOD ((GPIO_T *) GPIOD_BASE)
  1637. #define GPIOE ((GPIO_T *) GPIOE_BASE)
  1638. #define GPIO_DBNCECON ((GPIO_DBNCECON_T *) GPIO_DBNCECON_BASE)
  1639. #define UART0 ((UART_T *) UART0_BASE)
  1640. #define UART1 ((UART_T *) UART1_BASE)
  1641. #define TIMER0 ((TIMER_T *) TIMER0_BASE)
  1642. #define TIMER1 ((TIMER_T *) TIMER1_BASE)
  1643. #define TIMER2 ((TIMER_T *) TIMER2_BASE)
  1644. #define TIMER3 ((TIMER_T *) TIMER3_BASE)
  1645. #define WDT ((WDT_T *) WDT_BASE)
  1646. #define SPI0 ((SPI_T *) SPI0_BASE)
  1647. #define SPI1 ((SPI_T *) SPI1_BASE)
  1648. #define SPI2 ((SPI_T *) SPI2_BASE)
  1649. #define SPI3 ((SPI_T *) SPI3_BASE)
  1650. #define I2C0 ((I2C_T *) I2C0_BASE)
  1651. #define I2C1 ((I2C_T *) I2C1_BASE)
  1652. #define RTC ((RTC_T *) RTC_BASE)
  1653. #define ADC ((ADC_T *) ADC_BASE)
  1654. #define ACMP ((ACMP_T *) ACMP_BASE)
  1655. #define SYSCLK ((SYSCLK_T *) SYSCLK_BASE)
  1656. #define SYS ((GCR_T *) GCR_BASE)
  1657. #define SYSINT ((GCR_INT_T *) INT_BASE)
  1658. #define FMC ((FMC_T *) FMC_BASE)
  1659. #define PS2 ((PS2_T *) PS2_BASE)
  1660. #define CAN0 ((CAN_T *) CAN0_BASE)
  1661. #define CAN1 ((CAN_T *) CAN1_BASE)
  1662. #define USBD ((USBD_T *) USBD_BASE)
  1663. #define PDMA0 ((PDMA_T *) PDMA0_BASE)
  1664. #define PDMA1 ((PDMA_T *) PDMA1_BASE)
  1665. #define PDMA2 ((PDMA_T *) PDMA2_BASE)
  1666. #define PDMA3 ((PDMA_T *) PDMA3_BASE)
  1667. #define PDMA4 ((PDMA_T *) PDMA4_BASE)
  1668. #define PDMA5 ((PDMA_T *) PDMA5_BASE)
  1669. #define PDMA6 ((PDMA_T *) PDMA6_BASE)
  1670. #define PDMA7 ((PDMA_T *) PDMA7_BASE)
  1671. #define PDMA8 ((PDMA_T *) PDMA8_BASE)
  1672. #define PDMA9 ((PDMA_T *) PDMA9_BASE)
  1673. #define PDMA10 ((PDMA_T *) PDMA10_BASE)
  1674. #define PDMA11 ((PDMA_T *) PDMA11_BASE)
  1675. #define PDMA_GCR ((PDMA_GCR_T *) PDMA_GCR_BASE)
  1676. #define PWM ((PWM_T *) PWM_BASE)
  1677. #define UNLOCKREG(x) *((__IO uint32_t *)(GCR_BASE + 0x100)) = 0x59;*((__IO uint32_t *)(GCR_BASE + 0x100)) = 0x16;*((__IO uint32_t *)(GCR_BASE + 0x100)) = 0x88
  1678. #define LOCKREG(x) *((__IO uint32_t *)(GCR_BASE + 0x100)) = 0x00;
  1679. #define REGCOPY(dest, src) *((uint32_t *)&(dest)) = *((uint32_t *)&(src))
  1680. #define CLEAR(dest) *((uint32_t *)&(dest)) = 0
  1681. //=============================================================================
  1682. typedef volatile unsigned char vu8;
  1683. typedef volatile unsigned long vu32;
  1684. typedef volatile unsigned short vu16;
  1685. #define M8(adr) (*((vu8 *) (adr)))
  1686. #define M16(adr) (*((vu16 *) (adr)))
  1687. #define M32(adr) (*((vu32 *) (adr)))
  1688. #define outpw(port,value) *((volatile unsigned int *)(port))=value
  1689. #define inpw(port) (*((volatile unsigned int *)(port)))
  1690. #define outpb(port,value) *((volatile unsigned char *)(port))=value
  1691. #define inpb(port) (*((volatile unsigned char *)(port)))
  1692. #define outps(port,value) *((volatile unsigned short *)(port))=value
  1693. #define inps(port) (*((volatile unsigned short *)(port)))
  1694. #define E_SUCCESS 0
  1695. #define NULL 0
  1696. #define TRUE 1
  1697. #define FALSE 0
  1698. #define ENABLE 1
  1699. #define DISABLE 0
  1700. // Define one bit mask
  1701. #define BIT0 0x00000001
  1702. #define BIT1 0x00000002
  1703. #define BIT2 0x00000004
  1704. #define BIT3 0x00000008
  1705. #define BIT4 0x00000010
  1706. #define BIT5 0x00000020
  1707. #define BIT6 0x00000040
  1708. #define BIT7 0x00000080
  1709. #define BIT8 0x00000100
  1710. #define BIT9 0x00000200
  1711. #define BIT10 0x00000400
  1712. #define BIT11 0x00000800
  1713. #define BIT12 0x00001000
  1714. #define BIT13 0x00002000
  1715. #define BIT14 0x00004000
  1716. #define BIT15 0x00008000
  1717. #define BIT16 0x00010000
  1718. #define BIT17 0x00020000
  1719. #define BIT18 0x00040000
  1720. #define BIT19 0x00080000
  1721. #define BIT20 0x00100000
  1722. #define BIT21 0x00200000
  1723. #define BIT22 0x00400000
  1724. #define BIT23 0x00800000
  1725. #define BIT24 0x01000000
  1726. #define BIT25 0x02000000
  1727. #define BIT26 0x04000000
  1728. #define BIT27 0x08000000
  1729. #define BIT28 0x10000000
  1730. #define BIT29 0x20000000
  1731. #define BIT30 0x40000000
  1732. #define BIT31 0x80000000
  1733. #endif