HC32L17x的LL驱动库之bus

该代码片段定义了HC32L1XX微控制器中关于外设时钟控制的宏,包括使能、禁用和复位操作,涉及到的外设包括UART、I2C、SPI、定时器、ADC等。这些宏用于设置和检查RCC寄存器中的相关位,以控制相应外设的电源状态。
摘要由CSDN通过智能技术生成
#ifndef HC32L1XX_LL_BUS_H_
#define HC32L1XX_LL_BUS_H_

#ifdef __cplusplus
extern "C" {
#endif 
    
    #include "hc32l1xx.h"
    ///

    #define LL_PER0_GRP1_PERIPH_ALL            (uint32_t)0xFFFFFFFFU
#ifdef UART0
    #define LL_PER0_GRP1_PERIPH_UART0        RCC_PER0ENR_UART0EN
#endif
#ifdef UART1
    #define LL_PER0_GRP1_PERIPH_UART1        RCC_PER0ENR_UART1EN
#endif
#ifdef LPUART0
    #define LL_PER0_GRP1_PERIPH_LPUART0        RCC_PER0ENR_LPUART0EN
#endif
#ifdef LPUART1
    #define LL_PER0_GRP1_PERIPH_LPUART1        RCC_PER0ENR_LPUART1EN
#endif
#ifdef I2C0
    #define LL_PER0_GRP1_PERIPH_I2C0        RCC_PER0ENR_I2C0EN
#endif
#ifdef I2C1
    #define LL_PER0_GRP1_PERIPH_I2C1        RCC_PER0ENR_I2C1EN
#endif
#ifdef SPI0
    #define LL_PER0_GRP1_PERIPH_SPI0        RCC_PER0ENR_SPI0EN
#endif
#ifdef SPI1
    #define LL_PER0_GRP1_PERIPH_SPI1        RCC_PER0ENR_SPI1EN
#endif
#ifdef TIM0
    #define LL_PER0_GRP1_PERIPH_TIM0        RCC_PER0ENR_TIM0EN
#endif
#ifdef TIM1
    #define LL_PER0_GRP1_PERIPH_TIM1        RCC_PER0ENR_TIM1EN
#endif
#ifdef TIM2
    #define LL_PER0_GRP1_PERIPH_TIM2        RCC_PER0ENR_TIM2EN
#endif
#ifdef LPTIM0
    #define LL_PER0_GRP1_PERIPH_LPTIM0        RCC_PER0ENR_LPTIM0EN
#endif
#ifdef TIMP4
    #define LL_PER0_GRP1_PERIPH_TIM4        RCC_PER0ENR_TIM4EN
#endif
#ifdef TIMP5
    #define LL_PER0_GRP1_PERIPH_TIM5        RCC_PER0ENR_TIM5EN
#endif
#ifdef TIMP6
    #define LL_PER0_GRP1_PERIPH_TIM6        RCC_PER0ENR_TIM6EN
#endif
#ifdef TIM3
    #define LL_PER0_GRP1_PERIPH_TIM3        RCC_PER0ENR_TIM3EN
#endif
#ifdef OPA
    #define LL_PER0_GRP1_PERIPH_OPA            RCC_PER0ENR_OPAEN
#endif
#ifdef PCA
    #define LL_PER0_GRP1_PERIPH_PCA            RCC_PER0ENR_PCAEN
#endif
#ifdef WDT
    #define LL_PER0_GRP1_PERIPH_WDT            RCC_PER0ENR_WDTEN
#endif

#ifdef BGR
    #define LL_PER0_GRP1_PERIPH_BGR            RCC_PER0ENR_ADCEN
#endif

#ifdef ADC
    #define LL_PER0_GRP1_PERIPH_ADC            RCC_PER0ENR_ADCEN
#endif
#ifdef ADC0
    #define LL_PER0_GRP1_PERIPH_ADC0        RCC_PER0ENR_ADCEN
#endif
#ifdef VC
    #define LL_PER0_GRP1_PERIPH_VC            RCC_PER0ENR_VCEN
#endif
#ifdef LVD
    #define LL_PER0_GRP1_PERIPH_LVD            RCC_PER0ENR_VCEN
#endif
#ifdef RNG
    #define LL_PER0_GRP1_PERIPH_RNG            RCC_PER0ENR_RNGEN
#endif
#ifdef PCNT
    #define LL_PER0_GRP1_PERIPH_PCNT        RCC_PER0ENR_PCNTEN
#endif
#ifdef RTC
    #define LL_PER0_GRP1_PERIPH_RTC            RCC_PER0ENR_RTCEN
#endif
#ifdef TRIM
    #define LL_PER0_GRP1_PERIPH_TRIM        RCC_PER0ENR_TRIMEN
#endif
#ifdef LCD
    #define LL_PER0_GRP1_PERIPH_LCD            RCC_PER0ENR_LCDEN
#endif
#ifdef SysTick
    #define LL_PER0_GRP1_PERIPH_TICK        RCC_PER0ENR_TICKEN
#endif
    #define LL_PER0_GRP1_PERIPH_SWD            RCC_PER0ENR_SWDEN
#ifdef CRC
    #define LL_PER0_GRP1_PERIPH_CRC            RCC_PER0ENR_CRCEN
#endif
#ifdef AES
    #define LL_PER0_GRP1_PERIPH_AES            RCC_PER0ENR_AESEN
#endif

    #define LL_PER0_GRP1_PERIPH_GPIO        RCC_PER0ENR_GPIOEN

#ifdef GPIOA
    #define LL_PER0_GRP1_PERIPH_GPIOA        RCC_PER0ENR_GPIOEN
#endif
#ifdef GPIOB
    #define LL_PER0_GRP1_PERIPH_GPIOB        RCC_PER0ENR_GPIOEN
#endif

#ifdef GPIOC
    #define LL_PER0_GRP1_PERIPH_GPIOC        RCC_PER0ENR_GPIOEN
#endif
#ifdef GPIOD
    #define LL_PER0_GRP1_PERIPH_GPIOD        RCC_PER0ENR_GPIOEN
#endif

#ifdef GPIOE
    #define LL_PER0_GRP1_PERIPH_GPIOE        RCC_PER0ENR_GPIOEN
#endif
#ifdef GPIOF
    #define LL_PER0_GRP1_PERIPH_GPIOF        RCC_PER0ENR_GPIOEN
#endif

#ifdef GPIOG
    #define LL_PER0_GRP1_PERIPH_GPIOG        RCC_PER0ENR_GPIOEN
#endif
#ifdef GPIOH
    #define LL_PER0_GRP1_PERIPH_GPIOH        RCC_PER0ENR_GPIOEN
#endif

#ifdef DMA
    #define LL_PER0_GRP1_PERIPH_DMA            RCC_PER0ENR_DMAEN
#endif
#ifdef FLASH
    #define LL_PER0_GRP1_PERIPH_FLASH        RCC_PER0ENR_FLASHEN
#endif

    #define LL_PER1_GRP1_PERIPH_ALL            (uint32_t)0xFFFFFFFFU
#ifdef DAC
    #define LL_PER1_GRP1_PERIPH_DAC            RCC_PER1ENR_DACEN
#endif
#ifdef DAC0
    #define LL_PER1_GRP1_PERIPH_DAC0        RCC_PER1ENR_DACEN
#endif
#ifdef LPTIM1
    #define LL_PER1_GRP1_PERIPH_LPTIM1        RCC_PER1ENR_LPTIM1EN
#endif
#ifdef UART2
    #define LL_PER1_GRP1_PERIPH_UART2        RCC_PER1ENR_UART2EN
#endif
#ifdef UART3
    #define LL_PER1_GRP1_PERIPH_UART3        RCC_PER1ENR_UART3EN
#endif

    ///
    //函        数:
    //功        能:应用初始化
    //输入参    数:
    //输出参    数:
    //说        明:
    //
    static inline void LL_AHB1_GRP1_EnableClock(uint32_t Periphs)
    {
        
    }

    ///
    //函        数:
    //功        能:外设1模块的总线使能
    //输入参    数:
    //输出参    数:
    //说        明:    LL_PER0_GRP1_PERIPH_UART1
    //                LL_PER0_GRP1_PERIPH_LPUART0
    //                LL_PER0_GRP1_PERIPH_LPUART1
    //                LL_PER0_GRP1_PERIPH_I2C0
    //                LL_PER0_GRP1_PERIPH_I2C1
    //                LL_PER0_GRP1_PERIPH_SPI0
    //                LL_PER0_GRP1_PERIPH_SPI1
    //                LL_PER0_GRP1_PERIPH_TIM0
    //                LL_PER0_GRP1_PERIPH_TIM1
    //                LL_PER0_GRP1_PERIPH_TIM2
    //                LL_PER0_GRP1_PERIPH_LPTIM
    //                LL_PER0_GRP1_PERIPH_TIM4
    //                LL_PER0_GRP1_PERIPH_TIM5
    //                LL_PER0_GRP1_PERIPH_TIM6
    //                LL_PER0_GRP1_PERIPH_TIM3
    //                LL_PER0_GRP1_PERIPH_OPA
    //                LL_PER0_GRP1_PERIPH_PCA
    //                LL_PER0_GRP1_PERIPH_WDT
    //                LL_PER0_GRP1_PERIPH_ADC
    //                LL_PER0_GRP1_PERIPH_ADC0
    //                LL_PER0_GRP1_PERIPH_VC
    //                LL_PER0_GRP1_PERIPH_RNG
    //                LL_PER0_GRP1_PERIPH_PCNT
    //                LL_PER0_GRP1_PERIPH_RTC
    //                LL_PER0_GRP1_PERIPH_TRIM
    //                LL_PER0_GRP1_PERIPH_LCD
    //                LL_PER0_GRP1_PERIPH_TICK
    //                LL_PER0_GRP1_PERIPH_SWD
    //                LL_PER0_GRP1_PERIPH_CRC
    //                LL_PER0_GRP1_PERIPH_AES
    //                LL_PER0_GRP1_PERIPH_GPIOA
    //                LL_PER0_GRP1_PERIPH_GPIOB
    //                LL_PER0_GRP1_PERIPH_GPIOC
    //                LL_PER0_GRP1_PERIPH_GPIOD
    //                LL_PER0_GRP1_PERIPH_GPIOE
    //                LL_PER0_GRP1_PERIPH_GPIOF
    //                LL_PER0_GRP1_PERIPH_GPIOG
    //                LL_PER0_GRP1_PERIPH_GPIOH
    //                LL_PER0_GRP1_PERIPH_DMA
    //                LL_PER0_GRP1_PERIPH_FLASH
    //
    static inline void LL_PER0_GRP1_EnableClock(uint32_t Periphs)
    {
        //__IO uint32_t tmpreg = 0;
        SET_BIT(RCC->PERENR0, Periphs);
        //tmpreg = READ_BIT(RCC->PERENR0, Periphs);
        //(void)tmpreg;
    }

    ///
    //函        数:
    //功        能:外设1模块的总线不使能
    //输入参    数:
    //输出参    数:
    //说        明:    LL_PER0_GRP1_PERIPH_UART1
    //                LL_PER0_GRP1_PERIPH_LPUART0
    //                LL_PER0_GRP1_PERIPH_LPUART1
    //                LL_PER0_GRP1_PERIPH_I2C0
    //                LL_PER0_GRP1_PERIPH_I2C1
    //                LL_PER0_GRP1_PERIPH_SPI0
    //                LL_PER0_GRP1_PERIPH_SPI1
    //                LL_PER0_GRP1_PERIPH_TIM0
    //                LL_PER0_GRP1_PERIPH_TIM1
    //                LL_PER0_GRP1_PERIPH_TIM2
    //                LL_PER0_GRP1_PERIPH_LPTIM
    //                LL_PER0_GRP1_PERIPH_TIM4
    //                LL_PER0_GRP1_PERIPH_TIM5
    //                LL_PER0_GRP1_PERIPH_TIM6
    //                LL_PER0_GRP1_PERIPH_TIM3
    //                LL_PER0_GRP1_PERIPH_OPA
    //                LL_PER0_GRP1_PERIPH_PCA
    //                LL_PER0_GRP1_PERIPH_WDT
    //                LL_PER0_GRP1_PERIPH_ADC
    //                LL_PER0_GRP1_PERIPH_ADC0
    //                LL_PER0_GRP1_PERIPH_VC
    //                LL_PER0_GRP1_PERIPH_RNG
    //                LL_PER0_GRP1_PERIPH_PCNT
    //                LL_PER0_GRP1_PERIPH_RTC
    //                LL_PER0_GRP1_PERIPH_TRIM
    //                LL_PER0_GRP1_PERIPH_LCD
    //                LL_PER0_GRP1_PERIPH_TICK
    //                LL_PER0_GRP1_PERIPH_SWD
    //                LL_PER0_GRP1_PERIPH_CRC
    //                LL_PER0_GRP1_PERIPH_AES
    //                LL_PER0_GRP1_PERIPH_GPIOA
    //                LL_PER0_GRP1_PERIPH_GPIOB
    //                LL_PER0_GRP1_PERIPH_GPIOC
    //                LL_PER0_GRP1_PERIPH_GPIOD
    //                LL_PER0_GRP1_PERIPH_GPIOE
    //                LL_PER0_GRP1_PERIPH_GPIOF
    //                LL_PER0_GRP1_PERIPH_GPIOG
    //                LL_PER0_GRP1_PERIPH_GPIOH
    //                LL_PER0_GRP1_PERIPH_DMA
    //                LL_PER0_GRP1_PERIPH_FLASH
    //
    static inline void LL_PER0_GRP1_DisableClock(uint32_t Periphs)
    {
        //__IO uint32_t tmpreg = 0;
        CLEAR_BIT(RCC->PERENR0, Periphs);
        //tmpreg = READ_BIT(RCC->PERENR0, Periphs);
        //(void)tmpreg;
    }

    ///
    //函        数: 
    //功        能: 
    //输入参    数: 
    //输出参    数: 
    //说        明: 
    //
    static inline uint32_t LL_PER0_GRP1_IsEnabled_Clock(uint32_t Periphs)
    {
        return (uint32_t)(READ_BIT(RCC->PERENR0, Periphs) == Periphs);
    }
    
    ///
    //函        数:
    //功        能:外设1模块的总线强制复位
    //输入参    数:
    //输出参    数:
    //说        明:    LL_PER0_GRP1_PERIPH_UART1
    //                LL_PER0_GRP1_PERIPH_LPUART0
    //                LL_PER0_GRP1_PERIPH_LPUART1
    //                LL_PER0_GRP1_PERIPH_I2C0
    //                LL_PER0_GRP1_PERIPH_I2C1
    //                LL_PER0_GRP1_PERIPH_SPI0
    //                LL_PER0_GRP1_PERIPH_SPI1
    //                LL_PER0_GRP1_PERIPH_TIM0
    //                LL_PER0_GRP1_PERIPH_TIM1
    //                LL_PER0_GRP1_PERIPH_TIM2
    //                LL_PER0_GRP1_PERIPH_LPTIM
    //                LL_PER0_GRP1_PERIPH_TIM4
    //                LL_PER0_GRP1_PERIPH_TIM5
    //                LL_PER0_GRP1_PERIPH_TIM6
    //                LL_PER0_GRP1_PERIPH_TIM3
    //                LL_PER0_GRP1_PERIPH_OPA
    //                LL_PER0_GRP1_PERIPH_PCA
    //                LL_PER0_GRP1_PERIPH_WDT
    //                LL_PER0_GRP1_PERIPH_ADC
    //                LL_PER0_GRP1_PERIPH_ADC0
    //                LL_PER0_GRP1_PERIPH_VC
    //                LL_PER0_GRP1_PERIPH_RNG
    //                LL_PER0_GRP1_PERIPH_PCNT
    //                LL_PER0_GRP1_PERIPH_RTC
    //                LL_PER0_GRP1_PERIPH_TRIM
    //                LL_PER0_GRP1_PERIPH_LCD
    //                LL_PER0_GRP1_PERIPH_TICK
    //                LL_PER0_GRP1_PERIPH_SWD
    //                LL_PER0_GRP1_PERIPH_CRC
    //                LL_PER0_GRP1_PERIPH_AES
    //                LL_PER0_GRP1_PERIPH_GPIOA
    //                LL_PER0_GRP1_PERIPH_GPIOB
    //                LL_PER0_GRP1_PERIPH_GPIOC
    //                LL_PER0_GRP1_PERIPH_GPIOD
    //                LL_PER0_GRP1_PERIPH_GPIOE
    //                LL_PER0_GRP1_PERIPH_GPIOF
    //                LL_PER0_GRP1_PERIPH_GPIOG
    //                LL_PER0_GRP1_PERIPH_GPIOH
    //                LL_PER0_GRP1_PERIPH_DMA
    //                LL_PER0_GRP1_PERIPH_FLASH
    //
    static inline void LL_PER0_GRP1_ForceReset(uint32_t Periphs)
    {
        //__IO uint32_t tmpreg = 0;
        CLEAR_BIT(RCC->PERRSTR0, Periphs);
        //tmpreg = READ_BIT(RCC->PERRSTR0, Periphs);
        //(void)tmpreg;
    }

    ///
    //函        数:
    //功        能:外设1模块的总线释放复位
    //输入参    数:
    //输出参    数:
//说        明:    LL_PER0_GRP1_PERIPH_UART1
    //                LL_PER0_GRP1_PERIPH_LPUART0
    //                LL_PER0_GRP1_PERIPH_LPUART1
    //                LL_PER0_GRP1_PERIPH_I2C0
    //                LL_PER0_GRP1_PERIPH_I2C1
    //                LL_PER0_GRP1_PERIPH_SPI0
    //                LL_PER0_GRP1_PERIPH_SPI1
    //                LL_PER0_GRP1_PERIPH_TIM0
    //                LL_PER0_GRP1_PERIPH_TIM1
    //                LL_PER0_GRP1_PERIPH_TIM2
    //                LL_PER0_GRP1_PERIPH_LPTIM
    //                LL_PER0_GRP1_PERIPH_TIM4
    //                LL_PER0_GRP1_PERIPH_TIM5
    //                LL_PER0_GRP1_PERIPH_TIM6
    //                LL_PER0_GRP1_PERIPH_TIM3
    //                LL_PER0_GRP1_PERIPH_OPA
    //                LL_PER0_GRP1_PERIPH_PCA
    //                LL_PER0_GRP1_PERIPH_WDT
    //                LL_PER0_GRP1_PERIPH_ADC
    //                LL_PER0_GRP1_PERIPH_ADC0
    //                LL_PER0_GRP1_PERIPH_VC
    //                LL_PER0_GRP1_PERIPH_RNG
    //                LL_PER0_GRP1_PERIPH_PCNT
    //                LL_PER0_GRP1_PERIPH_RTC
    //                LL_PER0_GRP1_PERIPH_TRIM
    //                LL_PER0_GRP1_PERIPH_LCD
    //                LL_PER0_GRP1_PERIPH_TICK
    //                LL_PER0_GRP1_PERIPH_SWD
    //                LL_PER0_GRP1_PERIPH_CRC
    //                LL_PER0_GRP1_PERIPH_AES
    //                LL_PER0_GRP1_PERIPH_GPIOA
    //                LL_PER0_GRP1_PERIPH_GPIOB
    //                LL_PER0_GRP1_PERIPH_GPIOC
    //                LL_PER0_GRP1_PERIPH_GPIOD
    //                LL_PER0_GRP1_PERIPH_GPIOE
    //                LL_PER0_GRP1_PERIPH_GPIOF
    //                LL_PER0_GRP1_PERIPH_GPIOG
    //                LL_PER0_GRP1_PERIPH_GPIOH
    //                LL_PER0_GRP1_PERIPH_DMA
    //                LL_PER0_GRP1_PERIPH_FLASH
    //
    static inline void LL_PER0_GRP1_ReleaseReset(uint32_t Periphs)
    {
        //__IO uint32_t tmpreg = 0;
        SET_BIT(RCC->PERRSTR0, Periphs);
        //tmpreg = READ_BIT(RCC->PERRSTR0, Periphs);
        //(void)tmpreg;
    }

    ///
    //函        数:
    //功        能:外设2模块的总线使能
    //输入参    数:
    //输出参    数:
    //说        明:    LL_PER1_GRP1_PERIPH_DAC
    //                LL_PER1_GRP1_PERIPH_DAC0
    //                LL_PER1_GRP1_PERIPH_LPTIM1
    //                LL_PER1_GRP1_PERIPH_UART2
    //                LL_PER1_GRP1_PERIPH_UART3
    //
    static inline void LL_PER1_GRP1_EnableClock(uint32_t Periphs)
    {
        //__IO uint32_t tmpreg=0;
        SET_BIT(RCC->PERENR1, Periphs);
        //tmpreg = READ_BIT(RCC->PERENR1, Periphs);
        //(void)tmpreg;
    }
    
    ///
    //函        数:
    //功        能:外设2模块的总线使能
    //输入参    数:
    //输出参    数:
    //说        明:    LL_PER1_GRP1_PERIPH_DAC
    //                LL_PER1_GRP1_PERIPH_DAC0
    //                LL_PER1_GRP1_PERIPH_LPTIM1
    //                LL_PER1_GRP1_PERIPH_UART2
    //                LL_PER1_GRP1_PERIPH_UART3
    //
    static inline void LL_PER1_GRP1_DisableClock(uint32_t Periphs)
    {
        //__IO uint32_t tmpreg = 0;
        CLEAR_BIT(RCC->PERENR1, Periphs);
        //tmpreg = READ_BIT(RCC->PERENR1, Periphs);
        //(void)tmpreg;
    }

    ///
    //函        数: 
    //功        能: 
    //输入参    数: 
    //输出参    数: 
    //说        明: 
    //
    static inline uint32_t LL_PER1_GRP1_IsEnabled_Clock(uint32_t Periphs)
    {
        return (uint32_t)(READ_BIT(RCC->PERENR1, Periphs)== Periphs);
    }

    ///
    //函        数:
    //功        能:外设2模块的总线强制复位
    //输入参    数:
    //输出参    数:
    //说        明:    LL_PER1_GRP1_PERIPH_DAC
    //                LL_PER1_GRP1_PERIPH_DAC0
    //                LL_PER1_GRP1_PERIPH_LPTIM1
    //                LL_PER1_GRP1_PERIPH_UART2
    //                LL_PER1_GRP1_PERIPH_UART3
    //
    static inline void LL_PER1_GRP1_ForceReset(uint32_t Periphs)
    {
        //__IO uint32_t tmpreg = 0;
        CLEAR_BIT(RCC->PERRSTR1, Periphs);
        //tmpreg = READ_BIT(RCC->PERRSTR1, Periphs);
        //(void)tmpreg;
    }

    ///
    //函        数:
    //功        能:外设2模块的总线释放复位
    //输入参    数:
    //输出参    数:
    //说        明:    LL_PER1_GRP1_PERIPH_DAC
    //                LL_PER1_GRP1_PERIPH_DAC0
    //                LL_PER1_GRP1_PERIPH_LPTIM1
    //                LL_PER1_GRP1_PERIPH_UART2
    //                LL_PER1_GRP1_PERIPH_UART3
    //
    static inline void LL_PER1_GRP1_ReleaseReset(uint32_t Periphs)
    {
        //__IO uint32_t tmpreg = 0;
        SET_BIT(RCC->PERRSTR1, Periphs);
        //tmpreg = READ_BIT(RCC->PERRSTR1, Periphs);
        //(void)tmpreg;
    }

    ///
#ifdef __cplusplus
}
#endif 

#endif /* HC32L1XX_LL_BUS_H */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值