单片机学习小组
直播中

摩托罗拉

8年用户 902经验值
私信 关注

怎样去编写HC32L17x的LL驱动库ADC的程序代码呢

怎样去编写HC32L17x的LL驱动库ADC的程序代码呢?

回帖(4)

徐磊

2022-1-27 14:02:08

#ifndef HC32L1XX_LL_ADC_H_
#define HC32L1XX_LL_ADC_H_

#ifdef __cplusplus
extern "C" {
#endif
       
        #include "hc32l1xx.h"
        #include "hc32l1xx_ll_bus.h"
        #include "hc32l1xx_ll_bgr.h"
        ///
        #define LL_ADC_CHANNEL_0                                        ADC_CR0_CH_AIN0       
        #define LL_ADC_CHANNEL_1                                        ADC_CR0_CH_AIN1       
        #define LL_ADC_CHANNEL_2                                        ADC_CR0_CH_AIN2       
        #define LL_ADC_CHANNEL_3                                        ADC_CR0_CH_AIN3       
        #define LL_ADC_CHANNEL_4                                        ADC_CR0_CH_AIN4       
        #define LL_ADC_CHANNEL_5                                        ADC_CR0_CH_AIN5       
        #define LL_ADC_CHANNEL_6                                        ADC_CR0_CH_AIN6       
        #define LL_ADC_CHANNEL_7                                        ADC_CR0_CH_AIN7       
        #define LL_ADC_CHANNEL_8                                        ADC_CR0_CH_AIN8       
        #define LL_ADC_CHANNEL_9                                        ADC_CR0_CH_AIN9       
        #define LL_ADC_CHANNEL_10                                        ADC_CR0_CH_AIN10
        #define LL_ADC_CHANNEL_11                                        ADC_CR0_CH_AIN11
        #define LL_ADC_CHANNEL_12                                        ADC_CR0_CH_AIN12
        #define LL_ADC_CHANNEL_13                                        ADC_CR0_CH_AIN13
        #define LL_ADC_CHANNEL_14                                        ADC_CR0_CH_AIN14
        #define LL_ADC_CHANNEL_15                                        ADC_CR0_CH_AIN15
        #define LL_ADC_CHANNEL_16                                        ADC_CR0_CH_AIN16
        #define LL_ADC_CHANNEL_17                                        ADC_CR0_CH_AIN17
        #define LL_ADC_CHANNEL_18                                        ADC_CR0_CH_AIN18
        #define LL_ADC_CHANNEL_19                                        ADC_CR0_CH_AIN19
        #define LL_ADC_CHANNEL_20                                        ADC_CR0_CH_AIN20
        #define LL_ADC_CHANNEL_21                                        ADC_CR0_CH_AIN21
        #define LL_ADC_CHANNEL_22                                        ADC_CR0_CH_AIN22
        #define LL_ADC_CHANNEL_23                                        ADC_CR0_CH_AIN23
        #define LL_ADC_CHANNEL_24                                        ADC_CR0_CH_AIN24
        #define LL_ADC_CHANNEL_25                                        ADC_CR0_CH_AIN25
        #define LL_ADC_CHANNEL_26                                        ADC_CR0_CH_DAC               
        #define LL_ADC_CHANNEL_27                                        ADC_CR0_CH_AVCC_P3       
        #define LL_ADC_CHANNEL_28                                        ADC_CR0_CH_TEMP               
        #define LL_ADC_CHANNEL_29                                        ADC_CR0_CH_IN1P2       

        #define LL_ADC_TH_CHANNEL_0                                        ADC_CR1_TH_CH_AIN0       
        #define LL_ADC_TH_CHANNEL_1                                        ADC_CR1_TH_CH_AIN1       
        #define LL_ADC_TH_CHANNEL_2                                        ADC_CR1_TH_CH_AIN2       
        #define LL_ADC_TH_CHANNEL_3                                        ADC_CR1_TH_CH_AIN3       
        #define LL_ADC_TH_CHANNEL_4                                        ADC_CR1_TH_CH_AIN4       
        #define LL_ADC_TH_CHANNEL_5                                        ADC_CR1_TH_CH_AIN5       
        #define LL_ADC_TH_CHANNEL_6                                        ADC_CR1_TH_CH_AIN6       
        #define LL_ADC_TH_CHANNEL_7                                        ADC_CR1_TH_CH_AIN7       
        #define LL_ADC_TH_CHANNEL_8                                        ADC_CR1_TH_CH_AIN8       
        #define LL_ADC_TH_CHANNEL_9                                        ADC_CR1_TH_CH_AIN9       
        #define LL_ADC_TH_CHANNEL_10                                ADC_CR1_TH_CH_AIN10
        #define LL_ADC_TH_CHANNEL_11                                ADC_CR1_TH_CH_AIN11
        #define LL_ADC_TH_CHANNEL_12                                ADC_CR1_TH_CH_AIN12
        #define LL_ADC_TH_CHANNEL_13                                ADC_CR1_TH_CH_AIN13
        #define LL_ADC_TH_CHANNEL_14                                ADC_CR1_TH_CH_AIN14
        #define LL_ADC_TH_CHANNEL_15                                ADC_CR1_TH_CH_AIN15
        #define LL_ADC_TH_CHANNEL_16                                ADC_CR1_TH_CH_AIN16
        #define LL_ADC_TH_CHANNEL_17                                ADC_CR1_TH_CH_AIN17
        #define LL_ADC_TH_CHANNEL_18                                ADC_CR1_TH_CH_AIN18
        #define LL_ADC_TH_CHANNEL_19                                ADC_CR1_TH_CH_AIN19
        #define LL_ADC_TH_CHANNEL_20                                ADC_CR1_TH_CH_AIN20
        #define LL_ADC_TH_CHANNEL_21                                ADC_CR1_TH_CH_AIN21
        #define LL_ADC_TH_CHANNEL_22                                ADC_CR1_TH_CH_AIN22
        #define LL_ADC_TH_CHANNEL_23                                ADC_CR1_TH_CH_AIN23
        #define LL_ADC_TH_CHANNEL_24                                ADC_CR1_TH_CH_AIN24
        #define LL_ADC_TH_CHANNEL_25                                ADC_CR1_TH_CH_AIN25
        #define LL_ADC_TH_CHANNEL_26                                ADC_CR1_TH_CH_AIN26               
        #define LL_ADC_TH_CHANNEL_27                                ADC_CR1_TH_CH_AIN27
        #define LL_ADC_TH_CHANNEL_28                                ADC_CR1_TH_CH_AIN28       
        #define LL_ADC_TH_CHANNEL_29                                ADC_CR1_TH_CH_AIN29

        #define LL_ADC_SQR_SCAN_DISABLE                                (0x00UL<         #define LL_ADC_SQR_SCAN_ENABLE_1RANKS                (0x00UL<         #define LL_ADC_SQR_SCAN_ENABLE_2RANKS                (0x01UL<         #define LL_ADC_SQR_SCAN_ENABLE_3RANKS                (0x02UL<         #define LL_ADC_SQR_SCAN_ENABLE_4RANKS                (0x03UL<         #define LL_ADC_SQR_SCAN_ENABLE_5RANKS                (0x04UL<         #define LL_ADC_SQR_SCAN_ENABLE_6RANKS                (0x05UL<         #define LL_ADC_SQR_SCAN_ENABLE_7RANKS                (0x06UL<         #define LL_ADC_SQR_SCAN_ENABLE_8RANKS                (0x07UL<         #define LL_ADC_SQR_SCAN_ENABLE_9RANKS                (0x08UL<         #define LL_ADC_SQR_SCAN_ENABLE_10RANKS                (0x08UL<         #define LL_ADC_SQR_SCAN_ENABLE_11RANKS                (0x0AUL<         #define LL_ADC_SQR_SCAN_ENABLE_12RANKS                (0x0BUL<         #define LL_ADC_SQR_SCAN_ENABLE_13RANKS                (0x0CUL<         #define LL_ADC_SQR_SCAN_ENABLE_14RANKS                (0x0DUL<         #define LL_ADC_SQR_SCAN_ENABLE_15RANKS                (0x0EUL<         #define LL_ADC_SQR_SCAN_ENABLE_16RANKS                (0x0FUL<
        #define LL_ADC_SQR_RANK_0                                        0UL
        #define LL_ADC_SQR_RANK_1                                        1UL
        #define LL_ADC_SQR_RANK_2                                        2UL
        #define LL_ADC_SQR_RANK_3                                        3UL
        #define LL_ADC_SQR_RANK_4                                        4UL
        #define LL_ADC_SQR_RANK_5                                        5UL
        #define LL_ADC_SQR_RANK_6                                        6UL
        #define LL_ADC_SQR_RANK_7                                         7UL
        #define LL_ADC_SQR_RANK_8                                         8UL
        #define LL_ADC_SQR_RANK_9                                         9UL
        #define LL_ADC_SQR_RANK_10                                        10UL
        #define LL_ADC_SQR_RANK_11                                        11UL
        #define LL_ADC_SQR_RANK_12                                        12UL       
        #define LL_ADC_SQR_RANK_13                                        13UL
        #define LL_ADC_SQR_RANK_14                                        14UL
        #define LL_ADC_SQR_RANK_15                                        15UL

        #define LL_ADC_JQR_SCAN_DISABLE                                (0x00UL<         #define LL_ADC_JQR_SCAN_ENABLE_1RANKS                (0x00UL<         #define LL_ADC_JQR_SCAN_ENABLE_2RANKS                (0x01UL<         #define LL_ADC_JQR_SCAN_ENABLE_3RANKS                (0x02UL<         #define LL_ADC_JQR_SCAN_ENABLE_4RANKS                (0x03UL<
        #define LL_ADC_JQR_RANK_0                                        0
        #define LL_ADC_JQR_RANK_1                                        1
        #define LL_ADC_JQR_RANK_2                                        2
        #define LL_ADC_JQR_RANK_3                                        3
       
        #define LL_ADC_DATA_ALIGN_RIGHT                                0x00000000UL
        #define LL_ADC_DATA_ALIGN_LEFT                                ADC_CR1_ALIGN

        #define LL_ADC_SAMPLINGTIME_4CYCLE                        ADC_CR0_SAM_CYCLE_4
        #define LL_ADC_SAMPLINGTIME_6CYCLES                        ADC_CR0_SAM_CYCLE_6
        #define LL_ADC_SAMPLINGTIME_8CYCLES                        ADC_CR0_SAM_CYCLE_8
        #define LL_ADC_SAMPLINGTIME_12CYCLES                ADC_CR0_SAM_CYCLE_12

        #define LL_ADC_CLK_DIV_1                                        ADC_CR0_CLK_DIV1
        #define LL_ADC_CLK_DIV_2                                        ADC_CR0_CLK_DIV2
        #define LL_ADC_CLK_DIV_4                                        ADC_CR0_CLK_DIV4
        #define LL_ADC_CLK_DIV_8                                        ADC_CR0_CLK_DIV8

        #define LL_ADC_CONV_SINGLE                                        0x00000000UL            
        #define LL_ADC_CONV_CONTINUOUS                                (ADC_CR1_MODE)

        #define LL_ADC_SQR_DMA_DISABLE                                0x00000000UL      
        #define LL_ADC_SQR_DMA_ENABLE                                (ADC_CR1_DMA_SQR)   

        #define LL_ADC_JQR_DMA_DISABLE                                0x00000000UL      
        #define LL_ADC_JQR_DMA_ENABLE                                (ADC_CR1_DMA_JQR)

        #define LL_ADC_REF_SELECTED_IN1P5                        ADC_CR0_REF_IN1P5
        #define LL_ADC_REF_SELECTED_IN2P5                        ADC_CR0_REF_IN2P5
        #define LL_ADC_REF_SELECTED_EXREF                        ADC_CR0_REF_EXREF
        #define LL_ADC_REF_SELECTED_AVCC                        ADC_CR0_REF_AVCC

        #define LL_ADC_INREF_ENABLE                                        ADC_CR0_INREF
        #define LL_ADC_INREF_DISABLE                                0x00000000UL

        ///
        //函                数:
        //功                能: 数据对齐
        //输入参        数:
        //输出参        数:
        //说                明:
        //

        static inline void LL_ADC_SetDataAlignment(ADC_TypeDef *ADCx, uint32_t DataAlignment)
        {
                MODIFY_REG(ADCx->CR1, ADC_CR1_ALIGN, DataAlignment);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_GetDataAlignment(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_ALIGN));
        }
       
        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Enable(ADC_TypeDef *ADCx)
        {
                //---检查BGR是否开启
                if (LL_BGR_IsEnable(BGR) == 0)
                {
                        if (LL_PER0_GRP1_IsEnabled_Clock(LL_PER0_GRP1_PERIPH_BGR) == 0)
                        {
                                LL_PER0_GRP1_Enable_Clock(LL_PER0_GRP1_PERIPH_BGR);
                        }
                        LL_BGR_Enable(BGR);
                }
                SET_BIT(ADCx->CR0, ADC_CR0_EN);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Disable(ADC_TypeDef *ADCx)
        {
                CLEAR_BIT(ADCx->CR0, ADC_CR0_EN);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR0, ADC_CR0_EN) == ADC_CR0_EN);
        }
        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_EnableIT(ADC_TypeDef *ADCx)
        {
                SET_BIT(ADCx->CR0, ADC_CR0_IE);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_DisableIT(ADC_TypeDef *ADCx)
        {
                CLEAR_BIT(ADCx->CR0, ADC_CR0_IE);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_IsEnabledIT(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR0, ADC_CR0_IE) == ADC_CR0_IE);
        }

        ///
        //函                数:
        //功                能: 使能能不参考电压
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Enable_InRef(ADC_TypeDef *ADCx)
        {
                SET_BIT(ADCx->CR0, ADC_CR0_INREF);
        }

        ///
        //函                数:
        //功                能: 不能使能内部参考电压
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Disable_InRef(ADC_TypeDef *ADCx)
        {
                CLEAR_BIT(ADCx->CR0, ADC_CR0_INREF);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_IsEnabled_InRef(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR0, ADC_CR0_INREF) == ADC_CR0_INREF);
        }

        ///
        //函                数:
        //功                能: 使能能不参考电压
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetInRefEN(ADC_TypeDef *ADCx,uint32_t en)
        {
                MODIFY_REG(ADCx->CR0, ADC_CR0_INREF,en);
        }

        ///
        //函                数:
        //功                能: 采样时间
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetSamplingTime(ADC_TypeDef *ADCx, uint32_t SamplingTime)
        {
                MODIFY_REG(ADCx->CR0, ADC_CR0_SAM, SamplingTime);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_GetSamplingTime(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR0, ADC_CR0_SAM));
        }

        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Enable_Buffer(ADC_TypeDef *ADCx)
        {
                SET_BIT(ADCx->CR0, ADC_CR0_BUFFER);
        }

        ///
        //函                数:
        //功                能: 不使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Disable_Buffer(ADC_TypeDef *ADCx)
        {
                CLEAR_BIT(ADCx->CR0, ADC_CR0_BUFFER);
        }
