打印
[STM32F1]

能否用STM32F103完成如下功能?

[复制链接]
2023|58
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuhany|  楼主 | 2021-10-10 11:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1  单片机使用3个引脚,一个输出,两个输入,引脚目前还没指定端口,可以任选.
2  输出脚为时钟脚,输出的时钟必须为晶振频率(即单片机时钟)的1/4或1/8.
3  输出的时钟有脉冲个数限制,比如输出1M个,或4M个,程序内可调.但是必须精确到1个.
4  两个输入脚用于计数,计算在输出时钟信号的这段时间内的上升沿次数(其实就是统计跳变了几次1).计数脉冲的频率不会超过输出的时钟频率,最高只会等于时钟频率.计数精度也要精确到1个.

使用特权

评论回复
沙发
renyaq| | 2021-10-10 11:49 | 只看该作者

你有什么打算呢?或者你想知道什么?

使用特权

评论回复
板凳
wuhany|  楼主 | 2021-10-10 11:51 | 只看该作者
计数前端电路这里不考虑,另外有电路会在计数开始前将两个输入脚电平清零.

使用特权

评论回复
地板
houcs| | 2021-10-10 11:53 | 只看该作者
我现在就是不知道如何让单片机准确又准时的输出N个脉冲,还有不知道单片机能否那么快的计数.

使用特权

评论回复
5
zhanghqi| | 2021-10-10 11:55 | 只看该作者
stm32可以输出时钟,如果你那个输出引脚用来输出时钟那么只能选stm32的那个时钟输出引脚,可以看一下数据手册是哪个引脚可以输出时钟;

使用特权

评论回复
6
jlyuan| | 2021-10-10 11:57 | 只看该作者
输出的时钟源可以选择,所以你选择输出的时钟源不同,那么经过1/4分频或者1/8分配后输出的时钟频率也不同;

使用特权

评论回复
7
pengf| | 2021-10-10 11:59 | 只看该作者
至于对输出指定个数的时钟脉冲,没搞过,而且误差为1个,精度太高了,stm32最高系统频率72MH如果1/4分频后最高输出18MHz时钟,可以通过你输入引脚的外部中带对输出的时钟脉冲个数计数,计数达到指定的脉冲个数后关闭时钟输出,如果输出频率太高,至于数不数的过来没试过。

使用特权

评论回复
8
heweibig| | 2021-10-10 12:00 | 只看该作者
计算上升沿跳变次数,简单点直接使用外部中断即可,复杂点使用stm32的输入捕获。

使用特权

评论回复
9
wenfen| | 2021-10-10 12:03 | 只看该作者
你也可以使用PWM脉冲输出代替时钟输出,在输出比较中断中计算脉冲个数,这样精确度获取可以满足你为 1 的要求。

使用特权

评论回复
10
jlyuan| | 2021-10-10 12:05 | 只看该作者
STM32, 广告词说, 释放你的创造力。 就这点要求,轻松搞定的事情

使用特权

评论回复
11
wuhany|  楼主 | 2021-10-10 12:06 | 只看该作者
输出倒是简单,只是这个要求确定了只能用stm32的定时器输出,无法写循环解决,所以确定脉冲个数就成了另一个难题。

使用特权

评论回复
12
xxrs| | 2021-10-10 12:13 | 只看该作者
如果单用STM32无法解决,那只能搭一堆的逻辑电路了。

使用特权

评论回复
13
jiahy| | 2021-10-10 12:17 | 只看该作者
如果确定用stm32定时器输出脉冲就好办了

使用特权

评论回复
14
chenho| | 2021-10-10 12:19 | 只看该作者
通过定时器输出PWM脉冲,然后打开定时器的输出比较中断,发一个脉冲就会进入一次中断,同时在中断中计一次数,当计数达到指定的个数后后,关闭PWM输出即可。

使用特权

评论回复
15
wuhany|  楼主 | 2021-10-10 12:21 | 只看该作者
我担心的是中断后只有4个或8个晶振时钟周期,单片机搞不过来

使用特权

评论回复
16
wuhany|  楼主 | 2021-10-10 12:23 | 只看该作者
因为还有计数器的端口判断和计数在里面,按设计是4个晶振时钟,如果是8个的话我晶振频率就得翻倍.

使用特权

评论回复
17
zhanghqi| | 2021-10-10 12:25 | 只看该作者
听不懂了呢。你是担心中断频率太高,导致中断处理函数时间超过中断周期,单片机数不过来了?

使用特权

评论回复
18
chuxh| | 2021-10-10 12:28 | 只看该作者
如果输出的脉冲频率太高有这个可能

使用特权

评论回复
19
dingy| | 2021-10-10 12:30 | 只看该作者
不过中断函数里就几条代码,计数器你就搞个静态局部变量count,进入一次中断,count++,后面再跟个if判断计数是否达到指定个数,应该占用不了太多时间。

使用特权

评论回复
20
supernan| | 2021-10-10 12:32 | 只看该作者
最好确定一下你要输出的脉冲频率最高为多少。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

879

主题

10435

帖子

4

粉丝