1.gpio初始化

void gpio_config(void)
{/*使能GPIOA GPIOB 时钟*/rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_GPIOB);/*使能复用时钟*/rcu_periph_clock_enable(RCU_AF);/*pwm 输出GPIO 配置*/gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8);gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10);/*/*pwm 互补输出GPIO 配置*/*/gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13);gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_14);gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_15);
}

2.定时器基本配置

void timer_base_init()
{timer_parameter_struct timer_initpara;rcu_periph_clock_enable(RCU_TIMER0);timer_deinit(TIMER0);/* TIMER0 configuration */timer_initpara.prescaler         = 5400-1;timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;timer_initpara.counterdirection  = TIMER_COUNTER_UP;timer_initpara.period            = 16000-1;timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;timer_initpara.repetitioncounter = 0;timer_init(TIMER0,&timer_initpara);
}

3. 3路互补pwm输出配置

void timer_config(void)
{/* -----------------------------------------------------------------------TIMER0 configuration to:generate 3 complementary PWM signals with 3 different duty cycles:TIMER0CLK is fixed to systemcoreclock, the TIMER0 prescaler is equal to 5400 so the TIMER0 counter clock used is 20KHz.the three duty cycles are computed as the following description: the channel 0 duty cycle is set to 25% so channel 1N is set to 75%.the channel 1 duty cycle is set to 50% so channel 2N is set to 50%.the channel 2 duty cycle is set to 75% so channel 3N is set to 25%.----------------------------------------------------------------------- */timer_oc_parameter_struct timer_ocintpara;/* CH1,CH2 and CH3 configuration in PWM mode */timer_ocintpara.outputstate  = TIMER_CCX_ENABLE; //输出使能timer_ocintpara.outputnstate = TIMER_CCXN_ENABLE;//互补输出使能timer_ocintpara.ocpolarity   = TIMER_OC_POLARITY_HIGH;//输出极性为高timer_ocintpara.ocnpolarity  = TIMER_OCN_POLARITY_HIGH;//互补输出极性为高timer_ocintpara.ocidlestate  = TIMER_OC_IDLE_STATE_LOW;//空闲输出电平timer_ocintpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;//互补空闲输出电平timer_channel_output_config(TIMER0,TIMER_CH_0,&timer_ocintpara);timer_channel_output_config(TIMER0,TIMER_CH_1,&timer_ocintpara);timer_channel_output_config(TIMER0,TIMER_CH_2,&timer_ocintpara);timer_channel_output_pulse_value_config(TIMER0,TIMER_CH_0,3999);//设置比较寄存器值timer_channel_output_mode_config(TIMER0,TIMER_CH_0,TIMER_OC_MODE_PWM0);//输出模式为PWM0timer_channel_output_shadow_config(TIMER0,TIMER_CH_0,TIMER_OC_SHADOW_DISABLE);//关闭影子寄存器timer_channel_output_pulse_value_config(TIMER0,TIMER_CH_1,7999);timer_channel_output_mode_config(TIMER0,TIMER_CH_1,TIMER_OC_MODE_PWM0);timer_channel_output_shadow_config(TIMER0,TIMER_CH_1,TIMER_OC_SHADOW_DISABLE);timer_channel_output_pulse_value_config(TIMER0,TIMER_CH_2,11999);timer_channel_output_mode_config(TIMER0,TIMER_CH_2,TIMER_OC_MODE_PWM0);timer_channel_output_shadow_config(TIMER0,TIMER_CH_2,TIMER_OC_SHADOW_DISABLE);//高级定时器需要打开timer_primary_output_config(TIMER0,ENABLE);/* 自动重载使能 */timer_auto_reload_shadow_enable(TIMER0);timer_enable(TIMER0);
}

4. 测试函数

int main(void)
{gpio_config(); timer_base_init();timer_config();while (1);
}

