查看: 6574  |  回复: 12
M0+MAC+TCP/IP 以太网单芯片方案 W7500EVB用户手册连载(2)--实战篇

主题

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

本篇将从W7500最简单的外设说起。每一个实例都配有详细的代码及解释,手把手教你如何使用W7500EVB的各种外设,通过本篇的学习,希望大家能学会W7500EVB绝大部分外设的使用。


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

W7500EVB开发指南.pdf 


主题

回复
发表于2018-02-26 09:58:30   |  只看该作者
2#

第三章 RGB LED试验

W7500 最简单的外设莫过于 IO 口的高低电平控制了,本章将通过一个经典的跑马灯程序,带大家开启 W7500EVB 之旅, 通过本章的学习, 将了解到W7500的 IO 口作为输出使用的方法。 在本章中, 我们将通过代码控制 W7500EVB 开发板上的RGB LED: 红绿蓝交替闪烁。
本章分为如下四个小节:
3.1 W7500 IO 口简介
3.2 硬件设计
3.3 软件设计
3.4 下载验证


3.1 W7500 IO 口简介

本章将要实现的是控制 W7500EVB 开发板上的RGB LED 实现一个跑马灯的效果, 该实验的关键在于如何控制 W7500 的 IO 口输出。了解了W7500的 IO 口是如何输出的,就可以实现跑马灯了。通过这一章的学习, 将初步掌握W7500基本 IO 口的使用,这是迈向W7500的第一步。

W7500 的 IO 口可以由软件配置成如下 3 种模式
1. 输入模式
2. 输出模式
3. 复用功能模式

每个 IO 口可以自由编程,都有各自的输出使能位和清除输出使能位以及其它复用功能的选择。

下面我们来看一下GPIO的初始化,我们可以调用GPIO_Init函数来进行初始化。

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

GPIO_Init函数有两个参数, 第一个参数GPIOx是用来指定 GPIO,取值范围为 GPIOA~GPIOD。第二个参数GPIO_InitStruct是初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef。下面来看看这个结构体的定义。

typedef struct
{
    uint32_t GPIO_Pin; 
    GPIOMode_TypeDef GPIO_Mode; 
    GPIOPad_TypeDef GPIO_Pad; 
}GPIO_InitTypeDef;

这里我们通过初始化一个GPIO来讲解这个结构体成员变量的含义。

初始化GPIO的常用格式是。

GPIO_InitTypeDef GPIO_InitStructure; 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; 
GPIO_Init(GPIOC, &GPIO_InitStructure); 
PAD_AFConfig(PAD_PC, GPIO_Pin_5, PAD_AF1);

上面代码的意思是设置GPIOC的第5个IO口为输出模式。从上面初始化代码可以看出,结构体 GPIO_InitStructure 的第一个成员变量 GPIO_Pin 用来设置是要初始化哪个或者哪些 IO 口; 第二个成员变量 GPIO_Mode 是用来设置对应 IO 口的输出输入模式,这些模式是上面我们讲解的3个模式,在 W7500x_gpio.h 中是通过一个枚举类型定义的。

typedef enum
{
    GPIO_Mode_IN    = 0x00, 
    GPIO_Mode_OUT  = 0x01, 
    GPIO_Mode_AF    = 0x02  
}GPIOMode_TypeDef;

如果想知道某个IO口的电平状态,可以读取DATA寄存器的某个位的状态就可以了。在固件库中操作DATA寄存器读取IO口数据,可以通过GPIO_ReadInputDataBit函数实现。

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

比如我要读 GPIOC_5 的电平状态,那么方法是。

GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_5);

返回值是 1(Bit_SET)或者 0(Bit_RESET);

如果想要某个IO口输出高电平状态或低电平状态,只要设置GPIO字节屏蔽访问寄存器的某个位就可以了。使用起来也是比较简单的。在固件库中操作GPIO字节屏蔽访问寄存器设置IO口,是通过GPIO_SetBits函数或者GPIO_ResetBits函数。

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

