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

STM8L TIM2 外部触发计数

[复制链接]
fengurl 提问时间:2017-8-3 09:37 /
悬赏5ST金币已解决
各位神,有没有使用过STM8L151 timer2的ETR(PB3)来计数。小弟最近配置使用没有成功,update中断或计数中断都没有触发。请大家帮忙看看问题出在哪里?多谢!

main函数
void main()
{  
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); //内部时钟为1分频 = 16Mhz
  TIM2_Init();

  while(1)
  {
  }   

}


timer2 的初始化
void TIM2_Init()
{

  GPIO_Init(GPIOB , GPIO_Pin_3 , GPIO_Mode_In_PU_No_IT);  //PB3为timer2 的外部触发入口,上拉输入无中断

  TIM2_DeInit();    //复位TIME2
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM2,ENABLE); //开启TIME2的时钟      
  TIM2_TimeBaseInit(TIM2_Prescaler_1,TIM2_CounterMode_Up,255);//不分频 ,计数 65535

  TIM2_ETRClockMode2Config(TIM2_ExtTRGPSC_OFF,TIM2_ExtTRGPolarity_NonInverted,0);//没有外部触发预分频器,高电平或上升沿有效,使能外部时钟模式2

  TIM2_SelectInputTrigger(TIM2_TRGSelection_ETRF); //选择外部触发
  TIM2_ARRPreloadConfig(ENABLE);

  TIM2_ClearFlag(TIM2_FLAG_Update);
  TIM2_ITConfig(TIM2_IT_Update,ENABLE);   //打开更新中断
  TIM2_ClearFlag(TIM2_IT_Trigger);
  TIM2_ITConfig(TIM2_IT_Trigger,ENABLE);   //打开触发中断  

  TIM2_SetCounter(0);
  TIM2_Cmd(ENABLE);
}


中断函数
extern u8 ul;
INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_USART2_TX_IRQHandler,19)
{
  if(TIM2_GetITStatus(TIM2_IT_Update) != RESET)
  {
    ul++;
    TIM2_ClearITPendingBit(TIM2_IT_Update);
  }
}

INTERRUPT_HANDLER(TIM2_CC_USART2_RX_IRQHandler,20)
{
   if(TIM2_GetITStatus(TIM2_IT_Update) != RESET)
  {
    ul++;
    TIM2_ClearITPendingBit(TIM2_IT_Update);
  }
}

最佳答案

查看完整内容

PB3不会默认就是ETR吧, 一般需要配置引脚功能。
收藏 评论4 发布时间:2017-8-3 09:37

举报

4个回答
无薪税绵 回答时间:2017-8-3 09:37:08
PB3不会默认就是ETR吧,
一般需要配置引脚功能。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

sssdd 回答时间:2017-8-4 10:21:47
总中断呢?不开的吗?
斜阳__ 回答时间:2017-9-27 10:17:30
推荐CubeMX做配置
yygkqzh 回答时间:2017-9-27 22:24:33
你可以看看官方的demo
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版