你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

[STM32F103] 用按键开关控制两路同步PWM + GPIO 输出

[复制链接]
wessling 提问时间:2018-4-17 01:07 /
本帖最后由 wessling 于 2018-4-18 04:41 编辑

[2018.4.17 更新]


手头有一块STM32F103 的开发板,想用来实现两路同步的波形输出, 一个口输出PWM 信号, 另一个口输出 GPIO信号, 波形如下


GPIO, TIMER.PNG


红色是GPIO 口输出, 绿色是PWM口输出。两路波形要求如下:

1. PWM 信号启动后先输出 10 msec. 高电平, 之后输出 50%占比, 0.5 msec. 周期(2kHZ)的PWM 驱动信号。
     

    这个问题昨天问过了, 大家也有讨论,今天经过别人建议用一个定时器, 直接设定 0,5msec 周期的PWM工作方式, 然后连续10个周波以占比  100%输出, 这样就实现了前面的10msec. 连续导通, 后面的周波把占比改成50%再输出就可以了。10msec. 的高电平输出利用了 TIMER 可以100%占比输出的特性

2. GPIO 信号和PWM 信号同步启动,同步关闭。 GPIO启动, 接着启动PWM 。 结束时 GPIO 变低电平,PWM 也要关闭。

3.  用一个按键开关控制两路信号输出。 按下开关启动波形输出, 信号启动后,再次按下按键关闭两路信号。

求大神给说下实现的思路, 怎么初始化, 中断程序干什么, 主程序里干什么。



[2018.4.16 求助帖]
想用定时器生成这么个波形, 先以10ms 周期, 占空比为80%启动定时器, 只运行不到一个周期,当波形到80%时候重装 reload 定时器,在发出 0.5ms(2kHZ),占空比为50% 的PWM波。
如下面图片所示。 纯新手, 不知道用一个定时器输出能不能实现这个波形, 定时器应该怎么设置, 谢谢大家指点!



PWM.PNG
收藏 评论11 发布时间:2018-4-17 01:07

举报

11个回答
wenyangzeng 回答时间:2018-4-17 07:20:16
这个类似红外线遥控器的编码波形。可以参考红外遥控相关资料。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

废鱼 回答时间:2018-4-17 08:30:49
1、可以使用PWM先输出一个指定的波形,等80%的输出完以后,修改配置为2khz的。
2、定时器修改为小一点的,比如1us,通过自身计数器进行判断,需要执行的波形输出。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

七哥 回答时间:2018-4-17 09:31:01
你可以用SPI的MOSI输出这样的波形,全高对应数据0xff,高低变化对应0x55或0xaa等,记得最的后一个数据的时候,要发送0。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

CC4 回答时间:2018-4-17 09:43:56
看这个波形,应该不难吧?先调整定时器是0.5MS中断一次。前面搞个计数器计算下,后面每次中断改变下端口就可以了。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

feixiang20 回答时间:2018-4-17 23:40:44
翻了翻PWM波形输出配置总结等帖子,也看了几个波形做参考

2.png
3.png

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

wessling 回答时间:2018-4-18 02:49:14
本帖最后由 wessling 于 2018-4-18 04:18 编辑

非常感谢大家的回复, 我把问题完善,并且更新了, 以前使用过DSP , 但对STM32一窍不通, 所以还望大家多指教。
wessling 回答时间:2018-4-18 03:25:51
安 发表于 2018-4-17 08:30
1、可以使用PWM先输出一个指定的波形,等80%的输出完以后,修改配置为2khz的。
2、定时器修改为小一点的, ...

谢谢回复。 你觉得用这种方法可行吗? 就是 直接设定 0,5msec 周期的PWM工作方式, 然后连续10个周波以占比100%输出, 这样就实现了前面的10msec. 连续导通, 后面的周波把占比改成50%再输出就可以了, 主要是想利用定时器可以100%占比输出的特点。
如果是我 回答时间:2018-4-18 06:34:30
、可以使用PWM先输出一个指定的波形,等80%的输出完以后,修改配置为2khz的。
2、定时器修改为小一点的, ...

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

废鱼 回答时间:2018-4-18 08:26:19
wessling 发表于 2018-4-18 03:25
谢谢回复。 你觉得用这种方法可行吗? 就是 直接设定 0,5msec 周期的PWM工作方式, 然后连续10个周波以占 ...

这个你可以根据情况选择,如果定时器比较方便,就用定时器。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

STM1024 回答时间:2018-4-18 15:38:40
前10ms的时候做一般GPIO,然后后面配置TIMER输出PWM是否可行?这中间的延时不知道能否接受

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版