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

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"% O0 P7 v, T- o0 g* k& _
GPIO_InitTypeDef GPIO_InitStructure;
# `9 d8 _# A- X  w& y" d2 gErrorStatus HSIStartUpStatus;
; _; N2 c% f1 ]/ M+ ]void NVIC_Configuration(void);
/ m( [' Y& S; A+ Q* gvoid RCC_Configuration(void);
$ R# P+ n4 i+ lvoid TIM2_Configuration(void);
* U' B3 I9 e7 L9 b/ m4 jvoid GPIO_Configuration(void);
) O- u$ {& K0 Q+ ]) {; P#define VECT_TAB_RAM" J  H4 d/ d. i2 F
int main(void)- N' b# A* D3 z1 d8 p0 j* _2 g
{
' F& g1 \$ K2 e6 s# v; t  #ifdef DEBUG" _  ]8 R8 [3 ?
    debug();/*[初始化外围设备指针]*/
* j5 @( ~# m; c6 e: p4 n, X, m" ^  #endif, C9 ^, H- K, N8 V* x; r8 R! ], C
  RCC_Configuration(); //初始化时钟与复位  
7 Z$ {! q" r( R8 Y! s( j- S5 d  NVIC_Configuration();//初始化中断嵌套, O& Z  \# g) T5 X) V- M
  TIM2_Configuration();//初始化定时器
# p5 b$ @: m# T0 a: }- X  GPIO_Configuration();
5 |* E; k+ F4 |1 H2 }! @  " n& }, `9 y( {& k' o7 H
  GPIO_WriteBit(GPIOD, GPIO_Pin_7, (BitAction)(0));. U$ o6 }4 R; G4 |! N8 h# h, L7 b
  GPIO_WriteBit(GPIOD, GPIO_Pin_6, (BitAction)(0));  //DCY1 DCY2为00,即Normal %0 DECAY
* U! Q% ]; Q9 j, p% B3 X  " R* f( n- \; a1 `2 g" ]& p
  GPIO_WriteBit(GPIOE, GPIO_Pin_7, (BitAction)(1));) F! `2 F& m6 m& b2 Y2 p
  GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)(0));  //M1M2为10,即1-2-phase! f  O$ F5 O; T2 z5 f
  
9 h2 t" s. N6 @& T! b  GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)(0));  //正向旋转$ Q2 c3 D: i+ G% \7 c4 b1 V( D0 [
  
9 S) U! ~/ @! h8 s6 p0 ~  GPIO_WriteBit(GPIOB, GPIO_Pin_0, (BitAction)(0));
: ]# m  {6 I4 ~1 I  GPIO_WriteBit(GPIOC, GPIO_Pin_5, (BitAction)(1));  //TQ1 TQ2为01,即Current Ratio为50%* y" Y% h9 a( Q7 T2 Q
  GPIO_WriteBit(GPIOA, GPIO_Pin_7, (BitAction)(1));  //StepReset位# q% `" @1 M6 g( j
  GPIO_WriteBit(GPIOC, GPIO_Pin_4, (BitAction)(1));  //StepEn 使能位
