查看:
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官方代理商,全程技术支持,价格绝对优势! 电话:0755-86568556 邮箱:support@wisioe.com |
|
WSGustin
29
主题
48
回复 |
发表于2018-02-27 17:25:26
|
只看该作者
2#
第四章 按键输入试验上一章,我们介绍了 W7500 的 IO 口作为输出的使用,这一章,将向大家介绍如何使用 W7500 的 IO 口作为输入使用。在本章中将利用W7500EVB的功能按键,来控制板载的RGB LED 的亮灭。通过本章的学习,将了解到 W7500 的 IO 口作为输入口的使用方法。 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 按键简介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 里面编写的主函数代码如下:
主函数代码比较简单,先进行一系列的初始化操作,然后在死循环中调用按键扫描函数KEY_Scan()扫描按键值,最后根据按键值控制 R LED翻转。 4.4 下载验证程序成功下载到W7500PEVB上之后,当按下按键R LED就翻转一次。 |
|