前言
因为工作关系需要用到STM32F207ZGTx的芯片,所以公司购买了基于STM32F207ZGT6U芯片的ST开发板NUCLEO-F207ZG。而且要求使用FeeRTOS+Lwip的环境,来进行软件开发,主要目的是通过此环境,运行一个软件下载程序,此程序用到了lwip库封装的socket套接字函数库,通过Tcp请求服务器下载文件包。因为我自己第一次正式做一个关于STM32的程序项目,之前只是在学校学习和了解一些基础,认识比较浅显,所以写下本文来加深自己的学习和了解,并且总计经验分享出来,有问题可以共同探讨。
本文内容:本文章主要讲解其中一个步骤,即通过STM32CubeMx配置NUCLEO-F207ZG开发板运行FreeRTOS+Lwip并ping通
配置软件:STM32CubeMx 6.2.1
开发板:NUCLEO-F207ZG
配置环境:FreeRTOS+Lwip
编译软件:keil 5.27
目录
一、详细步骤
1.在STM32CubeMx软件中配置芯片
打开STM32CubeMx软件选择配置芯片
这里我选择第二项start my project ST Board,因为是基于ST的开发板,所以引脚都是配置好的,直接选择就可以了,第一项选择芯片然后进行需要复杂一些。
2.选择NUCLEO-F207ZG
在左上角选择NUCLEO-F207ZG
3.创建工程配置
点击开发板,选择右上角start project开始创建基于NUCLEO-F207ZG的工程配置
3.1.进入整个工程配置界面
3.2.配置RCC时钟源
(一)、首先我们需要配置RCC时钟源,配置高速时钟HSE,选择Crystal/Ceramic Resonator,低速时钟LSE不使能,开启外部时钟2,下面configuration选项配置NVIC setting 选择使能RCC中断。
(二)、Configuration配置中GPIO settings 配置外部时钟2,选择输出高电平
3.3.配置系统sys
配置系统sys,Debug选择串口Serial Wire, 因为使用FreeRTOS 所以基础时钟源不能选系统时钟源sysTick,所以这里选择TIM2
3.4.配置FreeRTOS
(一)、配置FreeRTOS ,选择CMSIS_V1版本
(二)、开启FreeRTOS任务Task
在Tasks and QueueS选项中配置开启FreeRTOS任务,任务数量根据自己需要,点击Add添加即可
(三)、修改任务名称
这里修改第一个任务的函数名称,任务栈空间大小,以及任务的优先级
这里添加了两个任务task1 和task2, 优先级都为normal ,栈大小stack size为1024字即1024*4字节=4k。
3.5.开启LWIP
(一)、配置configuration
配置configuration-General Settings,DHCP我不需要选择关闭,选择静态ip,这里根据你的实际局域网ip和网关配置即可,不然不能ping通,不能照搬我的ip配置,其他地方默认配置即可
(二)、配置ETH
然后查看ETH配置,如果配置成功,默认mode是RMII模式,然后开启了Ethernet global interrupt其他配置默认即可。
(三)、ETH Configuration-Advanced parameters配置
Configuration-Advanced parameters配置选择PHY默认LAN8742A_PHY_ADDRESS即可
3.6.Clock Configuration
进入Clock Configuration,HCLK根据开发板信息选择最大120Mhz,外部时钟2配置为60MHz,注意,外部时钟如果不是60MHz,会出现不启用的情况
3.7.配置Project Manager
(一)、Project配置
(二)、Code Generator
4.生成工程
点击右上角GENERATE CODE
5.打开工程
在keil中打开工程
6.编译
在keil中编译,没有报错
7.烧录
点击load,烧录程序
注意load之前最好打开debug中的下载好程序后,复位和运行,这样程序下载好之后会直接运行,不然需要在板子上按一下复位键。这里可能会影响,导致ping不通的情况出现
8.查看结果
8.1.运行程序
运行程序后,查看网口的数据灯都是亮着的说明驱动配置是ok的。黑色按键为复位按键
8.2.ping
我们所设置的ip地址,可以ping通,说明我们的配置正确
9.结束
总结
- Dubeg下载时需要提前选在好Reset and Run 这样下载后程序会直接运行,如果你忘记了 ,会导致ping不通的情况发生。
- 注意ETH不要提前配置,先开启FreeRTOS和Lwip,设置完成这两项后,再去查看ETH配置时,都默认配置完成了。自己提前配置好,会导致没有跟Lwip中的网口驱动配置相关联,最好出现ping不通的情况。
- 在keil编译时,如果完全配置正确是不需要对代码进行修改的,直接编译-下载-运行即可。
- 如果按照以上步骤操作,依然出现ping不通的情况,那么建议重复一遍,有可能忽略了某个地方,同时也能加深映像。