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版本的输入捕获实验中就设置为了
普通输入
我把这里修改为输入后,反而不能检测出脉冲宽度了? 求解
---------------------
我就想知道这里为什么要设置为推挽输出?不是捕获输入实验吗?103版本设置的就是输入
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口引脚上的数据的采样啊 等等。
不知道我讲明白了没有。
一周热门 更多>