OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7902|回复: 11

求单片机裸编程序架构或者思想?

[复制链接]

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2015-8-21 13:44:49 | 显示全部楼层 |阅读模式
5金钱
谁有比较实用的单片机裸编程序架构或者思想,或者推荐书籍资料,在此感激不尽?????

我先说说我的思路,抛砖引玉:
思路一:
void    main(void)
{
    /*初始化*/
    Init();

    while(1)
    {
        TASK1();
        TASK2();
        .........
        CLEAR_WDT();        
    }
}


思路二:
void    main(void)
{
   /*初始化*/
    Init();


   while(1)
   {
       if(state==0)
        {
           task0();
       }
 else if(state==1)
{
   task1();
}
else if(state==2)
{
   task2();
}
......

    }
}

void task0(void)
{
/..定义变量../

/..初始状态../

while(1)
{
//dosomethings

if(state==0)
return;
}

}

void task1(void)
{
/..定义变量../

/..初始状态../

while(1)
{
//dosomethings

if(state==1)
return;
}

}


void task2(void)
{
/..定义变量../

/..初始状态../

while(1)
{
//dosomethings

if(state==2)
return;
}

}




最佳答案

查看完整内容[请看2#楼]

回复【4楼】TinyBoy: --------------------------------- 你说的是这种架构吧: void main(void) { /*初始化*/ while(1) { if(delay_task>=time1) { task1(); } if(delay_task>=time2) { task2(); } if(delay_task>=time3) { task3(); } } }
30年众生牛马,60年诸佛龙象!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
 楼主| 发表于 2015-8-21 13:44:50 | 显示全部楼层
回复【4楼】TinyBoy:
---------------------------------
你说的是这种架构吧:
void main(void)
{
/*初始化*/

while(1)
{
if(delay_task>=time1)
{
task1();
}
if(delay_task>=time2)
{
task2();
}
if(delay_task>=time3)
{
task3();
}
}
}
30年众生牛马,60年诸佛龙象!
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
 楼主| 发表于 2015-8-21 13:51:35 | 显示全部楼层
作为福利我先上传一个自己写的小软件,可以计算校验和(适合645协议),计算CRC16(ModBus协议),CRC7和SDCRC7(SD卡协议)

计算校验值.exe

1.63 MB, 下载次数: 523

30年众生牛马,60年诸佛龙象!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165369
金钱
165369
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-8-21 22:30:30 | 显示全部楼层
回复【2楼】无痕幽雨:
---------------------------------
谢谢分享。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

560

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2014-6-27
在线时间
961 小时
发表于 2015-8-22 13:17:32 | 显示全部楼层
回复【2楼】无痕幽雨:
---------------------------------
你做个节拍,不用调度了,在主函数里面扫描每个任务,自己设定扫描的节拍数就行了,就是相当于所有任务优先级是一样,只是用节拍数来做每个任务需要的延时,只有你的单片机跑得够快,所有的任务貌似同时进行的。
回复

使用道具 举报

10

主题

560

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2014-6-27
在线时间
961 小时
发表于 2015-8-24 09:10:14 | 显示全部楼层
回复【5楼】无痕幽雨:
---------------------------------
差不多吧,里面没有调度,没有死延时,结构都差不多,只是每个人写的细节不一样而已。
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
 楼主| 发表于 2015-8-24 10:53:38 | 显示全部楼层
回复【6楼】TinyBoy:
---------------------------------
明白了,没有软件延时嘛,我现在在改造以前的一个程序,遇到问题我再请教您!
30年众生牛马,60年诸佛龙象!
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
 楼主| 发表于 2015-9-7 11:35:33 | 显示全部楼层
最近在21那边看了不少关于编程思路的帖子,受益匪浅,其中提到一点PT协程,现献给大家官方V1.4版本。
30年众生牛马,60年诸佛龙象!
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
 楼主| 发表于 2015-9-7 11:37:05 | 显示全部楼层
为什每次都得发两遍,才能上传附件?????????

pt-1.4.tar.gz

213.07 KB, 下载次数: 553

30年众生牛马,60年诸佛龙象!
回复

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2015-10-5
在线时间
6 小时
发表于 2015-10-5 12:40:00 | 显示全部楼层
也有状态机的裸奔程序。
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2015-11-5 22:59:34 | 显示全部楼层
我一直用前后台系统
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
 楼主| 发表于 2018-3-1 10:34:57 | 显示全部楼层
现在回过头来看看自己写的代码,也说下自己的最近几年一直用的编程思路,希望能够帮助像当年的自己一样迷茫且热爱技术的人:
1、业务逻辑代码全状态机开发(参考:http://blog.csdn.net/wuhenyouyuyouyu/article/details/73302377);
2、有个简单的协作式内核(参考:http://blog.csdn.net/wuhenyouyuyouyu/article/details/53818948);
3、提供软件定时器服务(参考:http://blog.csdn.net/wuhenyouyuyouyu/article/details/53912098
                                                 http://www.openedv.com/forum.php ... id=61297&extra=);
4、提供简单的信号了等同步服务(网上很多,自己度年吧);
5、系统层次方面,运用面向对象、基于接口编程,使用设计模式等,使自己的代码模块化设计;
30年众生牛马,60年诸佛龙象!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-1 12:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表