微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 有关定时器TIM3和TIM4复用和重映射问题!

有关定时器TIM3和TIM4复用和重映射问题!

时间:10-02 整理:3721RD 点击:

void TIM3_GPIOB5_Config(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);
  GPIO_AFIODeInit();
  GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3 ,ENABLE );
        
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;               
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void TIM4_GPIOB6_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);
   GPIO_AFIODeInit();
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
}
使用的片子是LQFP 100pin的STM32F103VET6;
TIM3_CH2和TIM4_CH1都配置为PWM输出模式(这个就不挂出来了,单独用PWM输出是正常的);
PB5重映射作为TIM3_CH2输出,PB6复用作为TIM4_CH1输出;
那么问题来了:TIM3_CH2无法输出正常波形,TIM4_CH1正常输出PWM!
究竟是什么原因呢?希望大家指正下!


GPIO_AFIODeInit();的作用是什么得搞清楚,这两个不一样的,一个复用,一个没复用。

复用时钟和PB5时钟都开了,但是这句话的作用  GPIO_AFIODeInit();是不是又把复用时钟复位了,看一下是不是这个问题。还有确定硬件电路是否有问题。

硬件没有问题啊,不使用复用功能,单独是可以用的,GPIO_AFIODeInit();在TIM4_ch1那里也用了额,可是TIM4_ch1能工作,TIM3_ch2就不可以呢?

TIM4_ch1那个是默认复用功能,可以不用AFIO时钟,TIM3_CH2是user定义复用,AFIO就必须用了。问题已经解决,就是GPIO_AFIODeInit();这个问题,谢谢你哈

程序写的很给力啊!真的是大神啊!自己学了很久都不会啊!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top