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

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"- ^& B! S& m3 R! H
GPIO_InitTypeDef GPIO_InitStructure;" V  U0 N. F, O" n9 P$ O
ErrorStatus HSIStartUpStatus;7 H% N9 n# s; A' d! f% p
void NVIC_Configuration(void);" N* K2 I& k6 L5 [
void RCC_Configuration(void);
$ N5 c  _6 ^1 Y' Bvoid TIM2_Configuration(void);9 _3 j. M, I! ]4 r
void GPIO_Configuration(void);
% k0 ]" H/ B( P) g5 ]2 g# L% f#define VECT_TAB_RAM, y2 J+ u9 b9 Z" X
int main(void)2 Y% l: {: [; O! c
{
' W* p% K1 s3 \3 z- T* g' i  #ifdef DEBUG
& k  o* J: ?2 \5 z    debug();/*[初始化外围设备指针]*/1 `  s6 d: Z0 k
  #endif
' s# \4 r, i3 A; G4 q# w7 c  RCC_Configuration(); //初始化时钟与复位  3 O/ I; s/ k! I$ a
  NVIC_Configuration();//初始化中断嵌套
  O$ n) O9 g5 d3 S6 y; Z  TIM2_Configuration();//初始化定时器1 O4 O- l7 b8 z. o* R- g
  GPIO_Configuration();
6 V, s- [" C/ V' E$ @1 U( j: X, O7 O  
) K# z# S  u; f: j1 \  GPIO_WriteBit(GPIOD, GPIO_Pin_7, (BitAction)(0));7 }# @1 {. b5 s$ t: u, [2 O7 N) J
  GPIO_WriteBit(GPIOD, GPIO_Pin_6, (BitAction)(0));  //DCY1 DCY2为00,即Normal %0 DECAY8 a6 t/ c: z. C; O) |! e1 T' z
  
% U% b$ ^4 l  b  t  GPIO_WriteBit(GPIOE, GPIO_Pin_7, (BitAction)(1));
# \- D$ q1 \8 Q, I8 t  GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)(0));  //M1M2为10,即1-2-phase
% m6 {! x" H1 [1 C( P4 E. x8 u  
/ P2 O/ x+ C; N/ B5 L6 t  GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)(0));  //正向旋转
1 M2 S' N+ z; d& f' n% |  
% n4 |5 {% p' O# C4 E  GPIO_WriteBit(GPIOB, GPIO_Pin_0, (BitAction)(0));/ a! ?5 M% }5 M! Y# z( B; Q' I- k
  GPIO_WriteBit(GPIOC, GPIO_Pin_5, (BitAction)(1));  //TQ1 TQ2为01,即Current Ratio为50%
) i6 w1 ]! |5 D. O, C  GPIO_WriteBit(GPIOA, GPIO_Pin_7, (BitAction)(1));  //StepReset位
3 P) S$ z( \6 M: K1 O/ X  GPIO_WriteBit(GPIOC, GPIO_Pin_4, (BitAction)(1));  //StepEn 使能位5 g$ ?% m4 L) V& b9 @+ f6 v
     
$ G6 K: U7 V8 f7 ]; u  while(1)+ d9 ]( i; z3 ]2 {4 X; z% i
  {1 K1 G+ ~; w1 N+ w1 x! X
  }! e% J8 Z) i) l% X0 t( d
}
+ R8 N: R& J/ [0 xvoid GPIO_Configuration(void)
  l# _- |9 C' ^7 T{
3 T* W7 S% }6 {# s# b$ C. u) A+ @  GPIO_InitTypeDef GPIO_InitStructure;
# O( w3 L+ j+ [& ^! [  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_7;   //PA的3.4.7接CLK,CW/CCW,StepReset* e9 p  g: h" T! P7 T" u
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;0 w; y, f" {4 K0 T1 l* b
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
4 ?7 r, }" k9 s) L3 h- F/ E4 h9 c  GPIO_Init(GPIOA,&GPIO_InitStructure);( @4 ^. r, |% B  V: a
  GPIO_InitStructure.GPIO_Pin= GPIO_Pin_5 | GPIO_Pin_6;   //PA的6.7接Protect和Mo 6 ]; V$ C6 ]! [7 {" R( L4 F: [
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;, H. X3 o$ e) _2 i3 H8 a$ j
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;, R9 U! w/ O+ H4 _% G
  GPIO_Init(GPIOA,&GPIO_InitStructure);
" k0 L2 |  R: a5 f' }  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4 | GPIO_Pin_5;   //PC的4.5接StepEn和TQ2 ! Y0 T/ U. [* Z: h9 p6 A( v
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
6 I% Q: A$ n' y* T# z. x& x* v  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;: a/ x6 H- ^2 x: s6 I! `
  GPIO_Init(GPIOC,&GPIO_InitStructure);
6 u$ e' `# z$ @2 ~% g  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1;   //PB的0.1接TQ1和M22 x) k& n. l1 [' R: n2 M* i: R
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
( U1 H2 \8 [2 O  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/ i+ c  z5 N# T% h
  GPIO_Init(GPIOB,&GPIO_InitStructure);
* H8 S0 Y4 K0 _3 ^' @  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;   //PE7接M1 ! ?0 m( t' S. G) f* s
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;8 c2 u3 [! k+ l" J3 N7 X
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
9 Y- Y; j0 v& L- [) O' h$ ~  GPIO_Init(GPIOE,&GPIO_InitStructure);' D* O6 S  G& x
  
  t- E1 o0 \/ p$ A0 O( z3 @  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6 | GPIO_Pin_7;   //PD的67接DCY2和DCY1
3 H9 ?3 `3 g: a8 v( F% x7 e  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
% X% N5 k1 a# |2 _! e  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;' }2 M* t) V+ a, E- h
  GPIO_Init(GPIOD,&GPIO_InitStructure);, H$ Y& k# ^" r& ?. f
}   v0 K! t( x* g% Y
void NVIC_Configuration(void)
* O8 L" E, x$ S) p: v{5 F5 O2 E9 S* \, [3 l) m
  NVIC_InitTypeDef NVIC_InitStructure;
# i% w9 Y& z# s1 D3 u+ ~$ q  
* H7 f5 T8 |/ S6 m3 S3 p#ifdef  VECT_TAB_RAM   ) `) b5 D2 X4 Z
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
! T- u8 ?+ a8 c, L#else ; t/ ?4 U! q) d7 s( E( n5 e
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
) x1 v* c$ w! H% s/ z#endif
# }9 \6 ]8 ~" ~; M& J5 ^                                                     4 h( u/ c% N4 N  W4 N
  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;  //设置TIM2通道输入中断
8 E$ x0 e7 k' p# B" X( M4 _% l  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /*配置优先级组*/, x' l0 F0 b7 L1 U1 ~, y9 l
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  2 e9 F" \; ]3 q; n1 `- W7 O# A
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;      /*允许TIM2全局中断*/8 q3 D- c' k) B2 F3 P$ _
  NVIC_Init(&NVIC_InitStructure);
5 L+ |/ S9 f6 k8 |% U3 m7 x}7 ^1 D( V' x9 F' d9 v; K
void TIM2_Configuration(void)7 q* ?( A4 J+ j# O9 Q3 ]
{
/ }  K/ e$ f0 b: u) u' f- m$ z  TIM_SetCounter( TIM2, 0x0000);7 d& M' M  N! m9 s* @1 K9 J4 X
  TIM_ClearFlag(TIM2, TIM_FLAG_Update);        /*清除更新标志位*/
; |2 C" L/ t& M+ f! K- K7 g  TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update); //清除TIM2等待中断更新中断标志位
7 B7 p( S) X+ B. J  TIM_ARRPreloadConfig(TIM2, ENABLE);        /*预装载寄存器的内容被立即传送到影子寄存器 */
9 v, X: K& a$ c8 _  |1 C4 Q' D  TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //使能TIM2的更新    % ?5 Y( J+ X! ^& b$ e3 D( @: d
  $ E+ d/ y. E% `+ ]* b
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
0 _( w& r* \' M1 M5 b- @  TIM_TimeBaseStructure.TIM_Period = 120;        //设定的最大计数值,计数值到则产生一次中断
9 ~2 @+ w4 f* _* J  TIM_TimeBaseStructure.TIM_Prescaler = 30;     //分频
$ ]6 X- Z0 H7 ?3 e0 v* ~- g* h7 b& l  TIM_TimeBaseStructure.TIM_ClockDivision = 0;     // 时钟分割5 h# n8 N3 ?) f$ p9 d6 R7 @  u
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //计数方向向上计数# |3 H4 t8 M2 b/ v* M& r
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
5 X  c8 ]$ d( r5 i6 G" P  TIM_Cmd(TIM2, ENABLE);       //TIM2 enable counter
! O* Y" Q. S! U' v% v}
, _# J# Z+ D0 N0 J9 f8 Y9 Pvoid RCC_Configuration(void)# G: i8 j6 P" D( z2 y8 r% |
{7 }# b" ?- J& X' S: b& @
  
' n. I/ V7 F0 z; `5 I7 @- C& |: w          ; n8 j$ j' Y/ R( x7 t
  RCC_DeInit();
" a  d1 k" W5 d$ h; u" U  RCC_HSICmd(ENABLE);1 U. ^. Z7 D+ v9 D  C
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC! D" {2 w8 c+ E6 L$ J
                                | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE,ENABLE); % K7 y* V  t- [/ n6 x
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //在开启时钟里一定要打开TIM2的时钟
8 ~+ a' Z& S, a- V( x! S, F: _! s}
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步进电机程序
$ n8 r& I8 H7 [3 vxiexiela

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版