初级会员

- 积分
- 65
- 金钱
- 65
- 注册时间
- 2016-3-31
- 在线时间
- 19 小时
|
硬件设备: 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就是能正常工作。。。。。。。。
原子哥,这其中问题得看你了……我发这个帖子,希望能帮助其他遇到这个蛋疼问题的朋友。。。。
|
|