ETH-CH32v20x_v307在Freertos中添加以太网

  CH32V307VCT6在Freertos中移植以太网

本文主要阐释如何在Freertos操作系统中移植以太网。

1、如何获取一个使用Freertos工程

V307可以从mounriver studio新建Freertos工程或者直接使用官网给出的Freertos例程,编译烧录到开发中,检查是否工作正常,V20x系列的EVT例程中,Freertos应用于CH32V203F6-CH32V203F8-CH32V203G6-CH32V203G8-CH32V203K6-CH32V203K8-CH32V203C6-CH32V203C8等使用启动文件为CH32v20x_D6宏的芯片,若想使用CH32V203RBT6和CH32V208芯片的Freertos则需要修改相应的启动文件,可根据Freertos工程下的CH32v20x_D6文件和SRC文件夹下的CH32v20x_D6文件对比,来对CH32V203RBT6和CH32V208的启动文件进行相应修改,主要是开启机器模式,关闭硬件压栈等,V20x在操作系统中不支持硬件压栈,V307可以,所以V20x的中断声明只能使用软件压栈,如图:

对启动文件的修改主要修改的是804寄存器和mstatus寄存器,修改可参考青稞V4内核手册和Freertos工程下启动文件对应项修改值进行修改,该手册可在官网搜索qingke获得:

2、内置十兆以太网TCP客户端的使用

   V307直接使用EVT例程中的以太网程序即可,对于V20x系列,例程中默认使用V208以太网,所以若想使用V203RBT6的以太网,则需要修改相应启动文件,在工程属性设置中,修改相应的宏即可,如下图,修改后编译烧录检查是否可以正常工作:

3、Freertos添加以太网

当Freertos和以太网都都工作正常时,就要开始着手移植了,这里我们使用CH32V307VCT6做示例,首先,将以太网库驱动文件即NetLib文件夹,复制到Freertos文件夹下。

在工程路径中添加NetLib路径,添加以太网库

 

将TCPClinet工程下user文件夹中的net_config.h文件复制到Freertos工程user文件夹中

将以太网函数,复制到Freertos中,主函数作为一个线程,同时将中断函数复制过来,增加freertos进入和释放中断函数,中断声明也不要忘记

   修改驱动文件即eth_driver.c中的延时函数,修改成freertos专用的延时函数,不然会卡死,使用freertos的延时函数时不要忘记添加头文件。

   如果修改之后,运行程序发现,线程卡在以太网中,无法跳到别的线程,则可以将以太网线程优先级调至最低,如果想使用高优先级以太网线程,就需要在以太网线程循环中加1个系统节拍延迟(如果以太网线程和别的线程优先级相同则不需要加延迟),如果发现以太网无法ping通了,那可以将以太网中定时器2去掉,将定时器2中断中的程序放到freertos系统时钟中断中,并保证每WCHNETTIMERPERIOD(程序中默认设置为10ms)时间调用一次定时器2中断中的程序,注意freertos系统频率,如图。

   

posted @ 2023-05-11 14:28  WCH_CH32  阅读(750)  评论(0编辑  收藏  举报