OpenEdv-开源电子网

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

STM32F103C8T6定时器周期能否设置成1Mhz?

[复制链接]

31

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2939
注册时间
2015-12-30
在线时间
358 小时
发表于 2021-10-29 14:05:40 | 显示全部楼层 |阅读模式
1金钱
为何我无论怎么设置周期最大都是200Khz呢?

最佳答案

查看完整内容[请看2#楼]

定时器是可以的,不过不能以1Mhz去产生中断,CPU响应不过来。。。你输出1Mhz的方波之类的就很准确。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2021-10-29 14:05:41 | 显示全部楼层
定时器是可以的,不过不能以1Mhz去产生中断,CPU响应不过来。。。你输出1Mhz的方波之类的就很准确。
回复

使用道具 举报

12

主题

3397

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8669
金钱
8669
注册时间
2020-5-11
在线时间
4132 小时
发表于 2021-10-29 14:11:02 | 显示全部楼层
代码呢?
别说1MHz,就算设置到10MHz都行。
专治疑难杂症
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2020-7-26
在线时间
20 小时
发表于 2021-10-29 14:20:19 | 显示全部楼层
可以,设置为72分频即可
回复

使用道具 举报

31

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2939
注册时间
2015-12-30
在线时间
358 小时
 楼主| 发表于 2021-10-29 14:43:01 | 显示全部楼层
LcwSwust 发表于 2021-10-29 14:11
代码呢?
别说1MHz,就算设置到10MHz都行。

就在原子定时器例程上做了简单的修改,单片机换成 STM32F103CBT6,TIM3_Int_Init(9,7);就这些,但是频率始终220K附近

实验8 定时器中断实验.zip

2.98 MB, 下载次数: 3

回复

使用道具 举报

31

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2939
注册时间
2015-12-30
在线时间
358 小时
 楼主| 发表于 2021-10-29 14:44:48 | 显示全部楼层
Gsd 发表于 2021-10-29 14:20
可以,设置为72分频即可

在哪里设置呢?TIM3_Int_Init(9,7);我都这样了,频率都是220K
回复

使用道具 举报

14

主题

821

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2106
金钱
2106
注册时间
2021-7-17
在线时间
659 小时
发表于 2021-10-29 14:48:21 | 显示全部楼层
可以设置的,检查一下其它地方的配置问题
回复

使用道具 举报

31

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2939
注册时间
2015-12-30
在线时间
358 小时
 楼主| 发表于 2021-10-29 14:49:21 | 显示全部楼层
ChenRyan 发表于 2021-10-29 14:48
可以设置的,检查一下其它地方的配置问题

就是不知道哪里设置的问题,对底层不是理解。。。。
回复

使用道具 举报

12

主题

3397

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8669
金钱
8669
注册时间
2020-5-11
在线时间
4132 小时
发表于 2021-10-29 14:57:44 | 显示全部楼层
lophost 发表于 2021-10-29 14:43
就在原子定时器例程上做了简单的修改,单片机换成 STM32F103CBT6,TIM3_Int_Init(9,7);就这些,但是频率 ...

哦,原来是开了中断啊,为啥要开中断呢?直接用PWM不好吗?
中断占用了大量CPU,假如1us中断一次,中断里花了5us时间,那就是这次中断还没处理完下个中断又来了,这样不行的。
你看你主循环LED0还在闪没有。
专治疑难杂症
回复

使用道具 举报

31

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2939
注册时间
2015-12-30
在线时间
358 小时
 楼主| 发表于 2021-10-29 15:16:34 | 显示全部楼层
LcwSwust 发表于 2021-10-29 14:57
哦,原来是开了中断啊,为啥要开中断呢?直接用PWM不好吗?
中断占用了大量CPU,假如1us中断一次,中断 ...

我试了下,不用定时器,           直接while(1)
        {
                LED0=!LED0;                  
        }         
然后测了一下LED端的频率,为何也是200多Khz?
回复

使用道具 举报

12

主题

3397

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8669
金钱
8669
注册时间
2020-5-11
在线时间
4132 小时
发表于 2021-10-29 15:36:36 | 显示全部楼层
lophost 发表于 2021-10-29 15:16
我试了下,不用定时器,           直接while(1)
        {
                LED0=!LED0;                  

按理说不应该这么慢,也许C语言转为汇编时多出了一些东西,建议直接对整个16位端口赋值。
while(1)
{

GPIOB->ODR=0;
GPIOB->ODR=0xFFFF;

GPIOB->ODR=0;
GPIOB->ODR=0xFFFF;

GPIOB->ODR=0;
GPIOB->ODR=0xFFFF;

}

也可以试试DMA看能否提高速度。

专治疑难杂症
回复

使用道具 举报

11

主题

2149

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4915
金钱
4915
注册时间
2015-1-10
在线时间
616 小时
发表于 2021-10-29 15:47:26 | 显示全部楼层
会不会是你的主频问题,确定是72M吗
回复

使用道具 举报

9

主题

251

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1368
金钱
1368
注册时间
2014-11-25
在线时间
185 小时
发表于 2021-10-29 16:18:06 | 显示全部楼层
200K是怎么测到的
回复

使用道具 举报

31

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2939
注册时间
2015-12-30
在线时间
358 小时
 楼主| 发表于 2021-10-29 17:22:10 | 显示全部楼层
godark 发表于 2021-10-29 16:18
200K是怎么测到的

示波器量的
回复

使用道具 举报

31

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2939
金钱
2939
注册时间
2015-12-30
在线时间
358 小时
 楼主| 发表于 2021-10-29 17:25:43 | 显示全部楼层
阿侑kevin 发表于 2021-10-29 15:47
会不会是你的主频问题,确定是72M吗

怎么确定主频是不是72?
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2021-10-29 18:20:04 | 显示全部楼层
lophost 发表于 2021-10-29 17:25
怎么确定主频是不是72?

库函数有获取时钟频率的,单片机还有个引脚可以输出时钟,还可以开个定时器或者原子的delay函数 控制IO口反转 示波器直接看
如果你用原子的程序啥都不动 无非就是外部72M或者内部8M
回复

使用道具 举报

11

主题

2149

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4915
金钱
4915
注册时间
2015-1-10
在线时间
616 小时
发表于 2021-11-1 09:48:51 | 显示全部楼层
lophost 发表于 2021-10-29 17:25
怎么确定主频是不是72?

SystemCoreClockUpdate()刷新主频,然后看SystemCoreClock的值
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 15:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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