/******************** (C) COPYRIGHT 2023 GeekRebot *****************************
* File Name          : bsp_sys.c
* Current Version    : V1.0  & ST 3.5.0
* Author             : zhanli 719901725@qq.com
* Date of Issued     : 2023.04.06 zhanli: Create
* Comments           : 初始化所有外设
********************************************************************************/
#include "bsp_sys.h"

/**----------------------------------------------------------------------
* Function    : System_Init
* Description : GeekRebot外设初始化
* Author      : zhanli&719901725@qq.com
* Date        : 2023/04/22 zhanli
*---------------------------------------------------------------------**/
void System_Init(void)
{	
	Delay_Init(72);                 // 滴答时钟初始化
	NVIC_Config();                  // 中断配置配置初始化
	LED_GPIO_Config();              // LED初始化
	USART1_Init(115200);            // 串口初始化
	IIC_Init();                     // IIC模拟初始化	                                
	MOTO_GPIO_Init();               // 电机驱动IO配置
	MOTO_PWM_Init(3599,0);          // 电机的PWM频率初始化20KHz
	
	OLED_Init();
	OLED_Clear();
	OLED_ShowCHinese(0,0,2);                                 // 显示汉字 车
	OLED_ShowCHinese(16,0,3);                                // 显示汉字 速
	OLED_ShowString(88,0,(u8*)"m/min",16);                   // OLED第一行显示整体车速 单位m/min
	OLED_ShowString(0, 2,(u8*)"Left :    RPM",12);           // 显示左轮转  R单位RPM 表示每分钟车轮的圈数
	OLED_ShowString(0, 3,(u8*)"Right:    RPM",12);           // 显示右轮转  R单位RPM 表示每分钟车轮的圈数
	OLED_ShowString(0, 4,(u8*)"P:   I:   D:   ",16);         // 显示PID参数
	OLED_ShowString(0, 6,(u8*)"Set_C:    RPM",12);           // 显设置的车轮转速单位RPM
	OLED_ShowString(0, 7,(u8*)"Set_P:    m/min",12);         // 显设置的车轮转速单位RPM
	
	Encoder_Init_TIM2();
	TIM2 -> CNT=30000;
	Encoder_Init_TIM4();
	TIM4 -> CNT=30000;
	
	MOTO_PWM_Out(100, 100);
	
	Timer6_Init();          //最后启动定时器6
	Delay_ms(100);          //等待初始化完成
	
	int Moto_Left=500;    
	int Moto_Right=500;
	TIM3->CCR3 = Moto_Left;  //更新pwm
	TIM3->CCR4 = Moto_Right; //更新pwm
}