OpenEdv-开源电子网

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

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

[复制链接]

28

主题

86

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-2-23
在线时间
37 小时
发表于 2018-3-1 16:47:49 | 显示全部楼层 |阅读模式
1金钱
W7500(W7500P)芯片简介:
W7500 芯片为工业级以太网单芯片解决方案, 集成 ARM Cortex-M0,128KB Flash 及全硬件TCP/IP 核(和W5500、W5100内核一致),特别适用于物联网领域。 使用 W7500EVB, 让您轻松完成原型开发。
全硬件TCP/IP核的最大优点是他在执行联网操作时不需要占用MCU的运行资源,大大增加了MCU的工作效率。

这一章,将向大家介绍如何使用 W7500 的外部输入中断。在前面几章的学习中,我们掌握了W7500 的 IO 口最基本的操作。 本章介绍如何将W7500 的 IO 口作为外部中断来使用。

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

W7500EVB开发板指南.pdf

266.41 KB, 下载次数: 31

最佳答案

查看完整内容[请看2#楼]

第六章 外部中断试验这一章,将向大家介绍如何使用W7500 的外部输入中断。在前面几章的学习中,我们掌握了W7500的 IO 口最基本的操作。 本章介绍如何将W7500 的 IO 口作为外部中断来使用。 本章分为如下几个部分: 6.1 W7500 外部中断简介 6.2 硬件设计 6.3 软件设计 6.4 下载验证 6.1 W7500 外部中断简介这里将介绍 W7500 IO 口的外部中断功能,通过外部中断功能,达到本章试验的效果,即:通过W7500EVB的功能按键,控制板 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

28

主题

86

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-2-23
在线时间
37 小时
 楼主| 发表于 2018-3-1 16:47:50 | 显示全部楼层
第六章 外部中断试验
这一章,将向大家介绍如何使用W7500 的外部输入中断。在前面几章的学习中,我们掌握了W7500的 IO 口最基本的操作。 本章介绍如何将W7500 的 IO 口作为外部中断来使用。
本章分为如下几个部分:
6.1 W7500 外部中断简介
6.2 硬件设计
6.3 软件设计
6.4 下载验证

6.1 W7500 外部中断简介
这里将介绍 W7500 IO 口的外部中断功能,通过外部中断功能,达到本章试验的效果,即:通过W7500EVB的功能按键,控制板载的 UART2 发送数据。
这章的代码主要分布在固件库的W7500x_exti.h 和W7500x_exti.c 文件中。
这里首先介绍一下W7500 IO 口外部中断的一些基础概念。W7500的每个 IO 都可以作为外部中断的中断输入口。W7500的中断控制器只有1个外部中断/事件请求。
外部中断的初始化是通过 EXTI_Init函数实现的。
      

[mw_shl_code=applescript,true]
void EXTI_Init(PAD_Type Px, EXTI_InitTypeDef* EXTI_InitStruct);[/mw_shl_code]
[/table]                                 
下面用一个使用范例来说明EXTI_Init函数的使用。
     

[mw_shl_code=applescript,true]
EXTI_InitTypeDef EXTI_InitDef;
EXTI_InitDef.EXTI_Line = GPIO_Pin_12;

EXTI_InitDef. EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitDef.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_Init(PAD_PC, &EXTI_InitDef);
NVIC_ClearPendingIRQ(EXTI_IRQn);
NVIC_EnableIRQ(EXTI_IRQn);[/mw_shl_code]
   
例子中选择了PC12作为外部中断源,中断的模式为外部中断,中断触发条件为下降沿触发。在来看看结构体EXTI_InitTypeDef的成员变量。
     

[mw_shl_code=applescript,true]
typedef struct
{
  uint32_t EXTI_Line;
  EXTIMode_TypeDef EXTI_Mode;
  EXTITrigger_TypeDef EXTI_Trigger;
}EXTI_InitTypeDef;[/mw_shl_code]
   
从定义中可以看出,有3个参数需要设置。第一个参数是中断线的标号,取值范围为GPIO_Pin0~GPIO_Pin15。 第二个参数是中断模式,可选值为中断 EXTI_Mode_Interrupt 和事件EXTI_Mode_Disable。第三个参数是触发方式,可以是下降沿触发EXTI_Trigger_Falling或上升沿触发EXTI_Trigger_Rising。
在配置完外部中断之后,接着要做的就是编写中断服务函数。在W7500x_it.c中事先有定义中断服务函数。这里需要说明一下,W7500的 IO 口外部中断服务函数只有1个,所以进入中断后需要判断是哪个引脚触发了外部中断。
6.2 硬件设计
本实验用到的硬件资源有:
1)     UART2
2)     按键
3)     EXTI外部中断
6.3 软件设计
在W7500EVB EXTI工程里双击exti.c文件,就可以看到该文件里面的代码,先介绍Exti_Init函数,该函数代码如下:
     
[table=98%]
               
[mw_shl_code=applescript,true]void Exti_Init(void)
{
  GPIO_InitTypeDef GPIO_InitDef;
  EXTI_InitTypeDef EXTI_InitDef;

  /* 设置GPIO_Pin_12 为输入端口 */
  GPIO_InitDef.GPIO_Pin = GPIO_Pin_12;                             // 选择引脚
  GPIO_InitDef.GPIO_Mode = GPIO_Mode_IN;                       // 设置为输入模式
  GPIO_Init(GPIOC, &GPIO_InitDef);                             // 使用GPIOC
  PAD_AFConfig(PAD_PC,GPIO_Pin_12,PAD_AF1);

  /* 设置GPIO_Pin_12 为中断端口 */
  EXTI_InitDef.EXTI_Line = GPIO_Pin_12;                    // 设置 GPIO_Pin_12 为中断源
  EXTI_InitDef. EXTI_Mode = EXTI_Mode_Interrupt;              // 选择触发中断
  EXTI_InitDef.EXTI_Trigger = EXTI_Trigger_Falling;              // 设置为下降沿中断
  EXTI_Init(PAD_PC, &EXTI_InitDef);                      // 使用 PAD_PC

  NVIC_ClearPendingIRQ(EXTI_IRQn);                           // 清除中断等待位
  NVIC_EnableIRQ(EXTI_IRQn);                                // 使能外部中断      
}[/mw_shl_code]
   
           
可以看到将PC12引脚设置成了输入模式了之后,在选择PC12作为外部中断源。最后设置NVIC。
在看看外部中断的中断服务函数:
     
        
[mw_shl_code=applescript,true]void EXTI_Handler(void)
{
  delay_soft_ms(100);
  if(GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_12) == (uint32_t)Bit_RESET)
  {
    exti_init_test();
  }
}[/mw_shl_code]
   
   
   
使用的是按键触发中断所以加了100毫秒的软件延时来消抖,因为外部中断服务函数只有一个所以要读取引脚判断是那个引脚触发了外部中断,最后通过串口2会发一串数据来验证按键中断是否被触发了。
6.4 下载验证
在编译成功之后,就可以下载代码到W7500EVB上,实际验证一下程序是否正确。下载代码后,在串口调试助手里面可以看到,只要按下按键串口就会打印数据出来,如图6.4.1所示:
新建 Kankan JPEG 图像.JPG
图6.4.1 W7500EVB外部中断试验结果

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-3-2 00:54:00 | 显示全部楼层
不要发这种提问帖
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

28

主题

86

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-2-23
在线时间
37 小时
 楼主| 发表于 2018-3-2 17:40:36 | 显示全部楼层
正点原子 发表于 2018-3-2 00:54
不要发这种提问帖

昨天比较忙发错,不好意思。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 21:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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