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

STM32步进电机程序  

[复制链接]
yanghappy 发布时间:2011-3-13 13:05
阅读主题, 点击返回1楼
收藏 7 评论1161 发布时间:2011-3-13 13:05
1161个回答
zhangyalei 回答时间:2014-4-2 19:54:14

回复:STM32步进电机程序

thankyou
pctongx 回答时间:2014-4-2 20:43:07

回复:STM32步进电机程序

谢谢楼主  学习一下
bananagg 回答时间:2014-4-3 20:59:31

RE:STM32步进电机程序

发大水法送方色任务是
champtech 回答时间:2014-4-4 10:21:16

回复:STM32步进电机程序

看看和我的算法是否一致
champtech 回答时间:2014-4-4 10:34:28

回复:STM32步进电机程序

太骗人了,都没有算法
一休 回答时间:2014-4-7 21:31:53

回复:STM32步进电机程序

不错,想学习下。
hbhdan 回答时间:2014-4-8 13:53:11

RE:STM32步进电机程序

re
LLU 回答时间:2014-4-8 20:29:43

RE:STM32步进电机程序

1
lihuanhuan19940 回答时间:2014-4-8 21:55:06

回复:STM32步进电机程序

 谢谢楼主
h32446975 回答时间:2014-4-8 23:09:47

RE:STM32步进电机程序

看看。看看。看看。看看。看看。
h32446975 回答时间:2014-4-8 23:13:05

RE:STM32步进电机程序

#include"stm32f10x_lib.h"8 U& y$ N9 a0 a
GPIO_InitTypeDef GPIO_InitStructure;
& Q: r5 y  y, \2 S; oErrorStatus HSIStartUpStatus;5 ]0 z% [9 V0 Y. X% K; x
void NVIC_Configuration(void);' v( A# L5 {0 ^6 u
void RCC_Configuration(void);
+ _4 L- W3 `) m  x0 xvoid TIM2_Configuration(void);
2 @1 h/ ^# b* X( H5 Y; {# Zvoid GPIO_Configuration(void);
7 u; J, @* D1 j$ n- t6 e#define VECT_TAB_RAM
' A2 ?1 y" _+ }, j8 g' \" h% lint main(void)
4 c: s6 g; ^" Q" I{
$ t- D" e; t! G  #ifdef DEBUG# w: U5 w( s* {0 \. J
    debug();/*[初始化外围设备指针]*/. k; n1 E0 z. P8 C( {3 h
  #endif  o. H, P- \1 \. M5 O+ J* c
  RCC_Configuration(); //初始化时钟与复位  
0 a3 Y) \( `0 ?( U  NVIC_Configuration();//初始化中断嵌套" Q1 O0 J( W1 i6 Y' t0 V0 Z
  TIM2_Configuration();//初始化定时器
$ ]2 p. Y  T5 L0 a/ `% |  GPIO_Configuration();& l5 z6 L2 `) ?0 G  y4 ]* g; @8 C8 @
  
$ v" q1 I7 K( q) g* S% q! }- _  GPIO_WriteBit(GPIOD, GPIO_Pin_7, (BitAction)(0));
( k. [. A6 c0 i  S( P" U  GPIO_WriteBit(GPIOD, GPIO_Pin_6, (BitAction)(0));  //DCY1 DCY2为00,即Normal %0 DECAY
* }. f0 }5 F; o  o+ W  " X2 R2 ?8 n$ c+ n) s8 ~
  GPIO_WriteBit(GPIOE, GPIO_Pin_7, (BitAction)(1));% |- C2 N9 `: v  v; D3 h& p: m$ y8 w
  GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)(0));  //M1M2为10,即1-2-phase; e' S3 |- ^9 [  K$ ?- S8 ~4 L
  1 R/ X1 T7 k6 v8 `3 c$ p4 T
  GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)(0));  //正向旋转
