打印
[技术问答]

HK32F030MF4P6改变占空比问题

[复制链接]
2503|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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的小单,如果有合适的报价,也可以和我联系

使用特权

评论回复
评论
1737806855 2022-3-7 09:20 回复TA
电话 15935822678 
1737806855 2022-3-7 09:17 回复TA
哈喽,现在问题解决了准备小批量试产了吗,如有需要可以咨询一下我哈 Lb-Zeng 
板凳
szkevinchen|  楼主 | 2022-2-25 15:37 | 只看该作者
谢谢,是我自己的bug,搞定了

使用特权

评论回复
地板
tpgf| | 2022-3-7 16:11 | 只看该作者
下载运行过程中改变吗

使用特权

评论回复
5
qcliu| | 2022-3-7 16:27 | 只看该作者
哪里出现bug了呢

使用特权

评论回复
6
drer| | 2022-3-7 16:38 | 只看该作者
中间需要延时吗

使用特权

评论回复
7
tfqi| | 2022-3-7 16:45 | 只看该作者
生效周期是多少

使用特权

评论回复
8
nawu| | 2022-3-7 16:56 | 只看该作者
可以进行无缝更改吗

使用特权

评论回复
9
zljiu| | 2022-3-7 17:04 | 只看该作者
需要提前多久进行更改呢

使用特权

评论回复
10
gyzhuzicheng| | 2022-5-19 14:48 | 只看该作者
居然看不懂

使用特权

评论回复
11
sheflynn| | 2022-6-2 09:21 | 只看该作者
占空比的函数是哪个?

使用特权

评论回复
12
rosemoore| | 2022-6-2 11:11 | 只看该作者
HK32F030没有用过。   

使用特权

评论回复
13
1988020566| | 2022-6-2 11:55 | 只看该作者
重新初始化一下。

使用特权

评论回复
14
pl202| | 2022-6-2 20:11 | 只看该作者
这个参考一下例程吧

使用特权

评论回复
15
averyleigh| | 2022-6-7 11:41 | 只看该作者
更新的是哪个寄存器呢?

使用特权

评论回复
16
123嘿衣人| | 2022-6-10 15:42 | 只看该作者
需要开发资料包联系

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

23

帖子

2

粉丝