文件名称:称重模块软件测试程序HX711
文件大小:2MB
文件格式:RAR
更新时间:2021-03-21 11:27:26
HX711
称重模块HX711,在stm32上的实现。 #include "stm32f10x.h" #include "hx711.h" #include "delay.h" #include "usart.h" //需要两根线通讯,一个时钟线,一个数据线。 #define ADIO GPIOA #define DATA GPIO_Pin_0 //数据线,输入模式 #define CLK GPIO_Pin_1 //时钟线,输出模式 #define ADCLK RCC_APB2Periph_GPIOA //时钟线 void ADInit(void) //初始化 { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(ADCLK,ENABLE); GPIO_InitStructure.GPIO_Pin = CLK; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推完输出 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;//浮空输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(ADIO,&GPIO;_InitStructure); } unsigned int HX711_Read(void) //时钟配置 { unsigned int val=0; unsigned int val1=0; unsigned char i = 0; GPIO_SetBits(ADIO,DATA);//高 GPIO_ResetBits(ADIO,CLK);//低 while(GPIO_ReadInputDataBit(ADIO,DATA));//等 for(i=0;i<24;i++) { GPIO_SetBits(ADIO,CLK); val=val<<1; GPIO_ResetBits(ADIO,CLK); if(GPIO_ReadInputDataBit(ADIO,DATA)) val++; } GPIO_SetBits(ADIO,CLK); val = val^0x800000; GPIO_ResetBits(ADIO,CLK); return val; }