杰发科技AC7801——PWM获取固定脉冲个数

测试通道6

在初始化时候打开通道中断

void PWM1_GenerateFrequency(void)
{PWM_CombineChConfig combineChConfig[1]; //组合模式相关结构体PWM_IndependentChConfig independentChConfig[2];//独立模式相关结构体PWM_ModulationConfigType pwmConfig; //PWM模式相关结构体PWM_ConfigType config; //PWM模块结构体//结构体数据清零memset(&combineChConfig, 0, sizeof(combineChConfig));memset(&independentChConfig, 0, sizeof(independentChConfig));memset(&pwmConfig, 0, sizeof(pwmConfig));memset(&config, 0, sizeof(config));/*channel 6*/independentChConfig[0].channel = PWM_CH_6; //通道6independentChConfig[0].chValue = MOD_PWM >> 1;//通道6 channel值,输出占空比 = chValue / (config.maxValue + 1) = 50%independentChConfig[0].levelMode = PWM_HIGH_TRUE; //输出PWM高有效independentChConfig[0].polarity = PWM_OUTPUT_POLARITY_ACTIVE_LOW; //输出极性高有效,PWM mask后PWM输出低电平independentChConfig[0].interruptEn = ENABLE;//PWM通道匹配中断使能位independentChConfig[0].initLevel = PWM_LOW_LEVEL;//PWM初始电平输出为低,该配置受initChOutputEn控制,决定PWM计数器未工作前PWM口的输出电平值。independentChConfig[0].triggerEn = DISABLE;//通道外部触发使能
//    /*channel 7*/independentChConfig[1].channel = PWM_CH_7; //通道7independentChConfig[1].chValue = MOD_PWM >> 2;//通道7 channel值,输出占空比 = chValue / (config.maxValue + 1) = 25%independentChConfig[1].levelMode = PWM_HIGH_TRUE; //输出PWM高有效independentChConfig[1].polarity = PWM_OUTPUT_POLARITY_ACTIVE_HIGH; //输出极性高有效,PWM mask后PWM输出低电平independentChConfig[1].interruptEn = DISABLE;//PWM通道匹配中断使能位independentChConfig[1].initLevel = PWM_LOW_LEVEL;//PWM初始电平输出为低,该配置受initChOutputEn控制,决定PWM计数器未工作前PWM口的输出电平值。independentChConfig[1].triggerEn = DISABLE;//通道外部触发使能/*modulation mode config*/pwmConfig.countMode = PWM_UP_COUNT; //PWM计数器模式 (不同的计数模式频率及占空比计算方式不同)pwmConfig.independentChannelNum = 2; //独立通道数pwmConfig.combineChannelNum = 0; //组合对数pwmConfig.independentChConfig = independentChConfig; //独立通道配置变量地址赋值pwmConfig.combineChConfig = combineChConfig; //组合通道配置变量地址赋值pwmConfig.deadtimePsc = PWM_DEADTIME_DIVID_1;//死区插入分频值,与deadtime一起决定插入死区的时间。pwmConfig.deadtime = 0;  //死区时间 = (DTPSC * DTVAL)/PWM计数器时钟周期 = 1*24/24000000 = 1uspwmConfig.initChOutputEn = DISABLE; //使能初始化通道输出,使能后独立PWM模式的initLevel和组合PWM模式的ch1stInitLevel和ch2ndPolarity配置才会生效pwmConfig.initTriggerEn = DISABLE; //通道外部触发使能/*pwm config*/config.mode = PWM_MODE_MODULATION;//PWM模块配置为PWM模式config.initModeStruct = &pwmConfig;//PWM配置结构体地址赋值config.clkSource = PWM_CLK_SOURCE_APB; //PWM时钟源配置config.clkPsc = PWM_PRES;//PWM时钟源分频config.initValue = 0;//计数器初始寄存器值config.maxValue = MOD_PWM - 1; //PWM计数器最大值config.overflowInterrupEn = DISABLE;//计数器溢出中断使能config.cntOverflowFreq = 0;//CNTOF中断产生的频率与计数器频率的关系(0-127), 0表示每次计数器溢出都产生溢出中断,1表示间隔1次,2表示间隔2次,以此内推。config.interruptEn = ENABLE; //PWM中断使能config.callBack = PWM1_CallBack; //PWM中断回调PWM_Init(PWM1, &config); //配置初始化生效NVIC_SetPriority(PWM1_IRQn, 0); //设置PWM模块中断的优先级
}

在中断中对通道6开启计数

测试结果多了一个小脉冲,如果是边沿有效,可以减一个计数值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/84296.shtml

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

相关文章

RL电路的响应

学完RC电路的响应,又过了一段时间了,想必很多人都忘了RC电路响应的一些内容。我们这次学习RL电路的响应,以此同时,其实也是带大家一起回忆一些之前所学的RC电路的响应的一些知识点。所以,这次的学习,其实也…

鸿蒙Flutter实战:21-混合开发详解-1-概述

引言 在前面的系列文章中,我们从搭建开发环境开始,讲到如何使用、集成第三方插件,如何将现有项目进行鸿蒙化改造,以及上架审核等内容;还以高德地图的 HarmonyOS SDK 的使用为例, 讲解了如何将高德地图集成…

Vmware ubuntu22.04 虚拟机 连接Windows主机虚拟串口

1. Windows虚拟串口配置 虚拟串口下载:教程网址 虚拟串口使用:教程网址 2. Ubuntu 虚拟串口配置 Vmware ubuntu22.04 虚拟机 连接windows主机虚拟串口_vmware中ttys0连接的是哪个端口-CSDN博客 注意:虚拟添加串口的时候,一直…

