ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

STM32 BLDC无刷直流电机 HALL霍尔硬件接口 程序

2021-07-13 18:31:40  阅读:1070  来源: 互联网

标签:NVIC TIM5 BLDC void STM32 TIM 无刷 GPIO HALL


这里是使用STM32F103系列,其他型号可能略有区别

1.首先HALL的IO口初始化

2.硬件HALL接口初始化

3.检测到hall信号变化会触发TIM5中断,中断处理进行电机换向

void HALL_IO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStre;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);

    GPIO_InitStre.GPIO_Pin=HALL_U_Pin|HALL_V_Pin|HALL_W_Pin;
    GPIO_InitStre.GPIO_Mode=GPIO_Mode_IPU;//上拉输入
    GPIO_InitStre.GPIO_Speed=GPIO_Speed_10MHz;
    GPIO_Init(GPIOA,&GPIO_InitStre);    
}
/**********************************************************************/
//名称:void HALL_InterIO_Init(void)
//功能:HAll信号外部中断初始化
//参数:无
//返回:无
/**********************************************************************/
void HALL_InterIO_Init(void)
{
    TIM_ICInitTypeDef  TIM_ICInitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    
    HALL_IO_Init();//Hall IO基本初始化
    
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
    //不用初始化定时器
    //CC1S=01     选择输入端 IC1映射到TI1上
    TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;// 注意只有一个通道|TIM_Channel_2|TIM_Channel_3;
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;//双边沿触发
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_TRC;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;//配置输入分频,不分频 
  TIM_ICInitStructure.TIM_ICFilter = 0x04;//滤波器
    TIM_ICInit(TIM5,&TIM_ICInitStructure);  

  /* 配置TIM为中断源 */
  NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
    
    TIM_SelectHallSensor(TIM5,ENABLE);                          //使能TIMx的霍尔传感器接口,同时异或映射
  TIM_SelectInputTrigger(TIM5, TIM_TS_TI1F_ED);                   //输入触发源选择    
  
    TIM_SelectSlaveMode(TIM5, TIM_SlaveMode_Reset);                 //从模式选择为复位模式
  TIM_SelectMasterSlaveMode(TIM5, TIM_MasterSlaveMode_Enable);    //主从模式选择 使能
   /* 允许更新中断 ,允许CC1IE捕获中断     */
  TIM_ITConfig(TIM5, TIM_IT_Trigger, ENABLE);//
  /* 使能定时器 */
//  TIM_Cmd(TIM5, ENABLE);
  TIM_ClearITPendingBit(TIM5,TIM_IT_Trigger);//清除触发中断标志
}

/**********************************************************************/
//名称:void EXTI15_10_IRQHandler(void)
//功能:Hall TIM5输入捕获中断服务函数
//参数:无
//返回:无
/**********************************************************************/
void TIM5_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM5,TIM_IT_Trigger)!=RESET)
    {
        HAll_ChangePhase();//电机换相
    }
    TIM_ClearITPendingBit(TIM5,TIM_IT_Trigger);
}    

标签:NVIC,TIM5,BLDC,void,STM32,TIM,无刷,GPIO,HALL
来源: https://blog.csdn.net/yuyan7045/article/details/118707663

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有