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

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

[复制链接]
slotg 发布时间:2017-12-26 15:39
本帖最后由 slotg 于 2017-12-26 15:42 编辑

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


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


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


好了,打开Espruino的官网,

http://www.espruino.com


根据官网的描述


01.jpg


可以发现OLIMEXINO-STM32使用的就是STM32F103RB的单片机,呆会我们就只要下这个单片机的binary烧录即可。


找到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选择好烧录方式


02.jpg


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


03.jpg


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

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

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


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

04.jpg


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

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


05.jpg


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


06.jpg


07.jpg


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


08.jpg


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

changeInterval(i, 200)

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

clearInterval(i)

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


用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()


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


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


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


收藏 评论0 发布时间:2017-12-26 15:39

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版