1、前言官方demo使用的是阻塞方式点灯,这种方式让mcu在等待期间无法执行其他任务(中断除外),
1、前言
官方demo使用的是阻塞方式点灯,这种方式让mcu在等待期间无法执行其他任务(中断除外),效率较低。本文介绍了一种非阻塞方式点灯的方法。
2、硬件连接
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);}
登录后复制
菜鸟下载发布此文仅为传递信息,不代表菜鸟下载认同其观点或证实其描述。
版权投诉请发邮件到 cn486com#outlook.com (把#改成@),我们会尽快处理
Copyright © 2019-2020 菜鸟下载(www.cn486.com).All Reserved | 备案号:湘ICP备2022003375号-1
本站资源均收集整理于互联网,其著作权归原作者所有,如有侵犯你的版权,请来信告知,我们将及时下架删除相应资源