高级会员

- 积分
- 615
- 金钱
- 615
- 注册时间
- 2014-5-12
- 在线时间
- 158 小时
|
5金钱
#ifndef __HX711_H__
#define __HX711_H__
#include "sys.h"
#include "stm32f10x.h"
//IO?è??
#define HX711_DOUT_IN() {GPIOA->CRH&=0XFFFFFF0F;GPIOA->CRH|=8<<4;}
#define HX711_DOUT_OUT() {GPIOA->CRH&=0XFFFFFF0F;GPIOA->CRH|=3<<4;}
#define HX711_SCK PAout(10) //SCK
#define HX711_DOUT_O   Aout(9) //DT
#define HX711_DOUT_I   Ain(9) //????DT
//?????ò??±????ù?÷
void HX711_Init(void);
unsigned long HX711_Read(void);
#endif
#include "HX711.h"
#include "delay.h"
void HX711_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //???ì????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_9); //PB10,PB11 ?????
}
//****************************************************
//????HX711
//****************************************************
unsigned long HX711_Read(void) //????128
{
unsigned long count;
unsigned char i;
HX711_DOUT_O=1;
delay_us(1);
HX711_SCK=0;
count=0;
HX711_DOUT_IN();
while(HX711_DOUT_I);
for(i=0;i<24;i++)
{
HX711_SCK=1;
count=count<<1;
HX711_SCK=0;
if(HX711_DOUT_I)
count++;
}
HX711_SCK=1;
count=count^0x800000;//?25????????,????
delay_us(1);
HX711_SCK=0;
HX711_DOUT_O;
return(count);
}
|
最佳答案
查看完整内容[请看2#楼]
http://www.openedv.com/posts/list/39123.htm
参考这个就可以了
|