初级会员

- 积分
- 69
- 金钱
- 69
- 注册时间
- 2015-5-21
- 在线时间
- 15 小时
|
发表于 2015-7-8 14:58:44
|
显示全部楼层
/*******************************************************
±?????????????×÷?????????÷ר??AD???? HX711 ?????ò??
********************************************************/
#include <stm32f4xx.h>
#include "ad_hx711.h"
#include "delay.h"
#include "usart.h"
#define ADIO GPIOA //?¨??AD??????????I/O????×é??
#define DATA GPIO_Pin_0 //?¨??AD????????????????????????
#define CLK GPIO_Pin_1 //?¨??AD???????±????????????????
#define ADCLK RCC_AHB1Periph_GPIOA //?¨??AD?????ù??????I/O???????±????
void ADInit(void) //??????AD??????????I/O??????
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(ADCLK,ENABLE);
GPIO_InitStructure.GPIO_Pin = CLK;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_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;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//DATA?????¨?????????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(ADIO,&GPIO_InitStructure);
}
unsigned long ReadAD(void) //??AD????????????????
{
unsigned long val = 0;
unsigned char i = 0;
GPIO_SetBits(ADIO,DATA);
GPIO_ResetBits(ADIO,CLK);
while(GPIO_ReadInputDataBit(ADIO,DATA));
delay_us(5);
for(i=0;i<24;i++)
{
GPIO_SetBits(ADIO,CLK);
val=val<<1;
delay_us(5);
GPIO_ResetBits(ADIO,CLK);
if(GPIO_ReadInputDataBit(ADIO,DATA))
val++;
delay_us(5);
}
GPIO_SetBits(ADIO,CLK);
val = val^0x800000;
delay_us(5);
GPIO_ResetBits(ADIO,CLK);
delay_us(5);
return val;
}
long double filter(void) //?????ù?????¨·¨????????
{
unsigned long max=0,min=0,SUM,BUF[12],Average;
int i=0;
for(i=0;i<12;i++)
{
BUF=ReadAD();
printf("%ld\r\n",BUF);
if(i==0)
{
max=BUF[0];
min=BUF[0];
}
if(i>0)
{
if(BUF>max) max=BUF;
if(BUF<min) min=BUF;
}
}
for(i=0;i<12;i++)
{
if(!(BUF==max||BUF==min))
{
SUM=SUM+BUF;
}
}
Average=SUM/(12-2);
return Average;
}> |
|