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

NUCLEO-L452RE快速入门之mbed的使用

[复制链接]
elementary 发布时间:2017-6-19 22:32
本帖最后由 cai1104475967 于 2017-6-19 22:33 编辑 ! M: b4 N, u, J, A9 w0 A' j* b

最近弄了一块STM32 Nucleo-64 board的板子,型号使NUCLEO L452RG,是ST新出的NUCLEO板子,白色的板子很漂亮,很喜欢这样的风格。说到ST官方出的Nucleo板子,最早接触是14年,也是活动低价买了一块,当时连51都不熟,所以买回来也就吃灰了,后来那块板子就用来下载,说实话,Nucleo板子自带的st-link下载器真的很实用,还支持usb转串口,省去了开发时需要连接一大堆线的麻烦。

现在实习的单位是做科技教育的,使用的平台是Arduino,相信很多人都有听说过,不过我也是去实习后才接触Arduino,总的来说,Arduino适合0基础的人学习,因为通过Arduino可以避开硬件驱动层的学习,所以就算是毫无编程经验的人,也能通过一两个例程,快速入门。ST出的这一类Nucleo板子其实都是支持Arduino的,实习单位用的Arduino拓展板完美兼容Nucleo上的Arduino插口。

- R. I+ I9 c$ @

不过目前网上能找到的Nucleo移植Arduino的包不太全,新出的这块STM32 Nucleo-64 board当然也没有,所以Arduino IDE事实上还不支持这块板子,不过没关系,因为我并不打算用Arduino来开发这块板子,因为ST官方为我们提供了类似Arduino的开发环境,也就是在线开发环境mbed。

mbed的链接为http://developer.mbed.org/platforms/ST-Platforms/,其实使用usb连接Nucleo板子到电脑,电脑会识别出一个存储盘,打开新识别的存储盘,里面就存储有一个mbed的开发链接。


# B0 v. S0 T- C2 F+ B

打开mbed的网址,就可以连接上ST的在线开发环境,先要注册一个账户,这样你写的代码就会保存到你的账户里了。注册完以后在Hardware选择自己的开发板,mbed目前支持上百个开发板,选择你的开发板然后点击右上角的complier,就可以打开mbed在线IDE了,如图所示。

, I8 v% R' N' W* L. j+ ^
  g! j& ]0 k% H! F; w

虽然是在线开发,其实mbed的界面和大多数IDE类似,只要熟悉keil等软件的都很容易操作。我们可以看一下它的目录文件结构,一个是你自己建立的工程文件夹,一个是mbed文件夹,这个mbed提供了相当数量的方法给我们使用,只要点开它就能看到这些方法的使用形式。不过唯一的缺点就是,这些方法的具体实现代码我们看不到,也不能更改和复制。

使用mbed一样能像使用Arduino那样避开硬件驱动层,mbed提供的方法也都是面向对象的,只要看得懂单词,就能够操作开发板上引出来到端口。具体操作这些端口时,它们的名称可以查看“STM32 Nucleo-64 board用户手册”,里面有详细的引脚名称对照图。另外,同一引脚在mbed和Arduino中并不相同,也就是如果要把Arduino的程序移植到nucleo板子,需要重新设置引脚。

