STM32的输入捕获

实验目的:

在串口调试助手上打印出按键按下的时间


实验步骤:





实验程序:

/*******************************timer.c********************************/
#include "sys.h"
#include "stm32f4xx.h"


extern u8 TIM5CHA1_CAPTURE_STA;
extern u16  TIM5CHA1_CAPTURE_VAL;


/*
本示例的作用就是,
当按键按下时,每次输入捕获的时间差,
然后从串口调试助手中打印出其时间差;
*/


/*
关于输入捕获的操作可参考寄存器版的步骤
*/


/*
定时器输入捕获的初始化函数:
主要是关于寄存器的相关配置
*/


/*初始化定时器5为输入捕获*/
void TIM5_Init(void){
	
	/*************************
	定时器输入捕获的设置:	
	*************************/
	
	/*将按键KEY_UP复用*/
	/*1.使能GPIO端口时钟*/
	RCC->AHB1ENR |= 1;
	/*这里还需要将其配置成下拉,
	因为在输入捕获中,将通过上升沿来触发;
	*/
	GPIOA->PUPDR |= 0X2;
	
	/*2.使能复用外设时钟*/
	RCC->APB1ENR |= 1<<3;
	
	/*3.端口模式配置为复用功能*/
	GPIOA->MODER |= 0X2;
	
	/*4.配置GPIOx_AFRL或者GPIOx_AFRH寄存器,
	将IO连接到所需的复用外设*/
	GPIOA->AFR[0] |= 0X2;
	
	
	
	/*设置定时器5的输入捕获*/
	
	//设置TIM5的分频和自动重装
	TIM5->PSC = 84-1;
	TIM5->ARR = 0XFFFF-1;   //芯片手册上写着是16位,
							
	//设置滤波/映射/分频
	TIM5->CCMR1 |= 0X1;
	
	
	//设置上升沿触发并使能捕获
	TIM5->CCER |= 0X1;
	
	//使能更新中断和使能捕获中断
	TIM5->DIER |= 0X3;
	
	//使能计数器
	T
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值