12. GD32F103C8T6入门教程-定时器-3路pwm输出相关推荐

  1. 13. GD32F103C8T6入门教程-定时器-3路pwm输出-刹车死区保护

    1.gpio初始化 void gpio_config(void) {/*使能GPIOA GPIOB 时钟*/rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_ ...

  2. [控制基础] 定时器TIM的PWM输出+用积分思想分析PWM对直流减速有刷电机的控制(基于STM32F103+CubeMX+HAL)

    目录 解决的需求 一.高级定时器TIM1/TIM8 1.时基单元 2.更新操作与更新事件 3.与其他定时器的比较 ①.与其他定时器时基单元的比较 ②.与通用定时器的比较 4.CK_INT与CK_CNT ...

  3. 树莓派控制16路PWM输出的PCA9685模块

    树莓派控制16路PWM输出的PCA9685模块 1.PCA9685 1.1简介 采用I2C通信,内置了PWM驱动器和一个时钟,不需要不断发送信号占用单片机资源 支持16路PWM输出,每路12位分辨率( ...

  4. 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码

    树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 文章目录 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 一. Servo Driver ...

  5. STM32L475裸机例程学习 定时器中断和PWM输出实验

    定时器中断和PWM输出实验 所以阿-笔记的重要性哇!之前看过的内容在做后面的内容涉及到了发现没有笔记,看的时间太久远,竟然全部忘记了,真是个悲伤的故事:( 那就重来吧.由于这两个实验都跟TIM定时器关 ...

  6. ESP8266-SDK的3路PWM输出

    ESP8266的PWM和硬件定时器都是使用同一个中断定时器,所以同时只能使用一个,这点要注意 1.PWM的初始化 void pwm_init( uint32 period, uint8 *duty, ...

  7. STM32f103,TIM1,TIM2,TIM3,TIM4,TIM5,TIM8,4路PWM输出配置(保姆级)

    没什么可说的,想说的都写在注释里了,重要的事情说三遍:看注释,看注释,看注释 定时器的.c文件: /************************************************** ...

  8. 集成两路MAX1169的STC8G1K08模块,带有两路PWM输出

    ■ 设计背景 在 集成有MAX1169,MAX520的DAAC单片STC8G1K08机电路板 中设计了集成有MAX1169的ADDA模块,对于一些需要使用PWM驱动的实验,这款模块还无法进行集成实验. ...

  9. STM32定时器-6步PWM输出

    六步PWM输出 STM32的只有两个高级定时器TIM1与TIM8才能互补输出.这里我们说的六步PWM输出要用到互补输出,所以只有TIM1与TIM8才能实现.什么是六步PWM输出?下面就来解释下.当一个 ...

最新文章

  1. OpenCV中的快速特征检测——FAST(Features from Accelerated Segment Test)
  2. php虚拟键盘输入,[问题] bash下如何模拟键盘输入
  3. qt修改程序图标名称_解决Qt应用程序添加icon图标,修改窗口图标以及添加系统托盘问题...
  4. 谁拿了最多奖学金pascal程序
  5. FastDFS入门步骤
  6. CF140C-New Year Snowmen【优先队列】
  7. BZOJ4300 绝世好题
  8. 【2015年第4期】大数据时代的数据挖掘 —— 从应用的角度看大数据挖掘(上)...
  9. xboxones手柄驱动_微软Xbox One S全数字版再次发售,1043元
  10. v-html解析的相对地址img 显示不出来_还不懂java类加载机制的,建议看下这份阿里技术官总结的笔记!...
  11. JMeter使用总结
  12. Swift学习笔记八
  13. plsql配置连接远程数据库
  14. unique Signatures of Histograms for local surface description
  15. java 20段常用代码,你绝对用的到(二)
  16. CF 964C Alternating Sum
  17. 【GitHub】知识蒸馏从入门到精通
  18. SQLServer 2008数据库查看死锁、堵塞的SQL语句
  19. 二十二、Oracle学习笔记:Oracle异常
  20. 海康SDK/Ehome协议/RTSP协议/GB28181安防视频云服务EasyCVR前端音频采集流程介绍

热门文章

  1. Linux下matlab中文乱码,linux下安装的matlab无法显示中文,怎么办?求详细解答!谢谢!...
  2. Java 蓝桥杯 龟兔赛跑预测
  3. 当前微型计算机的主存储器可分为,当前微型计算机的主存储器可分为
  4. 借助neo4j-admin导入csv文件构建实体与联系
  5. docker导入与导出容器
  6. python 拆分list,按照对应位置重组
  7. mysql 大小写问题
  8. ThinkPHP文件上传
  9. ArcMAP获取要素的外包多边形
  10. C++ 模板何时被实例化