[技术问答] HK32F030MF4P6改变占空比问题

[复制链接]
 楼主| szkevinchen 发表于 2022-2-24 00:23 | 显示全部楼层 |阅读模式
我原来使用stm32F103来做步进电机驱动,256细分都做好了,领导忽然说,要把CPU改成HK32F030MF4P6,做的过程占空比无法修改,问题如下:
步进电机细分需要不断改变占空比,比如这个周期内占空比是20,下一个周期的占空比是21,那么,我使用航顺的例程如下:
        /*配置TIMER*/
void TIM_Config(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  TIM_OCInitTypeDef  TIM_OCInitStructure;
        TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
        
  /* Time Base configuration */
  TIM_TimeBaseStructure.TIM_Prescaler = 0;//,CNTCLK=fck_PSC/(PSC[15:0]+1)
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseStructure.TIM_Period = 3200;//配置PWM频率为10KHZ
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

        
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

  /* Channel 1, 2,3 and 4 Configuration in PWM mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 1600;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Set;

  TIM_OC1Init(TIM1, &TIM_OCInitStructure);

  TIM_OCInitStructure.TIM_Pulse = 800;
  TIM_OC2Init(TIM1, &TIM_OCInitStructure);

  TIM_OCInitStructure.TIM_Pulse = 400;
  TIM_OC3Init(TIM1, &TIM_OCInitStructure);

//  TIM_OCInitStructure.TIM_Pulse = Channel4Pulse;
//  TIM_OC4Init(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 = 1;
  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_CCPreloadControl(TIM1, ENABLE);
        TIM_ITConfig(TIM1, TIM_IT_COM, ENABLE);
  /* TIM1 counter enable */
  TIM_Cmd(TIM1, ENABLE);

  /* TIM1 Main Output Enable */
  TIM_CtrlPWMOutputs(TIM1, ENABLE);
        
          /* Enable the TIM1 Trigger and commutation interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_TRG_COM_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);  

}
产生的占空比是正确的,示波器和逻辑分析仪测试输出波形符合软件设定,
我使用中断,在下一个周期,改变上面代码中的 TIM_OCInitStructure.TIM_Pulse 值,占空比没有变化,不知道,还有没有其他的地方要改变的。

那位大神能够指点一二,谢谢
 楼主| szkevinchen 发表于 2022-2-24 00:26 | 显示全部楼层
保底20K的小单,如果有合适的报价,也可以和我联系

评论

电话 15935822678  发表于 2022-3-7 09:20
哈喽,现在问题解决了准备小批量试产了吗,如有需要可以咨询一下我哈 Lb-Zeng  发表于 2022-3-7 09:17
 楼主| szkevinchen 发表于 2022-2-25 15:37 | 显示全部楼层
谢谢,是我自己的bug,搞定了
tpgf 发表于 2022-3-7 16:11 | 显示全部楼层
下载运行过程中改变吗
qcliu 发表于 2022-3-7 16:27 | 显示全部楼层
哪里出现bug了呢
drer 发表于 2022-3-7 16:38 | 显示全部楼层
中间需要延时吗
tfqi 发表于 2022-3-7 16:45 | 显示全部楼层
生效周期是多少
nawu 发表于 2022-3-7 16:56 | 显示全部楼层
可以进行无缝更改吗
zljiu 发表于 2022-3-7 17:04 | 显示全部楼层
需要提前多久进行更改呢
gyzhuzicheng 发表于 2022-5-19 14:48 | 显示全部楼层
居然看不懂
sheflynn 发表于 2022-6-2 09:21 | 显示全部楼层
占空比的函数是哪个?
rosemoore 发表于 2022-6-2 11:11 | 显示全部楼层
HK32F030没有用过。   
1988020566 发表于 2022-6-2 11:55 | 显示全部楼层
重新初始化一下。
pl202 发表于 2022-6-2 20:11 | 显示全部楼层
这个参考一下例程吧
averyleigh 发表于 2022-6-7 11:41 | 显示全部楼层
更新的是哪个寄存器呢?
123嘿衣人 发表于 2022-6-10 15:42 | 显示全部楼层
需要开发资料包联系
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

24

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部