富芮坤FR800X系列之PWM输出程序应用设计

news2025/2/8 9:52:21

文章目录

  • 前言
  • 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 INIT
    GPIO_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.coloradmin.cn/o/2267078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

node-js Express防盗链

什么是防盗连 一个简单的说明&#xff0c;假如在前端img标签想要引用图片网站上的图片&#xff0c;当你将图片地址放到img标签上想要显示的时候你发现&#xff0c;图片显示不了&#xff0c;这说明网站采用了防盗链。 怎么实现的呢 在请求头中一般会有 Referer&#xff0c;它…

使用ArcGIS/ArcGIS pro绘制六边形/三角形/菱形渔网图

在做一些尺度分析时&#xff0c;经常会涉及到对研究区构建不同尺度的渔网进行分析&#xff0c;渔网的形状通常为规则四边形。构建渔网的方法也很简单&#xff0c;使用ArcGIS/ArcGIS Pro工具箱中的【创建渔网/CreateFishnet】工具来构建。但如果想构建其他形状渔网进行相关分析&…

RabbitMQ工作模式(详解 工作模式:简单队列、工作队列、公平分发以及消息应答和消息持久化)

文章目录 十.RabbitMQ10.1 简单队列实现10.2 Work 模式&#xff08;工作队列&#xff09;10.3 公平分发10.4 RabbitMQ 消息应答与消息持久化消息应答概念配置 消息持久化概念配置 十.RabbitMQ 10.1 简单队列实现 简单队列通常指的是一个基本的消息队列&#xff0c;它可以用于…

nexus docker安装

#nexus docker 安装 docker pull sonatype/nexus3 mkdir -p /data/nexus-data docker run -itd -p 8081:8081 --privilegedtrue --name nexus3 \ -v /data/nexus-data:/var/nexus-data --restartalways docker.io/sonatype/nexus3 #访问 http://192.168.31.109:8081/ 用户名&am…

ADC(二):外部触发

有关ADC的基础知识请参考标准库入门教程 ADC&#xff08;二&#xff09;&#xff1a;外部触发 1、TIM1的CC1事件触发ADC1DMA重装载2、TIM3的TRGO事件(的更新事件)触发ADC1DMA重装载3、TIM3的TRGO事件(的捕获事件)触发ADC1DMA重装载4、优化TIM3的TRGO事件(的捕获事件)触发ADC1D…

【产品应用】一体化无刷电机在旋转等离子喷枪中的应用

在现代工业制造与加工领域&#xff0c;等离子喷枪凭借其高温、高速的等离子射流&#xff0c;能够实现高效的材料表面处理、切割以及焊接等工艺&#xff0c;在众多行业中发挥着关键作用。而一体化无刷电机的应用&#xff0c;更是为等离子喷枪的性能提升和稳定运行注入了强大动力…

ElasticSearch - 深入解析 Elasticsearch Composite Aggregation 的分页与去重机制

文章目录 Pre概述什么是 composite aggregation&#xff1f;基本结构after 参数的作用问题背景&#xff1a;传统分页的重复问题after 的设计理念响应示例 after 如何确保数据不重复核心机制Example步骤 1: 创建测试数据创建索引插入测试数据 步骤 2: 查询第一页结果查询第一页返…

易基因: BS+ChIP-seq揭示DNA甲基化调控非编码RNA(VIM-AS1)抑制肿瘤侵袭性|Exp Mol Med

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 肝细胞癌&#xff08;hepatocellular carcinoma&#xff0c;HCC&#xff09;早期复发仍然是一个具有挑战性的领域&#xff0c;其中涉及的机制尚未完全被理解。尽管微血管侵犯&#xff08…

顶会评测集解读-AlignBench: 大语言模型中文对齐基准

评测集社区 CompssHub 作为司南 OpenCompass大模型评测体系的重要组成部分&#xff0c;致力于简化并加快研究人员和行业人士搜索和使用评测集的过程。评测集社区 CompssHub 目前已收录了学科、推理、知识、代码等12个方向的评测集&#xff0c;欢迎大家探索。 为了将评测集社区…

量子退火与机器学习(1):少量数据求解未知QUBO矩阵,以少见多

