GD32F405RGT6定时器固件库(所有定时器的配置(12个))
GD32F405RGT6所有定时器的配置
GD32F4XXX系列拥有12个定时器,定时器的类型如下表:
一般我们可以根据定时器的作用以及类型选取合适的定时器,在这次对GD的单片机而言我就将它所拥有的12个定时器撸了一遍。通用定时器以及高级定时器的配置我都配置成为了PWM输出模式,对于其他功能的配置后续会持续更新。上代码:
1.定时器0(高级定时器):
void Timer0_Init(unsigned short arr, unsigned short psc)
{timer_oc_parameter_struct timer_ocintpara;timer_parameter_struct timer_initpara;rcu_periph_clock_enable(RCU_GPIOA);gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_8);gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_8);gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_8);rcu_periph_clock_enable(RCU_TIMER0);rcu_timer_clock_prescaler_config(RCU_TIMER_PSC_MUL4);timer_deinit(TIMER0);timer_initpara.prescaler = psc; timer_initpara.alignedmode = TIMER_COUNTER_EDGE; timer_initpara.counterdirection = TIMER_COUNTER_UP; timer_initpara.period = arr; timer_initpara.clockdivision = TIMER_CKDIV_DIV1;timer_initpara.repetitioncounter = 0; timer_init(TIMER0,&timer_initpara);timer_ocintpara.ocpolarity = TIMER_OC_POLARITY_HIGH;timer_ocintpara.outputstate = TIMER_CCX_ENABLE;timer_ocintpara.ocnpolarity = TIMER_OCN_POLARITY_HIGH;timer_ocintpara.outputnstate = TIMER_CCXN_DISABLE;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_pulse_value_config(TIMER0,TIMER_CH_0,arr/2);timer_channel_output_mode_config(TIMER0,TIMER_CH_0,TIMER_OC_MODE_PWM0);timer_channel_output_shadow_config(TIMER0,TIMER_CH_0,TIMER_OC_SHADOW_DISABLE);timer_auto_reload_shadow_enable(TIMER0);timer_enable(TIMER0);timer_interrupt_flag_clear(TIMER0,TIMER_INT_UP);timer_interrupt_enable(TIMER0, TIMER_INT_UP);nvic_irq_enable(TIMER0_UP_TIMER9_IRQn, 0, 2); }//中断服务函数
void TIMER0_UP_TIMER9_IRQHandler(void)
{if(timer_interrupt_flag_get(TIMER0,TIMER_INT_FLAG_UP) != RESET){timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_UP); }else if(timer_interrupt_flag_get(TIMER9,TIMER_INT_FLAG_UP) != RESET){timer_interrupt_flag_clear(TIMER9,TIMER_INT_FLAG_UP);}
}
2.定时器2:通用定时器
void Timer2_Init(unsigned short arr, unsigned short psc)
{timer_oc_parameter_struct timer_ocintpara;timer_parameter_struct timer_initpara;rcu_periph_clock_enable(RCU_GPIOC);gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_9);gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_9);gpio_af_set(GPIOC, GPIO_AF_1, GPIO_PIN_9);rcu_periph_clock_enable(RCU_TIMER2);rcu_timer_clock_prescaler_config(RCU_TIMER_PSC_MUL4);timer_deinit(TIMER2);timer_initpara.prescaler = psc; timer_initpara.alignedmode = TIMER_COUNTER_EDGE; timer_initpara.counterdirection = TIMER_COUNTER_UP; timer_initpara.period = arr; timer_initpara.clockdivision = TIMER_CKDIV_DIV1;timer_initpara.repetitioncounter = 0; timer_init(TIMER2,&timer_initpara);timer_ocintpara.ocpolarity = TIMER_OC_POLARITY_HIGH;timer_ocintpara.outputstate = TIMER_CCX_ENABLE;timer_ocintpara.ocnpolarity = TIMER_OCN_POLARITY_HIGH;timer_ocintpara.outputnstate = TIMER_CCXN_DISABLE;timer_ocintpara.ocidlestate = TIMER_OC_IDLE_STATE_LOW;timer_ocintpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;timer_channel_output_config(TIMER2,TIMER_CH_3,&timer_ocintpara);timer_channel_output_pulse_value_config(TIMER2,TIMER_CH_3,arr/2);timer_channel_output_mode_config(TIMER2,TIMER_CH_3,TIMER_OC_MODE_PWM0);timer_channel_output_shadow_config(TIMER2,TIMER_CH_3,TIMER_OC_SHADOW_DISABLE);timer_auto_reload_shadow_enable(TIMER2);timer_enable(TIMER2);timer_interrupt_flag_clear(TIMER2,TIMER_INT_UP);timer_interrupt_enable(TIMER2, TIMER_INT_UP);nvic_irq_enable(TIMER2_IRQn, 0, 4);
}//中断服务函数
void TIMER1_IRQHandler(void)
{if(timer_interrupt_flag_get(TIMER1,TIMER_INT_FLAG_UP) != RESET){timer_interrupt_flag_clear(TIMER1,TIMER_INT_FLAG_UP);}
}
3.基本定时器:定时器5
void Timer5_Init(unsigned short arr, unsigned short psc)
{timer_oc_parameter_struct timer_ocintpara;timer_parameter_struct timer_initpara;rcu_periph_clock_enable(RCU_TIMER5);rcu_timer_clock_prescaler_config(RCU_TIMER_PSC_MUL4);timer_deinit(TIMER5);timer_initpara.prescaler = psc; timer_initpara.alignedmode = TIMER_COUNTER_EDGE; timer_initpara.counterdirection = TIMER_COUNTER_UP; timer_initpara.period = arr; timer_initpara.clockdivision = TIMER_CKDIV_DIV1;timer_initpara.repetitioncounter = 0; timer_init(TIMER5,&timer_initpara);timer_auto_reload_shadow_enable(TIMER5);timer_enable(TIMER5);timer_interrupt_flag_clear(TIMER5,TIMER_INT_UP);timer_interrupt_enable(TIMER5, TIMER_INT_UP);nvic_irq_enable(TIMER5_DAC_IRQn, 0, 7);
}
定时器2、3、4、8、11、9、10、12皆为通用定时器,配置与定时器1大体相似。定时器6也是基本定时器,其中配置与定时器5大体相同。有不懂的道友,可以参考文末附上的工程链接。
附上完整工程链接:GD32F405RGT6定时器固件库(所有定时器的配置(12个))
GD32F405RGT6定时器固件库(所有定时器的配置(12个))相关推荐
- 【致敬未来的攻城狮计划】— 连续打卡第十天:FSP固件库开发及FSP配置详解。
系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习. ...
- GD32F303固件库开发(7)----printf打印配置
GD32F303固件库开发.7----printf打印配置 概述 视频教学 csdn课程 样品申请 硬件准备 keil配置 串口初始化 最后 串口重定向 打印测试 测试结果 概述 本章主要配置prin ...
- STM32 固件库外设 GPIO 讲解(关于 GPIO 寄存器讲解)
GPIO 外设讲解 通过博主上一篇博客,相信大家已经初步了解到了对于 STM32 的控制原理,但是 STM32 到外设 / 引脚有这么多,是要一个一个的去记住它的地址?或者每一次使用一个外设都要看一下 ...
- STM32固件库(标准外设库)入门学习 第六章TIM定时器(一)
STM32固件库(标准外设库)入门学习 第六章TIM定时器(一) 文章目录 STM32固件库(标准外设库)入门学习 第六章TIM定时器(一) 前言 一.定时器类型 1 基本定时器 2 通用定时器 3 ...
- STM32基于固件库学习笔记(4)(通用定时器)TIM3定时1S中断
STM32F103ZE系列定时器资源 有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器. 通用定时器:是一个通过可 ...
- GD32F303固件库开发(13)----定时器TIM捕获PWM测量频率与占空比
GD32F303固件库开发.13----定时器TIM捕获PWM测量频率与占空比 概述 视频教学 csdn课程 样品申请 生成例程 keil配置 使能串口 串口重定向 占空比与频率计算 GPIO初始化 ...
- 【蓝桥杯嵌入式】比赛笔记(2)根据固件库快速配置各模块初始化
[蓝桥杯嵌入式]比赛笔记(2)根据固件库快速配置各模块初始化 因为蓝桥杯比赛时间很短,并且如果自己去记忆各模块初始化的话,也难免有问题,所以这里给出一个通过固件库的快速初始化模块的方法. 比赛提供固件 ...
- 手把手教你写个小程序定时器管理库
背景 凹凸曼是个小程序开发者,他要在小程序实现秒杀倒计时.于是他不假思索,写了以下代码: Page({init: function () {clearInterval(this.timer)this. ...
- qt定时器暂停与重新开始_手把手教你写个小程序定时器管理库
背景 凹凸曼是个小程序开发者,他要在小程序实现秒杀倒计时.于是他不假思索,写了以下代码: Page({init: function () { clearInterval(this.timer)this ...
最新文章
- XML 特殊字符处理和 CDATA
- vs2017 open从v_宣布#Open2017,这是面向开发人员的除夕直播流
- JDK8:使用Optional进行变量判空、集合遍历
- 【数据结构与算法】之深入解析“删除有序数组中的重复项”与“移除元素”的求解思路与算法示例
- 禁用JavaScript之后,你的网站表现如何?
- 在Apache服务器上安装SSL证书
- 关于nutz跨服务器上传文件
- 会声会影2018,带你体验不一样的光影世界!
- Unique Functions in MATLAB
- MySQL笔记6:.frm和.myi和.myd文件详解
- win10系统IIS服务器配置详细教程,win10系统配置iis的操作方法
- php怎么防止页面被劫持,完美解决网页被劫持的问题,再也不用担心网页被篡改了!...
- python读txt文件-python怎么读取txt文件内容
- 云服务器几核CPU够用
- Cutting(思维)
- silverlight | chrion.exe-动态语言创建silverlight
- 如何利用Vue3管理系统实现动态路由和动态侧边菜单栏
- 最全MyBatis核心配置文件总结:java运行环境没有安装或配置错误
- 2021年制冷与空调设备运行操作新版试题及制冷与空调设备运行操作免费试题
- java解析SZY206-2016传输规约
热门文章
- python单元测试简介
- cas服务器作用,CAS服务器搭建
- 自己做在线HTML编辑器,#6 从零开始制作在线 代码编辑器
- iPhone应用开发视频教程-斯坦福大学公开课
- Python一些可能用的到的函数系列102 推断df的变量类型
- 如何在对话框中使用UPDATECOMMANDUI机制-
- 一天一个 Linux 命令(40):vmstat 命令
- 基于Java+Swing+Mysql实现《黄金矿工》游戏
- 几个朋友合伙创业,如何分配股权?一个温和成长型股权结构思路
- 行列式的计算机应用开题报告,(最新整理)矩阵的应用开题报告