[STM32F103] 用按键开关控制两路同步PWM + GPIO 输出
本帖最后由 wessling 于 2018-4-18 04:41 编辑手头有一块STM32F103 的开发板,想用来实现两路同步的波形输出, 一个口输出PWM 信号, 另一个口输出 GPIO信号, 波形如下:
红色是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.用一个按键开关控制两路信号输出。 按下开关启动波形输出, 信号启动后,再次按下按键关闭两路信号。
求大神给说下实现的思路, 怎么初始化, 中断程序干什么, 主程序里干什么。
想用定时器生成这么个波形, 先以10ms 周期, 占空比为80%启动定时器, 只运行不到一个周期,当波形到80%时候重装 reload 定时器,在发出 0.5ms(2kHZ),占空比为50% 的PWM波。
如下面图片所示。 纯新手, 不知道用一个定时器输出能不能实现这个波形, 定时器应该怎么设置, 谢谢大家指点!
这个类似红外线遥控器的编码波形。可以参考红外遥控相关资料。 1、可以使用PWM先输出一个指定的波形,等80%的输出完以后,修改配置为2khz的。
2、定时器修改为小一点的,比如1us,通过自身计数器进行判断,需要执行的波形输出。 你可以用SPI的MOSI输出这样的波形,全高对应数据0xff,高低变化对应0x55或0xaa等,记得最的后一个数据的时候,要发送0。 看这个波形,应该不难吧?先调整定时器是0.5MS中断一次。前面搞个计数器计算下,后面每次中断改变下端口就可以了。 翻了翻PWM波形输出配置总结等帖子,也看了几个波形做参考
本帖最后由 wessling 于 2018-4-18 04:18 编辑
非常感谢大家的回复, 我把问题完善,并且更新了, 以前使用过DSP , 但对STM32一窍不通, 所以还望大家多指教。:handshake 安 发表于 2018-4-17 08:30
1、可以使用PWM先输出一个指定的波形,等80%的输出完以后,修改配置为2khz的。
2、定时器修改为小一点的, ...
谢谢回复。 你觉得用这种方法可行吗? 就是 直接设定 0,5msec 周期的PWM工作方式, 然后连续10个周波以占比100%输出, 这样就实现了前面的10msec. 连续导通, 后面的周波把占比改成50%再输出就可以了, 主要是想利用定时器可以100%占比输出的特点。 、可以使用PWM先输出一个指定的波形,等80%的输出完以后,修改配置为2khz的。
2、定时器修改为小一点的, ... wessling 发表于 2018-4-18 03:25
谢谢回复。 你觉得用这种方法可行吗? 就是 直接设定 0,5msec 周期的PWM工作方式, 然后连续10个周波以占 ...
这个你可以根据情况选择,如果定时器比较方便,就用定时器。
页:
[1]
2