STM32 基础系列教程 36 - Lwip_dns

2023-11-10

前言

域名系统(英文:DomainNameSystem,缩写:DNS)是互联网的一项服务。它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCPUDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

开始时,域名的字符仅限于ASCII字符的一个子集。2008年,ICANN通过一项决议,允许使用其它语言作为互联网顶级域名的字符。使用基于Punycode码的IDNA系统,可以将Unicode字符串映射为有效的DNS字符集。因此,诸如“XXX.中国”、“XXX.台湾”的域名可以在地址栏直接输入并访问,而不需要安装插件。但是,由于英语的广泛使用,使用其他语言字符作为域名会产生多种问题,例如难以输入,难以在国际推广等

本实险主要目的是学习stm32 + LWIP的DNS功能, 利用DNS实现得到得到网站的IP地址。

 

示例详解

基于硬件平台: MCU 的型号是 STM32F407VGT6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。本示例所用的最小系统板原理图:

 

    1. 关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:

 

      1. 系统时钟树

 

 

 

 

 

      1. 网口配置

      1. RCC配置

      1. SYS配置

 

      1. Lwip配置(开启DHCP,开启DNS)

 

 

      1. 引脚配置

 

      1. 中断配置(保持默认即可)

 

 

    1. 工程代码
      1. 在main.c 中加入如下图所示代码:

 

同时给工程加入我们事先准备好的tcp_echoserver.c文件并指定tcp_echoserver.h路径:

 

 

 

 

 

 

 

    1. 编译工程,下载代码,首先来DHCP分配的ip地址,在路由器的客户端列表中可以看到ip地址为192.168.1.103:

 

 

 

 

 

 

    1. ,电脑输入命令win+r,输入CMD 回车,再输入 ping 192.168.1.103 ,给果如下,说明我们的网络接口及LWIP已成功运行:

开启程序仿真,在My_Dns_CallBack 中加入断点,可以看到DNS解析后的结果:

同样在TCP调试工具也可以看到DNS上报结果:

直接用命令行输ping www.baidu.com 的结果,可以看到DNS解析得到的结果有同能还不一样:

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!

 

 

 

 

 

 

 

 

文中资料下载,在公众号里给十三发消息:

下载|STM32基础系列教程36

 