编译rk3568的buildroot不起作用

一、环境: 使用kickpi k1开发板,芯片为rk3568。 vmware ubuntu22.04 kickpi给的sdk包,应该不同友商是通用的。 使用的根文件为buildroot 二、问题: 由于 1、wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan0 …

【动态规划】简单多状态(二)

📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;&#xff…

如何选择支持AI接入的开发语言与框架

选择支持AI接入的开发语言与框架 在AI系统开发中,语言和框架的选择不仅决定了代码实现方式,更深刻影响模型服务的接入效率、调用方式、性能表现和未来的可维护性。相比传统后端系统的语言选择只需关注并发性能或生态成熟度,AI架构下的开发语言必须同时满足以下几类能力: 具…

计算机视觉与深度学习 | Python实现CEEMDAN-ABC-VMD-DBO-CNN-LSTM时间序列预测(完整源码和数据)

以下是一个结合CEEMDAN、ABC优化VMD、DBO优化CNN-LSTM的完整时间序列预测实现方案。该方案包含完整的数据生成、算法实现和模型构建代码。 完整实现代码 import numpy as np import pandas as pd from PyEMD import CEEMDAN from vmdpy import VMD from sklearn.preprocessing…

React19源码系列之渲染阶段performUnitOfWork

在 React 内部实现中,将 render 函数分为两个阶段: 渲染阶段提交阶段 其中渲染阶段可以分为 beginWork 和 completeWork 两个阶段,而提交阶段对应着 commitWork。 在之前的root.render过程中,渲染过程无论是并发模式执行还是同…

c# 解码 encodeURIComponent

在C#中,如果你需要解码由encodeURIComponent方法编码的URL,你可以使用System.Web命名空间中的HttpUtility.UrlDecode方法。这个方法可以处理由JavaScript的encodeURIComponent方法编码的字符串。 首先,确保你的项目中引用了System.Web命名空…

Python学习心得:代码森林的冒险

第一章:迷雾中的第一步 林然从未想过自己会与代码结缘。那是一个平淡的周六清晨,阳光穿过窗帘,洒在她那台老旧的笔记本电脑上。屏幕上,Python的安装界面静静地等待着她的决定。她是一个文科生,大学主修社会学&#xf…

展示了一个三轴(X, Y, Z)坐标系!

等轴测投影”(isometric projection)风格的手绘风格三维图,即三条坐标轴(x₁, x₂, x₃)看起来彼此垂直、等角分布(通常是 120 夹角),它是常见于教材和数学书籍的 “假三维”表示法。…

计算机网络 - 2.基础协议

1.TCP协议 1.TCP(Transmission Control Protocol):传输控制协议2.TCP协议是一种面向连接的、可靠的、 基于字节流的传输层通信协议 1.面向连接:两个使用TCP协议的应用(通常一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接2.可靠的 1.数据传输之前都要建立…

前端之vue3创建基本工程,基本登录、注册等功能的完整过程

此文也是为了做一个基本学习用的vue3创建项目的过程,包含基本的登录页面、登出页面、基本的router跳转、axios调用、登录验证等内容。与项目: https://gitee.com/rainpet/java-web-demo/tree/master/spring-security01 可以配套使用。 如下为主要过程。 …

如果有三个服务实例部署在三台不同的服务器上,这三个服务实例的本地缓存,是存储一模一样的数据?还是各自只存一部分?

✅ 答案是:通常每个服务实例都会独立地缓存它自己访问过的数据,这些数据可能是相同的,也可能是不同的,取决于请求的内容。 📌 举个例子说明 假设你有一个商品详情页的服务,部署了 3 个服务实例&#xff08…

九州未来十三载:开源赋能 智启未来

2012年,九州未来以“开源赋能云边变革”为使命,开启中国开放云边基础架构服务的探索之路。十三载坚守深耕,我们始终以开源为翼,以算力为基,在科技浪潮中砥砺前行,见证并推动着AI时代的算力变革。 坚守初心丨…

Axure项目实战:智慧运输平台后台管理端-订单管理1(多级交互)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:订单管理 主要内容:条件组合、中继器筛选、表单跟随菜单拖动、审批数据互通等 应用场景…

WebAssembly:开启跨平台高性能编程的新时代

在当今的互联网时代,Web 应用的复杂性和性能要求越来越高。从简单的网页浏览到复杂的在线游戏、实时数据处理和图形渲染,开发者需要一种能够兼顾性能和兼容性的技术。WebAssembly(简称 Wasm)应运而生,它作为一种新兴的…

大数据治理:理论、实践与未来展望(二)

书接上文 文章目录 七、大数据治理的未来发展趋势(一)智能化与自动化(二)数据隐私与安全的强化(三)数据治理的云化(四)数据治理的跨行业合作(五)数据治理的生…

计算机视觉与深度学习 | Matlab实现EMD-GWO-SVR、EMD-SVR、GWO-SVR、SVR时间序列预测(完整源码和数据)

以下是一个完整的Matlab时间序列预测实现方案,包含EMD-GWO-SVR、EMD-SVR、GWO-SVR和SVR四种方法的对比。代码包含数据生成、信号分解、优化算法和预测模型实现。 %% 主程序:时间序列预测对比实验 clc; clear; clearvars; close all;% 生成模拟时间序列数据 rng(1); % 固定随…

RabbitMQ核心特性——重试、TTL、死信队列

一、重试机制 在消息传输过程中,可能遇到各种问题,如网络故障,服务器不可用等,这些问题可能导致消息处理失败,因此RabbitMQ提供了重试机制,允许消息处理失败后重新发送,但是,如果是因…