#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "Encoder.h" //编码器头文件
#include "pwm.h" //PWM配置头文件
#include "led.h"
#include "lcd.h"
#include "usmart.h" //USMART调试组件头文件
unsigned int run;
void set(unsigned int i)//USMART组件注册函数配置
{
TIM_SetCompare1(TIM14,i);//上位机调节PWM值控制转速
run=i;
}
int main(void)
{
uint32_t encoder; //定义编码值
float pulse; //定义电机实际脉冲值
float speed;
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init(168);
uart_init(115200);
usmart_dev.init(84); //调试组件初始化
LCD_Init();
LED_Init();
TIM14_PWM_Init(500-1,84-1); //电机PWM初始化
encoder_init();
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//配置转速电机方向TB6612FNG工作
//模式位
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOF,&GPIO_InitStructure);
GPIO_SetBits(GPIOF,GPIO_Pin_6 | GPIO_Pin_7|GPIO_Pin_5);
GPIO_ResetBits(GPIOF,GPIO_Pin_7);
while(1)
{
TIM_SetCompare1(TIM14,run);
encoder = read_cnt();
pulse = encoder/2;
speed = encoder/2/6.3/11;
LCD_ShowString(10,100,50,16,16,"encoder:");
LCD_ShowNum(90,100,encoder,5,16);
LCD_ShowString(10,130,50,16,16,"pulse:");
LCD_ShowNum(90,130,pulse,5,16);
LCD_ShowString(10,160,50,16,16,"speed:");
LCD_ShowNum(90,160,speed,5,16);
printf("encoder:%d \t speed:%lf rps \t",encoder,speed);//上位机显示编码值与转速
delay_ms(500);//延迟500ms
LED1=!LED1; //LED1闪烁
}
}
|
———————————————— 版权声明:本文为CSDN博主「三态门」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/m0_63741844/article/details/121446062