你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

HAL库 TIM slave mode -> reset mode

[复制链接]
DMA 提问时间:2016-5-30 00:11 /
本帖最后由 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计数器,是不是我哪里搞错了?

TIM5设置1

TIM5设置1

TIM5设置2

TIM5设置2
收藏 评论4 发布时间:2016-5-30 00:11

举报

4个回答
Dylan疾风闪电 回答时间:2016-5-30 11:15:07
  1. /*Configure GPIO pin : PA0 */
  2.   GPIO_InitStruct.Pin = GPIO_PIN_0;
  3.   GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;//GPIO_MODE_IT_FALLING;
  4.   GPIO_InitStruct.Pull = GPIO_PULLUP;
  5.   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
复制代码


1、尽量不要使用同一个引脚,作为多种功能。
2、实在要用的话,请关心一下不同功能时 对引脚的配置要求。
定时器(输出比较模式/PWM)------推挽复用输出
EXTI输入线------浮空输入或带上拉输入或带下拉输入
DMA 回答时间:2016-5-30 13:21:36
本帖最后由 DMA 于 2016-5-30 23:24 编辑

已经缩小问题,麻烦各位大神帮我看看
xmshao 回答时间:2016-5-31 15:01:24
你的触发输入是ITR0,跟PA1没什么关系啊。你PA1设计为输入捕捉。

你的TIM5设计成复位模式,触发输入可以是ITRx,或者TI1,TI2,ETRF.

你现在ITR0没有信号过来。 要不可以把触发输入改完TI2FP2.

DMA 回答时间:2016-5-31 22:57:20
谢谢,大神。
我已经大概了解TIM框架图。

现在我遇到另一个问题是,每次触发TIM5复位会直接进入中断函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

但是我希望他是真的计数到周期上限才中断这个函数,
请问这样有什么寄存器可以设定吗?

我稍为研究过TIM的所有寄存器似乎没看到这个功能。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版