如果我要将 GPIOC_5 的电平状态拉高,那么方法是。

GPIO_SetBits(GPIOC, GPIO_Pin_5);

如果我要将 GPIOC_5 的电平状态拉低,那么方法是。

GPIO_ResetBits(GPIOC, GPIO_Pin_5);

如果想要使用某个IO口的备用功能,只要设置功能引脚备用功能选择寄存器(AFR)就可以了。在固件库中操作该寄存器的设置的PAD_AFConfig函数。

void PAD_AFConfig(PAD_Type Px, uint16_t GPIO_Pin, PAD_AF_TypeDef P_AF);






主题

回复
发表于2018-02-26 09:59:26   |  只看该作者
3#

 

功能选择寄存器值

 

00(复位值)

01

10

11

功能引脚

PIN

Normal Function

2nd Function

3rd Function

4th Function

PA_00

29

GPIOA_0

GPIOA_0

PWM6/CAP6

PA_01

30

GPIOA_1

GPIOA_1

PWM7/CAP7

PA_02

31

GPIOA_2

GPIOA_2

CLKOUT

PA_03

49

SWCLK

GPIOA_3

PA_04

50

SWDIO

GPIOA_4

PA_05

33

SSEL0

GPIOA_5

SCL1

PWM2/CAP2

PA_06

34

SCLK0

GPIOA_6

SDA1

PWM3/CAP3

PA_07

35

MISO0

GPIOA_7

U_CTS1

PWM4/CAP4

PA_08

36

MOSI0

GPIOA_8

U_RTS1

PWM5/CAP5

PA_09

37

SCL0

GPIOA_9

U_TXD1

PWM6/CAP6

PA_10

38

SDA0

GPIOA_10

U_RXD1

PWM7/CAP7

PA_11

40

U_CTS0

GPIOA_11

SSEL1

PA_12

41

U_RTS0

GPIOA_12

SCLK1

PA_13

42

U_TXD0

GPIOA_13

MISO1

PA_14

43

U_RXD0

GPIOA_14

MOSI1

PA_15

44

GPIOA_15

GPIOA_15

PB_00

45

SSEL1

GPIOB_0

U_CTS0

PB_01

46

SCLK1

GPIOB_1

U_RTS0

PB_02

47

MISO1

GPIOB_2

U_TXD0

PB_03

48

MOSI1

GPIOB_3

U_RXD0

PB_04

24

TXEN

GPIOB_4

PB_05

25

COL

GPIOB_5

PB_06

16

RXD3

GPIOB_6

PB_07

17

RXCLK

GPIOB_7

PB_08

18

DUP

GPIOB_8

PB_09

19

TXCLK

GPIOB_9

PB_10

20

TXD0

GPIOB_10

PB_11

21

TXD1

GPIOB_11

PB_12

22

TXD2

GPIOB_12

PB_13

23

TXD3

GPIOB_13

PB_14

26

GPIOB_14

PB_15

27

GPIOB_15

PC_00

53

U_CTS1

GPIOC_0

PWM0/CAP0

PC_01

54

U_RTS1

GPIOC_1

PWM1/CAP1

PC_02

55

U_TXD1

GPIOC_2

PWM2/CAP2

PC_03

56

U_RXD1

GPIOC_3

PWM3/CAP3

PC_04

57

SCL1

GPIOC_4

PWM4/CAP4

PC_05

58

SDA1

GPIOC_5

PWM5/CAP5

PC_06

51

GPIOC_6

GPIOC_6

U_TXD2

PC_07

52

GPIOC_7

GPIOC_7

U_RXD2

PC_08

1

PWM0/CAP0

GPIOC_8

SCL0

AIN7

PC_09

2

PWM1/CAP1

GPIOC_9

SDA0

AIN6

PC_10

3

U_TXD2

GPIOC_10

PWM2/CAP2

AIN5



主题

回复
发表于2018-02-26 10:04:58   |  只看该作者
4#

PC_11

4

U_RXD2

GPIOC_11

PWM3/CAP3

AIN4

