shentqlf 发表于 2015-10-15 18:19:00

eBox生态圈:简化STM32编程,4个月完成eBox固件库(申精)

本帖最后由 shentqlf 于 2015-10-15 22:08 编辑

四个月。。。真是不知该从何说起,这四个月应该说是,除了上班,剩下的时间都贡献给eBox了。
鄙人接触STM32有些年头了,也做过很多工程项目首选的控制器就是STM32,觉得STM32还是比较好用的一款芯片。随着项目的增多,发现每次做电路板回来都要调试板子上各种芯片的驱动,即使以前写过的驱动,也得修改IO等其他配置,说心里话
STM32的配置还是比较复杂的,我倒现在都没记住所有硬件外设的配置方法,每次都要查阅手册和芯片资料,不知各位大侠是不是也有此感觉。所以就心生念头,解决这个问题,让STM32像Arduino一样!这就是eBox最开始的想法。ST官方好像有个
maple,但是我没用过,就看过几眼介绍,然后决定不喜欢。然后就是4个月的熬夜。。。到今天终于完成了软硬件!!!
一、了解什么是eBox
eBox是一个运行在STM32平台上的涵盖了驱动层、系统层、标准应用软件层、用户软件层和bootloader的软硬件一体化的解决方案。丰富的标准驱动和标准应用,像用Arduino那样方便,性能又远高于arduino。操作系统的支持让eBox满足多任务系统的需求;标准应用为你提供多种控制算法、通信协议,满足不同应用场所的需求。
二、程序架构

有了这样一个程序架构,谢代码就可以明确代码功能和依赖关系,有助于代码层次化分明。
三、编程语言
eBox是基于c/c++编程实现的。需要学习简单c/c++的语言知识。
四、外设固件库支持列表
        ●数字IO,PA0-PG15所有引脚
        ●ADC1的16个通道,CH1-16
        ●通用定时器TIM2、3、4的定时中断
        ●高级定时器TIM1的定时中断
        ●12路PWM
        ●16通道的外部中断,可影射所有引脚
        ●硬件SPI1、2
        ●硬件I2C1、2
        ●软件SPI,支持任意IO配置
        ●软件件I2C,支持任意IO配置
        ●串口,支持USART1、2、3
        ●实时时钟RTC
        ●内部flash编程
目前也就调试了这么多了。外设固件库是对官方固件库的接口重新封装,基本是以外设描述性质的参数去初始化,所有外设具有较为统一的调用方法。
五、驱动库
eBox驱动是eBox固件最大的亮点,在用户下载标准的eBox驱动后只需做简单的IO连接、通信接口连接即可,不需要做何寄存器相关的任何修改即可将驱动程序移植到本地。从根本解决了STM32驱动移植性差的根本问题,大大降低用户驱动开发、调试难度。
驱动框架

目前提供的驱动列表有:
        ●74HC595串入并出转换芯片驱动
        ●独立按键(作者认为非常好使的按键程序)
        ●编码器按键驱动
        ●LCD1602显示器驱动
        ●Nokia5110显示器驱动
        ●DS3231实时时钟驱动
        ●MPU6050飞控必备的6轴传感器驱动
        ●L3G4200D三轴数字陀螺仪驱动
        ●LSM303DHLC三轴电子罗盘驱动
        ●AT24C02存储芯片驱动
        ●W25X16系列spi flash存储芯片驱动
        ●W5500网络控制器驱动
        ●SD/TF卡驱动
        ●三基色LED驱动,支持HSV、HSL调色。
        ●WS2812单线最牛三基色LED控制器,内部自带gamma校正,软件支持HSV、HSL调色。
在限定的格式下下出来的驱动可移植性是非常高的。只要是基于eBox固件库编写的驱动,不需要做任何修改即可用于不同的项目中,当然初始化那个接口中包含了你自己的硬件连接信息。驱动架构在编程指南中有详细介绍。此处不再啰嗦。
六、标准应用层
        ●常用工程数学、控制库(正在更新。。。)
        ●网络通信
        ●文件系统
        ●色彩控制、转换器
        ●等等
这一层提供了通用的应用软件,包括通信、文件系统、一些数学、控制算法。方便用户在不同的应用领域的使用。
七、操作系统
        自己写的(调度思想是大牛mango提供的)一个全抢占式操作系统。最大支持32个不同优先级任务(优先级不能相同),支持CPU使用率的统计,任务堆栈使用率的统计,任务的挂起。最大的特点就是简单高效,容易上手。
用户可以根据自己的习惯是否使用操作系统。
到此软件基本的状况就是这样了,下面简单的说下硬件
eBox-SPARK
寓意:星星之火、亦可燎原。希望能让更多的用户参与eBox生态圈的发展中,成为大家都认可的平台。方便大家使用。
上图


这是硬件的基本情况、主控选择了STM32F103C8T6,外设主要包含了一个W5500网络控制器、SD/TF卡、按键、LED。
为什么没有添加更多的外设?
一是成本考虑、二是必要性的考虑。SPARK主要是为了引导大家入门eBox的编程。用排针的方式引出来更通用,可以让用户连接自己的外设,做实验。
eBox的宗旨:
彻底简化STM32编程、打造eBox生态圈!

eBox最大的亮点在于,开源驱动的共享。以后每个人写的代码上传到咱们论坛里,让坛友下载后即可以使用。我一个人能写的驱动数量是有限的,只有更多人参与进来才能让驱动丰富起来!
目前核心内容趋于稳定,才面向大家提供了资料,日后会经常更新的。
eBox花费了我的大量精力和时间,其中包含了无数个通宵达旦和大把的人民币。。。
希望坛友支持下!
放个淘宝连接:https://item.taobao.com/item.htm?spm=a230r.1.14.1.UbbK4q&id=522129603565&ns=1&abbucket=16#detail
不知道算不算阿莫先生认为的广告贴。。。如有不妥,我就删除了连接。希望莫大网开一面,资料是第一个传至本坛的。
























工程是MDK5建立的

shentqlf 发表于 2015-10-15 20:35:52

本帖最后由 shentqlf 于 2015-10-15 22:28 编辑

上传一个模拟量读取的代码
//STM32 RUN IN eBox
#include "ebox.h"
void setup()
{
        ebox_init();
        uart1.begin(9600);
        PA7.mode(AIN);
}

int16_t x;
int main(void)
{
        setup();
        while(1)
        {
                x = analog_read(&PA7);
                uart1.printf("hex = %05d\r\n",x);
                x = analog_read_voltage(&PA7);
                uart1.printf("val = %04dmv\r\n",x);
                uart1.printf("==============\r\n",x);
                delay_ms(1000);
        }
}

再看一个pwm的代码,频率1K,占空比50% = 500/1000*100%
//STM32 RUN IN eBox
#include "ebox.h"

PWM pwm1(&PB8,1000);

//STM32 RUN IN eBox
void setup()
{
        ebox_init();
        pwm1.set_duty(500);

}


int main(void)
{
        setup();
       
        while(1)
        {                      
        }
}

shentqlf 发表于 2015-10-17 17:36:21

本帖最后由 shentqlf 于 2015-10-17 18:24 编辑

kinsno 发表于 2015-10-17 15:33
说好的OS代码呢,没发现呢?

昨天喝高了~~~
导致昨天没能及时更新,对不住网友了。。。
今天整理了下,把操作系统的代码搞上来。
遗留问题:由于核心代码以lib的形式发布,编译器不会重新编译,导致ebox.h中的
#define USE_OS即使设置为1也不会去重新编译核心代码。所以我重新发了一个带os的固件库。一个是
#define USE_OS 0不带操作系统
#define USE_OS 1带操作系统
两个版本。



shentqlf 发表于 2015-10-19 16:56:16

修改按键驱动程序中一个变量名字的错误。。。
BUTTON::BUTTON(GPIO* p_pin, uint8_t pull_up)
{
    pin = p_pin;
    pull_up = pull_up;
}

改为
BUTTON::BUTTON(GPIO* p_pin, uint8_t p_pull_up)
{
    pin = p_pin;
    pull_up = p_pull_up;
}

shentqlf 发表于 2015-10-29 13:16:30

本帖最后由 shentqlf 于 2015-10-29 23:58 编辑

修改一个bug。由于笔误导致的串口1的接收中断无法进入。已修正。


shentqlf 发表于 2015-11-8 13:31:21

vc8fans 发表于 2015-11-6 13:29
都差不多一个月了,总听楼梯响,不见下楼人?????

ebox目前已经开始众筹。众筹链接http://z.elecfans.com/2。我不太清除此楼是否有违阿莫论坛的相关规定。如有可以通知我,可以将此楼删除,或者直接删除此楼回复

shentqlf 发表于 2015-11-26 10:53:50

上传一个最新版本。固件只修改了一些函数名称和变量名称,没有大的改动。
驱动增加了一些
最大的改动是网络部分,网卡的驱动,socket、tcp优化了很多bug,添加了dns。最重要的更新是添加了MQTT的支持。

shentqlf 发表于 2015-11-27 16:28:24

yerrmin 发表于 2015-11-26 17:03
楼主可以创建一个git版本库,这样代码太乱

github已经开通
https://github.com/eboxmaker/ebox_stm32

shentqlf 发表于 2018-5-19 08:27:09

最新代码的地址:
https://github.com/eboxmaker/eBox_STM32F1

ppdd 发表于 2015-10-15 18:34:12

支持!!!!!! 抢到了一个沙发!{:lol:}

farmerzhangdl 发表于 2015-10-15 18:34:25

看起来介绍不错,支持一下

shentqlf 发表于 2015-10-15 18:38:03

farmerzhangdl 发表于 2015-10-15 18:34
看起来介绍不错,支持一下

谢谢支持

honami520 发表于 2015-10-15 18:39:35

做的挺好的,支持

shentqlf 发表于 2015-10-15 18:41:00

honami520 发表于 2015-10-15 18:39
做的挺好的,支持

谢谢大神夸奖

xwiron 发表于 2015-10-15 18:42:38

在用 MDK5 pack写东西...

sunday640 发表于 2015-10-15 18:47:47

不知道 能不能 入门

retome 发表于 2015-10-15 18:49:09

厉害!先下载点资料看看先了{:victory:}

shentqlf 发表于 2015-10-15 18:49:51

sunday640 发表于 2015-10-15 18:47
不知道 能不能 入门

强大的帮助文档,放心

霸气侧漏 发表于 2015-10-15 18:50:07

支持你,大赞

魏道志 发表于 2015-10-15 18:56:12

下载资料学习,谢谢

qwert1213131 发表于 2015-10-15 19:00:27

这个得支持楼主了{:victory:},希望能申精成功

LinjieBao 发表于 2015-10-15 19:03:36

非常好的东西,支持下!

片羽之神 发表于 2015-10-15 19:03:57

mark!好的东西!!

鱼尾之恋 发表于 2015-10-15 19:12:23

嗯,看起来不错。

Vampireyifeng 发表于 2015-10-15 19:12:38

楼主有没有搞到github上?

moment 发表于 2015-10-15 19:16:50

辛苦了,做的真用心。

LOVEBABY 发表于 2015-10-15 19:21:10

楼主精力真好。加油

3050311118 发表于 2015-10-15 19:22:52

怎么感觉怪怪的maple为啥不好用吗?

ly8008csko 发表于 2015-10-15 19:25:34

好东西,比Arduino强太多

sblpp 发表于 2015-10-15 19:26:01

顶一个先,感谢楼主分享。

jsntzxh 发表于 2015-10-15 19:27:17

支持,学习!

weshare 发表于 2015-10-15 19:35:03

容易移植到不同的stm32芯片不?

ccyhyxt 发表于 2015-10-15 19:36:52

看起来很不错,支持楼主,感谢分享

lzy888 发表于 2015-10-15 19:38:10

还没看文档,先问一下,是用的stm32的普通外设库吗?不是cube库吧,操作系统为何不选freertos呢

peiyan 发表于 2015-10-15 19:40:47

很好的东西,感谢楼主分享

