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


  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值