PC_12

5

AIN3

GPIOC_12

SSEL0

AIN3

PC_13

6

AIN2

GPIOC_13

SCLK0

AIN2

PC_14

7

AIN1

GPIOC_14

MISO0

AIN1

PC_15

8

AIN0

GPIOC_15

MOSI0

AIN0

PD_00

11

CRS

GPIOD_0

PD_01

12

RXDV

GPIOD_1

PD_02

13

RXD0

GPIOD_2

PD_03

14

RXD1

GPIOD_3

PD_04

15

RXD2

GPIOD_4

比如我要将 GPIOC_5 的工作模式设置成GPIO模式我们可以对照上面的表格来设置。

PAD_AFConfig(PAD_PC, GPIO_PIN_5, PAD_AF1);

3.2 硬件设计

本章用到的硬件只有 RGB LED。其电路在 W7500 开发板上默认是已经连接好了的。LED R 接 PA3,LEDG接 PC5,LEDB接PA4。所以在硬件上不需要动任何东西,如图3.2.1所示:

 

图3.2.1 W7500EVB EGBLED原理图

3.3 软件设计

在W7500EVB RGB LED工程里可,我们引入了 bsp_gpio.c 文件以及头文件bsp_gpio.h。

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

void LED_Configuration(void) 
{
  GPIO_InitTypeDef GPIO_InitStructure;

  /* GPIO Configuration for red LED */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;            // Connecting GPIO_Pin_8(LED(R)) 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // Set to GPIO Mode to Output Port
  GPIO_Init(GPIOA, &GPIO_InitStructure); 
  PAD_AFConfig(PAD_PA, GPIO_Pin_4, PAD_AF1);       // PAD Config - LED used 2nd Function
  
  /* GPIO Configuration for green LED */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;            // Connecting GPIO_Pin_9(LED(B)) 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // Set to GPIO Mode to Output Port
  GPIO_Init(GPIOA, &GPIO_InitStructure); 
  PAD_AFConfig(PAD_PA, GPIO_Pin_3, PAD_AF1);       // PAD Config - LED used 2nd Function
  
  /* GPIO Configuration for blove LED */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;            // Connecting GPIO_Pin_5(LED(G)) 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // Set to GPIO Mode to Output Port
  GPIO_Init(GPIOC, &GPIO_InitStructure); 
  PAD_AFConfig(PAD_PC, GPIO_Pin_5 , PAD_AF1);      // PAD Config - LED used 2nd Function
 
  LEDR_H; 
  LEDG_H; 
  LEDB_H; 
}

LEDR_H,LEDG_H和LEDB_H定义在bsp_gpio.h中:

#define LEDR_H   GPIO_SetBits(GPIOA, GPIO_Pin_4)
#define LEDR_L GPIO_ResetBits(GPIOA, GPIO_Pin_4) 

#define LEDG_H   GPIO_SetBits(GPIOC, GPIO_Pin_5) 
#define LEDG_L GPIO_ResetBits(GPIOC, GPIO_Pin_5) 

#define LEDB_H   GPIO_SetBits(GPIOA, GPIO_Pin_3) 
#define LEDB_L GPIO_ResetBits(GPIOA, GPIO_Pin_3)

该代码里面中的 void LED_Configuration(void)函数就是用来配置 PA3、PA4和PC5 引脚作为输出模式。

在看看我们的main.c文件里的代码:

int main()
{
  SystemInit();     			/* 系统内部时钟初始化 */
  delay_init();				/* 系统滴答时钟配置*/
  LED_Configuration();

 /*----------------------------------------------------------------------
  |  炜世科技—WIZnet W7500官方代理商,全程技术支持,价格绝对优势!	|
  ----------------------------------------------------------------------*/
  
  while(1) 
  {
    LEDR_L; 
    LEDG_H; 
    LEDB_H; 
    delay_ms(500); 
    LEDR_H; 
    LEDG_L; 
    LEDB_H; 
    delay_ms(500); 
    LEDR_H; 
    LEDG_H; 
    LEDB_L; 
    delay_ms(500); 
  }
}

