844|1

66

帖子

2

资源

一粒金砂(中级)

【GD32L233C-START评测】测评之四:使用定时器time中断实现1S跑马灯 [复制链接]

  定时器初始化  : timer_initpara.prescaler  

   typedef struct {
    uint16_t prescaler;                                      /*!< prescaler value */
    uint16_t alignedmode;                                    /*!< aligned mode */
    uint16_t counterdirection;                               /*!< counter direction */
    uint32_t period;                                         /*!< period value */
    uint16_t clockdivision;                                  /*!< clock division value */
} timer_parameter_struct;

      取值范围:UInt16 - [0 : 65535]

完整程序

#include "gd32l23x.h"
#include "systick.h"

static uint32_t SystemTick=0;

void TIMER5_Config(void)
{
        timer_parameter_struct timer_initpara;      //计时器初始化参数结构定义

        rcu_periph_clock_enable(RCU_TIMER5);

        timer_deinit(TIMER5);

        /*prescaler(预分频器值):64M/(6399+1)=10KHz
                period(周期值) (9999+1)/10000=1000ms
        */
			timer_initpara.prescaler        = 6399;
			timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
			timer_initpara.counterdirection  = TIMER_COUNTER_UP;
			timer_initpara.period            = 9999;
			timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
			timer_init(TIMER5,&timer_initpara);

        timer_interrupt_enable(TIMER5, TIMER_INT_UP);//使能TIMER5中断
        nvic_irq_enable(TIMER5_IRQn, 0);//启用TIMER5的NVIC请求,优先级为0(0~3)
        
        timer_auto_reload_shadow_enable(TIMER5);
        timer_enable(TIMER5);                  
}

void TIMER5_IRQHandler(void)
{
        static uint16_t timer_cont=0;
        if(RESET != timer_interrupt_flag_get(TIMER5, TIMER_INT_FLAG_UP))
        {
                timer_cont++;
//                if(timer_cont>5)
                {
//                    timer_cont=0;
									gpio_bit_toggle(GPIOA, GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8);
									gpio_bit_toggle(GPIOC, GPIO_PIN_6 | GPIO_PIN_7);
                       
                }        

        }
        timer_interrupt_flag_clear(TIMER5, TIMER_INT_FLAG_UP);
}


uint32_t SystemGetTick(void)
{
	return SystemTick;
}
void LedInit(void)
{
	/* enable the LED GPIO clock */
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_GPIOC);
    /* configure LED GPIO pin */
    gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_6| GPIO_PIN_7 | GPIO_PIN_8);
    gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6 | GPIO_PIN_7| GPIO_PIN_8);
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_6 | GPIO_PIN_7);
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6 | GPIO_PIN_7);
    /* reset LED GPIO pin */
    gpio_bit_reset(GPIOA, GPIO_PIN_6 | GPIO_PIN_8| GPIO_PIN_7);
    gpio_bit_reset(GPIOC, GPIO_PIN_6 | GPIO_PIN_7);	
}

int main(void)
{
	TIMER5_Config();
	LedInit();

    while(1) 
	{
		
    }
	}

现象:

 

1S.jpg

 


 

此帖出自GD32 MCU论坛

回复

6815

帖子

0

资源

五彩晶圆(中级)

可以,视频中看效果不错


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/7 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表