久久久国产精品视频袁燕,99re久久精品国产,亚洲欧美日韩国产综合v,天天躁夜夜躁狠狠久久,激情五月婷婷激情五月婷婷

  • 回復(fù)
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖

【DigiKey年度寵粉】簡易流量計

      感謝論壇和得捷組織的本次活動,讓我們有機會可以接觸優(yōu)秀的硬件產(chǎn)品。
      簡單的介紹一下本次的創(chuàng)意,想要實現(xiàn)一個簡易的實時流量測量工具,這里我們選用了一款基于超聲波的傳感器,稍后在進行簡單的介紹,主控的選擇確實一個難題,最基礎(chǔ)的功能就是需要進行顯示,當(dāng)然了STM32是最理想的選擇,相對開發(fā)比較熟悉,最后通過不斷的篩選,STM32U083C-DK進入了而我的視線。

      意法半導(dǎo)體STM32U083C-DK開發(fā)套件使用STM32U083MCT6微控制器演示和開發(fā)應(yīng)用程序。意法半導(dǎo)體STM32U083C-DK是用于最終產(chǎn)品集成的用戶應(yīng)用開發(fā)的參考設(shè)計。該板允許通過配備各種硬件功能來評估外設(shè)和創(chuàng)建應(yīng)用程序。這些功能包括USB FS設(shè)備、分段LCD、觸摸鍵、溫度傳感器等。與Arduino Uno V3, microbus 和擴展連接器的兼容性簡化了連接到專用應(yīng)用的擴展屏蔽或子板的連接。該套件具有集成的STLINK-V2EC調(diào)試器/編程器,消除了對單獨探頭的需要。通過標(biāo)準(zhǔn)的USB Type-A或USB Type-C 到USB Type-C電纜連接到PC,可以輕松操作該板。這里的分段式的LCD正式我們所需要的。
      我們簡單看了一下其原理圖的分布:

      最高可以顯示6位數(shù),完全可以滿足我們的需求,當(dāng)然了使用官方開發(fā)板還有一個好處就是有相關(guān)模塊驅(qū)動的歷程,我們直接使用其LCD_SegmentsDrive的歷程就可以實現(xiàn)基本的顯示功能,需要修改一些內(nèi)容讓其符合我們的數(shù)字顯示需求,我們從寫一個顯示程序:
void BSP_LCD_GLASS_data(uint32_t Speed)
{
  uint32_t repetition = 0;
  uint8_t nbrchar = 0;
  uint8_t str[6] = "";
    uint8_t st1 = 0;

  /* Reset interrupt variable in case key was press before entering function */
  bLCDGlass_KeyPressed = 0;
    repetition = Speed;

  for(uint8_t i=0;i<6;i++)
    {
        if(repetition == 0)
        {
            if(i==0)
                str[i] = 48;
            else
                str[i] = 32;
        }
        else
        {
            nbrchar = repetition%10;
            str[i] = nbrchar+48;
            repetition = repetition/10;
        }
            
    }
    
    for(uint8_t j=0;j<3;j++)
    {
        st1 = str[j];
        str[j] = str[5-j];
        str[5-j] = st1;
    }
    
    BSP_LCD_GLASS_Clear();
  BSP_LCD_GLASS_DisplayString(str);

}
      接下來就是獲取流量相關(guān)的數(shù)據(jù),我們使用的是一款超聲波流量傳感器,主要是使用串口通信,這樣一看是不是就不復(fù)雜了,硬件方面我們主要連接對應(yīng)的串口就可以,我們選擇的串口二,對應(yīng)的硬件座如下:

      接下來是外設(shè)初始的配置,我們需要打開串口2:

      由于收到的數(shù)據(jù)是一些列的字符串,為了減少中斷的占用,我們啟用的DMA:

      采用串口空閑中斷+DMA的方式進行數(shù)據(jù)接收,這種方式非常適合不定長的串口數(shù)據(jù)接收。
      接下來我們只要在外部中斷處理就可以了:
void USART2_LPUART2_IRQHandler(void)
{
  /* USER CODE BEGIN USART2_LPUART2_IRQn 0 */
    tmp_flag =__HAL_UART_GET_FLAG(&huart2,UART_FLAG_IDLE); //獲取IDLE標(biāo)志位
    if((tmp_flag != RESET))
    { 
        __HAL_UART_CLEAR_IDLEFLAG(&huart2);//

        HAL_UART_DMAStop(&huart2); 
    Speed_Data = rx_buffer[5]*256+rx_buffer[5];
    HAL_UARTEx_ReceiveToIdle_DMA(&huart2,rx_buffer,200);//再次開啟DMA接收
    }

  /* USER CODE END USART2_LPUART2_IRQn 0 */
  HAL_UART_IRQHandler(&huart2);
  /* USER CODE BEGIN USART2_LPUART2_IRQn 1 */

  /* USER CODE END USART2_LPUART2_IRQn 1 */
}
      測試效果如下:

      斷碼顯示還是存在一定弊端的,對觀察角度的要求太苛刻。
全部回復(fù)(0)
正序查看
倒序查看
現(xiàn)在還沒有回復(fù)呢,說說你的想法
發(fā)