第一范文网 - 专业文章范例文档资料分享平台

无刷直流电动机 - 图文

来源:用户分享 时间:2025/6/4 3:49:25 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_Low ;//High; /*AOE=1*/ TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable; //自动输出使能 TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure); //TIM2->BDTR |=1<<14; //AOE???1 TIM_SelectInputTrigger(TIM1, TIM_TS_ITR1); // TIM1->SMCR |=0x0010; /*trigger interrupt enable*/ TIM1->DIER |=0x0040;//set TIE TIM_Cmd(TIM1,ENABLE); //TIM1->CR1 |= 0x0001;

TIM_CtrlPWMOutputs(TIM1, ENABLE);//MOE位置1 //TIM1->BDTR|=1<<15; }

// 启动TIM1和TIM2定时器 void start(void) { /*Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled*/ TIM1->SMCR |=0x0016; //开TIM1计数器触发 /*Trigger interrupt enabled*/ TIM1->DIER |=0x0040; //开TIM1触发中断 // huan_xiang(); // /*Counter enable*/ TIM2->CR1|=0x0001; //开TIM2 /*Trigger and Update interrupt enabled*/ TIM2->DIER|=0x0041; //开TIM2中断 }

void huan_xiang() { step = GPIO_ReadInputData(GPIOA)&0x0007; if(direction_flag==MotorForwardFlag) { switch(step)//根据转子位置,决定CCER输出相位和转子偏移量 { case 0x06: { /*0011 0100 0010 0000 reset CC3NP CC3P CC3E CC2NP CC2NE CC2E CC1NP CC1NE CC1P CC1E set CC2P OC2 active low,set CC3NE OC3N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS3, OIS3N and CC3E bits set CC4P OC4 active low,set CC4E OC4 signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS4, OIS4N and CC4NE bits */ TIM1->CCER =0x3420;// };

第 21 页

break; case 0x04: { /*0011 0000 0010 0100 set CC2P OC2 active low,set CC1NE OC1N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS1, OIS1N and CC1E bits set CC4P OC4 active low,set CC4E OC1 signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS4, OIS4N and CC4NE bits */ TIM1->CCER =0x3024;// }; break; case 0x05: { /*0011 0010 0000 0100 set CC3P OC3 active low,set CC1NE OC1N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS1, OIS1N and CC1E bits set CC4P OC4 active low,set CC4E OC1 signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS4, OIS4N and CC4NE bits */ TIM1->CCER =0x3204;// }; break; case 0x01: { /*0011 0010 0100 0000 set CC3P OC3 active low,set CC2NE OC2N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS2, OIS2N and CC2E bits set CC4P OC4 active low,set CC4E OC1 signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS4, OIS4N and CC4NE bits */ TIM1->CCER =0x3240;// }; break; case 0x03: { /*0011 0000 0100 0010 set CC1P OC3 active low,set CC2NE OC2N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS2, OIS2N and CC2E bits set CC4P OC4 active low,set CC4E OC1 signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS4, OIS4N and CC4NE bits */ TIM1->CCER =0x3042;// };

第 22 页

break; case 0x02: { /*0011 0100 0000 0010 set CC1P OC1 active low,set CC3NE OC3N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS3, OIS3N and CC3E bits set CC4P OC4 active low,set CC4E OC1 signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS4, OIS4N and CC4NE bits */ TIM1->CCER =0x3402;// }; break; } } else//倒转 { switch(step) { // case 0x06: { TIM1->CCER =0x3420; // 3?2 }; break; case 0x04: { TIM1->CCER =0x3024; // 3?6 }; break; case 0x05: { TIM1->CCER =0x3204; // 1?6 }; break; case 0x01: { TIM1->CCER =0x3240; // 1?4 }; break; case 0x03: { TIM1->CCER =0x3042; };

第 23 页

break; case 0x02: { TIM1->CCER =0x3402; }; break; default: { TIM1->CCER =0x0000; } break; } } }

//定时器2采集霍尔信号,产生六步换向的触发中断条件 void TIM2_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_HALLTimeBaseInitStructure; TIM_ICInitTypeDef TIM_HALLICInitStructure; TIM_OCInitTypeDef TIM_HALLOCInitStructure; /*Deinitializes the TIM2 peripheral registers to their default reset values */ TIM_DeInit(TIM2); /*Fills each TIM_TimeBaseInitStruct member with its default value Set the default configuration TIM_TimeBaseInitStruct->TIM_Period = 0xFFFF; TIM_TimeBaseInitStruct->TIM_Prescaler = 0x0000; TIM_TimeBaseInitStruct->TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStruct->TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStruct->TIM_RepetitionCounter = 0x0000; */ TIM_TimeBaseStructInit(&TIM_HALLTimeBaseInitStructure); // Set full 16-bit working range TIM_HALLTimeBaseInitStructure.TIM_Period = 65535;//TIM2_ARR=65535 //PSC预分频 计数器的时钟频率CK_CNT=fck_psc/(psc[15:0]+1) 1MHz TIM_HALLTimeBaseInitStructure.TIM_Prescaler = 71;//1us计数1 TIM_HALLTimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//CR1 向上计数 TIM_HALLTimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;//CR1 定时器时钟频率和数字滤波器使用的采样频率之间的分频比例 /*每次从零开始计数时,产生更新事件(UEV)*/ TIM_HALLTimeBaseInitStructure.TIM_RepetitionCounter = 0;//RCR TIM_TimeBaseInit(TIM2,&TIM_HALLTimeBaseInitStructure); /*Fills each TIM_ICInitStruct member with its default value Set the default configuration

第 24 页

搜索更多关于: 无刷直流电动机 - 图文 的文档
无刷直流电动机 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3mkil9np0i7wp9920t0r_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top