文章目录 前言ー、复习QUBO&#xff1a;中药配伍的复杂性1.QUBO 的介入&#xff1a;寻找最佳药材组合 二、难题&#xff1a;QUBO矩阵未知的问题1.为什么这么难&#xff1f; 三、稀疏建模(Sparse Modeling)1. 欠定系统中的稀疏解2. L1和L2的选择&#xff1a; 三、压缩感知算法(C…

Linux应用软件编程-多任务处理(线程)

线程&#xff1a;轻量级的进程&#xff0c;线程的栈区独立&#xff08;8M&#xff09;&#xff0c;与同一进程中的其他线程共用进程的堆区&#xff0c;数据区&#xff0c;文本区。 进程是操作系统资源分配的最小单位&#xff1b;线程是cpu任务调度的最小单位。 1. 线程的创建…

IKAnalyzer分词组件

IKAnalyzer是一个功能强大、易于使用、性能优异的中文分词工具包&#xff0c;适用于各种需要进行中文分词的场景&#xff0c;如搜索引擎、自然语言处理、文本挖掘等。 Springboot如何集成IKAnalyzer分词组件 引入IKAnalyzer分词组件包 <dependency><groupId>org…

微信小程序 不同角色进入不同页面、呈现不同底部导航栏

遇到这个需求之前一直使用的小程序默认底部导航栏&#xff0c;且小程序默认入口页面为pages/index/index&#xff0c;要使不同角色呈现不同底部导航栏&#xff0c;必须要在不同页面引用不同的自定义导航栏。本篇将结合分包&#xff08;subPackages&#xff09;展开以下三步叙述…

输入框去掉角标

前言 正常情况下&#xff0c;HTML textarea 多行文本输入框会存如下图所示图标&#xff0c; 用户可拉动它改变高度&#xff0c;这是我们不想看到的&#xff0c;所以要去掉它。 去掉后&#xff1a; 解决方案 设置 resize 属性即可&#xff0c;如下代码所示&#xff1a; <…

ping指令的实现与icmp协议的讲解

icmp协议 icmp属于一个网络层的协议&#xff0c;一般被封装到IP报文中&#xff0c;主要功能是如果IP报文出现目的地不可达&#xff0c;时间超过等情况出现时&#xff0c;就会将返回一个差错检测报文&#xff0c;里面包括了IP报文丢失的原因 常见的报错信息有 目的地不可达时间…

Log4j2的Policies详解、SizeBasedTriggeringPolicy、TimeBasedTriggeringPolicy

文章目录 一、Policies二、SizeBasedTriggeringPolicy:基于文件大小的滚动策略2.1、文件达到指定大小就归档 三、TimeBasedTriggeringPolicy&#xff1a;基于时间间隔的滚动策略3.1、验证秒钟归档场景3.2、验证分钟场景3.3、验证小时场景 四、多策略组合使用五、扩展知识5.1、S…

SpringCloudAlibaba实战入门之路由网关Gateway初体验(十一)

Spring Cloud 原先整合 Zuul 作为网关组件,Zuul 由 Netflix 公司提供的,现在已经不维护了。后面 Netflix 公司又出来了一个 Zuul2.0 网关,但由于一直没有发布稳定版本,所以 Spring Cloud 等不及了就自己推出一个网关,已经不打算整合 zuul2.0 了。 一、什么是网关 1、顾明…

#渗透测试#漏洞挖掘#红蓝攻防#常见未授权访问漏洞汇总

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

Fast adaptively balanced min-cut clustering

#0.论文信息 标题&#xff1a;Fast adaptively balanced min-cut clustering期刊&#xff1a;Pattern Recognition作者: Feiping Nie , Fangyuan Xie , Jingyu Wang ,Xuelong Li机构: China Telecom, Northwestern Polytechnic al University.代码链接&#xff1a; #1.摘要 …

【C++】——精细化哈希表架构:理论与实践的综合分析

先找出你的能力在哪里&#xff0c;然后再决定你是谁。 —— 塔拉韦斯特弗 《你当像鸟飞往你的山》 目录 1. C 与哈希表&#xff1a;核心概念与引入 2. 哈希表的底层机制&#xff1a;原理与挑战 2.1 核心功能解析&#xff1a;效率与灵活性的平衡 2.2 哈希冲突的本质&#x…