1 o8 I) B: A" S& G- _  ! d, ^: W( b7 n" j7 e2 z
  GPIO_WriteBit(GPIOB, GPIO_Pin_0, (BitAction)(0));
# u4 @% x# I$ Y* ~* e6 F/ n4 h/ N  GPIO_WriteBit(GPIOC, GPIO_Pin_5, (BitAction)(1));  //TQ1 TQ2为01,即Current Ratio为50%
2 `' Q) p: |/ r. i( b! p0 H% y6 F  GPIO_WriteBit(GPIOA, GPIO_Pin_7, (BitAction)(1));  //StepReset位5 y" a! W0 o6 l" N; p
  GPIO_WriteBit(GPIOC, GPIO_Pin_4, (BitAction)(1));  //StepEn 使能位
  Y, M) _$ `$ o1 {) o* @  Z     
0 y7 |5 m% T1 d) S7 Z  while(1), l0 z" C0 d; p1 t' _7 ?% m$ y
  {
- q/ [/ |( o5 Q$ D4 p) B' s- j  }/ h  R; p7 [8 n0 z1 F
}5 Y! ?! Y3 k& {; g1 m  L
void GPIO_Configuration(void)   y: O" f  h* Z( H3 b+ e
{
5 ~* L) I0 N  e7 O4 G7 @* \% ]' [% y  GPIO_InitTypeDef GPIO_InitStructure;4 K8 l  T5 N+ W
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_7;   //PA的3.4.7接CLK,CW/CCW,StepReset
- D! w7 X. G* s' E9 k  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;. _4 }% x" H5 y/ ^  o
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;+ c/ R' W9 E# B2 E  c( `( R
  GPIO_Init(GPIOA,&GPIO_InitStructure);
! E6 U6 N- P5 ^+ q1 ?( g  GPIO_InitStructure.GPIO_Pin= GPIO_Pin_5 | GPIO_Pin_6;   //PA的6.7接Protect和Mo 4 a$ S& C4 K4 f/ Q2 }
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
- V6 W. c! M, F1 E  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
: }; x3 ?8 z( _2 B- ]) @5 Y8 m; \  GPIO_Init(GPIOA,&GPIO_InitStructure);& m0 Y0 @) _8 ?! D& Q" q7 {6 P5 z
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4 | GPIO_Pin_5;   //PC的4.5接StepEn和TQ2
, J6 [8 n: p8 B7 P- @" e6 z  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;4 [1 P( v3 `6 O# Y3 j, ?* G
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;. @; a4 T9 }* B9 r
  GPIO_Init(GPIOC,&GPIO_InitStructure);( B7 v* v/ e4 K4 y9 d* _4 N
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1;   //PB的0.1接TQ1和M2' r/ B# k7 G$ W5 c  c3 d' M3 w
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;" N' ^6 z" Z* p5 I; J7 k
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;7 U* m" d  u, |" x7 w: H* C
  GPIO_Init(GPIOB,&GPIO_InitStructure);, G+ C9 g7 h! z% t
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;   //PE7接M1
$ |) ^; ]. k% b, c0 N  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
* j# ]% O/ p- }5 M  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
9 @: y% H  {4 K& C  GPIO_Init(GPIOE,&GPIO_InitStructure);
! r- k, a$ D; g* w" _3 \' w" [/ U  : p0 T# t0 f* }1 P% O
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6 | GPIO_Pin_7;   //PD的67接DCY2和DCY1. c9 I& O6 s; x  P6 Q6 k
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
4 @2 d8 w, V. t  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
% i- ?8 |- @5 ^1 t  GPIO_Init(GPIOD,&GPIO_InitStructure);
7 C+ Q3 B& S: g}
7 k0 C" X  n7 ?, Yvoid NVIC_Configuration(void)
7 K# o: ?5 w* D6 Y1 x/ A8 P{
5 Q/ _# R% }4 B0 m0 {  NVIC_InitTypeDef NVIC_InitStructure;5 b( v9 l' A. K- o& V7 A# k* ]
  
9 ~8 w) {# @! Q#ifdef  VECT_TAB_RAM   ( O# ^6 F+ b5 F  {0 N
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); & P- r& d( `& E( g
#else
4 C. L. {5 I( ^: _( @$ ]: f  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   7 k/ y5 M8 w3 a
#endif. \* I4 s5 a/ Z. a, j7 w& N4 q
                                                     : a, a# n4 Y! [3 l) E( l- |1 Q9 D/ p
  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;  //设置TIM2通道输入中断
, Z, @6 J- {/ d9 ~8 Y5 |  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /*配置优先级组*/
! P4 m# J: [8 s1 }6 a- l  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  ' U4 d# ~3 E4 f0 ?3 @
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;      /*允许TIM2全局中断*/* c0 D6 J5 \5 V! t
  NVIC_Init(&NVIC_InitStructure);3 D5 x0 W4 p" ]4 G3 h
}
7 p+ o, R7 c8 e2 K& T' E2 Q* \void TIM2_Configuration(void)5 b, K4 ]' g+ O
{
( `/ C/ Q4 x, G& m% \4 b2 c8 F  TIM_SetCounter( TIM2, 0x0000);* [# R  v7 M5 h9 C! p( S6 e
  TIM_ClearFlag(TIM2, TIM_FLAG_Update);        /*清除更新标志位*/ 4 _& j1 ~  q, K5 [0 _8 H( K; x
  TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update); //清除TIM2等待中断更新中断标志位
0 E. y9 F8 d/ ^! A* I2 E. E: E( {2 X  TIM_ARRPreloadConfig(TIM2, ENABLE);        /*预装载寄存器的内容被立即传送到影子寄存器 */
4 h% [8 E3 c: M  TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //使能TIM2的更新   
& V) a6 u9 I- b# ^: P1 r  0 b: }. ]2 P  ^
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;( |) {) {- G, v5 s# G" @5 f
  TIM_TimeBaseStructure.TIM_Period = 120;        //设定的最大计数值,计数值到则产生一次中断1 A% D4 S- S/ }, B
  TIM_TimeBaseStructure.TIM_Prescaler = 30;     //分频3 m  @" h; _1 y, D
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;     // 时钟分割0 e0 {( V5 b6 J& C( d7 [6 C
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //计数方向向上计数4 K0 \0 h& L/ u5 }
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
; k' F5 P( f1 {& G% U  TIM_Cmd(TIM2, ENABLE);       //TIM2 enable counter
' `+ d: W& G: K# y: w6 C}
! F0 y% l$ V( L7 L& X' V$ ?void RCC_Configuration(void)
- H. k( G) @% G, K4 W$ P{
$ U& l$ ?8 z! v4 C1 s  
8 _' y/ o# F  V' K- V+ G) M          8 V! Y- t2 D# \% u
  RCC_DeInit();& q1 ^/ ]( N/ T9 X! U
  RCC_HSICmd(ENABLE);
0 a6 p6 w! k$ L% }' q! a  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC
! U- h  N+ h, y. A; q3 k% Y: y: h                                | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE,ENABLE);
0 z1 K) X* }5 {! e9 h4 G- h( N  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //在开启时钟里一定要打开TIM2的时钟  w5 b+ H4 R4 h" f
}
jennyzhaojie 回答时间:2014-4-9 09:41:47

RE:STM32步进电机程序

学习一下,如果介绍再详细些就更好了.
bevingeng 回答时间:2014-4-9 10:16:20

RE:STM32步进电机程序

正在写这方面的程序,look
生命即燃烧 回答时间:2014-4-10 21:06:38

回复:STM32步进电机程序

正在学习中,看看
蓝雪001 回答时间:2014-4-11 11:09:21

RE:STM32步进电机程序

RE:STM32步进电机程序
7 |2 V" @2 B6 ~6 @9 axiexiela

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版