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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版