用按键控制电机转速 L298N模块使用程序
STM32单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "usart.h"
- #include "sys.h"
- #include "DCmotor.h"
- #include "exti.h"
- extern __IO uint32_t CaptureNumber;
- extern __IO uint16_t PWM_Duty;
- int main(void)
- {
- vu8 key=0;
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- LED_Init(); //LED端口初始化
- KEY_Init(); //初始化与按键连接的硬件接口
- uart_init(115200);
- LED0=0; //先点亮红灯
- EXTIX_Init(); //外部中断初始化
-
- /* 初始化定时器PWM输出 */
- DCMOTOR_BRUSH_TIMx_PWM_Init();
-
- /* 初始化编码器捕获,编码器对应TIM3_CH3:PB0引脚 */
- TIMx_DCmotor_ENCODER_Init();
-
- DCMOTOR_25GA370_Contrl(1,1,PWM_Duty);
-
- printf("PWM_Duty = %d.\r\n",PWM_Duty);
-
- while(1)
- {
- key=KEY_Scan(0); //得到键值
- printf("freq:%d\n",CaptureNumber); // 打印编码器捕获值
- printf("\r\n电机转速 = %f:\r\n",(float)CaptureNumber/34/11);
- CaptureNumber=0; // 清零,从零开始计数
- delay_ms(500);
-
- printf("IN while(1) PWM_Duty = %d.\r\n",PWM_Duty);
-
- // switch(key)
- // {
- // int num1 = 0, num2 = 0;
- //// printf("ENTER CASE\r\n");
- // case KEY2_PRES:
- // num1 += 1;
- // printf("KEY2 按了%d次\r\n",num1);
- // PWM_Duty += 50;
- // if(PWM_Duty > 1000)
- // {
- // PWM_Duty = 1000;
- // }
- // DCMOTOR_25GA370_Contrl(1,1,PWM_Duty);
- // printf("After KEY2 PWM_Duty = %d.\r\n",PWM_Duty);
- // break;
- //
- // case KEY1_PRES:
- // num2 += 1;
- // printf("KEY2 按了%d次\r\n",num2);
- // PWM_Duty -= 50;
- // if(PWM_Duty < 100)
- // {
- // PWM_Duty = 100;
- // }
- // DCMOTOR_25GA370_Contrl(1,1,PWM_Duty);
- // printf("After KEY1 PWM_Duty = %d.\r\n",PWM_Duty);
- // break;
- // default :break;
- // }
- }
- }
复制代码
所有资料51hei提供下载:
L298N模块使用demo(用按键控制电机转速).rar
(303.71 KB, 下载次数: 54)
|