野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6362|回复: 1

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

[复制链接]
发表于 2018-3-7 19:11:00 | 显示全部楼层 |阅读模式
W7500(W7500P)芯片简介:
W7500 芯片为工业级以太网单芯片解决方案, 集成 ARM Cortex-M0,128KB Flash 及全硬件TCP/IP 核(和W5500、W5100内核一致),特别适用于物联网领域。 使用 W7500EVB, 让您轻松完成原型开发。

全硬件TCP/IP核的最大优点是他在执行联网操作时不需要占用MCU的运行资源,大大增加了MCU的工作效率。

上一章,介绍了 W7500 PWM 输出模式的使用方法,这一章,将向大家介绍W7500 PWM 输入捕获模式的使用。在本章中,将PWM作为输入捕获模式,另外在初始化PA10引脚,PA10引脚不断的改变自身的电平,利用PWM的捕获功能来捕获该引脚。

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

使用道具 举报

 楼主| 发表于 2018-3-7 19:12:08 | 显示全部楼层
第十章 PWM输入捕获试验
上一章,介绍了 W7500 的 PWM 输出模式的使用方法,这一章,将向大家介绍W7500 的 PWM 输入捕获模式的使用。在本章中,将PWM作为输入捕获模式,另外在初始化PA10引脚,PA10引脚不断的改变自身的电平,利用PWM的捕获功能来捕获该引脚。
章分为如下几个部分:
10.1 输入捕获简介
10.2 硬件设计
10.3 软件设计
10.4 下载验证

10.1 输入捕获简介
当外部输入信号改变时,PWM就会捕获该通道定时器的值。 该通道可以选择在上升沿捕获或下降沿捕获的方式。如果捕获中断被启用,当外部输入信号被切换时捕获中断就发生。定时器的值被保存在 Channel-n 捕获寄存器中,直到中断被清除捕获寄存器才会被重写,如图10.1.1所示:

他的配置流程在上一章讲过了这里就不重复了。
PWM_CaptureModeInit函数的是针对PWM捕获模式写的,所以配置他的结构体也不一样,下面看看他的结构体成员。
  1. typedef struct
  2. {
  3.     uint32_t    PWM_CHn_PR;
  4.     uint32_t    PWM_CHn_MR;
  5.     uint32_t    PWM_CHn_LR;
  6.     uint32_t    PWM_CHn_UDMR;
  7.     uint32_t    PWM_CHn_PDMR;
  8.     uint32_t    PWM_CHn_CMR;
  9. }PWM_CaptureModeInitTypeDef;
复制代码
针对 PWM通道0 的捕获模式初始化范例代码格式:
  1. PWM_CaptureModeInitTypeDef PWM_CaptureModeInitStruct;
  2. PWM_CaptureModeInitStruct.PWM_CHn_PR = 50;
  3. PWM_CaptureModeInitStruct.PWM_CHn_LR = 10000;
  4. PWM_CaptureModeInitStruct.PWM_CHn_UDMR = PWM_CHn_UDMR_UpCount;
  5. PWM_CaptureModeInitStruct.PWM_CHn_PDMR = PWM_CHn_PDMR_Periodic;
  6. PWM_CaptureModeInitStruct.PWM_CHn_CMR = PWM_CHn_CMR_RisingEdge;
  7. PWM_CaptureModeInit(PWM_CH0, &PWM_CaptureModeInitStruct);
  8. PWM_CHn_SetPEEER(PWM_CH0, PWM_CHn_PEEER_ExtEnable);
  9. PWM_CHn_Start(PWM_CH0);  //开启定时器PWM_CHn_Start(PWM_CH0);
复制代码
10.2 硬件设计
打开输入捕获实验,可以看到,工程和上一个实验没有什么改动。因为输入捕获代码是直接添加在 pwm.c 和 pwm.h 中。
在main.c 里面加入如下代码:
  1. int main()
  2. {
  3. /*  炜世科技—WIZnet W7500官方代理商,全程技术支持,价格绝对优势!*/       
  4.   SystemInit();                /* 系统内部时钟初始化 */
  5.   delay_init();                   /* 系统滴答时钟配置*/
  6.   S_UART_Init(115200);       /* 初始化串口通信:115200@8-n-1*/
  7.   PWM_Input();                   /* PWM 捕获模式初始化 */
  8.        
  9.   printf("PWM捕获测试\r\n");
  10.   while(1)
  11.   {
  12.     GPIO_SetBits(GPIOA, GPIO_Pin_10);
  13.     delay_ms(1000);
  14.     GPIO_ResetBits(GPIOA, GPIO_Pin_10);
  15.     delay_ms(1000);
  16.     printf("CR=%d\r\n",PWM_CHn_GetCR(PWM_CH0));
  17.   }
  18. }
复制代码
10.4 下载验证
图10.4.1 W7500EVB PWM捕获试验结果


回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-3 23:12 , Processed in 0.028270 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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