搜索
bottom↓
回复: 21

请问 不关闭timer如何用代码实现关闭PWM输出和打开PWM输出?

[复制链接]

出0入36汤圆

发表于 2019-10-17 10:31:59 | 显示全部楼层 |阅读模式
    用的是STM32F030想要实现的功能如下:
           1  上电初始化输出PWM波形,这个PWM参数只在上电设置一次。并使能了溢出中断。
           2  在运行中依据按键定义开启输出PWM / 关闭输出PWM。 只是开启或关闭PWM输出,定时器依然在跑中断照样进入。
      
           说明:就是等效于在io对外加了个开关,这个开关打开就输出PWM,这个开关关闭就不输出PWM。 产生这个PWM的timer不做其他更改,该计数还是计数该中断还是中断时序不变。
     目前设想:
           1. 在GPIO和复用功能中切换,但是这个不知道怎么实现。 只知道从GPIO切换到复用功能,不知道怎么样从复用功能切换会GPIO。
           2. /* Set the Capture Compare Register value */
               TIMx->CCR2 = TIM_OCInitStruct->TIM_Pulse;
               修改比较寄存器为最小或最大,但是这样会改变比较匹配中断。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出590入992汤圆

发表于 2019-10-17 10:41:27 | 显示全部楼层
使:PWM成为100%或者0% 能解决你的问题吗?

出0入0汤圆

发表于 2019-10-17 10:44:34 | 显示全部楼层
设置 PWM 的周期为最大值,应该可以吧。我做过类似的功能,具体记不得了。

出0入0汤圆

发表于 2019-10-17 10:45:19 | 显示全部楼层
修改IO口模式为输入模式,不管正常输入还是复用输入,都不会产生输出,但是io电平需要根据需要设置为上拉或者下拉
使用pwm就是修改为复用输出,

出0入36汤圆

 楼主| 发表于 2019-10-17 10:46:06 | 显示全部楼层
SUPER_CRJ 发表于 2019-10-17 10:41
使:PWM成为100%或者0% 能解决你的问题吗?

    我前面第2点就是这个意思了,会改变比较匹配中断吧。  最好是可以不改变内部运行,只是单单把IO输出关了。

出0入8汤圆

发表于 2019-10-17 10:46:26 | 显示全部楼层
将PWM输出引脚改为GPIO输入模式

出0入36汤圆

 楼主| 发表于 2019-10-17 10:48:31 | 显示全部楼层
xiaomu 发表于 2019-10-17 10:45
修改IO口模式为输入模式,不管正常输入还是复用输入,都不会产生输出,但是io电平需要根据需要设置为上拉或 ...

    这样会不会改变PWM波形的相位,如果不会只是单纯控制IO输出与否就能达到我的要求了。映像中有些单片机是只要开启复用输出功能,IO就被强制设置为输出了。

出0入24汤圆

发表于 2019-10-17 11:24:07 | 显示全部楼层
高级定时器的话,操作MOE位,BDTR寄存器里面
普通定时器的话,操作CCxE, CCxNE位,CCER寄存器里面

出0入4汤圆

发表于 2019-10-17 12:07:00 来自手机 | 显示全部楼层
比较输出模式 有个强制输出或者强制不输出模式

出0入36汤圆

 楼主| 发表于 2019-10-17 13:18:47 | 显示全部楼层
20061002838 发表于 2019-10-17 11:24
高级定时器的话,操作MOE位,BDTR寄存器里面
普通定时器的话,操作CCxE, CCxNE位,CCER寄存器里面 ...

    这个应该可以实现,不知道将CCXE=0后IO是一种怎样的状态? 浮空高阻吗?

出0入0汤圆

发表于 2019-10-17 17:33:26 | 显示全部楼层
最好的方法,切换至IO状态。如果IO状态需要确定,有以下2个方法:
1. 根据需要确定的电平状态,切换成带上拉或下拉的输入模式
2. 切换成输出模式,输出电平先通过输出数据寄存器ODR设置好

出0入36汤圆

 楼主| 发表于 2019-10-17 17:48:17 | 显示全部楼层
sme 发表于 2019-10-17 17:33
最好的方法,切换至IO状态。如果IO状态需要确定,有以下2个方法:
1. 根据需要确定的电平状态,切换成带上 ...

    你家的IC还没批量供应?

出0入0汤圆

发表于 2019-10-17 17:57:38 | 显示全部楼层
用过9楼的方法。

出0入0汤圆

发表于 2019-10-18 08:29:00 | 显示全部楼层
GZZXB 发表于 2019-10-17 17:48
你家的IC还没批量供应?

还没,慢工出细活,现在尽量多收集信息。

你看这么多做STM兼容的,GD最早,后面出来的理论应该兼容性做得更好,避过前人的坑,可到现在感觉GD的兼容性仍在前列。

出0入0汤圆

发表于 2019-10-18 08:49:39 | 显示全部楼层
修改CCER里的使能位即可

出0入362汤圆

发表于 2019-10-18 09:05:21 | 显示全部楼层
sme 发表于 2019-10-18 08:29
还没,慢工出细活,现在尽量多收集信息。

你看这么多做STM兼容的,GD最早,后面出来的理论应该兼容性做 ...

GD不爽的是最低供电电压都是2.6V, 而STM32除了F030/F070是2.4V以外, 剩下大多是2.0V或者1.8V, 1.7V.
你们这个做到多少?

出0入0汤圆

发表于 2019-10-18 12:22:31 | 显示全部楼层
tomzbj 发表于 2019-10-18 09:05
GD不爽的是最低供电电压都是2.6V, 而STM32除了F030/F070是2.4V以外, 剩下大多是2.0V或者1.8V, 1.7V.
你们 ...

1.8~5.5V......

出0入0汤圆

发表于 2019-10-18 12:38:35 | 显示全部楼层
配置成输入口保险

出0入0汤圆

发表于 2019-10-18 12:44:09 来自手机 | 显示全部楼层
sme 发表于 2019-10-18 12:22
1.8~5.5V......

也是兼容st?

出0入8汤圆

发表于 2019-10-18 12:44:48 | 显示全部楼层
本帖最后由 lw2012 于 2019-10-18 12:48 编辑

正好前两天刚用到这个功能
HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_1);
注意关闭后GPIO貌似进入了未被配置状态,要根据需要做调整,我是外部加了一个下拉电阻,省事。

出0入0汤圆

发表于 2019-10-18 12:49:11 | 显示全部楼层

嗯,二进制兼容。。。

出0入362汤圆

发表于 2019-10-18 14:36:16 | 显示全部楼层

不错不错~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 05:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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