CH390H+STM32F1+LWIP

文章目录

  • 1、CH390芯片介绍
  • 2、电路部分
  • 3、LWIP调试
    • 3.1修改点1
    • 3.2 修改点2
  • 4、结果展示
  • 参考

1、CH390芯片介绍

官网地址: 南京沁恒微电子股份有限公司
在这里插入图片描述
特点:
在这里插入图片描述

2、电路部分

CH390及接口:
在这里插入图片描述
STM32F1引脚:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不含LWIP的demo及LWIP调通demo下载地址:CH390H+STM32F1程序,其中包含无LWIP和有LWIP的两个工程

3、LWIP调试

商家给的demo程序已包含LWIP源码,只是没有用,搞不懂,不知道是不是没调通还是想另收费。

3.1修改点1

LWIP源码不需要做任何修改,唯一需要用户自己实现的就是ethernetif.c中的sys_new()和sys_jiffies(void)函数,有用RTC实现功能的,我这里使用TIM2实现1ms定时。

void TIM2_Init(unsigned int arr, unsigned int psc)
{	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //时钟使能TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除中断标志位TIM_TimeBaseStructure.TIM_Period = arr; //自动重装载周期值	TIM_TimeBaseStructure.TIM_Prescaler =psc; //预分频值  TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMxTIM_ITConfig(  TIM2,TIM_IT_Update,  ENABLE  );//使能更新触发TIM中断//中断分组设置NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  //TIM2中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  //先占优先级0级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2TIM_Cmd(TIM2, ENABLE);  //使能TIMx外设}uint32_t cnt=0;
void TIM2_IRQHandler(void)
{if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET) //溢出中断{cnt++;if(cnt>=0x7FFFFFFF){cnt=0;}}TIM_ClearITPendingBit(TIM2,TIM_IT_Update); //清除中断标志位
}
extern uint32_t cnt;
u32_t sys_now(void)
{//return ((RTC->CNTH << 16) | RTC->CNTL);return cnt;
}u32_t sys_jiffies(void)
{   //return ((RTC->CNTH << 16) | RTC->CNTL);return cnt;
}

3.2 修改点2

在这里插入图片描述
这里有个大坑,也不知道什么原因,之前一直没调通,问商家也没用,不提供技术支持,后面把这个去掉就正常了
以上就是全部修改点,简单吧,源码不在这里大量展示,可以去下载整个工程。

4、结果展示

ping结果:
在这里插入图片描述

回显数据:(板子书TCP server)
在这里插入图片描述
串口打印结果:
在这里插入图片描述

参考

LwIP应用开发笔记之五:LwIP无操作系统TCP服务器
https://www.cnblogs.com/foxclever/p/11921555.html
【WCH以太网接口系列芯片】STM32+CH390+Lwip协议栈简单应用测试:
https://www.cnblogs.com/sw111/p/18112004

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/47079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【WPF】图片剪裁-ImageCropping

【WPF】图片剪裁-ImageCropping 背景技术栈实现思路核心代码界面布局Style处理逻辑使用技巧预览下载背景 机缘巧合吧,当时在全网寻找图像剪裁工具,但大都不能满足需求,于是决定动手写。当然如果只是为了完成这么一个功能就没有必要记录了,主要是不依赖与第三方图像库,且实…

【数据结构】二叉树全攻略,从实现到应用详解

​ &#x1f48e;所属专栏&#xff1a;数据结构与算法学习 &#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ ​ &#x1f341;1. 树形结构的介绍 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做…

Docker Machine 深入解析

Docker Machine 深入解析 引言 Docker Machine 是 Docker 生态系统中的一个重要工具,它简化了 Docker 容器环境的配置和管理过程。本文将深入探讨 Docker Machine 的概念、功能、使用场景以及如何在实际环境中高效利用它。 什么是 Docker Machine? Docker Machine 是一个…

Qt纯代码绘制一个等待提示Ui控件

等待样式控件是我们在做UI时出场率还挺高的控件之一&#xff0c;通常情况下有如下的几种实现方式&#xff1a;1、自定义绘图&#xff0c;然后重写paintEvent函数&#xff0c;在paintEvent中绘制等待图标&#xff0c;通过QTimer更新绘制达到转圈圈的效果。2、 获取一张gif的资源…

SpringBoot下的定时魔法:揭秘@Scheduled注解的无限可能

在这个快节奏的时代&#xff0c;自动化与定时任务成为了提升效率的不二法门。而在Java的Spring Boot框架中&#xff0c;Scheduled注解就像是一位精通时间魔法的巫师&#xff0c;悄无声息地让你的应用按部就班地执行着各种定时任务。今天&#xff0c;就让我们一起揭开它的神秘面…

Ubuntu上安装配置samba服务

Ubuntu上安装配置samba服务 在Ubuntu中安装配置samba共享服务&#xff0c;可以让你在网络上共享文件和打印机。以下是一个相对详细的步骤指南&#xff0c;介绍如何在Ubuntu上安装和配置Samba。 1. 安装Samba 首先&#xff0c;需要安装Samba软件包。打开终端并运行以下命令&a…

Gocator Acquisition for Cognex VisionPro(LMI相机图像获取)

