找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

查看: 3897|回复: 2

[其他] 山景BP1048B2电位器

[复制链接]
连续签到天数:2天
签到总天数:148天
签到总奖励:3105金币
发表于 2023-7-19 18:22:25 | 显示全部楼层 |阅读模式

马上注册,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册  

×
电位器使能后是默认功能比如GPIOA27 默认调节MIC_vol  ,怎样设置成想要的功能,比如改为music_vol .有没有使用过或接触过的朋友给指点指点。


/**电位器功能选择**/
#define CFG_ADC_LEVEL_KEY_EN
#ifdef CFG_ADC_LEVEL_KEY_EN
    #define  ADCLEVL_CHANNEL_MAP           (ADC_GPIOA28|ADC_GPIOA27|ADC_GPIOA29|ADC_GPIOA30) //(ADC_GPIOA20|ADC_GPIOA21|ADC_GPIOA22)//选择GPIOA20,GPIOA21,GPIOA22口做3路ADC电位器

        #define MAX_ADCLEVL_LEVEL_VAL                 4096//电位器最大电压值:4096对应3.3v
        #define MAX_ADCLEVL_STEP_NUMBER             CFG_PARA_MAX_VOLUME_NUM//电位器调节最大步数,范围:0-31
    #define DISTANCE_BETWEEN_STEP                     5//电位器滤波采样值://5//15//25 步距

#endif

功能配置不知在哪弄
楼主热帖
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
连续签到天数:1天
签到总天数:262天
签到总奖励:10081金币
发表于 2025-5-9 11:54:01 | 显示全部楼层
在adc_levels.c里面可以自行配置:ADCLevels_Msg_Ch,然后看一下AdcLevelKeyProcess函数就明白了…
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:2天
签到总天数:148天
签到总奖励:3105金币
 楼主| 发表于 2025-5-20 10:59:48 | 显示全部楼层
Refee 发表于 2025-5-9 11:54
在adc_levels.c里面可以自行配置:ADCLevels_Msg_Ch,然后看一下AdcLevelKeyProcess函数就明白了… ...

感谢,但是没看很明白,应该是自动按顺序扫描处理吧。
/*
****************************************************************
* adc电位器扫描处理
*
*
****************************************************************
*/
uint16_t  AdcLevelKeyProcess(void)
{
        uint16_t     Val;
        uint8_t     i_count;

    //if(!IsTimeOut(&ADCLevelsScanTimer))
        //{
        //        return ;
        //}
        //TimeOutSet(&ADCLevelsScanTimer, ADCLevelsTimer);

    if(ADCLevelChannelTotal == 0) return MSG_NONE;

        ADCLevelsScanCount++;

        if(ADCLevelsScanCount >= ADCLevelChannelTotal)
        {
                ADCLevelsScanCount = 0;
        }

    Val = GetAdcVal(ADCLevelsChannel[ADCLevelsScanCount]);        

        for(i_count=0;i_count < MAX_ADCLEVL_STEP_NUMBER;i_count++)
        {
                uint32_t min = MAX_ADCLEVL_LEVEL_VAL/MAX_ADCLEVL_STEP_NUMBER*i_count - DISTANCE_BETWEEN_STEP;
                uint32_t max = MAX_ADCLEVL_LEVEL_VAL/MAX_ADCLEVL_STEP_NUMBER*(i_count+1) + DISTANCE_BETWEEN_STEP;
                if(i_count == 0)
                {
                        min = 0;
                }
                if(i_count == (MAX_ADCLEVL_STEP_NUMBER-1))
                {
                        max = MAX_ADCLEVL_LEVEL_VAL;
                }
                if(Val >= min && Val <= max)
                {
                        break;
                }
        }

        if(i_count != MAX_ADCLEVL_STEP_NUMBER)
        {
                if(i_count != ADCLevels_STEP_Store[ADCLevelsScanCount] )
                {
                        repeat_count[ADCLevelsScanCount]++;
                        if(repeat_count[ADCLevelsScanCount] > how_many_times_have_effect)
                        {
                                ADCLevels_STEP_Store[ADCLevelsScanCount] =  i_count;
                                APP_DBG("Val = %d\n", Val);
                                APP_DBG("i_count = %d\n", i_count);
                                APP_DBG("ADCLevelsScanCount = %d\n", ADCLevelsScanCount);
                                return (ADCLevels_Msg_Ch[ADCLevelsScanCount]+i_count);
                        }
                }
                else
                {
                        repeat_count[ADCLevelsScanCount] = 0;
                        return MSG_NONE;
                }
        }
        return MSG_NONE;
}
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2025-6-14 03:04 , Processed in 0.909411 second(s), 17 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表