#include "stm32l1xx.h"
#include "pressure.h"
#include "string.h"
#define SCK_HIGH GPIO_WriteBit(GPIOB,GPIO_Pin_1,Bit_SET)
#define SCK_LOW GPIO_WriteBit(GPIOB,GPIO_Pin_1,Bit_RESET)
#define DT GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)
struct PressureDefine Pressure_Define={0};
void Pressure_Config(struct PressureDefine defines)
{
GPIO_InitTypeDef GPIO_InitStructure;
struct PressureDefine def = defines;
memcpy(&Pressure_Define,&defines,sizeof(struct PressureDefine));
GPIO_InitStructure.GPIO_Pin = def.pin_of_dt;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(def.pin_of_dt_group, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = def.pin_of_sck;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(def.pin_of_sck_group, &GPIO_InitStructure);
}
unsigned long ReadCount(void)
{
unsigned long Count = 0;
uint8_t i;
SCK_LOW;
while(DT);
for(i=0;i<24;i++)
{
SCK_HIGH;
Count=Count<<1;
SCK_LOW;
if(DT)
Count++;
}
SCK_HIGH;
Count=Count^0x800000;
SCK_LOW;
return Count;
}
|