#include "stm8s.h" void HW_Init(void) { //时钟设置 CLK_DeInit(); CLK_HSICmd(ENABLE); //配置内部高速时钟 CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); //内核1分频 CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV8); //时钟8分频 //GPIO GPIO_DeInit(GPIOD); GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_IN_FL_IT); //PD4 KEY EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD, EXTI_SENSITIVITY_FALL_ONLY); GPIO_DeInit(GPIOC); GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_IN_PU_IT); //PC3 INT2 EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY); GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_IN_PU_IT); //PC7 INT7 EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY); GPIO_DeInit(GPIOB); GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_OD_HIZ_FAST); //SCL GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_OD_HIZ_FAST); //SDA //TIM4 TIM4_DeInit(); TIM4_TimeBaseInit(TIM4_PRESCALER_8, 255); //1ms TIM4_ClearFlag(TIM4_FLAG_UPDATE); TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE); TIM4_Cmd(ENABLE); //TIM1 TIM1_DeInit(); TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 999, 0); TIM1_OC1Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_DISABLE, 800, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_RESET, TIM1_OCNIDLESTATE_SET); //PWM1模式,输出使能,不互补,占空比800, 输出极性高,空闲低电平 TIM1_Cmd(ENABLE); //TIM2 TIM2_DeInit(); TIM2_TimeBaseInit(TIM2_PRESCALER_1, 999); TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 200, TIM2_OCPOLARITY_LOW); TIM2_OC1PreloadConfig(ENABLE); TIM2_OC2Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 200, TIM2_OCPOLARITY_LOW); TIM2_OC2PreloadConfig(ENABLE); TIM2_OC3Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 200, TIM2_OCPOLARITY_LOW); TIM2_OC3PreloadConfig(ENABLE); TIM2_ARRPreloadConfig(ENABLE); TIM2_Cmd(ENABLE); //ADC GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_IN_FL_NO_IT); //Light_in,ch5 GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT); //Vin,ch6 GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT); //Chg_in,ch2 ADC1_DeInit(); ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_2, ADC1_PRESSEL_FCPU_D2, \ ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL5,\ DISABLE); ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_5, ADC1_PRESSEL_FCPU_D2, \ ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL5,\ DISABLE); ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_6, ADC1_PRESSEL_FCPU_D2, \ ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL6,\ DISABLE); ADC1_ITConfig(ADC1_IT_AWS2, ENABLE); ADC1_ITConfig(ADC1_IT_AWS5, ENABLE); ADC1_ITConfig(ADC1_IT_AWS6, ENABLE); /* Enable general interrupts */ enableInterrupts(); }