欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: [已解決]HX711在STM32F4里面一直顯示83688608 [打印本頁]

作者: zhczlzhang    時間: 2018-4-8 12:35
標題: [已解決]HX711在STM32F4里面一直顯示83688608
在論壇里面參考了很多人的HX711模塊,可以知道,SCK引腳要設置為推挽輸出,50MHZ,DOUT設置為浮空輸入,50MHZ。初始化引腳之后是讀取轉換函數,這個沒什么好說的,看著改就好。讓我疑惑的是,我自認為程序寫的應該沒問題,但是串口一直顯示83688608,我在上面放置物品,也不見重量發生變化。我看了論壇所有HX711的帖子,發現論壇很多大佬都碰到這個問題了,但是解決辦法很多人都不說,有的說引腳接錯了,但是我把E+E-引腳接反,DT,SCK都接反來試驗過,還是不行,最后又改回原來的。我在探索板上給HX711提供5V,GND,實驗過改為3.3V,GND
  1. //HX711
  2. #include "HX711.h"
  3. #include "delay.h"
  4. #include "stm32f4xx.h"

  5. void AD_init(void)
  6. {
  7.                 GPIO_InitTypeDef GPIO_InitStructure;

  8.         RCC_APB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);

  9.         GPIO_InitStructure.GPIO_Pin = CLK ;
  10.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  11.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//CLKòy½Å¶¨òåíÆíìêä3ö
  12.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  13.         //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
  14.         GPIO_Init(ADIO,&GPIO_InitStructure);

  15.         GPIO_InitStructure.GPIO_Pin = DATA;//êy¾Y
  16.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  17.         //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
  18.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //DATAòy½Å¶¨ò帡¿Õêäèë
  19.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  20.         GPIO_Init(ADIO,&GPIO_InitStructure);                 
  21. }


  22. //****************************************************
  23. //3ÆÖØ1
  24. //****************************************************
  25. unsigned long ReadAD(void)  //¶áADD¾Æ¬êä3öμÄêy¾Y¡£
  26. {
  27.         unsigned long count ;
  28.         unsigned char i;
  29.   GPIO_SetBits(ADIO,DATA);        //DOUT=1;
  30.         GPIO_ResetBits(ADIO,CLK);        //CLK=0
  31.   count=0;         
  32.   while(GPIO_ReadInputDataBit(ADIO,DATA)); //μè′yDOUTμèóú0
  33.         delay_us(1);
  34.   for(i=0;i<24;i++)
  35.         {
  36.                   GPIO_SetBits(ADIO,CLK);                        //CLK=1               
  37.                   count=count<<1;
  38.                         delay_us(1);
  39.                         GPIO_ResetBits(ADIO,CLK);                  //CLK=0
  40.                         if(GPIO_ReadInputDataBit(ADIO,DATA))                //èç1ûDOUTμèóú1                        
  41.                                         count++;
  42.                                         delay_us(1);
  43.         }
  44.          GPIO_SetBits(ADIO,CLK);        //CLK =1
  45.   count=count^0x800000;
  46.         delay_us(1);
  47.         GPIO_ResetBits(ADIO,CLK);//CLK =0
  48.   delay_us(1);
  49.         return(count);                 
  50. }


  51. long double filter(void)  //»¬¶ˉ¾ùÖμÂË2¨·¨μÄoˉêy¡£   
  52. {
  53.         unsigned long max=0,min=0,SUM,BUF[12],Average;
  54.         int i=0;        
  55. for(i=0;i<12;i++)
  56.         {
  57.                 BUF[i]=ReadAD();
  58.         //printf("%ld\r\n",BUF[i]);
  59.                 if(i==0)
  60.                 {
  61.                         max=BUF[0];
  62.                         min=BUF[0];
  63.                 }
  64.                 if(i>0)
  65.                 {
  66.                         if(BUF[i]>max) max=BUF[i];
  67.                         if(BUF[i]<min) min=BUF[i];
  68.                 }
  69.         }
  70.         for(i=0;i<12;i++)
  71.         {
  72.                 if(!(BUF[i]==max||BUF[i]==min))
  73.                 {
  74.                         SUM=SUM+BUF[i];        
  75.                 }
  76.         }
  77.         Average=SUM/(12-2);
  78.         return Average;
  79.         
  80. }

  81. //主函數
  82. #include "stm32f4xx.h"
  83. #include "usart.h"
  84. #include "delay.h"
  85. #include "main.h"
  86. #include "HX711.h"


  87.   

  88. int main(void)
  89. {
  90.          unsigned long t=0;

  91.         delay_init(168);
  92.         
  93.         uart_init(9600);
  94.         AD_init();        
  95.         
  96.         while(1)
  97.                 {
  98.                         delay_ms(500);
  99.                         t = ReadAD();
  100.                         printf("t1=%ld\r\n",t);                                
  101.                         delay_ms(500);
  102.                         t = filter();
  103.                         printf("t2=%ld\r\n",t);               

  104. }
  105. }

復制代碼

,還是不行。所以請教諸位,看一下我的程序跟原理圖,提出解決辦法。給個思路或靈感也行啊

QQ截圖20180404161045.png (44.73 KB, 下載次數: 109)

QQ截圖20180404161045.png

微信圖片_20180408121941.jpg (225.93 KB, 下載次數: 101)

微信圖片_20180408121941.jpg

作者: zhczlzhang    時間: 2018-4-9 15:51
問題已解決!好吧其實出現這個問題很簡單,我在這里直接說一下,免得很多人都不知道這個解決方法。STM32開發板跟單片機開發板有一點不一樣,你在單片機開發板上,隨便哪個IO口都可以作為獨立的IO口來用,但是在探索者開發板上不行,因為他的IO口都被占用了,你如果用不是開發板上的外設,而是自己的外設去搶占IO口,就會出現操作無反應的狀況。我把STM32F4開發指南看了一遍才在1.2.3章節找到IO口分配表,找到了可以獨立的IO口,然后重新分配了IO口引腳,然后程序下載燒錄,運行完美,沒有一點問題。
所以大家記住,在使用相關的開發板時,一定要注意IO口的引腳分配問題。
作者: yyyyffff    時間: 2025-1-10 16:22
你好樓主,這個io接口用cubemx設置好了input和output了,還要去考慮可以獨立的IO口嗎




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1