#智能车项目(二)BSP初始化

void Bsp_Init(void)
{
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置为优先级组2

	USART1_Init(USART1_BAUDRATE);
	printf("\nFirmware Version: V%d.%d.%d\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH);
	printf("Firmware Compiled: %s, %s\r\n\n", __DATE__, __TIME__);/* 后面将显示最后编译的时间。 */
	#if SYS_CLK_OUT_PA8_EN
	sys_clc_opt_init();
	#endif
	
	#if ENABLE_USART2
	USART2_Init(USART2_BAUDRATE);
	#endif

	#if ENABLE_USART3
	USART3_Init(USART3_BAUDRATE);
	#endif

	#if ENABLE_UART4
	UART4_Init(UART4_BAUDRATE);
	#endif
	
	#if ENABLE_UART5
	UART5_Init(UART5_BAUDRATE);
	#endif

	LED_GPIO_Init();
	Beep_GPIO_Init();
	//Key_GPIO_Init();
	Adc_Init();

#if ENABLE_OLED
	IIC_Init();
	i2c_scanf_addr();
	SSD1306_Init();
#endif

	Flash_TestMode_Init();
	if (g_test_mode == MODE_TEST)
	{
		DEBUG("Start Test Mode\r\n");
		App_Test_Mode_Init();
	}
	else if (g_test_mode == MODE_STANDARD)
	{
		DEBUG("Start MPU9250 Init\r\n");
		MPU9250_Init(MODE_STANDARD);
	}
	else // =MODE_TEMP
	{
		OLED_Show_Waiting();
		MPU9250_Init(MODE_TEMP);
		Flash_Set_TestMode(MODE_STANDARD);
		delay_ms(100);
		Bsp_Reset_MCU();
	}

	RGB_Init();

	MOTOR_GPIO_Init();
	Motor_PWM_Init(MOTOR_MAX_PULSE, MOTOR_FREQ_DIVIDE);

	Encoder_Init();
	CAN_Config_Init(CAN_BAUD_1000Kbps);

	TIM7_Init();
	PwmServo_Init();

#if ENABLE_IWDG
	IWDG_Init();
#endif
}

// 重启单片机
void Bsp_Reset_MCU(void)
{
	printf("\r\nReset MCU\r\n");
	__set_FAULTMASK(1);/* 关闭所有中断 */
    NVIC_SystemReset();/* 复位 */
}
static void sys_clc_opt_init(void)
{
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
	
	
	GPIO_InitTypeDef GPIO_InitTstructure;
	GPIO_InitTstructure.GPIO_Pin=GPIO_Pin_8;
	GPIO_InitTstructure.GPIO_OType=GPIO_OType_PP;
	GPIO_InitTstructure.GPIO_Mode=GPIO_Mode_AF;
	GPIO_InitTstructure.GPIO_Speed=GPIO_Speed_100MHz;
	GPIO_InitTstructure.GPIO_PuPd=GPIO_PuPd_NOPULL;

	GPIO_Init(GPIOA,&GPIO_InitTstructure);
	
	GPIO_PinAFConfig(GPIOA,GPIO_PinSource8,GPIO_AF_MCO);
	
	RCC_MCO1Config(RCC_MCO1Source_PLLCLK,RCC_MCO1Div_4);
	

}

你可能感兴趣的:(智能小车项目,单片机)