STM32 LwIP测试过程简介

发布者:Xiangsi最新更新时间:2024-10-12 来源: cnblogs关键字:STM32  LwIP  测试过程 手机看文章 扫描二维码
随时随地手机看文章

9G-STM32 LwIP测试过程简介
一,准备STM32 LwIP软件包
1,在http://www.st.com/mcu/devicedocs-STM32F107RC-110.html
下载lwIP TCP/IP stack demonstration for STM32F107xx connectivity line microcontrollers软件包
    an3102.zip
   
   
2,在http://www.st.com/mcu/devicedocs-STM32F107RC-110.html
下载lwIP TCP/IP stack demonstration for STM32F107xx connectivity line microcontrollers文档
16620.pdf


3,有关STM32F107VC-PKT的PCB和SCH和测试代码见下面连接:
http://www.freescaleic.org/yuanxihua/blog/10-01/183297_155bc.html

二,建立STM32 LwIP开发工程
1,把an3102.zip解压到D:works形成工程文件夹:D:worksSTM32F107_ETH_LwIP_V1.0.0 ;
2,进入到目录D:worksSTM32F107_ETH_LwIP_V1.0.0ProjectEWARMv5,双击Project.eww打开工程;
3,在EWARM中的Project->make 编译通过整个项目。

三,修改STM32 LwIP开发工程
1,打开Project->Options ,在Category中选择Debugger的setup驱动用J-Link/J-Trace,在J-Link/J-Trace
中选择connection的SWD接口;
2,对STM32F107VC-PKT开发板加上5V的直流电源,把J-LINK用USB线连接到PC的USB口上,执行Project->Download and Debug
下载代码到板子后,执行Debug->Go 。

四,修改STM32 LwIP开发源码
1,在D:worksSTM32F107_ETH_LwIP_V1.0.0Projectsrcmain.c 的53行后添加如下代码:
   /* Output a message on Hyperterminal using printf function */
   printf('nrnrnrnr');
   printf('*** STM32F107VC-PKT V1.0 Build by on ('__DATE__ ' - ' __TIME__ ')nr');
   printf('*** STM32F107VC-PKT V1.0 Rebooting ...nr');
2,在D:worksSTM32F107_ETH_LwIP_V1.0.0Projectsrcstm32f107.c 的包含头文件中添加:
   #include 'stdio.h'
   
在第30行选择用MII模式:
#define MII_MODE          /* MII mode for STM3210C-EVAL Board (MB784) (check jumpers setting) */
//#define RMII_MODE       /* RMII mode for STM3210C-EVAL Board (MB784) (check jumpers setting) */

在54行后添加:
USART_InitTypeDef USART_InitStructure;

在125行后添加:
   
   /* Configure the com port */
   /* USARTx configuration ------------------------------------------------------*/
   /* USARTx configured as follow:
         - BaudRate = 115200 baud  
         - Word Length = 8 Bits
         - One Stop Bit
         - No parity
         - Hardware flow control disabled (RTS and CTS signals)
         - Receive and transmit enabled
   */
   USART_InitStructure.USART_BaudRate = 115200;
   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
   USART_InitStructure.USART_StopBits = USART_StopBits_1;
   USART_InitStructure.USART_Parity = USART_Parity_No ;
   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

   STM_EVAL_COMInit(COM1, &USART_InitStructure);
}

/**
   * @brief  Retargets the C library printf function to the USART.
   * @param  None
   * @retval : None
   */
int fputc(int ch, FILE *f)
{
   /* Write a character to the USART */
   USART_SendData(USART2, (uint8_t) ch);

   /* Loop until the end of transmission */
   while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET)
   {
   }

   return ch;
}
/**
   * @brief  Get a key from the HyperTerminal
   * @param  None
   * @retval : The Key Pressed
   */
int fgetc(FILE *f)
{
  /* Waiting for user input */
  while ( USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET);
  return (uint8_t)USART2->DR;

在341-344行修改为:
   /* ADC Channel10 config --------------------------------------------------------*/
   /* Relative to STM32F107VC-PKT Board   */
   /* Configure PC.00 (ADC Channel10) as analog input -------------------------*/
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  
在375-376行修改为:
/* ADC1 regular channel10 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_13Cycles5);
  
3,在D:worksSTM32F107_ETH_LwIP_V1.0.0Projectsrcnetconf.c 中的119-121行和316-318行把
IP地址都修改如下:
   IP4_ADDR(&ipaddr, 192, 168, 1, 8);
   IP4_ADDR(&netmask, 255, 255, 255, 0);
   IP4_ADDR(&gw, 192, 168, 1, 1);
4,在D:worksSTM32F107_ETH_LwIP_V1.0.0Utilitieslwip-1.3.1portlwipopts.h中把
#define LWIP_DHCP               1
修改成:
#define LWIP_DHCP               0

5,在D:worksSTM32F107_ETH_LwIP_V1.0.0UtilitiesSTM32_EVALSTM3210C_EVALstm3210c_eval.h中把
#define LED1_GPIO_PIN               GPIO_Pin_7
修改成:
#define LED1_GPIO_PIN               GPIO_Pin_13

#define LED2_GPIO_PIN               GPIO_Pin_13
修改成:
#define LED2_GPIO_PIN               GPIO_Pin_14

#define LED3_GPIO_PIN               GPIO_Pin_3
修改成:
#define LED3_GPIO_PIN               GPIO_Pin_15


#define COMn                        1
修改成
#define COMn                        2

6,同样执行Project->Download and Debug 下载代码到板子后,执行Debug->Go 可以全速仿真运行。
五,演示STM32 LwIP开发工程
1,用交叉网线连接STM32F107VC-PKT到PC的网口,用交叉串口线连接RS232到PC的串口中,再对板子用5V上电
复位启动工作;
2,可以在串口终端上用115200 8N1的格式看到:
*** STM32F107VC-PKT V1.0 Build by on (Jan 12 2010 - 12:43:08)
*** STM32F107VC-PKT V1.0 Rebooting ...
3,在PC的IE浏览器中输入: 回车刷新可以访问到板子,看到Home page主页:
STM32F107 Webserver Demo
Based on the lwIP TCP/IP stack
4,点击Led control从Home page切换LED控制,任意勾上或者去掉LED1-3,再按SEND,可以看到板子的LED相应的
被控制亮或者灭;
5,点击ADC status bar从Led control页面切换到ADC采集,旋转板子上的RV1,可以看到STM32F107 ADC status bar
上绿色的滚动条被ADC的输入电压控制增减;
6,在SecureCRT 5.1终端中可以以telnet协议访问192.168.1.8,端口就是23,连接上了会显示:
Hello. What is your name? ,输入字符串YUANXIHUA,马上会回复Hello YUANXIHUA

关键字:STM32  LwIP  测试过程 引用地址:STM32 LwIP测试过程简介

上一篇:STM32启动文件
下一篇:stm32之SPI学习

推荐阅读最新更新时间:2024-11-06 07:15

运动粘度测试仪实现过程,石油粘度实操方法
1、检查仪器 开箱后,检查仪器是否完好无损,备件是否齐全,然后将仪器安放到通风良好无阳光直射的地方,装好附件,注意浴液倒入的量使液面距离上盖下沿20mm处,准备测量。 2、调整仪器 查看仪器上盖的水平仪,旋转仪器下部的四个螺柱,直到水平仪水平。 3、开机检查参数 插上电源,接通电源开关,打开测试仪,显示屏幕显示产品信息: 按“参数”下面的白板按键,可以进入参数设置画面; 按“时钟”下面的白板按键,可以进入系统时钟设置画面; 按“记录”下面的白板按键,可以进入试验记录查询画面; 按“测定”下面的白板按键,可以进入运动粘度测定画面; 运动粘度测定仪出厂时,浴液温度设定为40℃,开机进入测定后显示实时浴液温度,如想修改设定的浴
[测试测量]
运动粘度<font color='red'>测试</font>仪实现<font color='red'>过程</font>,石油粘度实操方法
STM32的启动过程分析
对于stm32的启动过程一直心存疑惑。今天找了很多资料,进行了一个大致的分析。 1.cortex M3的复位过程(来自官方资料) 上述开机启动流程比较详细,内容较为全面,但部分步骤可以省略(红字可省略标出),因为对于某些初始化,我们可能会在main函数中重新配置。 2.复位程序的详细跟踪分析(重点) 此次分析基于单步跟踪stm32从复位到main()函数的汇编代码。 1.stm32复位程序 ; Reset handler Reset_Handler PROC EXPORT Reset_Handler IMPORT __main IMPORT SystemInit
[单片机]
<font color='red'>STM32</font>的启动<font color='red'>过程</font>分析
STM32系列第29篇--DS18B20
特点: 独特的单总线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。大大提高了系统的抗干扰性。 测温范围 -55℃~+125℃,精度为±0.5℃。 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。 工作电源: 3.0~5.5V/DC (可以数据线寄生电源)。 测量结果以9~12位数字量方式串行传送。 复位脉冲 & 应答信号 单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。接着主机释放总线,4.7K的上拉电
[单片机]
<font color='red'>STM32</font>系列第29篇--DS18B20
【跟着江科大学Stm32】STM32F103C6T6_实现呼吸灯_代码
PWM.h #ifndef __PWM_H #define __PWM_H void PWM_Init(); void PWM_SetCompare1(uint16_t Compare); #endif PWM.c #include stm32f10x.h // Device header void PWM_Init() { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); //开启定时器2 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//通道2时钟使能函数
[单片机]
【跟着江科大学<font color='red'>Stm32</font>】STM32F103C6T6_实现呼吸灯_代码
STM32的硬件I2C与AT24C16
CubeMX的配置 下面这些是我修改过的地方,只要注意I2C和系统时钟等基础配置即可,不想说太多,以图为言 AT24C64的自制库 AT24C64.c #include AT24C64.h #include i2c.h void AT24CXX_Write(u16 reg_address,u8 data) { static HAL_StatusTypeDef i; i = HAL_I2C_Mem_Write(&hi2c1,AT24CXX_DEV_ADDRESS,reg_address,I2C_MEMADD_SIZE_16BIT,&data,1,100); AT24CXX_DELAY_MS(5);
[单片机]
关于STM32中NVIC的理解,带错误例子
STM32有43个channel的settable的中断源;AIRC(Application Interruptand Reset Register)寄存器中有用于指定优先级的4 bits。这4个bits用于分配preemption优先级和sub优先级,在STM32的固件库中定义如下 /* Preemption Priority Group-------------------------------------------------*/ #define NVIC_PriorityGroup_0 ((u32)0x700) /* 0 bits for pre-emption priority
[单片机]
STM32 无中断串口代码
下面的代码是我使用STM32库编写的串口输出和读取的代码。 1、串口初始化函数:void USART_Ini(USART_TypeDef* USARTx,u16 buad) 2、串口中断开启和关闭:USART_IT(USART_TypeDef* USARTx,FunctionalState NewState) 3、串口接收:u16 Getch(USART_TypeDef* USARTx) 4、串口单个字符输出:void Putch(USART_TypeDef* USARTx,u16 ch) 5、串口输出字符串:void PutStr(USART_TypeDef* USARTx,u16 *SendBuf,u16 Length
[单片机]
stm32变量能存进flash中吗
当涉及到将变量存储在Flash中时,我们通常指的是将变量存储在STM32微控制器的闪存器件中。在STM32芯片中,闪存用于存储程序代码和只读数据,但对于一些应用情况,我们可以使用闪存来存储可读写的变量。 虽然SRAM是通常用于存储变量的内存区域,但在某些场景中,需要将变量存储在闪存中的原因有以下几点: 节省SRAM空间:对于资源受限的应用,SRAM可能是有限的,因此在闪存中存储变量可以释放SRAM空间,使其可以用于其他用途。 数据持久性:将变量存储在闪存中可以确保其数据持久性,即使在断电或重新启动后,变量的值也能保持不变。 更新性:如果需要更新变量的值,而不需要重新烧录MCU的固件或运行其他复杂的操作,可以通过修改闪存中
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved