会用就行?!usart.c,usart.h,sys.h都是用的正点原子的
(成功版)
timer.h
#ifndef __TIMER_H
#define __TIMER_H
#include "sys.h"
void TIM4_Cap_Init(u16 arr,u16 psc);
#endif
timer.c
#include "timer.h"
#include "delay.h"
#include "usart.h"
#include "sys.h"//sys.h是一个头文件,它通常包含系统时钟、中断和时钟周期相关的函数和常量定义。在STM32的开发中,sys.h文件内还定义了STM32的IO口输入读取宏定义和输出宏定义,实现对STM32各个IO口的位操作,包括读入和输出。
void TIM4_Cap_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;//声明一个结构体,名字是GPIO_InitStructure,结构体原型由GPIO_InitTypeDef 确定,在stm32中用来初始化GPIO。
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//初始化定时器
TIM_ICInitTypeDef TIM4_ICInitStructure;//输入捕获初始化
NVIC_InitTypeDef NVIC_InitStructure;//初始化中断
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);//使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; /

本文介绍了在STM32开发中如何使用USART通信、sys.h库中的功能以及自定义的TIMER_H和timer.c文件,实现了基于TIM4定时器的上升沿捕获中断,用于测量按键触发的距离。在main.c中,通过GPIO检测按键并利用TIM4的计数来计算高电平时间,进而计算距离。
最低0.47元/天 解锁文章
1459





