cubemx lan8720模块_通过STM32cubeMX将STM32F767+LAN8720+LwIP+FreeRTOS的以太网实现
本文使用了正点原子的阿波罗开发板,接下来我将粗略的对STM32F767通过STM32cubeMX进行以太网协议配置。
具体步骤
1.首先使能ETH,模式选择RMII;
2.使能LWIP和FREERTOS;
因为阿波罗的开发板PHY芯片的ETH_DXT1和ETH_DXT0用的是PG13,PG14引脚,和默认的不同,所以这里改一下
3.配置时钟,在这里我放上我自己的时钟配置图,只要不标红就行,我用的是25MHz外部晶振作时钟源 ;
4.配置ETH,由于阿波罗开发板的LAN8720芯片的PHYAD0引脚悬空,故PHY Address设置为0;
5.由于我用的STM32cubeMX的版本是将LAN8742A作为默认芯片,所以我们这里不做修改,只用将内部参数改为LAN8720参数即可;
6.配置LWIP,本人这里不使用DHCP获取IP地址等信息,并且我使用的是TCP,所以未对UDP使能,设置如图;
7.配置FREERTOS,我在这里加了两个线程备用
8.按下生成按钮,生成项目,生成时需要选择编译软件为自己用的软件,本人使用的是V5;
由于阿波罗开发板的PHY芯片的RESET引脚是依靠PCF8574的P7位控制,所以我们要在项目中引入PCF8574的代码,以下代码可以在阿波罗资料盘中找到
打开main.c里的加上#include “pcf8574.h”,并在初始化部分将PCF8574初始化
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f7xx_hal.h"
#include "cmsis_os.h"
#include "lwip.h"
#include "gpio.h"
/* USER CODE BEGIN Includes */
#include "pcf8574.h"
/* USER CODE END Includes */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
void MX_FREERTOS_Init(void);
/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/
/* USER CODE END PFP */
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
/**
* @brief The application entry point.
*
* @retval None
*/
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
PCF8574_Init();
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Call init function for freertos objects (in freertos.c) */
MX_FREERTOS_Init();
/* Start scheduler */
osKernelStart();
/* We should never get here as control is now taken by the scheduler */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
打开freertos.c里的加上
#include “gpio.h”
#include “sys.h”
#include “pcf8574.h”
#include “tcp_echoserver.h”,并在主线程将PCF8574初的P7管脚使能
PCF8574_WriteBit(ETH_RESET_IO,0);代码如下
/* Includes ------------------------------------------------------------------*/
#include "FreeRTOS.h"
#include "task.h"
#include "main.h"
#include "cmsis_os.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "gpio.h"
#include "sys.h"
#include "pcf8574.h"
#include "tcp_echoserver.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN Variables */
/* USER CODE END Variables */
osThreadId defaultTaskHandle;
osThreadId myTaskLEDHandle;
osThreadId myTaskTCPHandle;
/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN FunctionPrototypes */
extern void tcp_echoserver_init(void);
/* USER CODE END FunctionPrototypes */
void StartDefaultTask(void const * argument);
void LEDTask(void const * argument);
void TCPTask(void const * argument);
extern void MX_LWIP_Init(void);
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
/**
* @brief FreeRTOS initialization
* @param None
* @retval None
*/
void MX_FREERTOS_Init(void) {
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* USER CODE BEGIN RTOS_MUTEX */
/* add mutexes, ... */
/* USER CODE END RTOS_MUTEX */
/* USER CODE BEGIN RTOS_SEMAPHORES */
/* add semaphores, ... */
/* USER CODE END RTOS_SEMAPHORES */
/* USER CODE BEGIN RTOS_TIMERS */
/* start timers, add new ones, ... */
/* USER CODE END RTOS_TIMERS */
/* Create the thread(s) */
/* definition and creation of defaultTask */
osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
/* definition and creation of myTaskLED */
osThreadDef(myTaskLED, LEDTask, osPriorityIdle, 0, 128);
myTaskLEDHandle = osThreadCreate(osThread(myTaskLED), NULL);
/* definition and creation of myTaskTCP */
osThreadDef(myTaskTCP, TCPTask, osPriorityIdle, 0, 1024);
myTaskTCPHandle = osThreadCreate(osThread(myTaskTCP), NULL);
/* USER CODE BEGIN RTOS_THREADS */
/* add threads, ... */
/* USER CODE END RTOS_THREADS */
/* USER CODE BEGIN RTOS_QUEUES */
/* add queues, ... */
/* USER CODE END RTOS_QUEUES */
}
/* USER CODE BEGIN Header_StartDefaultTask */
/**
* @brief Function implementing the defaultTask thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void const * argument)
{
/* init code for LWIP */
MX_LWIP_Init();
/* USER CODE BEGIN StartDefaultTask */
PCF8574_WriteBit(ETH_RESET_IO,0); //Æô¶¯PHYоƬ
Tcp_Server_Init();
/* Infinite loop */
for(;;)
{
osDelay(1);
}
/* USER CODE END StartDefaultTask */
}
/* USER CODE BEGIN Header_LEDTask */
/**
* @brief Function implementing the myTaskLED thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_LEDTask */
void LEDTask(void const * argument)
{
/* USER CODE BEGIN LEDTask */
/* Infinite loop */
for(;;)
{
osDelay(1);
}
/* USER CODE END LEDTask */
}
/* USER CODE BEGIN Header_TCPTask */
/**
* @brief Function implementing the myTaskTCP thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_TCPTask */
void TCPTask(void const * argument)
{
/* USER CODE BEGIN TCPTask */
/* Infinite loop */
for(;;)
{
osDelay(1);
}
/* USER CODE END TCPTask */
}
接下来我们的开发板连上电脑,保证电脑IP地址和开发板IP地址在同一网段后按Windows+R后输入cmd回车打开CMD,在界面输入ping xxx.xxx.xxx.xxx(xxx代表开发板IP地址),可以得到
这样开发板就ping通了,这个时候就可以引入服务器或是客户端的代码,实现对应功能。
cubemx lan8720模块_通过STM32cubeMX将STM32F767+LAN8720+LwIP+FreeRTOS的以太网实现相关推荐
- STM32cubeMX将STM32F767+LAN8720+LwIP+FreeRTOS的以太网实现
通过STM32cubeMX将STM32F767+LAN8720+LwIP+FreeRTOS的以太网实现 本文使用了正点原子的阿波罗开发板,接下来我将粗略的对STM32F767通过STM32cubeMX ...
- 系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构...
系统管理模块_部门管理_设计本模块中的所有实体并总结设计实体的技巧 设计实体流程 1,有几个实体? 一般是一组增删改查对应一个实体. 2,实体之间有什么关系? 一般是页面引用了其他的实体时,就表示与这 ...
- 论坛模块_版块管理_增删改查实现上下移动
论坛模块_版块管理1_增删改查 设计实体Forum.java public class Forum {private Long id;private String name;private Strin ...
- java部门管理_系统管理模块_部门管理_实现基本的增删改查功能
系统管理模块_部门管理1_实现基本的增删改查功能 先不考虑上级部门 设计实体.表 1.设计实体 Department.java public classDepartment {privateLong ...
- 光纤传感器实验模块_光纤传感器实习模块_实习3振动丈量试验模块doc
自动化专业好吗凭据图安置连合线.贯注电涡流断面与振动台面之间的安置隔绝为线性区域.试验模块输出端TP3接示波器接入±12V电源. 信号源幅度按钮初始为零缓慢增大幅度独揽台面与传感器端面不要碰撞. 用示 ...
- STM32CubeMX+LAN8720+LWIP+FreeRTOS实现网络通讯
STM32CubeMX+LAN8720+LWIP+FreeRTOS实现网络通讯 使用STM32CubeMX可以非常方便的将FreeRTOS+LWIP移植到工程中,本文就是介绍如何利用STM32Cube ...
- Stm32CubeMx lwip+freeRTOS TCP 服务
如何添加lwip参照上一篇 stm32CubeMx lwip + freeRTOS 今天讲一下,如何添加TCP服务 LwIP 提供了三种编程接口,分别为 RAW/Callback API.NETC ...
- 基于zynq的千兆网udp项目_一种基于ZYNQ的四路万兆以太网安全交换机的制作方法...
本实用新型涉及网络安全.网络通信技术领域,尤其是一种基于ZYNQ的四路万兆以太网安全交换机,适用于大中型企业的交换网络. 背景技术: 随着互联网的高速发展,传统的以太网交换机在功能和性能上已不能满足要 ...
- 野火挑战者V2开发板CubeMX+LWIP+FreeRTOS+TCP_Server+TCP_Client实现
首先说一下开发环境:MDK5版本为5.26.2.0,CubeMX版本为6.6.1,FreeRTOS API选择的是 CMSIS v1,LWIP版本为2.1.2.单片机型号为STM32F429IGT6, ...
最新文章
- java抛出自定义异常_10 个深恶痛绝的 Java 异常。。
- 蚂蚁的金融交易系统架构
- 配置Windows server 2008 R2脱机加入域功能
- java redis 主从配置_Redis实现主从复制(MasterSlave)
- 科研实习 | 北京大学智能学院贺笛老师招收NLP/GNN方向科研实习生
- android fragment 菜单栏,android UI:底部菜单栏的学习与制作——Fragment碎片一
- 3376: [Usaco2004 Open]Cube Stacking 方块游戏(带权并查集)
- 坚果云升级后桌面出现一个文件夹
- python get请求下载excel_用Python下载Sharepoint Excel文件
- Windows使用 cwRsync进行文件夹同步
- u3d联机斗地主(1):出牌规则
- B. 在哈尔滨的寒风中
- 微信小程序rich-text富文本图片
- 每次运行项目都会出现这个reload script assemblies
- 用傅里叶卷积实现万物隐身!三星这个LaMa神器可试玩!
- 用layui创建表格
- openjweb1.8 java web应用快速开发平台产品白皮书
- 最新版本Hadoop面试题
- python 中设置IDEL快捷键清屏
- Python【jieba】词性标注表
热门文章
- 关于thinkphp5的报错 mkdir() Permission denied的解决
- linux tcp 内核模块,C – Linux – 内核模块 – TCP头
- 放寒假的硕博研究生将经历什么?
- 女生心中的理想男生!这些条件你符合几条?
- 怪咖发明家,乔布斯给了他四亿,他没要,转身靠发明救了10亿人。
- 弹性式分布数据集RDD——Pyspark基础 (二)
- mysql相交_MySQL相交
- php中unset面试题,php unset和引用——由一道php面试题引发的思考
- 操作系统概念 ppt_智能家居操作系统三国拉锯,要出结果了吗?
- 欧几里得距离网络_使用Tensorflow对象检测模型和OpenCV的社交距离和遮罩检测器...