STM32CubeMx DRV8833驅動

一、DRV8833驅動原理

?

STBY口接單片機的IO口,STBY置0電機全部停止,置1才能工作。STBY置1后通過AIN1、AIN2、BIN1、BIN2 來控制正反轉。

AIN1AIN2電機狀態
00停止
1speed反轉
speed1正轉
11停止

其中A端(AIN1與AIN2)只能控制AO1與AO2端。B端(BIN1與BIN2)只能控制BO1與BO2端。因此是雙路電機驅動。speed為PWM控制的占空比,通過占空比控制電機速度。

DRV8833控制電機速度的方式,是通過將IN1與IN2接入PWM,直接通過調整PWM的占空比進行速度控制。因此要求AIN1/AIN2/BIN1/BIN2都要使用PWM功能。
?

二、cubemx配置

選c6t6

打開串口調試

選擇外部高速晶振

打開串口一

開啟串口一接收中斷

配置輸出引腳10KHZ

配置時鐘

生成代碼

三、keil代碼


#include "main.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"void SystemClock_Config(void);//set dir1
void Motor_SetDirectionL(uint8_t dir)
{if (dir == 1) {HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); // IN1 = 1(f)} else {HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); // IN1 = 0(b)}
}void Motor_SetSpeedL(uint16_t speed)
{if (speed > 100) speed = 100; HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, speed); 
}
//set dir2
void Motor_SetDirectionR(uint8_t dir)
{if (dir == 1) {HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET); // IN1 = 1(f)} else {HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET); // IN1 = 0(b)}
}void Motor_SetSpeedR(uint16_t speed)
{if (speed > 100) speed = 100; HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, speed); 
}// ??stop
void Motor_Stop()
{Motor_SetSpeedL(0); // PWM = 0Motor_SetSpeedR(0); // PWM = 0
}int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_TIM2_Init();MX_USART1_UART_Init();while (1){Motor_Stop();HAL_Delay(1000);Motor_SetDirectionL(1);Motor_Stop();Motor_SetSpeedL(90); //慢速衰減 可以跑的很慢(反比關系占比是100-90)HAL_Delay(3000);Motor_SetDirectionL(0);Motor_Stop();HAL_Delay(1000);Motor_SetDirectionL(0);Motor_Stop();Motor_SetSpeedL(60); //快速衰減 跑得快(正比)HAL_Delay(3000);Motor_Stop();HAL_Delay(1000);}}

用的是上面中間的兩組跑,實際使用需要換引腳pwm輸出

chem4111 2025-03-03 23.13.27

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896619.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896619.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896619.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JSON Schema 入門指南:如何定義和驗證 JSON 數據結構

文章目錄 一、引言二、什么是 JSON Schema?三、JSON Schema 的基本結構3.1 基本關鍵字3.2 對象屬性3.3 數組元素3.4 字符串約束3.5 數值約束 四、示例:定義一個簡單的 JSON Schema五、使用 JSON Schema 進行驗證六、實戰效果6.1 如何使用 七、總結 一、引…

前端Npm面試題及參考答案

目錄 npm 是什么?它的主要作用是什么? npm 包管理工具與 Yarn 有何不同? npm 的 package.json 文件有哪些重要字段? 什么是 npm 依賴?如何在項目中安裝、更新和移除依賴? npm 的 node_modules 目錄是什么?它的作用是什么? 什么是 npm 腳本?如何在 package.json 中…

零樣本思維鏈(Zero-shot CoT)

Large Language Models are Zero-Shot Reasoners (Kojima et al., 2022) 這篇文章研究了大型語言模型 (LLMs) 在推理任務上的能力,并提出了一種名為 Zero-shot-CoT 的新方法,該方法能夠有效地引導 LLM 進行多步驟推理,并在各種推理任務上取得…

day01_Java基礎

文章目錄 day01_Java基礎一、今日課程內容二、Java語言概述(了解)1、Java語言概述2、為什么要學習Java語言3、Java平臺版本說明4、Java特點 三、Java環境搭建(操作)1、JDK和JRE的概述2、JDK的下載和安裝3、IDEA的安裝4、IDEA的啟動…

設計模式 之 生產消費者模型 (C++)

文章目錄 設計模式 之 生產消費者模型 (C)引言生產消費者模型的基本概念為什么需要生產消費者模型應用場景:C 實現生產消費者模型代碼示例代碼詳細解釋共享資源和同步機制生產者函數 producer()消費者函數 consumer()主函數 main() 注意事項總…

Spring Boot 項目開發流程全解析

目錄 引言 一、開發環境準備 二、創建項目 三、項目結構 四、開發業務邏輯 1.創建實體類: 2.創建數據訪問層(DAO): 3.創建服務層(Service): 4.創建控制器層(Controller&…

數據結構課程設計(java實現)---九宮格游戲,也稱幻方

【問題描述】 九宮格,一款數字游戲,起源于河圖洛書,與洛書是中國古代流傳下來的兩幅神秘圖案,歷來被認為是河洛文化的濫觴,中華文明的源頭,被譽為"宇宙魔方"。九宮格游戲對人們的思維鍛煉有著極大…

GPT-4.5 怎么樣?如何升級使用ChatGPTPlus/Pro? GPT-4.5設計目標是成為一款非推理型模型的巔峰之作

GPT-4.5 怎么樣?如何升級使用ChatGPTPlus/Pro? GPT-4.5設計目標是成為一款非推理型模型的巔峰之作 今天我們來說說上午發布的GPT-4.5,接下來我們說說GPT4.5到底如何,有哪些功能?有哪些性能提升?怎么快速使用到GPT-4.…

【vscode-解決方案】vscode 無法登錄遠程服務器的兩種解決辦法

解決方案一: 查找原因 命令 ps ajx | grep vscode 可能會看到一下這堆信息(如果沒有大概率不是這個原因導致) 這堆信息的含義:當你使用 vscode 遠程登錄服務器時,我們遠程機器服務端要給你啟動一個叫做 vscode serv…

一、對4*3按鍵模塊編程分析

一、4*3鍵盤模塊實物分析 說明: 1、橫著4排,豎著3列,加起來共7組,所以對外引出7根線。 2、根據排針終端引腳又可分兩類。即橫排和豎列對應的引腳。 二、代碼編寫構想: 1、使用7個gpio輸入中斷,檢測7個…

自然語言處理NLP入門 -- 第十節NLP 實戰項目 2: 簡單的聊天機器人

一、為什么要做聊天機器人? 在互聯網時代,我們日常接觸到的“在線客服”“自動問答”等,大多是以聊天機器人的形式出現。它能幫我們快速回復常見問題,讓用戶獲得及時的幫助,并在一定程度上減少人工客服的壓力。 同時&…

linux(1)文件管理

文章目錄 文件目錄系統相對路徑絕對路徑命令解析器文件管理 文件目錄系統 bin: 二進制文件目錄,存儲可執行文件 dev:設備目錄,所有的硬件都會抽象成文件存儲,比如鼠標鍵盤 home:存儲普通用戶的家目錄 li…

CSS—選擇器詳解:5分鐘動手掌握選擇器

個人博客:haichenyi.com。感謝關注 1. 目錄 1–目錄2–引言3–種類4–優先級 引言 什么是選擇器? CSS選擇器是CSS(層疊樣式表)中的一種規則,用于指定要應用樣式的HTML元素。它們就像是指向網頁中特定元素的指針&#…

大模型微調入門(Transformers + Pytorch)

目標 輸入:你是誰? 輸出:我們預訓練的名字。 訓練 為了性能好下載小參數模型,普通機器都能運行。 下載模型 # 方式1:使用魔搭社區SDK 下載 # down_deepseek.py from modelscope import snapshot_download model_…

DeepSeek實戰

DeepSeek 接入實戰:從零開始快速上手 引言 在當今的 AI 領域,DeepSeek 作為一個強大的自然語言處理(NLP)平臺,提供了豐富的 API 接口,幫助開發者快速實現智能對話、文本生成、語義分析等功能。本文將帶你…

Android NDK打包封裝教程與優化技巧

關于NDK打包封裝的問題。首先,用戶可能不太清楚NDK的基本概念,所以我應該先解釋NDK是什么以及它的作用。然后,用戶可能想知道如何在Android項目中使用NDK,所以需要分步驟說明配置過程,包括安裝NDK、配置CMake或ndk-build,創建JNI接口,編寫C/C++代碼,編譯和打包。 接下…

【告別雙日期面板!一招實現el-date-picker智能聯動日期選擇】

告別雙日期面板!一招實現el-date-picker智能聯動日期選擇 1.需求背景2.DateTimePicker 現狀圖3.日期選擇器實現代碼4.日期選擇器實現效果圖5.日期時間選擇器實現代碼6.日期時間選擇器實現效果圖 1.需求背景 在用戶使用時間查詢時,我們經常需要按月份篩選…

Linux(ftrace)__mcount的實現原理

Linux 內核調試工具ftrace 之(_mcount的實現原理) ftrace 是 Linux 內核中的一種跟蹤工具,主要用于性能分析、調試和內核代碼的執行跟蹤。它通過在內核代碼的關鍵點插入探針(probe)來記錄函數調用和執行信息。這對于開…

Java注解(Annotation)

一、注解的定義 核心概念 注解是Java中一種特殊形式的“元數據”,用于為類、方法、字段、參數等代碼元素附加說明信息。它不會直接影響代碼邏輯,但可以通過編譯器、框架或反射機制進行解析和處理。 與注釋(Comment)的區別 注釋&a…

tauri2+typescript+vue+vite+leaflet等的簡單聯合使用(一)

項目目標 主要的目的是學習tauri。 流程 1、搭建項目 2、簡單的在項目使用leaflet 3、打包 準備項目 環境準備 廢話不多說,直接開始 需要有準備能運行Rust的環境和Node,對于Rust可以參考下面這位大佬的文章,Node不必細說。 Rust 和…