新手入门
- 积分
- 4
- 金钱
- 4
- 注册时间
- 2021-3-13
- 在线时间
- 0 小时
|
1金钱
本帖最后由 2945291615 于 2021-3-13 10:33 编辑
百度了一周,资料和例子找了很多,但是移过来以后不运行,这个是脉冲的问题么?
HX711需要时钟么?看例子只是腿脚输出信号,没看到时钟的例子啊。
我用的是杜洋模板,求大佬测试一下我的代码如果没问题就是模块坏了。。。
我百度SPI通讯,发现这个不是SPI通讯,类似IIC通讯,但是又没有物理地址,我要疯了。
HX711.h
#ifndef __HX711_H__
#define __HX711_H__
void ADInit(void); //??????AD?????????ü??????I/O??????
u32 HX711_Read(void); //??AD???????????????
#endif
HX711.c
#include "stm32f10x.h"
#include "hx711.h"
#include "delay.h"
#define ADIO GPIOA //?¨??AD??????????I/O????×é??
#define DATA GPIO_Pin_0 //?¨??AD????????????????????????
#define CLK GPIO_Pin_1 //?¨??AD???????±????????????????
#define ADCLK RCC_APB2Periph_GPIOA //?¨??AD?????ù??????I/O???????±???
void ADInit(void) //??????AD??????????I/O??????
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(ADCLK,ENABLE);
GPIO_InitStructure.GPIO_Pin = CLK;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //CLK?????¨??????????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(ADIO,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = DATA;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//DATA?????¨??????????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(ADIO,&GPIO_InitStructure);
}
u32 HX711_Read(void) //??AD????????????????
{
u32 val = 0;
u32 i = 0;
GPIO_SetBits(ADIO,DATA);
GPIO_ResetBits(ADIO,CLK);
while(GPIO_ReadInputDataBit(ADIO,DATA));
delay_us(1);
for(i=0;i<24;i++)
{
GPIO_SetBits(ADIO,CLK);
val=val<<1;
delay_us(1);
GPIO_ResetBits(ADIO,CLK);
if(GPIO_ReadInputDataBit(ADIO,DATA))
val++;
delay_us(1);
}
GPIO_SetBits(ADIO,CLK);
val = val^0x800000;
delay_us(1);
GPIO_ResetBits(ADIO,CLK);
delay_us(1);
return val;
}
main.c
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "key.h"
#include "string.h"
#include "hx711.h"
#include "stm32f10x.h" //STM32头文件
#include "touch_key.h"
#include "relay.h"
#include "oled0561.h"
u32 asd=0;
int main(void)
{ delay_ms(500);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组配置
//uart_init(115200); //串口波特率设置
I2C_Configuration();//I2C初始化
OLED0561_Init(); //OLED初始化
ADInit(); //HX711初始化
while(1){
asd=HX711_Read();
// asd=Read_Weigh();
//将光敏电阻的ADC数据显示在OLED上
OLED_DISPLAY_8x16(4,10*8,asd/1000+0x30);//
OLED_DISPLAY_8x16(4,11*8,asd%1000/100+0x30);//
OLED_DISPLAY_8x16(4,12*8,asd%100/10+0x30);//
OLED_DISPLAY_8x16(4,13*8,asd%10+0x30);//
delay_ms(500); //延时
}
}
以上是我写的全部,大佬们帮测试一下或修改。
|
|