123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #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();
- }
|