stm32F4输入捕获实验 设置为推挽输出疑问?

2019-07-20 09:43发布

  STM32F4 输入捕获实验中,捕获TIM5_CH1(PA0)高电平脉宽中
 A0设置为了
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz
   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //下拉
   GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA0
这是输入捕获实验, 这里为什么要设置为推挽复用输出,在F103版本的输入捕获实验中就设置为了普通输入
我把这里修改为输入后,反而不能检测出脉冲宽度了? 求解

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
frankzhan
2019-07-21 02:38
好早之前就遇到这个疑问,但个人理解F4里IO的模式只有这四种
GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */
  GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */
  GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */
  GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */
在这里我们用的是GPIOA0的复用模式,而复用模式功能配置输入的时候步骤是这样的
对 I/O 端口进行编程作为复用功能时:
● 可将输出缓冲器配置为开漏或推挽
● 输出缓冲器由来自外设的信号驱动(发送器使能和数据)
● 施密特触发器输入被打开
● 根据 GPIOx_PUPDR 寄存器中的值决定是否打开弱上拉电阻和下拉电阻
● 输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样
● 对输入数据寄存器的读访问可获取 I/O 状态
也就说IO口复用功能时输出缓冲器必须被配置要么推完要么开漏,这并不影响后面两步输入数据寄存器对IO口引脚上的数据的采样啊 等等。
不知道我讲明白了没有。

一周热门 更多>