cubemx+rtos+lwip配置stm32f407初始化ln8720硬件配置部分代码?
时间: 2023-06-01 22:02:09 浏览: 169
以下是一个基本的 CubeMX 配置示例,包括 RTOS 和 LWIP 配置,以及初始化 LN8720 硬件的代码:
1. CubeMX 配置
首先,在 CubeMX 中进行以下配置:
- 选择 STM32F407VG 设备
- 在 RCC 中启用 HSE 和 PLL,设置 SYSCLK 为 168MHz
- 在 NVIC 中启用 SysTick 和 PendSV 中断
- 在 Ethernet 中启用 RMII 接口
- 在 ETH 中启用 DMA 和 MII/RMII 选择
- 在 LWIP 中启用 RAW API,选择 Ethernet PHY 和 RMII 接口
- 在 FreeRTOS 中启用 CMSIS_RTOS_V2 API,选择 SysTick 时钟源为 HCLK/8,选择 PendSV 时钟源为 HCLK
2. LN8720 硬件初始化
在 main.c 文件中添加以下代码,以初始化 LN8720 硬件:
```c
#include "stm32f4xx_hal.h"
#define LN8720_RESET_PIN GPIO_PIN_15
#define LN8720_RESET_PORT GPIOB
void LN8720_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
HAL_GPIO_WritePin(LN8720_RESET_PORT, LN8720_RESET_PIN, GPIO_PIN_RESET);
GPIO_InitStruct.Pin = LN8720_RESET_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LN8720_RESET_PORT, &GPIO_InitStruct);
HAL_GPIO_WritePin(LN8720_RESET_PORT, LN8720_RESET_PIN, GPIO_PIN_SET);
}
```
在 main 函数中添加以下代码调用 LN8720_Init() 函数:
```c
int main(void)
{
HAL_Init();
SystemClock_Config();
/* Configure the Ethernet peripheral */
MX_GPIO_Init();
MX_DMA_Init();
MX_ETH_Init();
/* Initialize the LWIP stack */
MX_LWIP_Init();
/* Initialize FreeRTOS */
MX_FREERTOS_Init();
LN8720_Init(); // 初始化LN8720硬件
vTaskStartScheduler();
while (1)
{
}
}
```
这样就完成了 RTOS、LWIP 和 LN8720 的初始化和配置。
阅读全文