|
@@ -0,0 +1,68 @@
|
|
|
|
|
+/* ================ TIMER0 ================ */
|
|
|
|
|
+typedef struct { /*!< TIMER0 Structure */
|
|
|
|
|
+
|
|
|
|
|
+ union {
|
|
|
|
|
+ __IO uint32_t CR; /*!< Control Register */
|
|
|
|
|
+
|
|
|
|
|
+ struct {
|
|
|
|
|
+ __IO uint32_t EN : 1; /*!< Enable */
|
|
|
|
|
+ __O uint32_t RST : 1; /*!< Reset Timer */
|
|
|
|
|
+ __IO uint32_t CNT : 2; /*!< Counting direction */
|
|
|
|
|
+ __IO uint32_t MODE : 3; /*!< Operation Mode */
|
|
|
|
|
+ __IO uint32_t PSC : 1; /*!< Use Prescaler */
|
|
|
|
|
+ __IO uint32_t CNTSRC : 4; /*!< Timer / Counter Source Divider */
|
|
|
|
|
+ __IO uint32_t CAPSRC : 4; /*!< Timer / Counter Capture Source */
|
|
|
|
|
+ __IO uint32_t CAPEDGE : 2; /*!< Capture Edge, select which Edge should result in a counter increment
|
|
|
|
|
+ or decrement */
|
|
|
|
|
+ uint32_t : 2;
|
|
|
|
|
+ __IO uint32_t TRGEXT : 2; /*!< Triggers an other Peripheral */
|
|
|
|
|
+ uint32_t : 2;
|
|
|
|
|
+ __IO uint32_t RELOAD : 2; /*!< Select RELOAD Register n to reload Timer on condition */
|
|
|
|
|
+ __IO uint32_t IDR : 2; /*!< Selects, if Reload Register number is incremented, decremented
|
|
|
|
|
+ or not modified */
|
|
|
|
|
+ uint32_t : 3;
|
|
|
|
|
+ __IO uint32_t S : 1; /*!< Starts and Stops the Timer / Counter */
|
|
|
|
|
+ } CR_b; /*!< BitSize */
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ union {
|
|
|
|
|
+ __IO uint16_t SR; /*!< Status Register */
|
|
|
|
|
+
|
|
|
|
|
+ struct {
|
|
|
|
|
+ __I uint16_t RUN : 1; /*!< Shows if Timer is running or not */
|
|
|
|
|
+ uint16_t : 7;
|
|
|
|
|
+ __IO uint16_t MATCH : 1; /*!< Shows if the MATCH was hit */
|
|
|
|
|
+ __IO uint16_t UN : 1; /*!< Shows if an underflow occured. This flag is sticky */
|
|
|
|
|
+ __IO uint16_t OV : 1; /*!< Shows if an overflow occured. This flag is sticky */
|
|
|
|
|
+ uint16_t : 1;
|
|
|
|
|
+ __I uint16_t RST : 1; /*!< Shows if Timer is in RESET state */
|
|
|
|
|
+ uint16_t : 1;
|
|
|
|
|
+ __I uint16_t RELOAD : 2; /*!< Shows the currently active RELOAD Register */
|
|
|
|
|
+ } SR_b; /*!< BitSize */
|
|
|
|
|
+ };
|
|
|
|
|
+ __I uint16_t RESERVED0[5];
|
|
|
|
|
+
|
|
|
|
|
+ union {
|
|
|
|
|
+ __IO uint16_t INT; /*!< Interrupt Register */
|
|
|
|
|
+
|
|
|
|
|
+ struct {
|
|
|
|
|
+ __IO uint16_t EN : 1; /*!< Interrupt Enable */
|
|
|
|
|
+ uint16_t : 3;
|
|
|
|
|
+ __IO uint16_t MODE : 3; /*!< Interrupt Mode, selects on which condition the Timer should
|
|
|
|
|
+ generate an Interrupt */
|
|
|
|
|
+ } INT_b; /*!< BitSize */
|
|
|
|
|
+ };
|
|
|
|
|
+ __I uint16_t RESERVED1[7];
|
|
|
|
|
+ __IO uint32_t COUNT; /*!< The Counter Register reflects the actual Value of the Timer/Counter */
|
|
|
|
|
+ __IO uint32_t MATCH; /*!< The Match Register stores the compare Value for the MATCH condition */
|
|
|
|
|
+
|
|
|
|
|
+ union {
|
|
|
|
|
+ __O uint32_t PRESCALE_WR; /*!< The Prescale Register stores the Value for the prescaler. The
|
|
|
|
|
+ cont event gets divided by this value */
|
|
|
|
|
+ __I uint32_t PRESCALE_RD; /*!< The Prescale Register stores the Value for the prescaler. The
|
|
|
|
|
+ cont event gets divided by this value */
|
|
|
|
|
+ };
|
|
|
|
|
+ __I uint32_t RESERVED2[9];
|
|
|
|
|
+ __IO uint32_t RELOAD[4]; /*!< The Reload Register stores the Value the COUNT Register gets
|
|
|
|
|
+ reloaded on a when a condition was met. */
|
|
|
|
|
+} TIMER0_Type;
|