举报

张倩

2022-1-27 14:03:25
///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_IsEnabled_Buffer(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR0, ADC_CR0_BUFFER) == ADC_CR0_BUFFER);
        }

        ///
        //函                数:
        //功                能: 跟随器使能
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetBufferEN(ADC_TypeDef *ADCx, uint32_t en)
        {
                MODIFY_REG(ADCx->CR0, ADC_CR0_BUFFER, en);
        }

        ///
        //函                数:
        //功                能: 设置参考电压
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetRefVoltage(ADC_TypeDef *ADCx, uint32_t ref)
        {
                MODIFY_REG(ADCx->CR0, ADC_CR0_REF,ref);
        }

        ///
        //函                数:
        //功                能: 获取参考电压
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_GetRefVoltage(ADC_TypeDef *ADCx)
        {
                return READ_BIT(ADCx->CR0, ADC_CR0_REF);
        }
       
        ///
        //函                数:
        //功                能: 设置单次转换的通道
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetSingleConversionChannel(ADC_TypeDef *ADCx, uint32_t ch)
        {
                //---测量信号是AVCC/3;内置温度传感器输出电压;内部基准电压1.2V;DAC输出,必须开启跟随器功能。
                if ((ch == LL_ADC_CHANNEL_26) ||
                        (ch == LL_ADC_CHANNEL_27) ||
                        (ch == LL_ADC_CHANNEL_28) ||
                        (ch == LL_ADC_CHANNEL_29))
                {
                        LL_ADC_Enable_Buffer(ADCx);
                }
                MODIFY_REG(ADCx->CR0, ADC_CR0_CH, ch);
        }

        ///
        //函                数:
        //功                能: 获取单次转换的通道
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_GetSingleConversionChannel(ADC_TypeDef *ADCx)
        {
                return READ_BIT(ADCx->CR0, ADC_CR0_CH);
        }

        ///
        //函                数:
        //功                能: 设置ADC时钟
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetClock(ADC_TypeDef *ADCx, uint32_t Clock)
        {
                MODIFY_REG(ADCx->CR0, ADC_CR0_CLK, Clock);
        }

        ///
        //函                数:
        //功                能: 获取ADC时钟
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_GetClock(ADC_TypeDef *ADCx)
        {
                return (uint32_t)READ_BIT(ADCx->CR0, ADC_CR0_CLK);
        }

        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Enable_AccCLR(ADC_TypeDef *ADCx)
        {
                CLEAR_BIT(ADCx->CR1, ADC_CR1_ACC_CLR);
        }

        ///
        //函                数:
        //功                能: 不使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Disable_AccCLR(ADC_TypeDef *ADCx)
        {
                SET_BIT(ADCx->CR1, ADC_CR1_ACC_CLR);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_IsEnabled_AccCLR(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_ACC_CLR) == ADC_CR1_ACC_CLR);
        }

        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Enable_CMPEN(ADC_TypeDef *ADCx)
        {
                SET_BIT(ADCx->CR1, ADC_CR1_REG_CMP);
        }

        ///
        //函                数:
        //功                能: 不使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Disable_CMPEN(ADC_TypeDef *ADCx)
        {
                CLEAR_BIT(ADCx->CR1, ADC_CR1_REG_CMP);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_IsEnabled_CMPEN(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_REG_CMP) == ADC_CR1_REG_CMP);
        }
       
        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetCMPEN(ADC_TypeDef *ADCx,uint32_t en)
        {
                MODIFY_REG(ADCx->CR1, ADC_CR1_REG_CMP,en);
        }

        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Enable_HTCMP(ADC_TypeDef *ADCx)
        {
                SET_BIT(ADCx->CR1, ADC_CR1_HT_CMP);
        }

        ///
        //函                数:
        //功                能: 不使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Disable_HTCMP(ADC_TypeDef *ADCx)
        {
                CLEAR_BIT(ADCx->CR1, ADC_CR1_HT_CMP);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_IsEnabled_HTCMP(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_HT_CMP) == ADC_CR1_HT_CMP);
        }

        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetHTCMP(ADC_TypeDef *ADCx, uint32_t en)
        {
                MODIFY_REG(ADCx->CR1, ADC_CR1_HT_CMP, en);
        }

        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Enable_LTCMP(ADC_TypeDef *ADCx)
        {
                SET_BIT(ADCx->CR1, ADC_CR1_LT_CMP);
        }

        ///
        //函                数:
        //功                能: 不使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Disable_LTCMP(ADC_TypeDef *ADCx)
        {
                CLEAR_BIT(ADCx->CR1, ADC_CR1_LT_CMP);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_IsEnabled_LTCMP(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_LT_CMP) == ADC_CR1_LT_CMP);
        }

        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetLTCMP(ADC_TypeDef *ADCx, uint32_t en)
        {
                MODIFY_REG(ADCx->CR1, ADC_CR1_LT_CMP, en);
        }

        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Enable_AccEN(ADC_TypeDef *ADCx)
        {
                SET_BIT(ADCx->CR1, ADC_CR1_ACC_EN);
        }

        ///
        //函                数:
        //功                能: 不使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Disable_AccEN(ADC_TypeDef *ADCx)
        {
                CLEAR_BIT(ADCx->CR1, ADC_CR1_ACC_EN);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_IsEnabled_AccEN(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_ACC_EN) == ADC_CR1_ACC_EN);
        }

        ///
        //函                数:
        //功                能: 设置转换模式
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetConversionMode(ADC_TypeDef *ADCx, uint32_t Mode)
        {
                MODIFY_REG(ADCx->CR1, ADC_CR1_MODE, Mode);
        }

        ///
        //函                数:
        //功                能: 获取转换模式
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_GetConversionMode(ADC_TypeDef *ADCx)
        {
                return (uint32_t)READ_BIT(ADCx->CR1, ADC_CR1_MODE);
        }

        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Enable_DMASQR(ADC_TypeDef *ADCx)
        {
                SET_BIT(ADCx->CR1, ADC_CR1_DMA_SQR);
        }

        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetDMASQR(ADC_TypeDef *ADCx,uint32_t dma)
        {
                MODIFY_REG(ADCx->CR1, ADC_CR1_DMA_SQR, dma);
        }

        ///
        //函                数:
        //功                能: 不使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Disable_DMASQR(ADC_TypeDef *ADCx)
        {
                CLEAR_BIT(ADCx->CR1, ADC_CR1_DMA_SQR);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline uint32_t LL_ADC_IsEnabled_DMASQR(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_DMA_SQR) == ADC_CR1_DMA_SQR);
        }
       
        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Enable_DMAJQR(ADC_TypeDef *ADCx)
        {
                SET_BIT(ADCx->CR1, ADC_CR1_DMA_JQR);
        }

        ///
        //函                数:
        //功                能: 不使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_Disable_DMAJQR(ADC_TypeDef *ADCx)
        {
                CLEAR_BIT(ADCx->CR1, ADC_CR1_DMA_JQR);
        }

        ///
        //函                数:
        //功                能:
        //输入参        数:
        //输出参        数:
        //说                明:
        //       
        static inline uint32_t LL_ADC_IsEnabled_DMAJQR(ADC_TypeDef *ADCx)
        {
                return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_DMA_JQR) == ADC_CR1_DMA_JQR);
        }

        ///
        //函                数:
        //功                能: 使能跟谁器
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetDMAJQR(ADC_TypeDef *ADCx, uint32_t dma)
        {
                MODIFY_REG(ADCx->CR1, ADC_CR1_DMA_JQR, dma);
        }
       
        ///
        //函                数:
        //功                能: 设置阈值比较通道
        //输入参        数:
        //输出参        数:
        //说                明:
        //
        static inline void LL_ADC_SetTHChannel(ADC_TypeDef *ADCx, uint32_t Channel)
        {
                MODIFY_REG(ADCx->CR1, ADC_CR1_TH_CH, Channel);
        }


