以CH582M为例:

CH582M有4+8组PWM这里的4路26位PWM(定时器提供),8路系统PWM(8位)

先看系统提供的PWM:

下列截图根据例程进行测试的

注:如需要使用PWM11则需要通过isp工具关闭外部引脚功能复位功能

接下来修改不同占空比不同翻转极性:

占空比计算:64/x/64

接下来看定时器产生的PWM:

以通过DMA配置输出为例

例程上使用的循环模式先看循环模式

    GPIOB_ModeCfg(GPIO_Pin_11, GPIO_ModeOut_PP_5mA);
GPIOPinRemap(ENABLE, RB_PIN_TMR2); PRINT("TMR2 DMA PWM\n");
TMR2_PWMCycleCfg(60 * 2000); // 周期 2000us 主频是60Mhz 每秒震荡60M次 震荡60次为1微秒
for(i=0; i<50; i++)
{
PwmBuf[i]=2400*i;
}
for(i=50; i<100; i++)
{
PwmBuf[i]=2400*(100-i);
} TMR2_PWMInit(Low_Level, PWM_Times_16);
TMR2_DMACfg(ENABLE, (uint16_t)(uint32_t)&PwmBuf[0], (uint16_t)(uint32_t)&PwmBuf[100], Mode_LOOP);
TMR2_PWMEnable();
TMR2_Enable();
/* 开启计数溢出中断,计满100个周期进入中断 */
TMR2_ClearITFlag(TMR1_2_IT_DMA_END);
TMR2_ITCfg(ENABLE, TMR1_2_IT_DMA_END);
PFIC_EnableIRQ(TMR2_IRQn); __INTERRUPT
__HIGH_CODE
void TMR2_IRQHandler(void)
{
if(TMR2_GetITFlag(TMR0_3_IT_CYC_END))
{
TMR2_ClearITFlag(TMR0_3_IT_CYC_END);
/* 计数器计满,硬件自动清零,重新开始计数 */
/* 用户可自行添加需要的处理 */
}
if(TMR2_GetITFlag(TMR1_2_IT_DMA_END))
{
TMR2_ClearITFlag(TMR1_2_IT_DMA_END);
PRINT("DMA end\n");
/* DMA 结束 */
/* 用户可自行添加需要的处理 */
}
}

接下看单次模式;单次模式除了需要将本处进行修改还需要对中断函数进行修改

TMR2_DMACfg(ENABLE, (uint16_t)(uint32_t)&PwmBuf[0], (uint16_t)(uint32_t)&PwmBuf[100], Mode_Single);

__INTERRUPT
__HIGH_CODE
void TMR2_IRQHandler(void)
{
if(TMR2_GetITFlag(TMR0_3_IT_CYC_END))
{
TMR2_ClearITFlag(TMR0_3_IT_CYC_END);
/* 计数器计满,硬件自动清零,重新开始计数 */
/* 用户可自行添加需要的处理 */
}
if(TMR2_GetITFlag(TMR1_2_IT_DMA_END))
{
TMR2_DMACfg(ENABLE, (uint16_t)(uint32_t)&TestBuf[0], (uint16_t)(uint32_t)&TestBuf[100], Mode_Single);
TMR2_ClearITFlag(TMR1_2_IT_DMA_END);
PRINT("DMA end\n");
PFIC_DisableIRQ(TMR2_IRQn);
TMR2_ITCfg(DISABLE,TMR1_2_IT_DMA_END);
/* DMA 结束 */
/* 用户可自行添加需要的处理 */
}
}

PWM如下:

个人学习分享;如有问题请指正

转载请保留出处;

