主頁 >  其他 > STM32F4時鐘觸發ADC雙通道采樣DMA傳輸進行FFT+測頻率+采樣頻率可變+顯示波形(詳細解讀)

STM32F4時鐘觸發ADC雙通道采樣DMA傳輸進行FFT+測頻率+采樣頻率可變+顯示波形(詳細解讀)

2020-12-08 11:20:15 其他

寫在前面的婆婆媽媽的話

本人大三,參加過數次電賽,來CSDN好久, 每次都是在絕望中從這里找到了希望,每次都仿佛一個即將被怪獸打翻的小船突然被危險流浪者救起來,是眾多前輩的智慧,讓我有信心繼續做下去,今天上午學校自己舉辦的電子設計競賽公布了結果,獲了一等獎,萬分開心時,卻也不忘CSDN的恩澤,就有了把自己的東西分享出去的念頭,我希望我寫的這一片博文,可以給需要的人帶來哪怕微小的一點作用,第一次寫,還請包涵,

工程簡介

使用STM32F4系列單片機(本次使用的是STM32F429,此程式F4全系列使用,只需注意修改好主頻就行了)加陶晶馳3.5寸T0系列串口屏,由觸摸屏上的按鍵開啟測量,然后顯示信號峰峰值,頻率,畫出波形,判斷波形,對頻率變化的信號測量頻率后確定時鐘觸發頻率,即確定了采樣率,用ADC雙通道測量兩路信號,用DMA傳輸至一個陣列記憶體中,然后顯示波形、計算Vpp、并對資料進行FFT,分析頻譜確定波形名稱(可判斷正弦波,三角波,方波,脈沖波(有誤差),鋸齒波,等幅DTMF)

問題分析

用單片機自帶的ADC對信號進行采樣時,經常會碰到信號幅度太小或者太大的問題,這個很好解決,用一個自動增益控制的電路的電路即可解決,(點擊鏈接至自動增益電路篇:)
但是對于一個頻率變化范圍較大的信號,若是用固定的頻率去采樣,首先,對于時域上,采樣率可能過低導致波形失真,頻譜發生混疊,過高,占用較大存盤記憶體,難以存盤較多周期的波形,進行FFT后,導致頻率解析度過低,
所以對一個規則信號,如正弦波,方波,三角波等,要先確定其頻率,(1-500kHz可測)這個頻率運用MCU的輸入捕獲功能,可以測量到非常精準的程度,對一個不規則信號,如DTMF,可以大致獲得其頻率,這樣就能在有限采樣點數下獲得較好的頻率解析度了,

輸入捕獲測頻率

將一個規則信號送進一個輸入捕獲管腳,規則信號處理好幅度后可以直接送進IO口,實測不會影響捕獲,當然也可以選擇將信號送進一個過零比較器,比較出方波后輸出一個TTL電平送給單片機,更為穩妥準確,
話不多說,上代碼:

