Files
xiuos/Ubiquitous/XiZi_AIoT/services/boards/imx6q-sabrelite/include/registers/regspwm.h
T
2023-04-07 16:23:09 +08:00

978 lines
38 KiB
C

/*
* Copyright (c) 2012, Freescale Semiconductor, Inc.
* All rights reserved.
*
* THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*/
/*
* WARNING! DO NOT EDIT THIS FILE DIRECTLY!
*
* This file was generated automatically and any changes may be lost.
*/
#ifndef __HW_PWM_REGISTERS_H__
#define __HW_PWM_REGISTERS_H__
#include "regs.h"
/*
* i.MX6DQ PWM
*
* PWM
*
* Registers defined in this header file:
* - HW_PWM_PWMCR - PWM Control Register
* - HW_PWM_PWMSR - PWM Status Register
* - HW_PWM_PWMIR - PWM Interrupt Register
* - HW_PWM_PWMSAR - PWM Sample Register
* - HW_PWM_PWMPR - PWM Period Register
* - HW_PWM_PWMCNR - PWM Counter Register
*
* - hw_pwm_t - Struct containing all module registers.
*/
//! @name Module base addresses
//@{
#ifndef REGS_PWM_BASE
#define HW_PWM_INSTANCE_COUNT (4) //!< Number of instances of the PWM module.
#define HW_PWM1 (1) //!< Instance number for PWM1.
#define HW_PWM2 (2) //!< Instance number for PWM2.
#define HW_PWM3 (3) //!< Instance number for PWM3.
#define HW_PWM4 (4) //!< Instance number for PWM4.
#define REGS_PWM1_BASE (0x02080000) //!< Base address for PWM instance number 1.
#define REGS_PWM2_BASE (0x02084000) //!< Base address for PWM instance number 2.
#define REGS_PWM3_BASE (0x02088000) //!< Base address for PWM instance number 3.
#define REGS_PWM4_BASE (0x0208c000) //!< Base address for PWM instance number 4.
//! @brief Get the base address of PWM by instance number.
//! @param x PWM instance number, from 1 through 4.
#define REGS_PWM_BASE(x) ( (x) == HW_PWM1 ? REGS_PWM1_BASE : (x) == HW_PWM2 ? REGS_PWM2_BASE : (x) == HW_PWM3 ? REGS_PWM3_BASE : (x) == HW_PWM4 ? REGS_PWM4_BASE : 0x00d00000)
//! @brief Get the instance number given a base address.
//! @param b Base address for an instance of PWM.
#define REGS_PWM_INSTANCE(b) ( (b) == REGS_PWM1_BASE ? HW_PWM1 : (b) == REGS_PWM2_BASE ? HW_PWM2 : (b) == REGS_PWM3_BASE ? HW_PWM3 : (b) == REGS_PWM4_BASE ? HW_PWM4 : 0)
#endif
//@}
//-------------------------------------------------------------------------------------------
// HW_PWM_PWMCR - PWM Control Register
//-------------------------------------------------------------------------------------------
#ifndef __LANGUAGE_ASM__
/*!
* @brief HW_PWM_PWMCR - PWM Control Register (RW)
*
* Reset value: 0x00000000
*
* The PWM control register (PWM_PWMCR) is used to configure the operating settings of the PWM. It
* contains the prescaler for the clock division.
*/
typedef union _hw_pwm_pwmcr
{
reg32_t U;
struct _hw_pwm_pwmcr_bitfields
{
unsigned EN : 1; //!< [0] PWM Enable.
unsigned REPEAT : 2; //!< [2:1] Sample Repeat.
unsigned SWR : 1; //!< [3] Software Reset.
unsigned PRESCALER : 12; //!< [15:4] Counter Clock Prescaler Value.
unsigned CLKSRC : 2; //!< [17:16] Select Clock Source.
unsigned POUTC : 2; //!< [19:18] PWM Output Configuration.
unsigned HCTR : 1; //!< [20] Half-word Data Swap Control.
unsigned BCTR : 1; //!< [21] Byte Data Swap Control.
unsigned DBGEN : 1; //!< [22] Debug Mode Enable.
unsigned WAITEN : 1; //!< [23] Wait Mode Enable.
unsigned DOZEN : 1; //!< [24] Doze Mode Enable.
unsigned STOPEN : 1; //!< [25] Stop Mode Enable.
unsigned FWM : 2; //!< [27:26] FIFO Water Mark.
unsigned RESERVED0 : 4; //!< [31:28] Reserved.
} B;
} hw_pwm_pwmcr_t;
#endif
/*!
* @name Constants and macros for entire PWM_PWMCR register
*/
//@{
#define HW_PWM_PWMCR_ADDR(x) (REGS_PWM_BASE(x) + 0x0)
#ifndef __LANGUAGE_ASM__
#define HW_PWM_PWMCR(x) (*(volatile hw_pwm_pwmcr_t *) HW_PWM_PWMCR_ADDR(x))
#define HW_PWM_PWMCR_RD(x) (HW_PWM_PWMCR(x).U)
#define HW_PWM_PWMCR_WR(x, v) (HW_PWM_PWMCR(x).U = (v))
#define HW_PWM_PWMCR_SET(x, v) (HW_PWM_PWMCR_WR(x, HW_PWM_PWMCR_RD(x) | (v)))
#define HW_PWM_PWMCR_CLR(x, v) (HW_PWM_PWMCR_WR(x, HW_PWM_PWMCR_RD(x) & ~(v)))
#define HW_PWM_PWMCR_TOG(x, v) (HW_PWM_PWMCR_WR(x, HW_PWM_PWMCR_RD(x) ^ (v)))
#endif
//@}
/*
* constants & macros for individual PWM_PWMCR bitfields
*/
/*! @name Register PWM_PWMCR, field EN[0] (RW)
*
* PWM Enable. This bit enables the PWM. If this bit is not enabled, the clock prescaler and the
* counter is reset. When the PWM is enabled, it begins a new period, the output pin is set to start
* a new period while the prescaler and counter are released and counting begins. To make the PWM
* work with softreset and disable/enable, users can do software reset by seting the SWR bit, wait
* software reset done, configure the registers, and then enable the PWM by setting this bit to "1"
* Users can also disable/enable the PWM if PWM would like to be stopped and resumed with same
* registers configurations .
*
* Values:
* - 0 - PWM disabled
* - 1 - PWM enabled
*/
//@{
#define BP_PWM_PWMCR_EN (0) //!< Bit position for PWM_PWMCR_EN.
#define BM_PWM_PWMCR_EN (0x00000001) //!< Bit mask for PWM_PWMCR_EN.
//! @brief Get value of PWM_PWMCR_EN from a register value.
#define BG_PWM_PWMCR_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_EN) >> BP_PWM_PWMCR_EN)
//! @brief Format value for bitfield PWM_PWMCR_EN.
#define BF_PWM_PWMCR_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_EN) & BM_PWM_PWMCR_EN)
#ifndef __LANGUAGE_ASM__
//! @brief Set the EN field to a new value.
#define BW_PWM_PWMCR_EN(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_EN) | BF_PWM_PWMCR_EN(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field REPEAT[2:1] (RW)
*
* Sample Repeat. This bit field determines the number of times each sample from the FIFO is to be
* used.
*
* Values:
* - 00 - Use each sample once
* - 01 - Use each sample twice
* - 10 - Use each sample four times
* - 11 - Use each sample eight times
*/
//@{
#define BP_PWM_PWMCR_REPEAT (1) //!< Bit position for PWM_PWMCR_REPEAT.
#define BM_PWM_PWMCR_REPEAT (0x00000006) //!< Bit mask for PWM_PWMCR_REPEAT.
//! @brief Get value of PWM_PWMCR_REPEAT from a register value.
#define BG_PWM_PWMCR_REPEAT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_REPEAT) >> BP_PWM_PWMCR_REPEAT)
//! @brief Format value for bitfield PWM_PWMCR_REPEAT.
#define BF_PWM_PWMCR_REPEAT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_REPEAT) & BM_PWM_PWMCR_REPEAT)
#ifndef __LANGUAGE_ASM__
//! @brief Set the REPEAT field to a new value.
#define BW_PWM_PWMCR_REPEAT(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_REPEAT) | BF_PWM_PWMCR_REPEAT(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field SWR[3] (RW)
*
* Software Reset. PWM is reset when this bit is set to 1. It is a self clearing bit. A write 1 to
* this bit is a single wait state write cycle. When the block is in reset state this bit is set and
* is cleared when the reset procedure is over. Setting this bit resets all the registers to their
* reset values except for the STOPEN, DOZEN, WAITEN, and DBGEN bits in this control register .
*
* Values:
* - 0 - PWM is out of reset
* - 1 - PWM is undergoing reset
*/
//@{
#define BP_PWM_PWMCR_SWR (3) //!< Bit position for PWM_PWMCR_SWR.
#define BM_PWM_PWMCR_SWR (0x00000008) //!< Bit mask for PWM_PWMCR_SWR.
//! @brief Get value of PWM_PWMCR_SWR from a register value.
#define BG_PWM_PWMCR_SWR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_SWR) >> BP_PWM_PWMCR_SWR)
//! @brief Format value for bitfield PWM_PWMCR_SWR.
#define BF_PWM_PWMCR_SWR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_SWR) & BM_PWM_PWMCR_SWR)
#ifndef __LANGUAGE_ASM__
//! @brief Set the SWR field to a new value.
#define BW_PWM_PWMCR_SWR(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_SWR) | BF_PWM_PWMCR_SWR(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field PRESCALER[15:4] (RW)
*
* Counter Clock Prescaler Value. This bit field determines the value by which the clock will be
* divided before it goes to the counter.
*
* Values:
* - 0x000 - Divide by 1
* - 0x001 - Divide by 2
* - 0xfff - Divide by 4096
*/
//@{
#define BP_PWM_PWMCR_PRESCALER (4) //!< Bit position for PWM_PWMCR_PRESCALER.
#define BM_PWM_PWMCR_PRESCALER (0x0000fff0) //!< Bit mask for PWM_PWMCR_PRESCALER.
//! @brief Get value of PWM_PWMCR_PRESCALER from a register value.
#define BG_PWM_PWMCR_PRESCALER(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_PRESCALER) >> BP_PWM_PWMCR_PRESCALER)
//! @brief Format value for bitfield PWM_PWMCR_PRESCALER.
#define BF_PWM_PWMCR_PRESCALER(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_PRESCALER) & BM_PWM_PWMCR_PRESCALER)
#ifndef __LANGUAGE_ASM__
//! @brief Set the PRESCALER field to a new value.
#define BW_PWM_PWMCR_PRESCALER(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_PRESCALER) | BF_PWM_PWMCR_PRESCALER(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field CLKSRC[17:16] (RW)
*
* Select Clock Source. These bits determine which clock input will be selected for running the
* counter. After reset the system functional clock is selected. The input clock can also be turned
* off if these bits are set to 00. This field value should only be changed when the PWM is disabled
*
* Values:
* - 00 - Clock is off
* - 01 - ipg_clk
* - 10 - ipg_clk_highfreq
* - 11 - ipg_clk_32k
*/
//@{
#define BP_PWM_PWMCR_CLKSRC (16) //!< Bit position for PWM_PWMCR_CLKSRC.
#define BM_PWM_PWMCR_CLKSRC (0x00030000) //!< Bit mask for PWM_PWMCR_CLKSRC.
//! @brief Get value of PWM_PWMCR_CLKSRC from a register value.
#define BG_PWM_PWMCR_CLKSRC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_CLKSRC) >> BP_PWM_PWMCR_CLKSRC)
//! @brief Format value for bitfield PWM_PWMCR_CLKSRC.
#define BF_PWM_PWMCR_CLKSRC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_CLKSRC) & BM_PWM_PWMCR_CLKSRC)
#ifndef __LANGUAGE_ASM__
//! @brief Set the CLKSRC field to a new value.
#define BW_PWM_PWMCR_CLKSRC(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_CLKSRC) | BF_PWM_PWMCR_CLKSRC(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field POUTC[19:18] (RW)
*
* PWM Output Configuration. This bit field determines the mode of PWM output on the output pin.
*
* Values:
* - 00 - Output pin is set at rollover and cleared at comparison
* - 01 - Output pin is cleared at rollover and set at comparison
* - 10 - PWM output is disconnected
* - 11 - PWM output is disconnected
*/
//@{
#define BP_PWM_PWMCR_POUTC (18) //!< Bit position for PWM_PWMCR_POUTC.
#define BM_PWM_PWMCR_POUTC (0x000c0000) //!< Bit mask for PWM_PWMCR_POUTC.
//! @brief Get value of PWM_PWMCR_POUTC from a register value.
#define BG_PWM_PWMCR_POUTC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_POUTC) >> BP_PWM_PWMCR_POUTC)
//! @brief Format value for bitfield PWM_PWMCR_POUTC.
#define BF_PWM_PWMCR_POUTC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_POUTC) & BM_PWM_PWMCR_POUTC)
#ifndef __LANGUAGE_ASM__
//! @brief Set the POUTC field to a new value.
#define BW_PWM_PWMCR_POUTC(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_POUTC) | BF_PWM_PWMCR_POUTC(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field HCTR[20] (RW)
*
* Half-word Data Swap Control. This bit determines which half word data from the 32-bit IP Bus
* interface is written into the lower 16 bits of the sample register.
*
* Values:
* - 0 - Half word swapping does not take place
* - 1 - Half words from write data bus are swapped
*/
//@{
#define BP_PWM_PWMCR_HCTR (20) //!< Bit position for PWM_PWMCR_HCTR.
#define BM_PWM_PWMCR_HCTR (0x00100000) //!< Bit mask for PWM_PWMCR_HCTR.
//! @brief Get value of PWM_PWMCR_HCTR from a register value.
#define BG_PWM_PWMCR_HCTR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_HCTR) >> BP_PWM_PWMCR_HCTR)
//! @brief Format value for bitfield PWM_PWMCR_HCTR.
#define BF_PWM_PWMCR_HCTR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_HCTR) & BM_PWM_PWMCR_HCTR)
#ifndef __LANGUAGE_ASM__
//! @brief Set the HCTR field to a new value.
#define BW_PWM_PWMCR_HCTR(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_HCTR) | BF_PWM_PWMCR_HCTR(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field BCTR[21] (RW)
*
* Byte Data Swap Control. This bit determines the byte ordering of the 16-bit data when it goes
* into the FIFO from the sample register.
*
* Values:
* - 0 - byte ordering remains the same
* - 1 - byte ordering is reversed
*/
//@{
#define BP_PWM_PWMCR_BCTR (21) //!< Bit position for PWM_PWMCR_BCTR.
#define BM_PWM_PWMCR_BCTR (0x00200000) //!< Bit mask for PWM_PWMCR_BCTR.
//! @brief Get value of PWM_PWMCR_BCTR from a register value.
#define BG_PWM_PWMCR_BCTR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_BCTR) >> BP_PWM_PWMCR_BCTR)
//! @brief Format value for bitfield PWM_PWMCR_BCTR.
#define BF_PWM_PWMCR_BCTR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_BCTR) & BM_PWM_PWMCR_BCTR)
#ifndef __LANGUAGE_ASM__
//! @brief Set the BCTR field to a new value.
#define BW_PWM_PWMCR_BCTR(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_BCTR) | BF_PWM_PWMCR_BCTR(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field DBGEN[22] (RW)
*
* Debug Mode Enable. This bit keeps the PWM functional in debug mode. When this bit is cleared, the
* input clock is gated off in debug mode. This bit is not affected by software reset. It is cleared
* by hardware reset.
*
* Values:
* - 0 - Inactive in debug mode
* - 1 - Active in debug mode
*/
//@{
#define BP_PWM_PWMCR_DBGEN (22) //!< Bit position for PWM_PWMCR_DBGEN.
#define BM_PWM_PWMCR_DBGEN (0x00400000) //!< Bit mask for PWM_PWMCR_DBGEN.
//! @brief Get value of PWM_PWMCR_DBGEN from a register value.
#define BG_PWM_PWMCR_DBGEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_DBGEN) >> BP_PWM_PWMCR_DBGEN)
//! @brief Format value for bitfield PWM_PWMCR_DBGEN.
#define BF_PWM_PWMCR_DBGEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_DBGEN) & BM_PWM_PWMCR_DBGEN)
#ifndef __LANGUAGE_ASM__
//! @brief Set the DBGEN field to a new value.
#define BW_PWM_PWMCR_DBGEN(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_DBGEN) | BF_PWM_PWMCR_DBGEN(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field WAITEN[23] (RW)
*
* Wait Mode Enable. This bit keeps the PWM functional in wait mode. When this bit is cleared, the
* input clock is gated off in wait mode. This bit is not affected by software reset. It is cleared
* by hardware reset.
*
* Values:
* - 0 - Inactive in wait mode
* - 1 - Active in wait mode
*/
//@{
#define BP_PWM_PWMCR_WAITEN (23) //!< Bit position for PWM_PWMCR_WAITEN.
#define BM_PWM_PWMCR_WAITEN (0x00800000) //!< Bit mask for PWM_PWMCR_WAITEN.
//! @brief Get value of PWM_PWMCR_WAITEN from a register value.
#define BG_PWM_PWMCR_WAITEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_WAITEN) >> BP_PWM_PWMCR_WAITEN)
//! @brief Format value for bitfield PWM_PWMCR_WAITEN.
#define BF_PWM_PWMCR_WAITEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_WAITEN) & BM_PWM_PWMCR_WAITEN)
#ifndef __LANGUAGE_ASM__
//! @brief Set the WAITEN field to a new value.
#define BW_PWM_PWMCR_WAITEN(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_WAITEN) | BF_PWM_PWMCR_WAITEN(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field DOZEN[24] (RW)
*
* Doze Mode Enable. This bit keeps the PWM functional in doze mode. When this bit is cleared, the
* input clock is gated off in doze mode. This bit is not affected by software reset. It is cleared
* by hardware reset.
*
* Values:
* - 0 - Inactive in doze mode
* - 1 - Active in doze mode
*/
//@{
#define BP_PWM_PWMCR_DOZEN (24) //!< Bit position for PWM_PWMCR_DOZEN.
#define BM_PWM_PWMCR_DOZEN (0x01000000) //!< Bit mask for PWM_PWMCR_DOZEN.
//! @brief Get value of PWM_PWMCR_DOZEN from a register value.
#define BG_PWM_PWMCR_DOZEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_DOZEN) >> BP_PWM_PWMCR_DOZEN)
//! @brief Format value for bitfield PWM_PWMCR_DOZEN.
#define BF_PWM_PWMCR_DOZEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_DOZEN) & BM_PWM_PWMCR_DOZEN)
#ifndef __LANGUAGE_ASM__
//! @brief Set the DOZEN field to a new value.
#define BW_PWM_PWMCR_DOZEN(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_DOZEN) | BF_PWM_PWMCR_DOZEN(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field STOPEN[25] (RW)
*
* Stop Mode Enable. This bit keeps the PWM functional while in stop mode. When this bit is cleared,
* the input clock is gated off in stop mode. This bit is not affected by software reset. It is
* cleared by hardware reset.
*
* Values:
* - 0 - Inactive in stop mode
* - 1 - Active in stop mode
*/
//@{
#define BP_PWM_PWMCR_STOPEN (25) //!< Bit position for PWM_PWMCR_STOPEN.
#define BM_PWM_PWMCR_STOPEN (0x02000000) //!< Bit mask for PWM_PWMCR_STOPEN.
//! @brief Get value of PWM_PWMCR_STOPEN from a register value.
#define BG_PWM_PWMCR_STOPEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_STOPEN) >> BP_PWM_PWMCR_STOPEN)
//! @brief Format value for bitfield PWM_PWMCR_STOPEN.
#define BF_PWM_PWMCR_STOPEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_STOPEN) & BM_PWM_PWMCR_STOPEN)
#ifndef __LANGUAGE_ASM__
//! @brief Set the STOPEN field to a new value.
#define BW_PWM_PWMCR_STOPEN(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_STOPEN) | BF_PWM_PWMCR_STOPEN(v)))
#endif
//@}
/*! @name Register PWM_PWMCR, field FWM[27:26] (RW)
*
* FIFO Water Mark. These bits are used to set the data level at which the FIFO empty flag will be
* set and the corresponding interrupt generated
*
* Values:
* - 00 - FIFO empty flag is set when there are more than or equal to 1 empty slots in FIFO
* - 01 - FIFO empty flag is set when there are more than or equal to 2 empty slots in FIFO
* - 10 - FIFO empty flag is set when there are more than or equal to 3 empty slots in FIFO
* - 11 - FIFO empty flag is set when there are more than or equal to 4 empty slots in FIFO
*/
//@{
#define BP_PWM_PWMCR_FWM (26) //!< Bit position for PWM_PWMCR_FWM.
#define BM_PWM_PWMCR_FWM (0x0c000000) //!< Bit mask for PWM_PWMCR_FWM.
//! @brief Get value of PWM_PWMCR_FWM from a register value.
#define BG_PWM_PWMCR_FWM(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCR_FWM) >> BP_PWM_PWMCR_FWM)
//! @brief Format value for bitfield PWM_PWMCR_FWM.
#define BF_PWM_PWMCR_FWM(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMCR_FWM) & BM_PWM_PWMCR_FWM)
#ifndef __LANGUAGE_ASM__
//! @brief Set the FWM field to a new value.
#define BW_PWM_PWMCR_FWM(x, v) (HW_PWM_PWMCR_WR(x, (HW_PWM_PWMCR_RD(x) & ~BM_PWM_PWMCR_FWM) | BF_PWM_PWMCR_FWM(v)))
#endif
//@}
//-------------------------------------------------------------------------------------------
// HW_PWM_PWMSR - PWM Status Register
//-------------------------------------------------------------------------------------------
#ifndef __LANGUAGE_ASM__
/*!
* @brief HW_PWM_PWMSR - PWM Status Register (W1C)
*
* Reset value: 0x00000008
*
* The PWM status register (PWM_PWMSR) contains seven bits which display the state of the FIFO and
* the occurrence of rollover and compare events. The FIFOAV bit is read-only but the other four
* bits can be cleared by writing 1 to them. The FE, ROV, and CMP bits are associated with FIFO-
* Empty, Roll-over, and Compare interrupts, respectively.
*/
typedef union _hw_pwm_pwmsr
{
reg32_t U;
struct _hw_pwm_pwmsr_bitfields
{
unsigned FIFOAV : 3; //!< [2:0] FIFO Available.
unsigned FE : 1; //!< [3] FIFO Empty Status Bit.
unsigned ROV : 1; //!< [4] Roll-over Status.
unsigned CMP : 1; //!< [5] Compare Status.
unsigned FWE : 1; //!< [6] FIFO Write Error Status.
unsigned RESERVED0 : 25; //!< [31:7] Reserved.
} B;
} hw_pwm_pwmsr_t;
#endif
/*!
* @name Constants and macros for entire PWM_PWMSR register
*/
//@{
#define HW_PWM_PWMSR_ADDR(x) (REGS_PWM_BASE(x) + 0x4)
#ifndef __LANGUAGE_ASM__
#define HW_PWM_PWMSR(x) (*(volatile hw_pwm_pwmsr_t *) HW_PWM_PWMSR_ADDR(x))
#define HW_PWM_PWMSR_RD(x) (HW_PWM_PWMSR(x).U)
#define HW_PWM_PWMSR_WR(x, v) (HW_PWM_PWMSR(x).U = (v))
#define HW_PWM_PWMSR_SET(x, v) (HW_PWM_PWMSR_WR(x, HW_PWM_PWMSR_RD(x) | (v)))
#define HW_PWM_PWMSR_CLR(x, v) (HW_PWM_PWMSR_WR(x, HW_PWM_PWMSR_RD(x) & ~(v)))
#define HW_PWM_PWMSR_TOG(x, v) (HW_PWM_PWMSR_WR(x, HW_PWM_PWMSR_RD(x) ^ (v)))
#endif
//@}
/*
* constants & macros for individual PWM_PWMSR bitfields
*/
/*! @name Register PWM_PWMSR, field FIFOAV[2:0] (RO)
*
* FIFO Available. These read-only bits indicate the data level remaining in the FIFO. An attempted
* write to these bits will not affect their value and no transfer error is generated.
*
* Values:
* - 000 - No data available
* - 001 - 1 word of data in FIFO
* - 010 - 2 words of data in FIFO
* - 011 - 3 words of data in FIFO
* - 100 - 4 words of data in FIFO
* - 101 - unused
* - 110 - unused
* - 111 - unused
*/
//@{
#define BP_PWM_PWMSR_FIFOAV (0) //!< Bit position for PWM_PWMSR_FIFOAV.
#define BM_PWM_PWMSR_FIFOAV (0x00000007) //!< Bit mask for PWM_PWMSR_FIFOAV.
//! @brief Get value of PWM_PWMSR_FIFOAV from a register value.
#define BG_PWM_PWMSR_FIFOAV(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMSR_FIFOAV) >> BP_PWM_PWMSR_FIFOAV)
//@}
/*! @name Register PWM_PWMSR, field FE[3] (W1C)
*
* FIFO Empty Status Bit. This bit indicates the FIFO data level in comparison to the water level
* set by FWM field in the control register.
*
* Values:
* - 0 - Data level is above water mark
* - 1 - When the data level falls below the mark set by FWM field
*/
//@{
#define BP_PWM_PWMSR_FE (3) //!< Bit position for PWM_PWMSR_FE.
#define BM_PWM_PWMSR_FE (0x00000008) //!< Bit mask for PWM_PWMSR_FE.
//! @brief Get value of PWM_PWMSR_FE from a register value.
#define BG_PWM_PWMSR_FE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMSR_FE) >> BP_PWM_PWMSR_FE)
//! @brief Format value for bitfield PWM_PWMSR_FE.
#define BF_PWM_PWMSR_FE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMSR_FE) & BM_PWM_PWMSR_FE)
#ifndef __LANGUAGE_ASM__
//! @brief Set the FE field to a new value.
#define BW_PWM_PWMSR_FE(x, v) (HW_PWM_PWMSR_WR(x, (HW_PWM_PWMSR_RD(x) & ~BM_PWM_PWMSR_FE) | BF_PWM_PWMSR_FE(v)))
#endif
//@}
/*! @name Register PWM_PWMSR, field ROV[4] (W1C)
*
* Roll-over Status. This bit shows that a roll-over event has occurred.
*
* Values:
* - 0 - Roll-over event not occurred
* - 1 - Roll-over event occurred
*/
//@{
#define BP_PWM_PWMSR_ROV (4) //!< Bit position for PWM_PWMSR_ROV.
#define BM_PWM_PWMSR_ROV (0x00000010) //!< Bit mask for PWM_PWMSR_ROV.
//! @brief Get value of PWM_PWMSR_ROV from a register value.
#define BG_PWM_PWMSR_ROV(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMSR_ROV) >> BP_PWM_PWMSR_ROV)
//! @brief Format value for bitfield PWM_PWMSR_ROV.
#define BF_PWM_PWMSR_ROV(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMSR_ROV) & BM_PWM_PWMSR_ROV)
#ifndef __LANGUAGE_ASM__
//! @brief Set the ROV field to a new value.
#define BW_PWM_PWMSR_ROV(x, v) (HW_PWM_PWMSR_WR(x, (HW_PWM_PWMSR_RD(x) & ~BM_PWM_PWMSR_ROV) | BF_PWM_PWMSR_ROV(v)))
#endif
//@}
/*! @name Register PWM_PWMSR, field CMP[5] (W1C)
*
* Compare Status. This bit shows that a compare event has occurred.
*
* Values:
* - 0 - Compare event not occurred
* - 1 - Compare event occurred
*/
//@{
#define BP_PWM_PWMSR_CMP (5) //!< Bit position for PWM_PWMSR_CMP.
#define BM_PWM_PWMSR_CMP (0x00000020) //!< Bit mask for PWM_PWMSR_CMP.
//! @brief Get value of PWM_PWMSR_CMP from a register value.
#define BG_PWM_PWMSR_CMP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMSR_CMP) >> BP_PWM_PWMSR_CMP)
//! @brief Format value for bitfield PWM_PWMSR_CMP.
#define BF_PWM_PWMSR_CMP(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMSR_CMP) & BM_PWM_PWMSR_CMP)
#ifndef __LANGUAGE_ASM__
//! @brief Set the CMP field to a new value.
#define BW_PWM_PWMSR_CMP(x, v) (HW_PWM_PWMSR_WR(x, (HW_PWM_PWMSR_RD(x) & ~BM_PWM_PWMSR_CMP) | BF_PWM_PWMSR_CMP(v)))
#endif
//@}
/*! @name Register PWM_PWMSR, field FWE[6] (W1C)
*
* FIFO Write Error Status. This bit shows that an attempt has been made to write FIFO when it is
* full.
*
* Values:
* - 0 - FIFO write error not occurred
* - 1 - FIFO write error occurred
*/
//@{
#define BP_PWM_PWMSR_FWE (6) //!< Bit position for PWM_PWMSR_FWE.
#define BM_PWM_PWMSR_FWE (0x00000040) //!< Bit mask for PWM_PWMSR_FWE.
//! @brief Get value of PWM_PWMSR_FWE from a register value.
#define BG_PWM_PWMSR_FWE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMSR_FWE) >> BP_PWM_PWMSR_FWE)
//! @brief Format value for bitfield PWM_PWMSR_FWE.
#define BF_PWM_PWMSR_FWE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMSR_FWE) & BM_PWM_PWMSR_FWE)
#ifndef __LANGUAGE_ASM__
//! @brief Set the FWE field to a new value.
#define BW_PWM_PWMSR_FWE(x, v) (HW_PWM_PWMSR_WR(x, (HW_PWM_PWMSR_RD(x) & ~BM_PWM_PWMSR_FWE) | BF_PWM_PWMSR_FWE(v)))
#endif
//@}
//-------------------------------------------------------------------------------------------
// HW_PWM_PWMIR - PWM Interrupt Register
//-------------------------------------------------------------------------------------------
#ifndef __LANGUAGE_ASM__
/*!
* @brief HW_PWM_PWMIR - PWM Interrupt Register (RW)
*
* Reset value: 0x00000000
*
* The PWM Interrupt register (PWM_PWMIR) contains three bits which control the generation of the
* compare, rollover and FIFO empty interrupts.
*/
typedef union _hw_pwm_pwmir
{
reg32_t U;
struct _hw_pwm_pwmir_bitfields
{
unsigned FIE : 1; //!< [0] FIFO Empty Interrupt Enable.
unsigned RIE : 1; //!< [1] Roll-over Interrupt Enable.
unsigned CIE : 1; //!< [2] Compare Interrupt Enable.
unsigned RESERVED0 : 29; //!< [31:3] Reserved.
} B;
} hw_pwm_pwmir_t;
#endif
/*!
* @name Constants and macros for entire PWM_PWMIR register
*/
//@{
#define HW_PWM_PWMIR_ADDR(x) (REGS_PWM_BASE(x) + 0x8)
#ifndef __LANGUAGE_ASM__
#define HW_PWM_PWMIR(x) (*(volatile hw_pwm_pwmir_t *) HW_PWM_PWMIR_ADDR(x))
#define HW_PWM_PWMIR_RD(x) (HW_PWM_PWMIR(x).U)
#define HW_PWM_PWMIR_WR(x, v) (HW_PWM_PWMIR(x).U = (v))
#define HW_PWM_PWMIR_SET(x, v) (HW_PWM_PWMIR_WR(x, HW_PWM_PWMIR_RD(x) | (v)))
#define HW_PWM_PWMIR_CLR(x, v) (HW_PWM_PWMIR_WR(x, HW_PWM_PWMIR_RD(x) & ~(v)))
#define HW_PWM_PWMIR_TOG(x, v) (HW_PWM_PWMIR_WR(x, HW_PWM_PWMIR_RD(x) ^ (v)))
#endif
//@}
/*
* constants & macros for individual PWM_PWMIR bitfields
*/
/*! @name Register PWM_PWMIR, field FIE[0] (RW)
*
* FIFO Empty Interrupt Enable. This bit controls the generation of the FIFO Empty interrupt.
*
* Values:
* - 0 - FIFO Empty interrupt disabled
* - 1 - FIFO Empty interrupt enabled
*/
//@{
#define BP_PWM_PWMIR_FIE (0) //!< Bit position for PWM_PWMIR_FIE.
#define BM_PWM_PWMIR_FIE (0x00000001) //!< Bit mask for PWM_PWMIR_FIE.
//! @brief Get value of PWM_PWMIR_FIE from a register value.
#define BG_PWM_PWMIR_FIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMIR_FIE) >> BP_PWM_PWMIR_FIE)
//! @brief Format value for bitfield PWM_PWMIR_FIE.
#define BF_PWM_PWMIR_FIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMIR_FIE) & BM_PWM_PWMIR_FIE)
#ifndef __LANGUAGE_ASM__
//! @brief Set the FIE field to a new value.
#define BW_PWM_PWMIR_FIE(x, v) (HW_PWM_PWMIR_WR(x, (HW_PWM_PWMIR_RD(x) & ~BM_PWM_PWMIR_FIE) | BF_PWM_PWMIR_FIE(v)))
#endif
//@}
/*! @name Register PWM_PWMIR, field RIE[1] (RW)
*
* Roll-over Interrupt Enable. This bit controls the generation of the Rollover interrupt.
*
* Values:
* - 0 - Roll-over interrupt not enabled
* - 1 - Roll-over Interrupt enabled
*/
//@{
#define BP_PWM_PWMIR_RIE (1) //!< Bit position for PWM_PWMIR_RIE.
#define BM_PWM_PWMIR_RIE (0x00000002) //!< Bit mask for PWM_PWMIR_RIE.
//! @brief Get value of PWM_PWMIR_RIE from a register value.
#define BG_PWM_PWMIR_RIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMIR_RIE) >> BP_PWM_PWMIR_RIE)
//! @brief Format value for bitfield PWM_PWMIR_RIE.
#define BF_PWM_PWMIR_RIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMIR_RIE) & BM_PWM_PWMIR_RIE)
#ifndef __LANGUAGE_ASM__
//! @brief Set the RIE field to a new value.
#define BW_PWM_PWMIR_RIE(x, v) (HW_PWM_PWMIR_WR(x, (HW_PWM_PWMIR_RD(x) & ~BM_PWM_PWMIR_RIE) | BF_PWM_PWMIR_RIE(v)))
#endif
//@}
/*! @name Register PWM_PWMIR, field CIE[2] (RW)
*
* Compare Interrupt Enable. This bit controls the generation of the Compare interrupt.
*
* Values:
* - 0 - Compare Interrupt not enabled
* - 1 - Compare Interrupt enabled
*/
//@{
#define BP_PWM_PWMIR_CIE (2) //!< Bit position for PWM_PWMIR_CIE.
#define BM_PWM_PWMIR_CIE (0x00000004) //!< Bit mask for PWM_PWMIR_CIE.
//! @brief Get value of PWM_PWMIR_CIE from a register value.
#define BG_PWM_PWMIR_CIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMIR_CIE) >> BP_PWM_PWMIR_CIE)
//! @brief Format value for bitfield PWM_PWMIR_CIE.
#define BF_PWM_PWMIR_CIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMIR_CIE) & BM_PWM_PWMIR_CIE)
#ifndef __LANGUAGE_ASM__
//! @brief Set the CIE field to a new value.
#define BW_PWM_PWMIR_CIE(x, v) (HW_PWM_PWMIR_WR(x, (HW_PWM_PWMIR_RD(x) & ~BM_PWM_PWMIR_CIE) | BF_PWM_PWMIR_CIE(v)))
#endif
//@}
//-------------------------------------------------------------------------------------------
// HW_PWM_PWMSAR - PWM Sample Register
//-------------------------------------------------------------------------------------------
#ifndef __LANGUAGE_ASM__
/*!
* @brief HW_PWM_PWMSAR - PWM Sample Register (RW)
*
* Reset value: 0x00000000
*
* The PWM sample register (PWM_PWMSAR) is the input to the FIFO. 16-bit words are loaded into the
* FIFO. The FIFO can be written at any time, but can be read only when the PWM is enabled. The PWM
* will run at the last set duty-cycle setting if all the values of the FIFO has been utilized,
* until the FIFO is reloaded or the PWM is disabled. When a new value is written, the duty cycle
* changes after the current period is over. A value of zero in the sample register will result in
* the PWMO output signal always being low/high (POUTC = 00 it will be low and POUTC = 01 it will be
* high), and no output waveform will be produced. If the value in this register is higher than the
* PERIOD + 1, the output will never be set/reset depending on POUTC value.
*/
typedef union _hw_pwm_pwmsar
{
reg32_t U;
struct _hw_pwm_pwmsar_bitfields
{
unsigned SAMPLE : 16; //!< [15:0] Sample Value.
unsigned RESERVED0 : 16; //!< [31:16] These are reserved bits and writing a value will not affect the functionality of PWM and are always read as zero.
} B;
} hw_pwm_pwmsar_t;
#endif
/*!
* @name Constants and macros for entire PWM_PWMSAR register
*/
//@{
#define HW_PWM_PWMSAR_ADDR(x) (REGS_PWM_BASE(x) + 0xc)
#ifndef __LANGUAGE_ASM__
#define HW_PWM_PWMSAR(x) (*(volatile hw_pwm_pwmsar_t *) HW_PWM_PWMSAR_ADDR(x))
#define HW_PWM_PWMSAR_RD(x) (HW_PWM_PWMSAR(x).U)
#define HW_PWM_PWMSAR_WR(x, v) (HW_PWM_PWMSAR(x).U = (v))
#define HW_PWM_PWMSAR_SET(x, v) (HW_PWM_PWMSAR_WR(x, HW_PWM_PWMSAR_RD(x) | (v)))
#define HW_PWM_PWMSAR_CLR(x, v) (HW_PWM_PWMSAR_WR(x, HW_PWM_PWMSAR_RD(x) & ~(v)))
#define HW_PWM_PWMSAR_TOG(x, v) (HW_PWM_PWMSAR_WR(x, HW_PWM_PWMSAR_RD(x) ^ (v)))
#endif
//@}
/*
* constants & macros for individual PWM_PWMSAR bitfields
*/
/*! @name Register PWM_PWMSAR, field SAMPLE[15:0] (RW)
*
* Sample Value. This is the input to the 4x16 FIFO. The value in this register denotes the value of
* the sample being currently used.
*/
//@{
#define BP_PWM_PWMSAR_SAMPLE (0) //!< Bit position for PWM_PWMSAR_SAMPLE.
#define BM_PWM_PWMSAR_SAMPLE (0x0000ffff) //!< Bit mask for PWM_PWMSAR_SAMPLE.
//! @brief Get value of PWM_PWMSAR_SAMPLE from a register value.
#define BG_PWM_PWMSAR_SAMPLE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMSAR_SAMPLE) >> BP_PWM_PWMSAR_SAMPLE)
//! @brief Format value for bitfield PWM_PWMSAR_SAMPLE.
#define BF_PWM_PWMSAR_SAMPLE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMSAR_SAMPLE) & BM_PWM_PWMSAR_SAMPLE)
#ifndef __LANGUAGE_ASM__
//! @brief Set the SAMPLE field to a new value.
#define BW_PWM_PWMSAR_SAMPLE(x, v) (HW_PWM_PWMSAR_WR(x, (HW_PWM_PWMSAR_RD(x) & ~BM_PWM_PWMSAR_SAMPLE) | BF_PWM_PWMSAR_SAMPLE(v)))
#endif
//@}
//-------------------------------------------------------------------------------------------
// HW_PWM_PWMPR - PWM Period Register
//-------------------------------------------------------------------------------------------
#ifndef __LANGUAGE_ASM__
/*!
* @brief HW_PWM_PWMPR - PWM Period Register (RW)
*
* Reset value: 0x0000fffe
*
* The PWM period register (PWM_PWMPR) determines the period of the PWM output signal. After the
* counter value matches PERIOD + 1, the counter is reset to start another period. PWMO (Hz) =
* PCLK(Hz) / (period +2) A value of zero in the PWM_PWMPR will result in a period of two clock
* cycles for the output signal. Writing 0xFFFF to this register will achieve the same result as
* writing 0xFFFE. A change in the period value due to a write in PWM_PWMPR results in the counter
* being reset to zero and the start of a new count period. Settings PWM_PWMPR to 0xFFFF when
* PWMx_PWMCR REPEAT bits are set to non-zero values is not allowed.
*/
typedef union _hw_pwm_pwmpr
{
reg32_t U;
struct _hw_pwm_pwmpr_bitfields
{
unsigned PERIOD : 16; //!< [15:0] Period Value.
unsigned RESERVED0 : 16; //!< [31:16] These are reserved bits and writing a value will not affect the functionality of PWM and are always read as zero.
} B;
} hw_pwm_pwmpr_t;
#endif
/*!
* @name Constants and macros for entire PWM_PWMPR register
*/
//@{
#define HW_PWM_PWMPR_ADDR(x) (REGS_PWM_BASE(x) + 0x10)
#ifndef __LANGUAGE_ASM__
#define HW_PWM_PWMPR(x) (*(volatile hw_pwm_pwmpr_t *) HW_PWM_PWMPR_ADDR(x))
#define HW_PWM_PWMPR_RD(x) (HW_PWM_PWMPR(x).U)
#define HW_PWM_PWMPR_WR(x, v) (HW_PWM_PWMPR(x).U = (v))
#define HW_PWM_PWMPR_SET(x, v) (HW_PWM_PWMPR_WR(x, HW_PWM_PWMPR_RD(x) | (v)))
#define HW_PWM_PWMPR_CLR(x, v) (HW_PWM_PWMPR_WR(x, HW_PWM_PWMPR_RD(x) & ~(v)))
#define HW_PWM_PWMPR_TOG(x, v) (HW_PWM_PWMPR_WR(x, HW_PWM_PWMPR_RD(x) ^ (v)))
#endif
//@}
/*
* constants & macros for individual PWM_PWMPR bitfields
*/
/*! @name Register PWM_PWMPR, field PERIOD[15:0] (RW)
*
* Period Value. These bits determine the Period of the count cycle. The counter counts up to
* [Period Value] +1 and is then reset to 0x0000.
*/
//@{
#define BP_PWM_PWMPR_PERIOD (0) //!< Bit position for PWM_PWMPR_PERIOD.
#define BM_PWM_PWMPR_PERIOD (0x0000ffff) //!< Bit mask for PWM_PWMPR_PERIOD.
//! @brief Get value of PWM_PWMPR_PERIOD from a register value.
#define BG_PWM_PWMPR_PERIOD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMPR_PERIOD) >> BP_PWM_PWMPR_PERIOD)
//! @brief Format value for bitfield PWM_PWMPR_PERIOD.
#define BF_PWM_PWMPR_PERIOD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_PWM_PWMPR_PERIOD) & BM_PWM_PWMPR_PERIOD)
#ifndef __LANGUAGE_ASM__
//! @brief Set the PERIOD field to a new value.
#define BW_PWM_PWMPR_PERIOD(x, v) (HW_PWM_PWMPR_WR(x, (HW_PWM_PWMPR_RD(x) & ~BM_PWM_PWMPR_PERIOD) | BF_PWM_PWMPR_PERIOD(v)))
#endif
//@}
//-------------------------------------------------------------------------------------------
// HW_PWM_PWMCNR - PWM Counter Register
//-------------------------------------------------------------------------------------------
#ifndef __LANGUAGE_ASM__
/*!
* @brief HW_PWM_PWMCNR - PWM Counter Register (RO)
*
* Reset value: 0x00000000
*
* The read-only pulse-width modulator counter register (PWM_PWMCNR) contains the current count
* value and can be read at any time without disturbing the counter.
*/
typedef union _hw_pwm_pwmcnr
{
reg32_t U;
struct _hw_pwm_pwmcnr_bitfields
{
unsigned COUNT : 16; //!< [15:0] Counter Value.
unsigned RESERVED0 : 16; //!< [31:16] These are reserved bits and writing a value will not affect the functionality of PWM and are always read as zero.
} B;
} hw_pwm_pwmcnr_t;
#endif
/*!
* @name Constants and macros for entire PWM_PWMCNR register
*/
//@{
#define HW_PWM_PWMCNR_ADDR(x) (REGS_PWM_BASE(x) + 0x14)
#ifndef __LANGUAGE_ASM__
#define HW_PWM_PWMCNR(x) (*(volatile hw_pwm_pwmcnr_t *) HW_PWM_PWMCNR_ADDR(x))
#define HW_PWM_PWMCNR_RD(x) (HW_PWM_PWMCNR(x).U)
#endif
//@}
/*
* constants & macros for individual PWM_PWMCNR bitfields
*/
/*! @name Register PWM_PWMCNR, field COUNT[15:0] (RO)
*
* Counter Value. These bits are the counter register value and denotes the current count state the
* counter register is in.
*/
//@{
#define BP_PWM_PWMCNR_COUNT (0) //!< Bit position for PWM_PWMCNR_COUNT.
#define BM_PWM_PWMCNR_COUNT (0x0000ffff) //!< Bit mask for PWM_PWMCNR_COUNT.
//! @brief Get value of PWM_PWMCNR_COUNT from a register value.
#define BG_PWM_PWMCNR_COUNT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_PWM_PWMCNR_COUNT) >> BP_PWM_PWMCNR_COUNT)
//@}
//-------------------------------------------------------------------------------------------
// hw_pwm_t - module struct
//-------------------------------------------------------------------------------------------
/*!
* @brief All PWM module registers.
*/
#ifndef __LANGUAGE_ASM__
#pragma pack(1)
typedef struct _hw_pwm
{
volatile hw_pwm_pwmcr_t PWMCR; //!< PWM Control Register
volatile hw_pwm_pwmsr_t PWMSR; //!< PWM Status Register
volatile hw_pwm_pwmir_t PWMIR; //!< PWM Interrupt Register
volatile hw_pwm_pwmsar_t PWMSAR; //!< PWM Sample Register
volatile hw_pwm_pwmpr_t PWMPR; //!< PWM Period Register
volatile hw_pwm_pwmcnr_t PWMCNR; //!< PWM Counter Register
} hw_pwm_t;
#pragma pack()
//! @brief Macro to access all PWM registers.
//! @param x PWM instance number.
//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct,
//! use the '&' operator, like <code>&HW_PWM(0)</code>.
#define HW_PWM(x) (*(hw_pwm_t *) REGS_PWM_BASE(x))
#endif
#endif // __HW_PWM_REGISTERS_H__
// v18/121106/1.2.2
// EOF