GD32篇 记录
一、GD32开发版程序设置读保护,防止程序被读取
二、GD32TIMER输出PWM
文章目录
- [GD32篇 记录](https://blog.csdn.net/qq_41930631/category_12031278.html)
- 前言
- 一、GD32F103 的TIMER特点
- 二、通用定时器 L0(TIMERx, x=1,2,3,4)
- 三、输出比较模式
-
- 配置步骤如下:
-
- timer_enable(TIMER1);
- timer_auto_reload_shadow_enable(TIMER1);
- timer_channel_output_config(TIMER1,TIMER_CH_1,&timer_ocintpara);//选择通道1
- timer_channel_output_pulse_value_config(TIMER1,TIMER_CH_1,500 );// 设置占空比50%
- timer_channel_output_mode_config(TIMER1,TIMER_CH_1,TIMER_OC_MODE_PWM0);
- timer_channel_output_shadow_config(TIMER1,TIMER_CH_1,TIMER_OC_SHADOW_DISABLE);
- 四、总结
前言
一、GD32F103 的TIMER特点
可以在中文手册里面找到相关的资料
二、通用定时器 L0(TIMERx, x=1,2,3,4)
简介
通用定时器L0(定时器1/2/3/4)是4通道定时器,支持输入捕获,输出比较,产生PWM信号控
制电机和电源管理。通用定时器L0计数器是16位无符号计数器。
通用定时器L0是可编程的,可以被用来计数,其外部事件可以驱动其他定时器。
定时器和定时器之间是相互独立,但是他们可以被同步在一起形成一个更大的定时器,这些定
时器的计数器一致地增加。
2.主要特征
总通道数:4; 计数器宽度:16位;
时钟源可选:内部时钟,内部触发,外部输入,外部触发;
多种计数模式:向上计数,向下计数和中央对齐计数;
正交编码器接口:被用来追踪运动和分辨旋转方向和位置;
霍尔传感器接口:用来做三相电机控制;
可编程的预分频器:16位,运行时可以被改变;
每个通道可配置:输入捕获模式,输出比较模式,可编程的PWM模式,单脉冲模式;
自动重装载功能;
中断输出和DMA请求:更新事件,触发事件,比较/捕获事件;
多个定时器的菊型链接使得一个定时器可以同时启动多个定时器;
定时器的同步允许被选择的定时器在同一个时钟周期开始计数;
定时器主/从模式控制器。
三、输出比较模式
在输出比较模式,TIMERx可以产生时控脉冲,其位置,极性,持续时间和频率都是可编程的。
当一个输出通道的CxCV寄存器与计数器的值匹配时,根据CHxCOMCTL的配置,这个通道的
输出可以被置高电平,被置低电平或者反转。当计数器的值与CxCV寄存器的值匹配时,CHxIF
位被置1,如果CHxIE = 1则会产生中断,如果CxCDE=1则会产生DMA请求。
配置步骤如下:
第一步:时钟配置:
配置定时器时钟源,预分频器等。
第二步:比较模式配置:
设置CHxCOMSEN位来配置输出比较影子寄存器;
设置CHxCOMCTL位来配置输出模式(置高电平/置低电平/反转);
设置CHxP/CHxNP位来选择有效电平的极性;
设置CHxEN使能输出。
第三步:通过CHxIE/CxCDE位配置中断/DMA请求使能。
第四步:通过TIMERx_CAR寄存器和TIMERx_CHxCV寄存器配置输出比较时基:
CxCV可以在运行时根据你所期望的波形而改变。
第五步:设置CEN位使能定时器。
代码如下:
void timer_config(void)
{
rcu_periph_clock_enable(RCU_GPIOA)