huike 发表于 2015-10-15 19:49:30

楼主,最近我也认为STM32的库很渣,但细细一看还是不错的。新的CUBEMX更坑,逼着你用大容量的芯片,不然几下子就给你的FLASH用完。
不过不得不说,CUBEMX的库很漂亮了

howmoney 发表于 2015-10-15 19:52:49

强帖流明!

jesen_2010 发表于 2015-10-15 19:54:26

好东西,谢谢LZ无私分享

yu2008 发表于 2015-10-15 19:58:54

向LZ学习         

shentqlf 发表于 2015-10-15 20:13:32

weshare 发表于 2015-10-15 19:35
容易移植到不同的stm32芯片不?

可以移植,但是现在没做呢。只支持103系列的。

shentqlf 发表于 2015-10-15 20:26:30

huike 发表于 2015-10-15 19:49
楼主,最近我也认为STM32的库很渣,但细细一看还是不错的。新的CUBEMX更坑,逼着你用大容量的芯片,不然几 ...

这个环境很多人还不太习惯吧

shentqlf 发表于 2015-10-15 20:27:00

lzy888 发表于 2015-10-15 19:38
还没看文档,先问一下,是用的stm32的普通外设库吗?不是cube库吧,操作系统为何不选freertos呢 ...

不是的,跟他没关系的,绝对原创!

shentqlf 发表于 2015-10-15 20:27:21

ly8008csko 发表于 2015-10-15 19:25
好东西,比Arduino强太多

我也这么认为。。。

jcrorxp 发表于 2015-10-15 20:27:34

很好啊,但是这种东西对于嵌入式程序员来说是拒绝的。。。

其实跟多是 对JAVA,上位机,3D打印,机器人那些创客。

给了他们很好的简单开发门槛,

但是对于我们来说,学多一种风格,意味着对底层更不熟悉,这个对自己是很不利的。

shentqlf 发表于 2015-10-15 20:27:38

Vampireyifeng 发表于 2015-10-15 19:12
楼主有没有搞到github上?

。。。。。。。

shentqlf 发表于 2015-10-15 20:28:47

jcrorxp 发表于 2015-10-15 20:27
很好啊,但是这种东西对于嵌入式程序员来说是拒绝的。。。

其实跟多是 对JAVA,上位机,3D打印,机器人那 ...

这个我觉得没那么死板的,跟之前编程差不多的,编译环境我都没敢换的。

shentqlf 发表于 2015-10-15 20:29:30

jcrorxp 发表于 2015-10-15 20:27
很好啊,但是这种东西对于嵌入式程序员来说是拒绝的。。。

其实跟多是 对JAVA,上位机,3D打印,机器人那 ...

就是一个正常的工程师的编程思想而已,拿出来跟大家分享下

soos 发表于 2015-10-15 20:44:56

写得不错,不过不开源的,就不折腾了。

shentqlf 发表于 2015-10-15 20:47:20

soos 发表于 2015-10-15 20:44
写得不错,不过不开源的,就不折腾了。

不是不想开源的亲,我也想完全开源,请给我点时间。目前应经开放了除了核心的所有代码了

yuanzhengrong 发表于 2015-10-15 20:50:00

我感觉楼主的方式在未来是趋势,在嵌入式系统中引入面向对象的方法,使用类库封装常用的函数,达到代码复用。

shentqlf 发表于 2015-10-15 20:52:27

yuanzhengrong 发表于 2015-10-15 20:50
我感觉楼主的方式在未来是趋势,在嵌入式系统中引入面向对象的方法,使用类库封装常用的函数,达到代码复用 ...

是的,面向对象的思想是很大程度上提高了代码复用率的,降低开发者重复造轮子的过程

TongIC 发表于 2015-10-15 20:53:16

支持楼主,做的不错!

acchkr 发表于 2015-10-15 21:04:31

关注一下~

shentqlf 发表于 2015-10-15 21:06:40

acchkr 发表于 2015-10-15 21:04
关注一下~

谢谢关注!!!

yue6315018 发表于 2015-10-15 21:16:57

为楼主点赞!