概述 VisionPro 是个很强大的视觉软件, 我们很乐意我们的客户在VisionPro 环境中使用Gocator产品。 实现方法 在 VisionPro 环境下配置 Gocator 产品两种方法: ● 方法一: 创建一个 QuickBuild Job,在 Job 编辑器添加 Job Script,插入 Gocator 的 SDK,编辑简 单脚本就 OK。 …

八、golang基础之reflect反射

文章目录 一、interface 和 反射二、Golang的反射reflect&#xff08;一&#xff09;reflect的基本功能TypeOf和ValueOf&#xff08;二&#xff09;从relfect.Value中获取接口interface的信息&#xff08;三&#xff09;未知原有类型【遍历探测其Filed】&#xff08;四&#xf…

在 Node.js 中使用 axios 配置代理并实现图片并发下载

文章目录 一、创建 Axios 实例二、图片并发下载三、参考资料 一、创建 Axios 实例 可以创建一个 axiosConfig.ts 文件用于创建和更新相关实例&#xff1a; // server/utils/axiosConfig.ts const axios require("axios"); const { HttpsProxyAgent } require(htt…

java.lang.IllegalArgumentException: Illegal character in path at index 40解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

K最近邻(K-Nearest Neighbors, KNN)

K最近邻&#xff08;K-Nearest Neighbors, KNN&#xff09;理论知识推导 KNN算法是一个简单且直观的分类和回归方法&#xff0c;其基本思想是&#xff1a;给定一个样本点&#xff0c;找到训练集中与其最近的K个样本点&#xff0c;根据这些样本点的类别&#xff08;分类问题&am…

Ubuntu 22.04.4 LTS (linux) 安装iftop 监控网卡流量 软件

1 安装iftop sudo apt update sudo apt-get install iftop 2 监控网卡 sudo iftop -i eth0 -n -p 界面最上面&#xff0c;显示的是类似刻度尺的刻度范围&#xff0c;显示流量图形的长条作标尺用的。 中间的< >这两个左右箭头&#xff0c;表示的是流量的进出方向.TX&…

PTA - 嵌套列表求和

使用递归函数对嵌套列表求和 函数接口定义&#xff1a; def sumtree(L) L是输入的嵌套列表。 裁判测试程序样例&#xff1a; /* 请在这里填写答案 */L eval(input()) print(sumtree(L)) # 调用函数 输入样例&#xff1a; 在这里给出一组输入。例如&#xff1a; [1,[2…

邮件飞鸿:深入解析Laravel的邮件系统

邮件飞鸿&#xff1a;深入解析Laravel的邮件系统 在现代Web应用中&#xff0c;邮件服务是与用户交互的重要方式之一。Laravel&#xff0c;作为PHP界的流行框架&#xff0c;提供了一个强大而灵活的邮件系统。本文将深入探讨Laravel的邮件系统如何工作&#xff0c;并通过代码示例…

轻断食1.0.1-july 16th 冥想1.1.1

自己昨天晚上吃了豆皮以后&#xff0c;自己感觉自己还是很饿&#xff0c;然后随即自己又吃了一些东西&#xff08;其实自己可以控制的&#xff0c;但是没有办法&#xff0c;你不知道那种感觉&#xff1a;有一只该死的蚊子&#xff0c;老在自己的耳朵旁边嗡嗡乱飞。&#xff09;…

Python中的sorted()与list.sort():深入解析它们的效率差异

目录 Python中的sorted()与list.sort()&#xff1a;深入解析它们的效率差异内部实现与原理sorted()list.sort() 性能与内存使用内存消耗执行速度适用场景sorted()list.sort() 实例对比结论 Python中的sorted()与list.sort()&#xff1a;深入解析它们的效率差异 在Python编程中…

【Vue随笔】Vue中watch的不同写法

【写在前面】在实际开发中&#xff0c;我们要监听的属性可能是对象中的某个属性&#xff0c;除了对整个对象进行监听以外&#xff0c;我们可以用单引号包裹的形式监听对象中的某个属性。 watch: {searchFormModel.appKey: function (newVal) {if (newVal.includes(全部)) {if (…

昇思25天学习打卡营第23天|基于MindSpore的GPT2文本摘要

这节课主要学习基于MindSpore的GPT2文本摘要。主要包括环境安装、数据集加载与处理、模型构建、模型训练、模型推理五部分内容。 1.首先介绍环境安装 %%capture captured_output # 实验环境已经预装了mindspore2.2.14&#xff0c;如需更换mindspore版本&#xff0c;可更改下面…

go 编译ollama的时候报错:open /dev/null: no such file or directory

go 编译ollama的时候报错&#xff1a;open /dev/null: no such file or directory github.com/xtgo/set: /root/work/go/pkg/tool/linux_amd64/compile: open /dev/null: no such file or directory gonum.org/v1/gonum/blas/gonum: /root/work/go/pkg/tool/linux_amd64/compi…

Spark中的JOIN机制

Spark中的JOIN机制 1、Hash Join概述2、影响JOIN的因素3、Spark中的JOIN策略3.1、Shuffle Hash Join3.2、Broadcast Hash Join3.3、Sort Merge Join3.4、Cartesian Product Join2.5、Broadcast Nested Loop Join1、Hash Join概述 Apache Spark共提供了五种JOIN机制,其中常用的…