OpenEdv-开源电子网

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

新人求助

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-6-4
在线时间
1 小时
发表于 2018-6-4 14:44:42 | 显示全部楼层 |阅读模式
1金钱
请问大家,在使用STM32F1时,其普通IO口可以检测PWM的输入信号吗?如果可以的话,在程序中应该要怎样实现呢?就是我的IO口输入信号将会有高电平、低电平以及PWM信号这三种输入信号,我怎么做才能将这三种信号分别开来呢?请大家多多指教。

最佳答案

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

普通IO口,都有外部中断功能。高低电平,直接读取IO口的值。 至于PWM,检查频率是有范围的。可以配合定时器进行。 先检查是否有下降沿,当检到下降沿,则启动定时器,改变外部中断为检查上升沿,当检查到IO上升沿,读取定时器计数,算出低电平持续时间。 同理算出高电平持续时间,这样就可以计算出PWM的参数。
逆水行舟[/c
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2018-6-4 14:44:43 | 显示全部楼层
普通IO口,都有外部中断功能。高低电平,直接读取IO口的值。
至于PWM,检查频率是有范围的。可以配合定时器进行。
先检查是否有下降沿,当检到下降沿,则启动定时器,改变外部中断为检查上升沿,当检查到IO上升沿,读取定时器计数,算出低电平持续时间。
同理算出高电平持续时间,这样就可以计算出PWM的参数。
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2018-6-4 15:37:08 | 显示全部楼层
什么应用场景?pwm是脉宽调制的,你不用输入捕获那pwm就没有意义了。普通引脚区分这3中信号倒是好做,但你的方向有可能是错的。应用场景说一下,会有大神告诉你怎么做的
我有故事,你有酒吗
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-6-4
在线时间
1 小时
 楼主| 发表于 2018-6-4 17:00:18 | 显示全部楼层
林光华ing 发表于 2018-6-4 15:45
普通IO口,都有外部中断功能。高低电平,直接读取IO口的值。
至于PWM,检查频率是有范围的。可以配合定时 ...

我只需要识别输入信号是PWM信号就行了,PWM信号的占空比与频率是不用测量的,因为我是用外部电路将三个IO口的输入状态组成了一个真值表,来表示不同的状态,比如说1.1.1为状态1,1.pwm.pwm,为状态2等等,这样的话就要求既能识别输入信号为高低电平也要能识别PWM输入信号,我目前的想法是使用外部中断来识别pwm信号,那么我将IO口配置为外部中断后其还能识别高低电平信号吗?
逆水行舟[/c
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-6-4
在线时间
1 小时
 楼主| 发表于 2018-6-4 17:01:40 | 显示全部楼层
来俩不甜的 发表于 2018-6-4 15:37
什么应用场景?pwm是脉宽调制的,你不用输入捕获那pwm就没有意义了。普通引脚区分这3中信号倒是好做,但你 ...

我是用外部电路将三个IO口的输入状态组成了一个真值表,来表示不同的状态,比如说1.1.1为状态1,1.pwm.pwm,为状态2等等,这样的话就要求既能识别输入信号为高低电平也要能识别PWM输入信号,如果我将IO口配置为外部中断那么这个IO口还能检测高低电平吗?
逆水行舟[/c
回复

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2018-6-4 17:07:57 | 显示全部楼层
amida 发表于 2018-6-4 17:00
我只需要识别输入信号是PWM信号就行了,PWM信号的占空比与频率是不用测量的,因为我是用外部电路将三个IO ...

可以。
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-6-4
在线时间
1 小时
 楼主| 发表于 2018-6-4 17:12:04 | 显示全部楼层

除了使用中断,还有其他方法来识别PWM输入信号吗?
逆水行舟[/c
回复

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2018-6-4 17:38:21 | 显示全部楼层
amida 发表于 2018-6-4 17:12
除了使用中断,还有其他方法来识别PWM输入信号吗?

这个要确认PWM信号的最小频率。
你在一个PWM周期的时间内,检测IO口电平。如果发现在这个时间内电平改变2次,即可判断是否存在PWM。
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-6-4
在线时间
1 小时
 楼主| 发表于 2018-6-4 17:42:12 | 显示全部楼层
林光华ing 发表于 2018-6-4 17:38
这个要确认PWM信号的最小频率。
你在一个PWM周期的时间内,检测IO口电平。如果发现在这个时间内电平改变 ...

那怎么在软件中实现检测电平变化两次呢?
逆水行舟[/c
回复

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2018-6-5 09:57:06 | 显示全部楼层
amida 发表于 2018-6-4 17:42
那怎么在软件中实现检测电平变化两次呢?

用外部中断准确,实时性强。用纯软件可能会错过一些脉冲。stm32基本每个io都有中断,建议使用中断。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-30 21:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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