富芮坤FR800X系列之PWM輸出程序應用設計

文章目錄

  • 前言
  • 1.設計背景
  • 2.簡介
  • 3.如何設計控制調光的接口呢
  • 4.硬件設計
  • 5.軟件設計
    • 5.1.軟件流程圖
    • 5.2.軟件代碼
  • 6.小結


前言

版權歸作者所有、未經允許、請勿轉載。

讀者對象:
本文檔主要適用以下工程師:
?嵌入式系統工程師
?單片機軟件工程師
?IOT固件工程師
?BLE固件工程師

相關文章
富芮坤FR800X系列之按鍵檢測模塊設計

1.設計背景

例子:用嵌入式FR800X藍牙MCU中,設計一個PWM控制直流電機轉速的應用程序。

2.簡介

在實現項目開發中,許多應用場合會用戶PWM控制輸出。如PWM控制LED指示燈,呼吸燈,直流電機驅動等。

3.如何設計控制調光的接口呢

基于FR800X系列SDK中,如何設計控制調光的接口呢?抽象設計思考:一般設計兩個函數,一個是PWM初始化LED_pwm_init(),另外一個是調節PWM等級的函數接口LED_pwm_level(),設計程序時,先將兩個函數接口代碼寫好;接著還需要考慮,參數定義GPIO管腳作為PWM輸出口、PWM時鐘使能、PWM頻率等。設計PWM為1KHz、輸出端扣為PD1。

4.硬件設計

芯片工作在3.3V穩壓電源,直流電機工作電源為5V,用低電壓驅動高電壓,電路關鍵器件:一個MOS管,D2為保護電路、R7限流電阻,R6下拉穩定三級管默認為關閉狀態,P3為接電機端口,PWM控制電機電路圖如下所示:
在這里插入圖片描述

圖4-1

5.軟件設計

5.1.軟件流程圖

PWM初始化流程圖如下:
在這里插入圖片描述
圖5-1

5.2.軟件代碼

用戶程序設計需要結合SDK相關函數,文件為Driver_pwm.c和Driver_pwm.h。添加到該工程里面,相關代碼如下:

///Duty: /* 0% ~ 100% */
void LED_pwm_level(uint8_t Duty)
{struct_PWM_DAC_Config_t DAC_Config={0};co_printf("SET_level:%d\r\n",Duty);if(Duty<=100){DAC_Config.PulseDIV = 11;DAC_Config.Duty     = Duty;pwm_dac_config(PWM_CHANNEL_1, DAC_Config);pwm_output_enable(PWM_CHANNEL_1);}
}void LED_pwm_init(void)
{// PWM gpio INITGPIO_InitTypeDef GPIO_Handle={0};GPIO_Handle.Pin       = GPIO_PIN_1;GPIO_Handle.Mode      = GPIO_MODE_AF_PP;GPIO_Handle.Pull      = GPIO_PULLUP;GPIO_Handle.Alternate = GPIO_FUNCTION_6;gpio_init(GPIO_D, &GPIO_Handle);// en pwm clk enable__SYSTEM_PWM_CLK_ENABLE();struct_PWM_DAC_Config_t DAC_Config={0};DAC_Config.PulseDIV = 11;DAC_Config.Duty     = 0;pwm_dac_config(PWM_CHANNEL_1, DAC_Config);pwm_output_enable(PWM_CHANNEL_1);LED_pwm_level(0);
}

6.小結

PWM控制電機電路設計非常簡單、實用、低成本。程序設計接口是根據用戶需要實用型接口,在PWM控制調節設計一個范圍如0-100、或0-1000等。應用時將參數傳進去即可。

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

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

相關文章

Ftrans數據擺渡系統 搭建安全便捷跨網文件傳輸通道

