
实验5:开放性实验内容:按键B1调节电机转速,按下按键速度递增,速度达到设定的最大值后,再按键速度递减,速度达到设定的最小值后,再按键速度递增。同时通过软件STMStudio软件查看设定的速度变量。 一、软件程序 重新设置PC13端口为输入 ![]() 程序代码: int main(void) { /* USER CODE BEGIN 1 */ uint16_t speedcnt=0; uint8_t speedup=1; uint8_t speeddown=0; /* 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(2000/6,1000); HAL_Delay(10000); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { if(GPIO_PIN_RESET == HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)) { HAL_Delay(10); if(GPIO_PIN_RESET == HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)) { if(speedup==1) { speedcnt=speedcnt+100; if(speedcnt>14000) { speedup=0; speeddown=1; } } if(speeddown==1) { speedcnt=speedcnt-100; if(speedcnt<200) { speedup=1; speeddown=0; } } MC_ProgramSpeedRampMotor1((2000+speedcnt)/6,1000); } } HAL_Delay(100); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } 二、执行结果: ![]() STMStudio查看变量结果 ![]() ![]() ![]() ![]() ![]() ![]() ![]() STMStudio在线查看程序运行的是个不错的软件。 |
谢谢分享 |