3 E4 S8 e3 A7 L+ w9 Y     8 i2 P, ^3 Y8 I& S
  while(1)- U! q: z0 F! e4 p9 V
  {( ?' A+ t' {- h& r3 Y
  }
3 Q7 l( \7 ?; e9 C( M8 e}6 n# s8 m' `, S$ h) X+ y- X/ g, I
void GPIO_Configuration(void)
4 h1 j% J7 D2 Y, j8 U, t{
/ _& }6 M, }- {" o  GPIO_InitTypeDef GPIO_InitStructure;
3 X6 R$ x) r' g5 F  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_7;   //PA的3.4.7接CLK,CW/CCW,StepReset6 _# K" s  F; w8 T4 L2 V$ ?9 W( i, e- S
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
& J- Q; R+ O" M  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
8 B: d% @( W8 u: }; g  GPIO_Init(GPIOA,&GPIO_InitStructure);# A6 N6 j, d# C+ }
  GPIO_InitStructure.GPIO_Pin= GPIO_Pin_5 | GPIO_Pin_6;   //PA的6.7接Protect和Mo
2 j( m5 Y1 Q9 Q; t+ T) z  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
. f" h% i/ W, {& D9 {. h  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
# f2 _3 A, }) F! C2 M; B$ X  h  GPIO_Init(GPIOA,&GPIO_InitStructure);
  Q9 ?1 ^- k# l- b4 x7 `2 y  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4 | GPIO_Pin_5;   //PC的4.5接StepEn和TQ2
% x& C7 u' `' u- w$ _  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
* n* p7 H! w8 G  R  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;% v! y8 h6 q! W/ T8 }2 ?. \
  GPIO_Init(GPIOC,&GPIO_InitStructure);; F7 b6 e  `7 T
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1;   //PB的0.1接TQ1和M2
# _: C8 E) U' V8 H4 y) E7 M/ R  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
% {4 X" u4 g' [! `  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  b& T( e) Z9 C/ B% d) v9 @( i( I' P  GPIO_Init(GPIOB,&GPIO_InitStructure);
0 y# l5 q& l- f5 b9 t) s: v4 t9 N  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;   //PE7接M1   U1 G6 s8 S' C% ]/ j2 v8 L+ V
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;1 U; w( J& g' P, |& j$ d
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
$ ?# f0 {- D( X) ^5 p4 H  GPIO_Init(GPIOE,&GPIO_InitStructure);
: }1 }0 h* P$ P, E+ R  . X% \0 x5 d+ k" z  O
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6 | GPIO_Pin_7;   //PD的67接DCY2和DCY1
) `+ ]: }, ]$ x, p. `  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
* a+ T; i  i! h7 T) S) z5 W  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  D: X3 e1 {0 }# `  GPIO_Init(GPIOD,&GPIO_InitStructure);0 a. p+ R; ?9 z, g/ `- C) h( e% z
}
3 Z* k' M& o4 u0 M5 F% ?0 wvoid NVIC_Configuration(void)
' M7 _- I- e& p1 ]0 j( k% q* s{
+ U/ K0 |( s& X# Q1 R  NVIC_InitTypeDef NVIC_InitStructure;2 K  P2 s, o# m1 D
  
* B' C- ?. W# D#ifdef  VECT_TAB_RAM   
% @1 ?; d/ R1 n: I3 X5 u  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
8 F* n' t8 s# |5 O6 z5 e#else 7 y+ T6 t; t2 K! ?
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   ) O* L4 O1 I5 a0 q
#endif
, F4 P7 N" ]- R6 A                                                     ' v9 d2 Y$ I. l  \
  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;  //设置TIM2通道输入中断
8 G( k6 O4 I+ a2 N7 F+ e  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /*配置优先级组*/! z& ?; a# B- w8 I+ J
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  " v: G, h( L/ i
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;      /*允许TIM2全局中断*/
- }. B3 r3 W7 |6 e  NVIC_Init(&NVIC_InitStructure);
) v8 A# H8 R8 u. n  @4 b}+ V/ q  a( L: C* ^# G% Y9 x- B
void TIM2_Configuration(void)1 f& o# _" {1 S0 I
{
  ~8 ?9 _* s9 r7 B( y" S  TIM_SetCounter( TIM2, 0x0000);. a1 c5 L/ H) T) \3 C
  TIM_ClearFlag(TIM2, TIM_FLAG_Update);        /*清除更新标志位*/
1 _. L  [/ {. P' G9 I  TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update); //清除TIM2等待中断更新中断标志位
8 }; G/ S) s9 I2 b  TIM_ARRPreloadConfig(TIM2, ENABLE);        /*预装载寄存器的内容被立即传送到影子寄存器 */   d' W4 J! _9 ?
  TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //使能TIM2的更新    5 Y* I  G! X2 P0 W1 C
  ( P* C# O. H6 F$ e" L: d
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
" k2 G! ~9 s  R  TIM_TimeBaseStructure.TIM_Period = 120;        //设定的最大计数值,计数值到则产生一次中断
  C! H. |! D8 m* x. n  TIM_TimeBaseStructure.TIM_Prescaler = 30;     //分频
5 q% U( C. s( \3 A& @& g( {  TIM_TimeBaseStructure.TIM_ClockDivision = 0;     // 时钟分割
4 l2 ~# F# ^/ m& B  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //计数方向向上计数
- q' z9 o* `: ?  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);6 z) ?6 c5 f- Y7 w
  TIM_Cmd(TIM2, ENABLE);       //TIM2 enable counter
- `) p, \. b6 N! M" c}
  m9 f0 Z4 i4 P5 ^. i: Y  \9 Hvoid RCC_Configuration(void)+ s; y' |' {5 S, g$ `
{
8 p  l; c% S9 G' m. u  
& F. g" f& {5 A5 C: R. P, r1 @          5 X  A4 z9 ^; }- h3 c8 X8 X
  RCC_DeInit();
/ s. Z& n* e4 W3 u  RCC_HSICmd(ENABLE);
' G9 i; _" R  t$ b5 g1 O  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC7 g" \/ K. d; ~9 a3 t. ?
                                | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE,ENABLE); / [5 I% |( w3 E: k' p$ Z* ]5 M
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //在开启时钟里一定要打开TIM2的时钟
8 w# C+ b9 I( {0 `) N/ G}
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步进电机程序) v; }% Q* V  p. f! V6 y
xiexiela

所属标签

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