利用apm32f103c8t6 定时器1的PWM功能输出频率3mhz占空比50%的方波,实际效果却达不到,频率大概3mhz左右,占空比在54%左右,或者占空比50%左右,频率就3.2mhz左右了,总有一个不太符合要求,请问是为什么?怎么解决?
配置代码如下:

void  InitTime1Config(void)
{GPIO_Config_T GPIO_ConfigStruct;TMR_BaseConfig_T TMR_TimeBaseStruct;TMR_OCConfig_T OCcongigStruct;RCM_EnableAPB2PeriphClock((RCM_APB2_PERIPH_T)(RCM_APB2_PERIPH_GPIOA | RCM_APB2_PERIPH_TMR1 ));GPIO_ConfigStruct.pin = GPIO_PIN_8;GPIO_ConfigStruct.mode = GPIO_MODE_AF_PP;GPIO_ConfigStruct.speed = GPIO_SPEED_50MHz;GPIO_Config(GPIOA, &GPIO_ConfigStruct);TMR_TimeBaseStruct.clockDivision = TMR_CLOCK_DIV_1;TMR_TimeBaseStruct.countMode = TMR_COUNTER_MODE_UP;TMR_TimeBaseStruct.division = 1;TMR_TimeBaseStruct.period = 10;TMR_ConfigTimeBase(TMR1, &TMR_TimeBaseStruct);OCcongigStruct.idleState = TMR_OC_IDLE_STATE_RESET;OCcongigStruct.mode = TMR_OC_MODE_PWM1;OCcongigStruct.nIdleState = TMR_OC_NIDLE_STATE_RESET;OCcongigStruct.nPolarity = TMR_OC_NPOLARITY_HIGH;OCcongigStruct.outputNState = TMR_OC_NSTATE_ENABLE;OCcongigStruct.outputState = TMR_OC_STATE_ENABLE;OCcongigStruct.polarity = TMR_OC_POLARITY_HIGH;OCcongigStruct.pulse = 6;TMR_ConfigOC1(TMR1, &OCcongigStruct);TMR_ConfigOC1Preload(TMR1, TMR_OC_PRELOAD_ENABLE);TMR_EnableAUTOReload(TMR1);TMR_Enable(TMR1);TMR_EnablePWMOutputs(TMR1);
}

我尝试了各种division period pulse的不同组合,目前代码的组合已经是最优解。 
由于对方波的波形要求特别高,朋友们帮我看看哪里有问题?有没有可能和内外部晶振有关系?或者有没有更好的办法能够精确输出频率位3mhz占空比50%的方波呢

更新:

已经解决,通过修改系统时钟的配置,我原配置是64mhz,目前改为60mhz,然后修改以下代码就可以实现频率为3MHZ占空比为50%的方波。

TMR_TimeBaseStruct.division = 0;
TMR_TimeBaseStruct.period = 19;OCcongigStruct.pulse = 10;

apm32f103c8t6 通过定时器1的PWM功能输出频率3mhz占空比50%的方波相关推荐

  1. 定时器PWM波输出频率问题

    平台:STM32 功能:多个定时器输出多路PWM波. 现象:相同ARR及CCR,输出PWM波频率不同. 详细:这类问题通常涉及到定时器时钟源的问题,STM32F4的TIM1与其他定时器不同,不在同一条 ...

  2. 使用STM8S003定时器的PWM功能输出PWM波

    一.使用定时器TIM2的CH1.CH2.CH3通道PWM输出 1. 在使用stm8s系列的单片机的时候,使用的头文件大部分都是通用的stm8s.,第一步修改头文件: /* Uncomment the ...

  3. STM32笔记——定时器输入捕获功能(测量PWM的频率和占空比)

    目录 一.概述 二.输入捕获功能 2.1 输入捕获简介 2.2 输入捕获通道 三.输入捕获功能测量PWM波的频率和占空比 3.1 测量频率的方法 3.2 测量过程 一.概述 主要介绍通用定时器的输入捕 ...

  4. 利用定时器的输出比较功能产生PWM驱动舵机

    一.定时器基本原理 首先我们来看一下ST官方给出的关于定时器的相关介绍:(以STM32F103C8T6为例) STM32F103C8T6 含有 4 个 16 位定时器,分别是一个高级定时器 TIM1 ...

  5. STM32H743+CubeMX-低功耗定时器LPTIM输出PWM波

    文章目录 一.前言 二.CubeMX 2.1.Clock Configuration 2.2.LPTIM2 Mode and Configuration 2.3.Parameter Settings ...

  6. 基于AVR单片机PWM功能的数控恒流源研制

    随着电子技术的深入发展,各种智能仪器越来越多,涉及领域越来越广,而仪器对电源的要求也越来越高.现今,电源设备有朝着数字化方向发展的趋势.然而绝大多数数控电源设计是通过高位数的A/D和D/A芯片来实现的 ...

  7. 普通定时器输出互补PWM带死区

    普通定时器输出互补PWM带死区 一般来说三相半桥电路需要互补PWM驱动,而且互补PWM需要带死区,死区的大小跟管子的性能参数有关.公司为了省成本,在云台上把电机驱动芯片替换成三相半桥.用6个MOS驱动 ...

  8. STM32单片机:定时器TIM输出PWM波

    学习32单片机过程中使用的工具:MDK Keil5 + 正点原子精英版(STM32F103ZET6)+ STM32CubeMX + HAL开发 一.PWM的产生原理 关于PWM的产生原理网上有很多教程 ...

  9. 【CH559L单片机】PWM功能和示例介绍

    [CH559L单片机]PWM功能和示例介绍 ✨在官方CH559单片机手册中,在定时器(Timer)这一章节介绍PWM.

最新文章

  1. 百度某员工哀叹:身边的混子太多,坚持了一年,简直浪费生命!
  2. laravel debug,http模式,日志
  3. “主要的编程范型”及其语言特性关系(多图)
  4. Tomcat可运行源码资源分享
  5. shell脚本每日一练(三)
  6. .NET项目升级手记:可为空引用
  7. java 位运算 权限控制_java 位运算权限管控(转载)
  8. vim 编辑器 bash文件测试
  9. unix学习笔记1 read () write()
  10. Compile chromium OS on Debian
  11. 经典歌曲多版本欣赏:刘欢《情怨》:华夏元素鲜明的“中国风格“
  12. 什么是拨号Internet连接?
  13. iOS证书(p12)获取解密公私钥
  14. EMU8086使用及8086指令系统(微机原理实验)
  15. model.generate返回句子大于1时出现<unk>的情况处理
  16. 遍历同辈节点的方法_jquery如何遍历节点
  17. 为何要使用云端ERP系统
  18. 电磁场知识回顾——重要方程,定理
  19. bind函数怎么用JAVA_JavaScirpt 的 bind 函数究竟做了哪些事
  20. stm32_HAL库中__weak修饰符

热门文章

  1. 如何正确的进行密码保护?
  2. Macdown 基本语法
  3. 点评番茄花园事件与M$在中国!
  4. 连接数据库报com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
  5. 【Linux】内存、cpu和硬盘之间的区别
  6. python保留字_开始了类定义_Python 类的定 义
  7. 利用爱快软路由的多线负载(多拨叠加)
  8. 狡猾的谎言——我们是如何被事实和数字欺骗的?
  9. 任正非签发2019年001号文件:把网络安全和隐私保护作为公司的最高纲领...
  10. videojs卡顿_videojs 播放 rtmp 感悟