教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 法律文档 >

stm32 PWM输入捕获(6)

来源:网络收集 时间:2026-09-07
导读: GPIO_Init(GPIOA, 7:注意打开相应外设的时钟 RCC_APB1PeriphClock: TIM2,TIM4 RCC_APB2PeriphClock: GPIOx RCC_AHBPeriphClock: DMA 8:关于调试过程中的MDK的使用 A:打开箭头指向的两项 B:在Address里面分别输

GPIO_Init(GPIOA, &GPIO_InitStructure);

7:注意打开相应外设的时钟

RCC_APB1PeriphClock: TIM2,TIM4

RCC_APB2PeriphClock: GPIOx

RCC_AHBPeriphClock: DMA

8:关于调试过程中的MDK的使用

A:打开箭头指向的两项

B:在Address里面分别输入

0x40000038,0x4000003c,0x40000040以及0x40000838

就可以看到TIM2_CRR1,TIM2_CRR2,TIM2_CRR3以及TIM4_CRR2中的值也就是各个通道捕捉的值value

因为捕获的数十经过PSC10分频的所以用72MHZ/10*value就可以得到测量信号的频率

C:我们可以在这个框里点F2输入我们定义的缓冲区的名字

TIM2_Capture_value

TIM2_Capture_value1

TIM2_Capture_value2

TIM4_Capture_value

就可以看到DMA的各个通道传输到存储器区的数据,这个数据是跟步骤B里面的数据是一致的。缓冲区的大小为16,信号的频率在一段时间内是不变的那么这16个数就是一样的

同样用72MHZ/10*value就可以得到测量信号的频率

你几个问题点没有把握好,

一个是映射, 一个是主输入, 一个是从输入,

只有从输入才有第一个跳变复位,第二个跳变存在CCR2或者CCR1中,

主输入可以先CCR1,也可能选择CCR2,这里要从输入配合,他们不能同用一个CCR. 这几个问题你能搞清楚了,就很清楚了。 2008.10.13 15:05

刚刚开始做定时器输入捕获的时候在这个论坛上找了好久,都没有人分享,也有很多人问,无奈自己动手写了。花了一天的时间,这个东西真的不好写了,对比了库的例子,仿真,等。可以说付出了很多。现在完成了和大家分享。希望大家多多支持。这个程序是在定时器输入捕获的基础上看手册完成的,

程序说明:1、程序中定时器4的PB6用于输出频率为1K,占空比为50%的PWM信号。 2、定时器2的PA0用于输入捕获,当程序下到板子上,只有两个脚连在一起才会发生捕获。

3、串口用于发送捕获的值到PC机上。

4、定时器2的CCR1存PWM信号的频率,CCR2存高电平时间。

这里声明一下,如果你要捕获的PWM信号不在ARR,PSC计算的范围内,请自己先计算再使用本程序。

#include \#include \

#include \//延时子函数 #include \

u16 IC1Value; u16 IC2Value; u16 DutyCycle; u16 Frequency;

void PWM_Init(u16 arr,u16 psc); void Capture_Init(u16 arr,u16 psc); int main(void) {

Stm32_Clock_Init(9); //系统时钟设置 delay_init(72);//延时函数初始化 uart_init(72,9600);

PWM_Init(1000,72-1);//不分频。PWM频率=72000/1440=5Khz Capture_Init(2000,72-1);

while(1) {

Frequency = 1000000/IC1Value;

DutyCycle = (IC2Value*100)/IC1Value;//占空比=(IC2Value/IC1Value)*100; printf(\= %d\\r\\n\printf(\= %d\\r\\n\printf(\} }

//PWM输出初始化 //arr:自动重装值 //psc:时钟预分频数

void PWM_Init(u16 arr,u16 psc) {

//此部分需手动修改 IO口设置 RCC->APB2ENR|=1<<0; //

RCC->APB1ENR|=1<<2; //TIM4 时钟使能 RCC->APB2ENR|=1<<3; //使能PORTB时钟

GPIOB->CRL&=0XF0FFFFFF;//PB6 输出 GPIOB->CRL|=0X0B000000;//复用功能输出 GPIOB->ODR|=1<<6;//PB6 上拉

TIM4->ARR=arr;//设定计数器自动重装值 TIM4->PSC=psc;//预分频器不分频

TIM4->CCMR1|=7<<4; //CH1 PWM2模式 TIM4->CCMR1|=1<<3; //CH1 预装载使能 TIM4->CCER|=1<<0; //OC1 输出使能 TIM4->CR1=0x0080; //ARPE使能

TIM4->CR1|=0x01; //使能定时器 3

TIM4->CCR1 = 500;//占空比初值 = 1440*50% = 720 }

…… 此处隐藏:42字,全部文档内容请下载后查看。喜欢就下载吧 ……
stm32 PWM输入捕获(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/436323.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)