///
//函 数:
//功 能: 设置顺序转换通道
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetSQRRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
{
if ((Channel == LL_ADC_CHANNEL_26) ||
(Channel == LL_ADC_CHANNEL_27) ||
(Channel == LL_ADC_CHANNEL_28) ||
(Channel == LL_ADC_CHANNEL_29))
{
LL_ADC_Enable_Buffer(ADCx);
}
Channel >>= ADC_CR0_CH_POS;
switch (Rank)
{
case LL_ADC_SQR_RANK_0:
{
MODIFY_REG(ADCx->SQR[0], ADC_SQR_MUX0_MASK, Channel << ADC_SQR_MUX0_POS);
break;
}
case LL_ADC_SQR_RANK_1:
{
MODIFY_REG(ADCx->SQR[0], ADC_SQR_MUX1_MASK, Channel << ADC_SQR_MUX1_POS);
break;
}
case LL_ADC_SQR_RANK_2:
{
MODIFY_REG(ADCx->SQR[0], ADC_SQR_MUX2_MASK, Channel << ADC_SQR_MUX2_POS);
break;
}
case LL_ADC_SQR_RANK_3:
{
MODIFY_REG(ADCx->SQR[0], ADC_SQR_MUX3_MASK, Channel << ADC_SQR_MUX3_POS);
break;
}
case LL_ADC_SQR_RANK_4:
{
MODIFY_REG(ADCx->SQR[0], ADC_SQR_MUX4_MASK, Channel << ADC_SQR_MUX4_POS);
break;
}
case LL_ADC_SQR_RANK_5:
{
MODIFY_REG(ADCx->SQR[0], ADC_SQR_MUX5_MASK, Channel << ADC_SQR_MUX5_POS);
break;
}
case LL_ADC_SQR_RANK_6:
{
MODIFY_REG(ADCx->SQR[1], ADC_SQR_MUX0_MASK, Channel << ADC_SQR_MUX0_POS);
break;
}
case LL_ADC_SQR_RANK_7:
{
MODIFY_REG(ADCx->SQR[1], ADC_SQR_MUX1_MASK, Channel << ADC_SQR_MUX1_POS);
break;
}
case LL_ADC_SQR_RANK_8:
{
MODIFY_REG(ADCx->SQR[1], ADC_SQR_MUX2_MASK, Channel << ADC_SQR_MUX2_POS);
break;
}
case LL_ADC_SQR_RANK_9:
{
MODIFY_REG(ADCx->SQR[1], ADC_SQR_MUX3_MASK, Channel << ADC_SQR_MUX3_POS);
break;
}
case LL_ADC_SQR_RANK_10:
{
MODIFY_REG(ADCx->SQR[1], ADC_SQR_MUX4_MASK, Channel << ADC_SQR_MUX4_POS);
break;
}
case LL_ADC_SQR_RANK_11:
{
MODIFY_REG(ADCx->SQR[1], ADC_SQR_MUX5_MASK, Channel << ADC_SQR_MUX5_POS);
break;
}
case LL_ADC_SQR_RANK_12:
{
MODIFY_REG(ADCx->SQR[2], ADC_SQR_MUX0_MASK, Channel << ADC_SQR_MUX0_POS);
break;
}
case LL_ADC_SQR_RANK_13:
{
MODIFY_REG(ADCx->SQR[2], ADC_SQR_MUX1_MASK, Channel << ADC_SQR_MUX1_POS);
break;
}
case LL_ADC_SQR_RANK_14:
{
MODIFY_REG(ADCx->SQR[2], ADC_SQR_MUX2_MASK, Channel << ADC_SQR_MUX2_POS);
break;
}
case LL_ADC_SQR_RANK_15:
{
MODIFY_REG(ADCx->SQR[2], ADC_SQR_MUX3_MASK, Channel << ADC_SQR_MUX3_POS);
break;
}
default:
{
WRITE_REG(ADCx->SQR[0], 0x00UL);
WRITE_REG(ADCx->SQR[1], 0x00UL);
WRITE_REG(ADCx->SQR[2], 0x00UL);
break;
}
}
}
///
//函 数:
//功 能: 设置顺序扫描的次数
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetSQRLength(ADC_TypeDef *ADCx, uint32_t SQRNbRanks)
{
MODIFY_REG(ADCx->SQR[2], ADC_SQR_CNT_MASK, SQRNbRanks);
}

