打印

GD32F310 常规定时器配置问题

[复制链接]
1889|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LKHZGD|  楼主 | 2024-6-9 07:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
哪位老师帮忙看看GD32f310的常规定时器配置14怎么没反应代码如下
void timer14_ConfigPWM(void)
{
   
    timer_oc_parameter_struct  timer_ocinitpara; //定义结构体
    timer_parameter_struct  timer_initpara;     //定义结构体

    /* 使能定时器时钟 */
     rcu_periph_clock_enable(RCU_TIMER14);
    //选择定时那一个定时器
    timer_deinit(TIMER14);
   
       timer_parameter_struct  timer_parameter_structuer;//定时器结构体
       timer_parameter_structuer.prescaler = 0;//预分频值;不分频
       timer_parameter_structuer.period = 2919;//周期
       timer_initpara.counterdirection  = TIMER_COUNTER_UP;  //计数方向
       timer_parameter_structuer.alignedmode = TIMER_COUNTER_EDGE; //对其模式
       timer_init(TIMER14,&timer_parameter_structuer);
   

    /* 配置定时器通道输出功能 */
     timer_ocinitpara.outputstate  = TIMER_CCX_ENABLE;                   //通道输出状态
         timer_ocinitpara.ocpolarity = TIMER_OCN_POLARITY_HIGH;             //信道互补输出极性较高
         timer_channel_output_config(TIMER14, TIMER_CH_0, &timer_ocinitpara);
     timer_channel_output_config(TIMER14, TIMER_CH_1, &timer_ocinitpara);
     timer_channel_output_config(TIMER14, TIMER_CH_2, &timer_ocinitpara);
         timer_channel_output_config(TIMER14, TIMER_CH_3, &timer_ocinitpara);



    timer_ocinitpara.outputnstate = TIMER_CCXN_DISABLE;                 //互补通道输出状态
    timer_ocinitpara.ocpolarity   = TIMER_OC_POLARITY_HIGH;             //通道输出极性
    timer_ocinitpara.ocnpolarity  = TIMER_OCN_POLARITY_HIGH;                        //互补通道输出极性
    timer_ocinitpara.ocidlestate  = TIMER_OC_IDLE_STATE_LOW;                        //空闲状态下通道输出
    timer_ocinitpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;           //空闲状态先互补通道输出极性
    timer_channel_output_config(TIMER14, TIMER_CH_0, &timer_ocinitpara);
    timer_channel_output_config(TIMER14, TIMER_CH_1, &timer_ocinitpara);
    timer_channel_output_config(TIMER14, TIMER_CH_2, &timer_ocinitpara);

    /* CH0 configuration in PWM mode0, duty cycle 25% */
    timer_channel_output_pulse_value_config(TIMER14, TIMER_CH_0, 585);//设置通道比较值 2919*20%=585
        timer_channel_output_pulse_value_config(TIMER14, TIMER_CH_1, 1169);//设置通道比较值2919*40%=1169
        timer_channel_output_pulse_value_config(TIMER14, TIMER_CH_2, 1753);//设置通道比较值2919*60%=1753
        timer_channel_output_pulse_value_config(TIMER14, TIMER_CH_3, 2336);//设置通道比较值2919*80%=2336
        
        timer_channel_output_mode_config(TIMER14, TIMER_CH_0, TIMER_OC_MODE_PWM0);
        timer_channel_output_mode_config(TIMER14, TIMER_CH_1, TIMER_OC_MODE_PWM0);
      timer_channel_output_mode_config(TIMER14, TIMER_CH_2, TIMER_OC_MODE_PWM0);
        timer_channel_output_mode_config(TIMER14, TIMER_CH_3, TIMER_OC_MODE_PWM0);

    timer_enable(TIMER14);
   
}
GPIO配置
  /*初始化PWM输出引脚 PB14,15(TIMER14 CH0) */
    gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE,GPIO_PIN_14|GPIO_PIN_15);
    gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_14|GPIO_PIN_15);
    gpio_af_set(GPIOB,GPIO_AF_0,GPIO_PIN_14|GPIO_PIN_15);

使用特权

评论回复
沙发
FranklinUNK| | 2024-6-20 18:48 | 只看该作者
跟st好像差不多

使用特权

评论回复
板凳
t1ngus4| | 2024-6-27 10:25 | 只看该作者
先看看你的MCU是否支持定时器14

使用特权

评论回复
地板
ex7s4| | 2024-6-27 11:35 | 只看该作者
编译的时候是完全通过的吗?

使用特权

评论回复
5
b5z1giu| | 2024-6-27 12:42 | 只看该作者
看看你的工程呗,编译看看,看看结果

使用特权

评论回复
6
w2nme1ai7| | 2024-6-27 13:55 | 只看该作者
我觉得定时器配置应该挺简单的, 你直接按照官方的例程配置就好

使用特权

评论回复
7
p0gon9y| | 2024-6-27 15:01 | 只看该作者
你可以用仿真的方式看看程序是否正确运行啊

使用特权

评论回复
8
y1n9an| | 2024-6-27 16:17 | 只看该作者
一般是不是你的定时器没使能呢?

使用特权

评论回复
9
su1yirg| | 2024-6-27 17:15 | 只看该作者
如果初始化部分没有的话,可能也就不能正确工作了哦

使用特权

评论回复
10
q1d0mnx| | 2024-6-28 08:02 | 只看该作者
你说的配置不对,是指哪里不对?运行错误了?

使用特权

评论回复
11
kaif2n9j| | 2024-6-28 10:00 | 只看该作者
是不是时钟配置不对,导致定时器没起来啊?

使用特权

评论回复
12
cen9ce| | 2024-6-28 11:12 | 只看该作者
话说GD没有可视化配置吗?其实可视化配置比较简单,而且还很快

使用特权

评论回复
13
wangtaohui| | 2024-7-31 22:11 | 只看该作者
确保RCU_TIMER14时钟已启用,并且你已经正确设置了所有相关时钟。你的代码中已经调用了rcu_periph_clock_enable(RCU_TIMER14)来启用时钟,这样应该是对的。

使用特权

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

本版积分规则

6

主题

14

帖子

0

粉丝