panda1985 发表于 2015-10-15 21:23:27

可不可以理解为,类似arduino ?

why800 发表于 2015-10-15 21:27:21

不错,支持。简单应用可以几个小时搞定。

shentqlf 发表于 2015-10-15 21:30:50

why800 发表于 2015-10-15 21:27
不错,支持。简单应用可以几个小时搞定。

恩,我用这套代码做了一套图书馆的门禁系统。两个星期搞定了(包括硬件周期)。。。。

llssr 发表于 2015-10-15 21:31:50

已经很不错了,虽然不会软件,支持一个

Tsiov 发表于 2015-10-15 21:37:41

看了二楼的例程,确实觉得变简单得多了,希望楼主继续更新更多例程。

whatcanitbe 发表于 2015-10-15 21:37:57

如果是个库,然后卖板。估计也难卖的出去,捧场的人多,掏钱的人少。
如果提供代码,估计有人会买。

humancn 发表于 2015-10-15 21:42:30

好东西,没准是个趋势的

lsy5110 发表于 2015-10-15 21:44:03

关注{:smile:}

shentqlf 发表于 2015-10-15 21:46:22

whatcanitbe 发表于 2015-10-15 21:37
如果是个库,然后卖板。估计也难卖的出去,捧场的人多,掏钱的人少。
如果提供代码,估计有人会买。 ...

正解,其实我也没打算靠板子来挣钱。这套代码主要是为了大家在调试驱动的问题

wicy001 发表于 2015-10-15 21:51:41

很不错,值得学习。 点个赞。

lyg407 发表于 2015-10-15 21:56:00

不错。 支持一下。

mypc16888 发表于 2015-10-15 21:58:59

很好的思路,支持

weshare 发表于 2015-10-15 21:59:32

shentqlf 发表于 2015-10-15 20:13
可以移植,但是现在没做呢。只支持103系列的。

希望可以出可以移植的,不然在我这里用处不大,看看吧,需要就下单,支持下楼主!

hyf88 发表于 2015-10-15 21:59:48

期待开源,楼主那天开源了,记得通知我啊,一定购买板子,

bangbangji 发表于 2015-10-15 22:02:13

做的挺用心的{:victory:}

shentqlf 发表于 2015-10-15 22:03:07

weshare 发表于 2015-10-15 21:59
希望可以出可以移植的,不然在我这里用处不大,看看吧,需要就下单,支持下楼主!
...

有很多人说希望移植到飞思卡尔上,飞思卡尔还是很需要的。

shentqlf 发表于 2015-10-15 22:07:17

hyf88 发表于 2015-10-15 21:59
期待开源,楼主那天开源了,记得通知我啊,一定购买板子,

开源是必然的趋势

hyf88 发表于 2015-10-15 22:07:20

工程样板下载了,好像不是MDK开发环境的吗?

shentqlf 发表于 2015-10-15 22:07:40

hyf88 发表于 2015-10-15 22:07
工程样板下载了,好像不是MDK开发环境的吗?

是的。MDK 515

hyf88 发表于 2015-10-15 22:09:50

shentqlf 发表于 2015-10-15 22:07
是的。MDK 515

哦哦,,我的是4,我说怎么打不开呢,

shentqlf 发表于 2015-10-15 22:11:25

hyf88 发表于 2015-10-15 22:09
哦哦,,我的是4,我说怎么打不开呢,

升吧。。。,坛里有和谐工具

windancerhxw 发表于 2015-10-15 22:16:04

{:handshake:}狂点赞

xuan5195 发表于 2015-10-15 22:16:27

支持下,期待楼主的开源,更完善的。

596142041 发表于 2015-10-15 22:24:34

huike 发表于 2015-10-15 19:49
楼主,最近我也认为STM32的库很渣,但细细一看还是不错的。新的CUBEMX更坑,逼着你用大容量的芯片,不然几 ...

Cube的库实在是用着不怎么方便,还是以前的库函数用着舒服

shentqlf 发表于 2015-10-15 22:41:56

596142041 发表于 2015-10-15 22:24
Cube的库实在是用着不怎么方便,还是以前的库函数用着舒服

