分享

STM32 某些通道PWM无法输出波形解决

 LMBIO 2017-08-05
     今天在调试程序的时候,发现STM32的TIM4的CH2不能输出PWM波形,一直为高电平,其他通道CH1/CH3/CH4正常输出,若将IO口(PB7)配置为 GPIO_Mode_Out_PP,高低输出正常,排除IO口损坏的因素。再仔细检查PWM配置,反复查找和官方例程比对,未找到差异。
      开始在百度中查找,看是否其他人也有遇到相同的问题。偶然看到一篇文章:
      STM32 某些通道PWM无法输出波形解决——比如STM32F103ZE 芯片的第36引脚PA2(USART2_TX(7)/TIM5_CH3ADC123_IN2/TIM2_CH3 )在配置PWM正确的情况下让其输出PWM波形,示波器却观察不到方波。经检查在配置PWM之前已经使能了(USART2 的时钟,RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);  造成该引脚定时器时钟与USART2 的时钟的冲突,无论使用TIM5的3通道,还是TIM2的3通道都无法使其输出PWM波形,把之前使能的RCC_APB1Periph_USART2去掉,使能TIM5或TIM2时钟即可。
       接着查找芯片的数据手册,发现TIM4的CH2的引脚PB7还有FSMC_NADV,在时钟配置部分,果然开启了FSMC——RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);,故将其注释掉,重新烧写程序,依旧没有PWM波形输出,百思不得其解。
       想了很久,怀疑该工程的程序中,还有其他地方对TIM4的CH2造成影响,所以单独新建了一个工程,只有TIM4产生4路PWM波形的代码,烧写进去,输出正常,此时再将原工程打开,烧写进去,TIM4的CH2 PWM输出正常。重新去掉语句 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);的注释,再烧写一次,PWM波形消失,至此可以肯定是时钟冲突导致PWM波形无法输出。但为何 FSMC时钟开启后,重新关掉不能输出PWM的原因还不是很清楚。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多