一、專業數據擺渡系統對企業的意義 專業的數據擺渡系統對企業具有重要意義&#xff0c;主要體現在以下幾個方面?&#xff1a; 1、?數據安全性?&#xff1a;數據擺渡系統通過加密傳輸、訪問控制和審計日志等功能&#xff0c;確保數據在傳輸和存儲過程中的安全性。 2、?高…

EasyPoi 使用$fe:模板語法生成Word動態行

1 Maven 依賴 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.0.0</version> </dependency> 2 application.yml spring:main:allow-bean-definition-over…

定義Shape:打造屬于你的獨特圖形

自定義Shape:打造屬于你的獨特圖形 在Android開發中,自定義圖形繪制是一個非常重要的技能,尤其是在需要實現復雜UI或特定設計需求時。Android提供了android.graphics.drawable.shapes包,其中包含了一些基本的形狀類,如RectShape、OvalShape等。然而,有時這些基本形狀無法…

python 滲透開發工具之SQLMapApi Server不同IP服務啟動方式處理 解決方案SqlMapApiServer外網不能訪問的情況

目錄 說在前面 什么是 SQLMapAPI 說明 sqlmapApi能干什么 sqlmapApi 服務安裝相關 kali-sqlmap存放位置 正常啟動sqlmap-api server SqlMapApi-Server 解決外網不能訪問情況 說在前面 什么是sqlmap 這個在前面已經說過了&#xff0c;如果這個不知道&#xff0c;就可以…

【基礎還得練】 KKT 條件

優秀教程-真正理解拉格朗日乘子法和 KKT 條件&#xff1a; link優秀教程-最優化(6)&#xff1a;一般約束優化問題的最優性理論&#xff1a; link KKT條件&#xff08;Karush-Kuhn-Tucker條件&#xff09;是非線性規劃中的一組必要條件&#xff0c;在某些情況下也是最優解的充分…

使用 Webpack 優雅的構建微前端應用?

Module Federation 通常譯作“模塊聯邦”&#xff0c;是 Webpack 5 新引入的一種遠程模塊動態加載、運行技術。MF 允許我們將原本單個巨大應用按我們理想的方式拆分成多個體積更小、職責更內聚的小應用形式&#xff0c;理想情況下各個應用能夠實現獨立部署、獨立開發(不同應用甚…

Boost之log日志使用

不講理論&#xff0c;直接上在程序中可用代碼&#xff1a; 一、引入Boost模塊 開發環境&#xff1a;Visual Studio 2017 Boost庫版本&#xff1a;1.68.0 安裝方式&#xff1a;Nuget 安裝命令&#xff1a; #只安裝下面幾個即可 Install-package boost -version 1.68.0 Install…

【MySQL】十四,MySQL 8.0的隱藏索引

在MySQL 8.0之前的版本中&#xff0c;索引只能直接刪除。如果刪除后發現引起了系統故障&#xff0c;又必須進行創建。當表的數據量比較大的時候&#xff0c;這樣做的代價就會非常高。 在MySQL 8.0中&#xff0c;提供了隱藏索引。如果想刪除某個索引&#xff0c;那么在實際刪除…

【ES6復習筆記】解構賦值(2)

介紹 解構賦值是一種非常方便的語法&#xff0c;可以讓我們更簡潔地從數組和對象中提取值&#xff0c;并且可以應用于很多實際開發場景中。 1. 數組的解構賦值 數組的解構賦值是按照一定模式從數組中提取值&#xff0c;然后對變量進行賦值。下面是一個例子&#xff1a; con…

爬蟲數據存儲:Redis、MySQL 與 MongoDB 的對比與實踐

爬蟲的核心任務是從網絡中提取數據&#xff0c;而存儲這些數據是流程中不可或缺的一環。根據業務需求的不同&#xff0c;存儲的選擇可能直接影響數據處理的效率和開發體驗。本文將介紹三種常用的存儲工具——Redis、MySQL 和 MongoDB&#xff0c;分析它們的特點&#xff0c;并提…