3.4 下载验证

程序成功下载到 W7500EVB 开发板上之后,我们可以看到RGB LED灯的红绿蓝交替闪烁,如图3.4.1所示:

 

图3.4.1 实验结果















主题

回复
发表于2018-02-26 15:29:35   |  只看该作者
5#
GOOD !

主题

回复
发表于2018-02-26 16:51:04   |  只看该作者
6#
发表于2018-02-26 15:29:35  5# GOOD!
对你有帮助就好。

主题

回复
发表于2018-02-27 09:39:18   |  只看该作者
7#
TCP/IP那块是需要怎么配置呢?有没有详细资料发一份邮箱2881982566@qq.com,谢谢!

主题

回复
发表于2018-02-27 09:49:07   |  只看该作者
8#

主题

回复
发表于2018-02-27 10:32:15   |  只看该作者
9#
非常不错,希望能尽快用到项目上,能否把资料发我邮箱,270013397@qq.com  谢谢!

主题

回复
发表于2018-02-27 17:13:01   |  只看该作者
10#

资料我们会接着连载,如果想要了解更多可以跟我们联系:0755-86568556

在我们这购买的话可以享受全程的技术支持。我们的价格绝对优势!!


主题

回复
发表于2018-07-19 11:22:30   |  只看该作者
11#

第三章 RGB LED试验

W7500P最简单的外设莫过于IO口的高低电平控制了,本章将通过一个经典的跑马灯程序,带大家开W7500PEVB 之旅, 通过本章的学习, 将了解到W7500P IO 口作为输出使用的方法。 在本章中, 通过代码控制 W7500PEVB 开发板上的RGB LED: 红绿蓝灯交替闪烁。
本章分为如下四个小节:
3.1  W7500P IO
口简介
3.2  
硬件设计
3.3  
软件设计
3.4  
下载验证



3.1 W7500P IO 口简介

本章将要实现的是控制 W7500PEVB 开发板上的RGB LED 实现一个跑马灯的效果, 该实验的关键在于如何控制 W7500P IO 口输出。了解W7500P IO 口是如何输出的,就可以实现跑马灯了。通过这一章的学习, 将初步掌握W7500P IO 口基本使用。

SHAPE \* MERGEFORMAT

W7500P IO 口可以由软件配置成如下 3 种模式:

1. 输入模式

2. 输出模式

3. 复用功能模式

每个 IO 口可编程,都有各自的输出使能位和清除输出使能位,以及其它的复用功能。

下面我们来看一下GPIO的初始化,可以调用GPIO_Init函数来进行初始化。

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

GPIO_Init函数有两个参数, 第一个参数GPIOx是用来指定 GPIO,取值范围为 GPIOA~GPIOD。第二个参数GPIO_InitStruct是初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef。下面来看看这个结构体的定义。

typedef struct
{
    uint32_t GPIO_Pin; 
    GPIOMode_TypeDef GPIO_Mode; 
    GPIOPad_TypeDef GPIO_Pad; 
}GPIO_InitTypeDef;


这里我们通过初始化一个GPIO来讲解这个结构体成员变量的含义。

初始化GPIO的常用格式是:

GPIO_InitTypeDef GPIO_InitStructure; 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; 
GPIO_Init(GPIOC, &GPIO_InitStructure); 
PAD_AFConfig(PAD_PC, GPIO_Pin_5, PAD_AF1);


上面代码的意思是设置GPIOC的第5IO口为输出模式。从上面初始化代码可以看出,结构体 GPIO_InitStructure 的第一个成员变量 GPIO_Pin 用来设置要初始化的IO 口; 第二个成员变量 GPIO_Mode 是用来设置对应 IO 口的输出输入模式,这些模式是上面讲解的3个模式,在 W7500x_gpio.h 中是通过一个枚举类型定义的。

typedef enum
{
    GPIO_Mode_IN    = 0x00, 
    GPIO_Mode_OUT  = 0x01, 
    GPIO_Mode_AF    = 0x02  
}GPIOMode_TypeDef;

