微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法获取ADC值并将其放入数组STM32F103C8T6

如何解决无法获取ADC值并将其放入数组STM32F103C8T6

我尝试将 ADC 值放入一维数组并将其传输到 PC。 但它不工作。我使用 HAL_ADC_GetValue()ADC1chanel0 读取数据。 这是我的代码

// maxziedata = 2048.
uint8_t DATA_ALL[MAXSIZEDATA];

void ReadAll(){
memset(DATA_ALL,sizeof(DATA_ALL));
delay_us(timeDelay);
int count =-1;
//Read 32 Row
for(int row=0; row<32; row++){
    SelectRow(row);                             //Read 32 Row   
    for(int col=0; col<32; coL++){
        SelectCol(col);                           //Read 32 Column
        ++count;
        HAL_ADC_Start(&hadc1);
        HAL_ADC_PollForConversion(&hadc1,50);
        HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1),HAL_ADC_STATE_REG_EOC);
        
        delay_us(10);
        uint16_t data = HAL_ADC_GetValue(&hadc1); // Data is alway equal 0      
        // if data = n,PC will received data.  
        DATA_ALL[count*2] = data & 0xff;
        DATA_ALL[count*2+1] = (data >> 8) & 0xff;
        
        HAL_ADC_Stop(&hadc1);
    }
    HAL_GPIO_WritePin(GPIOB,EN_COL_1_Pin,GPIO_PIN_SET);
  }
   HAL_GPIO_WritePin(GPIOA,EN_ROW_1_Pin,GPIO_PIN_SET);
}

如果我伪造数据 uint16_t data = HAL_ADC_GetValue(&hadc1); 更改为 uint16_t data = count,PC 将接收数据。 当我只发送一个数组值时,PC会收到数据。

void ReadOne(int row,int col){
    memset(SEND_DATA,sizeof(SEND_DATA));
    HAL_ADC_Start(&hadc1);
    SelectRow(row);
    SelectCol(col);
    HAL_ADC_Start(&hadc1);
    delay_us(100);
    HAL_ADC_PollForConversion(&hadc1,1);
    uint16_t avg = 0;
    for(int i=0; i<samplingTimes; i++){
        avg += HAL_ADC_GetValue(&hadc1);
    }
    SEND_DATA[(row*32+col)*2] = avg/samplingTimes & 0xff;
    SEND_DATA[((row*32+col)*2)+1] = (avg/samplingTimes >> 8) & 0xff;

    HAL_ADC_Stop(&hadc1);
    delay_us(100);
}

这是我的配置 ADC:

Here is my config ADC

主要问题是HAL_ADC_GetValue()循环步骤后无法将数据放入数组

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?