【Python】使用匿名函數Lambda解析html源碼的任意元素(Seleinium ,BeautifulSoup皆適用)

一直都發現lambda函數非常好用&#xff0c;它可以用簡潔的方式編寫小函數&#xff0c;無需寫冗長的過程就可以獲取結果。干脆利落&#xff01; 它允許我們定義一個匿名函數&#xff0c;在調用一次性的函數時非常有用。 最近整理了一些&#xff0c;lambda函數結合BeautifulSou…

Bash語言的語法

Bash語言簡介與應用 Bash&#xff08;Bourne Again SHell&#xff09;是一種Unix Shell和命令語言&#xff0c;在Linux、macOS及其他類Unix系統中被廣泛使用。作為GNU項目的一部分&#xff0c;Bash不僅是對早期Bourne Shell的增強&#xff0c;還引入了許多特性和功能&#xff…

Ingress-Nginx Annotations 指南:配置要點全方面解讀(下)

文章目錄 1.HTTP2 Push Preload2.Server Alias3.Server snippet4.Client Body Buffer Size5.External Authentication6.Global External Authentication7.Rate Limiting8.Global Rate Limiting9.Permanent Redirect10.Permanent Redirect Code11.Temporal Redirect12.SSL Passt…

互聯網路由架構

大家覺得有意義和幫助記得及時關注和點贊!!! 本書致力于解決實際問題&#xff0c;書中包含大量的架構圖、拓撲圖和真實場景示例&#xff0c;內容全面 且易于上手&#xff0c;是不可多得的良心之作。本書目的是使讀者成為將自有網絡集成到全球互聯網 領域的專家。 以下是筆記內…

【Flutter_Web】Flutter編譯Web第三篇(網絡請求篇):dio如何改造方法,變成web之后數據如何處理

前言 Flutter端在處理網絡請求的時候&#xff0c;最常用的庫當然是Dio了&#xff0c;那么在改造成web端的時候&#xff0c;最先處理的必然是網絡請求&#xff0c;否則沒有數據去處理驅動實圖渲染。 官方鏈接 pub https://pub.dev/packages/diogithub https://github.com/c…

Spring Boot @Conditional注解

在Spring Boot中&#xff0c;Conditional 注解用于條件性地注冊bean。這意味著它可以根據某些條件來決定是否應該創建一個特定的bean。這個注解可以放在配置類或方法上&#xff0c;并且它會根據提供的一組條件來判斷是否應該實例化對應的組件。 要使用 Conditional注解時&#…

項目上傳到gitcode

首先需要在個人設置里面找到令牌 記住自己的賬號和訪問令牌&#xff08;一長串&#xff09;&#xff0c;后面git要輸入這個&#xff0c; 賬號是下面這個 來到自己的倉庫 #查看遠程倉庫&#xff0c;是不是自己的云倉庫 git remote -v # 創建新分支 git checkout -b llf # 三步…

【Rust自學】6.4. 簡單的控制流-if let

喜歡的話別忘了點贊、收藏加關注哦&#xff0c;對接下來的教程有興趣的可以關注專欄。謝謝喵&#xff01;(&#xff65;ω&#xff65;) 6.4.1. 什么是if let if let語法允許將if和let組合成一種不太冗長的方式來處理與一種模式匹配的值&#xff0c;同時忽略其余模式。 可以…

【Git學習】windows系統下git init后沒有看到生成的.git文件夾

[問題] git init 命令后看不到.git文件夾 [原因] 文件夾設置隱藏 [解決辦法] Win11 win10

vscode添加全局宏定義

利用vscode編輯代碼時&#xff0c;設置了禁用非活動區域著色后&#xff0c;在一些編譯腳本中配置的宏又識別不了 遇到#ifdef包住的代碼就會變暗色&#xff0c;想查看代碼不是很方便。如下圖&#xff1a; 一 解決&#xff1a; 在vscode中添加全局宏定義。 二 步驟&#xff1a…