关注十三公众号

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32 基础系列教程 36 - Lwip_dns 的相关文章

  • c项目makefile多重定义错误

    这个问题是一个对应于创建的repexthis问题 在我的嵌入式 C 项目中 我有两个独立的板 我想为每个板创建两个 c 文件 master c 和 Slave c 其中包含自己的特定main 功能 我使用 stm32cumbemx 生成带有
  • GCC - 如何停止链接 malloc?

    我正在努力将我的代码缩减到最小的骨架大小 我使用的是只有 32k 闪存的 STM32F0 需要很大一部分闪存用于数据存储 我的代码已经有大约 20k 闪存大小 其中一些是由于使用了 STM32 HAL 函数 我可以在以后需要时对其进行解释和
  • 以字符串形式接收数字(uart)

    我正在尝试通过 uart 接收一个包装为字符串的数字 我发送数字 1000 所以我得到 4 个字节 空字符 但是 当我使用 atoi 将数组转换为数字并将整数与 1000 进行比较时 我并不总是得到正确的数字 这是我用于接收号码的中断处理函
  • CMSIS 库是否应该包含在版本控制中? [复制]

    这个问题在这里已经有答案了 通常 我曾经在版本控制中包含芯片供应商 ST 提供的设备特定标头和源以及 CMSIS Core 标头 数量不多 也没有更新的习惯 我使用STM32微控制器 但我不使用立方体框架 or the 标准外设库 最近 我
  • 优化 ARM Cortex M3 代码

    我有一个 C 函数 它尝试将帧缓冲区复制到 FSMC RAM 这些函数将游戏循环的帧速率降低至 10FPS 我想知道如何分析反汇编的函数 我应该计算每个指令周期吗 我想知道CPU把时间花在哪里 在哪个部分 我确信该算法也是一个问题 因为它的
  • 134-基于stm32单片机矿井瓦斯天然气浓度温湿度检测自动通风系统Proteus仿真+源程序...

    资料编号 134 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 ds1302时钟 DHT11温湿度 电机 蜂鸣器 制作一个基于stm32单片机矿井瓦斯天然气浓度温湿度检测自动通风系统Proteus仿真 2 通过DH
  • 137-基于stm32单片机智能保温杯控制装置Proteus仿真+源程序

    资料编号 137 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DS18B20传感器 电机 制作一个基于stm32单片机智能保温杯控制装置Proteus仿真 2 通过DS18b20传感器检测当前保温杯水的温度 并且
  • rt-thread studio中新建5.0不能用

    文章目录 一 版本对比 二 文件和文件夹打斜杠 在使用RT Thread studio创建新工程5 0版本的时候 结果发现新建完成之后程序不能正常运行 但是创建4 10版本的时候却能运行 那肯定是新版本出现了BUG 一 版本对比 首先对比了
  • STM32 GPIO工作原理详解

    STM32 GPIO介绍 1 STM32引脚说明 GPIO是通用输入 输出端口的简称 是STM32可控制的引脚 GPIO的引脚与外部硬件设备连接 可实现与外部通讯 控制外部硬件或者采集外部硬件数据的功能 以STM32F103ZET6芯片为例
  • HAL 锁定和解锁函数如何使用以及为什么?

    我试图理解另一位程序员编写的代码 它使用了I C http en wikipedia org wiki I C2 B2C通信以将数据写入 STM32 微控制器的 EEPROM 一般来说 我理解他的代码是如何工作的 但我不明白他为什么使用HA
  • 解决KEIL编译慢问题

    两种方案 使用v6版本的ARM Compiler 如果v6版本编译不过 必须使用v5版本的 则可以勾选掉Browse Information选项 提升很明显 1分多钟能优化到几秒 看代码量 但是这个有个弊端 在KEIL中会影响函数跳转 建议
  • VS Code 有没有办法导入 Makefile 项目?

    正如标题所说 我可以从现有的 Makefile 自动填充 c cpp properties json 吗 Edit 对于其他尝试导入 makefile 的人 我找到了一组脚本 它们完全可以实现我想要实现的目标 即通过 VS Code 管理
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • 嵌入式开发--STM32G4系列片上FLASH的读写

    这个玩意吧 说起来很简单 就是几行代码的事 但楞是折腾了我大半天时间才搞定 原因后面说 先看代码吧 读操作 读操作很简单 以32位方式读取的时候是这样的 data IO uint32 t 0x0800F000 需要注意的是 当以32位方式读
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • systick定时器

    systick定时器 文章目录 前言 一 前期疑惑 二 解答 1 关于systick是阻塞的吗 2 非阻塞 三 软件编写 总结 前言 这边记录systick相关知识点 一 前期疑惑 在学习systick志气啊 其实对于systick还是一脸
  • Cortex-M3与M4权威指南

    处理器类型 所有的ARM Cortex M 处理器是32位的精简指令集处理器 它们有 32位寄存器 32位内部数据路径 32位总线接口 除了32位数据 Cortex M处理器也可以有效地处理器8位和16位数据以及支持许多涉及64位数据的操作
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • 使用 STM32 USB 设备库将闪存作为大容量存储设备

    我的板上有这个闪存IC 它连接到我的STM32F04 ARM处理器 处理器的USB端口可供用户使用 我希望我的闪存在通过 USB 连接到 PC 时被检测为存储设备 作为第一步 我在程序中将 USB 类定义为 MSC 效果很好 因为当我将主板
  • 使用 STM32F0 ADC 单独读取不同的输入

    STM32F072CBU 微控制器 我有多个 ADC 输入 并且希望单独读取它们 STMcubeMX 生成样板代码 假设我希望按顺序读取所有输入 但我无法弄清楚如何纠正这个问题 这篇博文 http blog koepi info 2015

