#ifndef SN_PWM_H #define SN_PWM_H #include "ciu32f003_std.h" //手动修改定时器3的时基参数 #define TIM3_PRESCALER_VALUE 0x08 //设置定时器3的预分频系数 TIM3预分频参数范围为:0x0000~0x000F (是滤波时钟相关和计数时钟无关) #define TIM3_PERIOD_VALUE 4096u //设置定时器3的周期 #define TIM3_CLOCK_DTS_DIVx TIM_CLOCK_DTS_DIV1 //设置定时器3的分频系数 #define TIM3_CH_MOD0_16BIT_CH1_2 0u //工作模式 0,2 通道输入,2 通道输出模式,精度为 16bit #define TIM3_CH_MOD1_8BIT_CH1_1_2_3_4 1u //工作模式 1,2 通道输入,4 通道输出模式,精度为 8bit //手动修改定时器1的时基参数 #define TIM1_PERIOD_VALUE 4096u //设置定时器1的周期 #define TIM1_CLOCK_DTS_DIV1 TIM_CLOCK_DTS_DIV4 //设置定时器1的分频系数 (是死区时钟相关和计数时钟无关) #define TIM1_PRESCALER_VALUE 0x2E //设置高级定时器1的预分频系数 TIM1预分频参数范围为:0x0000~0xFFFF #define TIM_OUTPUT_MODE_PWM_x TIM_OUTPUT_MODE_PWM1 //设置PWM模式 #define TIM_OUTPUT_POL_x TIM_OUTPUT_POL_HIGH //通道输出有效极性 #define TIM_OUTPUT_NEGTIVE_POL_x TIM_OUTPUT_NEGTIVE_POL_HIGH //互补输出有效极性 #define TIM_OUTPUT_IDLE_x TIM_OUTPUT_IDLE_SET //通道输出空闲电平 #define TIM_OUTPUT_NEGTIVE_IDLE_x TIM_OUTPUT_NEGTIVE_IDLE_RESET //互补通道输出空闲电平 //通道编码 SN_PWM_TIM3_OUT_init #define TIM3_CH1_PA0 (uint16_t)0x0001 #define TIM3_CH3_PA3 (uint16_t)0x0002 #define TIM3_CH2_PA4 (uint16_t)0x0004 #define TIM3_CH1_PA5 (uint16_t)0x0008 #define TIM3_CH3_PA6 (uint16_t)0x0010 #define TIM3_CH2_PA7 (uint16_t)0x0020 #define TIM3_CH1_PB0 (uint16_t)0x0040 #define TIM3_CH4_PB4 (uint16_t)0x0080 #define TIM3_CH3_PB5 (uint16_t)0x0100 //通道编码 SN_PWM_TIM1_OUT_init #define TIM1_CH1_PA0 (uint16_t)0x0001 //af2 0 #define TIM1_CH2_PA1 (uint16_t)0x0002 //af2 1 #define TIM1_CH3_PA1 (uint16_t)0x0004 //af4 2 #define TIM1_CH2_PA5 (uint16_t)0x0008 //af2 3 #define TIM1_CH2_PB0 (uint16_t)0x0010 //af2 4 #define TIM1_CH4_PB1 (uint16_t)0x0020 //af4 5 #define TIM1_CH1_PB2 (uint16_t)0x0040 //af2 6 #define TIM1_CH3_PB2 (uint16_t)0x0080 //af4 7 #define TIM1_CH4_PB7 (uint16_t)0x0100 //af4 8 #define TIM1_CH2_PC1 (uint16_t)0x0200 //af2 9 //互补通道编码 SN_PWM_TIM1_OUT_init #define TIM1_CH2N_PA0 (uint16_t)0x0001 //af4 0 #define TIM1_CH3N_PA0 (uint16_t)0x0002 //af5 1 #define TIM1_CH3N_PA3 (uint16_t)0x0004 //af2 2 #define TIM1_CH2N_PA4 (uint16_t)0x0008 //af2 3 #define TIM1_CH1N_PB1 (uint16_t)0x0010 //af2 4 #define TIM1_CH2N_PB1 (uint16_t)0x0020 //af3 5 #define TIM1_CH1N_PB2 (uint16_t)0x0040 //af3 6 #define TIM1_CH3N_PB5 (uint16_t)0x0080 //af2 7 #define TIM1_CH1N_PB7 (uint16_t)0x0100 //af2 8 #define TIM1_CH2N_PB7 (uint16_t)0x0200 //af3 9 //再封装接口 uint8_t SN_PWM_TIM3_OUT_init(uint16_t CHANNEL,uint32_t Duty_value); //设置定时器3输出PWM通道 uint8_t SN_PWM_TIM1_OUT_init(uint16_t CHANNEL,uint32_t Duty_value); //设置定时器1输出PWM通道 void SN_PWM_TIMx_CH_Duty(TIM_t *timx,uint32_t TIM_CHANNEL_x ,uint32_t Duty_value); //设置PWM输出占空比 void SN_PWM_TIM3_CH_mode(uint8_t mod); //设置定时器3的pwm精度模式 void SN_PWM_TIM1_OUT_Complementary(uint16_t CHANNEL_N); //设置互补互补pwm通道引脚 void SN_TIM_PWM_Start(TIM_t *timx ,uint8_t TIM_CHANNEL_x); //使能PWM1互补通道输出 void SN_TIM_PWM_Stop(TIM_t *timx,uint8_t TIM_CHANNEL_x); //关闭PWM1互补通道输出 void SN_TIM1_OUT_Bleak(uint8_t IO); //刹车引脚设置 #define SN_TIM3_PWM_Deinit() { std_tim_deinit(TIM3) ; std_rcc_apb1_clk_disable(RCC_PERIPH_CLK_TIM3) } //定时器3去初始 #define SN_TIM1_PWM_Deinit() { std_tim_deinit(TIM1) ; std_rcc_apb2_clk_disable(RCC_PERIPH_CLK_TIM1) } //定时器1去初始 #endif