CH59X/CH58X/CH57X PWM使用的更多相关文章

  1. CH58X/CH57X/V208 Observer(观察者)例程讨论讲解

    使用的是沁恒的CH582M的Observer例程与官方的demo板. 本例程的功能是主机扫描到从机的MAC地址并打印出来. 先对宏定义进行理解讨论. 最大响应扫描数为8,在串口调试助手那里可以看到打印 ...

  2. CH58X/CH57X/V208的Broadcaster(广播者)例程讲解

    在对ble进行应用的时候,每个用户的需求可能不尽相同.这里着重介绍从机Broadcaster例程,只广播不连接. 使用该例程时可以在手机使用APP上对Broadcaster进行调试. 安卓端在应用市场 ...

  3. BLE目录

    CH58x/CH57x 蓝牙从机篇(Peripheral) CH573 CH582 CH579蓝牙从机(Peripheral)/主机(Central)例程讲解一(蓝牙主从机收发数据接口说明) CH57 ...

  4. STM32之PWM君

    PWM..英语好的人估计又知道这三个大写字母代表哪三个英语单词了.小弟不才,就说中文意思好了:脉冲宽度调制,玩过飞思卡尔的人估计对PWM非常的不陌生吧.电机驱动需要PWM,控制舵机的转向需要PWM,总 ...

  5. [nRF51822] 12、基础实验代码解析大全 · 实验19 - PWM

    一.PWM概述: PWM(Pulse Width Modulation):脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形. PWM 的几个基本概念: 1) 占空比:占空比是指 ...

  6. Windows on Device 项目实践 1 - PWM调光灯制作

    在前一篇文章<Wintel物联网平台-Windows IoT新手入门指南>中,我们讲解了Windows on Device硬件准备和软件开发环境的搭建,以及Hello Blinky项目的演 ...

  7. 用Arduino剖析PWM脉宽调制

    PWM(Pulse Width Modulation)简介 PWM,也就是脉冲宽度调制,用于将一段信号编码为脉冲信号,也就是方波信号.多用于在数字电路中驱动负载随时间变化的电子元件,如LED,电机等. ...

  8. Arduino学习经验(一)之解决舵机库和pwm输出冲突

    一.前言 最近在公司学习Arduino uno ,用它实现小车超声波避障功能.实现的功能很简单,就是在小车前方挂一个超声波模块,当碰到障碍物时,会通过舵机进行摆头,判断两边的距离,进行左右转弯.但是碰 ...

  9. stm8s103 PWM

    stm8s103 PWM的设置不难,但是很多人不注意选项字节这个问题,PWM是IO口的第二功能,要用ST Visual Programmer 修改选项字节. 只需要修改AFR0的功能就可以了

  10. 驱动实现led,pwm和中断基础知识

    2015.4.8星期三 晴天 今天老师讲的内容是内核编写led和pwm驱动,实现花样灯和放歌的功能.理解应用和驱动的对接,最后自己实现了在放歌的时候根据歌曲的节奏亮灭一个小灯,应为两个独立的驱动都已经 ...

随机推荐

  1. string类型可以作为lock的锁对象吗

    lock 关键字介绍 lock 关键字是用于在多线程编程中实现同步和互斥访问的关键字.它的作用是确保共享资源在任意时刻只能被一个线程访问,从而避免出现竞态条件(race condition)和数据不一 ...

  2. 3. @RequestMapping注解

    1. @RequestMapping 注解的功能 ‍ @RequestMapping 注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系. ‍ SpringMVC 接收到指定的请求 , ...

  3. 深度Q网络:DQN项目实战CartPole-v0

    摘要:相比于Q learning,DQN本质上是为了适应更为复杂的环境,并且经过不断的改良迭代,到了Nature DQN(即Volodymyr Mnih发表的Nature论文)这里才算是基本完善. 本 ...

  4. JS逆向实战19——通杀webpack逆向

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 网站 aHR0cHM6Ly ...

  5. 强化学习实践:Policy Gradient-Cart pole游戏展示

    摘要:智能体 agent 在环境 environment 中学习,根据环境的状态 state(或观测到的 observation),执行动作 action,并根据环境的反馈 reward(奖励)来指导 ...

  6. 痞子衡嵌入式:从功耗测试角度了解i.MXRTxxx系列片内SRAM分区电源控制

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是从功耗测试角度了解i.MXRTxxx系列片内SRAM分区电源控制. 我们知道配合 MCU 一起工作的存储器包含 ROM(Flash) 和 ...

  7. 树莓派4B-细分驱动步进电机

    树莓派4B-细分驱动步进电机 项目介绍 利用4B树莓派控制步进电机转动,精度可达:0.0144度 (即360度/25000) 适用于非常精密的角度转动. 舵机的精度为1度,无法实现超高精度控制. 硬件 ...

  8. CF961E Tufurama题解

    我们维护一个存储下标数据的树状数组,先将 \(1\sim n\) 插入树状数组. 用 \(a\) 表示原数组,\(b\) 表示按照 \(a_i\) 排序后的数组. 我们从 \(1\) 开始统计,直到 ...

  9. linux top中 VSS,RSS,PSS,USS 4个字段的解读

    参考文章:linux中top命令 VSS,RSS,PSS,USS 四个内存字段的解读

  10. RAT蓝队自动化测试框架

    RAT蓝队自动化测试框架 介绍 RAT 是根据 MITRE ATT&CK 战术矩阵测试蓝队检测能力的脚本框架,由 python2.7 编写,共有 50 多种不同 ATT&CK 技术点和 ...