+ e: _7 G+ m3 @1 S  j% O0 Z/ {

了解了mbed的开发流程,那就开始动手吧!我移植了一个我之前写的用于Arduino的LED点阵屏的库文件,我在后面会附上源文件。程序比较简单,主函数如下:

  1. #include<LED_Lattice_Screen.h>
    / Q6 r* X- p5 G6 a
  2. uint8_tdisp1[]={0x10,0x38,0x54,0x92,0x10,0x10,0x10,0x10};//箭头
    ' Q& j% s* D, R( D5 R5 T! [/ W
  3. uint8_tdisp2[]={0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C};//笑脸int main()) N' z" h7 L3 _$ }! S/ H8 ~2 J
  4. 2 r- u% p4 p) P
  5. {5 G& G1 g. U* L! d2 ~
  6.     led_lattice_screen Lattic_Screen1,Lattic_Screen2;//声明两个led点阵屏类Lattic_Screen1和Lattic_Screen2
    ! n# I7 [; \+ E* j+ k( I
  7.     Serial pc(USBTX,USBRX);//开启USB串口+ R4 {, S, R3 u
  8.     Lattic_Screen1.Max7219_Init(PA_10,PB_5,PA_8);//初始化Lattic_Screen1连接的引脚,分别为Din、CS、CLK) n% p9 X; I2 h# {8 G
  9.     Lattic_Screen2.Max7219_Init(PA_10,PB_3,PA_8);//初始化Lattic_Screen2连接的引脚$ |1 I( t3 d2 p7 a/ A0 H& {
  10.     pc.printf("STM32 Nucleo-64\r\n");
    6 t3 j2 B" g8 K  B1 i
  11.     pc.printf("Thanks for EEWorld!\r\n");+ y4 I7 B0 B! \. y4 B+ G# k
  12.     while(1)# q% ?* j) M& P3 h+ N
  13.     {
    , |% t$ |$ z- M2 Z% q
  14.        Lattic_Screen1.Display_Run_Screen(disp1,Down2Up,10);//动态显示数组disp1
    0 @- L) p1 I1 E3 f! H7 Z
  15.        Lattic_Screen2.Display_Full_Screen(disp2,500);//静态显示数组disp2         ! K8 C3 s* z% ?1 |& p( [
  16.     }5 {% ~0 O% Y( K. b" h8 Y+ J
  17. }
复制代码

首先板子启动后,通过串口打印一串字符后,进入循环,然后交替显示两个LED点阵屏。

成员函数Display_Run_Screen()用于显示动态图,可以设置方向和速度,Display_Full_Screen()用于显示静态图,支持闪烁延时。
7 q7 O; D( e! l+ w& Q# p# d# M7 A另外说明的是,在这个库文件中,我使用了一个delay_ms()延时函数,主要是因为我选择的开发板是Nucleo-L476RG,处理器是可能和STM32L452RE的时钟有区别,mbed提供的wait系列延时函数会跑死,所以我又单独建立了一个delay_ms函数用于延时。

编写好代码后点击mbed的complier按钮,就可以进行编译连接了,编译完后会自动产生下载,把编译好的bin文件下载下来烧写到Nucleo板子上就可以看到效果了,如下图所示。


+ J1 L. k  ?4 L" c& N

+ e1 x' N6 t7 Z# O6 T- l4 o
( g" I3 o% L/ B+ G

最后说一下烧写。ST官方也提供了STM单片机的烧写软件ST_LinkUtility,使用板载的ST_Link就可以把hex或者bin文件烧写到单片机里。目前ST_LinkUtility最新版本为V4.0版本,我之前使用的是V3.9版本,在使用时一致连接不上板子,后来更新到V4.0版本后就可以,这是因为STM32L452是ST新出的一款处理器,所以旧版本没有支持该处理器的烧写方案。后面会提供ST_Link Utility最新版的下载连接,也可以到官网下载。

好了,关于STM32Nucleo-64 board和mbed的使用就先到这里了,其实mbed的用户体验效果并不算太好,尤其是对网速有要求,不过这也有一个非常明显的优点,就是任何软件环境都支持,因为是在线IDE嘛,所以不管你是换系统还是换电脑,都不必重新搭建,就能有一个完全一样的开发环境。如有什么地方讲得不好,望各位坛友指出!

源代码: 源代码.zip (3.79 KB, 下载次数: 40)

评分

参与人数 1 ST金币 +6 收起 理由
MrJiu + 6 很给力!

查看全部评分

收藏 1 评论3 发布时间:2017-6-19 22:32

举报

3个回答
MrJiu 回答时间:2017-6-21 09:37:17
支持一个!!!!!!!!!
zero99 回答时间:2017-6-26 13:16:26
谢谢楼主的分享,也希望大家把手上的开发板好好利用起来~
carmelo 回答时间:2018-11-19 14:17:19
还有更多资料吗?

所属标签

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