6.GD32F103C8T6 定时器的基本使用
1.定时器的基本初始化
/*定时器的基本初始化和打开更新中断enable: 是否使能定时器
*/
void time_base_init(int enable)
{/*定时器结构*/timer_parameter_struct timer_initpara;//开启定时器时钟rcu_periph_clock_enable(RCU_TIMER0);//结构体复位初始化timer_deinit(TIMER0);/* 初始化定时器结构体 每秒产生一次中断*/timer_struct_para_init(&timer_initpara);/* TIMER1 configuration */timer_initpara.prescaler = 10800-1;//定时器的时钟频率是108MHztimer_initpara.alignedmode = TIMER_COUNTER_EDGE;//timer_initpara.counterdirection = TIMER_COUNTER_UP;//向上计数timer_initpara.period = 10000-1;//重载值timer_initpara.clockdivision = TIMER_CKDIV_DIV1; //不分频timer_initpara.repetitioncounter = 0;//重复计数timer_init(TIMER0, &timer_initpara);if(enable)timer_enable(TIMER0);//使能定时器elsetimer_disable(TIMER0);//失能定时器
}
2. 定时器的中断开启
/*使能定时器的更新中断
*/
void enable_it()
{//1. 清除更新中断标记timer_interrupt_flag_clear(TIMER0, TIMER_INT_FLAG_UP);//2.中断更新中断使能timer_interrupt_enable(TIMER0, TIMER_INT_UP);//使能中断并设置优先级nvic_irq_enable(TIMER0_UP_IRQn, 1, 1);
}
3. 定义中断服务函数
定时器TIM0有多重中断类型
TIMER0_BRK_IRQn = 24, /*!< TIMER0 break interrupts */TIMER0_UP_IRQn = 25, /*!< TIMER0 update interrupts 更新中断 */TIMER0_TRG_CMT_IRQn = 26, /*!< TIMER0 trigger and commutation interrupts 触发中断 */TIMER0_Channel_IRQn = 27, /*!< TIMER0 channel capture compare interrupts 外部输入或输出捕获中断 */
/*中断服务函数
*/
void TIMER0_UP_IRQHandler(void)
{if(SET == timer_interrupt_flag_get(TIMER0, TIMER_INT_FLAG_UP)){/* 清除更新中断标志 */timer_interrupt_flag_clear(TIMER0, TIMER_INT_FLAG_UP);//闪烁LEDLED1=!LED1;}
}
4. 测试调用
#include "gd32f10x.h"
#include "systick.h"
#include <stdio.h>
#include "main.h"
#include "string.h"
#include "bsp_uart.h"
#include "bsp_timer.h"
#include "gd32f103c_sys.h"#define LED0 PBout(13)
#define LED1 PBout(14)
#define LED2 PBout(15)
#define LED3 PAout(8)
int main(void)
{/* 配置系统时钟 */ systick_config();//设置中断分组nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);/* gpio时钟使能*/rcu_periph_clock_enable(RCU_GPIOB);rcu_periph_clock_enable(RCU_GPIOA);// LED gpio 初始化gpio_init(GPIOB,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);gpio_init(GPIOA,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_8);//串口初始化usart_config();time_base_init(1);enable_it();while(1){delay_1ms(500);LED0=!LED0;printf("hello gd32\r\n");}
}
6.GD32F103C8T6 定时器的基本使用相关推荐
- 10. GD32F103C8T6 定时器-测量pwm的占空比和频率
一. 利用TIM2的输入通道0,通道1测量pwm的占空比和频率 1. 配置gpio void inpit_gpio_config(void) {rcu_periph_clock_enable(RCU_ ...
- 7. GD32F103C8T6 定时器 pwm输出
实现LED的逐渐亮灭 1. 定时器TIM0基本初始化 /*定时器的基本初始化和打开更新中断enable: 是否使能定时器 */ void time_base_init(int enable) {/*定 ...
- 8. GD32F103C8T6 定时器-输入捕获测频率
1采集方波频率 /*-----------------------输入捕获----------------------------*/void gpio_configuration(void) {/* ...
- 9. GD32F103C8T6 定时器2的更新中断触发定时器0开始计时
1. 初始化定时器TIM0 /*定时器的基本初始化和打开更新中断enable: 是否使能定时器 */ static void time_base_init(int enable) {/*定时器结构*/ ...
- 14. GD32F103C8T6入门教程-Systick定时器
1.简介 Cortex‐M3 处理器内部包含了一个简单的定时器.因为所有的 CM3 芯片都带有这个定时器,软件在不同 CM3 器件间的移植工作得以化简.该定时器的时钟源可以是内部时钟,或者是外部时钟. ...
- 13. GD32F103C8T6入门教程-定时器-3路pwm输出-刹车死区保护
1.gpio初始化 void gpio_config(void) {/*使能GPIOA GPIOB 时钟*/rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_ ...
- 12. GD32F103C8T6入门教程-定时器-3路pwm输出
1.gpio初始化 void gpio_config(void) {/*使能GPIOA GPIOB 时钟*/rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_ ...
- 初试GD32F103C8T6
初试GD32F103C8T6 一.电路板功能: 1.GPIO直驱4位共阳数码管 2.ADC+DMA采集2路电压信号 3.CAN通讯 4.LED指示灯 5.串口1通讯 6.定时器TIM2 二.使用STM ...
- 一文吃透JAVA定时器格式
JAVA 定时器时间格式 基本格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许使用的通配符 1 秒 是 0-59 , - ...
最新文章
- Visual Studio2017 安装教程(走过的坑绝不再走)
- 使用HMSegmentedControl实现分段控件
- overleaf服务端_部署私有在线Latex编辑器:Overleaf/sharelatex,写毕设神器
- SSD: Signle Shot Detector 用于自然场景文字检测
- 使用JMSTester对JMS层进行基准测试
- 「Python 编程」编码实现网络请求库中的 URL 解析器
- 云图说|SAP技术画册“一点通”
- 【转】“你不适合做程序员”
- HeroKu PaaS模式
- windows2008 服务器时间格式改不过来_我用VNPY 1天时间搭建自主量化交易(程序化交易)平台...
- 在Android中查看和管理sqlite数据库
- 使用axure9绘制三级导航
- MATLAB图像去雾算法RETINEX实现
- 智能数据中心和智慧园区:华为的单点突破与全局效应
- C#针式打印机自定义纸张连续打印爬坑过程
- springsecurity与gateway网关整合配置
- 【HTML基础-1】HTML标签简介及常用标签
- 写给还在迷茫中的朋友,一名6年程序员的工作感悟!!!
- 从输入 URL 开始,聊一聊浏览器、网络等相关的知识
- 应用回归分析(何晓群)CH2、CH3例题、习题