基于ARM的PWM波参数测试.doc

上传人:人*** 文档编号:546734193 上传时间:2023-10-08 格式:DOC 页数:25 大小:499KB
返回 下载 相关 举报
基于ARM的PWM波参数测试.doc_第1页
第1页 / 共25页
基于ARM的PWM波参数测试.doc_第2页
第2页 / 共25页
基于ARM的PWM波参数测试.doc_第3页
第3页 / 共25页
基于ARM的PWM波参数测试.doc_第4页
第4页 / 共25页
基于ARM的PWM波参数测试.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《基于ARM的PWM波参数测试.doc》由会员分享,可在线阅读,更多相关《基于ARM的PWM波参数测试.doc(25页珍藏版)》请在金锄头文库上搜索。

1、基于ARM的PWM波参数测试仪摘要:随着电子技术的发展PWM应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、甚至某些音频放大器,因此研究PWM技术具有十分重要的现实意义。本文是设计频率/脉冲宽度的测量与显示的硬件电路与程序的编制。它可以测量脉冲信号的脉冲宽度,频率等参数。利用STM32通用定时器TIME4产生PWM波。利用定时器TIME3输入捕获模式来测量由PA7输入的脉冲信号的频率,占空比,电压。关键字:STM32 PWM 占空比 输入捕获模式 频率 电压1 总体设计本设计旨在加深对ARM的学习,巩固大学四年所学专业知识,提升动手能力和思考问题解决问题的能力。本设计选择意法半导

2、体的STM32F开发板,通过对该开发板的研究学习,和对STM32F103系列芯片的学习,掌握其各种外设功能。通过对TIM4定时器进行控制,使之各通道输出插入死区的互补PWM输出,各通道输出频率均为10KHz。其中,通道3输出的占空比为50%,通道4输出的占空比为35%,各通道互补输出为反相输出。TIM4定时器的通道3到4的输出分别对应PB6和PB7引脚。然后利用TM3的通道2进行捕获,通道2所接是PA7管脚,根据捕获的高低电平的计数可以算出其频率和占空比,启动AD对PA7进行采集,所测得的电压为其峰值电压。最后用串口在电脑上显示出测得的电压,占空比,频率。1.1程序流程图整个设计程序流程如图1

3、所示:初始化TIM3设置配置PA7是否有信号输入否提示接入信号是TIM3计数计数是否为预定值否 是输出所测的值读通道数据图1 程序流程图2 详细设计2.1 STM32简介STM32F103xx增强型系列使用高性能的ARM/Cortex-M3/32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC 、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。 STM32F103xx增

4、强型系列工作于-40至+105 的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。 完整的STM32F103xx增强型系列产品包括从36脚至100脚的五种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。这些丰富的外设配置,使得STM32F103xx增强型微控制器适合于多种应用场合: 电机驱动和应用控制 ; 医疗和手持设备 ; PC外设和GPS平台; 工业应用:可编程控制器、变频器、打印机和扫描仪 ; 警报系统,视频对讲,和暖气通风空调系统 ;2.2 STM32F103RBT6 管脚图芯片引脚图如图1.1:图2 S

5、TM32F103RBT6管脚图2.2 内部资源STM32有丰富的内部资源,如下所示:RealView MDK(Miertocontroller Development Kit)基于ARM微控制器的专业嵌入式开发工具;内置闪存存储器;内置SRAM; 嵌套的向量式中断控制器(NVIC);外部中断/事件控制器(EXTI); 时钟和启动; 自举模式; DMA ;RTC(实时时钟)和后备寄存器 ;窗口看门狗; I2C总线 ;通用同步/异步接受发送器(USART); 串行外设接口(SPI); 控制器区域网络(CAN) ;通用串行总线(USB); 通用输入输出接口(GPIO); ADC(模拟/数字转换器)

6、;温度传感器; 串行线JTAG调试口(SWJ-DP)。 STM32F103xx增强型系列产品中内置了多达3个同步的标准定时器。每个定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输出比较、PWM和单脉冲模式输出,在最大的封装配置中可提供最多12个输入捕获、输出比较或PWM通道。它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。 在调试模式下,计数器可以被冻结。任一个标准定时器都能用于产生PWM输出。每个定时器都有独立的DMA请求机制。2.3 串口通信部分该部分的主要功能是将测的数值传到计算机中显示,首先要

7、配置串口的工作模式,选择USART1串口,该串口默认的收发管脚是PA9,PA10;由于在调试过程中发现如果波特率过高会出现乱码现象,所以把波特率设为9200。在该部分写了一个printf格式输出函数。程序部分源代码如下:void USART1_Config(void) GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStruct

8、ure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);USART_

9、InitStructure.USART_BaudRate = 9600;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No ;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.

10、USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE);int fputc(int ch, FILE *f)USART_SendData(USART1, (unsigned char) ch);while (!(USART1-SR & USART_FLAG_TXE);return (ch);static char *itoa(int value, char *string, int radix)int i, d;int flag

11、= 0;char *ptr = string;if (radix != 10) *ptr = 0; return string;if (!value) *ptr+ = 0x30; *ptr = 0; return string;if (value 0; i /= 10) d = value / i; if (d | flag) *ptr+ = (char)(d + 0x30); value -= (d * i); flag = 1; *ptr = 0;return string; void USART1_printf(USART_TypeDef* USARTx, uint8_t *Data,.

12、)const char *s;int d; char buf16;va_list ap;va_start(ap, Data);while ( *Data != 0) / 判断是否到达字符串结束符 if ( *Data = 0x5c ) / switch ( *+Data )case r: /回车符USART_SendData(USARTx, 0x0d);Data +;break;case n: /换行符USART_SendData(USARTx, 0x0a);Data +;break;default:Data +;break; else if ( *Data = %) /switch ( *+

13、Data )case s: /字符串s = va_arg(ap, const char *);for ( ; *s; s+) USART_SendData(USARTx,*s);while( USART_GetFlagStatus(USARTx, USART_FLAG_TC) = RESET );Data+;break;case d:/十进制d = va_arg(ap, int);itoa(d, buf, 10);for (s = buf; *s; s+) USART_SendData(USARTx,*s);while( USART_GetFlagStatus(USARTx, USART_FLAG_TC) = RESET );Data+;break; default:Data+; break; /* end of else if */else USART_SendData(USARTx, *Data+);while( USART_GetFlagSt

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档 > 租房合同

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号