• 读取nrf52832的ADC,并且获取N个数组中的中间值


    //****读取中间值****//
    short GetMedianNum(short * bArray, short iFilterLen)  
    {  
        short i,j,bTemp;// 排序循环
        for (j = 0; j < iFilterLen - 1; j ++)  
        {  
            for (i = 0; i < iFilterLen - j - 1; i ++)  
            {  
                if (bArray[i] > bArray[i + 1])  
                {  
                    // »¥»»  
                    bTemp = bArray[i];  
                    bArray[i] = bArray[i + 1];  
                    bArray[i + 1] = bTemp;  
                }  
            }  
        } 
        if ((iFilterLen & 1) > 0)  
        {  
            // 奇数计算中值
            bTemp = bArray[(iFilterLen + 1) / 2];  
        }  
        else  
        {  
            // 偶数个计算中值
            bTemp = (bArray[iFilterLen / 2] + bArray[(iFilterLen / 2) - 1]) / 2;  
        }  
        return bTemp;  
    }
    
    void get_ADC_CH(void)
    {
        nrfx_err_t err_code;
        static uint8_t ADC_CNT = 0;
        static short ADC_ch_data[AdcUseCHs][ADC_FILTER_CNT];
        uint8_t tempi,tempj;
    
        err_code = fu_peripheral_saadc_sample_convert(0, (nrf_saadc_value_t*)&userADC_var.buff[0][ADC_CNT]);
        APP_ERROR_CHECK(err_code);
        err_code = fu_peripheral_saadc_sample_convert(1, (nrf_saadc_value_t*)&userADC_var.buff[1][ADC_CNT]);
        APP_ERROR_CHECK(err_code);
        err_code = fu_peripheral_saadc_sample_convert(2, (nrf_saadc_value_t*)&userADC_var.buff[2][ADC_CNT]);
        APP_ERROR_CHECK(err_code);
        err_code = fu_peripheral_saadc_sample_convert(3, (nrf_saadc_value_t*)&userADC_var.buff[3][ADC_CNT]);
        APP_ERROR_CHECK(err_code);
        err_code = fu_peripheral_saadc_sample_convert(4, (nrf_saadc_value_t*)&userADC_var.buff[4][ADC_CNT]);
        APP_ERROR_CHECK(err_code);
        ADC_CNT++;
        if(ADC_CNT>=ADC_FILTER_CNT)
        {
            ADC_CNT = 0;
        }
                
        for(tempi= 0;tempi<AdcUseCHs;tempi++)
        {
            for(tempj= 0;tempj<ADC_FILTER_CNT;tempj++)
            {
                ADC_ch_data[tempi][tempj] = userADC_var.buff[tempi][tempj];
            }
        }
        for(tempi= 0;tempi<AdcUseCHs;tempi++)
        {
            userADC_var.ADCMeasureVals[tempi] = (uint16_t)GetMedianNum(ADC_ch_data[tempi],ADC_FILTER_CNT);
        }
    经验再多也只能看作加法,而经过理论升华的经验,就可以看作乘法!
  • 相关阅读:
    理解爬虫原理
    中文词频统计与词云生成
    复合数据类型,英文词频统计
    字符串操作、文件操作,英文词频统计预处理
    了解大数据的特点、来源与数据呈现方式
    作业四-结对项目
    大数据应用期末总评
    分布式文件系统HDFS 练习
    安装Hadoop
    《恶魔人crybaby》豆瓣短评爬取
  • 原文地址:https://www.cnblogs.com/TorryLong/p/12980528.html
Copyright © 2020-2023  润新知