逐飞例程前置设定(其实没这一坨也行)
#define CHANNEL_NUMBER (4)
#define PWM_CH1 (ATOM1_CH5_P20_9)
#define PWM_CH2 (ATOM0_CH7_P20_8)
#define PWM_CH3 (ATOM0_CH3_P21_5)
#define PWM_CH4 (ATOM0_CH2_P21_4)
int16 duty = 0;
int16 duty_temp = 0;
uint8 channel_index = 0;
pwm_channel_enum channel_list[CHANNEL_NUMBER] = {PWM_CH1, PWM_CH2, PWM_CH3, PWM_CH4};
/******可能比较像32中cube的配置过程叭,这些命名渠道、引脚的事都是cube帮咱干好了
(温婉持家好cube()
******/
pwm_init(PWM_CH1, 17000, 0); // 初始化 PWM 通道 频率 17KHz 初始占空比 0%
原型:void pwm_init (pwm_channel_enum pwmch, uint32 freq, uint32 duty)
//-------------------------------------------------------------------------------------------------------------------
// 函数简介 PWM 初始化
// 参数说明 pin 选择 PWM 引脚
// 参数说明 freq 设置频率 同个模块只有最后一次设置生效
// 参数说明 duty 设置占空比
// 返回参数 void
// 使用示例 pwm_init(ATOM0_CH7_P02_7, 50, 1000); // ATOM 0模块的通道7 使用P02_7引脚输出PWM PWM频率50HZ 占空比百分之1000/PWM_DUTY_MAX*100
// 备注信息 PWM_DUTY_MAX宏定义在zf_driver_pwm.h 默认为10000
//-------------------------------------------------------------------------------------------------------------------
/*****这玩意功能搞得比较整合,相当于32中
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
+修改频率( TIM2->ARR = xxx + TIM2->PSC = xxx )
+修改占空比( __HAL_TIM_SetCompare(&htim5,TIM_CHANNEL_1,CCR);
或者直接上 TIM2->CCR2=TIM2->ARR*0.8; )
*****************/
pwm_set_duty(channel_list[channel_index], duty_temp);
原型:void pwm_set_duty (pwm_channel_enum pwmch, uint32 duty)
//-------------------------------------------------------------------------------------------------------------------
// 函数简介 PWM占空比设置
// 参数说明 pin 选择 PWM 引脚
// 参数说明 duty 设置占空比
// 返回参数 void
// 使用示例 pwm_set_duty(ATOM0_CH7_P02_7, 5000); // 设置占空比为百分之5000/PWM_DUTY_MAX*100
// 备注信息 GTM_ATOM0_PWM_DUTY_MAX宏定义在zf_driver_pwm.h 默认为10000
//-------------------------------------------------------------------------------------------------------------------
/******这个就相当于32中纯更改CCRx的过程了,同上“修改占空比”过程**********/
翻看"zf_driver_pwm.h",发现逐飞声明给用户使用的还有一个函数
void pwm_all_channel_close (void);
//-------------------------------------------------------------------------------------------------------------------
// 函数简介 关闭所有通道的PWM输出
// 返回参数 void
// 使用示例 pwm_all_channel_close();
// 备注信息
//-------------------------------------------------------------------------------------------------------------------
/**********盲猜32里其实也有类似的函数,不过因为其实只要把所有打开的pwm渠道的占空比调为0就可以实现相同的效果,所以几乎用不上,师兄也压根没有讲(笑),所以不知也罢************/