打印
[STM32F1]

TIM1 的PWM 波形输出

[复制链接]
1935|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fanxsd|  楼主 | 2015-6-22 11:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
把TIM1 配置成PWM波形输出,仅使用通道1,即PA 8 引脚。
TIM1->SR &=0xFFFC;
         TIM_ITConfig(TIM1, TIM_IT_CC1|TIM_IT_Update, ENABLE);       
开启了,通道1 的比较中断中断。

出现的问题, PA8 引脚 ,在刚刚烧写完 程序之后,波形输出正常。当重新上电之后,出现波形的极性 翻转了。
甚至有的时候重新上电之后 无波形输出了。 重新烧写程序 有时候PA8 波形恢复正常,有时候不正常。
即便是示波器检测不到,PA8波形输出的时候 通道1 的比较中断,还是能够正常的进入。说明TIM1 的工作还是正常的。
不知为什么 PA8 经常无波形,或者波形错乱。
沙发
fanxsd|  楼主 | 2015-6-22 11:56 | 只看该作者
这些没有配置的 引脚 竟然勾选了,CH1 竟然没有。。。

TIMER1.jpg (294.12 KB )

TIMER1.jpg

使用特权

评论回复
板凳
fanxsd|  楼主 | 2015-6-22 12:15 | 只看该作者
香版主 帮我看看这个问题吧。。。。

使用特权

评论回复
地板
airwill| | 2015-6-22 14:31 | 只看该作者
在刚刚烧写完 程序之后,波形输出正常。当重新上电之后,出现波形的极性 翻转了。
甚至有的时候重新上电之后 无波形输出了。 重新烧写程序 有时候PA8 波形恢复正常,有时候不正常。

这是不应该发生的事情, 否则大家都不能用这芯片开发了. 所以, 问题应该是复位或你的初始化代码有问题
结合你给的那一行代码:
TIM1->SR &=0xFFFC;

我猜是因为使用寄存器操作过度精简初始化代码造成的! 先用标准的库函数做初始化吧. 调试正常后再慢慢研究你的寄存器操作吧.

使用特权

评论回复
5
fanxsd|  楼主 | 2015-6-22 15:09 | 只看该作者
airwill 发表于 2015-6-22 14:31
在刚刚烧写完 程序之后,波形输出正常。当重新上电之后,出现波形的极性 翻转了。
甚至有的时候重新上电之 ...

大神 ,我配置 TIM_DeInit(TIM1);
貌似都清零了。

使用特权

评论回复
6
wowow| | 2015-6-22 17:23 | 只看该作者
这个别人没法帮你, 自己用断点或单步调试方法找到执行到哪里出现了问题

使用特权

评论回复
7
fanxsd|  楼主 | 2015-6-23 11:22 | 只看该作者
airwill 发表于 2015-6-22 14:31
在刚刚烧写完 程序之后,波形输出正常。当重新上电之后,出现波形的极性 翻转了。
甚至有的时候重新上电之 ...

这个确实是 TIM1 的一点故障。我现在问题找到了。deinit 之后,不用的都要配置,不能和普通定时器那样。不然就会出现各种灵异的事情。

使用特权

评论回复
8
amanda_s| | 2015-6-23 13:20 | 只看该作者
fanxsd 发表于 2015-6-23 11:22
这个确实是 TIM1 的一点故障。我现在问题找到了。deinit 之后,不用的都要配置,不能和普通定时器那样。 ...

Deinit之后寄存器应该是回到默认值。
“不用的都要配置”,楼主是配置成什么值?

使用特权

评论回复
9
fanxsd|  楼主 | 2015-6-23 13:23 | 只看该作者
amanda_s 发表于 2015-6-23 13:20
Deinit之后寄存器应该是回到默认值。
“不用的都要配置”,楼主是配置成什么值? ...

TIM1  内部还有很多逻辑,不然就不是高级定时器了。

使用特权

评论回复
10
六个圈儿| | 2015-6-23 13:28 | 只看该作者
用库函数配置吧,不会有落下的端口配置

使用特权

评论回复
11
玛尼玛尼哄| | 2015-6-23 15:07 | 只看该作者
来跟大神们学习了,希望大神们都发表点牛X的见解。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

559

帖子

3

粉丝