完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#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_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_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); } |
|
|
|
///
//函 数: //功 能: //输入参 数: //输出参 数: //说 明: // 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; } } } |
|
|
|
///
//函 数: //功 能: 设置顺序扫描的次数 //输入参 数: //输出参 数: //说 明: // 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); } } |
|
|
|
///
//函 数: //功 能: //输入参 数: //输出参 数: //说 明: // 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); } |
|
|
|
只有小组成员才能发言,加入小组>>
3324 浏览 9 评论
3003 浏览 16 评论
3498 浏览 1 评论
9077 浏览 16 评论
4094 浏览 18 评论
1198浏览 3评论
615浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
603浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2343浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1902浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 03:23 , Processed in 1.406446 second(s), Total 83, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号