哈哈,功能越高级,开销越大,我这套代码设计的时候就特别注意了内存开销。所以占用资源还是很低的

tangmintm8013TM 发表于 2015-10-15 22:55:20

不错

wthzack 发表于 2015-10-15 22:57:05

好的东西,支持下!

ahong2hao 发表于 2015-10-15 23:49:21

这个是把单片机当PLC使用的节奏啊。

对于简单的控制,还是能大幅度的降低开发难度的,支持一下。

shentqlf 发表于 2015-10-16 00:03:37

ahong2hao 发表于 2015-10-15 23:49
这个是把单片机当PLC使用的节奏啊。

对于简单的控制,还是能大幅度的降低开发难度的,支持一下。 ...

有很多山寨的PLC都是STM32做的。。。

ahong2hao 发表于 2015-10-16 00:07:54

shentqlf 发表于 2015-10-16 00:03
有很多山寨的PLC都是STM32做的。。。

PLC的核心不都是单片机吗?

wangyan915205 发表于 2015-10-16 00:21:26

楼主精神可嘉,值得学习!

wxws_wxws 发表于 2015-10-16 01:48:25

好东西呀,不过至少这些驱动要开源,方便自己加

huangqi412 发表于 2015-10-16 07:31:14

支持一把楼主

uzufk 发表于 2015-10-16 08:03:40

支持楼主!

aming2046 发表于 2015-10-16 08:06:56

好东西啊 ,谢谢

lmt50211 发表于 2015-10-16 08:10:19

支技LZ,将开源进行到底。。。

aming2046 发表于 2015-10-16 08:10:49

期待开源啊

dengxiaofeng 发表于 2015-10-16 08:26:17

预祝 楼主 板子 大卖,代码早日开源。给创客 带来更多工具。不过 我个人 是一个 官方库都不想用的人,占用flash ,自从被某32芯片 库伤害过一回就不再用库了,喜欢自己奔。
楼主要做大做强 就要开源 并且 主流芯片 都支持!

qqfirer 发表于 2015-10-16 08:29:57

我也有过这种想法,佩服楼主的毅力。。上班后才知道休息的时间干活没有很大的毅力是干不了的

kinsno 发表于 2015-10-16 08:34:38

本帖最后由 kinsno 于 2015-10-16 08:59 编辑


不错,大赞!

广轻电气091 发表于 2015-10-16 08:35:30

楼主强大,必须支持

kinsno 发表于 2015-10-16 08:35:49

dengxiaofeng 发表于 2015-10-16 08:26
预祝 楼主 板子 大卖,代码早日开源。给创客 带来更多工具。不过 我个人 是一个 官方库都不想用的人, ...

你的网络控制版也卖的很火啊,你是在常州吗?

dengxiaofeng 发表于 2015-10-16 08:37:16

kinsno 发表于 2015-10-16 08:35
你的网络控制版也卖的很火啊,你是在常州吗?

我一直 在常州 呵呵

单飞 发表于 2015-10-16 08:46:35

驱动库是亮点,是多少老工程师的经验和宝贝,能做到开源规范形成气候,也是件了不起的事情。

graycker 发表于 2015-10-16 08:53:07

最近也打算弄个类似的工程模板,先学习下{:victory:}

Honey_comb 发表于 2015-10-16 09:01:40

顶楼主,等固件库{:lol:}

蓝蓝的恋 发表于 2015-10-16 09:03:23

楼主精力充沛,赞一个~{:smile:}

52avr 发表于 2015-10-16 09:11:00

收藏备用,谢谢!

yixin1851 发表于 2015-10-16 09:11:07

厉害,顶一个

shentqlf 发表于 2015-10-16 09:12:20

不是不想开源,是我现在没能力保护它。你们有什么好的开源建议吗?

yujintian 发表于 2015-10-16 09:14:15

这个是好东西,必须支持、学习!

liyang121316 发表于 2015-10-16 09:25:52

关注一下!
页: [1] 2 3 4 5 6
查看完整版本: eBox生态圈:简化STM32编程,4个月完成eBox固件库(申精)