OpenEdv-开源电子网

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

STM321F03的GPIO输出8mhz频率脉冲的问题。

[复制链接]

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
发表于 2018-10-11 15:22:07 | 显示全部楼层 |阅读模式
5金钱
1、采用MCO方式,输出内部/外部时钟频率,该方法怎样去计算输出的脉冲数?定时器捕获?
2、采用定时器拉高拉低,但是我用定时器2定时,无论怎么设置重载值和预分频值,都不能讲频率拉高,最高到250KHZ,按道理讲,72MHZ/(ARR+1)*(psc+1),只要配置ARR和PSC不应该可以最高输出72MHZ的频率吗?(虽然GPIO最高速度是50MHZ)

最佳答案

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

定时器用于计时的时钟源,根源上都是从机器周期,额这里我的表述不太合适,sysclk中分频出来的;所以可以将定时器的时钟的分频,设置和输出的时钟信号的分频一样,就可以实现对输出时钟信号的计数,可以参考时钟树:
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-10-11 15:22:08 | 显示全部楼层
wangmingwei093 发表于 2018-10-12 10:14
没查到您说的第二条,怎么用定时器对机器周期进行计数?

定时器用于计时的时钟源,根源上都是从机器周期,额这里我的表述不太合适,sysclk中分频出来的;所以可以将定时器的时钟的分频,设置和输出的时钟信号的分频一样,就可以实现对输出时钟信号的计数,可以参考时钟树: 1.png
十六进制带我飞。
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
 楼主| 发表于 2018-10-11 15:52:26 | 显示全部楼层
1、刚才试了下,第二条,因为我的中断里还有6句话,判断、赋值等语句,这几条语句执行就需要1.5us左右时间,所以,即使设置最短中断时间,也需要2us所有的时间,所以,用定时器拉高拉低GPIO引脚是达不到想要频率的,不知道我理解的对不对。
2、MCO方式可以直接输出内部/外部时钟频率,那么有什么方法去计数呢?

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-10-12 02:21:30 | 显示全部楼层
最好用高级定时器的PWM来实现,高级定时器有个重复计数器,一定程度上,可以实现你的要求。
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-10-12 08:24:00 | 显示全部楼层
楼主第一条的理解我觉得是正确的。
第二条,有两个思想,一个是在外部硬件上将某个引脚设为输入并且连接到MCO上,通过外部中断来计数(输入捕获有点大材小用);另一个方法是使用定时器对机器周期进行计数,可以将定时器的预分频和MCO上的分频设置为一致。
十六进制带我飞。
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
 楼主| 发表于 2018-10-12 08:53:43 | 显示全部楼层
正点原子 发表于 2018-10-12 02:21
最好用高级定时器的PWM来实现,高级定时器有个重复计数器,一定程度上,可以实现你的要求。

原子哥,刚刚试了下,PWM输出,当重载值小于100的时候,就是非50%的占空比时钟了,就是您说的一定程度上了,所以想要高速50%的占空比时钟就达不到要求了。
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
 楼主| 发表于 2018-10-12 08:55:08 | 显示全部楼层
DreamWaterPro 发表于 2018-10-12 08:24
楼主第一条的理解我觉得是正确的。
第二条,有两个思想,一个是在外部硬件上将某个引脚设为输入并且连接到 ...

使用定时器对机器周期进行计数,定时器预分频和MCO分频设置为一致?我不是很理解,我查查怎么个原理。
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
 楼主| 发表于 2018-10-12 10:14:28 | 显示全部楼层
DreamWaterPro 发表于 2018-10-12 08:24
楼主第一条的理解我觉得是正确的。
第二条,有两个思想,一个是在外部硬件上将某个引脚设为输入并且连接到 ...

没查到您说的第二条,怎么用定时器对机器周期进行计数?
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
 楼主| 发表于 2018-10-16 10:31:00 | 显示全部楼层
DreamWaterPro 发表于 2018-10-13 09:47
定时器用于计时的时钟源,根源上都是从机器周期,额这里我的表述不太合适,sysclk中分频出来的;所以可以 ...

试了下,完全可以,不过最后我决定,就用拉高拉低,然后计数去输出占空比来提供时钟,也可以达到2M左右的速度,简单粗暴,不过仅限于功能不多的场合来用,如果功能多的场合,就得用你说的这种方法了。
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-10-16 11:03:47 | 显示全部楼层
可以的可以的
十六进制带我飞。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 01:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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