OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2844|回复: 2

原子定时器频率输出的问题,理论和实际有差异,频率也是1hz1hz加上去的

[复制链接]

10

主题

33

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-9-7
在线时间
15 小时
发表于 2020-4-17 12:59:56 | 显示全部楼层 |阅读模式
1金钱
阿波罗h7的板子,
用定时器3
做频率输出测试。


int main(void)
{
  u32 pinlv=4100;       
        u8 led0sta=1;
        Stm32_Clock_Init(160,5,2,4);//设置时钟,400Mhz
  delay_init(400);                        //延时初始化  
        uart_init(100,115200);                //串口初始化为115200
        LED_Init();                                          //初始化与LED连接的硬件接口   
        TIM3_Int_Init(4100-1,1-1);        //10Khz的计数频率,计数5K次为500ms     
        while(1)
        {
                LED0(led0sta^=1);
                delay_ms(1000);
                pinlv--;
                if(pinlv<=3900) pinlv=4100;
                TIM3->ARR=pinlv;                                  //设定计数器自动重装值
        }
}


pinlv=4100 的时候,输出24.5khz
pinlv=2900的时候,输出25.7khz

根据计算,200的节奏对应1.2k的频率变化,理论上 1个节奏的变化就是6hz。

但是我现在把delay_ms(1000); 换成1秒去换算。

200秒一个周期,但是hz的变化是1hz 一变,不是6hz一变。

用示波器和扫频器同时观察的。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

33

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2017-9-7
在线时间
15 小时
 楼主| 发表于 2020-4-17 13:06:43 | 显示全部楼层
调整了精度之后,是平均6hz,对的。稳定性略微差了一点,有时候是8hz',有时候是5hz,有时候是7hz的偶尔会有9hz
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2020-4-18 01:34:39 | 显示全部楼层
一个节奏变化是6hz,你怎么算出来的? 你改变的是ARR, ARR的变化,不可能保证输出频率连续固定步进可调所以定时器输出频率,本来就不是连续可调的。
只能近似,还得修改psc,arr,同时动作,甚至主频都要重新设置。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-2 12:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表