随机推荐

  • 在线安装visual studio时failed signature validation的原因和解决办法

    这两天给笔记本重装了系统 笔记本的系统是windows 8 1 在装visual studio的时候想换个2017试试 就使用在线的方式装了个2017 community 感觉不错 所以准备把开发的虚拟机里面的2015也换成2017 开发虚
  • T1 mapping的用途

    弥漫性反应性纤维化 其特征是心脏中胶原蛋白的不成比例积累 长期以来被认为是舒张功能障碍 心力衰竭和心源性猝死病因的重要因素 因此 心肌间质成为强烈关注的主题 但结构变化的弥散性使得通过使用常规T1加权成像几乎不可能检测到间质纤维化 在过去几
  • 如何看待区块链下的新型共享经济?

    有业内人士认为 区块链技术天然适合大规模协作的一些应用场景 在共享经济当中 不仅涉及的参与主体多 环节复杂 而且要同时协调一个大规模数量的参与者 这是应用区块链技术的一片沃土 区块链对共享经济带来的颠覆性意义已经不言而喻 共享经济的所有参与
  • Android开发之单位详解(dp、sp、px、in、pt、mm)

    开发这么长时间 一直没关注过长度单位的用法 一直都是一根筋的使用者dp sp 后来才发现 除了这两个以外 Android还提供了pt px in mm 开发中看到有很多人不太理解dp sp和px的区别 现在这里介绍一下dp和sp dp也就是
  • golang 接口

    接口 一组method 签名的组合 通过interface 来定义对象的一组行为 interface 就是一组抽象方法的集合 interface 类型 interface 类型定义了一组方法 如果某个对象实现了某个接口中的方法 则此对象就实
  • Java读配置文件

    读取配置文件的方案 public String getProperty String name String k Properties prop new Properties String key null String val null
  • 华为OD机试 - 跳格子2(Java)

    题目描述 小明和朋友玩跳格子游戏 有 n 个连续格子组成的圆圈 每个格子有不同的分数 小朋友可以选择以任意格子起跳 但是不能跳连续的格子 不能回头跳 也不能超过一圈 给定一个代表每个格子得分的非负整数数组 计算能够得到的最高分数 输入描述
  • Android-Service的生命周期

    与Activity类似 Service也有自己的生命周期函数 在不同的时刻 系统会调用对应的Service生命周期函数 不过与Activity声明周期相比 Service的声明周期更加简单 我们通过官方给出的一张图片来体会一下 Servic
  • Low Elements--AT

    题目描述 Given is a permutation P1 PN of 1 N Find the number of integers i 1 i N that satisfy the following condition For an
  • Selenium3 - 当启动selenium时,跳过配置的chromedriver,使用内置低版本浏览器启动

    报错 今天我在运行selenium的时候 发现会直接弹出一个名为NW js的弹窗且其chromium 是68 我寻思我配的chromedriver已经是94 的了 虽然它也能正常启动但是用着怎么也不对劲 我搜索良久没有答案 就仔细检查了一下
  • 利用爬虫下载批量图片

    这是利用python爬取豆瓣Top250电影图片 并下载在本地的一个文件夹中的例子 用了urllib request urlretrieve 直接上代码了 注释说的很清楚哦 import urllib import urllib reque
  • CMD命令

    打开命令提示符 1 添加服务 输入 sc create 服务名称 binPath 目录的绝对路径 exe 2 删除服务 输入 sc delete 服务名称 3 修改服务描述 输入 sc description 服务名称 描述
  • 过拟合以及解决办法

    过拟合 先谈谈过拟合 所谓过拟合 指的是模型在训练集上表现的很好 但是在交叉验证集合测试集上表现一般 也就是说模型对未知样本的预测表现一般 泛化 generalization 能力较差 如图所示 图片来源 coursera 吴恩达机器学习公
  • D0822-API01

    Math类 工具类有 Math Objects Arrays LocalDateTime Period Duration DateTimeFormatter Math类中包含一些对数据进行数学运算的方法 而该类中的方法全都是静态的 像这样的
  • 函数的相关和卷积

    1 卷积的定义 卷积满足交换律 分配律 结合律 也具有位移不变性以及缩放性质 2 互相关的定义 变量替换后有 上述两式完全等价 性质 1 互相关是两个函数间存在相似性的量度 2 由上述 2 式可得 3 相关运算和卷积运算的区别 对相关来说
  • 【STM32】DHT11温湿度模块传感器详解&代码

    一 DHT11产品介绍 DHT11是数字温湿度传感器 测量范围 湿度20 95 温度0 50 广泛应用于加湿器 温湿度计 空调 汽车等领域 二 典型应用电路 如上图DATA引脚用于MCU与DHT11之间的通讯和同步 采用单总线数据格式 一次
  • Swing:使用顶层容器

    介绍Swing顶层容器 翻译Using Top Level Containers url http java sun com docs books tutorial uiswing components toplevel html url
  • 如何查看iphone的uuid_如何查找Mac,iPhone和iPad的UUID

    Mac iPhone和iPad都分配了通用唯一标识符 UUID 这些代码是特定于每个设备的 类似于序列号 开发人员使用它们来分别标识每个代码 这是您需要知道的 UUID是由字母和数字组成的字符串 形成唯一的模式 您的Mac iPhone和i
  • (z)无杂散动态范围SFDR--影响通信机性能的因素

    无杂散动态范围SFDR Spurious Free Dynamic range 已经成为一个重要的性能指标 直接影响到通信系统的等级水平 尤其是对数字化的VHF UHF宽频段接收机 SFDR这个指标 越来越受到设计者与质量监督人员的重视 一
  • STM32 基础系列教程 36 - Lwip_dns

    前言 域名系统 英文 DomainNameSystem 缩写 DNS 是互联网的一项服务 它作为将域名和IP地址相互映射的一个分布式数据库 能够使人更方便地访问互联网 DNS使用TCP和UDP端口53 当前 对于每一级域名长度的限制是63个