OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
楼主: 流年丶

分享一个不错的【程序框架】+【按键状态机】+【LED状态机】程序

  [复制链接]

0

主题

2

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2014-4-10
在线时间
9 小时
发表于 2019-9-21 21:09:37 | 显示全部楼层
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2018-9-1
在线时间
48 小时
发表于 2019-9-22 09:22:56 | 显示全部楼层
谢谢分享,学习一下状态机
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-3-21
在线时间
10 小时
发表于 2019-9-23 10:17:43 | 显示全部楼层
学习下思路哈
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2017-8-1
在线时间
18 小时
发表于 2019-9-23 10:55:12 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

0

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2019-1-26
在线时间
54 小时
发表于 2019-9-23 12:13:04 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2018-12-12
在线时间
25 小时
发表于 2019-9-24 14:02:30 | 显示全部楼层
Thanks for your share
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-5-25
在线时间
4 小时
发表于 2019-9-24 15:16:24 | 显示全部楼层
6666666666
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2014-6-26
在线时间
38 小时
发表于 2019-9-24 16:05:36 | 显示全部楼层
回复可看,谢谢

回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-9-5
在线时间
4 小时
发表于 2019-9-25 09:32:21 | 显示全部楼层
但事实上所所所所所所所所所所所所所所所所所所所
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-4-19
在线时间
11 小时
发表于 2019-9-25 10:48:30 | 显示全部楼层
谢谢楼主
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-1-9
在线时间
4 小时
发表于 2019-9-25 12:03:02 | 显示全部楼层
看下,谢谢分享
回复 支持 反对

使用道具 举报

3

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
308
金钱
308
注册时间
2013-4-5
在线时间
81 小时
发表于 2019-9-25 12:13:01 | 显示全部楼层
我看看怎么样。好用吗
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-1-9
在线时间
4 小时
发表于 2019-9-25 12:34:26 | 显示全部楼层
不是基于事件驱动的,并且没有队列,有没有框架不都一样?我还不如不用。
回复 支持 反对

使用道具 举报

10

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2019-9-11
在线时间
20 小时
发表于 2019-9-25 17:11:45 | 显示全部楼层
感谢分享!!!!!!
回复 支持 反对

使用道具 举报

0

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-3-27
在线时间
10 小时
发表于 2019-9-26 11:58:42 | 显示全部楼层
我也来学习一下 啊
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-3-16
在线时间
9 小时
发表于 2019-9-26 21:49:21 | 显示全部楼层
666666
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-3-16
在线时间
9 小时
发表于 2019-9-26 21:49:55 | 显示全部楼层
66666666
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-3-16
在线时间
9 小时
发表于 2019-9-26 22:00:07 | 显示全部楼层
366666666666666
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-4-26
在线时间
18 小时
发表于 2019-9-29 09:08:17 | 显示全部楼层
感谢分享~
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2019-9-26
在线时间
5 小时
发表于 2019-9-29 09:31:22 | 显示全部楼层
xuexixuexi
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-12-30
在线时间
7 小时
发表于 2019-9-29 10:12:36 | 显示全部楼层
学习一下,感谢分享。
回复 支持 反对

使用道具 举报

0

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-9-10
在线时间
19 小时
发表于 2019-9-29 11:23:05 | 显示全部楼层
谢谢分享 学习下
回复 支持 反对

使用道具 举报

0

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2016-8-4
在线时间
113 小时
发表于 2019-9-29 17:33:00 | 显示全部楼层
先大赞,下载下来研究学习下
回复 支持 反对

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-5-23
在线时间
30 小时
发表于 2019-9-29 22:47:19 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-5-23
在线时间
30 小时
发表于 2019-9-29 22:48:46 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-5-23
在线时间
30 小时
发表于 2019-9-29 22:49:15 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-8-18
在线时间
1 小时
发表于 2019-9-30 00:08:39 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

23

主题

94

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1113
金钱
1113
注册时间
2016-8-26
在线时间
256 小时
发表于 2019-9-30 14:05:18 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

16

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2018-12-18
在线时间
10 小时
发表于 2019-10-16 21:25:03 | 显示全部楼层
谢谢楼主                        
回复 支持 反对

使用道具 举报

33

主题

982

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7862
金钱
7862
注册时间
2014-8-13
在线时间
1584 小时
发表于 2019-10-17 03:42:24 | 显示全部楼层
本帖最后由 mack13013 于 2019-10-17 13:31 编辑

我写了个跟楼主差不多的,不过任务优先级我是直接用的数组,数组中直接排列任务优先级,同样的数组中的任务不可以被数组中的任务抢占(优先级高也不行),但是可以被MCU中断抢占,MCU中断大多的任务就是不停的弹射任务编号到数组中去(当然弹射任务时会区分优先级,分配中断处理程序时会定义好弹射任务的数组中的优先级,而且可配置),中断中大多执行一两句aa = bb;就退出MCU中断(当时这样设计的目的是实在是不想处理MCU的任务抢占时的“现场保护”,又不想让MCU中断占用太多资源)。
数组从0到N优先级依次降低,每次先执行最高优先级的任务,执行过程只会被中断打断,执行完成之后任务移除数组并继续从数组中优先级最高的任务开始执行(也就是说,如果MCU负荷比较重,一直有高优先级任务,那么低优先级任务就永远不会被执行)。
并且数组可以转化为二维,数组放置环形队列指针,实现更复杂的操作(比如同级队列)。


