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

查看: 4402|回复: 22

Nucleo 303 基SmeshStudio(mbed离线开发平台)的程序开发示例

  [复制链接]

18

主题

174

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2015-6-3 10:23:21 | 显示全部楼层 |阅读模式
本帖最后由 ╮倾壹伳柔情 于 2015-6-3 13:07 编辑

先简单介绍一下SmeshStudio(官网摘录http://mbed.smeshlink.com/guide)当前物联网开发领域流行着三大可商用的开源软件平台,它们分别是Arduino, mBedContiki,它们在各自的应用领域都有着自己的优势,简单来说,Arduino重在简单易用,可以方便地连接各类传感器;mBed重在支持广泛,应用开发通用性强;Contiki重在网络功能强大,应用开发互联方便。但对于开发者来说,这三者都没有提供让开发者满意的本地化IDE开发环境,如Arduino的开发环境过于简单,mBed只提供在线开发环境,Contiki干脆全部用命令行操作,这在一定程度上降低了开发者的开发效率,同时也减缓了这三者的推广进度。当然,从未来的发展来看,mBed将会实现6LowPan等各种通讯协议,同时也将具有Arduino的简单应用性,绝对是未来的主流。SMeshStudio就是在这样的背景下产生的,它基于Eclipse和Arduino Eclipse Plugin开发(感谢他们做出的伟大产品),支持Arduino, mBed和Contiki应用的开发、编译和上载(不支持调试),可以大大加快开发者使用上述开源系统进行应用开发的过程。
个人觉得Mbed挺有意思的,所以想试了玩玩,只是需要网络不太方便,而SmeshStudio正好也支持mbed,就试试了,确实挺方便,整个示例让想玩mbed又没网的朋友试试。

首先当然是下载SmeshStudioIDE(具体下载地址:https://pan.baidu.com/s/1kTgIEof
下载完成就可以使用了,基于eclipseIDE
打开IDE显示如图:

1

1

选择菜单File->new->project,弹出如图对话框:

2

2
选择mbedArduinoContiki->new mbed,点击next,填入project name,点击next选择自己的板子和COM口及Nucleo产生的磁盘盘符,我的配置如图:

3

3
第一个下拉框内要选择mbed的那个txt
第二个下拉框选择Nucleo F303,当然其他板子可以选择其他的
下面两个分别选择COM口和盘符

设置好后点击finishok了,出现project目录。

如图打开project2.cpp里面已经有一个可以运行的led亮灭程序,编译下载,板子就可以运行了。

4

4

修改了一下程序,通过nucleo303板子上自带的按钮控制led灯的亮灭。如图:

5

5


// Do not remove the include below
#include "project1.h"
DigitalOutled(LED1);
DigitalInbtn(USER_BUTTON);
int main()
{
    while(1)
    {
        led=!btn;
        wait(1);
    }
}
// Auto Added by "SMeshLink SMeshStudio"
编译下载后既可以通过板子上的用户按钮控制灯的亮灭。按下灯亮,不按灯灭。
附:
板子的引脚定义在mbed->core->hal->pinmap.h->PinName.h,如图:

6

6

#ifndef MBED_PINNAMES_H
#define MBED_PINNAMES_H

#include "cmsis.h"

#ifdef __cplusplus
extern "C" {
#endif

// See stm32f3xx_hal_gpio.h and stm32f3xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
#define STM_PIN_DATA(MODE, PUPD, AFNUM)  ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
#define STM_PIN_MODE(X)   (((X) >> 0) & 0x0F)
#define STM_PIN_PUPD(X)   (((X) >> 4) & 0x07)
#define STM_PIN_AFNUM(X)  (((X) >> 7) & 0x0F)
#define STM_MODE_INPUT              (0)
#define STM_MODE_OUTPUT_PP          (1)
#define STM_MODE_OUTPUT_OD          (2)
#define STM_MODE_AF_PP              (3)
#define STM_MODE_AF_OD              (4)
#define STM_MODE_ANALOG             (5)
#define STM_MODE_IT_RISING          (6)
#define STM_MODE_IT_FALLING         (7)
#define STM_MODE_IT_RISING_FALLING  (8)
#define STM_MODE_EVT_RISING         (9)
#define STM_MODE_EVT_FALLING        (10)
#define STM_MODE_EVT_RISING_FALLING (11)
#define STM_MODE_IT_EVT_RESET       (12)

// High nibble = port number (0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, 7=H)
// Low nibble  = pin number
#define STM_PORT(X) (((uint32_t)(X) >> 4) & 0xF)
#define STM_PIN(X)  ((uint32_t)(X) & 0xF)

typedef enum {
    PIN_INPUT,
    PIN_OUTPUT
} PinDirection;

typedef enum {
    PA_0  = 0x00,
    PA_1  = 0x01,
    PA_2  = 0x02,
    PA_3  = 0x03,
    PA_4  = 0x04,
    PA_5  = 0x05,
    PA_6  = 0x06,
    PA_7  = 0x07,
    PA_8  = 0x08,
    PA_9  = 0x09,
    PA_10 = 0x0A,
    PA_11 = 0x0B,
    PA_12 = 0x0C,
    PA_13 = 0x0D,
    PA_14 = 0x0E,
    PA_15 = 0x0F,

    PB_0  = 0x10,
    PB_1  = 0x11,
    PB_2  = 0x12,
    PB_3  = 0x13,
    PB_4  = 0x14,
    PB_5  = 0x15,
    PB_6  = 0x16,
    PB_7  = 0x17,
    PB_8  = 0x18,
    PB_9  = 0x19,
    PB_10 = 0x1A,
    PB_11 = 0x1B,
    PB_12 = 0x1C,
    PB_13 = 0x1D,
    PB_14 = 0x1E,
    PB_15 = 0x1F,

    PC_0  = 0x20,
    PC_1  = 0x21,
    PC_2  = 0x22,
    PC_3  = 0x23,
    PC_4  = 0x24,
    PC_5  = 0x25,
    PC_6  = 0x26,
    PC_7  = 0x27,
    PC_8  = 0x28,
    PC_9  = 0x29,
    PC_10 = 0x2A,
    PC_11 = 0x2B,
    PC_12 = 0x2C,
    PC_13 = 0x2D,
    PC_14 = 0x2E,
    PC_15 = 0x2F,

    PD_2  = 0x32,

    PF_0  = 0x50,
    PF_1  = 0x51,

    // Arduino connector namings
    A0          = PA_0,
    A1          = PA_1,
    A2          = PA_4,
    A3          = PB_0,
    A4          = PC_1,
    A5          = PC_0,
    D0          = PA_3,
    D1          = PA_2,
    D2          = PA_10,
    D3          = PB_3,
    D4          = PB_5,
    D5          = PB_4,
    D6          = PB_10,
    D7          = PA_8,
    D8          = PA_9,
    D9          = PC_7,
    D10         = PB_6,
    D11         = PA_7,
    D12         = PA_6,
    D13         = PA_5,
    D14         = PB_9,
    D15         = PB_8,

    // Generic signals namings
    LED1        = PA_5,
    LED2        = PA_5,
    LED3        = PA_5,
    LED4        = PA_5,
    USER_BUTTON = PC_13,
    SERIAL_TX   = PA_2,
    SERIAL_RX   = PA_3,
    USBTX       = PA_2,
    USBRX       = PA_3,
    I2C_SCL     = PB_8,
    I2C_SDA     = PB_9,
    SPI_MOSI    = PA_7,
    SPI_MISO    = PA_6,
    SPI_SCK     = PA_5,
    SPI_CS      = PB_6,
    PWM_OUT     = PB_4,

    // Not connected
    NC = (int)0xFFFFFFFF
} PinName;

typedef enum {
    PullNone  = 0,
    PullUp    = 1,
    PullDown  = 2,
    OpenDrain = 3,
    PullDefault = PullNone
} PinMode;

#ifdef __cplusplus
}
#endif

#endif




01 mbed 中国 - mbed的数字输入输出.pdf (890.94 KB, 下载次数: 24)

11 mbed 中国 - mbed TF卡的使用.pdf

下载

870.91 KB, 下载次数: 12, 下载积分: ST金币 -1

12 mbed 中国 - mbed I2C通讯.pdf

下载

1.27 MB, 下载次数: 23, 下载积分: ST金币 -1

13 mbed 中国 - mbed 单总线通讯.pdf

下载

1.16 MB, 下载次数: 24, 下载积分: ST金币 -1

14 mbed 中国 - mbed 802.15.pdf

下载

997.98 KB, 下载次数: 11, 下载积分: ST金币 -1

15 mbed 中国 - mbed无线广播数据发送与Sniffer.pdf

下载

997.88 KB, 下载次数: 12, 下载积分: ST金币 -1

16 mbed 中国 - mbed点对点无线数据发送.pdf

下载

888.52 KB, 下载次数: 14, 下载积分: ST金币 -1

17 mbed 中国 - mbed无线通信高级应用.pdf

下载

1.55 MB, 下载次数: 11, 下载积分: ST金币 -1

18 mbed 中国 - mbed-rtos操作系统概述.pdf

下载

1.38 MB, 下载次数: 27, 下载积分: ST金币 -1

19 mbed 中国 - mbed-rtos的线程同步.pdf

下载

626.02 KB, 下载次数: 11, 下载积分: ST金币 -1

20 mbed 中国 - mbed-rtos的线程间通讯.pdf

下载

777.87 KB, 下载次数: 11, 下载积分: ST金币 -1

21 mbed 中国 - mbed-rtos在中断服务程序中的应用.pdf

下载

522.99 KB, 下载次数: 11, 下载积分: ST金币 -1

22 mbed 中国 - mbed USBDEVICE通讯应用.pdf

下载

1.8 MB, 下载次数: 11, 下载积分: ST金币 -1

23 mbed 中国 - mbed USBHOST通讯应用.pdf

下载

1.45 MB, 下载次数: 21, 下载积分: ST金币 -1

24 mbed 中国 - mbed 计算机网络应用基础.pdf

下载

1015.81 KB, 下载次数: 12, 下载积分: ST金币 -1

25 mbed 中国 - mbed TCP应用程序基础.pdf

下载

1.88 MB, 下载次数: 24, 下载积分: ST金币 -1

26 mbed 中国 - mbed UDP程序设计基础.pdf

下载

967.02 KB, 下载次数: 11, 下载积分: ST金币 -1

27 mbed 中国 - mbed HTTP应用程序设计.pdf

下载

1.24 MB, 下载次数: 22, 下载积分: ST金币 -1

28 mbed 中国 - mbed HTTP服务端程序设计.pdf

下载

1.17 MB, 下载次数: 24, 下载积分: ST金币 -1

29 mbed 中国 - mbed NTP、SMTP、WEBSOCKET程序设计.pdf

下载

778.94 KB, 下载次数: 13, 下载积分: ST金币 -1

30 mbed 中国 - mbed HTTP-RPC应用.pdf

下载

423.82 KB, 下载次数: 12, 下载积分: ST金币 -1

31 mbed 中国 - 红外遥控器的使用.pdf

下载

978.74 KB, 下载次数: 16, 下载积分: ST金币 -1

32 mbed 中国 - ADC和DAC的使用.pdf

下载

679.49 KB, 下载次数: 14, 下载积分: ST金币 -1

33 mbed 中国 - 光敏电阻的使用.pdf

下载

436.13 KB, 下载次数: 10, 下载积分: ST金币 -1

34 mbed 中国 - 数码管的使用.pdf

下载

830.56 KB, 下载次数: 12, 下载积分: ST金币 -1

35 mbed 中国 - 三轴加速度ADXL345的使用.pdf

下载

657.55 KB, 下载次数: 14, 下载积分: ST金币 -1

36 mbed 中国 - 舵机的使用.pdf

下载

741.18 KB, 下载次数: 10, 下载积分: ST金币 -1

37 mbed 中国 - MXOLED12864屏的使用.pdf

下载

574.42 KB, 下载次数: 14, 下载积分: ST金币 -1

38 mbed 中国 - 超声波模块的使用.pdf

下载

616.99 KB, 下载次数: 10, 下载积分: ST金币 -1

39 mbed 中国 - 按键的使用.pdf

下载

718.13 KB, 下载次数: 10, 下载积分: ST金币 -1

40 mbed 中国 - 蜂鸣器的使用.pdf

下载

471.75 KB, 下载次数: 11, 下载积分: ST金币 -1

41 mbed 中国 - 外置LED亮灯的使用.pdf

下载

327.93 KB, 下载次数: 12, 下载积分: ST金币 -1

42 mbed 中国 - 点亮板载LED的使用.pdf

下载

307.87 KB, 下载次数: 11, 下载积分: ST金币 -1

43 mbed 中国 - mbed Contiki扩展基础.pdf

下载

513.42 KB, 下载次数: 12, 下载积分: ST金币 -1

44 mbed 中国 - mbed Contiki快速体验.pdf

下载

896.22 KB, 下载次数: 10, 下载积分: ST金币 -1

45 mbed 中国 - mbed Contiki 6LowPan初步体验.pdf

下载

744.38 KB, 下载次数: 15, 下载积分: ST金币 -1

46 mbed 中国 - mbed Contiki 使用6LowPan网络访问Http服务.pdf

下载

428.96 KB, 下载次数: 10, 下载积分: ST金币 -1

47 mbed 中国 - mbed contiki 通过OpenWrt路由器访问6LowPan网络.pdf

下载

653.5 KB, 下载次数: 15, 下载积分: ST金币 -1

<
回复

使用道具 举报

307

主题

3125

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-7-17
发表于 2015-6-3 10:53:21 | 显示全部楼层
谢谢楼主
回复 支持 反对

使用道具 举报

100

主题

3617

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2015-6-3 11:17:39 | 显示全部楼层
牛人,赞一个
回复 支持 反对

使用道具 举报

47

主题

3404

回帖

30

蝴蝶豆

版主

最后登录
2020-12-7
发表于 2015-6-3 11:18:19 | 显示全部楼层
多谢分享,
回复 支持 反对

使用道具 举报

47

主题

1636

回帖

7

蝴蝶豆

论坛元老

最后登录
2020-10-28
发表于 2015-6-3 11:49:35 | 显示全部楼层
这个既然是离线的,请问是不是得把所有的库、源代码都得下来才行呢?
不是C++吗,看着还是c啊?
回复 支持 反对

使用道具 举报

33

主题

1243

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-3-9
发表于 2015-6-3 12:22:28 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

18

主题

174

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2015-6-3 12:42:37 | 显示全部楼层
moyanming2013 发表于 2015-6-3 11:49
这个既然是离线的,请问是不是得把所有的库、源代码都得下来才行呢?
不是C++吗,看着还是c啊? ...

库已经封装在里面了,不用自己下载,看最后一个图左边部分
回复 支持 反对

使用道具 举报

18

主题

174

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2015-6-3 12:44:40 | 显示全部楼层
moyanming2013 发表于 2015-6-3 11:49
这个既然是离线的,请问是不是得把所有的库、源代码都得下来才行呢?
不是C++吗,看着还是c啊? ...

是C++,同见图左边部分里面展开有相关api之类
回复 支持 反对

使用道具 举报

18

主题

174

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2015-6-3 12:47:00 | 显示全部楼层
本帖最后由 ╮倾壹伳柔情 于 2015-6-3 12:54 编辑

串口字符自发自收只要一下几句。
// Do not remove the include below
#include "project1.h"

DigitalOut led(LED1);
DigitalIn btn(USER_BUTTON);

Serial USART_COM2(SERIAL_TX,SERIAL_RX);

void echouart()

{

        USART_COM2.putc(USART_COM2.getc());

}

int main()
{
        USART_COM2.attach(&echouart,SerialBase::RxIrq);

            while (1)

            {

                led=0;

                wait(1);

                led=1;

                wait(1);

            }
}
//  Auto Added by "SMeshLink SMeshStudio"
7.png
回复 支持 反对

使用道具 举报

57

主题

1159

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-12-6
发表于 2015-6-3 12:50:29 | 显示全部楼层
谢楼主分享
回复 支持 反对

使用道具 举报

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