HAL库 TIM slave mode -> reset mode
本帖最后由 DMA 于 2016-5-31 00:49 编辑使用硬体: STM32F411 Nucleo
本来要问有关 UART 相关问题,不过我现在把问题缩小了
我在cube里设置了TIM5
Slave Mode: Reset Mode
Trigger Source: ITR0
Channel2: Input Capture direct mode(脚位PA1)
然后我在程序开始前调用了
HAL_TIM_Base_Start_IT(&htim5);
HAL_TIM_IC_Start_IT(&htim5, TIM_CHANNEL_2);
运作时可以触发
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);
但是无论PA1给予怎样的输入,都没办法复位TIM5计数器,是不是我哪里搞错了?
/*Configure GPIO pin : PA0 */
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;//GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
1、尽量不要使用同一个引脚,作为多种功能。
2、实在要用的话,请关心一下不同功能时 对引脚的配置要求。
定时器(输出比较模式/PWM)------推挽复用输出
EXTI输入线------浮空输入或带上拉输入或带下拉输入 本帖最后由 DMA 于 2016-5-30 23:24 编辑
已经缩小问题,麻烦各位大神帮我看看 你的触发输入是ITR0,跟PA1没什么关系啊。你PA1设计为输入捕捉。
你的TIM5设计成复位模式,触发输入可以是ITRx,或者TI1,TI2,ETRF.
你现在ITR0没有信号过来。 要不可以把触发输入改完TI2FP2.
谢谢,大神。
我已经大概了解TIM框架图。
现在我遇到另一个问题是,每次触发TIM5复位会直接进入中断函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
但是我希望他是真的计数到周期上限才中断这个函数,
请问这样有什么寄存器可以设定吗?
我稍为研究过TIM的所有寄存器似乎没看到这个功能。
页:
[1]