ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

GD32F4定时器之单通道输出PWM

2021-12-06 18:33:32  阅读:346  来源: 互联网

标签:GD32F4 ocintpara initpara TIMER TIMER4 timer GPIO PWM 单通道


使用Timer4的CH1输出占空比50%,频率800KHz的PWM波形

 4 void TimerConfig(void)
 5 {
 6     timer_deinit(TIMER4);
 7     rcu_periph_clock_enable(RCU_GPIOA);
 8     rcu_periph_clock_enable(RCU_GPIOC);
 9     rcu_periph_clock_enable(RCU_TIMER4);
10 
11     timer_internal_clock_config(TIMER4);    //选择内部时钟CK_TIMER(200M)
12 16 
17     gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1);
18     gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1);
19     gpio_af_set(GPIOA, GPIO_AF_2, GPIO_PIN_1);
20 
21     /* TIMER1配置为0.1ms定时 */
22     timer_parameter_struct timer_initpara;
23 
24     timer_initpara.prescaler         = 4;
25     timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;//根据prescaler,clockdivision最终该定时器时钟评率为1M
26     timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;//触发方式设置根据边沿决定
27     timer_initpara.counterdirection  = TIMER_COUNTER_UP;//设置为上升沿触发
28     timer_initpara.period            = 49;//设置为0.1ms触发一次
29     timer_initpara.repetitioncounter = 0;
30     timer_init(TIMER4, &timer_initpara);
31     
32     /* TIMER的CH1配置为PWM输出:边触发,这样保证每0.1ms产生一次触发 */
33     timer_oc_parameter_struct timer_ocintpara;
34     
35     timer_ocintpara.ocpolarity  = TIMER_OC_POLARITY_HIGH;
36     timer_ocintpara.outputstate = TIMER_CCX_ENABLE;
37     timer_ocintpara.ocnpolarity  = TIMER_OCN_POLARITY_HIGH;
38     timer_ocintpara.outputnstate = TIMER_CCXN_DISABLE;
39     timer_ocintpara.ocidlestate  = TIMER_OC_IDLE_STATE_LOW;
40     timer_ocintpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
41     timer_channel_output_config(TIMER4,TIMER_CH_1,&timer_ocintpara);
42     
43     timer_channel_output_pulse_value_config(TIMER4, TIMER_CH_1, 25);
44     timer_channel_output_mode_config(TIMER4, TIMER_CH_1, TIMER_OC_MODE_PWM0);
45     timer_channel_output_shadow_config(TIMER4, TIMER_CH_1, TIMER_OC_SHADOW_DISABLE);
46 
47     /* 使能TIMERx_CAR寄存器的影子寄存器 */
48     timer_auto_reload_shadow_enable(TIMER4);
49     /* 所有通道输出使能 */
50     timer_primary_output_config(TIMER4, ENABLE);
51 
52     timer_enable(TIMER4);
53 
54     timer_interrupt_enable(TIMER4,TIMER_INT_UP);    
55 
56     return;
57 }

测量PA1,即可看到800KHz的PWM波形

标签:GD32F4,ocintpara,initpara,TIMER,TIMER4,timer,GPIO,PWM,单通道
来源: https://www.cnblogs.com/xjxcxjx/p/15651115.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有