想读取称重的重量送到串口显示,可是一直为零。这代码原本跑过,可以正常读数的,未改动过,再跑就一直显示为0了!
麻烦各位不吝赐教了
int main(void)
{
u8 c;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
uart_init(9600); //串口初始化为9600
LED_Init(); //初始化与LED连接的硬件接口
HX711_Init();
Get_Maopi();//获取毛皮重量
while(1)
{
Get_Weight();//获取实物重量
printf("得到的重量%d
",Weight_Shiwu); //输出实物重量并保留两位小数
delay_ms(10000);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
试试这个
[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... ");
while(1)
{
zhiliang=HX711_getdata(A_128);
if(zhiliang!=0) //0:超时
USART1_printf("%ld ",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]
一周热门 更多>