我可能还多设计了一个功能:定时器高级管理,对于某些定时执行的任务,程序不需要再去在现写申请硬件定时器的代码,定时器可以实现间隔一定时间执行某项任务,该任务可以被设定执行次数(执行N次自动停止或者一直执行下去),定时器被管理起来,根据定时时长分配不同的定时器资源(是基于STM32F407开发的,STM32F407有32位和16位定时器,如果申请时间间隔长,16位无法满足,那么就会自动分配32位定时器,并且有高级功能的定时器不被优先分配)。
用法也简单SetTimer(*nId, nEclisp, nPeriod, nCount, fnTimerHandler, nParam);就可以执行了。

参数解释:nId 定时器Id:返回值,SetTimer执行成功之后会返回Id,该Id可用于该定时器任务管理(目前实现了KillTimer(nId);功能,可以关闭该定时器。应该还实现一个Pause或者Suspend功能)。
nEclisp:延迟多久之后开始第一次执行

nPeriod:执行时间间隔,不能为0(为0会导致定时器任务不停执行,其他任务无法获得MCU资源)
nCount:执行次数。为0时表示一直执行,直到程序执行了KillTimer(nId);
fnTimerHandler:函数指针,定时器任务的函数体,由用户实现,不能非法。
nParam:定时器任务的传参。

这样,定时执行某个任务(比如采集某些数据定时发送或者定时保存)就会很简单。


缺陷:1、为了避免做CPU现场保护,所以没有任务抢占系统,导致某些被动任务(比如红外的外部中断)就不能用任务数组来配置(其实也可以配置到任务数组中,将任务数组优先级最低处添加一个扫描任务,不停扫描即可,但是速度响应可能没那么快),就需要占用MCU的中断资源。
2、没有添加同步处理;
3、同样的原子操作也没有,只能在程序中想办法保证;
4、内存管理也没戏;
5、外设管理只能放到任务数组中去,无法以驱动加载至内核的方式进行和保护;
6、也没有分配内核和用户区,没有内核保护。

只是简单的任务分配(都不能说是调度),所以算不上一个系统。


回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-7-11
在线时间
4 小时
发表于 2019-10-17 08:25:23 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2016-7-9
在线时间
47 小时
发表于 2019-10-17 10:20:20 | 显示全部楼层
学习一下,3Q
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-6-18
在线时间
3 小时
发表于 2019-10-17 14:39:03 | 显示全部楼层
前来学习
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2018-11-7
在线时间
17 小时
发表于 2019-10-17 16:52:36 | 显示全部楼层
赶紧学习学习
回复 支持 反对

使用道具 举报

10

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2072
金钱
2072
注册时间
2016-8-15
在线时间
413 小时
 楼主| 发表于 2019-10-17 17:21:08 | 显示全部楼层
mack13013 发表于 2019-10-17 03:42
我写了个跟楼主差不多的,不过任务优先级我是直接用的数组,数组中直接排列任务优先级,同样的数组中的任务 ...

感谢大佬这么用心的回复,后续有关程序框架和模块的设计可以交流交流
我的简书:https://www.jianshu.com/u/3e9efbf4a8c2
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-10-20
在线时间
3 小时
发表于 2019-10-22 17:20:34 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-10-22
在线时间
16 小时
发表于 2019-10-22 17:46:09 | 显示全部楼层
学习下
回复 支持 反对

使用道具 举报

0

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2018-1-22
在线时间
7 小时
发表于 2019-10-22 18:00:10 | 显示全部楼层
666支持,感谢分享
stm32f103资料
硬氪网
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-10-23
在线时间
8 小时
发表于 2019-10-23 11:03:06 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

1

主题

37

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2138
金钱
2138
注册时间
2018-2-5
在线时间
403 小时
发表于 2019-10-23 11:41:12 | 显示全部楼层
学习学习!
回复 支持 反对

使用道具 举报

0

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
267
金钱
267
注册时间
2018-12-2
在线时间
76 小时
发表于 2019-10-23 15:22:24 | 显示全部楼层
流年丶 发表于 2019-6-13 16:34
通常情况系统处于休眠模式,当被定时器唤醒需要扫描任务时,先判断主任务号MainTask是否为0,如果为0,则继 ...

大佬,这个是怎么判断优先级的呢,主循环里面没有直接读取数组里面的值,比如0x6,带入数组里获得一个值,得到结果和优先级有什么关系呢
回复 支持 反对

使用道具 举报

10

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2072
金钱
2072
注册时间
2016-8-15
在线时间
413 小时
 楼主| 发表于 2019-10-23 15:28:20 | 显示全部楼层
yenhok 发表于 2019-10-23 15:22
大佬,这个是怎么判断优先级的呢,主循环里面没有直接读取数组里面的值,比如0x6,带入数组里获得一个值, ...

你可以想象当两个不同优先级任务置起来后,对照这个表看,取的那个数字
表.png
我的简书:https://www.jianshu.com/u/3e9efbf4a8c2
回复 支持 反对

使用道具 举报

0

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2015-4-9
在线时间
72 小时
发表于 2019-10-24 14:22:49 | 显示全部楼层
谢谢楼主.学习学习.
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-8-13
在线时间
8 小时
发表于 2019-10-24 16:32:39 来自手机 | 显示全部楼层
学习一下,感谢分享!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-8-13
在线时间
8 小时
发表于 2019-10-24 16:33:57 来自手机 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

0

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2019-4-30
在线时间
42 小时
发表于 2019-10-24 16:49:56 | 显示全部楼层
感谢;楼主好人
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2019-9-24
在线时间
8 小时
发表于 2019-10-25 09:49:51 | 显示全部楼层
看下不同的思路
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2018-5-7
在线时间
19 小时
发表于 2019-10-27 15:14:01 | 显示全部楼层
下载学习
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-8-15
在线时间
8 小时
发表于 2019-10-28 20:53:23 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2019-5-15
在线时间
22 小时
发表于 2019-10-29 08:38:42 | 显示全部楼层
markmark
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 09:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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