TIM_HandleTypeDef TIM5_Handler; 
//定時器5句柄 8990 
//定時器5通道1輸入捕獲配置  
//arr:自動重裝值(TIM2,TIM5是32位的!!)  
//psc:時鐘預分頻數 
void TIM5_CH1_Cap_Init(__IO uint32_t arr,__IO uint16_t psc) 
 { 
   TIM_IC_InitTypeDef TIM5_CH1Config; 
   TIM5_Handler.Instance=TIM5; //通用定時器5 
   TIM5_Handler.Init.Prescaler=psc; //分頻系數 
  TIM5_Handler.Init.CounterMode=TIM_COUNTERMODE_UP; 
  //向上計數器 
   TIM5_Handler.Init.Period=arr; 
  //自動裝載值 
TIM5_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
  //時鐘分頻因子 
   HAL_TIM_IC_Init(&TIM5_Handler);
  //初始化輸入捕獲時基引數 
   TIM5_CH1Config.ICPolarity=TIM_ICPOLARITY_RISING;
   //上升沿捕獲 
   TIM5_CH1Config.ICSelection=TIM_ICSELECTION_DIRECTTI;
   //映射到TI1上 
    TIM5_CH1Config.ICPrescaler=TIM_ICPSC_DIV1; 
   //配置輸入分頻,不分頻 
    TIM5_CH1Config.ICFilter=0110; 
   //配置輸入濾波器,濾波后更穩定
  HAL_TIM_IC_ConfigChannel(&TIM5_Handler,&TIM5_CH1Config,TIM_CHANNEL_1);
    //配置TIM5通道1 
    HAL_TIM_IC_Start_IT(&TIM5_Handler,TIM_CHANNEL_1); 
    //開啟TIM5的捕獲通道1,并且開啟捕獲中斷 
     __HAL_TIM_ENABLE_IT(&TIM5_Handler,TIM_IT_UPDATE); 
    //使能更新中斷  
    }
    
 void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim) 
  {  GPIO_InitTypeDef GPIO_Initure; 
  __HAL_RCC_TIM5_CLK_ENABLE(); //使能TIM5時鐘 
  __HAL_RCC_GPIOA_CLK_ENABLE(); //開啟GPIOA時鐘  
  GPIO_Initure.Pin=GPIO_PIN_0; //PA0 
  GPIO_Initure.Mode=GPIO_MODE_AF_PP; //復用推挽輸出 
  GPIO_Initure.Pull=GPIO_PULLDOWN; //下拉 
  GPIO_Initure.Speed=GPIO_SPEED_FAST; //快速 
  GPIO_Initure.Alternate=GPIO_AF2_TIM5; //PA0復用為TIM5通道1 
  HAL_GPIO_Init(GPIOA,&GPIO_Initure); 
  HAL_NVIC_SetPriority(TIM5_IRQn,2,0); //設定中斷優先級,搶占優先級2,子優先級0 
   HAL_NVIC_EnableIRQ(TIM5_IRQn); //開啟ITM5中斷通道  } 
   

基礎的配置,注釋都已經說明,中斷優先級設定較低,影響不大,因為我每次測完后都關閉,再次回圈時再開啟,
中斷服務函式因篇幅有限未放出,可以私信聯系我發完整代碼,

觸發ADC的時鐘配置

 TIM_HandleTypeDef htim3; 

 /* TIM3 init function */ 
 void MX_TIM3_Init(void) 
 { 
TIM_ClockConfigTypeDef sClockSourceConfig; 
 TIM_MasterConfigTypeDef sMasterConfig; 

 htim3.Instance = TIM3; 
 htim3.Init.Prescaler =89-1; //1MHz頻率 
 htim3.Init.CounterMode = TIM_COUNTERMODE_UP; 
 htim3.Init.Period =250-1; //默認時鐘觸發頻率,此時AD采樣率為4k 
 htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; //不分頻
 HAL_TIM_Base_Init(&htim3); 

 sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;  //選擇內部時鐘
 HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig); 

 sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; //更新觸發
 sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; 
 HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig); 

 } 

 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) 
 { 

 if(htim_base->Instance==TIM3) 
 { 
 /* Peripheral clock enable */ 
 __HAL_RCC_TIM3_CLK_ENABLE(); 
 } 
 }
    void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) 
 { 
 if(htim_base->Instance==TIM3) 
 {
 /* Peripheral clock disable */
 __HAL_RCC_TIM3_CLK_DISABLE(); 
 } 
 }

這里需要注意的是預分頻系數,和自動重裝載值的設定,觸發AD采樣的頻率為90M/(Prescaler*Period)90M是TIM3的時鐘頻率,預分頻系數Prescaler建議固定不動,每次通過修改period來改變觸發頻率,由于代碼篇幅實在過大,僅介紹關鍵部分,

