使用STM32CubeMX创建基于FreeRTOS的lwIP工程

发布者:PeacefulWarrior最新更新时间:2019-07-24 来源: eefocus关键字:STM32CubeMX  reeRTOS  lwIP工程 手机看文章 扫描二维码
随时随地手机看文章

硬件平台:STM32F407VE+DP83848开发板

STM32CubeMX配置:


在Peripherals中ETH的模式选择RMII,在Middlewares中勾选FREERTOS和LWIP,见下图:

在这里插入图片描述

依据硬件环境自行对时钟进行配置,此处略。在LWIP Configuration中对lwIP进行相应的配置,将LWIP_DHCP设为Disable,IP_ADDRESS设为192.168.1.7,NETMASK_ADDRESS设为255.255.255.0,GATEWAY_ADDRESS设为192.168.1.1,见下图:

在这里插入图片描述

在FREERTOS Configuration中新建两个任务,myTaskLED用作控制LED灯的闪烁指示系统运行,myTaskTcpEcho用作TCP服务器,当接收到客户端发来的数据后,把接收到的数据原样返回。注意,myTaskTcpEcho的优先级需较低,以免堵塞其他任务的正常执行,在此Priority设为osPriorityLow,还有就是分配足够的空间以满足任务的执行,在此Stack Size设为1024。见下图:

在这里插入图片描述

最后点击Generate Code生成工程,工程生成后需要将stm32f407xx.h中的宏定义__NVIC_PRIO_BITS由4U改为4,否则编译将会报错。

编译成功后将程序下载至开发板,开发板和电脑用网线直连,至此,在命令行中键入ping 192.168.1.7就可以测试开发板的以太网通讯连接是否正常。另外,参考LwIP TCP/IP stack demonstration for STM32F4x7 microcontrollers (AN3966)将开发板配置为TCP服务器,服务器IP为192.168.1.7,端口为7,当接收到客户端发来的数据后,把接收到的数据原样返回。测试效果,见下图:

在这里插入图片描述

通过将AN3966配套的例程代码添加至taskTcpEcho中即可实现上述功能,代码如下:

void taskTcpEcho(void const * argument)

{

  /* USER CODE BEGIN taskTcpEcho */

  struct netconn *conn, *newconn;

  err_t err, accept_err;

  struct netbuf *buf;

  void *data;

  u16_t len;

  err_t recv_err;


  LWIP_UNUSED_ARG(argument);


  /* Create a new connection identifier. */

  conn = netconn_new(NETCONN_TCP);


  if (conn!=NULL)

  {  

    /* Bind connection to well known port number 7. */

    err = netconn_bind(conn, NULL, 7);


    if (err == ERR_OK)

    {

      /* Tell connection to go into listening mode. */

      netconn_listen(conn);


      while (1) 

      {

        /* Grab new connection. */

        accept_err = netconn_accept(conn, &newconn);


        /* Process the new connection. */

        if (accept_err == ERR_OK) 

        {

          recv_err = netconn_recv(newconn, &buf);

          while ( recv_err == ERR_OK) 

          {

            do

            {

              netbuf_data(buf, &data, &len);

              netconn_write(newconn, data, len, NETCONN_COPY);

            }

            while (netbuf_next(buf) >= 0);


            netbuf_delete(buf);

            recv_err = netconn_recv(newconn, &buf);

          }


          /* Close connection and discard connection identifier. */

          netconn_close(newconn);

          netconn_delete(newconn);

        }

      }

    }

    else

    {

      netconn_delete(newconn);

      printf(" can not bind TCP netconn");

    }

  }

  else

  {

    printf("can not create TCP netconn");

  }

  /* USER CODE END taskTcpEcho */

}


关键字:STM32CubeMX  reeRTOS  lwIP工程 引用地址:使用STM32CubeMX创建基于FreeRTOS的lwIP工程

上一篇:使用STM32CubeMX创建STM32F407工程
下一篇:STM32F407_FreeRTOS_LwIP调试详解一:Cube_MX生成工程

推荐阅读最新更新时间:2024-11-13 14:06

