由于工作需要,要求做一个PWM端口控制输出电压大小。这本是很简单的事,但却碰到一个小问题,纠结了半天时间。。现记录下来供人参考。
想要使用这个PB3输出,就要使用部分remap模式1或者all remap,但是配置过程中发现只有debug时可以输出正常波形,重新上电后却不能正常输出,最后发现是这个PB3本身引脚默认的功能比较特别:JTDO,不是普通IO,而是JTAG的复用功能引脚,除此之外还有:JNTRST、JTDI。
因此,当我用SWD调试时,这三个引脚就作为普通IO,这样我的PWM输出也正常,重新上下电后又默认为JTDO输出。
解决方法:禁用JTAG功能
在使能remap后,加上禁用JTAG功能的配置:
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //使能SWD 禁用JTAG
如此,重新上下电后,PWM正常输出。