OpenEdv-开源电子网

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

Mini32中串口初始化与TIM1_CH1的PWM的冲突

[复制链接]

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-3-31
在线时间
19 小时
发表于 2016-4-18 20:08:37 | 显示全部楼层 |阅读模式
硬件设备: Mini32
软件资料: 函数uart_init()与函数TIM1_PWM_Init()均来自于原子哥教程
问题描述:当一段代码中先对串口进行初始化,再对TIM1_CH1的PWM初始化,会发现PWM无法正常工作
详细情况见我当时的问题:http://www.openedv.com/forum.php?mod=viewthread&tid=72364

在上面链接的帖子中,我提出假设:是不是TIM1或者GPIOA的控制寄存器的值被UART_INIT()修改于是PWM不能正常工作。

先给结论,结论是:似乎与这两者的控制寄存器无关,PWM失效也许是因为更底层的原因。

证明方法:
1、硬件调试观察两种情况下TIM1和GPIOA的控制寄存器中前后不同的值与位置,结果如下:(括号内是PWM能正常工作时的值)
TIM1->CR2=0x325(0x0000)
TIM1->CCER=0x1AD3(0x0001)
GPIOA->CRH=0x888444BB(0x888444B)

2、在能PWM正常工作的代码中,在进入死循环阶段前,对每一个控制寄存器进行赋值,以及组合赋值实验。

3、观察结果。


结果就是:无论你怎么改变那几个寄存器的值,PWM就是能正常工作。。。。。。。。


原子哥,这其中问题得看你了……我发这个帖子,希望能帮助其他遇到这个蛋疼问题的朋友。。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-11-11
在线时间
22 小时
发表于 2016-4-20 11:19:05 | 显示全部楼层
本帖最后由 远方的自己 于 2016-4-20 11:20 编辑

因该可以通过关断串口不用的引脚进行解决。
YF@]XNIU1KEP$(7DID7}@VS.png
寻找远方的自己,不断的学习。
回复 支持 反对

使用道具 举报

20

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-11-11
在线时间
22 小时
发表于 2016-4-20 11:25:18 | 显示全部楼层
也可以通过重映射到其他的引脚进行处理。
UR]5YW2M8K1AAZY49S~)P@2.png
寻找远方的自己,不断的学习。
回复 支持 反对

使用道具 举报

20

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-11-11
在线时间
22 小时
发表于 2016-4-20 15:57:54 | 显示全部楼层
这是我配置TIM1定时器的两路PWM输出,成功的输出波形了。详细程序可以参考http://zcs754546461.blog.163.com ... 501201632035114710/

pwm

pwm
寻找远方的自己,不断的学习。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 14:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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