本帖最后由 巅峰残狼 于 2017-8-26 15:00 编辑 ; M2 F; K5 \, ]6 V6 O & w; K/ Q* m1 R! F 目的:学习ST的电机6步换向算法控制方法5 @5 U7 ?" d% d% c" ^8 ] ' f% ? F, \! v3 X 学前准备:) f! k# [6 X" m- r3 a 软件:ST电机软件包en.X-CUBE-SPN7(X-CUBE-SPN7) 硬件:P-NUCLEO-IHM002套件(含控制板+电机驱动板+电源适配器) 一、下载ST电机软件包en.X-CUBE-SPN74 h% `! M) A7 _3 M7 U( t! u 二、解压后,按照路径C:\Users\111\Desktop\ST社区电机资料下载\硬件\en.X-CUBE-SPN7\STM32CubeExpansion_SPN7_V1.1.0\Projects\Multi\Examples\MotorControl\MDK-ARM\STM32F302R8-Nucleo,这个路径下的工程就是基于STM32F302R8的6步换向算法的工程文件,打开工程结构如下:3 C. w. k! h# O 三、打开User下拉文件,即可看到此工程的main函数,我们即将在main函数中实现我们电机的简单控制. \% G' I" D4 u$ ] 四、先定义一个全局变量num,用来记录按键的次数,在main函数的用户代码区,写入如下代码: switch(num)7 `" ^3 }* A5 [5 A {: } ^1 B4 D6 M: d" z case 0: MC_StopMotor();//电机停止 break;+ M8 o4 ]6 `4 N, M; L* E case 1:7 W# K: u4 X& Z MC_StartMotor();//电机启动 break; case 2: MC_Set_Speed(3000);//设置电机速度值为3000转每分钟' \7 r, H$ h; E% ]. l r; q3 Q break;$ g) [% K4 G# q) K case 3: MC_Set_Speed(6000);//设置电机速度值为6000转每分钟' Q h( a' ]0 J6 K, Q- Q0 e6 m break; case 4:1 A' {# C. y& V. { MC_Set_Speed(9000);//设置电机速度值为9000转每分钟 break;4 U, R" z. N7 I- w3 K$ Q default:break; } 4 ]7 B9 E6 N" a : B( T& M' c2 ?' L1 J& \" } 在外部中断函数EXTI15_10_IRQHandler(void)中按照如下编辑) h% Z, L4 `; Z: n void EXTI15_10_IRQHandler(void)9 a) A/ c1 ~3 Q {2 s* X. {) B) e2 r /* USER CODE BEGIN EXTI15_10_IRQn 0 */( J- S$ H! w/ W /* USER CODE END EXTI15_10_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);//清除中断标志位 /* USER CODE BEGIN EXTI15_10_IRQn 1 */ num++;//每次中断加一,即没按下一次用户按键加一 if(num > 5)//当累加次数为5次时,记录值清零# y8 w, X4 l/ B* g& r% L { num=0;; I0 I6 r6 u1 W" d }, U' f$ h. Q' {& _6 {6 R ) w$ T# t9 g2 C: p4 Z /* USER CODE END EXTI15_10_IRQn 1 */ }6 p1 N/ D4 Y/ u+ R# n; F( a" S 五、上述程序编译后,下载到我们的控制板,给电机驱动板上电,电机连接好后,即可实验我们所要的功能,即 第一次按下:启动电机 第二次按下:电机速度设置为3000转/分钟 第三次按下:电机速度设置为6000转/分钟 第四次按下:电机速度设置为9000转/分钟" Y" `9 G6 I0 ^4 l9 N$ W- d 第五次按下:电机停止六、电机控制库,提供了关于电机的大部分控制函数,方便用户调用,即使对电机不甚熟悉,像我这种小白,也是很快就可以实现电机的转动控制,是不是相当方便? 9 O2 j& H5 p7 y, C ( r2 \* C) I3 l+ I# `1 u' b1 Q: P 9 T7 p- U/ ~) u; W+ P |
STM32F302R8-Nucleo.rar
下载6.29 MB, 下载次数: 884
请问 HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);//清除中断标志位 这个函数是在哪里定义的呢? |
没有程序 空壳一个 |
为何我打开后里面没有源码的了 |
多谢分享! |
!!!!!!!!!!!!!!!! |
谢谢分享 |
谢谢分享 |
谢谢楼主分享。谢谢 |
谢谢 |
mark |
不错啊,学习下6步换向算法# i: A* r. n/ ?. f* ]& \5 M# @ |
谢谢分享 下载了先保存 |
谢谢分享0 U$ {7 [! m* j2 Y& Y |
看看看,, |