单片机GD32F303RCT6 (Macos环境)开发 (六)——通用定时Tim1的使用

通用定时Tim1实现LED的闪烁

1、我们设置Tim1 间隔100ms改变LED的状态,实现LED的闪烁。
2、Tim1的配置
1⃣️、新建timer.c timer.h 文件
timer.c

//定时器配置
void timer_config(void)
{
    /* -----------------------------------------------------------------------
	  系统主频108MHZ,timer_initpara.prescaler为1079,timer_initpara.period为9999,
    频率就为10HZ,100ms进一次中断
    ----------------------------------------------------------------------- */
    timer_parameter_struct timer_initpara;
    rcu_periph_clock_enable(RCU_TIMER1);
    timer_deinit(TIMER1);
    /* TIMER1 configuration */
    timer_initpara.prescaler         = 1079;
    timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
    timer_initpara.counterdirection  = TIMER_COUNTER_UP;
    timer_initpara.period            = 9999;
    timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
    timer_initpara.repetitioncounter = 0;
    timer_init(TIMER1,&timer_initpara);
	nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);
	nvic_irq_enable(TIMER1_IRQn, 0, 1);
	timer_interrupt_enable(TIMER1, TIMER_INT_UP);
    /* auto-reload preload enable */
    timer_auto_reload_shadow_enable(TIMER1);
    /* auto-reload preload enable */
    timer_enable(TIMER1);
}

timer.h

#ifndef __TIMER_H__
#define __TIMER_H__
#include "gd32f30x_libopt.h"
#include "gd32f30x.h"
#include "type.h"

void timer_config(void);
#endif

2⃣️、LED的配置
LED灯接PB4管脚,配置代码如下

gpio_pin_remap_config(GPIO_SWJ_NONJTRST_REMAP, ENABLE);//下载口NJTRST引脚当做普通I/O口
rcu_periph_clock_enable(RCU_GPIOB);//PB时钟使能
gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);//PB4配置成输出

3、中断处理函数
在Application工程的gd32f30x_it.c中添加以下代码。

uint8_t  LedFlag;
void TIMER1_IRQHandler(void)
{

	timer_flag_clear(TIMER1,TIMER_FLAG_UP);
    LedFlag^=0x01;
    if(LedFlag)//计数到500ms,翻转输出
	{
		gpio_bit_set(GPIOB,GPIO_PIN_4);//PB4输出高电平
		
	}else
	{
		gpio_bit_reset(GPIOB,GPIO_PIN_4);//PB4输出低电平
	}
}

4、开机验证。
在这里插入图片描述
间隔100ms拉高拉低一次。

5、代码路径:https://gitee.com/xiaoguo-tec_0/gd32-iap-code.git

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值