Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
STM32F429
tcpclient
静态ip
10
基于LWIP的TCPClient的静态ip重配置问题
发布于 2021-11-16 11:30:10 浏览:1256
订阅该版
- 主控芯片为STM32F429VGT6,使用静态ip与tcp服务器进行连接没有问题,能正常通信。 - 但是现在想对静态ip进行修改,即想对32位的ip地址的最后8位通过拨码开关进行可配置操作。 在*rtconfig.h*中静态ip的宏定义为 ```c #define RT_LWIP_IPADDR "192.168.3.4" ``` 查询整个项目涉及到*RT_LWIP_IPADDR*,只有在*sys_arch.c*和*ethernetif.c*两个文件中 ```c ipaddr.addr = inet_addr(RT_LWIP_IPADDR); ``` - 现在尝试的操作是,在main.c中定义一个字符数组 ```c char static_ip[20] = {0}; ``` 在启动tcpclient线程之前进行读取拨码开关状态,并将结果追加到static_ip中: ```c void read_pin(void) { //拨码开关 最高位1-----PE7 最低位8-----PE14 int sum = 0; int read_pin[8]; read_pin[0] = HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_7); read_pin[1] = HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_8); read_pin[2] = HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_9); read_pin[3] = HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_10); read_pin[4] = HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_11); read_pin[5] = HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_12); read_pin[6] = HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_13); read_pin[7] = HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_14); for(int i=0;i<8;i++) { if(read_pin[i] == 1) sum+=(0x01<<(7-i)); } rt_sprintf(static_ip,"192.168.3.%d",sum); } ``` 在`rtconfig.h`中重新定义 ```c define RT_LWIP_IPADDR "192.168.3.4" extern char static_ip[20]; define RT_LWIP_GWADDR "192.168.3.1" define RT_LWIP_MSKADDR "255.255.255.0" ``` 修改`sys_arch.c`和`ethernetif.c`两个文件中涉及到`RT_LWIP_IPADDR`的语句 ```c //ipaddr.addr = inet_addr(RT_LWIP_IPADDR); ipaddr.addr = inet_addr(static_ip); gw.addr = inet_addr(RT_LWIP_GWADDR); netmask.addr = inet_addr(RT_LWIP_MSKADDR); ``` 工程编译无报错,将程序烧录后无法与服务器进行连接。 已确保在读取拨码开关操作前对相关*GPIO*进行配置 ```c __HAL_RCC_GPIOE_CLK_ENABLE(); //使能GPIOE时钟 GPIO_Initure.Pin=GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14; //PE7-PE14 拨码开关 GPIO_Initure.Mode = GPIO_MODE_INPUT; //浮空输入 GPIO_Initure.Pull = GPIO_NOPULL; GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH; //高速 HAL_GPIO_Init(GPIOE,&GPIO_Initure); ``` 电路中已实现上拉电阻,现在有两种设想: - 1. 这种配置操作代码实现存在问题 - 2. 在读取拨码开关操作`read_pin()`函数前,系统已配置完`sys_arch.c`和`ethernetif.c`文件中的内容,读取的`static_ip`为空 个人感觉第二种设想占主要原因,因为并不是现在市面上能够买到的板载,所以无法查询板子的相关网络状态。 希望有了解这方面的大神们能够指点指点,在不使用DHCP功能的情况下如何能进行配置,还是说压根无法修改? 麻烦了,谢谢!
查看更多
出出啊
2021-11-16
恃人不如自恃,人之为己者不如己之自为也
read_pin 函数挪到 rt_components_board_init 之前调用。rt_hw_pin_init 之后
2
个回答
默认排序
按发布时间排序
_dyx_越过山丘
2021-11-16
这家伙很懒,什么也没写!
试验过了,有效! 非常感谢!
撰写答案
登录
注册新账号
关注者
0
被浏览
1.3k
关于作者
_dyx_越过山丘
这家伙很懒,什么也没写!
提问
7
回答
3
被采纳
0
关注TA
发私信
相关问题
1
stm32f429如何下载程序到外部flash
2
在stemwin中使用事件集发生断言错误,怎么解决?
3
stm32f429上运行动态模块,加载运行死机
4
野火STM32f429 网络协议驱动移植错误
5
关于STM32CUBE自动生成 multiply defined冲突
6
最新系统-rt-smart,BSP文件夹下STM32F429,编译不通过。
7
stm32在main函数下配置系统时钟,系统会自动更新systick定时器吗?
8
正点原子 f429 阿波罗 ping 不通
9
stm32f429-atk-apollo 移植nand flash 驱动
10
STM32f4移植easyflash分配env空间不足的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部