123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #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
|