ADC+DMA配置

 void MX_ADC1_Init(void) 
 { 
 ADC_ChannelConfTypeDef sConfig; 

 /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) 
 */ 
 hadc1.Instance = ADC1; 
 hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; //90M/4=22.5M 超過36M準確度會下降 
 hadc1.Init.Resolution = ADC_RESOLUTION_12B; 
 hadc1.Init.ScanConvMode = ENABLE; 
 hadc1.Init.ContinuousConvMode = DISABLE; 
 hadc1.Init.DiscontinuousConvMode = DISABLE; //觸發單次轉換,故設定為DISABLE 
 hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING; 
 hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T3_TRGO; 
 hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; 
 hadc1.Init.NbrOfConversion = 2; 
 hadc1.Init.DMAContinuousRequests = ENABLE; 
 hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; 
 HAL_ADC_Init(&hadc1); 

 /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. 
 */ 
 sConfig.Channel = ADC_CHANNEL_5; //先采5通道,再采6通道 
 sConfig.Rank = 1; 
 sConfig.SamplingTime = ADC_SAMPLETIME_15CYCLES; //15個采樣周期 Tconv=28+12周期 以滿足最高400K采樣率 
 HAL_ADC_ConfigChannel(&hadc1, &sConfig);
 sConfig.Channel = ADC_CHANNEL_6; 
 sConfig.Rank = 2; 
 sConfig.SamplingTime = ADC_SAMPLETIME_15CYCLES; 

 HAL_ADC_ConfigChannel(&hadc1, &sConfig); 

 } 
 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) 
 { 

 GPIO_InitTypeDef GPIO_InitStruct; 
 if(hadc->Instance==ADC1) 
 { 
 /* USER CODE BEGIN ADC1_MspInit 0 */ 

 /* USER CODE END ADC1_MspInit 0 */ 
 /* Peripheral clock enable */ 
 __HAL_RCC_ADC1_CLK_ENABLE(); 

 /**ADC1 GPIO Configuration 
 PA5 ------> ADC1_IN5 
 PA6 ------> ADC1_IN6 
 */ 
 GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6; //A線時鐘去MX_GPIO_Init開啟 
 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; 
 GPIO_InitStruct.Pull = GPIO_NOPULL; 
 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 

 /* ADC1 DMA Init */ 
 /* ADC1 Init */ 
 hdma_adc1.Instance = DMA2_Stream0; 
 hdma_adc1.Init.Channel = DMA_CHANNEL_0; 
 hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY; //傳輸方向為外設到記憶體
 hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE; //外設只有一個ADC,所以不遞增
 hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;  //存盤地址要遞增
 hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;  //每次傳輸半字即可,即16位
 hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; 
 hdma_adc1.Init.Mode = DMA_CIRCULAR; //開啟回圈傳輸
 hdma_adc1.Init.Priority = DMA_PRIORITY_HIGH; 
 hdma_adc1.Init.FIFOMode = DMA_FIFOMODE_DISABLE; 

 HAL_DMA_Init(&hdma_adc1); 
 
 
 __HAL_LINKDMA(hadc,DMA_Handle,hdma_adc1); //把DMA和ADC鏈接起來,這樣ADC每轉換完一個資料,就觸發DMA傳輸,

需要注意的是觸發選擇外部觸發,雙通道轉換要設定掃描模式使能,因為是用時鐘觸發,所以關閉連續轉換,雙通道所以NbrOfConversion設定為2,開啟DMA請求,單次轉換完成觸發,
設定轉換時間的時候要注意,轉換時間越長越精確,但是每觸發一次要進行兩個通道的轉換,這兩個通道的轉換時間之和一定要小于時鐘觸發的間隔,
關于DMA的傳輸開始和停止問題,有一個函式可以同時開啟ADC和DMA傳輸中斷:
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC_DMA_ConvertedValue,8192); 意思就是開啟轉換和傳輸,把ADC1的資料傳輸到ADC_DMA_ConvertedValue這個陣列里,注意使用這個函式時,一定要加強制轉換符(uint32_t*),這是HAL庫自己定義的,即使我們定義的陣列為16位,
傳輸完8192個資料停止DMA傳輸并進入中斷,這個HAL庫里有一個專門的中斷函式:
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) 在中斷里面做自己想做的事情就可以了,

main函式,整體思想的體現

放代碼在這感覺很累贅,暫時不放了,直接說設計思想:

  1. 在ADC_DMA傳輸完成中斷里設定一個完成標志,每次傳輸完把這個標志置為一,然后在main函式的while(1)里回圈檢測,檢測到之后就進行資料處理,處理完再把標志設定為0,
  2. UART用于接受和發送資料給串口屏,同樣設定接受中斷標志,用來檢測串口屏上的按鍵,
  3. 通過捕獲獲取信號頻率,設定自動重裝載值,(設定多少可根據自己的需求定),開啟TIM3時鐘,觸發AD轉換,
  4. 資料采集完成后顯示波形,計算峰峰值,呼叫DSP庫進行FFT,得到頻率上的資訊,
  5. 波形判斷是利用信號二次諧波和基波分量之比,利用各個波形的比值不同去判斷波形,每種波形的具體比值可以用示波器測量開啟FFT測算,
    **總結:**其實對于這類專案,最重要的是如何把資料按自己想要的形式采集并放進所建立的陣列中,關鍵就是采樣率的設定,因為這個直接關系到FFT后的精度問題,資料采集到了,怎么去處理,那就是隨心所欲了,就可以盡情發揮自己的數學天賦,從這若干個資料中獲得自己想要的資訊,

曬幾張測驗圖




需要完整代碼的私信我,
有問題的也可以留言,看到都會給解答,
創作不易,覺得有幫助的伙伴點個贊好不好,您的點贊是我繼續創作的動力,
謝謝朋友們!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/231501.html

標籤:其他

上一篇:萌新配置rip動態路由實驗

下一篇:Java學到什么水平能夠出去找作業!

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more