当前位置: 首页 > article >正文

JL杰理AC696N开发板PWM波形生成与控制(1):频率、占空比

引言PWM这玩意儿做调光、调速、甚至模拟音频都离不开。JL杰理AC696N的定时器自带PWM输出功能配置起来不算复杂但真要调出稳定的波形有几个坑是绕不开的。比如初始化的时候LED会闪一下、占空比设0反而输出一个高电平、想换个引脚输出还得搞清楚通道映射。之前在AC696N开发板上调PWM驱动呼吸灯和电机把这些小问题都踩了一遍整理出来方便后面用的时候直接抄。PWM常用于控制灯光亮度、电机速度等。JL杰理AC696N芯片的定时器支持灵活的PWM输出。PWM的核心参数是频率和占空比。如图高电平的时间1ms) 低电平的时间3ms 4ms一个周期频率 1s / 4ms 250HZ高电平时间 / 一个周期时间 1ms / 4ms 25%占空比使用timer_pwm_init函数可以初始化指定定时器产生PWM。需要传入定时器如JL_TIMER3、频率Hz、初始占空比0-10000对应0-100%和输出引脚。每个定时器有对应的硬件引脚也可通过通道映射如CH2_T3_PWM_OUT输出到其他引脚但需注意避免IO冲突和定时器被系统占用如TIMER1、TIMER2。常见问题包括初始化时LED闪烁可通过先设置周期和占空比再开启计数模式解决占空比设为0时可能出现一个周期的高电平需调整寄存器操作顺序void set_timer_pwm_duty(JL_TIMER_TypeDef *JL_TIMERx, u32 duty) { if(duty 0){ if(JL_TIMERx-PWM 0){ return; } //计时标志进来此函数前PB3已经设置为高电平PB3部分控制可省略 JL_PORTB-OUT ~BIT(3); /*周期内低电平时期进入此函数强制延长半个到一个周期等下一个周期下降沿再触发 防止一个周期最后1us左右时间触发此函数导致的程序执行时间不够导致极短时间的高电平*/ if(JL_TIMERx-CNT JL_TIMERx-PWM){ while(JL_TIMERx-CNT JL_TIMERx-PWM){ delay(1); } while(JL_TIMERx-CNT JL_TIMERx-PWM){ delay(1); } } //周期内高电平时间进入此函数等周期内低电平时间触发 while(JL_TIMERx-CNT JL_TIMERx-PWM){ delay(1); } //关闭PWM波形 JL_TIMERx-CON ~BIT(8); //时间标志 JL_PORTB-OUT | BIT(3); } else{ //开启PWM JL_TIMERx-CON | BIT(8); } JL_TIMERx-PWM (JL_TIMERx-PRD * duty) / 10000; //0~10000对应0~100% //时间标志 JL_PORTB-OUT ~BIT(3); } void timer_pwm_test(void) { //PB3为了计时设置可以去掉 gpio_set_pull_down(IO_PORTB_03,0); gpio_set_pull_up(IO_PORTB_03,0); gpio_set_direction(IO_PORTB_03,0); timer_pwm_init(JL_TIMER3, 100000, 2000, IO_PORTB_05, 0); } //测试按键消息 case KEY_SET_PWM: log_info(KEY_SET_PWM\n); static int pwm_flag 0; JL_PORTB-OUT | BIT(3); if(pwm_flag){ set_timer_pwm_duty(JL_TIMER3,0); pwm_flag 0; } else{ set_timer_pwm_duty(JL_TIMER3,5000); pwm_flag 1; } break;问题波形1占空比变为0时1周期的高电平问题波形2周期末尾操作寄存器执行时间不够导致波形顺延到下周期才执行以及操作寄存器时机不当导致波形顺延。理解时钟源选择系统时钟或晶振时钟对产生高频率PWM也至关重要。总结PWM配置看着简单但细节决定成败。定时器别跟系统冲突TIMER1和TIMER2通常被系统占用建议用TIMER3及以后的。初始化顺序很重要先配周期和占空比再开计数不然会看到一个意外的脉冲。占空比从0到10000对应0%到100%想设50%就写5000。如果需要高频率输出比如几十kHz以上时钟源选系统时钟别选晶振时钟频率上限更高。建议在AC696N开发板上先用示波器把基础波形抓出来确认频率和占空比都对得上再往实际应用里套省得后面调半天分不清是代码问题还是硬件问题。

相关文章:

JL杰理AC696N开发板PWM波形生成与控制(1):频率、占空比

引言PWM这玩意儿,做调光、调速、甚至模拟音频都离不开。JL杰理AC696N的定时器自带PWM输出功能,配置起来不算复杂,但真要调出稳定的波形,有几个坑是绕不开的。比如初始化的时候LED会闪一下、占空比设0反而输出一个高电平、想换个引…...

【Git】TortoiseGit无法push远程仓库

问题 无法使用TortoiseGit push远程仓库,但是使用Git Bash命令正常,提示如下错误。 TortoiseGitPlink Fatal Error No supported authentication methods available(server sent: publickey) 原因 这个问题的核心原因在于:TortoiseGit 默认…...

架桥记:耐达讯自动化CC-Link IE转EtherCAT的工业协议融合实战

在工业自动化行业中,生产线的智能化升级常面临一个核心难题:如何让基于不同通信协议的设备“读懂”彼此,协同工作?特别是当代表日系高速网络技术的CC-Link IE,遇上盛行于欧系设备的实时以太网EtherCAT时,协…...

layout中节点不显示,也没解决,就是记录一下。

现象是:并没有继承过来。排查步骤:1. 先看是否是 layout XL 打开的2.其次点击笑火花 重新抽取下connectivity3.Q 一下 M2 看属性 链接性没吃到4.再次画一下M2 打孔不要用 自动打孔 手动画一下。无变化。5.再次点击小火花,点击Options 将Extra…...

写了10年代码的人,在AI编程时代反而最值钱

最近 Hacker News 上有篇帖子火了,365 票——讲的是怎么配置 .claude/ 文件夹,让 Claude Code 更懂你的项目。 评论区一片热闹,大家在分享自己的 CLAUDE.md 怎么写、规则怎么定、怎么让 AI 更听话。有人贴出了自己精心调教过的配置文件&…...

图片调色思路分享

图片调色是摄影后期处理的核心环节,旨在塑造画面的色彩氛围、统一风格、突出主题或表达情感。以下是一个系统的调色思路,结合了您提纲中的基础调整与色彩管理部分:1. 基础定调与校正 (奠定基础)审视直方图与曝光:首先观察图像的直…...

梦行云软件全系列

梦行云软件全系列模块功能分类解读 财务金融类:梦行财务、梦行金融、财务收支系统、扶贫基金、积分兑换系统、梦行积分 电商交易类:梦行拼团、多级分销、梦行分销、梦行砍价、梦行扫码付 内容与交互类:梦行展文、梦行谈谈、留言反馈、梦行采集…...

第06章langchain之向量化和向量数据库

01-文本视频图片向量化#主要做相似度查询(猜你喜欢)如何确定相似:既要看大小也要看方向对比图片:维度向量(嵌入)模型:02-向量数据库#相似性搜索不是准确搜索举例:举例2:#…...

PostgreSQL 12 + PostGIS 3.4.2 完整部署+迁移+数据恢复避坑指南(新手可复制,全程无报错)

环境说明(核心前提,必看) 本次实操目标:搭建可正常运行的GIS数据库环境,完成跨服务器数据库拆分迁移,恢复已有空间数据备份,确保PostGIS空间功能、索引全部可用,具体环境如下&#…...

“网上很火,你却不懂的这些新梗”

01问:“展望未来”现在怎么说? 答:画大饼02问:“我的天呢”现在怎么说? 答:我勒个豆03问:“大冤种”现在怎么说? 答:家人们04问:“深情”现在怎么说&#xff…...

new AbortController()

new AbortController() 是 JavaScript 中用于‌创建一个 AbortController 实例‌的构造函数,该实例可用于‌控制或取消异步操作‌(如网络请求、事件监听、定时任务等)。...

测评 ASR 歌词生成模型

1. 测评背景与目标 业务需求: 目前有大批量的 MP3 音频需要匹配歌词。网络公开渠道能爬取到的歌词占比不足 50%,因此必须采用 ASR(自动语音识别)生成模式来补全缺口。 核心痛点: 现有的商业 API 调用成本较高&#xf…...

01-第1章-概述与快速开始

第 1 章:概述与快速开始 1.1 sfsDb 简介 sfsDb 是一款专为工业物联网(IIoT)和边缘计算场景设计的纯 Go 语言嵌入式数据库。它基于 LevelDB 构建,提供了无锁事务系统、高效索引管理、时序数据处理和加密存储等功能。 核心特性 纯…...

TCT亚洲展|金属3D打印创新产品抢先看

本届TCT亚洲展有大量创新产品亮相,有的是概念产品,有的则已经被用于最终使用。本期内容,跟随3D打印技术参考,来探索部分创新应用。气液双向散热器概念设计这款产品由漫格科技与中科祥龙联合开发,是一件基于某真实项目的…...

ST7789显示屏驱动实战指南:从基础配置到高级应用

ST7789显示屏驱动实战指南:从基础配置到高级应用 【免费下载链接】st7789py_mpy 项目地址: https://gitcode.com/gh_mirrors/st/st7789py_mpy ST7789显示屏驱动是一款专为嵌入式系统设计的高性能TFT LCD控制器解决方案,支持多种分辨率与丰富显示…...

Shell程序

Shell脚本定义:以.sh结尾的文件,用于执行特定任务脚本参数传递:执行脚本时可在命令后添加参数(如start/stop)Hadoop脚本示例:sbin/hadoop-daemon.sh start namenodeShell编程特点:简单易用,适合自动化常见操作脚本执行方式:直接运行.sh文件即可执行其中命…...

Linux 定时备份 MySQL 数据库(完整教程)

为了防止数据丢失,我们需要定时把数据备份起来。我们使用用 Linux crontab mysqldump 实现定时自动备份,包含备份、压缩、保留历史、自动清理旧文件。一、先准备备份脚本创建一个备份脚本 mysql_backup.sh,放在 /usr/local/bin/ 方便管理。#…...

微信小程序使用websocket调用大模型返回逐字显示的结果

页面展示:小程序代码: aichat.js:const config require(../../utils/config.js); Page({data: {messages: [],inputText: ,isLoading: false,scrollToId: scroll-bottom,currentStreamingId: null,isConnecting: false,isReceiving: false,socketOpen: …...

ModTheSpire终极指南:解锁《杀戮尖塔》无限可能的模组加载器

ModTheSpire终极指南:解锁《杀戮尖塔》无限可能的模组加载器 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire ModTheSpire是专为《杀戮尖塔》设计的开源模组加载器&#xff…...

剪映API技术解析:如何通过代码驱动实现视频剪辑自动化与效率革命

剪映API技术解析:如何通过代码驱动实现视频剪辑自动化与效率革命 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 在视频内容创作进入工业化生产的今天,传统手动…...

基于Matlab的Dijkstra算法与蚁群优化算法路径规划

3基于matlab的Dijkstra和蚁群优化算法路径规划 Dijkstra算法研究的是从初始点到其他每一结点的最短路径,从而得到最短路径 蚂蚁会以较大的概率优先选择信息素浓度较高的路径, 并释放一定量的信息素, 以增强该条路径上的信息素浓度&#xff0c…...

第6章 Mosquitto用户认证与访问控制

第6章 用户认证与访问控制 6.1 认证机制概览 #mermaid-svg-MTeZFweZQcx9XrLR{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:…...

TongWeb8.0支持JBoss Weld‌

JBoss Weld‌ 是 CDI(Contexts and Dependency Injection,JSR 299/346/365)的官方参考实现(RI),用于在 Java EE / Jakarta EE 应用中提供依赖注入和上下文管理功能。它不仅内置于 WildFly、GlassFish 等应用…...

如何让老旧苹果电脑重获新生:OpenCore Legacy Patcher完全指南

如何让老旧苹果电脑重获新生:OpenCore Legacy Patcher完全指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你的2008-2017年老款Mac是否因为苹…...

Git从入门到精通:原理、实战与企业级协作全攻略

Git从入门到精通:原理、实战与企业级协作全攻略 文章目录Git从入门到精通:原理、实战与企业级协作全攻略Git从入门到精通:原理、实战与企业级协作全攻略前言:为什么每个开发者都必须掌握Git?第一部分:Git初…...

WarcraftHelper:让经典魔兽争霸3在现代电脑上完美运行的终极解决方案

WarcraftHelper:让经典魔兽争霸3在现代电脑上完美运行的终极解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为魔兽争霸…...

ComfyUI-VideoHelperSuite视频工作流技术指南:从基础操作到专业应用

ComfyUI-VideoHelperSuite视频工作流技术指南:从基础操作到专业应用 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 引言:视频处理工作流的…...

面对 AI 热潮,企业最值得优先落地的5个业务场景

这一轮 AI 热潮,很多企业都在关注,也都在问同一个问题:AI 到底该先落在哪?是做大模型应用?是上智能体?还是先做知识库、数据平台、自动化流程?看起来方向很多,但真正落到企业经营和管…...

如何判断提取的RNA是否可用?

在分子生物学实验中,RNA的质量直接决定下游实验的成败。那么,如何科学、系统地评价所提取的RNA是否合格呢?应从浓度、纯度与完整性三个维度综合判断,只有三者均达到标准,才能称为高质量RNA。一、质量评价的三项核心指标…...

本地AI聊天、交互助手(写给小白的LLM工具选型系列:第三篇)

诸神缄默不语-个人技术博文与视频目录 在这一章介绍的是,已经有了AI大模型推理服务(不管是云端API还是本地服务),想要一个像聊天框那样的界面来跟大模型聊天、或者让大模型做更复杂的工作。 本章主要考虑的功能还是AI对话&#x…...