野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11365|回复: 4

hx711

[复制链接]
发表于 2018-10-22 22:16:25 | 显示全部楼层 |阅读模式
#include "./hx711/hx711.h"


long HX711_Buffer = 0;
long Weight_Maopi = 0,Weight_Shiwu = 0;

#define GapValue 430
#define HIGH 1
#define LOW  0
#define HX711_GROUP GPIOB


void digitalWrite(GPIO_TypeDef * GPIO,int pin,int value)
{
        if(value==HIGH)//set 1
        {
                GPIO_SetBits(GPIO,pin);
        }
        if(value==LOW)//reset 0
        {
                GPIO_ResetBits(GPIO,pin);
        }
}

int digitalRead(GPIO_TypeDef * GPIO,int pin)
{
        return GPIO_ReadInputDataBit(GPIO,pin);
}

//****************************************************
//初始化HX711
//****************************************************
void Init_Hx711()
{
        GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_GPIOA, ENABLE);

  //SCK
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 ;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_72MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

        GPIO_InitTypeDef  GPIO_InitStructure1;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_GPIOA, ENABLE);

  //DOUT
  GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_1 ;
  GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_IN;
  //GPIO_InitStructure1.GPIO_OType = GPIO_OType_OD;
  GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure1.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOA, &GPIO_InitStructure1);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_GPIOA, ENABLE);

}


//****************************************************
//获取毛皮重量
//****************************************************
void Get_Maopi()
{
        Weight_Maopi = HX711_Read();               
}

//****************************************************
//称重
//****************************************************
long Get_Weight()
{
        HX711_Buffer = HX711_Read();
        Weight_Shiwu = HX711_Buffer;
        Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                                //获取实物的AD采样数值。
        Weight_Shiwu = (long)((float)Weight_Shiwu/GapValue);        
        return Weight_Shiwu;
}

//****************************************************
//读取HX711
//****************************************************
unsigned long HX711_Read(void)        //增益128
{
                unsigned long val = 0;
        unsigned char i = 0;

        //判断模块是否准备好
        while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1));
        delay_us(1);   
        //sck 拉低
        GPIO_ResetBits(GPIOA,GPIO_Pin_2);
        //再次判断是否准备好
        while(!GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1));

        for(i=0;i<24;i++)
        {
                delay_us(100);
                GPIO_SetBits(GPIOA,GPIO_Pin_2);          
                val=val<<1;
                delay_us(1);  
                GPIO_ResetBits(GPIOA,GPIO_Pin_2);          
                if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1))  
                val++;
                delay_us(1);
        }
        GPIO_SetBits(GPIOA,GPIO_Pin_2);
        val = val^0x800000;
        delay_us(1);
        GPIO_ResetBits(GPIOA,GPIO_Pin_2);
        delay_us(1);  
        return val;
}
中一直出现问题说没有被定义,问题是下面的
..\User\hx711\hx711.c(38): error:  #20: identifier "RCC_APB1Periph_GPIOA" is undefined
但是我定义了,而且在'".h"文件中也定义了#include "stm32f10x.h"。但是不知道为啥还是没有被定义,求大神

回复

使用道具 举报

发表于 2018-10-23 08:36:27 | 显示全部楼层
RCC_APB1Periph_GPIOA-----RCC_APB2Periph_GPIOA

GPIO在APB2上

自己翻翻时钟树
回复 支持 反对

使用道具 举报

发表于 2018-10-23 08:40:08 | 显示全部楼层
应该是RCC_APB2Periph_GPIOA
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-23 10:20:22 | 显示全部楼层
确实是这样,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-23 10:20:47 | 显示全部楼层
君负花开 发表于 2018-10-23 08:36
RCC_APB1Periph_GPIOA-----RCC_APB2Periph_GPIOA

GPIO在APB2上

谢谢,是这样的
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 19:17 , Processed in 0.028131 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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