本帖最后由 lldwsw 于 2013-3-10 08:53 编辑
本人2004年在21ic上发表了“实用单片机系统”,也叫McuSystem,基于周立功的DP51开发板编写的,很多初学朋友觉得还不错,现在在网上发表了他的第三版本,MS3,这个版本在消息机制上有改进,采用16位结构,适合一些采集系统,同时采用循环消息队列,软件定时器上有了比较大的改进,采用回调函数形式,并且支持中断内回调和中断外回调,这样可以实现伪任务的概念。第三个改进是去掉了很多具体的应用,留下一个内核可以适用于一个最小系统,具体应用请各位自己扩充,本人自己建了一些库,要应用的时候直接加上就可以了,第四个改进是应用了比较多的函数指针,这个可能对一般的单片机开发人员有点难度,但应用更加灵活了。<br /><br />本程序可以直接在keil的debug模式下执行,适合对单片机有一定理解的朋友。<br />不足之处请多多指出<br />地址21ic的FTP:<br />File.21ic.comMCU实用单片机系统第三版(带SI).rar<br /><br />内附SourceInsight3.5,一个非常好的C语言编辑器,内带程序注析自动生成实用说明,这个非常可以自动生成函数,文件头的注析。MS1,MS2:MS2比较简单,适合入门,MS1可以了解历史
MS1.rar
(426.21 KB)
MS2.rar
(222.58 KB)
/***************************************/
最新MSV3.21版本,
ms3.21.rar
(207.54 KB)
增加了GUI部分,利用一个函数指针变量代替复杂的状态机,每个菜单只有一个显示函数和一个处理函数即可,附件为最新版本,可以直接下载,建议用SourceInsight看
实用单片机系统程序说明(MS3.21).pdf
(290.42 KB)
基于NXP的LPC13XX开发的MS4,评估板是基于MCU123,按键为GPIO0.0和GPIO0.6,BUZZ为GPIO2.8,MS4基于MS3平台开发,结合多家评估板的程序而成。因此版本刚发布,可能存在一些bug,请大家指出。
ms4.rar
(673.42 KB)
基于STM32F103的实用单片机系统,为了避免与NXP版本搞混淆,特意用MS5,现在发布测试版本,欢迎使用并报告bug,QQ:26033613
MS5.rar
(594.13 KB)
MS5说明:
MS5基于STM32F103设计开发,可以在Keil下软件仿真调试,不需要实物硬件板子,UART1作为人机窗口。硬件测试是基于正点原子的miniSTM32F103RBT6板子测试,资料是开源的。MS5主要基于MS4(基于NXP Cortex M3)升级而来,因为在2011年基于MS4做了6KW高频焊接机,增加了界面部分,采用函数指针加消息机制,感觉比较简单而有效,性能比较不错,尤其是针对工业产品,系统节拍分时设计有进一步的体会,把这两点融入到MS5中,同时修改了串口UART发送系统等待问题,先把串口数据放到一个buff中,系统节拍去检测buff,当有数据时,每个节拍发送一个,这样就避免了以前发送的时候,需要很长的等待问题。
升级为MS5的根本目的作者是为了设计一款仿西门子S7系列的分布式PLC,应用在自己公司的自动化控制领域及工业电源设备上。同时考虑到今后这个PLC系统需要推向市场,所以选择了STM32这颗比较通用的芯片来设计。作者把这个PLC系统叫做msPLC,初级版本开源设计,包括软硬件。今后关于PLC的一些开发,都会在MS5中得以体现,也希望MS5发展成为针对工业控制领域的系统平台。
读者需要明确的是,MS5是一个系统平台,它不是一个RTOS,它是一个为了简单、可靠、看得懂代码,容易上手,缩短开发周期而构建的平台。MS5是一个前后台系统,作者也曾多次想上RTOS之类的,但对于工业产品深入分析后,发现绝大部分是没必要的,并且引入了自己不了解,代码把握不了的RTOS,一旦出现问题无法解决。所以就退回到了MS系统上来,尤其发现工业设备,采样速度是要求较高的,但执行可以慢一些,这样可以把中断作为紧急不可延时高速采样,系统节拍设定为万分之一秒用于AD,IO常规采样,节拍分频后获得百分之一秒用于按键、数码管,分频为十分之一秒用于数据显示刷新,分频为一秒用于RTC时钟。中断获取的数据,可以在万分之一的节拍中处理,也可以在更低速的地方处理,更可以在main主程序中处理。这就是所谓的,高速采样,低速处理,系统可以设计的非常有条理。
/*************************/
MS5.00 bug报告:感谢kingpoo发现MS5中的临界态处理不够严谨,退回到采用MS4中的临界态处理方法,并提出参数应该放在一个固定的头文件里,采纳建议,现已改进。
/*************************/
基于MS5与uCOSII的msOS发布
对很多只具有MCU51,Cortex基础的网友来说,学习RTOS是一件痛苦的事情,以uCOS为例,博主以前看过2遍,虽然有些概念,但因为涉及内容较多,理解不深,加上没做项目,过段时间就忘记了。这次为了做msPLC系统:一种网络化PLC,需要解决网络通讯,特意引入RTOS实现任务分离,所以把目前资料最为广泛的uCOS与博主自己设计的“实用单片机系统MS5”结合起来,uCOS具备RTOS的多任务,并且资料丰富,MS5博主自己开发的,最为熟悉,并且在单任务下代码简洁,功能齐全,尤其是对时间分割管理、消息机制、界面设计上,都有一定的模式,所以可以理解为基于MS5下,把单任务变成多任务处理,比较完美的结合。
uCOS可以认为是比较标准的一种RTOS,就RTOS来说,它不算复杂,但对于绝大部分只有单任务设计经验的嵌入式人员,已经足够复杂,主要有几点原因:
1、刚接触RTOS思想,对很多名词,功能、变量都不熟悉,这些一多就混淆了
2、文件结构、头文件定义复杂,条件编译、函数指针、结构体过多
3、外围函数过多,任务核心不突出
基于以上三点,本人以普通嵌入式人员的思维,做以下几点精简:
1、去掉一般项目不常用的函数,比如信号量事件(SEM)、开关量事件(MUX)、标记事件(FLAG)、内存管理(MEM),只保留消息邮箱(MBox)和消息队列(MQ)。
2、精简头文件,按常规写法修改,去掉不必要的条件编译
3、去掉统计任务(StatTask)和空闲任务(IdleTask),系统内部精简掉相关的变量,加入MS5,作为它的IdleTask,设置为最低优先级。
4、加入MBox和MQ例子,让其可以在Keil的Debug的UART1窗口下直接调试模拟。
初学者基于精简版本的uCOS,对照书本,学起来应该更容易,起码不会有强烈的排斥心里,在理解了uCOS内核后,再看完整的源码,就非常容易。
msOS今后将基于MS5为基础,引入其他免费公开的RTOS的一些优点,比如FreeRTOS和RT-Thread,形成自己的风格,避免版权,主要超工业自动化方向进化,专注于工业自动化领域。
精简的uCOS
uCOS.rar
(531.22 KB)
基于MS5的uCOS
msOS.rar
(629.29 KB)
|