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

查看: 4397|回复: 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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版