# 在mm32f3270上为micropython创建PWM模块(2)

2024-02-28 13:32

本文主要是介绍# 在mm32f3270上为micropython创建PWM模块(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在mm32f3270上为micropython创建PWM模块(2)

文章目录

  • 在mm32f3270上为micropython创建PWM模块(2)
    • Architect
      • 共用时基的问题
      • 实例化传参
      • freq和duty
      • 应用场景
      • 使用两个TIM组合

Architect

上文提到, 参考esp系的实现模型. 但具体几个问题还要想明白才能动手.

共用时基的问题

原本想着时基初始化之后, 后面新创建别的通道就不能再动基础频率的. 但再想这样也不合理, 如果不让后面的通道动基础频率, 本身这个通道也改不了基础频率, 因为它们使用同样的函数接口.

索性很粗暴的做法, 每次实例化代码都重新配置一遍时基, 这样最终生效的是最后一次配置时基. 承认共用同一个时基的通道存在耦合.

在micropython中,公用同一个时基的多个通道, 公用同一个时基配置, counter_conf, 然后各自通道有自己的channel_conf

实例化传参

同上文描述, 允许三种类型的实例化绑定硬件通道:

  • 同类对象
  • 通道编号
  • 引脚名称

freq和duty

  • freq

    • 就按"共用实际的问题"中的描述, 以最后一次配置为准.
    • 一个新思路, freq以第一次配置为准, 后续配置频率的操作无效, 除非调用了deinit. 这样代码更安全一点, 也兼顾了灵活性.
    • 为输出pwm信号的频率, 而不是pwm的分辨率.
  • duty

    • duty的周期固定为1000, 可调范围为0-1000
  • 在内部用掩码标记PWM通道的激活情况. 掩码的内存放在counter_conf中.

应用场景

竟然没有定时器的start和stop接口, 这就不能期望多通道同步输出了. 设定实例化PWM对象之后就立刻输出.
deinit在实际不会关掉引脚输出, 而是将duty调为0.
deinit函数中会看, 如果所有的pwm通道都处于非激活状态, 就可以直接stop定时器.

使用两个TIM组合

这样的软件架构更完整一点, 可以适配多TIM的情况. 代码虽然稍复杂一点, 但值得尝试.
MM32的TIM, 在大多情况下, 一个定时器对4个输出通道(互补通道不能独立编程, 不算), 如果要支持机器手/机器猫之类的应用, 至少需要8个输出通道.

思路清晰了, 准备动手写代码…

这篇关于# 在mm32f3270上为micropython创建PWM模块(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/755638

相关文章

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

Python模块导入的几种方法实现

《Python模块导入的几种方法实现》本文主要介绍了Python模块导入的几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录一、什么是模块?二、模块导入的基本方法1. 使用import整个模块2.使用from ... i

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”