STM32F0 IAP (使用stm32CubeMX)
BootLoader: main里调用函数跳转到APP地址0x8003000 typedef void (*pFunction)(void); #define ApplicationAddress 0x8003000 void UserAppStart(void) { if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000) { /* Jump to user application */ JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4); J
[单片机]
STM32CubeMX】1,STM32之GPIO端口输入模式配置
主要参考这两篇文章 https://blog.csdn.net/flaming999/article/details/52487904 https://blog.csdn.net/kevinhg/article/details/17490273 2、推挽输出与开漏输出的区别 推挽输出:可以输出高,低电平,连接数字器件;开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内). 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止. 要实现 线与 需要用OC(open collector)门电路.是两个参数
[单片机]
【<font color='red'>STM32CubeMX</font>】1,STM32之GPIO端口输入模式配置
玩转STM32CubeMX | 开发环境
开发环境搭建 1.Keil MDK-ARM软件简介及安装 1.1 Keil MDK-ARM简介 Keil MDK,也称MDK-ARM,目前由三家国内代理商提供技术支持和相关服务。MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。MDK-ARM专为微控制器应用而设计,不仅易学易用,而且功能强大,能够满足大多数苛刻的嵌入式应用。 MDK-ARM有四个可用版本,分别是MDK-Lite、MDK-Basic、MDK-Standard、 MDK-Professional。所有版本均提供一个完善的C / C++开发环境,其中MDK-Professional还包含大量的中间库
[单片机]
玩转<font color='red'>STM32CubeMX</font> | 开发环境
STM32CubeMx生成的工程中使用Printf函数调试和IAP
一、STM调试信息打印方法。 1. 新建stm32cubemx工程,配置工程。 我用的是STM32cubeMx版本: Version 4.27.0, cube Version V1.0。 2. 在stm32cubemx工程,配置工程,勾选使用FreeRtOs系统。 注意,勾选左边的,freertos,使用系统。stm32做的,非常方便。 3. 生成带系统FreeRtos的源码工程(我这里基于keil MDK v5) 4. 生成工程,然后用keil打开,在源码里面添加代码,使得USART1重定向到标准Printf函数中输出。 在generated file里面,勾选:generate periheral init
[单片机]
<font color='red'>STM32CubeMx</font>生成的<font color='red'>工程</font>中使用Printf函数调试和IAP
STM32CubeMX系列 | I2C总线
1. 简介 1.1 I2C总线介绍 I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速I2C总线一般可达400kbps以上。下面从物理层和协议层两方面来了解I2C I2C物理层:可连接多个I2C通讯设备,支持多个通讯主机和从机;每个连接到总线的设备都有一个独立的地址,主机利用这个地址进行不同设备之间的访问;总线通过上拉电阻接到电源,当I2C设备空闲时会输出高阻态;多主机同时使用总线时,利用仲裁方式觉得由哪个设备占用总线;有三种
[单片机]
STM32CubeMX】10,STM32之FSMC 之TFTLCD,移植,显示变量
1,学了这章之后,主要掌握了怎么移植标准库的函数 2,对.c .h文件的#include文件的修改 3,在LCD中,最关键的是读写命令地址的书写 4,LCD的初始化可以看给的参考例程 5,变量的显示sprintf函数https://baike.baidu.com/item/sprintf/9703430?fr=aladdin http://www.openedv.com/posts/list/61386.htm 6, 在stm32 例子的 c语言 程序中看到这样一句 *(__IO uint16_t *) (((uint32_t)0x60020000) ) 7,fsm
[单片机]
【<font color='red'>STM32CubeMX</font>】10,STM32之FSMC 之TFTLCD,移植,显示变量
STM32开发笔记18: STM32CubeMX中Debug Serial Wire的设置问题
单片机型号:STM32L053R8T6 使用STM32CubeMX时,可发现在SYS下,有Debug Serial Wire选项,如下图所示。 使能该选项后,相应的IO引脚,会变为调试引脚,如下图所示。 最初,认为必须选中该选项才能对STM32进行仿真调试,今天调试时,忽略了该选项,发现仿真调试依然正常,并不受影响。也就是说,勾选该选项与否,都可以进行仿真调试,那么该选项的作用时什么呢? 答案:将其显示指定为调试引脚,不可当作其它功能复用,如果将该引脚用做其它功能,则不再具有仿真功能。另外,再补充一点,我在项目中,由于引脚数目有限,将SWDIO复用为IO口使用,使用NUCLEO自带的仿真
[单片机]
STM32开发笔记18: <font color='red'>STM32CubeMX</font>中Debug Serial Wire的设置问题
基于STM32CUBEMX驱动TMOS模块STHS34PF80(4)----中断获取信号
概述 HS34PF80的数据准备信号提供了一种机制,允许设备在新的测量数据可读取时通知系统,并触发同步操作,通过正确配置相关寄存器,可以确保系统及时捕获和处理来自设备的新数据,从而提高整体性能和响应能力。 检测人体的存在和动作,并通过特定的通信接口发送检测结果。 最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:615061293 。 样品申请 https://www.wjx.top/vm/OhcKxJk.aspx# 视频教程 https://www.bilibili.com/video/BV1NF41117S6/ 参考Demo https://github.com/STMicroelectronics/STMems_S
[单片机]
基于<font color='red'>STM32CUBEMX</font>驱动TMOS模块STHS34PF80(4)----中断获取信号
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved