微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > TIM3通道2引脚是PA7却要开启GPIOB通道时钟?

TIM3通道2引脚是PA7却要开启GPIOB通道时钟?

时间:10-02 整理:3721RD 点击:
如题,做了个TIM3作为外部脉冲计数,选定通道二,代码如下:

  1. void TIM3_External_Clock_CountingMode(void)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStructure;
  4.     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  5. //   TIM_ICInitTypeDef  TIM_ICInitStructure;
  6.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  7.    
  8.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  9.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  10.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  11.     GPIO_Init(GPIOA, &GPIO_InitStructure);

  12.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  13.     //TIM_DeInit(TIM3);
  14.        
  15.     TIM_TimeBaseStructure.TIM_Period = 0x3AB6
  16.     TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
  17.     TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
  18.        
  19.           
  20.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  21.     TIM_TimeBaseInit( TIM3, &TIM_TimeBaseStructure); // Time base configuration
  22.    
  23.     TIM_TIxExternalClockConfig(TIM3,TIM_TIxExternalCLK1Source_TI2,TIM_ICPolarity_Rising,7);
  24.     TIM_SetCounter(TIM3, 0);
  25.     TIM_ClearFlag(TIM3,TIM_FLAG_Update);                
  26.     TIM_Cmd(TIM3,ENABLE);
  27. }

复制代码

明明TIM3 CH2对应的引脚是PA7,可是为什么开启的是GPIOB的时钟啊!我曾经把它改成GPIOA时钟,结果不能计数了。

TIM2 CH2也是开启GPIOB的时钟,是为什么,是因为我技术文档读的少吗

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     GPIO_Init(GPIOA, &GPIO_InitStructure);    你为何没有使能GPIOA的时钟,你的GPIOA.7为什么设置为模拟输入?

这就是我的困惑,我这个引脚是TIM3用于对外部脉冲计数的。明明是PA7脚却要开启GPIOB时钟才能运行,我开A时钟的时候计数器不工作了。

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

网站地图

Top