欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
stm32控制步進(jìn)電機(jī)源碼 給定不同頻率的脈沖、不同脈沖數(shù)達(dá)到兩個(gè)電機(jī)走速不同
[打印本頁(yè)]
作者:
jackice1989
時(shí)間:
2017-5-2 20:16
標(biāo)題:
stm32控制步進(jìn)電機(jī)源碼 給定不同頻率的脈沖、不同脈沖數(shù)達(dá)到兩個(gè)電機(jī)走速不同
stm32控制步進(jìn)電機(jī)源碼:
0.png
(57.44 KB, 下載次數(shù): 93)
下載附件
2017-5-2 23:42 上傳
stm32單片機(jī)源程序:
/*******************************************************************************
* 文件名 : main.c
* 作者 : jackice
* 時(shí)間 :2013/8/10
* 文件描述 : EN:PA.0 CLK:PA.1;DIR:PA.2
******兩個(gè)電機(jī)同時(shí)走動(dòng),可以通過(guò)給定不同頻率的脈沖、不同脈沖數(shù)達(dá)到兩個(gè)電機(jī)走速不同,走的距離不同************
**********134個(gè)脈沖 電機(jī)走1mm;1345個(gè)脈沖 電機(jī)走10mm;13450個(gè)脈沖電機(jī)走100mm;******
********************************************************************************/
/* 頭文件 ------------------------------------------------------------------*/
#include "stm32f10x_lib.h"
#define en0_0() GPIO_ResetBits(GPIOA , GPIO_Pin_0) //宏定義
#define en0_1() GPIO_SetBits(GPIOA , GPIO_Pin_0)
#define en1_0() GPIO_ResetBits(GPIOA , GPIO_Pin_4) //宏定義
#define en1_1() GPIO_SetBits(GPIOA , GPIO_Pin_4)
#define clk0_0() GPIO_ResetBits(GPIOA , GPIO_Pin_1)
#define clk0_1() GPIO_SetBits(GPIOA , GPIO_Pin_1)
#define clk1_0() GPIO_ResetBits(GPIOA , GPIO_Pin_5)
#define clk1_1() GPIO_SetBits(GPIOA , GPIO_Pin_5)
#define dir0_0() GPIO_ResetBits(GPIOA , GPIO_Pin_2)
#define dir0_1() GPIO_SetBits(GPIOA , GPIO_Pin_2)
#define dir1_0() GPIO_ResetBits(GPIOA , GPIO_Pin_3)
#define dir1_1() GPIO_SetBits(GPIOA , GPIO_Pin_3)
/* 自定義同義關(guān)鍵字 --------------------------------------------------------*/
/* 自定義參數(shù)宏 --------------------------------------------------------*/
/* 自定義函數(shù)宏 --------------------------------------------------------*/
/* 自定義變量 --------------------------------------------------------*/
/* 自定義函數(shù)聲明 --------------------------------------------------------*/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void delay(u32 i);
void motor_contrl(u32 Xsteps,u8 Xdirection,u16 Xspeed,u32 Ysteps,u8 Ydirection,u16 Yspeed,u32 setps);
/*******************************************************************************
* 函數(shù)名 : main
* 函數(shù)描述 : 無(wú)
* 輸入?yún)?shù) : 無(wú)
* 輸出結(jié)果 : 無(wú)
* 返回值 : 無(wú)
*******************************************************************************/
int main(void)
{
/* 設(shè)置系統(tǒng)時(shí)鐘 */
RCC_Configuration();
/* 設(shè)置GPIO端口 */
GPIO_Configuration();
/*打開(kāi)使能端*/
en0_1();
en1_1();
while(1)
{
motor_contrl(1,0,3,1,0,3,13450);
delay(100000);
motor_contrl(1,1,3,1,1,3,13450);
delay(100000);
}
}
/*******************************************************************************
* 函數(shù)名 : RCC_Configuration
* 函數(shù)描述 : 設(shè)置系統(tǒng)各部分時(shí)鐘
* 輸入?yún)?shù) : 無(wú)
* 輸出結(jié)果 : 無(wú)
* 返回值 : 無(wú)
*******************************************************************************/
void RCC_Configuration(void)
{
/* 定義枚舉類(lèi)型變量 HSEStartUpStatus */
ErrorStatus HSEStartUpStatus;
/* 復(fù)位系統(tǒng)時(shí)鐘設(shè)置*/
RCC_DeInit();
/* 開(kāi)啟HSE*/
RCC_HSEConfig(RCC_HSE_ON);
/* 等待HSE起振并穩(wěn)定*/
HSEStartUpStatus = RCC_WaitForHSEStartUp();
/* 判斷HSE起是否振成功,是則進(jìn)入if()內(nèi)部 */
if(HSEStartUpStatus == SUCCESS)
{
/* 選擇HCLK(AHB)時(shí)鐘源為SYSCLK 1分頻 */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* 選擇PCLK2時(shí)鐘源為 HCLK(AHB) 1分頻 */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* 選擇PCLK1時(shí)鐘源為 HCLK(AHB) 2分頻 */
RCC_PCLK1Config(RCC_HCLK_Div2);
/* 設(shè)置FLASH延時(shí)周期數(shù)為2 */
FLASH_SetLatency(FLASH_Latency_2);
/* 使能FLASH預(yù)取緩存 */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* 選擇鎖相環(huán)(PLL)時(shí)鐘源為HSE 1分頻,倍頻數(shù)為9,則PLL輸出頻率為 8MHz * 9 = 72MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* 使能PLL */
RCC_PLLCmd(ENABLE);
/* 等待PLL輸出穩(wěn)定 */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* 選擇SYSCLK時(shí)鐘源為PLL */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* 等待PLL成為SYSCLK時(shí)鐘源 */
while(RCC_GetSYSCLKSource() != 0x08);
}
/* 打開(kāi)APB2總線(xiàn)上的GPIOA時(shí)鐘*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
}
/*******************************************************************************
* 函數(shù)名 : GPIO_Configuration
* 函數(shù)描述 : 設(shè)置各GPIO端口功能
* 輸入?yún)?shù) : 無(wú)
* 輸出結(jié)果 : 無(wú)
* 返回值 : 無(wú)
*******************************************************************************/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 設(shè)置PA4,PA5,PA6,PA7口為推挽輸出,最大翻轉(zhuǎn)頻率為50MHz*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA , &GPIO_InitStructure);
}
/*******************************************************************************
* 函數(shù)名 : delay
* 函數(shù)描述 : 簡(jiǎn)單延時(shí)
* 輸入?yún)?shù) : i
* 輸出結(jié)果 : 無(wú)
* 返回值 : 無(wú)
*******************************************************************************/
void delay(u32 k)
{
u32 j,i;
for(i=k;i>0;i--)
for(j=300;j>0;j--);
}
/*******************************************************************************
* 函數(shù)名 : motor_contrl
* 函數(shù)描述 : 電機(jī)控制,X和Y方向
* 輸入?yún)?shù) : Xsteps,Xdirection,Xspeed,Ysteps,Ydirection,Yspeed,u32 steps
* 輸出結(jié)果 : 無(wú)
* 返回值 : 無(wú)
*******************************************************************************/
void motor_contrl(u32 Xsteps,u8 Xdirection,u16 Xspeed,u32 Ysteps,u8 Ydirection,u16 Yspeed,u32 steps)
{
u32 step,Xstep,Ystep;
if(Xdirection==1) //判斷向左還是向右
{
dir0_1(); //向右
}
else
{
dir0_0(); //向左
}
if(Ydirection==1) //判斷向上還是向下
{
dir1_1(); //向上
}
else
{
dir1_0(); //向下
}
for(step=steps;step>0;step--)
{
for(Xstep=Xsteps;Xstep>0;Xstep--) //給X軸電機(jī)脈沖數(shù),控制X軸電機(jī)走的距離
{
clk0_0();
delay(Xspeed); //給脈沖頻率,控制電機(jī)轉(zhuǎn)速,頻率越高速度越快,頻率越低速度越慢
clk0_1();
delay(Xspeed);
for(Ystep=Ysteps;Ystep>0;Ystep--) //給Y軸電機(jī)脈沖數(shù),控制Y軸電機(jī)走的距離
{
clk1_0();
delay(Yspeed); //給脈沖頻率,控制電機(jī)轉(zhuǎn)速,頻率越高速度越快,頻率越低速度越慢
clk1_1();
delay(Yspeed);
}
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
完整源碼下載:
dianji1.rar
(391.01 KB, 下載次數(shù): 256)
2017-5-2 20:16 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
minlee
時(shí)間:
2017-5-28 17:29
不錯(cuò) 下載學(xué)習(xí)學(xué)習(xí)
作者:
phil8199
時(shí)間:
2017-7-3 15:28
沒(méi)有黑幣怎么辦?有好人分享嗎?
作者:
黑boy
時(shí)間:
2017-8-12 05:39
謝謝 這對(duì)電賽很有幫助
作者:
haxiny
時(shí)間:
2017-10-11 17:44
正好需要這個(gè)。 最近一直在找控制步進(jìn)電機(jī)的程序。
作者:
ahai
時(shí)間:
2017-11-23 20:50
正需要這個(gè)例程 下載下來(lái)研究下
作者:
pcb_86
時(shí)間:
2018-1-23 13:49
沒(méi)有黑幣怎么辦?有好人分享嗎?
作者:
風(fēng)影朔人
時(shí)間:
2018-2-25 20:14
下載學(xué)習(xí),謝謝分享!
作者:
samxly
時(shí)間:
2018-3-2 19:36
非常不錯(cuò)
作者:
samxly
時(shí)間:
2018-3-2 19:37
正在學(xué)習(xí)
作者:
ljlkl1987
時(shí)間:
2018-3-20 17:49
HDX 好東西謝謝分享
作者:
ljlkl1987
時(shí)間:
2018-3-20 17:50
沒(méi)有黑幣怎么辦?有好人分享嗎?
作者:
hejianhuan
時(shí)間:
2018-3-22 17:05
在學(xué)習(xí)控制步進(jìn)電機(jī),謝謝分享!收下了。
作者:
tgh520
時(shí)間:
2018-3-24 17:51
下載學(xué)習(xí),謝謝分享!
作者:
wh249507631
時(shí)間:
2018-3-25 11:54
謝謝樓主分享
作者:
wuxishun
時(shí)間:
2018-4-6 12:33
謝謝分享
作者:
hiker
時(shí)間:
2018-4-18 09:14
下載學(xué)習(xí),謝謝分享!
作者:
esmember
時(shí)間:
2018-6-20 13:22
步進(jìn)電機(jī)是老大難啊.參考下,謝謝
作者:
asdfg221111
時(shí)間:
2018-6-25 23:36
感謝樓主分享,好好學(xué)習(xí)一下
作者:
onono
時(shí)間:
2018-8-9 11:55
查詢(xún)了一些資料,云里霧里的,學(xué)習(xí)一下。
作者:
Akon4
時(shí)間:
2018-8-9 14:52
真好在研究這塊,謝謝分享!
作者:
39815
時(shí)間:
2018-8-24 23:38
謝謝樓主的分享
作者:
goyhuan
時(shí)間:
2018-9-6 21:56
謝謝樓主無(wú)私奉獻(xiàn)
作者:
plj213
時(shí)間:
2019-3-27 20:31
謝謝樓主分享。。。。。。。。。
作者:
QEQWE123
時(shí)間:
2019-10-10 16:34
下載程序不動(dòng)彈啊...
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1