timer_reg.h 86 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069
  1. /**************************************************************************//**
  2. * @file timer_reg.h
  3. * @brief TIMER register definition header file
  4. *
  5. * SPDX-License-Identifier: Apache-2.0
  6. * @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved.
  7. *****************************************************************************/
  8. #ifndef __TIMER_REG_H__
  9. #define __TIMER_REG_H__
  10. #if defined ( __CC_ARM )
  11. #pragma anon_unions
  12. #endif
  13. /**
  14. @addtogroup REGISTER Control Register
  15. @{
  16. */
  17. /**
  18. @addtogroup TIMER Timer Controller(TIMER)
  19. Memory Mapped Structure for TIMER Controller
  20. @{ */
  21. typedef struct
  22. {
  23. /**
  24. * @var TIMER_T::CTL
  25. * Offset: 0x00 Timer Control Register
  26. * ---------------------------------------------------------------------------------------------------
  27. * |Bits |Field |Descriptions
  28. * | :----: | :----: | :---- |
  29. * |[7:0] |PSC |Prescale Counter
  30. * | | |Timer input clock or event source is divided by (PSC+1) before it is fed to the timer up counter
  31. * | | |If this field is 0 (PSC = 0), then there is no scaling.
  32. * | | |Note: Update prescale counter value will reset internal 8-bit prescale counter and 24-bit up counter value.
  33. * |[19] |INTRGEN |Inter-timer Trigger Mode Enable Bit
  34. * | | |Setting this bit will enable the inter-timer trigger capture function.
  35. * | | |The Timer0/2/4/6/8/10 will be in event counter mode and counting with external clock source or event
  36. * | | |Also, Timer1/3/5/7/9/11 will be in trigger-counting mode of capture function.
  37. * | | |0 = Inter-Timer Trigger Capture mode Disabled.
  38. * | | |1 = Inter-Timer Trigger Capture mode Enabled.
  39. * | | |Note: For Timer1/3/5/7/9/11, this bit is ignored and the read back value is always 0.
  40. * |[20] |PERIOSEL |Periodic Mode Behavior Selection Enable Bit
  41. * | | |0 = The behavior selection in periodic mode is Disabled.
  42. * | | |When user updates CMPDAT while timer is running in periodic mode,
  43. * | | |CNT will be reset to default value.
  44. * | | |1 = The behavior selection in periodic mode is Enabled.
  45. * | | |When user update CMPDAT while timer is running in periodic mode, the limitations as bellows list,
  46. * | | |If updated CMPDAT value > CNT, CMPDAT will be updated and CNT keep running continually.
  47. * | | |If updated CMPDAT value = CNT, timer time-out interrupt will be asserted immediately.
  48. * | | |If updated CMPDAT value < CNT, CNT will be reset to default value.
  49. * |[21] |TGLPINSEL |Toggle-output Pin Select
  50. * | | |0 = Toggle mode output to TMx (Timer Event Counter Pin).
  51. * | | |1 = Toggle mode output to TMx_EXT (Timer External Capture Pin).
  52. * |[22] |CAPSRC |Capture Pin Source Selection
  53. * | | |0 = Capture Function source is from TMx_EXT (x= 0~11) pin.
  54. * | | |1 = Capture Function source is from internal clock source (HIRC 12M, LIRC) or external clock (HXT, LXT).
  55. * | | |Note: When CAPSRC = 1, user can set ICAPSSEL (TIMERx_EXTCTL[10:8]) to decide which clock is as timer capture source.
  56. * |[23] |WKEN |Wake-up Function Enable Bit
  57. * | | |If this bit is set to 1, while timer interrupt flag TIF (TIMERx_INTSTS[0]) is 1 and INTEN (TIMERx_CTL[29]) is enabled, the timer interrupt signal will generate a wake-up trigger event to CPU.
  58. * | | |0 = Wake-up function Disabled if timer interrupt signal generated.
  59. * | | |1 = Wake-up function Enabled if timer interrupt signal generated.
  60. * |[24] |EXTCNTEN |Event Counter Mode Enable Bit
  61. * | | |This bit is for external counting pin function enabled.
  62. * | | |0 = Event counter mode Disabled.
  63. * | | |1 = Event counter mode Enabled.
  64. * | | |Note: When timer is used as an event counter, this bit should be set to 1 and select PCLK as timer clock source.
  65. * |[25] |ACTSTS |Timer Active Status Bit (Read Only)
  66. * | | |This bit indicates the 24-bit up counter status.
  67. * | | |0 = 24-bit up counter is not active.
  68. * | | |1 = 24-bit up counter is active.
  69. * | | |Note: This bit may active when CNT 0 transition to CNT 1.
  70. * |[28:27] |OPMODE |Timer Counting Mode Select
  71. * | | |00 = The Timer controller is operated in One-shot mode.
  72. * | | |01 = The Timer controller is operated in Periodic mode.
  73. * | | |10 = The Timer controller is operated in Toggle-output mode.
  74. * | | |11 = The Timer controller is operated in Continuous Counting mode.
  75. * |[29] |INTEN |Timer Interrupt Enable Bit
  76. * | | |0 = Timer time-out interrupt Disabled.
  77. * | | |1 = Timer time-out interrupt Enabled.
  78. * | | |Note: If this bit is enabled, when the timer time-out interrupt flag TIF is set to 1, the timer interrupt signal is generated and inform to CPU.
  79. * |[30] |CNTEN |Timer Counting Enable Bit
  80. * | | |0 = Stops/Suspends counting.
  81. * | | |1 = Starts counting.
  82. * | | |Note 1: In stop status, and then set CNTEN to 1 will enable the 24-bit up counter to keep counting from the last stop counting value.
  83. * | | |Note 2: This bit is auto-cleared by hardware in one-shot mode (TIMER_CTL[28:27] = 00) when the timer time-out interrupt flag TIF (TIMERx_INTSTS[0]) is generated.
  84. * | | |Note 3: Set enable/disable this bit needs 2 * TMR_CLK period to become active, user can read ACTSTS (TIMERx_CTL[25]) to check enable/disable command is completed or not.
  85. * |[31] |ICEDEBUG |ICE Debug Mode Acknowledge Disable Bit (Write Protect)
  86. * | | |0 = ICE debug mode acknowledgement effects TIMER counting.
  87. * | | |TIMER counter will be held while CPU is held by ICE.
  88. * | | |1 = ICE debug mode acknowledgement Disabled.
  89. * | | |TIMER counter will keep going no matter CPU is held by ICE or not.
  90. * | | |Note: This bit is write protected
  91. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register.
  92. * @var TIMER_T::CMP
  93. * Offset: 0x04 Timer Comparator Register
  94. * ---------------------------------------------------------------------------------------------------
  95. * |Bits |Field |Descriptions
  96. * | :----: | :----: | :---- |
  97. * |[23:0] |CMPDAT |Timer Comparator Value
  98. * | | |CMPDAT is a 24-bit compared value register
  99. * | | |When the internal 24-bit up counter value is equal to CMPDAT value, the TIF (TIMERx_INTSTS[0] Timer Interrupt Flag) will set to 1.
  100. * | | |Time-out period = (Period of timer clock input) * (8-bit PSC + 1) * (24-bit CMPDAT).
  101. * | | |Note 1: Never write 0x0 or 0x1 in CMPDAT field, or the core will run into unknown state.
  102. * | | |Note 2: When timer is operating at continuous counting mode, the 24-bit up counter will keep counting continuously even if user writes a new value into CMPDAT field
  103. * | | |But if timer is operating at other modes, the 24-bit up counter will restart counting from 0 and using newest CMPDAT value to be the timer compared value while user writes a new value into CMPDAT field.
  104. * @var TIMER_T::INTSTS
  105. * Offset: 0x08 Timer Interrupt Status Register
  106. * ---------------------------------------------------------------------------------------------------
  107. * |Bits |Field |Descriptions
  108. * | :----: | :----: | :---- |
  109. * |[0] |TIF |Timer Interrupt Flag
  110. * | | |This bit indicates the interrupt flag status of Timer while 24-bit timer up counter CNT (TIMERx_CNT[23:0]) value reaches to CMPDAT (TIMERx_CMP[23:0]) value.
  111. * | | |0 = No effect.
  112. * | | |1 = CNT value matches the CMPDAT value.
  113. * | | |Note: This bit is cleared by writing 1 to it.
  114. * |[1] |TWKF |Timer Wake-up Flag
  115. * | | |This bit indicates the interrupt wake-up flag status of timer.
  116. * | | |0 = Timer does not cause CPU wake-up.
  117. * | | |1 = CPU wake-up from Idle or Power-down mode if timer time-out interrupt signal generated.
  118. * | | |Note: This bit is cleared by writing 1 to it.
  119. * @var TIMER_T::CNT
  120. * Offset: 0x0C Timer Data Register
  121. * ---------------------------------------------------------------------------------------------------
  122. * |Bits |Field |Descriptions
  123. * | :----: | :----: | :---- |
  124. * |[23:0] |CNT |Timer Data Register
  125. * | | |Read operation.
  126. * | | |Read this register to get CNT value. For example:
  127. * | | |If EXTCNTEN (TIMERx_CTL[24]) is 0, user can read CNT value for getting current 24-bit counter value.
  128. * | | |If EXTCNTEN (TIMERx_CTL[24]) is 1, user can read CNT value for getting current 24-bit event input counter value.
  129. * | | |Write operation.
  130. * | | |Writing any value to this register will reset current CNT value to 0 and reload internal 8-bit prescale counter.
  131. * |[31] |RSTACT |Timer Data Register Reset Active (Read Only)
  132. * | | |This bit indicates if the counter reset operation active.
  133. * | | |When user writes this CNT register, timer starts to reset its internal 24-bit timer up-counter to 0 and reload 8-bit pre-scale counter
  134. * | | |At the same time, timer set this flag to 1 to indicate the counter reset operation is in progress
  135. * | | |Once the counter reset operation done, timer clear this bit to 0 automatically.
  136. * | | |0 = Reset operation is done.
  137. * | | |1 = Reset operation triggered by writing TIMERx_CNT is in progress.
  138. * @var TIMER_T::CAP
  139. * Offset: 0x10 Timer Capture Data Register
  140. * ---------------------------------------------------------------------------------------------------
  141. * |Bits |Field |Descriptions
  142. * | :----: | :----: | :---- |
  143. * |[23:0] |CAPDAT |Timer Capture Data Register
  144. * | | |When CAPEN (TIMERx_EXTCTL[3]) bit is set, CAPFUNCS (TIMERx_EXTCTL[4]) bit is 0, and a transition on TMx_EXT pin matched the CAPEDGE (TIMERx_EXTCTL[14:12]) setting, CAPIF (TIMERx_EINTSTS[0]) will set to 1 and the current timer counter value CNT (TIMERx_CNT[23:0]) will be auto-loaded into this CAPDAT field.
  145. * @var TIMER_T::EXTCTL
  146. * Offset: 0x14 Timer External Control Register
  147. * ---------------------------------------------------------------------------------------------------
  148. * |Bits |Field |Descriptions
  149. * | :----: | :----: | :---- |
  150. * |[0] |CNTPHASE |Timer External Count Phase
  151. * | | |This bit indicates the detection phase of external counting pin TMx (x= 0~11).
  152. * | | |0 = A falling edge of external counting pin will be counted.
  153. * | | |1 = A rising edge of external counting pin will be counted.
  154. * |[3] |CAPEN |Timer External Capture Pin Enable Bit
  155. * | | |This bit enables the TMx_EXT capture pin input function.
  156. * | | |0 =TMx_EXT (x= 0~11) pin Disabled.
  157. * | | |1 =TMx_EXT (x= 0~11) pin Enabled.
  158. * |[4] |CAPFUNCS |Capture Function Selection
  159. * | | |0 = External Capture Mode Enabled.
  160. * | | |1 = External Reset Mode Enabled.
  161. * | | |Note 1: When CAPFUNCS is 0, transition on TMx_EXT (x= 0~11) pin is using to save current 24-bit timer counter value (CNT value) to CAPDAT field.
  162. * | | |Note 2: When CAPFUNCS is 1, transition on TMx_EXT (x= 0~11) pin is using to save current 24-bit timer counter value (CNT value) to CAPDAT field then CNT value will be reset immediately.
  163. * |[5] |CAPIEN |Timer External Capture Interrupt Enable Bit
  164. * | | |0 = TMx_EXT (x= 0~11) pin detection Interrupt Disabled.
  165. * | | |1 = TMx_EXT (x= 0~11) pin detection Interrupt Enabled.
  166. * | | |Note: CAPIEN is used to enable timer external interrupt
  167. * | | |If CAPIEN enabled, timer will rise an interrupt when CAPIF (TIMERx_EINTSTS[0]) is 1.
  168. * | | |For example, while CAPIEN = 1, CAPEN = 1, and CAPEDGE = 00, a 1 to 0 transition on the TMx_EXT pin will cause the CAPIF to be set then the interrupt signal is generated and sent to NVIC to inform CPU.
  169. * |[6] |CAPDBEN |Timer External Capture Pin De-bounce Enable Bit
  170. * | | |0 = TMx_EXT (x= 0~11) pin de-bounce Disabled.
  171. * | | |1 = TMx_EXT (x= 0~11) pin de-bounce Enabled.
  172. * | | |Note: If this bit is enabled, the edge detection of TMx_EXT pin is detected with de-bounce circuit.
  173. * |[7] |CNTDBEN |Timer Counter Pin De-bounce Enable Bit
  174. * | | |0 = TMx (x= 0~11) pin de-bounce Disabled.
  175. * | | |1 = TMx (x= 0~11) pin de-bounce Enabled.
  176. * | | |Note: If this bit is enabled, the edge detection of TMx pin is detected with de-bounce circuit.
  177. * |[10:8] |ICAPSSEL |Internal Capture Source Selection
  178. * | | |010 = Capture Function source is from HXT.
  179. * | | |011 = Capture Function source is from LXT.
  180. * | | |100 = Capture Function source is from HIRC.
  181. * | | |101 = Capture Function source is from LIRC.
  182. * | | |110 = Reserved.
  183. * | | |111 = Reserved.
  184. * | | |Note: these bits only available when CAPSRC (TIMERx_CTL[22]) is 1.
  185. * |[14:12] |CAPEDGE |Timer External Capture Pin Edge Detect
  186. * | | |When first capture event is generated, the CNT (TIMERx_CNT[23:0]) will be reset to 0 and first CAPDAT (TIMERx_CAP[23:0]) should be to 0.
  187. * | | |000 = Capture event occurred when detect falling edge transfer on TMx_EXT (x= 0~11) pin.
  188. * | | |001 = Capture event occurred when detect rising edge transfer on TMx_EXT (x= 0~11) pin.
  189. * | | |010 = Capture event occurred when detect both falling and rising edge transfer on TMx_EXT (x= 0~11) pin, and first capture event occurred at falling edge transfer.
  190. * | | |011 = Capture event occurred when detect both rising and falling edge transfer on TMx_EXT (x= 0~11) pin, and first capture event occurred at rising edge transfer.
  191. * | | |110 = First capture event occurred at falling edge, follows capture events are at rising edge transfer on TMx_EXT (x= 0~11) pin.
  192. * | | |111 = First capture event occurred at rising edge, follows capture events are at falling edge transfer on TMx_EXT (x= 0~11) pin.
  193. * | | |100, 101 = Reserved.
  194. * |[16] |ECNTSSEL |Event Counter Source Selection to Trigger Event Counter Function
  195. * | | |0 = Event Counter input source is from TMx (x= 0~11) pin.
  196. * |[31:28] |CAPSDIV |Timer Capture Source Divider
  197. * | | |This bits indicate the divide scale for capture source.
  198. * | | |0000 = Capture source/1.
  199. * | | |0001 = Capture source/2.
  200. * | | |0010 = Capture source/4.
  201. * | | |0011 = Capture source/8.
  202. * | | |0100 = Capture source/16.
  203. * | | |0101 = Capture source/32.
  204. * | | |0110 = Capture source/64.
  205. * | | |0111 = Capture source/128.
  206. * | | |1000 = Capture source/256.
  207. * | | |1001~1111 = Reserved.
  208. * | | |Note: Sets ICAPSSEL (TIMERx_EXTCTL[10:8]) and CAPSRC (TIMERx_CTL[22]) to select capture source.
  209. * @var TIMER_T::EINTSTS
  210. * Offset: 0x18 Timer External Interrupt Status Register
  211. * ---------------------------------------------------------------------------------------------------
  212. * |Bits |Field |Descriptions
  213. * | :----: | :----: | :---- |
  214. * |[0] |CAPIF |Timer External Capture Interrupt Flag
  215. * | | |This bit indicates the timer external capture interrupt flag status.
  216. * | | |0 = TMx_EXT (x= 0~11) pin interrupt did not occur.
  217. * | | |1 = TMx_EXT (x= 0~11) pin interrupt occurred.
  218. * | | |Note 1: This bit is cleared by writing 1 to it.
  219. * | | |Note 2: When CAPEN (TIMERx_EXTCTL[3]) bit is set, CAPFUNCS (TIMERx_EXTCTL[4]) bit is 0, and a transition on TMx_EXT (x= 0~11) pin matched the CAPEDGE (TIMERx_EXTCTL[2:1]) setting, this bit will set to 1 by hardware.
  220. * | | |Note 3: There is a new incoming capture event detected before CPU clearing the CAPIF status
  221. * | | |If the above condition occurred, the Timer will keep register TIMERx_CAP unchanged and drop the new capture value.
  222. * @var TIMER_T::TRGCTL
  223. * Offset: 0x1C Timer Trigger Control Register
  224. * ---------------------------------------------------------------------------------------------------
  225. * |Bits |Field |Descriptions
  226. * | :----: | :----: | :---- |
  227. * |[0] |TRGSSEL |Trigger Source Select Bit
  228. * | | |This bit is used to select internal trigger source is form timer time-out interrupt signal or capture interrupt signal.
  229. * | | |0 = Time-out interrupt signal is used to internal trigger EPWM, BPWM, PDMA and ADC.
  230. * | | |1 = Capture interrupt signal is used to internal trigger EPWM, BPWM, PDMA and ADC.
  231. * |[1] |TRGPWM |Trigger EPWM and BPWM Enable Bit
  232. * | | |If this bit is set to 1, each timer time-out event or capture event can be as EPWM and BPWM counter clock source.
  233. * | | |0 = Timer interrupt trigger EPWM and BPWM Disabled.
  234. * | | |1 = Timer interrupt trigger EPWM and BPWM Enabled.
  235. * | | |Note: If TRGSSEL (TIMERx_TRGCTL[0]) = 0, time-out interrupt signal as EPWM and BPWM counter clock source.
  236. * | | |If TRGSSEL (TIMERx_TRGCTL[0]) = 1, capture interrupt signal as EPWM and BPWM counter clock source.
  237. * |[2] |TRGEADC |Trigger EADC Enable Bit
  238. * | | |If this bit is set to 1, each timer time-out event or capture event can be triggered EADC conversion.
  239. * | | |0 = Timer interrupt trigger EADC Disabled.
  240. * | | |1 = Timer interrupt trigger EADC Enabled.
  241. * | | |Note: If TRGSSEL (TIMERx_TRGCTL[0]) = 0, time-out interrupt signal will trigger EADC conversion.
  242. * | | |If TRGSSEL (TIMERx_TRGCTL[0]) = 1, capture interrupt signal will trigger EADC conversion.
  243. * |[4] |TRGPDMA |Trigger PDMA Enable Bit
  244. * | | |If this bit is set to 1, each timer time-out event or capture event can be triggered PDMA transfer.
  245. * | | |0 = Timer interrupt trigger PDMA Disabled.
  246. * | | |1 = Timer interrupt trigger PDMA Enabled.
  247. * | | |Note: If TRGSSEL (TIMERx_TRGCTL[0]) = 0, time-out interrupt signal will trigger PDMA transfer.
  248. * | | |If TRGSSEL (TIMERx_TRGCTL[0]) = 1, capture interrupt signal will trigger PDMA transfer.
  249. * @var TIMER_T::ALTCTL
  250. * Offset: 0x20 Timer Alternative Control Register
  251. * ---------------------------------------------------------------------------------------------------
  252. * |Bits |Field |Descriptions
  253. * | :----: | :----: | :---- |
  254. * |[0] |FUNCSEL |Function Selection
  255. * | | |0 = Timer controller is used as timer function.
  256. * | | |1 = Timer controller is used as PWM function.
  257. * | | |Note: When timer is used as PWM, the clock source of time controller will be forced to PCLKx automatically.
  258. * @var TIMER_T::PWMCTL
  259. * Offset: 0x40 Timer PWM Control Register
  260. * ---------------------------------------------------------------------------------------------------
  261. * |Bits |Field |Descriptions
  262. * | :----: | :----: | :---- |
  263. * |[0] |CNTEN |PWM Counter Enable Bit
  264. * | | |0 = PWM counter and clock prescale Stop Running.
  265. * | | |1 = PWM counter and clock prescale Start Running.
  266. * |[2:1] |CNTTYPE |PWM Counter Behavior Type
  267. * | | |00 = Up count type.
  268. * | | |01 = Down count type.
  269. * | | |10 = Up-down count type.
  270. * | | |11 = Reserved.
  271. * |[3] |CNTMODE |PWM Counter Mode
  272. * | | |0 = Auto-reload mode.
  273. * | | |1 = One-shot mode.
  274. * |[8] |CTRLD |Center Re-load
  275. * | | |In up-down count type, PERIOD will load to PBUF when current PWM period is completed always and CMP will load to CMPBUF at the center point of current period.
  276. * |[9] |IMMLDEN |Immediately Load Enable Bit
  277. * | | |0 = PERIOD will load to PBUF when current PWM period is completed no matter CTRLD is enabled/disabled
  278. * | | |If CTRLD is disabled, CMP will load to CMPBUF when current PWM period is completed; if CTRLD is enabled in up-down count type, CMP will load to CMPBUF at the center point of current period.
  279. * | | |1 = PERIOD/CMP will load to PBUF/CMPBUF immediately when user update PERIOD/CMP.
  280. * | | |Note: If IMMLDEN is enabled, CTRLD will be invalid.
  281. * |[16] |OUTMODE |PWM Output Mode
  282. * | | |This bit controls the output mode of corresponding PWM channel.
  283. * | | |0 = PWM independent mode.
  284. * | | |1 = PWM complementary mode.
  285. * |[30] |DBGHALT |ICE Debug Mode Counter Halt (Write Protect)
  286. * | | |If debug mode counter halt is enabled, PWM counter will keep current value until exit ICE debug mode.
  287. * | | |0 = ICE debug mode counter halt disable.
  288. * | | |1 = ICE debug mode counter halt enable.
  289. * | | |Note: This bit is write protected. Refer to SYS_RLKTZS or SYS_RLKTZND or SYS_RLKSUBM register.
  290. * |[31] |DBGTRIOFF |ICE Debug Mode Acknowledge Disable Bit (Write Protect)
  291. * | | |0 = ICE debug mode acknowledgement effects PWM output.
  292. * | | |PWM output pin will be forced as tri-state while ICE debug mode acknowledged.
  293. * | | |1 = ICE debug mode acknowledgement disabled.
  294. * | | |PWM output pin will keep output no matter ICE debug mode acknowledged or not.
  295. * | | |Note: This bit is write protected
  296. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  297. * @var TIMER_T::PWMCLKSRC
  298. * Offset: 0x44 Timer PWM Counter Clock Source Register
  299. * ---------------------------------------------------------------------------------------------------
  300. * |Bits |Field |Descriptions
  301. * | :----: | :----: | :---- |
  302. * |[3:0] |CLKSRC |PWM Counter Clock Source Select
  303. * | | |The PWM counter clock source can be selected from TMRx_CLK or internal timer time-out or capture event.
  304. * | | |0000 = TMRx_CLK.
  305. * | | |0001 = Internal TIMER0 time-out or capture event.
  306. * | | |0010 = Internal TIMER1 time-out or capture event.
  307. * | | |0011 = Internal TIMER2 time-out or capture event.
  308. * | | |0100 = Internal TIMER3 time-out or capture event.
  309. * | | |0101 = Internal TIMER4 time-out or capture event.
  310. * | | |0110 = Internal TIMER5 time-out or capture event.
  311. * | | |0111 = Internal TIMER6 time-out or capture event.
  312. * | | |1000 = Internal TIMER7 time-out or capture event.
  313. * | | |1001 = Internal TIMER8 time-out or capture event.
  314. * | | |1010 = Internal TIMER9 time-out or capture event.
  315. * | | |1011 = Internal TIMER10 time-out or capture event.
  316. * | | |1100 = Internal TIMER11 time-out or capture event.
  317. * | | |Others = Reserved.
  318. * | | |Note: If TIMER0 PWM function is enabled, the PWM counter clock source can be selected from TMR0_CLK, TIMER1 interrupt events, TIMER2 interrupt events, or TIMER3 interrupt events.
  319. * @var TIMER_T::PWMCLKPSC
  320. * Offset: 0x48 Timer PWM Counter Clock Pre-scale Register
  321. * ---------------------------------------------------------------------------------------------------
  322. * |Bits |Field |Descriptions
  323. * | :----: | :----: | :---- |
  324. * |[11:0] |CLKPSC |PWM Counter Clock Pre-scale
  325. * | | |The active clock of PWM counter is decided by counter clock prescale and divided by (CLKPSC + 1)
  326. * | | |If CLKPSC is 0, then there is no scaling in PWM counter clock source.
  327. * @var TIMER_T::PWMCNTCLR
  328. * Offset: 0x4C Timer PWM Clear Counter Register
  329. * ---------------------------------------------------------------------------------------------------
  330. * |Bits |Field |Descriptions
  331. * | :----: | :----: | :---- |
  332. * |[0] |CNTCLR |Clear PWM Counter Control Bit
  333. * | | |It is automatically cleared by hardware.
  334. * | | |0 = No effect.
  335. * | | |1 = Clear 16-bit PWM counter to 0x10000 in up and up-down count type and reset counter value to PERIOD in down count type.
  336. * @var TIMER_T::PWMPERIOD
  337. * Offset: 0x50 Timer PWM Period Register
  338. * ---------------------------------------------------------------------------------------------------
  339. * |Bits |Field |Descriptions
  340. * | :----: | :----: | :---- |
  341. * |[15:0] |PERIOD |PWM Period Register
  342. * | | |In up count type: PWM counter counts from 0 to PERIOD, and restarts from 0.
  343. * | | |In down count type: PWM counter counts from PERIOD to 0, and restarts from PERIOD.
  344. * | | |In up-down count type: PWM counter counts from 0 to PERIOD, then decrements to 0 and repeats again.
  345. * | | |In up and down count type:
  346. * | | |PWM period time = (PERIOD + 1) * (CLKPSC + 1) * TMRx_PWMCLK.
  347. * | | |In up-down count type:
  348. * | | |PWM period time = 2 * PERIOD * (CLKPSC+ 1) * TMRx_PWMCLK.
  349. * | | |Note: User should take care DIRF (TIMERx_PWMCNT[16]) bit in up/down/up-down count type to monitor current counter direction in each count type.
  350. * @var TIMER_T::PWMCMPDAT
  351. * Offset: 0x54 Timer PWM Comparator Register
  352. * ---------------------------------------------------------------------------------------------------
  353. * |Bits |Field |Descriptions
  354. * | :----: | :----: | :---- |
  355. * |[15:0] |CMP |PWM Comparator Register
  356. * | | |PWM CMP is used to compare with PWM CNT to generate PWM output waveform, interrupt events and trigger ADC to start conversion.
  357. * @var TIMER_T::PWMDTCTL
  358. * Offset: 0x58 Timer PWM Dead-time Control Register
  359. * ---------------------------------------------------------------------------------------------------
  360. * |Bits |Field |Descriptions
  361. * | :----: | :----: | :---- |
  362. * |[11:0] |DTCNT |Dead-time Counter (Write Protect)
  363. * | | |The dead-time can be calculated from the following two formulas:
  364. * | | |Dead-time = (DTCNT[11:0] + 1) * TMRx_PWMCLK, if DTCKSEL is 0.
  365. * | | |Dead-time = (DTCNT[11:0] + 1) * TMRx_PWMCLK * (CLKPSC + 1), if DTCKSEL is 1.
  366. * | | |Note: This bit is write protected
  367. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  368. * |[16] |DTEN |Enable Dead-time Insertion for PWMx_CH0 and PWMx_CH1 (Write Protect)
  369. * | | |Dead-time insertion function is only active when PWM complementary mode is enabled
  370. * | | |If dead- time insertion is inactive, the outputs of PWMx_CH0 and PWMx_CH1 are complementary without any delay.
  371. * | | |0 = Dead-time insertion Disabled on the pin pair.
  372. * | | |1 = Dead-time insertion Enabled on the pin pair.
  373. * | | |Note: This bit is write protected
  374. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  375. * |[24] |DTCKSEL |Dead-time Clock Select (Write Protect)
  376. * | | |0 = Dead-time clock source from TMRx_PWMCLK without counter clock prescale.
  377. * | | |1 = Dead-time clock source from TMRx_PWMCLK with counter clock prescale.
  378. * | | |Note: This bit is write protected
  379. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  380. * @var TIMER_T::PWMCNT
  381. * Offset: 0x5C Timer PWM Counter Register
  382. * ---------------------------------------------------------------------------------------------------
  383. * |Bits |Field |Descriptions
  384. * | :----: | :----: | :---- |
  385. * |[15:0] |CNT |PWM Counter Value Register (Read Only)
  386. * | | |User can monitor CNT to know the current counter value in 16-bit period counter.
  387. * |[16] |DIRF |PWM Counter Direction Indicator Flag (Read Only)
  388. * | | |0 = Counter is active in down count.
  389. * | | |1 = Counter is active up count.
  390. * @var TIMER_T::PWMMSKEN
  391. * Offset: 0x60 Timer PWM Output Mask Enable Register
  392. * ---------------------------------------------------------------------------------------------------
  393. * |Bits |Field |Descriptions
  394. * | :----: | :----: | :---- |
  395. * |[0] |MSKEN0 |PWMx_CH0 Output Mask Enable Bit
  396. * | | |The PWMx_CH0 output signal will be masked when this bit is enabled
  397. * | | |The PWMx_CH0 will output MSKDAT0 (TIMER_PWMMSK[0]) data.
  398. * | | |0 = PWMx_CH0 output signal is non-masked.
  399. * | | |1 = PWMx_CH0 output signal is masked and output MSKDAT0 data.
  400. * |[1] |MSKEN1 |PWMx_CH1 Output Mask Enable Bit
  401. * | | |The PWMx_CH1 output signal will be masked when this bit is enabled
  402. * | | |The PWMx_CH1 will output MSKDAT1 (TIMER_PWMMSK[1]) data.
  403. * | | |0 = PWMx_CH1 output signal is non-masked.
  404. * | | |1 = PWMx_CH1 output signal is masked and output MSKDAT1 data.
  405. * @var TIMER_T::PWMMSK
  406. * Offset: 0x64 Timer PWM Output Mask Data Control Register
  407. * ---------------------------------------------------------------------------------------------------
  408. * |Bits |Field |Descriptions
  409. * | :----: | :----: | :---- |
  410. * |[0] |MSKDAT0 |PWMx_CH0 Output Mask Data Control Bit
  411. * | | |This bit is used to control the output state of PWMx_CH0 pin when PWMx_CH0 output mask function is enabled (MSKEN0 = 1).
  412. * | | |0 = Output logic Low to PWMx_CH0.
  413. * | | |1 = Output logic High to PWMx_CH0.
  414. * |[1] |MSKDAT1 |PWMx_CH1 Output Mask Data Control Bit
  415. * | | |This bit is used to control the output state of PWMx_CH1 pin when PWMx_CH1 output mask function is enabled (MSKEN1 = 1).
  416. * | | |0 = Output logic Low to PWMx_CH1.
  417. * | | |1 = Output logic High to PWMx_CH1.
  418. * @var TIMER_T::PWMBNF
  419. * Offset: 0x68 Timer PWM Brake Pin Noise Filter Register
  420. * ---------------------------------------------------------------------------------------------------
  421. * |Bits |Field |Descriptions
  422. * | :----: | :----: | :---- |
  423. * |[0] |BRKNFEN |Brake Pin Noise Filter Enable Bit
  424. * | | |0 = Pin noise filter detect of PWMx_BRAKEy Disabled.
  425. * | | |1 = Pin noise filter detect of PWMx_BRAKEy Enabled.
  426. * |[3:1] |BRKNFSEL |Brake Pin Noise Filter Clock Selection
  427. * | | |000 = Noise filter clock is PCLKx.
  428. * | | |001 = Noise filter clock is PCLKx/2.
  429. * | | |010 = Noise filter clock is PCLKx/4.
  430. * | | |011 = Noise filter clock is PCLKx/8.
  431. * | | |100 = Noise filter clock is PCLKx/16.
  432. * | | |101 = Noise filter clock is PCLKx/32.
  433. * | | |110 = Noise filter clock is PCLKx/64.
  434. * | | |111 = Noise filter clock is PCLKx/128.
  435. * |[6:4] |BRKFCNT |Brake Pin Noise Filter Count
  436. * | | |The fields is used to control the active noise filter sample time.
  437. * | | |Once noise filter sample time = (Period time of BRKDBCS) * BRKFCNT.
  438. * |[7] |BRKPINV |Brake Pin Detection Control Bit
  439. * | | |0 = Brake pin event will be detected if PWMx_BRAKEy pin status transfer from low to high in edge-detect, or pin status is high in level-detect.
  440. * | | |1 = Brake pin event will be detected if PWMx_BRAKEy pin status transfer from high to low in edge-detect, or pin status is low in level-detect .
  441. * |[18:16] |BKPINSRC |Brake Pin Source Select
  442. * | | |000 = Brake pin source comes from PWM0_BRAKE0 pin.
  443. * | | |001 = Brake pin source comes from PWM0_BRAKE1 pin.
  444. * | | |010 = Brake pin source comes from PWM1_BRAKE0 pin.
  445. * | | |011 = Brake pin source comes from PWM1_BRAKE1 pin.
  446. * | | |100 = Brake pin source comes from PWM2_BRAKE0 pin.
  447. * | | |101 = Brake pin source comes from PWM2_BRAKE1 pin.
  448. * @var TIMER_T::PWMFAILBRK
  449. * Offset: 0x6C Timer PWM System Fail Brake Control Register
  450. * ---------------------------------------------------------------------------------------------------
  451. * |Bits |Field |Descriptions
  452. * | :----: | :----: | :---- |
  453. * |[0] |CSSBRKEN |Clock Security System Detection Trigger PWM Brake Function Enable Bit
  454. * | | |0 = Brake Function triggered by clock fail detection Disabled.
  455. * | | |1 = Brake Function triggered by clock fail detection Enabled.
  456. * |[1] |LVDBRKEN |Low Voltage Interrupt Flag Detection Trigger PWM Brake Function Enable Bit
  457. * | | |0 = Brake Function triggered by LVD interrupt flag event Disabled.
  458. * | | |1 = Brake Function triggered by LVD interrupt flag event Enabled.
  459. * |[3] |CORBRKEN |Core Lockup Detection Trigger PWM Brake Function Enable Bit
  460. * | | |0 = Brake Function triggered by core lockup event Disabled.
  461. * | | |1 = Brake Function triggered by core lockup event Enabled.
  462. * @var TIMER_T::PWMBRKCTL
  463. * Offset: 0x70 Timer PWM Brake Control Register
  464. * ---------------------------------------------------------------------------------------------------
  465. * |Bits |Field |Descriptions
  466. * | :----: | :----: | :---- |
  467. * |[4] |BRKPEEN |Enable TM_BRAKEx Pin As Edge-detect Brake Source (Write Protect)
  468. * | | |0 = PWMx_BRAKEy pin event as edge-detect brake source Disabled.
  469. * | | |1 = PWMx_BRAKEy pin event as edge-detect brake source Enabled.
  470. * | | |Note: This bit is write protected
  471. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  472. * |[7] |SYSEBEN |Enable System Fail As Edge-detect Brake Source (Write Protect)
  473. * | | |0 = System fail condition as edge-detect brake source Disabled.
  474. * | | |1 = System fail condition as edge-detect brake source Enabled.
  475. * | | |Note: This bit is write protected
  476. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  477. * |[12] |BRKPLEN |Enable TM_BRAKEx Pin As Level-detect Brake Source (Write Protect)
  478. * | | |0 = PWMx_BRAKEy pin event as level-detect brake source Disabled.
  479. * | | |1 = PWMx_BRAKEy pin event as level-detect brake source Enabled.
  480. * | | |Note: This bit is write protected
  481. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  482. * |[15] |SYSLBEN |Enable System Fail As Level-detect Brake Source (Write Protect)
  483. * | | |0 = System fail condition as level-detect brake source Disabled.
  484. * | | |1 = System fail condition as level-detect brake source Enabled.
  485. * | | |Note: This bit is write protected
  486. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  487. * |[17:16] |BRKAEVEN |PWM Brake Action Select for PWMx_CH0 (Write Protect)
  488. * | | |00 = PWMx_BRAKEy brake event will not affect PWMx_CH0 output.
  489. * | | |01 = PWMx_CH0 output tri-state when PWMx_BRAKEy brake event happened.
  490. * | | |10 = PWMx_CH0 output low level when PWMx_BRAKEy brake event happened.
  491. * | | |11 = PWMx_CH0 output high level when PWMx_BRAKEy brake event happened.
  492. * | | |Note: This bit is write protected
  493. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  494. * |[19:18] |BRKAODD |PWM Brake Action Select for PWMx_CH1 (Write Protect)
  495. * | | |00 = PWMx_BRAKEy brake event will not affect PWMx_CH1 output.
  496. * | | |01 = PWMx_CH1 output tri-state when PWMx_BRAKEy brake event happened.
  497. * | | |10 = PWMx_CH1 output low level when PWMx_BRAKEy brake event happened.
  498. * | | |11 = PWMx_CH1 output high level when PWMx_BRAKEy brake event happened.
  499. * | | |Note: This bit is write protected
  500. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  501. * @var TIMER_T::PWMPOLCTL
  502. * Offset: 0x74 Timer PWM Pin Output Polar Control Register
  503. * ---------------------------------------------------------------------------------------------------
  504. * |Bits |Field |Descriptions
  505. * | :----: | :----: | :---- |
  506. * |[0] |PINV0 |PWMx_CH0 Output Pin Polar Control Bit
  507. * | | |The bit is used to control polarity state of PWMx_CH0 output pin.
  508. * | | |0 = PWMx_CH0 output pin polar inverse Disabled.
  509. * | | |1 = PWMx_CH0 output pin polar inverse Enabled.
  510. * |[1] |PINV1 |PWMx_CH1 Output Pin Polar Control Bit
  511. * | | |The bit is used to control polarity state of PWMx_CH1 output pin.
  512. * | | |0 = PWMx_CH1 output pin polar inverse Disabled.
  513. * | | |1 = PWMx_CH1 output pin polar inverse Enabled.
  514. * @var TIMER_T::PWMPOEN
  515. * Offset: 0x78 Timer PWM Pin Output Enable Register
  516. * ---------------------------------------------------------------------------------------------------
  517. * |Bits |Field |Descriptions
  518. * | :----: | :----: | :---- |
  519. * |[0] |POEN0 |PWMx_CH0 Output Pin Enable Bit
  520. * | | |0 = PWMx_CH0 pin at tri-state mode.
  521. * | | |1 = PWMx_CH0 pin in output mode.
  522. * |[1] |POEN1 |PWMx_CH1 Output Pin Enable Bit
  523. * | | |0 = PWMx_CH1 pin at tri-state mode.
  524. * | | |1 = PWMx_CH1 pin in output mode.
  525. * @var TIMER_T::PWMSWBRK
  526. * Offset: 0x7C Timer PWM Software Trigger Brake Control Register
  527. * ---------------------------------------------------------------------------------------------------
  528. * |Bits |Field |Descriptions
  529. * | :----: | :----: | :---- |
  530. * |[0] |BRKETRG |Software Trigger Edge-detect Brake Source (Write Only) (Write Protect)
  531. * | | |Write 1 to this bit will trigger PWM edge-detect brake source, then BRKEIF0 and BRKEIF1 will set to 1 automatically in TIMERx_PWMINTSTS1 register.
  532. * | | |Note: This bit is write protected
  533. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  534. * |[8] |BRKLTRG |Software Trigger Level-detect Brake Source (Write Only) (Write Protect)
  535. * | | |Write 1 to this bit will trigger PWM level-detect brake source, then BRKLIF0 and BRKLIF1 will set to 1 automatically in TIMERx_PWMINTSTS1 register.
  536. * | | |Note: This bit is write protected
  537. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  538. * @var TIMER_T::PWMINTEN0
  539. * Offset: 0x80 Timer PWM Interrupt Enable Register 0
  540. * ---------------------------------------------------------------------------------------------------
  541. * |Bits |Field |Descriptions
  542. * | :----: | :----: | :---- |
  543. * |[0] |ZIEN |PWM Zero Point Interrupt Enable Bit
  544. * | | |0 = Zero point interrupt Disabled.
  545. * | | |1 = Zero point interrupt Enabled.
  546. * |[1] |PIEN |PWM Period Point Interrupt Enable Bit
  547. * | | |0 = Period point interrupt Disabled.
  548. * | | |1 = Period point interrupt Enabled.
  549. * | | |Note: In up-down count type, period point means the center point of current PWM period.
  550. * |[2] |CMPUIEN |PWM Compare Up Count Interrupt Enable Bit
  551. * | | |0 = Compare up count interrupt Disabled.
  552. * | | |1 = Compare up count interrupt Enabled.
  553. * |[3] |CMPDIEN |PWM Compare Down Count Interrupt Enable Bit
  554. * | | |0 = Compare down count interrupt Disabled.
  555. * | | |1 = Compare down count interrupt Enabled.
  556. * @var TIMER_T::PWMINTEN1
  557. * Offset: 0x84 Timer PWM Interrupt Enable Register 1
  558. * ---------------------------------------------------------------------------------------------------
  559. * |Bits |Field |Descriptions
  560. * | :----: | :----: | :---- |
  561. * |[0] |BRKEIEN |PWM Edge-detect Brake Interrupt Enable Bit
  562. * | | |0 = PWM edge-detect brake interrupt Disabled.
  563. * | | |1 = PWM edge-detect brake interrupt Enabled.
  564. * |[8] |BRKLIEN |PWM Level-detect Brake Interrupt Enable Bit
  565. * | | |0 = PWM level-detect brake interrupt Disabled.
  566. * | | |1 = PWM level-detect brake interrupt Enabled.
  567. * @var TIMER_T::PWMINTSTS0
  568. * Offset: 0x88 Timer PWM Interrupt Status Register 0
  569. * ---------------------------------------------------------------------------------------------------
  570. * |Bits |Field |Descriptions
  571. * | :----: | :----: | :---- |
  572. * |[0] |ZIF |PWM Zero Point Interrupt Flag
  573. * | | |This bit is set by hardware when TIMERx_PWM counter reaches 0.
  574. * | | |Note: This bit is cleared by writing 1 to it.
  575. * |[1] |PIF |PWM Period Point Interrupt Flag
  576. * | | |This bit is set by hardware when TIMERx_PWM counter reaches PERIOD.
  577. * | | |Note 1: In up-down count type, PIF flag means the center point flag of current PWM period.
  578. * | | |Note 2: This bit is cleared by writing 1 to it.
  579. * |[2] |CMPUIF |PWM Compare Up Count Interrupt Flag
  580. * | | |This bit is set by hardware when TIMERx_PWM counter in up count direction and reaches CMP.
  581. * | | |Note 1: If CMP equal to PERIOD, there is no CMPUIF flag in up count type and up-down count type.
  582. * | | |Note 2: This bit is cleared by writing 1 to it.
  583. * |[3] |CMPDIF |PWM Compare Down Count Interrupt Flag
  584. * | | |This bit is set by hardware when TIMERx_PWM counter in down count direction and reaches CMP.
  585. * | | |Note 1: If CMP equal to PERIOD, there is no CMPDIF flag in down count type.
  586. * | | |Note 2: This bit is cleared by writing 1 to it.
  587. * @var TIMER_T::PWMINTSTS1
  588. * Offset: 0x8C Timer PWM Interrupt Status Register 1
  589. * ---------------------------------------------------------------------------------------------------
  590. * |Bits |Field |Descriptions
  591. * | :----: | :----: | :---- |
  592. * |[0] |BRKEIF0 |Edge-detect Brake Interrupt Flag on PWMx_CH0 (Write Protect)
  593. * | | |0 = PWMx_CH0 edge-detect brake event do not happened.
  594. * | | |1 = PWMx_CH0 edge-detect brake event happened.
  595. * | | |Note 1: This bit is cleared by writing 1 to it.
  596. * | | |Note 2: This bit is write protected
  597. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  598. * |[1] |BRKEIF1 |Edge-detect Brake Interrupt Flag PWMx_CH1 (Write Protect)
  599. * | | |0 = PWMx_CH1 edge-detect brake event do not happened.
  600. * | | |1 = PWMx_CH1 edge-detect brake event happened.
  601. * | | |Note 1: This bit is cleared by writing 1 to it.
  602. * | | |Note 2: This bit is write protected
  603. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  604. * |[8] |BRKLIF0 |Level-detect Brake Interrupt Flag on PWMx_CH0 (Write Protect)
  605. * | | |0 = PWMx_CH0 level-detect brake event do not happened.
  606. * | | |1 = PWMx_CH0 level-detect brake event happened.
  607. * | | |Note 1: This bit is cleared by writing 1 to it.
  608. * | | |Note 2: This bit is write protected
  609. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  610. * |[9] |BRKLIF1 |Level-detect Brake Interrupt Flag on PWMx_CH1 (Write Protect)
  611. * | | |0 = PWMx_CH1 level-detect brake event do not happened.
  612. * | | |1 = PWMx_CH1 level-detect brake event happened.
  613. * | | |Note 1: This bit is cleared by writing 1 to it.
  614. * | | |Note 2: This bit is write protected
  615. * | | |Refer to the SYS_RLKTZS register or SYS_RLKTZNS register or SYS_RLKSUBM register
  616. * |[16] |BRKESTS0 |Edge -detect Brake Status of PWMx_CH0 (Read Only)
  617. * | | |0 = PWMx_CH0 edge-detect brake state is released.
  618. * | | |1 = PWMx_CH0 at edge-detect brake state.
  619. * | | |Note: User can set BRKEIF0 1 to clear BRKEIF0 flag and PWMx_CH0 will release brake state when current PWM period finished and resume PWMx_CH0 output waveform start from next full PWM period.
  620. * |[17] |BRKESTS1 |Edge-detect Brake Status of PWMx_CH1 (Read Only)
  621. * | | |0 = PWMx_CH1 edge-detect brake state is released.
  622. * | | |1 = PWMx_CH1 at edge-detect brake state.
  623. * | | |Note: User can set BRKEIF1 1 to clear BRKEIF1 flag and PWMx_CH1 will release brake state when current PWM period finished and resume PWMx_CH1 output waveform start from next full PWM period.
  624. * |[24] |BRKLSTS0 |Level-detect Brake Status of PWMx_CH0 (Read Only)
  625. * | | |0 = PWMx_CH0 level-detect brake state is released.
  626. * | | |1 = PWMx_CH0 at level-detect brake state.
  627. * | | |Note: If TIMERx_PWM level-detect brake source has released, both PWMx_CH0 and PWMx_CH1 will release brake state when current PWM period finished and resume PWMx_CH0 and PWMx_CH1 output waveform start from next full PWM period.
  628. * |[25] |BRKLSTS1 |Level-detect Brake Status of PWMx_CH1 (Read Only)
  629. * | | |0 = PWMx_CH1 level-detect brake state is released.
  630. * | | |1 = PWMx_CH1 at level-detect brake state.
  631. * | | |Note: If TIMERx_PWM level-detect brake source has released, both PWMx_CH0 and PWMx_CH1 will release brake state when current PWM period finished and resume PWMx_CH0 and PWMx_CH1 output waveform start from next full PWM period.
  632. * @var TIMER_T::PWMEADCTS
  633. * Offset: 0x90 Timer PWM EADC Trigger Source Select Register
  634. * ---------------------------------------------------------------------------------------------------
  635. * |Bits |Field |Descriptions
  636. * | :----: | :----: | :---- |
  637. * |[2:0] |TRGSEL |PWM Counter Event Source Select to Trigger EADC Conversion
  638. * | | |000 = Trigger EADC conversion at zero point (ZIF).
  639. * | | |001 = Trigger EADC conversion at period point (PIF).
  640. * | | |010 = Trigger EADC conversion at zero or period point (ZIF or PIF).
  641. * | | |011 = Trigger EADC conversion at compare up count point (CMPUIF).
  642. * | | |100 = Trigger EADC conversion at compare down count point (CMPDIF).
  643. * | | |Others = Reserved.
  644. * |[7] |TRGEN |PWM Counter Event Trigger EADC Conversion Enable Bit
  645. * | | |0 = PWM counter event trigger EADC conversion Disabled.
  646. * | | |1 = PWM counter event trigger EADC conversion Enabled.
  647. * @var TIMER_T::PWMSCTL
  648. * Offset: 0x94 Timer PWM Synchronous Control Register
  649. * ---------------------------------------------------------------------------------------------------
  650. * |Bits |Field |Descriptions
  651. * | :----: | :----: | :---- |
  652. * |[1:0] |SYNCMODE |PWM Synchronous Mode Enable Select
  653. * | | |00 = PWM synchronous function Disabled.
  654. * | | |01 = PWM synchronous counter start function Enabled.
  655. * | | |10 = Reserved.
  656. * | | |11 = PWM synchronous counter clear function Enabled.
  657. * |[10:8] |SYNCSRC |PWM Synchronous Counter Start/Clear Source Select
  658. * | | |000 = Counter synchronous start/clear by trigger TIMER0_PWMSTRG STRGEN.
  659. * | | |001 = Counter synchronous start/clear by trigger TIMER2_PWMSTRG STRGEN.
  660. * | | |010 = Counter synchronous start/clear by trigger TIMER4_PWMSTRG STRGEN.
  661. * | | |011 = Counter synchronous start/clear by trigger TIMER6_PWMSTRG STRGEN.
  662. * | | |100 = Counter synchronous start/clear by trigger TIMER8_PWMSTRG STRGEN.
  663. * | | |101 = Counter synchronous start/clear by trigger TIMER10_PWMSTRG STRGEN.
  664. * | | |Note 1: If TIMER0/1/2/3 PWM counter synchronous source are from TIMER0, TIMER0_PWMSCTL[8], TIMER1_PWMSCTL[8], TIMER2_PWMSCTL[8] and TIMER3_PWMSCTL[8] should be 0.
  665. * | | |Note 2: If TIMER0/1/ PWM counter synchronous source are from TIMER0, TIMER0_PWMSCTL[8] and TIMER1_PWMSCTL[8] should be set 0, and TIMER2/3/ PWM counter synchronous source are from TIMER2, TIME2_PWMSCTL[8] and TIMER3_PWMSCTL[8] should be set 1.
  666. * @var TIMER_T::PWMSTRG
  667. * Offset: 0x98 Timer PWM Synchronous Trigger Register
  668. * ---------------------------------------------------------------------------------------------------
  669. * |Bits |Field |Descriptions
  670. * | :----: | :----: | :---- |
  671. * |[0] |STRGEN |PWM Counter Synchronous Trigger Enable Bit (Write Only)
  672. * | | |PMW counter synchronous function is used to make selected PWM channels (include TIMER0/1/2/3 PWM, TIMER0/1 PWM and TIMER2/3 PWM) start counting or clear counter at the same time according to TIMERx_PWMSCTL setting.
  673. * | | |Note: This bit is only available in TIMER0 and TIMER2.
  674. * @var TIMER_T::PWMSTATUS
  675. * Offset: 0x9C Timer PWM Status Register
  676. * ---------------------------------------------------------------------------------------------------
  677. * |Bits |Field |Descriptions
  678. * | :----: | :----: | :---- |
  679. * |[0] |CNTMAXF |PWM Counter Equal to 0xFFFF Flag
  680. * | | |0 = The PWM counter value never reached its maximum value 0xFFFF.
  681. * | | |1 = The PWM counter value has reached its maximum value.
  682. * | | |Note: This bit is cleared by writing 1 to it.
  683. * |[16] |EADCTRGF |Trigger EADC Start Conversion Flag
  684. * | | |0 = PWM counter event trigger EADC start conversion is not occurred.
  685. * | | |1 = PWM counter event trigger EADC start conversion has occurred.
  686. * | | |Note: This bit is cleared by writing 1 to it.
  687. * @var TIMER_T::PWMPBUF
  688. * Offset: 0xA0 Timer PWM Period Buffer Register
  689. * ---------------------------------------------------------------------------------------------------
  690. * |Bits |Field |Descriptions
  691. * | :----: | :----: | :---- |
  692. * |[15:0] |PBUF |PWM Period Buffer Register (Read Only)
  693. * | | |Used as PERIOD active register.
  694. * @var TIMER_T::PWMCMPBUF
  695. * Offset: 0xA4 Timer PWM Comparator Buffer Register
  696. * ---------------------------------------------------------------------------------------------------
  697. * |Bits |Field |Descriptions
  698. * | :----: | :----: | :---- |
  699. * |[15:0] |CMPBUF |PWM Comparator Buffer Register (Read Only)
  700. * | | |Used as CMP active register.
  701. */
  702. __IO uint32_t CTL; /*!< [0x0000] Timer Control Register */
  703. __IO uint32_t CMP; /*!< [0x0004] Timer Comparator Register */
  704. __IO uint32_t INTSTS; /*!< [0x0008] Timer Interrupt Status Register */
  705. __IO uint32_t CNT; /*!< [0x000c] Timer Data Register */
  706. __I uint32_t CAP; /*!< [0x0010] Timer Capture Data Register */
  707. __IO uint32_t EXTCTL; /*!< [0x0014] Timer External Control Register */
  708. __IO uint32_t EINTSTS; /*!< [0x0018] Timer External Interrupt Status Register */
  709. __IO uint32_t TRGCTL; /*!< [0x001c] Timer Trigger Control Register */
  710. __IO uint32_t ALTCTL; /*!< [0x0020] Timer Alternative Control Register */
  711. __I uint32_t RESERVE0[7];
  712. __IO uint32_t PWMCTL; /*!< [0x0040] Timer PWM Control Register */
  713. __IO uint32_t PWMCLKSRC; /*!< [0x0044] Timer PWM Counter Clock Source Register */
  714. __IO uint32_t PWMCLKPSC; /*!< [0x0048] Timer PWM Counter Clock Pre-scale Register */
  715. __IO uint32_t PWMCNTCLR; /*!< [0x004c] Timer PWM Clear Counter Register */
  716. __IO uint32_t PWMPERIOD; /*!< [0x0050] Timer PWM Period Register */
  717. __IO uint32_t PWMCMPDAT; /*!< [0x0054] Timer PWM Comparator Register */
  718. __IO uint32_t PWMDTCTL; /*!< [0x0058] Timer PWM Dead-time Control Register */
  719. __I uint32_t PWMCNT; /*!< [0x005c] Timer PWM Counter Register */
  720. __IO uint32_t PWMMSKEN; /*!< [0x0060] Timer PWM Output Mask Enable Register */
  721. __IO uint32_t PWMMSK; /*!< [0x0064] Timer PWM Output Mask Data Control Register */
  722. __IO uint32_t PWMBNF; /*!< [0x0068] Timer PWM Brake Pin Noise Filter Register */
  723. __IO uint32_t PWMFAILBRK; /*!< [0x006c] Timer PWM System Fail Brake Control Register */
  724. __IO uint32_t PWMBRKCTL; /*!< [0x0070] Timer PWM Brake Control Register */
  725. __IO uint32_t PWMPOLCTL; /*!< [0x0074] Timer PWM Pin Output Polar Control Register */
  726. __IO uint32_t PWMPOEN; /*!< [0x0078] Timer PWM Pin Output Enable Register */
  727. __O uint32_t PWMSWBRK; /*!< [0x007c] Timer PWM Software Trigger Brake Control Register */
  728. __IO uint32_t PWMINTEN0; /*!< [0x0080] Timer PWM Interrupt Enable Register 0 */
  729. __IO uint32_t PWMINTEN1; /*!< [0x0084] Timer PWM Interrupt Enable Register 1 */
  730. __IO uint32_t PWMINTSTS0; /*!< [0x0088] Timer PWM Interrupt Status Register 0 */
  731. __IO uint32_t PWMINTSTS1; /*!< [0x008c] Timer PWM Interrupt Status Register 1 */
  732. __IO uint32_t PWMEADCTS; /*!< [0x0090] Timer PWM EADC Trigger Source Select Register */
  733. __IO uint32_t PWMSCTL; /*!< [0x0094] Timer PWM Synchronous Control Register */
  734. __O uint32_t PWMSTRG; /*!< [0x0098] Timer PWM Synchronous Trigger Register */
  735. __IO uint32_t PWMSTATUS; /*!< [0x009c] Timer PWM Status Register */
  736. __I uint32_t PWMPBUF; /*!< [0x00a0] Timer PWM Period Buffer Register */
  737. __I uint32_t PWMCMPBUF; /*!< [0x00a4] Timer PWM Comparator Buffer Register */
  738. } TIMER_T;
  739. /**
  740. @addtogroup TIMER_CONST TIMER Bit Field Definition
  741. Constant Definitions for TIMER Controller
  742. @{ */
  743. #define TIMER_CTL_PSC_Pos (0) /*!< TIMER_T::CTL: PSC Position */
  744. #define TIMER_CTL_PSC_Msk (0xfful << TIMER_CTL_PSC_Pos) /*!< TIMER_T::CTL: PSC Mask */
  745. #define TIMER_CTL_INTRGEN_Pos (19) /*!< TIMER_T::CTL: INTRGEN Position */
  746. #define TIMER_CTL_INTRGEN_Msk (0x1ul << TIMER_CTL_INTRGEN_Pos) /*!< TIMER_T::CTL: INTRGEN Mask */
  747. #define TIMER_CTL_PERIOSEL_Pos (20) /*!< TIMER_T::CTL: PERIOSEL Position */
  748. #define TIMER_CTL_PERIOSEL_Msk (0x1ul << TIMER_CTL_PERIOSEL_Pos) /*!< TIMER_T::CTL: PERIOSEL Mask */
  749. #define TIMER_CTL_TGLPINSEL_Pos (21) /*!< TIMER_T::CTL: TGLPINSEL Position */
  750. #define TIMER_CTL_TGLPINSEL_Msk (0x1ul << TIMER_CTL_TGLPINSEL_Pos) /*!< TIMER_T::CTL: TGLPINSEL Mask */
  751. #define TIMER_CTL_CAPSRC_Pos (22) /*!< TIMER_T::CTL: CAPSRC Position */
  752. #define TIMER_CTL_CAPSRC_Msk (0x1ul << TIMER_CTL_CAPSRC_Pos) /*!< TIMER_T::CTL: CAPSRC Mask */
  753. #define TIMER_CTL_WKEN_Pos (23) /*!< TIMER_T::CTL: WKEN Position */
  754. #define TIMER_CTL_WKEN_Msk (0x1ul << TIMER_CTL_WKEN_Pos) /*!< TIMER_T::CTL: WKEN Mask */
  755. #define TIMER_CTL_EXTCNTEN_Pos (24) /*!< TIMER_T::CTL: EXTCNTEN Position */
  756. #define TIMER_CTL_EXTCNTEN_Msk (0x1ul << TIMER_CTL_EXTCNTEN_Pos) /*!< TIMER_T::CTL: EXTCNTEN Mask */
  757. #define TIMER_CTL_ACTSTS_Pos (25) /*!< TIMER_T::CTL: ACTSTS Position */
  758. #define TIMER_CTL_ACTSTS_Msk (0x1ul << TIMER_CTL_ACTSTS_Pos) /*!< TIMER_T::CTL: ACTSTS Mask */
  759. #define TIMER_CTL_OPMODE_Pos (27) /*!< TIMER_T::CTL: OPMODE Position */
  760. #define TIMER_CTL_OPMODE_Msk (0x3ul << TIMER_CTL_OPMODE_Pos) /*!< TIMER_T::CTL: OPMODE Mask */
  761. #define TIMER_CTL_INTEN_Pos (29) /*!< TIMER_T::CTL: INTEN Position */
  762. #define TIMER_CTL_INTEN_Msk (0x1ul << TIMER_CTL_INTEN_Pos) /*!< TIMER_T::CTL: INTEN Mask */
  763. #define TIMER_CTL_CNTEN_Pos (30) /*!< TIMER_T::CTL: CNTEN Position */
  764. #define TIMER_CTL_CNTEN_Msk (0x1ul << TIMER_CTL_CNTEN_Pos) /*!< TIMER_T::CTL: CNTEN Mask */
  765. #define TIMER_CTL_ICEDEBUG_Pos (31) /*!< TIMER_T::CTL: ICEDEBUG Position */
  766. #define TIMER_CTL_ICEDEBUG_Msk (0x1ul << TIMER_CTL_ICEDEBUG_Pos) /*!< TIMER_T::CTL: ICEDEBUG Mask */
  767. #define TIMER_CMP_CMPDAT_Pos (0) /*!< TIMER_T::CMP: CMPDAT Position */
  768. #define TIMER_CMP_CMPDAT_Msk (0xfffffful << TIMER_CMP_CMPDAT_Pos) /*!< TIMER_T::CMP: CMPDAT Mask */
  769. #define TIMER_INTSTS_TIF_Pos (0) /*!< TIMER_T::INTSTS: TIF Position */
  770. #define TIMER_INTSTS_TIF_Msk (0x1ul << TIMER_INTSTS_TIF_Pos) /*!< TIMER_T::INTSTS: TIF Mask */
  771. #define TIMER_INTSTS_TWKF_Pos (1) /*!< TIMER_T::INTSTS: TWKF Position */
  772. #define TIMER_INTSTS_TWKF_Msk (0x1ul << TIMER_INTSTS_TWKF_Pos) /*!< TIMER_T::INTSTS: TWKF Mask */
  773. #define TIMER_CNT_CNT_Pos (0) /*!< TIMER_T::CNT: CNT Position */
  774. #define TIMER_CNT_CNT_Msk (0xfffffful << TIMER_CNT_CNT_Pos) /*!< TIMER_T::CNT: CNT Mask */
  775. #define TIMER_CNT_RSTACT_Pos (31) /*!< TIMER_T::CNT: RSTACT Position */
  776. #define TIMER_CNT_RSTACT_Msk (0x1ul << TIMER_CNT_RSTACT_Pos) /*!< TIMER_T::CNT: RSTACT Mask */
  777. #define TIMER_CAP_CAPDAT_Pos (0) /*!< TIMER_T::CAP: CAPDAT Position */
  778. #define TIMER_CAP_CAPDAT_Msk (0xfffffful << TIMER_CAP_CAPDAT_Pos) /*!< TIMER_T::CAP: CAPDAT Mask */
  779. #define TIMER_EXTCTL_CNTPHASE_Pos (0) /*!< TIMER_T::EXTCTL: CNTPHASE Position */
  780. #define TIMER_EXTCTL_CNTPHASE_Msk (0x1ul << TIMER_EXTCTL_CNTPHASE_Pos) /*!< TIMER_T::EXTCTL: CNTPHASE Mask */
  781. #define TIMER_EXTCTL_CAPEN_Pos (3) /*!< TIMER_T::EXTCTL: CAPEN Position */
  782. #define TIMER_EXTCTL_CAPEN_Msk (0x1ul << TIMER_EXTCTL_CAPEN_Pos) /*!< TIMER_T::EXTCTL: CAPEN Mask */
  783. #define TIMER_EXTCTL_CAPFUNCS_Pos (4) /*!< TIMER_T::EXTCTL: CAPFUNCS Position */
  784. #define TIMER_EXTCTL_CAPFUNCS_Msk (0x1ul << TIMER_EXTCTL_CAPFUNCS_Pos) /*!< TIMER_T::EXTCTL: CAPFUNCS Mask */
  785. #define TIMER_EXTCTL_CAPIEN_Pos (5) /*!< TIMER_T::EXTCTL: CAPIEN Position */
  786. #define TIMER_EXTCTL_CAPIEN_Msk (0x1ul << TIMER_EXTCTL_CAPIEN_Pos) /*!< TIMER_T::EXTCTL: CAPIEN Mask */
  787. #define TIMER_EXTCTL_CAPDBEN_Pos (6) /*!< TIMER_T::EXTCTL: CAPDBEN Position */
  788. #define TIMER_EXTCTL_CAPDBEN_Msk (0x1ul << TIMER_EXTCTL_CAPDBEN_Pos) /*!< TIMER_T::EXTCTL: CAPDBEN Mask */
  789. #define TIMER_EXTCTL_CNTDBEN_Pos (7) /*!< TIMER_T::EXTCTL: CNTDBEN Position */
  790. #define TIMER_EXTCTL_CNTDBEN_Msk (0x1ul << TIMER_EXTCTL_CNTDBEN_Pos) /*!< TIMER_T::EXTCTL: CNTDBEN Mask */
  791. #define TIMER_EXTCTL_ICAPSSEL_Pos (8) /*!< TIMER_T::EXTCTL: ICAPSSEL Position */
  792. #define TIMER_EXTCTL_ICAPSSEL_Msk (0x7ul << TIMER_EXTCTL_ICAPSSEL_Pos) /*!< TIMER_T::EXTCTL: ICAPSSEL Mask */
  793. #define TIMER_EXTCTL_CAPEDGE_Pos (12) /*!< TIMER_T::EXTCTL: CAPEDGE Position */
  794. #define TIMER_EXTCTL_CAPEDGE_Msk (0x7ul << TIMER_EXTCTL_CAPEDGE_Pos) /*!< TIMER_T::EXTCTL: CAPEDGE Mask */
  795. #define TIMER_EXTCTL_ECNTSSEL_Pos (16) /*!< TIMER_T::EXTCTL: ECNTSSEL Position */
  796. #define TIMER_EXTCTL_ECNTSSEL_Msk (0x1ul << TIMER_EXTCTL_ECNTSSEL_Pos) /*!< TIMER_T::EXTCTL: ECNTSSEL Mask */
  797. #define TIMER_EXTCTL_CAPSDIV_Pos (28) /*!< TIMER_T::EXTCTL: CAPSDIV Position */
  798. #define TIMER_EXTCTL_CAPSDIV_Msk (0xful << TIMER_EXTCTL_CAPSDIV_Pos) /*!< TIMER_T::EXTCTL: CAPSDIV Mask */
  799. #define TIMER_EINTSTS_CAPIF_Pos (0) /*!< TIMER_T::EINTSTS: CAPIF Position */
  800. #define TIMER_EINTSTS_CAPIF_Msk (0x1ul << TIMER_EINTSTS_CAPIF_Pos) /*!< TIMER_T::EINTSTS: CAPIF Mask */
  801. #define TIMER_TRGCTL_TRGSSEL_Pos (0) /*!< TIMER_T::TRGCTL: TRGSSEL Position */
  802. #define TIMER_TRGCTL_TRGSSEL_Msk (0x1ul << TIMER_TRGCTL_TRGSSEL_Pos) /*!< TIMER_T::TRGCTL: TRGSSEL Mask */
  803. #define TIMER_TRGCTL_TRGPWM_Pos (1) /*!< TIMER_T::TRGCTL: TRGPWM Position */
  804. #define TIMER_TRGCTL_TRGPWM_Msk (0x1ul << TIMER_TRGCTL_TRGPWM_Pos) /*!< TIMER_T::TRGCTL: TRGPWM Mask */
  805. #define TIMER_TRGCTL_TRGEADC_Pos (2) /*!< TIMER_T::TRGCTL: TRGEADC Position */
  806. #define TIMER_TRGCTL_TRGEADC_Msk (0x1ul << TIMER_TRGCTL_TRGEADC_Pos) /*!< TIMER_T::TRGCTL: TRGEADC Mask */
  807. #define TIMER_TRGCTL_TRGPDMA_Pos (4) /*!< TIMER_T::TRGCTL: TRGPDMA Position */
  808. #define TIMER_TRGCTL_TRGPDMA_Msk (0x1ul << TIMER_TRGCTL_TRGPDMA_Pos) /*!< TIMER_T::TRGCTL: TRGPDMA Mask */
  809. #define TIMER_ALTCTL_FUNCSEL_Pos (0) /*!< TIMER_T::ALTCTL: FUNCSEL Position */
  810. #define TIMER_ALTCTL_FUNCSEL_Msk (0x1ul << TIMER_ALTCTL_FUNCSEL_Pos) /*!< TIMER_T::ALTCTL: FUNCSEL Mask */
  811. #define TIMER_PWMCTL_CNTEN_Pos (0) /*!< TIMER_T::PWMCTL: CNTEN Position */
  812. #define TIMER_PWMCTL_CNTEN_Msk (0x1ul << TIMER_PWMCTL_CNTEN_Pos) /*!< TIMER_T::PWMCTL: CNTEN Mask */
  813. #define TIMER_PWMCTL_CNTTYPE_Pos (1) /*!< TIMER_T::PWMCTL: CNTTYPE Position */
  814. #define TIMER_PWMCTL_CNTTYPE_Msk (0x3ul << TIMER_PWMCTL_CNTTYPE_Pos) /*!< TIMER_T::PWMCTL: CNTTYPE Mask */
  815. #define TIMER_PWMCTL_CNTMODE_Pos (3) /*!< TIMER_T::PWMCTL: CNTMODE Position */
  816. #define TIMER_PWMCTL_CNTMODE_Msk (0x1ul << TIMER_PWMCTL_CNTMODE_Pos) /*!< TIMER_T::PWMCTL: CNTMODE Mask */
  817. #define TIMER_PWMCTL_CTRLD_Pos (8) /*!< TIMER_T::PWMCTL: CTRLD Position */
  818. #define TIMER_PWMCTL_CTRLD_Msk (0x1ul << TIMER_PWMCTL_CTRLD_Pos) /*!< TIMER_T::PWMCTL: CTRLD Mask */
  819. #define TIMER_PWMCTL_IMMLDEN_Pos (9) /*!< TIMER_T::PWMCTL: IMMLDEN Position */
  820. #define TIMER_PWMCTL_IMMLDEN_Msk (0x1ul << TIMER_PWMCTL_IMMLDEN_Pos) /*!< TIMER_T::PWMCTL: IMMLDEN Mask */
  821. #define TIMER_PWMCTL_OUTMODE_Pos (16) /*!< TIMER_T::PWMCTL: OUTMODE Position */
  822. #define TIMER_PWMCTL_OUTMODE_Msk (0x1ul << TIMER_PWMCTL_OUTMODE_Pos) /*!< TIMER_T::PWMCTL: OUTMODE Mask */
  823. #define TIMER_PWMCTL_DBGHALT_Pos (30) /*!< TIMER_T::PWMCTL: DBGHALT Position */
  824. #define TIMER_PWMCTL_DBGHALT_Msk (0x1ul << TIMER_PWMCTL_DBGHALT_Pos) /*!< TIMER_T::PWMCTL: DBGHALT Mask */
  825. #define TIMER_PWMCTL_DBGTRIOFF_Pos (31) /*!< TIMER_T::PWMCTL: DBGTRIOFF Position */
  826. #define TIMER_PWMCTL_DBGTRIOFF_Msk (0x1ul << TIMER_PWMCTL_DBGTRIOFF_Pos) /*!< TIMER_T::PWMCTL: DBGTRIOFF Mask */
  827. #define TIMER_PWMCLKSRC_CLKSRC_Pos (0) /*!< TIMER_T::PWMCLKSRC: CLKSRC Position */
  828. #define TIMER_PWMCLKSRC_CLKSRC_Msk (0xful << TIMER_PWMCLKSRC_CLKSRC_Pos) /*!< TIMER_T::PWMCLKSRC: CLKSRC Mask */
  829. #define TIMER_PWMCLKPSC_CLKPSC_Pos (0) /*!< TIMER_T::PWMCLKPSC: CLKPSC Position */
  830. #define TIMER_PWMCLKPSC_CLKPSC_Msk (0xffful << TIMER_PWMCLKPSC_CLKPSC_Pos) /*!< TIMER_T::PWMCLKPSC: CLKPSC Mask */
  831. #define TIMER_PWMCNTCLR_CNTCLR_Pos (0) /*!< TIMER_T::PWMCNTCLR: CNTCLR Position */
  832. #define TIMER_PWMCNTCLR_CNTCLR_Msk (0x1ul << TIMER_PWMCNTCLR_CNTCLR_Pos) /*!< TIMER_T::PWMCNTCLR: CNTCLR Mask */
  833. #define TIMER_PWMPERIOD_PERIOD_Pos (0) /*!< TIMER_T::PWMPERIOD: PERIOD Position */
  834. #define TIMER_PWMPERIOD_PERIOD_Msk (0xfffful << TIMER_PWMPERIOD_PERIOD_Pos) /*!< TIMER_T::PWMPERIOD: PERIOD Mask */
  835. #define TIMER_PWMCMPDAT_CMP_Pos (0) /*!< TIMER_T::PWMCMPDAT: CMP Position */
  836. #define TIMER_PWMCMPDAT_CMP_Msk (0xfffful << TIMER_PWMCMPDAT_CMP_Pos) /*!< TIMER_T::PWMCMPDAT: CMP Mask */
  837. #define TIMER_PWMDTCTL_DTCNT_Pos (0) /*!< TIMER_T::PWMDTCTL: DTCNT Position */
  838. #define TIMER_PWMDTCTL_DTCNT_Msk (0xffful << TIMER_PWMDTCTL_DTCNT_Pos) /*!< TIMER_T::PWMDTCTL: DTCNT Mask */
  839. #define TIMER_PWMDTCTL_DTEN_Pos (16) /*!< TIMER_T::PWMDTCTL: DTEN Position */
  840. #define TIMER_PWMDTCTL_DTEN_Msk (0x1ul << TIMER_PWMDTCTL_DTEN_Pos) /*!< TIMER_T::PWMDTCTL: DTEN Mask */
  841. #define TIMER_PWMDTCTL_DTCKSEL_Pos (24) /*!< TIMER_T::PWMDTCTL: DTCKSEL Position */
  842. #define TIMER_PWMDTCTL_DTCKSEL_Msk (0x1ul << TIMER_PWMDTCTL_DTCKSEL_Pos) /*!< TIMER_T::PWMDTCTL: DTCKSEL Mask */
  843. #define TIMER_PWMCNT_CNT_Pos (0) /*!< TIMER_T::PWMCNT: CNT Position */
  844. #define TIMER_PWMCNT_CNT_Msk (0xfffful << TIMER_PWMCNT_CNT_Pos) /*!< TIMER_T::PWMCNT: CNT Mask */
  845. #define TIMER_PWMCNT_DIRF_Pos (16) /*!< TIMER_T::PWMCNT: DIRF Position */
  846. #define TIMER_PWMCNT_DIRF_Msk (0x1ul << TIMER_PWMCNT_DIRF_Pos) /*!< TIMER_T::PWMCNT: DIRF Mask */
  847. #define TIMER_PWMMSKEN_MSKEN0_Pos (0) /*!< TIMER_T::PWMMSKEN: MSKEN0 Position */
  848. #define TIMER_PWMMSKEN_MSKEN0_Msk (0x1ul << TIMER_PWMMSKEN_MSKEN0_Pos) /*!< TIMER_T::PWMMSKEN: MSKEN0 Mask */
  849. #define TIMER_PWMMSKEN_MSKEN1_Pos (1) /*!< TIMER_T::PWMMSKEN: MSKEN1 Position */
  850. #define TIMER_PWMMSKEN_MSKEN1_Msk (0x1ul << TIMER_PWMMSKEN_MSKEN1_Pos) /*!< TIMER_T::PWMMSKEN: MSKEN1 Mask */
  851. #define TIMER_PWMMSK_MSKDAT0_Pos (0) /*!< TIMER_T::PWMMSK: MSKDAT0 Position */
  852. #define TIMER_PWMMSK_MSKDAT0_Msk (0x1ul << TIMER_PWMMSK_MSKDAT0_Pos) /*!< TIMER_T::PWMMSK: MSKDAT0 Mask */
  853. #define TIMER_PWMMSK_MSKDAT1_Pos (1) /*!< TIMER_T::PWMMSK: MSKDAT1 Position */
  854. #define TIMER_PWMMSK_MSKDAT1_Msk (0x1ul << TIMER_PWMMSK_MSKDAT1_Pos) /*!< TIMER_T::PWMMSK: MSKDAT1 Mask */
  855. #define TIMER_PWMBNF_BRKNFEN_Pos (0) /*!< TIMER_T::PWMBNF: BRKNFEN Position */
  856. #define TIMER_PWMBNF_BRKNFEN_Msk (0x1ul << TIMER_PWMBNF_BRKNFEN_Pos) /*!< TIMER_T::PWMBNF: BRKNFEN Mask */
  857. #define TIMER_PWMBNF_BRKNFSEL_Pos (1) /*!< TIMER_T::PWMBNF: BRKNFSEL Position */
  858. #define TIMER_PWMBNF_BRKNFSEL_Msk (0x7ul << TIMER_PWMBNF_BRKNFSEL_Pos) /*!< TIMER_T::PWMBNF: BRKNFSEL Mask */
  859. #define TIMER_PWMBNF_BRKFCNT_Pos (4) /*!< TIMER_T::PWMBNF: BRKFCNT Position */
  860. #define TIMER_PWMBNF_BRKFCNT_Msk (0x7ul << TIMER_PWMBNF_BRKFCNT_Pos) /*!< TIMER_T::PWMBNF: BRKFCNT Mask */
  861. #define TIMER_PWMBNF_BRKPINV_Pos (7) /*!< TIMER_T::PWMBNF: BRKPINV Position */
  862. #define TIMER_PWMBNF_BRKPINV_Msk (0x1ul << TIMER_PWMBNF_BRKPINV_Pos) /*!< TIMER_T::PWMBNF: BRKPINV Mask */
  863. #define TIMER_PWMBNF_BKPINSRC_Pos (16) /*!< TIMER_T::PWMBNF: BKPINSRC Position */
  864. #define TIMER_PWMBNF_BKPINSRC_Msk (0x7ul << TIMER_PWMBNF_BKPINSRC_Pos) /*!< TIMER_T::PWMBNF: BKPINSRC Mask */
  865. #define TIMER_PWMFAILBRK_CSSBRKEN_Pos (0) /*!< TIMER_T::PWMFAILBRK: CSSBRKEN Position */
  866. #define TIMER_PWMFAILBRK_CSSBRKEN_Msk (0x1ul << TIMER_PWMFAILBRK_CSSBRKEN_Pos) /*!< TIMER_T::PWMFAILBRK: CSSBRKEN Mask */
  867. #define TIMER_PWMFAILBRK_LVDBRKEN_Pos (1) /*!< TIMER_T::PWMFAILBRK: LVDBRKEN Position */
  868. #define TIMER_PWMFAILBRK_LVDBRKEN_Msk (0x1ul << TIMER_PWMFAILBRK_LVDBRKEN_Pos) /*!< TIMER_T::PWMFAILBRK: LVDBRKEN Mask */
  869. #define TIMER_PWMFAILBRK_CORBRKEN_Pos (3) /*!< TIMER_T::PWMFAILBRK: CORBRKEN Position */
  870. #define TIMER_PWMFAILBRK_CORBRKEN_Msk (0x1ul << TIMER_PWMFAILBRK_CORBRKEN_Pos) /*!< TIMER_T::PWMFAILBRK: CORBRKEN Mask */
  871. #define TIMER_PWMBRKCTL_BRKPEEN_Pos (4) /*!< TIMER_T::PWMBRKCTL: BRKPEEN Position */
  872. #define TIMER_PWMBRKCTL_BRKPEEN_Msk (0x1ul << TIMER_PWMBRKCTL_BRKPEEN_Pos) /*!< TIMER_T::PWMBRKCTL: BRKPEEN Mask */
  873. #define TIMER_PWMBRKCTL_SYSEBEN_Pos (7) /*!< TIMER_T::PWMBRKCTL: SYSEBEN Position */
  874. #define TIMER_PWMBRKCTL_SYSEBEN_Msk (0x1ul << TIMER_PWMBRKCTL_SYSEBEN_Pos) /*!< TIMER_T::PWMBRKCTL: SYSEBEN Mask */
  875. #define TIMER_PWMBRKCTL_BRKPLEN_Pos (12) /*!< TIMER_T::PWMBRKCTL: BRKPLEN Position */
  876. #define TIMER_PWMBRKCTL_BRKPLEN_Msk (0x1ul << TIMER_PWMBRKCTL_BRKPLEN_Pos) /*!< TIMER_T::PWMBRKCTL: BRKPLEN Mask */
  877. #define TIMER_PWMBRKCTL_SYSLBEN_Pos (15) /*!< TIMER_T::PWMBRKCTL: SYSLBEN Position */
  878. #define TIMER_PWMBRKCTL_SYSLBEN_Msk (0x1ul << TIMER_PWMBRKCTL_SYSLBEN_Pos) /*!< TIMER_T::PWMBRKCTL: SYSLBEN Mask */
  879. #define TIMER_PWMBRKCTL_BRKAEVEN_Pos (16) /*!< TIMER_T::PWMBRKCTL: BRKAEVEN Position */
  880. #define TIMER_PWMBRKCTL_BRKAEVEN_Msk (0x3ul << TIMER_PWMBRKCTL_BRKAEVEN_Pos) /*!< TIMER_T::PWMBRKCTL: BRKAEVEN Mask */
  881. #define TIMER_PWMBRKCTL_BRKAODD_Pos (18) /*!< TIMER_T::PWMBRKCTL: BRKAODD Position */
  882. #define TIMER_PWMBRKCTL_BRKAODD_Msk (0x3ul << TIMER_PWMBRKCTL_BRKAODD_Pos) /*!< TIMER_T::PWMBRKCTL: BRKAODD Mask */
  883. #define TIMER_PWMPOLCTL_PINV0_Pos (0) /*!< TIMER_T::PWMPOLCTL: PINV0 Position */
  884. #define TIMER_PWMPOLCTL_PINV0_Msk (0x1ul << TIMER_PWMPOLCTL_PINV0_Pos) /*!< TIMER_T::PWMPOLCTL: PINV0 Mask */
  885. #define TIMER_PWMPOLCTL_PINV1_Pos (1) /*!< TIMER_T::PWMPOLCTL: PINV1 Position */
  886. #define TIMER_PWMPOLCTL_PINV1_Msk (0x1ul << TIMER_PWMPOLCTL_PINV1_Pos) /*!< TIMER_T::PWMPOLCTL: PINV1 Mask */
  887. #define TIMER_PWMPOEN_POEN0_Pos (0) /*!< TIMER_T::PWMPOEN: POEN0 Position */
  888. #define TIMER_PWMPOEN_POEN0_Msk (0x1ul << TIMER_PWMPOEN_POEN0_Pos) /*!< TIMER_T::PWMPOEN: POEN0 Mask */
  889. #define TIMER_PWMPOEN_POEN1_Pos (1) /*!< TIMER_T::PWMPOEN: POEN1 Position */
  890. #define TIMER_PWMPOEN_POEN1_Msk (0x1ul << TIMER_PWMPOEN_POEN1_Pos) /*!< TIMER_T::PWMPOEN: POEN1 Mask */
  891. #define TIMER_PWMSWBRK_BRKETRG_Pos (0) /*!< TIMER_T::PWMSWBRK: BRKETRG Position */
  892. #define TIMER_PWMSWBRK_BRKETRG_Msk (0x1ul << TIMER_PWMSWBRK_BRKETRG_Pos) /*!< TIMER_T::PWMSWBRK: BRKETRG Mask */
  893. #define TIMER_PWMSWBRK_BRKLTRG_Pos (8) /*!< TIMER_T::PWMSWBRK: BRKLTRG Position */
  894. #define TIMER_PWMSWBRK_BRKLTRG_Msk (0x1ul << TIMER_PWMSWBRK_BRKLTRG_Pos) /*!< TIMER_T::PWMSWBRK: BRKLTRG Mask */
  895. #define TIMER_PWMINTEN0_ZIEN_Pos (0) /*!< TIMER_T::PWMINTEN0: ZIEN Position */
  896. #define TIMER_PWMINTEN0_ZIEN_Msk (0x1ul << TIMER_PWMINTEN0_ZIEN_Pos) /*!< TIMER_T::PWMINTEN0: ZIEN Mask */
  897. #define TIMER_PWMINTEN0_PIEN_Pos (1) /*!< TIMER_T::PWMINTEN0: PIEN Position */
  898. #define TIMER_PWMINTEN0_PIEN_Msk (0x1ul << TIMER_PWMINTEN0_PIEN_Pos) /*!< TIMER_T::PWMINTEN0: PIEN Mask */
  899. #define TIMER_PWMINTEN0_CMPUIEN_Pos (2) /*!< TIMER_T::PWMINTEN0: CMPUIEN Position */
  900. #define TIMER_PWMINTEN0_CMPUIEN_Msk (0x1ul << TIMER_PWMINTEN0_CMPUIEN_Pos) /*!< TIMER_T::PWMINTEN0: CMPUIEN Mask */
  901. #define TIMER_PWMINTEN0_CMPDIEN_Pos (3) /*!< TIMER_T::PWMINTEN0: CMPDIEN Position */
  902. #define TIMER_PWMINTEN0_CMPDIEN_Msk (0x1ul << TIMER_PWMINTEN0_CMPDIEN_Pos) /*!< TIMER_T::PWMINTEN0: CMPDIEN Mask */
  903. #define TIMER_PWMINTEN1_BRKEIEN_Pos (0) /*!< TIMER_T::PWMINTEN1: BRKEIEN Position */
  904. #define TIMER_PWMINTEN1_BRKEIEN_Msk (0x1ul << TIMER_PWMINTEN1_BRKEIEN_Pos) /*!< TIMER_T::PWMINTEN1: BRKEIEN Mask */
  905. #define TIMER_PWMINTEN1_BRKLIEN_Pos (8) /*!< TIMER_T::PWMINTEN1: BRKLIEN Position */
  906. #define TIMER_PWMINTEN1_BRKLIEN_Msk (0x1ul << TIMER_PWMINTEN1_BRKLIEN_Pos) /*!< TIMER_T::PWMINTEN1: BRKLIEN Mask */
  907. #define TIMER_PWMINTSTS0_ZIF_Pos (0) /*!< TIMER_T::PWMINTSTS0: ZIF Position */
  908. #define TIMER_PWMINTSTS0_ZIF_Msk (0x1ul << TIMER_PWMINTSTS0_ZIF_Pos) /*!< TIMER_T::PWMINTSTS0: ZIF Mask */
  909. #define TIMER_PWMINTSTS0_PIF_Pos (1) /*!< TIMER_T::PWMINTSTS0: PIF Position */
  910. #define TIMER_PWMINTSTS0_PIF_Msk (0x1ul << TIMER_PWMINTSTS0_PIF_Pos) /*!< TIMER_T::PWMINTSTS0: PIF Mask */
  911. #define TIMER_PWMINTSTS0_CMPUIF_Pos (2) /*!< TIMER_T::PWMINTSTS0: CMPUIF Position */
  912. #define TIMER_PWMINTSTS0_CMPUIF_Msk (0x1ul << TIMER_PWMINTSTS0_CMPUIF_Pos) /*!< TIMER_T::PWMINTSTS0: CMPUIF Mask */
  913. #define TIMER_PWMINTSTS0_CMPDIF_Pos (3) /*!< TIMER_T::PWMINTSTS0: CMPDIF Position */
  914. #define TIMER_PWMINTSTS0_CMPDIF_Msk (0x1ul << TIMER_PWMINTSTS0_CMPDIF_Pos) /*!< TIMER_T::PWMINTSTS0: CMPDIF Mask */
  915. #define TIMER_PWMINTSTS1_BRKEIF0_Pos (0) /*!< TIMER_T::PWMINTSTS1: BRKEIF0 Position */
  916. #define TIMER_PWMINTSTS1_BRKEIF0_Msk (0x1ul << TIMER_PWMINTSTS1_BRKEIF0_Pos) /*!< TIMER_T::PWMINTSTS1: BRKEIF0 Mask */
  917. #define TIMER_PWMINTSTS1_BRKEIF1_Pos (1) /*!< TIMER_T::PWMINTSTS1: BRKEIF1 Position */
  918. #define TIMER_PWMINTSTS1_BRKEIF1_Msk (0x1ul << TIMER_PWMINTSTS1_BRKEIF1_Pos) /*!< TIMER_T::PWMINTSTS1: BRKEIF1 Mask */
  919. #define TIMER_PWMINTSTS1_BRKLIF0_Pos (8) /*!< TIMER_T::PWMINTSTS1: BRKLIF0 Position */
  920. #define TIMER_PWMINTSTS1_BRKLIF0_Msk (0x1ul << TIMER_PWMINTSTS1_BRKLIF0_Pos) /*!< TIMER_T::PWMINTSTS1: BRKLIF0 Mask */
  921. #define TIMER_PWMINTSTS1_BRKLIF1_Pos (9) /*!< TIMER_T::PWMINTSTS1: BRKLIF1 Position */
  922. #define TIMER_PWMINTSTS1_BRKLIF1_Msk (0x1ul << TIMER_PWMINTSTS1_BRKLIF1_Pos) /*!< TIMER_T::PWMINTSTS1: BRKLIF1 Mask */
  923. #define TIMER_PWMINTSTS1_BRKESTS0_Pos (16) /*!< TIMER_T::PWMINTSTS1: BRKESTS0 Position */
  924. #define TIMER_PWMINTSTS1_BRKESTS0_Msk (0x1ul << TIMER_PWMINTSTS1_BRKESTS0_Pos) /*!< TIMER_T::PWMINTSTS1: BRKESTS0 Mask */
  925. #define TIMER_PWMINTSTS1_BRKESTS1_Pos (17) /*!< TIMER_T::PWMINTSTS1: BRKESTS1 Position */
  926. #define TIMER_PWMINTSTS1_BRKESTS1_Msk (0x1ul << TIMER_PWMINTSTS1_BRKESTS1_Pos) /*!< TIMER_T::PWMINTSTS1: BRKESTS1 Mask */
  927. #define TIMER_PWMINTSTS1_BRKLSTS0_Pos (24) /*!< TIMER_T::PWMINTSTS1: BRKLSTS0 Position */
  928. #define TIMER_PWMINTSTS1_BRKLSTS0_Msk (0x1ul << TIMER_PWMINTSTS1_BRKLSTS0_Pos) /*!< TIMER_T::PWMINTSTS1: BRKLSTS0 Mask */
  929. #define TIMER_PWMINTSTS1_BRKLSTS1_Pos (25) /*!< TIMER_T::PWMINTSTS1: BRKLSTS1 Position */
  930. #define TIMER_PWMINTSTS1_BRKLSTS1_Msk (0x1ul << TIMER_PWMINTSTS1_BRKLSTS1_Pos) /*!< TIMER_T::PWMINTSTS1: BRKLSTS1 Mask */
  931. #define TIMER_PWMEADCTS_TRGSEL_Pos (0) /*!< TIMER_T::PWMEADCTS: TRGSEL Position */
  932. #define TIMER_PWMEADCTS_TRGSEL_Msk (0x7ul << TIMER_PWMEADCTS_TRGSEL_Pos) /*!< TIMER_T::PWMEADCTS: TRGSEL Mask */
  933. #define TIMER_PWMEADCTS_TRGEN_Pos (7) /*!< TIMER_T::PWMEADCTS: TRGEN Position */
  934. #define TIMER_PWMEADCTS_TRGEN_Msk (0x1ul << TIMER_PWMEADCTS_TRGEN_Pos) /*!< TIMER_T::PWMEADCTS: TRGEN Mask */
  935. #define TIMER_PWMSCTL_SYNCMODE_Pos (0) /*!< TIMER_T::PWMSCTL: SYNCMODE Position */
  936. #define TIMER_PWMSCTL_SYNCMODE_Msk (0x3ul << TIMER_PWMSCTL_SYNCMODE_Pos) /*!< TIMER_T::PWMSCTL: SYNCMODE Mask */
  937. #define TIMER_PWMSCTL_SYNCSRC_Pos (8) /*!< TIMER_T::PWMSCTL: SYNCSRC Position */
  938. #define TIMER_PWMSCTL_SYNCSRC_Msk (0x7ul << TIMER_PWMSCTL_SYNCSRC_Pos) /*!< TIMER_T::PWMSCTL: SYNCSRC Mask */
  939. #define TIMER_PWMSTRG_STRGEN_Pos (0) /*!< TIMER_T::PWMSTRG: STRGEN Position */
  940. #define TIMER_PWMSTRG_STRGEN_Msk (0x1ul << TIMER_PWMSTRG_STRGEN_Pos) /*!< TIMER_T::PWMSTRG: STRGEN Mask */
  941. #define TIMER_PWMSTATUS_CNTMAXF_Pos (0) /*!< TIMER_T::PWMSTATUS: CNTMAXF Position */
  942. #define TIMER_PWMSTATUS_CNTMAXF_Msk (0x1ul << TIMER_PWMSTATUS_CNTMAXF_Pos) /*!< TIMER_T::PWMSTATUS: CNTMAXF Mask */
  943. #define TIMER_PWMSTATUS_EADCTRGF_Pos (16) /*!< TIMER_T::PWMSTATUS: EADCTRGF Position */
  944. #define TIMER_PWMSTATUS_EADCTRGF_Msk (0x1ul << TIMER_PWMSTATUS_EADCTRGF_Pos) /*!< TIMER_T::PWMSTATUS: EADCTRGF Mask */
  945. #define TIMER_PWMPBUF_PBUF_Pos (0) /*!< TIMER_T::PWMPBUF: PBUF Position */
  946. #define TIMER_PWMPBUF_PBUF_Msk (0xfffful << TIMER_PWMPBUF_PBUF_Pos) /*!< TIMER_T::PWMPBUF: PBUF Mask */
  947. #define TIMER_PWMCMPBUF_CMPBUF_Pos (0) /*!< TIMER_T::PWMCMPBUF: CMPBUF Position */
  948. #define TIMER_PWMCMPBUF_CMPBUF_Msk (0xfffful << TIMER_PWMCMPBUF_CMPBUF_Pos) /*!< TIMER_T::PWMCMPBUF: CMPBUF Mask */
  949. /**@}*/ /* TIMER_CONST */
  950. /**@}*/ /* end of TIMER register group */
  951. /**@}*/ /* end of REGISTER group */
  952. #if defined ( __CC_ARM )
  953. #pragma no_anon_unions
  954. #endif
  955. #endif /* __TIMER_REG_H__ */