当前位置: 首页 > article >正文

STM32 使用8720 通过LWIP发送数据

一、硬件IOC

在这里插入图片描述
在这里插入图片描述

1、GPIO
在这里插入图片描述

2、NVIC
在这里插入图片描述

3、SYS
在这里插入图片描述

4、RCC
在这里插入图片描述

5、ETH
在这里插入图片描述

6、USART
在这里插入图片描述
在这里插入图片描述

7、LWIP
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、软件函数

1、Main

/* USER CODE BEGIN Includes */
#include "ytcesys.h"
/* USER CODE END Includes */

/* USER CODE BEGIN 2 */
ethreset();
MX_LWIP_Init();
OPEN_USART1();
printf("system start");
/* USER CODE END 2 */

/* USER CODE BEGIN WHILE */
while (1)
{
MX_LWIP_Process(); //LWIP 轮询任务
/* USER CODE END WHILE */

2、Ytcesys

#include "ytcesys.h"

//
//STM32cubeMX V5.6.0
//固件库:STM32Cube FW_H7 V1.7.0
//C语言编译环境:MDK5 IDE-Version: uVision V5.20.0.0
//实验名称:YT07 H743 GPIO
//开发者:原 野 数码 电 子
//技术支持: www .ytce. co m
//


//延时1微妙
void HAL_Delay_us(uint32_t nus)
{
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000000);
HAL_Delay(nus);
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
}


//LAN8720A 复位
void ethreset(void)
{
HAL_GPIO_WritePin(ETH_RESET_GPIO_Port,ETH_RESET_Pin,GPIO_PIN_RESET); //复位
HAL_Delay(100); 

HAL_GPIO_WritePin(ETH_RESET_GPIO_Port,ETH_RESET_Pin,GPIO_PIN_SET); //恢复
HAL_Delay(10); 
}

//串口1
// 重定向函数,有这个函数就可以直接使用 printf()函数
int fputc(int ch,FILE *f)
{
uint8_t temp[1]={ch};
HAL_UART_Transmit(&huart1,temp,1,2); //
return 1;
}

uint16_t Uart1_Rx_Cnt = 0; //接收数据的实际长度
uint8_t aRxBuffer; //接收的一个字节
uint8_t Uart1_RxBuff[1000]; //接收的数据

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) //回调函数
{

uint8_t data[20]={"received data is:"};
UNUSED(huart);
if((Uart1_RxBuff[Uart1_Rx_Cnt-1] == 0x0A)&&(Uart1_RxBuff[Uart1_Rx_Cnt-2] == 0x0D)) //判断结束
{
HAL_UART_Transmit(&huart1, data, 20, 100);
HAL_Delay(10);
HAL_UART_Transmit(&huart1, (uint8_t *)&Uart1_RxBuff, Uart1_Rx_Cnt,100); //将接收的数据发送出去,操作修改这里
Uart1_Rx_Cnt = 0;
//memset(Uart1_RxBuff,0x00,sizeof(Uart1_RxBuff)); //清空数组
}
HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1); //再次开启接收中断
}

void OPEN_USART1(void) //打开USART1需要运行2个函数
{
__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);//开启串口中断
HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1); //开启接收中断
}

3、ytcesys.h


#ifndef __YTCESYS_H
#define __YTCESYS_H
#include "stm32F4xx_hal.h"
//#include "i2c.h"
#include "gpio.h"
#include "usart.h"
#include "stdio.h"
//
//STM32cubeMX V5.6.0
//固件库:STM32Cube FW_H7 V1.7.0
//C语言编译环境:MDK5 IDE-Version: uVision V5.20.0.0
//实验名称:YT07 H743 GPIO
//开发者:原 野 数码电 子
//技术支持: www .ytce. co m
//


#define u8 uint8_t
#define u16 uint16_t

extern void HAL_Delay_us(uint32_t nus);
extern void ethreset(void);


//串口1
extern uint16_t Uart1_Rx_Cnt; //接收数据的实际长度
extern uint8_t aRxBuffer; //接收的一个字节
extern uint8_t Uart1_RxBuff[1000]; //接收的数据
void OPEN_USART1(void); //打开USART1需要运行2个函数

#endif



http://www.kler.cn/a/286610.html

相关文章:

  • ESP32 I2S音频总线学习笔记(二):I2S读取INMP441音频数据
  • Python爬虫学习第三弹 —— Xpath 页面解析 实现无广百·度
  • Nginx开发01:基础配置
  • Canny 边缘检测
  • 【Python实现机器遗忘算法】复现2020年顶会CVPR算法Selective Forgetting
  • C语言,无法正常释放char*的空间
  • k8s helm
  • 【MySQL】字节跳动MySQL连环40问(网图)
  • WHAT - 通过 react-use 源码学习 React(UI 篇)
  • LabVIEW布尔值比较与信号状态上升沿下降沿检测
  • jsmn输出
  • using showdown js with openAi streaming response
  • 详解CSS
  • Jenkins Environment Injector Plugin 插件详解
  • C语言 | Leetcode C语言题解之第390题消除游戏
  • Vue项目“npm run serve”总卡住的问题 已解决
  • 深度强化学习算法(七)(附带MATLAB程序)
  • 鸿蒙Harmony开发实战:自定义圆形组件-Canvas
  • NLP从零开始------文本中阶序列处理之语言模型(完整版)
  • 基于机器学习的酒店评论分析与推荐系统设计
  • JavaWeb实战教程:如何打造旅行社网站系统,提升在线服务能力?
  • Ubuntu 搭建 GLFW 环境及其相关测试 demo
  • UE开发中的设计模式(四) —— 组合模式
  • 使用自制COCO数据集进行PaddleDetection模型训练
  • 论文阅读:VideoMamba: State Space Model for Efficient Video Understanding
  • 【学习笔记】卫星通信NTN 3GPP标准化进展分析(四)- 3GPP Release18内容