您的位置 : 资讯 > 软件资讯 > 【GD32L233C-START】2、非阻塞方式点灯,blink,blink,blink……

【GD32L233C-START】2、非阻塞方式点灯,blink,blink,blink……

来源:菜鸟下载 | 更新时间:2025-04-27

1、前言官方demo使用的是阻塞方式点灯,这种方式让mcu在等待期间无法执行其他任务(中断除外),

1、前言

官方demo使用的是阻塞方式点灯,这种方式让mcu在等待期间无法执行其他任务(中断除外),效率较低。本文介绍了一种非阻塞方式点灯的方法。

2、硬件连接

【GD32L233C-START】2、非阻塞方式点灯,blink,blink,blink……

3、思路

通过定时器中断,每1ms触发一次中断,全系统维护一个tick计数器;

记录某个时刻的tick值为A,获取当前的tick值为B,当B-A的值大于或等于500时(即500ms闪烁一次),执行一次LED状态翻转,并更新A的值。

4、软件实现

(1)利用定时器中断,每1ms中断一次,全系统维护一个tick计数器

static uint32_t SystemTick=0;void Timer1Config(void){    nvic_irq_enable(TIMER1_IRQn, 0);    timer_parameter_struct timer_initpara;    /* 启用外设时钟 */    rcu_periph_clock_enable(RCU_TIMER1);    /* 重置定时器 */    timer_deinit(TIMER1);    /* 初始化定时器参数结构 */    timer_struct_para_init(&timer_initpara);    /* 配置TIMER1 */    timer_initpara.prescaler         = 63;    timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;    timer_initpara.counterdirection  = TIMER_COUNTER_UP;    timer_initpara.period            = 999;    timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;    timer_init(TIMER1, &timer_initpara);    /* 清除通道0中断标志位 */    timer_interrupt_flag_clear(TIMER1, TIMER_INT_FLAG_UP);    /* 启用定时器中断 */    timer_interrupt_enable(TIMER1, TIMER_INT_UP);    /* 启动定时器 */    timer_enable(TIMER1);}

登录后复制

菜鸟下载发布此文仅为传递信息,不代表菜鸟下载认同其观点或证实其描述。

展开
智夺军旗
智夺军旗
类型:策略战棋 运营状态:公测 语言:简体中文
策略 益智 AI
前往下载

相关文章

更多>>

热门游戏

更多>>

手机扫描此二维码,

在手机上查看此页面

关于本站 下载帮助 版权声明 网站地图

版权投诉请发邮件到 cn486com#outlook.com (把#改成@),我们会尽快处理

Copyright © 2019-2020 菜鸟下载(www.cn486.com).All Reserved | 备案号:湘ICP备2022003375号-1

本站资源均收集整理于互联网,其著作权归原作者所有,如有侵犯你的版权,请来信告知,我们将及时下架删除相应资源