OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4785|回复: 1

[资料] M0+MAC+TCP/IP 以太网单芯片方案 W7500EVB用户手册连载(3)--实战篇

[复制链接]

28

主题

86

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-2-23
在线时间
37 小时
发表于 2018-2-27 17:48:05 | 显示全部楼层 |阅读模式
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



W7500EVB开发指南.pdf

175.8 KB, 下载次数: 25

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

28

主题

86

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-2-23
在线时间
37 小时
 楼主| 发表于 2018-2-27 17:49:53 | 显示全部楼层
第四章 按键输入试验
上一章,我们介绍了 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 控制RBGLED, 按一次亮,再按一次灭。
4.2 硬件设计
本实验用到的硬件资源有:
1)     指示灯RGB LED
2)     功能按键KEY
在W7500EVB上的按键 KEY 连接在PC12 上,如图4.2.1所示:
新建 Kankan JPEG 图像.JPG
图4.2.1 W7500EVB 按键原理图
W7500EVB上搭载的功能按键是默认上拉,所以按键是低电平有效。
4.3 软件设计
在W7500EVB KEY工程目录中,我们引入了 key.c 文件以及头文件 key.h。

我们首先打开 key.c 文件,代码如下:
[mw_shl_code=c,true]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
}
[/mw_shl_code]
这段代码包含2个函数, void KEY_Init(void)和 uint8_t KEY_Scan(void), KEY_Init()是用来初始化按键输入的 IO 口的。
KEY_Scan()函数,则是用来扫描这 IO 口是否有按键按下。该函数有返回值,如果有按键按下,则返回0,如果没有,则返回1。

最后,我们看看 main.c 里面编写的主函数代码如下:
[mw_shl_code=c,true]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);
    }
  }
}

[/mw_shl_code]
主函数代码比较简单,先进行一系列的初始化操作,然后在死循环中调用按键扫描函数KEY_Scan()扫描按键值,最后根据按键值控制 RGB LED翻转。
4.4 下载验证
程序成功下载到W7500EVB上之后,当按下按键GEB LED就翻转一次。







回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 22:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表