OpenEdv-开源电子网

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

PWM默认电平的控制

[复制链接]

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2013-3-11
在线时间
74 小时
发表于 2017-8-19 15:04:44 | 显示全部楼层 |阅读模式
1金钱
小白想问一个简单的问题,看手册看糊涂了,以下是代码部分:

        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_Pulse = nPDTemp>>1;//50%
        TIM_OC1Init(TIM2, &TIM_OCInitStructure);
        TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);
        TIM_ARRPreloadConfig(TIM2, DISABLE);


我的需求是PWM口一开始是低电平,然后在Pulse之前是高电平,之后是低电平;

TIM_OCMode_PWM1搭配TIM_OCPolarity_High就是Pulse之前是高电平,之后是低电平,但是PWM一配置完就是高电平,我要的是低电平...
TIM_OCMode_PWM1搭配TIM_OCPolarity_Low就是配置完是低电平,但是Pulse之前是低电平,之后是高电平...
TIM_OCMode_PWM2也试过,不行...现象一样

我试过一开始PWM口配置成普通IO拉低,有PWM时才配置,输出完成后就恢复普通IO口拉低,这个方法倒是可以,但是IO口切换模式时有个小尖峰脉冲...感觉这个方法不大好...

由于我是用来触发一个响应非常快的高电平脉冲来驱动相机拍照,所以问下各位应该如何去配置?或者有更好的办法?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2013-3-11
在线时间
74 小时
 楼主| 发表于 2017-8-19 15:41:48 | 显示全部楼层
还是用IO口模式切换的办法,不用库函数,直接用寄存器操作IO口模式切换那个尖峰脉冲就没了,看来库函数调用花了10us左右的时间让尖峰脉冲突出来了,哎,感觉强大的ST应该有更好的办法去配置波形的,求各位大神带路
回复

使用道具 举报

6

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2017-7-25
在线时间
39 小时
发表于 2017-8-19 15:42:55 | 显示全部楼层
Pulseq之前和PWM一开始不就是一个地方吗....你要他既要高电平又要低电平是什么意思......,高阻态???
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2013-3-11
在线时间
74 小时
 楼主| 发表于 2017-8-19 19:34:55 | 显示全部楼层
17602515236 发表于 2017-8-19 15:42
Pulseq之前和PWM一开始不就是一个地方吗....你要他既要高电平又要低电平是什么意思......,高阻态???

pulse是指那个比较的值,就是我想把IO口配置成一开始是低电平,打开PWM输出一个脉冲,但是脉冲打开时开始是高电平,当计数计到比较值翻转为低电平,我配置来配置去,脉冲在计到比较值之前,IO的状态都和PWM配置完出来的状态一样
回复

使用道具 举报

6

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2017-7-25
在线时间
39 小时
发表于 2017-8-19 21:37:19 | 显示全部楼层
kaxilion 发表于 2017-8-19 19:34
pulse是指那个比较的值,就是我想把IO口配置成一开始是低电平,打开PWM输出一个脉冲,但是脉冲打开时开始 ...

PWM1+Low或者PWM2+High就可以()向上计数模式,一开始就是低电平
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-8-19 22:23:32 | 显示全部楼层
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
模式有两个可以选择
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2013-3-11
在线时间
74 小时
 楼主| 发表于 2017-8-20 00:24:34 | 显示全部楼层
可能我说得不是很明白,附个图好了,图片分别是TIM_OCMode_PWM1搭配TIM_OCPolarity_High和TIM_OCMode_PWM1搭配TIM_OCPolarity_Low的波形,其实PWM2的波形也是同样的搭配,就是High和Low的搭配反过来而已。
mx34F5D.png
mx361D3.png
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2013-3-11
在线时间
74 小时
 楼主| 发表于 2017-8-20 00:26:31 | 显示全部楼层
17602515236 发表于 2017-8-19 21:37
PWM1+Low或者PWM2+High就可以()向上计数模式,一开始就是低电平

这些搭配我试过了,都是一开始的电压和PWM第一个周期的前半周期电平一样,这样我的外部要触发的设备就要延迟半个周期了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 22:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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