查看: 2290  |  回复: 2
M0+MAC+TCP/IP 以太网单芯片方案 W7500EVB用户手册连载(3)--实战篇
WSGustin
29
主题
48
回复
发表于2018-02-27 17:19:35 | 只看该作者
1# 电梯直达
W7500(W7500P)芯片简介: 
W7500 芯片为工业级以太网单芯片解决方案, 集成 ARM Cortex-M0,128KB Flash 及全硬件TCP/IP 核(和W5500、W5100内核一致),特别适用于物联网领域。 使用 W7500EVB, 让您轻松完成原型开发。
全硬件TCP/IP核的最大优点是他在执行联网操作时不需要占用MCU的运行资源,大大增加了MCU的工作效率。

上一章,我们介绍了 W7500 的 IO 口作为输出的使用,这一章,将向大家介绍如何使用 W7500 的 IO 口作为输入使用。在本章中将利用W7500EVB的功能按键,来控制板载的RGB LED 的亮灭。通过本章的学习,将了解到 W7500 的 IO 口作为输入口的使用方法。


想了解更多关于WIZnet W7500更多信息,或者有技术问题请联系我们:gustin@wisioe.com
深圳炜世科技—WIZnet官方代理商,全程技术支持,价格绝对优势!
电话:0755-86568556

邮箱:support@wisioe.com


W7500EVB开发指南.pdf 

WSGustin
29
主题
48
回复
发表于2018-02-27 17:25:26   |  只看该作者
2#

第四章 按键输入试验

上一章,我们介绍了 W7500 的 IO 口作为输出的使用,这一章,将向大家介绍如何使用 W7500 的 IO 口作为输入使用。在本章中将利用W7500EVB的功能按键,来控制板载的RGB LED 的亮灭。通过本章的学习,将了解到 W7500 的 IO 口作为输入口的使用方法。
本章分为如下几个小节:
4.1 W7500 IO 口简介
4.2 硬件设计
4.3 软件设计
4.4 下载验证

4.1 W7500 按键简介

W7500 的 IO 口在上一章已经有了比较详细的介绍,这里不再多说。W7500 的 IO口作为输入使用时,是通过调用GPIO_ReadInputDataBit()函数来读取 IO 口的状态的。了解了这点,就可以开始代码的编写了。

这一章,将通过 W7500EVB 开发板上载有的1个功能按键,来控制板上的 RBGLED, KEY 控制RBG LED, 按一次亮,再按一次灭。

4.2 硬件设计

本实验用到的硬件资源有:

1)      指示灯RGB LED

2)      功能按键KEY

在W7500EVB上的按键 KEY 连接在 PC12 上,如图4.2.1所示:

 


图4.2.1 W7500EVB 按键原理图

W7500EVB上搭载的功能按键是默认上拉,所以按键是低电平有效。

4.3 软件设计

在W7500EVB KEY工程目录中,我们引入了 key.c 文件以及头文件 key.h。

我们首先打开 key.c 文件,代码如下:

void KEY_Init(void) 
{
  GPIO_InitTypeDef GPIO_InitStructure; 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;        //指定引脚
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;  //输入模式
  GPIO_Init(GPIOC, &GPIO_InitStructure); 
  PAD_AFConfig(PAD_PC, GPIO_Pin_12, PAD_AF1);   //选择功能2
}

uint8_t KEY_Scan(void) 
{
  if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_12) == 0) 
  {
    delay_ms(200); 
    if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_12) == 0) 
    {
      return 0;  //按下返回0
    }
  }
  return 1;  //没按下返回1
}



这段代码包含2个函数, void KEY_Init(void)和 uint8_t KEY_Scan(void), KEY_Init()是用来初始化按键输入的 IO 口的。

KEY_Scan()函数,则是用来扫描这 IO 口是否有按键按下。该函数有返回值,如果有按键按下,则返回0,如果没有,则返回1。

最后,我们看看 main.c 里面编写的主函数代码如下:

int main()
{
  uint8_t flag = 0; 
  
  SystemInit(); 	                      /* 系统内部时钟初始化 */ 
  delay_init();	                      /* 系统滴答时钟配置*/
  LED_Configuration();                /* RGB LED 初始化 */
  KEY_Init();                              /* KEY 初始化 */

 /*------------------------------------------------------------------
  |  炜世科技—WIZnet W7500官方代理商,全程技术支持,价格绝对优势! |
  ------------------------------------------------------------------*/

  while(1) 
  {
    if(KEY_Scan() == 0 && flag == 0) 
    {
      flag = 1; 
    }
    else if(KEY_Scan() == 0 && flag == 1) 
    {
      flag = 0; 
    }
    
    if(flag) 
    {
      GPIO_ResetBits(GPIOC, GPIO_Pin_8); 
    }
    else
    {
      GPIO_SetBits(GPIOC, GPIO_Pin_8); 
    }
  }
}



主函数代码比较简单,先进行一系列的初始化操作,然后在死循环中调用按键扫描函数KEY_Scan()扫描按键值,最后根据按键值控制 RGB LED翻转。

4.4 下载验证

程序成功下载到W7500EVB上之后,当按下按键GEB LED就翻转一次。






WSGustin
29
主题
48
回复
发表于2018-07-19 11:33:20   |  只看该作者
3#

第四章 按键输入试验

上一章介绍了 W7500P IO 口作为输出的使用方式,本章将向大家介绍W7500P IO 口作为输入的使用方式。在本章中将利用W7500PEVB的功能按键,来控制板载的RGB LED 的亮灭。通过本章的学习,将了解到 W7500P IO 口作为输入的使用方法。
本章分为如下几个小节:
4.1 W7500P IO
口简介
4.2
硬件设计
4.3
软件设计
4.4
下载验证



4.1 W7500P 按键简介

W7500P 的 IO 口在上一章已经有了比较详细的介绍,这里不再多说。W7500P IO口作为输入使用时,是通过调用GPIO_ReadInputDataBit函数来读取 IO 口的状态的。了解了这点,就可以开始代码的编写了。

这一章,将通过 W7500PEVB 开发板上有的1个功能按键来控制板上的 RBG LED, 按一次亮,再按一次灭。

4.2 硬件设计

本实验用到的硬件资源有:

1)      指示灯RGB LED

2)      功能按键KEY

W7500PEVB上的按键 KEY 连接在 PC6 上,如图4.2.1所示:

 

4.2.1 W7500PEVB 按键原理图

W7500PEVB上搭载的功能按键是默认上拉,所以按键是低电平有效。

4.3 软件设计

W7500PEVB KEY工程目录中,我们引入了 key.c 文件以及头文件 key.h

我们首先打开 key.c 文件,代码如下:

void KEY_Init(void) 
{
   GPIO_InitTypeDef GPIO_InitStructure; 
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;        //指定引脚
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;  //输入模式
   GPIO_Init(GPIOC, &GPIO_InitStructure); 
   PAD_AFConfig(PAD_PC, GPIO_Pin_6, PAD_AF1);   //选择功能2
}

uint8_t KEY_Scan(void) {
   if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_6) == 0)
 {
     delay_ms(100);
     if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_6) == 0)
     {
        return 0;  //按下返回0
     }
  }
  return 1;  //没按下返回1
}


这段代码包含2个函数, void KEY_Init(void) uint8_t KEY_Scan(void), KEY_Init()是用来初始化按键输入的 IO 口的。

KEY_Scan()函数,则是用来扫描这 IO 口是否有按键按下。该函数有返回值,如果有按键按下,则返回0,如果没有,则返回1

最后main.c 里面编写的主函数代码如下:

int main() {    /* 炜世科技—WIZnetW7500P官方代理商,全程技术支持,价格绝势!*/

uint8_t flag = 0;      SystemInit();     /* 系统内部时钟初始化 */    delay_init();                /* 系统滴答时钟配置*/    LED_Configuration();            /* RGB LED 初始化 */    KEY_Init();                 /* KEY 初始化 */    while(1)    {       if(KEY_Scan() == 0)       {          flag++;       }                 if(flag%2)       {         LEDR_L;       }       else       {          LEDR_H;       }    } }


主函数代码比较简单,先进行一系列的初始化操作,然后在死循环中调用按键扫描函数KEY_Scan()扫描按键值,最后根据按键值控制 R LED翻转。

4.4 下载验证

程序成功下载到W7500PEVB上之后,当按下按键R LED就翻转一次。


主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部