2019-12-16 22:38发布
istars2005 发表于 2017-7-19 21:35 楼主的方式貌似有点繁琐
fm007 发表于 2017-7-19 16:30 感谢楼主分享,我目前也使用过这种思路的,但是用的是离散的结构体标志
Jmhh247 发表于 2017-7-20 09:05 哈哈,你的方式很不错哈,简单说,你的是将数据与算法分离了 对于这种起辅助作用的功能模块,我现在的思 ...
istars2005 发表于 2017-7-20 09:20 我也是考虑到封装问题, 把这部分功能放到了STM32的SysTick处理的模块当中, 只提供一个延时变量注册的接口 ...
最多设置5个标签!
哈哈,你的方式很不错哈,简单说,你的是将数据与算法分离了
对于这种起辅助作用的功能模块,我现在的思维是尽可能的多做封装,
不去管理数据,而是管理 ID,让使用者更关注自己的代码实现。
现在很火的共享单车(辅助模块),对用户来说,有很多车摆在那里,根本
无需申请一辆车(声明数据),直接扫码(管理ID)骑走。
繁琐与否,就看个人理解吧。。。
我另外一个帖子,也是基于这样的考虑
点我 [代码分享]一个软件定时器模块,简单好用
结构体标志也不错
我也是考虑到封装问题,
把这部分功能放到了STM32的SysTick处理的模块当中,
只提供一个延时变量注册的接口.
这样使用时候只需注册一下自己模块内部的静态变量
后面的操作都是本地变量的赋值和判断.
自我感觉封装的还不错
编辑原因: 标题错误
你这么说我就看懂了,很有参考价值哈
用户处理好超时变量一次注册的问题就行了。
- void Task_Thread(void)
- {
- switch(step)
- {
- case 0: //两个LED全灭
-
- //
- if (zl_poll_delay_timeout(0)) //DELAY_ID1 0 标志位
- {
-
- zl_poll_delay_set(0, 4000); // 延时4000ms,4s
- LED1=1;
- LED2=1;
- step=1;
- }
-
- break;
-
-
-
- case 1: // led1亮
-
-
- LED1=0;
- if (zl_poll_delay_timeout(1)) //DELAY_ID1 1 标志位
- {
-
- zl_poll_delay_set(1, 4000); // 延时4000ms,4s
- LED1=0;
- step=2;
- }
- break;
-
-
- case 2: // led2亮
-
-
- if (zl_poll_delay_timeout(2)) //DELAY_ID1 0 标志位
- {
-
- zl_poll_delay_set(2, 4000); // 延时4000ms,4s
- LED2=0;
- step=0;
- }
- break;
-
-
- default:
- break;
- }
- }
复制代码//定时器3中断服务程序 1ms
void TIM3_IRQHandler(void) //TIM3中断
{
u8 Index;
zl_poll_delay_tick();
一周热门 更多>