SC0082 AT32在FreeRTOS上运行LwIP协议栈
示例目的演示在FreeRTOS上运行LwIP协议栈,并搭建一个UDP echo server
支持型号列表:
支持型号
AT32F407xx
AT32F437xx
主要使用外设列表:
主要使用外设
EMAC
GPIO
USART
快速使用方法
硬件资源
1) 指示灯LED2/LED3
2) USART1(PA9/PA10)
3) AT-START-F407/ AT-START-F437实验板
4) 以太网连接线
软件资源
1) APP_Release
网络调试助手
2) SourceCode
at32f407_freertos/ at32f437_freertos源程序
FreeRTOS源程序
LWIP源程序
AT32驱动库
3) Doc
SC0082_AT32F407_437_LWIP_FreeRTOS_V2.0.1
Note: 所有 project 都是基于 keil 5 而建立,若用户需要在其他编译环境上使用,请参考AT32F407_Firmware_Library_V2.x.x/project/at_start_f407/templates 中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。
示例使用
1) 打开at32f407_freertos/ at32f437_freertos源程序,编译后下载到实验板
2) 配置PC端的IP网段与开发版相同,如图1
3) 打开网络调试助手,输入本地端与远程的IP
4) 输入欲发送的字符串,开发板接收到后会回传相同的内容给上位机,如图2
针对日常应用,例程中实现了热插拔功能,调用ethernetif_set_link函数对网络连接状态进行相应的LWIP处理。
Note: 若出现网口接收发送数据偶尔丢失,可考虑是否为代码量较大,超过了芯片的零等待区;可将重要代码选择性编译到零等待区解决。
图 1. 设定 PC 端网段
图 2. 上位机发送字符串并接收到开发板的回传
SC0082 V2.0.3 at32f437_freertos KEIL,如果选V5的编译器,在运行中会报错。
"Struct packing not implemented correctly. Check your lwIP port."
但是如果选V6编译器,就可以正常运行。
官方可以解决下不 简单的辉辉 发表于 2023-1-1 10:52
SC0082 V2.0.3 at32f437_freertos KEIL,如果选V5的编译器,在运行中会报错。
"Struct packing not imple ...
在cc.h文件内添加如下内容可解决
#if defined (__ICCARM__)
#define PACK_STRUCT_BEGIN
#define PACK_STRUCT_STRUCT
#define PACK_STRUCT_END
#define PACK_STRUCT_FIELD(x) x
#define PACK_STRUCT_USE_INCLUDES
#elif defined (__GNUC__)
#define PACK_STRUCT_BEGIN
#define PACK_STRUCT_STRUCT __attribute__ ((__packed__))
#define PACK_STRUCT_END
#define PACK_STRUCT_FIELD(x) x
#elif defined (__CC_ARM)
#define PACK_STRUCT_BEGIN __packed
#define PACK_STRUCT_STRUCT
#define PACK_STRUCT_END
#define PACK_STRUCT_FIELD(x) x
#elif defined (__TASKING__)
#define PACK_STRUCT_BEGIN
#define PACK_STRUCT_STRUCT
#define PACK_STRUCT_END
#define PACK_STRUCT_FIELD(x) x
#endif tanleitanlei 发表于 2023-1-4 11:27
在cc.h文件内添加如下内容可解决
谢谢。
添加上去后OK了!!!
页:
[1]