OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2306|回复: 6

TIM定时器的小细节探索,TIM的霍尔模式

[复制链接]

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2017-10-20
在线时间
23 小时
发表于 2019-5-20 22:51:45 | 显示全部楼层 |阅读模式
10金钱
采用TIM的霍尔模式,只能捕获霍尔的变化,不能读取计数器的值。配置程序如下
static void HALL_TIMx_Configuration(void)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_ICInitTypeDef        TIM_ICInitStructure;
//        TIM_OCInitTypeDef        TIM_OCInitStructure;

  /* 使能定时器时钟 */
  HALL_TIM_APBxClock_FUN(HALL_TIM_CLK,ENABLE);
  /* 定时器基本参数始终 */                 
  /* 定时周期: HALL_TIM_Period+1 */
  TIM_TimeBaseStructure.TIM_Period = HALL_TIM_PERIOD;
  /* 设置预分频:HALL_TIM_Prescaler,输出脉冲频率:72MHz/(HALL_TIM_Prescaler+1)/(HALL_TIM_Period+1) */
  TIM_TimeBaseStructure.TIM_Prescaler = HALL_TIM_PRESCALER;
  /* 设置时钟分频系数:不分频(这里用不到) */
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;
  /* 向上计数模式 */
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up ;
  TIM_TimeBaseInit(HALL_TIMx, &TIM_TimeBaseStructure);

  /* 初始化TIM5输入捕获参数 */
  /* CC1S=01         选择输入端 IC1映射到TI1上 */
        TIM_ICInitStructure.TIM_Channel     = HALL_TIM_Channel_x;
  /* 上升沿捕获 */
        TIM_ICInitStructure.TIM_ICPolarity  = TIM_ICPolarity_BothEdge;       
  /* 映射到TI1上 */
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_TRC;
  /* 配置输入分频,不分频  */
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;                   
  /* IC1F=0000 配置输入滤波器 不滤波 */
        TIM_ICInitStructure.TIM_ICFilter    = 0x00;                        
        TIM_ICInit(HALL_TIMx, &TIM_ICInitStructure);
//        TIM4->CCMR1
        TIM4->CCER&=0xFFEF;
        TIM4->CCMR1|=0x700;
        TIM4->CCMR1&=0xFCFF;
//  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;         //TIM输出通道初始化 OC2M
//  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Disable;          //CCR2  
//  TIM_OCInitStructure.TIM_Pulse =0;
//  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
//        TIM_OC2Init(HALL_TIMx,&TIM_OCInitStructure);//此处是OCx代表配置通道x
  /* 配置NVIC */
  HALL_TIMx_NVIC_Configuration();

  TIM_SelectHallSensor(HALL_TIMx,ENABLE);                          //使能TIMx的霍尔传感器接口
  TIM_SelectInputTrigger(HALL_TIMx, TIM_TS_TI1F_ED);                       //输入触发源选择     

        TIM_SelectSlaveMode(HALL_TIMx, TIM_SlaveMode_Reset);                     //从模式选择
  TIM_SelectMasterSlaveMode(HALL_TIMx, TIM_MasterSlaveMode_Enable);        //主从模式选择   
   /* 允许更新中断 ,允许CC1IE捕获中断         */
  TIM_ITConfig(HALL_TIMx, TIM_IT_Trigger, ENABLE);
  /* 使能定时器 */
  TIM_Cmd(HALL_TIMx, ENABLE);
  TIM_ClearITPendingBit (HALL_TIMx,TIM_IT_Trigger);
}

TIM2.png
TIM.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2017-10-20
在线时间
23 小时
 楼主| 发表于 2019-5-20 22:53:00 | 显示全部楼层
每一次霍尔值发生变化时都会触发定时器中断,但是读出定时器的计数值始终是1。
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2017-10-20
在线时间
23 小时
 楼主| 发表于 2019-5-20 22:53:41 | 显示全部楼层
中断处理
void HALL_TIM_IRQHANDLER(void)
{
//                LED_turn();
  /* 确保是否产生了EXTI Line中断 */
        if ( TIM_GetITStatus ( HALL_TIMx, TIM_IT_Trigger ) != RESET )              //捕获中断
        {
    /* 清除中断标志位        */
                bldc_dev.motor_speed_M_s_temp=TIM_GetCounter(HALL_TIMx);
//                bldc_dev.motor_speed_M_s_temp=TIM4->CCR2;
    TIM_ClearITPendingBit (HALL_TIMx,TIM_IT_Trigger);
    HALL_Callback();
        }   
}
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2017-10-20
在线时间
23 小时
 楼主| 发表于 2019-5-21 12:02:25 | 显示全部楼层
有没有大佬能帮着看看到底是什么出了问题????
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2017-10-20
在线时间
23 小时
 楼主| 发表于 2019-5-21 12:13:04 | 显示全部楼层
难过ing,没人理我
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2017-10-20
在线时间
23 小时
 楼主| 发表于 2019-5-21 12:47:58 | 显示全部楼层
难道是金币太少?
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2017-10-20
在线时间
23 小时
 楼主| 发表于 2019-5-21 13:45:08 | 显示全部楼层
求大佬。。。。。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 15:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表