你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8定时器竟然出不来8M的PWM???

[复制链接]
我是智勇双全 提问时间:2017-10-28 16:26 /
各位看官,我想试验一下PWM输出的极限频率,下面的程序理论上应该输出8M HZ的频率,最后示波器显示只有177.8K HZ  请大家进来帮我找出问题点,谢谢各位
#include "iostm8s207rb.h"

#define pwm  PF_ODR_ODR5   //定义PWM输出口PF5

int num=0;
void TIM4_init()           //定时器TIM4函数

{
  TIM4_PSCR=0X00;          //设置预分频寄存器16M计数
  TIM4_ARR=0x01;           //自动重装数值1
  TIM4_IER=0X01;           //开启中断使能
  TIM4_CNTR=0X01;          //定时器初值1
}
void main()
{
CLK_CKDIVR=0X00;         //MCU工作主频16M

  PF_DDR_DDR5=1;            //PF5输出
  PF_CR1_C15=1;             //推挽输出
  PF_CR2_C25=1;             //输出频率10M



  TIM4_init();              //初始化定时器
  asm("rim");

  TIM4_CR1|=0X01;

  while(1);

}


#pragma vector=0x19
__interrupt void TIM_UPD_OVF_IRQHandler(void)

{
  num++;
  TIM4_SR=0;
  if(num==1)           //pwm频率为8M
  {
    pwm=!pwm;
    num=0;
  }
}

收藏 评论2 发布时间:2017-10-28 16:26

举报

2个回答
ughbss 回答时间:2017-10-28 18:36:11
你这是用中断控制IO翻转的PWM,中断需要压栈和出栈等工作,是很慢的。如果你需要高速PWM请使用硬件输出PWM
我是智勇双全 回答时间:2017-10-28 18:50:18
ughbss 发表于 2017-10-28 18:36
你这是用中断控制IO翻转的PWM,中断需要压栈和出栈等工作,是很慢的。如果你需要高速PWM请使用硬件输出PWM ...

听你的解释,我有很多没弄明白的,看来我还要修炼一下,我是从51转的,谢谢你
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版