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