Skip to content

Errors #1

@ghost

Description

you have some errors in your library. I resolve them.

//======
//hx711.h
//======
#ifndef HX711_H_
#define HX711_H_

#include "stm32f3xx_hal.h"

typedef struct _hx711
{
GPIO_TypeDef* gpioSck;
GPIO_TypeDef* gpioData;
uint16_t pinSck;
uint16_t pinData;
int offset;
int gain;
// 1: channel A, gain factor 128
// 2: channel B, gain factor 32
// 3: channel A, gain factor 64
} HX711;

void HX711_Init(HX711 data);
HX711 HX711_Tare(HX711 data, uint8_t times);
int HX711_Value(HX711 data);
int HX711_AverageValue(HX711 data, uint8_t times);

#endif /* HX711_H_ */

//======
//hx711.c
//======
#include "hx711.h"

void HX711_Init(HX711 data)
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = data.pinSck;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(data.gpioSck, &GPIO_InitStruct);

GPIO_InitStruct.Pin = data.pinData;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(data.gpioData, &GPIO_InitStruct);

HAL_GPIO_WritePin(data.gpioSck, data.pinSck, GPIO_PIN_SET);
HAL_Delay(50);
HAL_GPIO_WritePin(data.gpioSck, data.pinSck, GPIO_PIN_RESET);

}

int HX711_AverageValue(HX711 data, uint8_t times)
{
int sum = 0;
for (int i = 0; i < times; i++)
{
sum += HX711_Value(data);
}

return sum / times;

}

int HX711_Value(HX711 data)
{
int buffer;
buffer = 0;

while (HAL_GPIO_ReadPin(data.gpioData, data.pinData)==1)
;

for (uint8_t i = 0; i < 24; i++)
{
	HAL_GPIO_WritePin(data.gpioSck, data.pinSck, GPIO_PIN_SET);

    buffer = buffer << 1 ;

    if (HAL_GPIO_ReadPin(data.gpioData, data.pinData))
    {
        buffer ++;
    }

    HAL_GPIO_WritePin(data.gpioSck, data.pinSck, GPIO_PIN_RESET);
}

for (int i = 0; i < data.gain; i++)
{
	HAL_GPIO_WritePin(data.gpioSck, data.pinSck, GPIO_PIN_SET);
	HAL_GPIO_WritePin(data.gpioSck, data.pinSck, GPIO_PIN_RESET);
}

buffer = buffer ^ 0x800000;
	buffer -= data.offset;

return buffer;

}

HX711 HX711_Tare(HX711 data, uint8_t times)
{
int sum = HX711_Average_Value(data, times);
data.offset = sum;
return data;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions