OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 1790|回复: 1

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

[复制链接]

  离线 

27

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2018-2-23
在线时间
18 小时
发表于 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, 下载次数: 17

回复

使用道具 举报

  离线 

27

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2018-2-23
在线时间
18 小时
 楼主| 发表于 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 文件,代码如下:
[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 里面编写的主函数代码如下:
[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就翻转一次。







回复 支持 反对

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-6-24 01:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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