初级会员

- 积分
- 150
- 金钱
- 150
- 注册时间
- 2018-1-19
- 在线时间
- 20 小时
|
5金钱
static void BLDC_TIMx_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
/* 定时器基本参数时钟 */
TIM_TimeBaseStructure.TIM_Period = BLDC_TIM_PERIOD;
/* 设置预分频:不预分频,即为72MHz */
TIM_TimeBaseStructure.TIM_Prescaler = BLDC_TIM_PRESCALER;
/* 设置时钟分频系数:不分频(这里用不到) */
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;
/* 向上计数模式 */
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
/* 重复计算器 */
TIM_TimeBaseStructure.TIM_RepetitionCounter = BLDC_TIM_REPETITIONCOUNTER;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
/* 定时器输出通道1模式配置 */
/* 模式配置:PWM模式1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
/* 输出状态设置:使能输出 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
/* 互补通道输出状态设置:使能输出 */
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
/* 设置跳变值,当计数器计数到这个值时,电平发生跳变 */
TIM_OCInitStructure.TIM_Pulse = 0;
/* 当定时器计数值小于CCR1_Val时为高电平 */
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OCNPolarity= TIM_OCNPolarity_High;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
/* 初始化定时器通道1输出PWM */
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
/* 定时器输出通道2模式配置 */
/* 设置通道2的电平跳变值,输出另外一个占空比的PWM */
TIM_OCInitStructure.TIM_Pulse = 0;
/* 初始化定时器通道2输出PWM */
TIM_OC2Init(TIM1, &TIM_OCInitStructure);
/* 定时器输出通道3模式配置 */
/* 设置通道3的电平跳变值,输出另外一个占空比的PWM */
TIM_OCInitStructure.TIM_Pulse = 0;
/* 初始化定时器通道3输出PWM */
TIM_OC3Init(TIM1, &TIM_OCInitStructure);
/* Automatic Output enable, Break, dead time and lock configuration*/
TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;
TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;
TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;
TIM_BDTRInitStructure.TIM_DeadTime = 5;
TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;
TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;
TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);
TIM_OC3PreloadConfig(TIM1,TIM_OCPreload_Enable);
/* 使能定时器重载寄存器ARR */
TIM_ARRPreloadConfig(TIM1, ENABLE);
/* 使能定时器 */
TIM_Cmd(TIM1, ENABLE);
/* TIM主输出使能 */
TIM_CtrlPWMOutputs(TIM1, ENABLE);
TIM_CCxCmd(TIM1,TIM_Channel_1,TIM_CCx_Disable);
TIM_CCxNCmd(TIM1,TIM_Channel_1,TIM_CCxN_Disable);
TIM_CCxCmd(TIM1,TIM_Channel_2,TIM_CCx_Disable);
TIM_CCxNCmd(TIM1,TIM_Channel_2,TIM_CCxN_Disable);
TIM_CCxCmd(TIM1,TIM_Channel_3,TIM_CCx_Disable);
TIM_CCxNCmd(TIM1,TIM_Channel_3,TIM_CCxN_Disable);
}
存在问题有两个:
1.这样初始化后的引脚通道输出都为0,我想将初始化后的引脚通道都为1,怎么设置?
2.在程序使用中,可以通过TIM_CCxNCmd(TIM1,TIM_Channel_3,TIM_CCxN_Disable);失能,将两个引脚都置为0;想要将都为1,两个都使能Enable,却只有CH1为0,CH1N为1,这样怎么修改?
|
最佳答案
查看完整内容[请看2#楼]
1.这样初始化后的引脚通道输出都为0,我想将初始化后的引脚通道都为1,怎么设置?
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Set;
|