你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

「话说嵌入式」攀上JavaScript大树之Espruino On STM32

[复制链接]
slotg 发布时间:2017-12-26 15:39
本帖最后由 slotg 于 2017-12-26 15:42 编辑
8 C4 [7 q$ y7 @0 [+ N% |2 p! @! G& G* K# k

都说搞嵌入式不如搞互联网,工资高,前途好,很光鲜!嵌入式呢不管是单片机还是嵌入式Linux,永远都是在默默地藏在幕后,低调得令人发指。就像是如火如荼的Android上,嵌入式也就搞搞驱动,搞一搞BSP,吃力却并不讨好。

+ W" c+ U) U+ T) Z' c

相比直接使用高级语言,学习嵌入式更容易理解从芯片到产品产生的过程,今天呢阿圆就带大家撩一撩现在火得不行的JavaScript(好像现在在前端大家也不直接写JavaScript了,开始写TypeScript,阿圆表示,要跟上互联网发展的节奏还是得努力一点),今天的主角就是开源的嵌入式JavaScript解释器—Espruino.

+ o; [$ g1 v, ]3 h

Espruino除了支持Espruino自己开发的开发板外(其实也是STM32),还支持芯片为STM32F1/F4系列的其它厂商的开发板,还包括ESP8266,ESP32等。像是STM32F1系列STM32,基本人手一个吧!像阿圆手上就有自己打样出来的STM32F103RBT6开发板。不过如果使用自己的开发板就要看自己开发板的硬件支持不支持Espruino里提供的接口了,比如SD卡,WIFI,LED,Button等。

9 @6 a+ m0 h; I& P2 h# ?; l

好了,打开Espruino的官网,

http://www.espruino.com

: K1 _/ S5 E, e

根据官网的描述


' c  J: [8 A# S$ X

01.jpg


' f- ^9 e6 x- ]" g6 K- X) C

可以发现OLIMEXINO-STM32使用的就是STM32F103RB的单片机,呆会我们就只要下这个单片机的binary烧录即可。
4 A& j0 p' M2 [# D3 ]


9 x- A. ]+ H' v5 a  q7 |0 C

找到Espruino的官网,下载最新的Release v1.94,阿圆己经替大家找好下载链接啦

http://www.espruino.com/files/espruino_1v94.zip

关于烧录,如果用的是ST-Link V2那是比较简单,只要去官网下载最新的ST-Link Uitility就可以了

http://www.st.com/zh/development-tools/stsw-link004.html

阿圆用的是J-Link烧录起来还有点麻烦

首先要打开J-Link的 J-Flash,新建一个工程

然后在Options里打开Project Settings

点击Target Interface选择好烧录方式

0 b4 b: ^& b) [- w5 v5 A* ^

02.jpg


) c: H( x  B9 N1 l$ l& {7 ?3 {' v' t

在CPU里选择Device,再选择好所使用的STM32


0 F% [' V' h" c! a

03.jpg

$ s9 Z3 \. |7 P" Q$ l& F

设置好后点击Target Connect进行连接,如果连接成功会有提示。

打开File->Open Data File 选择espruino_1v94_olimexino_stm32.bin然后进行烧录即可。

烧录完后复位下正常就可以啦!


! G* y: C: W- E

默认的Espruino使用的是STM32的USART1,波特率为9600 8N1

04.jpg

4 N2 k% c/ h9 P2 {- t3 E- g$ v7 c

一切正常就可以进行到Espruino的Console啦

支持简单的Math库,字符串的拼接也是没有问题,再验证下函数的调用,也还不错,基本语法都是支持的。


' U) q. L2 r- z" I

05.jpg

3 j& G) [8 J( D5 c0 s( ?3 K

让我们来试下复杂一点的JavaScript例子,尝试在Console不断地输出true/false


  t/ H" e$ Q5 w% }& c  F$ g6 c

06.jpg


5 H  F1 ^- s" k# M

07.jpg


" a4 F( B( j5 c$ j. K* A6 u

开始运行toggle函数,确实有按500ms的间隔打出来

6 i, @5 o+ ]; i

08.jpg

; a2 O7 o! w3 x8 L: c0 ]- k' V

如果想改变间隔可以用下面的命令

changeInterval(i, 200)

如果需要停止则执行下面的命令

clearInterval(i)

如果将演示用的print换成温度读取呀或者是传输数据到服务器,那就很有意义了。


" J" `- t" t3 M6 s% x

用JavaScript搞单片机确实有点意思嘛~默认的Espruino内建函数也非常丰富,如以下

  • •function acceleration()

  • •function analogRead(pin)

  • •function analogWrite(pin, value, options)

  • •variable arguments

  • •function atob(binaryData)

  • •function btoa(binaryData)

  • •function changeInterval(id, time)

  • •function clearInterval(id)

  • •function clearTimeout(id)

  • •function clearWatch(id)

  • •function compass()

  • •function decodeURIComponent(str)

  • •function digitalPulse(pin, value, time)

  • •function digitalRead(pin)

  • •function digitalWrite(pin, value)

  • •function dump()


    : A; k4 [3 b* I$ u

等等,还有许多没有列出来,队了自带的一些库,Espruino还支持使用require进行库的扩展,不过呢阿圆用的是自己的开发板,不能直接使用库函数。其支持的库函数还包括伺服电机控制,WIFI控制,SD卡文件系统,LCD显示屏等等,大家可以去购买一块官方的开发板来玩一玩或者根据现有的硬件对Espruino进行编译也未尝不可,因为他是完全免费开源的。不过一点要注意,销售出去的板子上默认是不能带Espruino的,记住了哟!

+ a. ?: ]" d3 c+ J" v0 C

借此机会做嵌入式的小伙伴们也可以借机学习下JavaScript,同时呢还可以再了解下JavaScript是怎么跑起来的,是不是很不错?欢迎点选收藏关注!

& G+ ?+ ?9 F/ d$ N- t

转载原帖:http://www.izhangchao.com/internet/internet_233724.html

" T6 {$ T1 s$ y4 y( B
赞 收藏 评论0 发布时间:2017-12-26 15:39

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版