///
//函 数:
//功 能: 获取顺序扫描的次数
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_GetSQRLength(ADC_TypeDef *ADCx)
{
return (uint32_t)(READ_BIT(ADCx->SQR[2], ADC_SQR_CNT_MASK));
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetSQRTrig(ADC_TypeDef *ADCx, uint32_t trig)
{
MODIFY_REG(ADCx->EXTRIG0, 0xFFFFFFFFUL, trig);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_GetSQRTrig(ADC_TypeDef *ADCx)
{
return (uint32_t)READ_BIT(ADCx->EXTRIG0, 0xFFFFFFFFUL);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetSGLTrig(ADC_TypeDef *ADCx, uint32_t trig)
{
MODIFY_REG(ADCx->EXTRIG0, 0xFFFFFFFFUL, trig);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_GetSGLTrig(ADC_TypeDef *ADCx)
{
return (uint32_t)READ_BIT(ADCx->EXTRIG0, 0xFFFFFFFFUL);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetJQRRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
{

if ((Channel == LL_ADC_CHANNEL_26) ||
(Channel == LL_ADC_CHANNEL_27) ||
(Channel == LL_ADC_CHANNEL_28) ||
(Channel == LL_ADC_CHANNEL_29))
{
LL_ADC_Enable_Buffer(ADCx);
}
Channel >>= ADC_CR0_CH_POS;
switch (Rank)
{
case LL_ADC_JQR_RANK_0:
{
MODIFY_REG(ADCx->JQR, ADC_JQR_MUX0_MASK, Channel << ADC_JQR_MUX0_POS);
break;
}
case LL_ADC_JQR_RANK_1:
{
MODIFY_REG(ADCx->JQR, ADC_JQR_MUX1_MASK, Channel << ADC_JQR_MUX1_POS);
break;
}
case LL_ADC_JQR_RANK_2:
{
MODIFY_REG(ADCx->JQR, ADC_JQR_MUX2_MASK, Channel << ADC_JQR_MUX2_POS);
break;
}
case LL_ADC_JQR_RANK_3:
{
MODIFY_REG(ADCx->JQR, ADC_JQR_MUX3_MASK, Channel << ADC_JQR_MUX3_POS);
break;
}
default:
{
WRITE_REG(ADCx->JQR, 0x00UL);
break;
}
}
}
举报

陈思伊

2022-1-27 14:04:12
///
//函 数:
//功 能: 设置顺序扫描的次数
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetSQRLength(ADC_TypeDef *ADCx, uint32_t SQRNbRanks)
{
MODIFY_REG(ADCx->SQR[2], ADC_SQR_CNT_MASK, SQRNbRanks);
}

///
//函 数:
//功 能: 获取顺序扫描的次数
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_GetSQRLength(ADC_TypeDef *ADCx)
{
return (uint32_t)(READ_BIT(ADCx->SQR[2], ADC_SQR_CNT_MASK));
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetSQRTrig(ADC_TypeDef *ADCx, uint32_t trig)
{
MODIFY_REG(ADCx->EXTRIG0, 0xFFFFFFFFUL, trig);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_GetSQRTrig(ADC_TypeDef *ADCx)
{
return (uint32_t)READ_BIT(ADCx->EXTRIG0, 0xFFFFFFFFUL);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetSGLTrig(ADC_TypeDef *ADCx, uint32_t trig)
{
MODIFY_REG(ADCx->EXTRIG0, 0xFFFFFFFFUL, trig);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_GetSGLTrig(ADC_TypeDef *ADCx)
{
return (uint32_t)READ_BIT(ADCx->EXTRIG0, 0xFFFFFFFFUL);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetJQRRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
{

if ((Channel == LL_ADC_CHANNEL_26) ||
(Channel == LL_ADC_CHANNEL_27) ||
(Channel == LL_ADC_CHANNEL_28) ||
(Channel == LL_ADC_CHANNEL_29))
{
LL_ADC_Enable_Buffer(ADCx);
}
Channel >>= ADC_CR0_CH_POS;
switch (Rank)
{
case LL_ADC_JQR_RANK_0:
{
MODIFY_REG(ADCx->JQR, ADC_JQR_MUX0_MASK, Channel << ADC_JQR_MUX0_POS);
break;
}
case LL_ADC_JQR_RANK_1:
{
MODIFY_REG(ADCx->JQR, ADC_JQR_MUX1_MASK, Channel << ADC_JQR_MUX1_POS);
break;
}
case LL_ADC_JQR_RANK_2:
{
MODIFY_REG(ADCx->JQR, ADC_JQR_MUX2_MASK, Channel << ADC_JQR_MUX2_POS);
break;
}
case LL_ADC_JQR_RANK_3:
{
MODIFY_REG(ADCx->JQR, ADC_JQR_MUX3_MASK, Channel << ADC_JQR_MUX3_POS);
break;
}
default:
{
WRITE_REG(ADCx->JQR, 0x00UL);
break;
}
}
}

///
//函 数:
//功 能: 设置顺序扫描的次数
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetJQRLength(ADC_TypeDef *ADCx, uint32_t JQRNbRanks)
{
MODIFY_REG(ADCx->JQR, ADC_JQR_CNT_MASK, JQRNbRanks);
}

///
//函 数:
//功 能: 获取顺序扫描的次数
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_GetJQRLength(ADC_TypeDef *ADCx)
{
return (uint32_t)(READ_BIT(ADCx->JQR, ADC_JQR_CNT_MASK));
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetJQRTrig(ADC_TypeDef *ADCx,uint32_t trig)
{
MODIFY_REG(ADCx->EXTRIG1, 0xFFFFFFFFUL,trig);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_GetJQRTrig(ADC_TypeDef *ADCx)
{
return (uint32_t) READ_BIT(ADCx->EXTRIG1, 0xFFFFFFFFUL);
}

///
//函 数:
//功 能: 获取顺序转换的结果
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint16_t LL_ADC_GetSQRConversionData(ADC_TypeDef *ADCx, uint32_t Bank)
{
return (uint16_t)READ_BIT(ADCx->SQRDR[Bank], ADC_DR_MASK);
}

///
//函 数:
//功 能: 获取顺序转换的结果
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint16_t LL_ADC_GetJQRConversionData(ADC_TypeDef *ADCx, uint32_t Bank)
{
return (uint16_t)READ_BIT(ADCx->JQRDR[Bank], ADC_DR_MASK);
}

///
//函 数:
//功 能: 获取单次转换的结果
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint16_t LL_ADC_GetConversionData(ADC_TypeDef *ADCx)
{
return (uint16_t)READ_BIT(ADCx->DR, ADC_DR_MASK);
}

///
//函 数:
//功 能: 获取单次转换的结果
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint16_t LL_ADC_GetConversionAccData(ADC_TypeDef *ADCx)
{
return (uint16_t)READ_BIT(ADCx->DRACC, ADC_DR_ACC_MASK);
}

///
//函 数:
//功 能: 设置高阈值
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetHighThresholds(ADC_TypeDef *ADCx,uint32_t ht)
{
MODIFY_REG(ADCx->HT, ADC_DR_MASK, ht);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_GetHighThresholds(ADC_TypeDef *ADCx)
{
return (uint32_t)READ_BIT(ADCx->HT, ADC_DR_MASK);
}

///
//函 数:
//功 能: 设置高阈值
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_SetLowThresholds(ADC_TypeDef *ADCx,uint32_t lt)
{
MODIFY_REG(ADCx->LT, ADC_DR_MASK, lt);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_GetLowThresholds(ADC_TypeDef *ADCx)
{
return (uint32_t)READ_BIT(ADCx->LT, ADC_DR_MASK);
}

///
//函 数:
//功 能: 中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_IsActiveFlag_JQR(ADC_TypeDef *ADCx)
{
return(uint32_t)(READ_BIT(ADCx->SR, ADC_SR_JQR));
}

///
//函 数:
//功 能: 中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_IsActiveFlag_SQR(ADC_TypeDef *ADCx)
{
return(uint32_t)(READ_BIT(ADCx->SR, ADC_SR_SQR));
}

///
//函 数:
//功 能: 中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_IsActiveFlag_CMP(ADC_TypeDef *ADCx)
{
return(uint32_t)(READ_BIT(ADCx->SR, ADC_SR_CMP));
}

///
//函 数:
//功 能: 中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_IsActiveFlag_HT(ADC_TypeDef *ADCx)
{
return(uint32_t)(READ_BIT(ADCx->SR, ADC_SR_HT));
}

///
//函 数:
//功 能: 中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_IsActiveFlag_LT(ADC_TypeDef *ADCx)
{
return(uint32_t)(READ_BIT(ADCx->SR, ADC_SR_LT));
}

///
//函 数:
//功 能: 中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_ADC_IsActiveFlag_SGL(ADC_TypeDef *ADCx)
{
return(uint32_t)(READ_BIT(ADCx->SR, ADC_SR_SGL));
}

///
//函 数:
//功 能: 清除标志位
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_ClearFlag_JQR(ADC_TypeDef *ADCx)
{
CLEAR_BIT(ADCx->CSR, ADC_CSR_JQR);
}

///
//函 数:
//功 能: 清除标志位
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_ClearFlag_SQR(ADC_TypeDef *ADCx)
{
CLEAR_BIT(ADCx->CSR, ADC_CSR_SQR);
}

///
//函 数:
//功 能: 清除标志位
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_ClearFlag_CMP(ADC_TypeDef *ADCx)
{
CLEAR_BIT(ADCx->CSR, ADC_CSR_CMP);
}

///
//函 数:
//功 能: 清除标志位
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_ClearFlag_HT(ADC_TypeDef *ADCx)
{
CLEAR_BIT(ADCx->CSR, ADC_CSR_HT);
}

///
//函 数:
//功 能: 清除标志位
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_ClearFlag_LT(ADC_TypeDef *ADCx)
{
CLEAR_BIT(ADCx->CSR, ADC_CSR_LT);
}

///
//函 数:
//功 能: 清除标志位
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_ClearFlag_SGL(ADC_TypeDef *ADCx)
{
CLEAR_BIT(ADCx->CSR, ADC_CSR_SGL);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_StartConversionSGL(ADC_TypeDef *ADCx)
{
SET_BIT(ADCx->SGLSTART, ADC_SGL_START);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_StopConversionSGL(ADC_TypeDef *ADCx)
{
CLEAR_BIT(ADCx->SGLSTART, ADC_SGL_START);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_StartConversionSQR(ADC_TypeDef *ADCx)
{
SET_BIT(ADCx->SQRSTART, ADC_SQR_START);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_StopConversionSQR(ADC_TypeDef *ADCx)
{
CLEAR_BIT(ADCx->SQRSTART, ADC_SQR_START);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_StartConversionJQR(ADC_TypeDef *ADCx)
{
SET_BIT(ADCx->JQRSTART, ADC_JQR_START);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_StopConversionJQR(ADC_TypeDef *ADCx)
{
CLEAR_BIT(ADCx->JQRSTART, ADC_JQR_START);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_StartConversionALL(ADC_TypeDef *ADCx)
{
SET_BIT(ADCx->ALLSTART, ADC_ALL_START);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_ADC_StopConversionALL(ADC_TypeDef *ADCx)
{
CLEAR_BIT(ADCx->ALLSTART, ADC_ALL_START);
}

//===顺序扫描设置
typedef struct
{
uint32_t DataAlignment; //---数据对齐
uint32_t TriggerSource; //---触发方式
uint32_t SequencerLength; //---扫描次数
uint32_t ContinuousMode; //---扫描方式
uint32_t DMATransfer; //---DMA传输
uint32_t ClockPrescaler; //---时钟预分频
uint32_t SampleCycle; //---采样周期
uint32_t InRefEn; //---内部参考电压使能
uint32_t RefSelect; //---参考电压的选择
} LL_ADC_SQR_InitTypeDef;

//===插队扫描设置
typedef struct
{
uint32_t DataAlignment; //---数据对齐
uint32_t TriggerSource; //---触发方式
uint32_t SequencerLength; //---扫描次数
uint32_t ContinuousMode; //---扫描方式
uint32_t DMATransfer; //---DMA传输
uint32_t ClockPrescaler; //---时钟预分频
uint32_t SampleCycle; //---采样周期
} LL_ADC_JQR_InitTypeDef;

//===阈值比较设置
typedef struct
{
uint32_t CmpEn; //---区间比较控制
uint32_t HTCmpEn; //---高阈值比较控制
uint32_t LTCmpEn; //---低阈值比较控制
uint32_t CmpChannel; //---阈值比较通道
uint32_t HighThresholds; //---高阈值
uint32_t LowThresholds; //---低阈值
} LL_ADC_CMP_InitTypeDef;

//===函数定义
void LL_ADC_DeInit(ADC_TypeDef *ADCx);
void LL_ADC_SQR_Init(ADC_TypeDef *ADCx, LL_ADC_SQR_InitTypeDef *ADC_SQR_InitStruct);
void LL_ADC_JQR_Init(ADC_TypeDef *ADCx, LL_ADC_JQR_InitTypeDef *ADC_JQR_InitStruct);
void LL_ADC_CMP_Init(ADC_TypeDef *ADCx, LL_ADC_CMP_InitTypeDef *ADC_CMP_InitStruct);

///
#ifdef __cplusplus
}
#endif

#endif /* HC32L1XX_LL_ADC_H */
#include "hc32l1xx_ll_adc.h"

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
void LL_ADC_DeInit(ADC_TypeDef *ADCx)
{

}
///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//

void LL_ADC_SQR_Init(ADC_TypeDef *ADCx, LL_ADC_SQR_InitTypeDef *ADC_SQR_InitStruct)
{
//---设置数据格式
LL_ADC_SetDataAlignment(ADCx, ADC_SQR_InitStruct->DataAlignment);
//---设置出发方式
LL_ADC_SetSQRTrig(ADCx, ADC_SQR_InitStruct->TriggerSource);
//---扫描次数
LL_ADC_SetSQRLength(ADCx, ADC_SQR_InitStruct->SequencerLength);
//---转换方式
LL_ADC_SetConversionMode(ADCx, ADC_SQR_InitStruct->ContinuousMode);
//---DMA传输使能
LL_ADC_SetDMASQR(ADCx, ADC_SQR_InitStruct->DMATransfer);
//---时钟分频
LL_ADC_SetClock(ADCx, ADC_SQR_InitStruct->ClockPrescaler);
//---设置采样周期
LL_ADC_SetSamplingTime(ADCx, ADC_SQR_InitStruct->SampleCycle);
//---参考电压的选择
LL_ADC_SetRefVoltage(ADCx, ADC_SQR_InitStruct->RefSelect);
//---校验参考电压的选择
if ((ADC_SQR_InitStruct->RefSelect == LL_ADC_REF_SELECTED_AVCC) ||
(ADC_SQR_InitStruct->RefSelect == LL_ADC_REF_SELECTED_EXREF))
{
//---不使能内部参考电压
LL_ADC_Disable_InRef(ADCx);
}
else
{
//---是否使能内部参考电压
LL_ADC_SetInRefEN(ADCx, ADC_SQR_InitStruct->InRefEn);
}
}
举报

张鑫

2022-1-27 14:04:21
///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
void LL_ADC_JQR_Init(ADC_TypeDef *ADCx, LL_ADC_JQR_InitTypeDef *ADC_JQR_InitStruct)
{
//---设置数据格式
LL_ADC_SetDataAlignment(ADCx, ADC_JQR_InitStruct->DataAlignment);
//---设置出发方式
LL_ADC_SetSQRTrig(ADCx, ADC_JQR_InitStruct->TriggerSource);
//---扫描次数
LL_ADC_SetSQRLength(ADCx, ADC_JQR_InitStruct->SequencerLength);
//---转换方式
LL_ADC_SetConversionMode(ADCx, ADC_JQR_InitStruct->ContinuousMode);
//---DMA传输使能
LL_ADC_SetDMASQR(ADCx, ADC_JQR_InitStruct->DMATransfer);
//---时钟分频
LL_ADC_SetClock(ADCx, ADC_JQR_InitStruct->ClockPrescaler);
//---设置采样周期
LL_ADC_SetSamplingTime(ADCx, ADC_JQR_InitStruct->SampleCycle);
}

///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
void LL_ADC_CMP_Init(ADC_TypeDef *ADCx, LL_ADC_CMP_InitTypeDef *ADC_CMP_InitStruct)
{
LL_ADC_SetCMPEN(ADCx, ADC_CMP_InitStruct->CmpEn);
LL_ADC_SetHTCMP(ADCx, ADC_CMP_InitStruct->HTCmpEn);
LL_ADC_SetLTCMP(ADCx, ADC_CMP_InitStruct->LTCmpEn);
LL_ADC_SetTHChannel(ADCx, ADC_CMP_InitStruct->CmpChannel);
LL_ADC_SetHighThresholds(ADCx, ADC_CMP_InitStruct->HighThresholds);
LL_ADC_SetLowThresholds(ADCx, ADC_CMP_InitStruct->LowThresholds);
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分