[STM32F1] 能否用STM32F103完成如下功能?

[复制链接]
2824|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个脉冲,还有不知道单片机能否那么快的计数.
zhanghqi 发表于 2021-10-10 11:55 | 显示全部楼层
stm32可以输出时钟,如果你那个输出引脚用来输出时钟那么只能选stm32的那个时钟输出引脚,可以看一下数据手册是哪个引脚可以输出时钟;
jlyuan 发表于 2021-10-10 11:57 | 显示全部楼层
输出的时钟源可以选择,所以你选择输出的时钟源不同,那么经过1/4分频或者1/8分配后输出的时钟频率也不同;
pengf 发表于 2021-10-10 11:59 | 显示全部楼层
至于对输出指定个数的时钟脉冲,没搞过,而且误差为1个,精度太高了,stm32最高系统频率72MH如果1/4分频后最高输出18MHz时钟,可以通过你输入引脚的外部中带对输出的时钟脉冲个数计数,计数达到指定的脉冲个数后关闭时钟输出,如果输出频率太高,至于数不数的过来没试过。
heweibig 发表于 2021-10-10 12:00 | 显示全部楼层
计算上升沿跳变次数,简单点直接使用外部中断即可,复杂点使用stm32的输入捕获。
wenfen 发表于 2021-10-10 12:03 | 显示全部楼层
你也可以使用PWM脉冲输出代替时钟输出,在输出比较中断中计算脉冲个数,这样精确度获取可以满足你为 1 的要求。
jlyuan 发表于 2021-10-10 12:05 | 显示全部楼层
STM32, 广告词说, 释放你的创造力。 就这点要求,轻松搞定的事情
 楼主| wuhany 发表于 2021-10-10 12:06 | 显示全部楼层
输出倒是简单,只是这个要求确定了只能用stm32的定时器输出,无法写循环解决,所以确定脉冲个数就成了另一个难题。
xxrs 发表于 2021-10-10 12:13 | 显示全部楼层
如果单用STM32无法解决,那只能搭一堆的逻辑电路了。
jiahy 发表于 2021-10-10 12:17 | 显示全部楼层
如果确定用stm32定时器输出脉冲就好办了
chenho 发表于 2021-10-10 12:19 | 显示全部楼层
通过定时器输出PWM脉冲,然后打开定时器的输出比较中断,发一个脉冲就会进入一次中断,同时在中断中计一次数,当计数达到指定的个数后后,关闭PWM输出即可。
 楼主| wuhany 发表于 2021-10-10 12:21 | 显示全部楼层
我担心的是中断后只有4个或8个晶振时钟周期,单片机搞不过来
 楼主| wuhany 发表于 2021-10-10 12:23 | 显示全部楼层
因为还有计数器的端口判断和计数在里面,按设计是4个晶振时钟,如果是8个的话我晶振频率就得翻倍.
zhanghqi 发表于 2021-10-10 12:25 | 显示全部楼层
听不懂了呢。你是担心中断频率太高,导致中断处理函数时间超过中断周期,单片机数不过来了?
chuxh 发表于 2021-10-10 12:28 | 显示全部楼层
如果输出的脉冲频率太高有这个可能
dingy 发表于 2021-10-10 12:30 | 显示全部楼层
不过中断函数里就几条代码,计数器你就搞个静态局部变量count,进入一次中断,count++,后面再跟个if判断计数是否达到指定个数,应该占用不了太多时间。
supernan 发表于 2021-10-10 12:32 | 显示全部楼层
最好确定一下你要输出的脉冲频率最高为多少。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

879

主题

10435

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部