打印

是我的问题吗(程序架构问题)

[复制链接]
5856|44
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
20120703|  楼主 | 2012-9-6 20:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 20120703 于 2012-9-6 20:28 编辑

首先说明是定时器(程序架构问题)问题



先说明我是用C写程序的。原来我的所有的程序都是这么个框架

void main()
{

       init();  //初始化设置

       for(;;)
         {
              function_a();
              functon_b();
         }
}


最近刚参加工作发现公司里面的人都是这样写的

void main()
{

       init();  //初始化设置

       for(;;)
         {
               if(t_100us==1)
               {
                     t_100us=0;
                     function_a();
               }

                if(t_1ms==1)
               {
                     t_1ms=0;
                     function_b();
               }
         }
}



采用了定时器,定时时间不到则不执行相应功能函数,这个我以前自己写的程序比较随意,程序也不是很长,没有这样用过定时器。看到公司的人很多都这样写,刚开始我有些很郁闷,感觉有点不适应。好多原来写的程序,搞的我现在都不怎么会写了,我的软件架构貌似都错了似的,比如一个简单的数码管动态扫描显示,我之前写的程序,完全没有用定时器就把可以做6位数码管显示啊。现在加上这个感觉很别扭啊。不知道大家的程序都是怎么写的啊。

相关帖子

沙发
20120703|  楼主 | 2012-9-6 20:34 | 只看该作者
包括有时候我在网上搜的程序也没见过哪个人这样用定时器啊。不知道大家的程序都是怎么写的啊。

使用特权

评论回复
板凳
mcu5i51| | 2012-9-6 20:34 | 只看该作者
不必太纠结,单片机编程针对性相当强,能用就行;
我的框架类似标志位吧
int tim;
while(1){

if(tim == 0)
{
tim = n;
a();
}
b();
wait(##);配合定时器标志位,平常SLEEP
}

使用特权

评论回复
地板
airwill| | 2012-9-6 21:13 | 只看该作者
我感觉用定时器是个好习惯
所谓时间驱动.
优点是不容易受软件的改变而相互影响. 特别是系统一旦庞大起来后. 时间基准响应方式的稳定性相对较高.

使用特权

评论回复
5
原野之浪| | 2012-9-6 21:20 | 只看该作者
玩单片机 玩的就是时间  有时间概念就好办了

比如楼主就没有时间概念

t_100us==1

怎么可能实现100us

使用特权

评论回复
6
原野之浪| | 2012-9-6 21:28 | 只看该作者
定时器一般定1ms或者10ms

使用特权

评论回复
7
20120703|  楼主 | 2012-9-6 21:30 | 只看该作者
玩单片机 玩的就是时间  有时间概念就好办了

比如楼主就没有时间概念

t_100us==1

怎么可能实现100us
原野之浪 发表于 2012-9-6 21:20


你还别说,我是真的没有时间概念啊。

使用特权

评论回复
8
20120703|  楼主 | 2012-9-6 21:31 | 只看该作者
怎么可能实现100us
原野之浪 发表于 2012-9-6 21:20


你是说100us内,单片机跑不了多少指令吧,呵呵。

使用特权

评论回复
9
李富贵| | 2012-9-6 21:33 | 只看该作者
现在写程序只用RTOS的撸过,再也没有楼猪这样的烦恼了。

使用特权

评论回复
10
20120703|  楼主 | 2012-9-6 21:33 | 只看该作者
搞的我现在觉得我以前写的程序什么都不是了,感觉以前写的程序都成一团糟了

使用特权

评论回复
11
20120703|  楼主 | 2012-9-6 21:35 | 只看该作者
我感觉用定时器是个好习惯
所谓时间驱动.
优点是不容易受软件的改变而相互影响. 特别是系统一旦庞大起来后. 时间基准响应方式的稳定性相对较高.
airwill 发表于 2012-9-6 21:13




我看过STM32自带的软件库里自带的程序例子,也没见这样用定时器吧。是不是因为STM32的速度太快了,足够时间跑程序了。

使用特权

评论回复
12
sogan| | 2012-9-6 21:43 | 只看该作者
第二种框架应该会稳妥点.但是小程序看不出明显区别的哦.

使用特权

评论回复
13
yuyi21ic| | 2012-9-6 21:46 | 只看该作者
4L说的有理,正是时间驱动。时间驱动机制可以一定程度上释放CPU,如果再给每个任务的状态细化一下,就弄成多任务处理了。

使用特权

评论回复
14
dong_abc| | 2012-9-6 22:00 | 只看该作者
看我以前发的帖子。

使用特权

评论回复
15
icecut| | 2012-9-6 22:09 | 只看该作者
hehe,经验啊...都觉得自己的经验是对的

使用特权

评论回复
16
nongfuxu| | 2012-9-6 22:34 | 只看该作者
第一个是无限制轮询;
第二个是时间片轮询。
哪个好,得根据程序具体是干什么的了。

使用特权

评论回复
17
20120703|  楼主 | 2012-9-6 22:37 | 只看该作者
现在写程序只用RTOS的撸过,再也没有楼猪这样的烦恼了。
李富贵 发表于 2012-9-6 21:33


只刷几位数码管也用RTOS吗

使用特权

评论回复
18
20120703|  楼主 | 2012-9-6 22:39 | 只看该作者
大家说的都很好:)

使用特权

评论回复
19
yy251745080| | 2012-9-6 23:00 | 只看该作者
楼上正解。可以避免一直占用CPU

使用特权

评论回复
20
alhua001| | 2012-9-6 23:13 | 只看该作者
同意16L的意见。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

263

帖子

3

粉丝