FreeRTOS LwIP STM32CubeMX

前言

STM32CubeMX_以太网_RMII_LwIP_UDP
很早之前的这篇中用的是RAW API, 直接在While(1)中轮询, 不能多线程工作, 本篇用STM32CubeMX 5.4.0创建FreeRTOS LwIP工程, 可以多线程. 仍然使用的是ST官方的NUCLEO-F767ZI板子, 板子外挂的网络PHY芯片是LAN8742.

新建工程

步骤如下:

  • MCU选择: 打开 STM32CubeMX, 点击 ACCESS TO MCU SELECTOR, 选择 STM32F767ZI
  • Pinout & Configuration -> System Core -> SYS -> Debug 选择 Serial Wire, 调试端口配置为SWD, Timebase Source选择一个TIM3, 这样可以避免HAL库和FreeRTOS都默认用Systick.
  • Pinout & Configuration -> System Core -> RCC -> HSE 选择 Crystal/Ceramic Resonator
  • Clock Configuration:
    在这里插入图片描述

ETH配置

Pinout & Configuration -> Connectivity -> ETH -> Mode 选择 RMII:
在这里插入图片描述
然后发现引脚中默认的如下图, 和原理图不匹配, 主要是ETH_TX_ENETH_TXD0, 找到原理图中的引脚, 单击自己去重映射就好了, 配置完后引脚应为下面两图:
在这里插入图片描述
在这里插入图片描述
原理图中LAN8742的PHYAD0引脚下拉到地, PHY Address改为0:
在这里插入图片描述
勾选ETH中断(要用FreeRTOS):
在这里插入图片描述

FreeRTOS配置

Pinout & Configuration -> Middleware -> FREERTOS, Interface选择CMSIS_V2:
在这里插入图片描述
点击Tasks and Queues中的defaultTask, Stack Size从128(运行不起来)改为1024或更大:
在这里插入图片描述

LwIP配置

Pinout & Configuration -> Middleware -> LwIP, 勾选使能:
在这里插入图片描述
Configuration -> General Setting中把默认的DHCP改为静态IP: 192.168.0.10.
在这里插入图片描述

生成代码

Project Manager -> Project -> Browse 选择工程位置(Project Location), 填入工程名(Project Name), Toolchain/IDE 选择 MDK-ARM.

Project Manager -> Code Generator -> 勾选Copy only the necessary library files, 还有Generate peripheral initialization as a pair of .c/.h files per periphral

点击右上角 GENERATE CODE 按钮生成代码, 打开工程.

Keil 点击魔术棒或者Project -> Options for Target ..., 默认配置DebugST-link Debugger, 点击Setting -> Flash Download -> 勾选Reset and Run, 这样下载后可以自动复位运行.

编译下载运行ping

第一次编译可能时间比较长, 编译完后下载. 连接好网线到PC, PC注意切换以太网口, 别搞成WiFi了, IP地址如下:
在这里插入图片描述
因为STM32CubeMX里面配置的静态IP是 192.168.0.10, 所以PC的IP需要同一网段任意其他IP即可.

编译下载, 打开windows终端, ping一下192.168.0.10:
在这里插入图片描述
可以ping通, 程序正常运行.

微信公众号

欢迎扫描二维码关注我的微信公众号, 及时获取最新文章:
在这里插入图片描述

发布了203 篇原创文章 · 获赞 105 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/weifengdq/article/details/103412448