日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

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

【DigiKey年度寵粉】簡(jiǎn)易流量計(jì)

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

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

      最高可以顯示6位數(shù),完全可以滿(mǎn)足我們的需求,當(dāng)然了使用官方開(kāi)發(fā)板還有一個(gè)好處就是有相關(guān)模塊驅(qū)動(dòng)的歷程,我們直接使用其LCD_SegmentsDrive的歷程就可以實(shí)現(xiàn)基本的顯示功能,需要修改一些內(nèi)容讓其符合我們的數(shù)字顯示需求,我們從寫(xiě)一個(gè)顯示程序:
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);

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

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

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

      采用串口空閑中斷+DMA的方式進(jìn)行數(shù)據(jù)接收,這種方式非常適合不定長(zhǎng)的串口數(shù)據(jù)接收。
      接下來(lái)我們只要在外部中斷處理就可以了:
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);//再次開(kāi)啟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 */
}
      測(cè)試效果如下:

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