日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32的语音识别_免费开源基于STM32的智能垃圾桶之舵机控制(HAL库)

發布時間:2024/2/28 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32的语音识别_免费开源基于STM32的智能垃圾桶之舵机控制(HAL库) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大家好,我是『芯知識學堂』的SingleYork,前面給大家簡單介紹了<基于STM32的智能垃圾桶之成員簡介>、<基于STM32的智能垃圾桶之語音識別>和<基于STM32的智能垃圾桶之語音播報>,今天筆者將要給大家介紹我們這個DIY智能垃圾桶套件中“舵機控制”的詳細使用。關于舵機的基本知識,網上一搜一大把,筆者在此就不跟大家做過多解釋了,本例中,筆者使用的是SG90模擬舵機:這個舵機的三根線分別為:GND(棕色)、VCC(紅色)、PWM(黃色),按照下圖所示的接線方法,直接接到我們的OWL Micro F1 - EXT擴展板的舵機接口上即可:舵機跟擴展板的硬件連接非常的簡單,實際上,筆者設計的專用的四路舵機接口跟舵機的線序是一一對應的,直接插上去就OK了,筆者就不多說了。硬件連接搞定了,那么,我們應該產生怎樣的PMW波形來控制舵機的轉動角度呢?SG90的舵機要求控制舵機的 PWM 信號頻率在50Hz左右,即周期為 20ms 的 PWM 信號,當該信號的高電平部分在0.5ms - 2.5ms之間時,對應舵機轉動的角度,具體對應情況如下表:了解了舵機的控制原理后,接下來,筆者就要來給大家介紹軟件部分的實現。軟件部分筆者主要給大家介紹如何通過STM32CubeMX來配置生成代碼(最終的綜合代碼,筆者不是采用STM32CubeMX來配置,而是采用移植的方式來實現),關于CubeMX的基本操作,包括軟件安裝、芯片支持包安裝什么的,請大家自行百度。首先,我們打開STM32CubeMX軟件(筆者使用的是5.6.1版本),在“New Project”選項中使用“Start My project from MCU”的方式新建工程,點擊“ACCESS TO MCU SELECTOR”跳轉到MCU選擇界面:在彈出的MCU選擇界面,我們找到“CMU/MPU Selector”菜單,然后直接選擇我們所使用的MCU—STM32F103C8,然后在右側的“MCUs/MPUs List:1 item”中雙擊STM32F103C8便可新建一個CubeMX工程:接下來,我們來開始配置RCC時鐘,如下圖所示,在工程外設選擇和引腳分配選擇“Pinout&Configuartion”界面,找到“System Core”選項下面的RCC,單擊RCC在“RCC mode and Configuration”界面,將“High Speed Clock(HSE)”設置為“Crystal/Ceramic Resonator”,即:使用外部晶振。接下來,進入系統時鐘配置界面“Clock Configuration”,在這里,我們選擇使用外部8MHz晶振,并配置系統時鐘為72MHz,這里有很多選項,如果我們不知道怎么選的話,直接在“HCLK(MHz)”輸入框中,直接輸入72然后回車:在輸入72并回車之后,會彈出如下對話框,點擊“OK”即可完成時鐘一鍵配置(有些芯片可能會需要手動微調):最終得到的時鐘配置如下圖所示:接下來,我們繼續回到工程外設選擇和引腳分配選擇“Pinout&Configuartion”界面,因為我們的OWL Micro F1 - EXT擴展板上面控制四路舵機的引腳分別非PA6、PA7、PB0、PB1,正好是定時器TIM3的CH1、CH2、CH3、CH4通道,所以我們使用TIM3的功能來實現四路舵機的控制,在“Pinout&Configuartion”界面找到“Timers”,然后選擇TIM3,同時勾選“Internal Clock”使能內部時鐘源,并將定時器的四個通道分別設置成“PWM Generation CH1”、“PWM Generation CH2”、“PWM Generation CH3”、“PWM Generation CH4”:根據定時器Update時間計算公式Tout=((arr+1)*(psc+1))/Tclk(其中,Tout為定時器溢出時間,arr為重裝載值,psc為預分頻系數,Tclk為定時器的輸入時鐘頻率(單位為MHz)),我們將定時器TIM3的參數設置如下:
  • 設置定時器預分頻器為719(即:720-1)可以得到100KHz的定時器計數時鐘;
  • 設定定時器計數周期為1999(即:2000-1),這樣定時器的頻率為50Hz,即可得到20ms的周期;
  • 設置定時器的通道1(CH1)-通道4(CH4)為PWM模式1,脈沖數為150,即可得到1.5ms的高電平時間。
  • 其他設置,采用默認設置即可。
  • 定時器配置完成后,我們接下來就可以配置“Project Manager”里面的參數,首先是Project里面的設置,這里主要是設置一下“Toolchain/IDE”就可以了,筆者使用的是MDK-ARM編譯器5.29版本,所以這里選擇IDE為MDK-ARM,最低版本號選擇V5.27。在Code Generator里面,我們可以根據自己的使用習慣選擇,筆者這里僅在默認選型中多勾選了一個“Generate peripheral initialization as a pair of“.c/.h” files per peripheral”選型,即:為每個外設單獨生產一對“.c/.h”文件。其他的設置,都使用軟件默認設置即可。工程配置完成后,我們就可以使用CubeMX工具直接生產MDK的代碼了,點擊右上角的“GENERATE CODE”按鈕,代碼就可以自動生成了:代碼生成完成之后,彈出的提示似乎有點不正常,帶有一個灰色的“感嘆號”,而且,當我們點擊“Open Folder”時候,會出現另外一個提示“…………but MDK-ARM V5.27 project generation have a problem”,這似乎是在提醒我們,剛才生成的MDK工程有問題。那么為什么會出現這個問題呢?這是因為我們的CubeMX工程所在的路徑和文件名都包含了中文字符,似乎CubeMX對中文的支持不太友好。筆者重新在桌面建了一個名為“Smart_Rubbish”的文件夾,同時將CubeMX工程名也都改成了英文的“Smart_Rubbish”:接下來,我們再來點擊“GENERATE CODE”按鈕自動生成MDK代碼,終于,沒有問題了,這個時候,我們可以選擇點擊“Open Project” 直接打開工程,或者點擊“Open Folder”打開工程所在的文件夾:打開MDK工程文件后,點擊左上方的“Rebuild”按鈕,編譯工程,可以看到沒有錯誤也沒有警告:接下來,我們點擊魔法棒“Option for Target”,在Debug界面選擇“ST-Link Debug”:點擊“Settings”按鈕,在“Flash Download”選項中,勾選“Reset and Run”,在“Pack”選項中,去掉“Enable”前面的“√”(這里尤其是要注意,很多小伙伴在使用高版本的MDK軟件下載工程的時候反應,即使勾選了“Reset and Run”在程序下載后也不會自動運行,非要重新上電或者按一下復位按鈕才能運行,所以這里要記得去掉這個“Enable”的“√”):雖然CubeMX工具可以很方便的自動生成代碼,但是用戶代碼部分,還是需要大家手動編寫的,如果我們直接將剛才生成的代碼下載到MCU中去,我們會發現,板子上的四路舵機接口無任何反應。這是因為,我們還需要在程序中手動啟動定時器的PWM輸出。我們只需要在定時器TIM3初始化完成后,添加啟動定時器TIM3的4個通道PWM輸出的代碼即可,如下圖所示:在添加用戶代碼的時候大家需要注意,如果大家不希望每次修改CubeMX工程后把我們添加的代碼覆蓋掉,那么我們添加用戶代碼的時候一定要添加在“USER CODE BEGIN”和“USER CODE END”之間,比如筆者這里就將代碼添加到了“USER CODE BEGIN 2”和“USER CODE END 2”之間,這樣的話,就不用擔心萬一需要修改CubeMX工程重新生成代碼的時候將我們自己添加的代碼覆蓋掉了。現在,我們可以將代碼重新編譯,然后再下載到MCU中,這個時候我們可以用示波器或邏輯分析儀查看四路舵機接口的PWM波形如下圖所示:我們會發現,PWM波的頻率為50Hz,周期為20ms,跟我們設置的一致。我們再將示波器調整一下,測量一下PWM波的高電平寬度,可以看到,也正是我們設置的1.5ms:按照我們之前介紹的PWM波高電平的時間與舵機旋轉角度的關系我們可以知道,這個時候,舵機應該是在90°的位置,那么,如果要讓舵機旋轉到0°位置,那么我們只需要修改PWM的PLUSE值即可,接下來,我們再添加以下代碼,讓舵機在0°和90°之間來回旋轉:同樣的,筆者是將代碼添加到了“USER CODE BEGIN 3”和“USER CODE END 3”之間。重新編譯后下載代碼,我們可以看到舵機每隔1秒在0°和90°之間切換(筆者這里演示只接了一個舵機,實際上,接一個舵機也是一樣的效果,只是接多個電機的時候,可能要考慮一下USB線的供電能力,尤其是后面接上語音識別和語音播報模塊的時候,最好使用1A以上手機充電頭供電):至此,我們的這個DIY的智能垃圾桶項目中的舵機控制部分就介紹完畢了,在下一講中,筆者將要給大家介紹這個項目的最后一個部分內容,那就是綜合的代碼,在綜合代碼中,筆者會將語音識別、語音播報、舵機控制的代碼全部整合到一起并進行講解,敬請關注!原創不易,轉載請務必注明出處!

    end

    有你想看的精彩『免費開源』基于STM32的之成員簡介『免費開源』基于STM32的之語音識別『免費開源』基于STM32的之語音播報

    知識改變命運『芯知識學堂』伴你前行

    長按關注我們,不錯過每一篇好文

    點個在看再走唄!

    總結

    以上是生活随笔為你收集整理的stm32的语音识别_免费开源基于STM32的智能垃圾桶之舵机控制(HAL库)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 波多野结衣黄色 | 国内精品毛片 | 一色道久久88加勒比一 | 91精品国产综合久久久久 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲一区二区三区四区五区xx | 亚洲欧美日韩久久精品 | 日韩欧美一区二区三区视频 | 在线观看色网站 | 亚洲国产精品无码专区 | 女生隐私免费看 | 素人一区 | 在线看片一区二区 | 动漫av一区二区 | 亚洲免费一区视频 | 亚洲一区二区在线播放 | 丝袜调教91porn| 国产初高中真实精品视频 | 电影《两个尼姑》免费播放 | 国产中文自拍 | 欧美精品v国产精品v日韩精品 | 翔田千里一区二区 | 国产3级 | 日韩av毛片在线观看 | 欧美特黄一区二区三区 | 亚洲 精品 综合 精品 自拍 | a色视频 | 亚洲综合视频在线播放 | 欧美成本人视频 | 亚洲国产精品成人无久久精品 | 欧美顶级少妇做爰hd | 亚洲免费观看视频 | 无码人妻精品一区二区三 | 国产午夜免费 | 欧美伊人久久 | 久久观看最新视频 | 欧美放荡性医生videos | 中文字幕一区二区三区精华液 | 天天操夜夜摸 | 岛国av动作片 | 国模私拍av | 欧美成人三级在线观看 | 久国久产久精永久网页 | 久久影院视频 | jizz18国产 | 国产美女无遮挡免费视频 | 爱爱中文字幕 | 中字幕视频在线永久在线观看免费 | 国产午夜电影 | 国产成人在线视频观看 | 欧美熟妇另类久久久久久不卡 | 三级黄色免费 | 蕾丝视频污 | 日本少妇喷水 | 亚洲一级影院 | 激情啪啪网| 在线观看视频99 | 久久人人爽人人爽人人片av免费 | 亚洲 小说 欧美 激情 另类 | 天堂在线观看免费视频 | 亚洲一区精品在线观看 | 成人免费观看av | 日韩黄色免费看 | 激情噜噜 | 九九色| 欧美在线视频免费观看 | 九九久久综合 | 亚洲视频a | 久色婷婷 | 97久久人国产精品婷婷 | 久久久看| 色综合五月婷婷 | 中文字幕一区二区三区精品 | 能看毛片的网站 | 亚洲精品无码不卡在线播he | 国产视频在线一区 | 亚洲精品一区二区三区四区乱码 | 91亚洲精品国偷拍自产在线观看 | 两口子交换真实刺激高潮 | 亚洲国产欧美另类 | 黄色天天影视 | 手机在线一区二区 | 中文字幕一区二区三区免费视频 | 岛国一区 | 91精品国产一区二区无码 | 精品在线一区二区三区 | 精品精品精品 | 看国产毛片 | 亚洲综合激情另类小说区 | 波多野吉衣一二三区乱码 | 成a人片亚洲日本久久 | 人与动物黄色片 | 亚洲一区二区电影 | 亚洲成人av中文字幕 | 人人超碰在线 | 国产在线麻豆精品观看 | 亚洲色偷精品一区二区三区 | 激情文学亚洲 | 久久av无码精品人妻系列试探 |