本帖最后由 夜孤影 于 2018-4-8 12:38 编辑
手头有一块HX711模块,一直在用51开发,开发的很好,突发奇想移植到STM32F4上面去,于是就写了代码,现在问题是编译通过了,下载到板子上去后一直称不出来重量,东西放在上面也不显示加减,很苦恼,调试了2天没结果,网上也没有相应的文章,请大家帮帮忙。代码如下。串口显示结果。- //主函数
- #include "stm32f4xx.h"
- #include "usart.h"
- #include "delay.h"
- #include "main.h"
- #include "HX711.h"
-
- int main(void)
- {
- unsigned long t=0;
- delay_init(168);
-
- uart_init(9600);
- AD_init();
-
- while(1)
- {
- delay_ms(500);
- t = ReadAD();
- printf("t1=%ld
",t);
- delay_ms(500);
- t = filter();
- printf("t2=%ld
",t);
- }
- }
- //HX711
- #include "HX711.h"
- #include "delay.h"
- #include "stm32f4xx.h"
- void AD_init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,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_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//ÉÏÀ
- GPIO_Init(ADIO,&GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = DATA;//Êý¾Ý
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
- //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//ÉÏÀ
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //DATAÒý½Å¶¨Ò帡¿ÕÊäÈë
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(ADIO,&GPIO_InitStructure);
- }
- //****************************************************
- //³ÆÖØ1
- //****************************************************
- unsigned long ReadAD(void) //¶ÁADоƬÊä³öµÄÊý¾Ý¡£
- {
- unsigned long count ;
- unsigned char i;
- GPIO_SetBits(ADIO,DATA); //DOUT=1;
- GPIO_ResetBits(ADIO,CLK); //CLK=0
- count=0;
- while(GPIO_ReadInputDataBit(ADIO,DATA)); //µÈ´ýDOUTµÈÓÚ0
- delay_us(1);
- for(i=0;i<24;i++)
- {
- GPIO_SetBits(ADIO,CLK); //CLK=1
- count=count<<1;
- delay_us(1);
- GPIO_ResetBits(ADIO,CLK); //CLK=0
- if(GPIO_ReadInputDataBit(ADIO,DATA)) //Èç¹ûDOUTµÈÓÚ1
- count++;
- delay_us(1);
- }
- GPIO_SetBits(ADIO,CLK); //CLK =1
- count=count^0x800000;
- delay_us(1);
- GPIO_ResetBits(ADIO,CLK);//CLK =0
- delay_us(1);
- return(count);
- }
- long double filter(void) //»¬¶¯¾ùÖµÂ˲¨·¨µÄº¯Êý¡£
- {
- unsigned long max=0,min=0,SUM,BUF[12],Average;
- int i=0;
- for(i=0;i<12;i++)
- {
- BUF[i]=ReadAD();
- //printf("%ld
",BUF[i]);
- if(i==0)
- {
- max=BUF[0];
- min=BUF[0];
- }
- if(i>0)
- {
- if(BUF[i]>max) max=BUF[i];
- if(BUF[i]<min) min=BUF[i];
- }
- }
- for(i=0;i<12;i++)
- {
- if(!(BUF[i]==max||BUF[i]==min))
- {
- SUM=SUM+BUF[i];
- }
- }
- Average=SUM/(12-2);
- return Average;
-
- }
复制代码
-
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>