如果想知道某个IO口的电平状态,可以读取DATA寄存器的对应位就可以了。在固件库中操作DATA寄存器读取IO口数据,可以通过GPIO_ReadInputDataBit函数实现。

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);


比如我要读 GPIOC_5 的电平状态,那么方法是:

GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_5);


返回值是 1(Bit_SET)或者 0(Bit_RESET)

如果想要某个IO口输出高电平状态或低电平状态,可以设置GPIO字节屏蔽访问寄存器的对应位就可以了。在固件库中是通过GPIO_SetBits函数或者GPIO_ResetBits函数来操作GPIO字节屏蔽访问寄存器的。

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);


如果我要将 GPIOC_5 的电平状态拉高,那么方法是:

GPIO_SetBits(GPIOC, GPIO_Pin_5);


如果我要将 GPIOC_5 的电平状态拉低,那么方法是:

GPIO_ResetBits(GPIOC, GPIO_Pin_5);


如果想要使用某个IO口的备用功能,只要设置功能引脚备用功能选择寄存器(AFR)就可以了。在固件库中操作该寄存器的是PAD_AFConfig函数。

void PAD_AFConfig(PAD_Type Px, uint16_t GPIO_Pin, PAD_AF_TypeDef P_AF);


 

功能选择寄存器值

 

00(复位值)

01

10

11

功能引脚

PIN

Normal Function

2nd Function

3rd Function

4th Function

PA_00

29

GPIOA_0

GPIOA_0

PWM6/CAP6

PA_01

30

GPIOA_1

GPIOA_1

PWM7/CAP7

PA_02

31

GPIOA_2

GPIOA_2

CLKOUT

PA_03

49

SWCLK

GPIOA_3

PA_04

50

SWDIO

GPIOA_4

PA_05

33

SSEL0

GPIOA_5

SCL1

PWM2/CAP2

PA_06

34

SCLK0

GPIOA_6

SDA1

PWM3/CAP3

PA_07

35

MISO0

GPIOA_7

U_CTS1

PWM4/CAP4

PA_08

36

MOSI0

GPIOA_8

U_RTS1

PWM5/CAP5

PA_09

37

SCL0

GPIOA_9

U_TXD1

PWM6/CAP6

PA_10

38

SDA0

GPIOA_10

U_RXD1

PWM7/CAP7

PA_11

40

U_CTS0

GPIOA_11

SSEL1

PA_12

41

U_RTS0

GPIOA_12

SCLK1

PA_13

42

U_TXD0

GPIOA_13

MISO1

PA_14

43

U_RXD0

GPIOA_14

MOSI1

PA_15

44

GPIOA_15

GPIOA_15



主题

回复
发表于2018-07-19 11:24:11   |  只看该作者
12#


PB_00

45

SSEL1

GPIOB_0

U_CTS0

PB_01

46

SCLK1

GPIOB_1

U_RTS0

PB_02

47

MISO1

GPIOB_2

U_TXD0

PB_03

48

MOSI1

GPIOB_3

U_RXD0

PB_04

24

TXEN

GPIOB_4

PB_05

25

COL

GPIOB_5

PB_06

16

RXD3

GPIOB_6

PB_07

17

RXCLK

GPIOB_7

PB_08

18

DUP

GPIOB_8

PB_09

19

TXCLK

GPIOB_9

PB_10

20

TXD0

GPIOB_10

PB_11

21

TXD1

GPIOB_11

PB_12

22

TXD2

GPIOB_12

PB_13

23

TXD3

GPIOB_13

PB_14

26

GPIOB_14

PB_15

27

GPIOB_15

PC_00

53

U_CTS1

GPIOC_0

PWM0/CAP0

PC_01

54

U_RTS1

GPIOC_1

PWM1/CAP1

PC_02

55

U_TXD1

GPIOC_2

PWM2/CAP2

PC_03

56

U_RXD1

GPIOC_3

PWM3/CAP3

PC_04

