请选择 进入手机版 | 继续访问电脑版
搜索
查看: 3078|回复: 2

[原创] 【STM32电机培训】- 实验4:基于MCSDK5.0 状态的切换

[复制链接]

该用户从未签到

100

主题

1255

帖子

191

蝴蝶豆

论坛元老

最后登录
2024-1-26
发表于 2018-9-1 22:40:26 | 显示全部楼层 |阅读模式
本帖最后由 TLLED 于 2018-9-1 22:40 编辑

实验4:基于MCSDK5.0 状态的切换。
一、实验内容要求如下:
5.png
1.png
2.png
3.png
4.png

二、实验代码修改:
修改main.c代码,修改的部分如下(红色字体)
int main(void)
{
  /* USER CODE BEGIN 1 */
  State_t  ste;     //定义变量
  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ADC1_Init();
  MX_DAC_Init();
  MX_TIM1_Init();
  MX_USART2_UART_Init();
  MX_MotorControl_Init();

  /* Initialize interrupts */
  MX_NVIC_Init();
  /* USER CODE BEGIN 2 */
  MC_StartMotor1();                                                       //启动电机
  HAL_Delay(1000);
  MC_ProgramSpeedRampMotor1(3000/6,1000);  //正转3000转
  HAL_Delay(10000);                                                      //延时10s
  MC_ProgramSpeedRampMotor1(-3000/6,1000);    //反转3000转
  HAL_Delay(2000);

  /* USER CODE END 2 */


  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    ste=MC_GetSTMStateMotor1();             //获取电机任务状态
    if(ste==FAULT_OVER)                              //电机报错
    {
      MC_AcknowledgeFaultMotor1();           //清除故障
      
    }
    else if(ste == IDLE)                                  //恢复故障后,电机负3000转运行
    {
      MC_StartMotor1();
      MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000);
    }

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
    //State t sts_motor1 = MCI_GetSTMStateMotor1();
    //STM_GetFaultState(&STM[M1]);


  }
  /* USER CODE END 3 */

}


三、执行结果:
6.png
7.png







回复

使用道具 举报

该用户从未签到

1492

主题

2703

帖子

0

蝴蝶豆

管理员

最后登录
2021-5-11
发表于 2018-9-11 14:28:44 | 显示全部楼层
谢谢分享
回复

使用道具 举报

该用户从未签到

2

主题

48

帖子

0

蝴蝶豆

高级会员

最后登录
2021-8-10
发表于 2020-12-30 17:22:30 | 显示全部楼层
好尴尬啊,为啥我的出不了故障,只添加了
  1.   /* USER CODE BEGIN 2 */
  2.                         
  3.   MC_ProgramSpeedRampMotor1(3000/6,1000);  
  4.         MC_StartMotor1();  
  5.   HAL_Delay(5000);                        
  6.   MC_ProgramSpeedRampMotor1(-3000/6,1000);
  7.   
  8.   /* USER CODE END 2 */
复制代码

可以顺利切换,从3000到-3000...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-3-29 22:42 , Processed in 1.172247 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表