论坛元老
 
- 积分
- 10653
- 金钱
- 10653
- 注册时间
- 2017-4-14
- 在线时间
- 2780 小时
|
发表于 2019-3-1 22:31:36
|
显示全部楼层
试试这个
[mw_shl_code=applescript,true]#ifndef __HX711_H__
#define __HX711_H__
#include "sys.h"
#include "delay.h"
extern s32 zhiliang_temp,zhiliang;
#define HX711_RCC_APB2Periph_GPIOx RCC_APB2Periph_GPIOB
#define GPIO_HX711 GPIOB
#define HX711_ADSK_Pin GPIO_Pin_6 //PB6
#define HX711_ADDO_Pin GPIO_Pin_7 //PB7
#define HX711_ADSK PBout(6)
#define HX711_ADDO PBout(7)
#define HX711_ADDO_IN PBin(7) //读数据端口
#define HX711_Delay1ms() delay_ms(1) //延时nms
#define A_128 128
#define B_32 32
#define A_64 64
void HX711_IO_Init(void);
void HX711_ADDO_IO_OUT(void);
void HX711_ADDO_IO_IN(void);
s32 HX711_getdata(u8 beishu);
#endif
[/mw_shl_code]
[mw_shl_code=applescript,true]/*
//测试hx711的main
//stm32系统
#include "sys.h"
#include "delay.h"
#include "usart1.h"
#include "hx711.h"
int main()
{
s32 zhiliang;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
delay_init();
HX711_IO_Init();
USART1_Init(115200);
USART1_printf("USART1_printf OK...\r\n");
while(1)
{
zhiliang=HX711_getdata(A_128);
if(zhiliang!=0) //0:超时
USART1_printf("%ld\r\n",zhiliang);
delay_ms(100); //10Hz
}
}
*/
#include "hx711.h"
//RATE引脚 0-10Hz 1-80Hz 默认接地了 10Hz
s32 zhiliang_temp,zhiliang;
//HX711_getdata(A_64)
void HX711_IO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(HX711_RCC_APB2Periph_GPIOx, ENABLE);
GPIO_InitStructure.GPIO_Pin = HX711_ADSK_Pin | HX711_ADDO_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIO_HX711, &GPIO_InitStructure);
GPIO_ResetBits(GPIO_HX711, HX711_ADSK_Pin | HX711_ADDO_Pin); //SCK RES置低
GPIO_SetBits(GPIO_HX711, HX711_ADDO_Pin); //DATA拉高
}
void HX711_ADDO_IO_OUT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=HX711_ADDO_Pin;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIO_HX711,&GPIO_InitStructure);
}
void HX711_ADDO_IO_IN(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=HX711_ADDO_Pin;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIO_HX711,&GPIO_InitStructure);
}
s32 HX711_getdata(u8 beishu) //beishu: A_128 B_32 A_64
{
s32 count=0;
u8 i,amp,chaoshi;
HX711_ADDO_IO_IN();
switch(beishu)
{
case A_128:amp=1;break;
case B_32 :amp=2;break;
case A_64 :amp=3;break;
default :amp=1;break;
}
while(HX711_ADDO_IN)
{
HX711_Delay1ms();
chaoshi++;
if(chaoshi>10)
return 0;
}
for(i=0;i<24;i++)
{
HX711_ADSK=1;//最小0.2us
HX711_ADSK=0;
count<<=1;
if(HX711_ADDO_IN)
count++;
}
for ( i = 0; i < amp; i++)
{
HX711_ADSK=1;
HX711_ADSK=0;
}
if(count & 0x800000)//补码输出,需要还原
count=count | ((-1) << 24);
return(count);
}
[/mw_shl_code] |
|