57

SCL1

GPIOC_4

PWM4/CAP4

PC_05

58

SDA1

GPIOC_5

PWM5/CAP5

PC_06

51

GPIOC_6

GPIOC_6

U_TXD2

PC_07

52

GPIOC_7

GPIOC_7

U_RXD2

PC_08

1

PWM0/CAP0

GPIOC_8

SCL0

AIN7

PC_09

2

PWM1/CAP1

GPIOC_9

SDA0

AIN6

PC_10

3

U_TXD2

GPIOC_10

PWM2/CAP2

AIN5

PC_11

4

U_RXD2

GPIOC_11

PWM3/CAP3

AIN4

PC_12

5

AIN3

GPIOC_12

SSEL0

AIN3

PC_13

6

AIN2

GPIOC_13

SCLK0

AIN2

PC_14

7

AIN1

GPIOC_14

MISO0

AIN1

PC_15

8

AIN0

GPIOC_15

MOSI0

AIN0

PD_00

11

CRS

GPIOD_0

PD_01

12

RXDV

GPIOD_1

PD_02

13

RXD0

GPIOD_2

PD_03

14

RXD1

GPIOD_3

PD_04

15

RXD2

GPIOD_4

将 GPIOC_5 引脚的工作模式设置成GPIO模式可以对照上面的表格来设置。

PAD_AFConfig(PAD_PC, GPIO_PIN_5, PAD_AF1);

3.2 硬件设计

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

1)      指示灯LED

本章用到的硬件只有 RGB LED。其电路在 W7500 开发板上默认是已经连接好了的。LED R 接 PA5,LEDG接 PC0,LEDB接PC4。所以在硬件上不需要改动,如图3.2.1所示:

 

图3.2.1 W7500PEVB RGBLED原理图

3.3 软件设计

打开W7500PEVB RGB LED工程,我们引入了 bsp_gpio.c 文件以及头文件bsp_gpio.h。

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


 
void LED_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* GPIO Configuration for red LED */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
PAD_AFConfig(PAD_PC, GPIO_Pin_5, PAD_AF1);
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* GPIO Configuration for green LED */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* GPIO Configuration for blove LED */
PAD_AFConfig(PAD_PC, GPIO_Pin_0, PAD_AF1);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
PAD_AFConfig(PAD_PC, GPIO_Pin_4 , PAD_AF1);
LEDR_H;
LEDG_H;
LEDB_H;

LEDR_H,LEDG_H和LEDB_H定义在bsp_gpio.h中:

#define LEDR_H   GPIO_SetBits(GPIOC, GPIO_Pin_5)
#define LEDR_L GPIO_ResetBits(GPIOC, GPIO_Pin_5) 

#define LEDG_H   GPIO_SetBits(GPIOC, GPIO_Pin_0) 
#define LEDG_L GPIO_ResetBits(GPIOC, GPIO_Pin_0) 

#define LEDB_H   GPIO_SetBits(GPIOC, GPIO_Pin_4) 
#define LEDB_L GPIO_ResetBits(GPIOC, GPIO_Pin_4)

该代码里面中的 void LED_Configuration(void)函数用来配置 PC5、PC0和PC4 引脚作为输出模式。

在看看我们的main.c文件里的代码:


主题

回复
发表于2018-07-19 11:24:41   |  只看该作者
13#



 
int main()
{
SystemInit(); /* 系统内部时钟初始化 */
delay_init(); /* 系统滴答时钟配置*/
LED_Configuration();
while(1)
{
delay_ms(500);
LEDR_L;
LEDG_H;
delay_ms(500);
LEDB_H;
LEDR_H;
LEDB_H;
LEDG_L;
LEDR_H;
}
LEDG_H;
LEDB_L;
delay_ms(500);
}

3.4 下载验证

程序成功下载到 W7500PEVB 开发板上之后,可以看到RGB LED灯交替闪烁,如图3.4.1所示:

 点击查看大图


图3.4.1 实验结果


主题

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

禁言/删除

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

举报

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

顶部