野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 151|回复: 3

f407定时器1的输入捕获功能和通用定时器一样吗?测量脉宽

[复制链接]
发表于 2024-11-6 16:43:09 | 显示全部楼层 |阅读模式
static void TIM1_NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;
    // 设置中断组为0
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);               
                // 设置中断来源
    NVIC_InitStructure.NVIC_IRQChannel = TIM1_TIM_IRQn;        
                // 设置抢占优先级
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;         
          // 设置子优先级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;       
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}

//引脚初始化PA11 ch4  PA8
static void TIM1_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  // 输入捕获通道 GPIO 初始化
        RCC_AHB1PeriphClockCmd(TIM1_measure_GPIO_CLK, ENABLE);
        GPIO_PinAFConfig(TIM1_measure_GPIO_PORT,TIM1_measure_GPIO_PIN,TIM1_measure_AF);
        GPIO_PinAFConfig(TIM1_measure_GPIO_PORT1,TIM1_measure_GPIO_PIN1,TIM1_measure_AF);
       
  GPIO_InitStructure.GPIO_Pin =  TIM1_measure_GPIO_PIN;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
  GPIO_Init(TIM1_measure_GPIO_PORT, &GPIO_InitStructure);       
  GPIO_InitStructure.GPIO_Pin =  TIM1_measure_GPIO_PIN1;
  GPIO_Init(TIM1_measure_GPIO_PORT, &GPIO_InitStructure);
}

static void TIM1_Mode_Config(void)
{
//时基配置在pwmout函数中
        /*--------------------输入捕获结构体初始化-------------------*/       
        TIM_ICInitTypeDef TIM_ICInitStructure;
        // 配置输入捕获的通道,需要根据具体的GPIO来配置
        TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
        // 输入捕获信号的极性配置
        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
        // 输入通道和捕获通道的映射关系,有直连和非直连两种
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
        // 输入的需要被捕获的信号的分频系数
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
        // 输入的需要被捕获的信号的滤波系数
        TIM_ICInitStructure.TIM_ICFilter = 0;
        // 定时器输入捕获初始化
        TIM_ICInit(TIM1_TIM, &TIM_ICInitStructure);
       
        TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;
        // 定时器输入捕获初始化
        TIM_ICInit(TIM1_TIM, &TIM_ICInitStructure);
       
       
  // 开启更新和捕获中断  
        TIM_ITConfig (TIM1_TIM, TIM_IT_Update | TIM_IT_CC1|TIM_IT_CC4, ENABLE );
        // 清除更新和捕获中断标志位
  TIM_ClearFlag(TIM1_TIM, TIM_FLAG_Update|TIM_IT_CC1|TIM_IT_CC4);       
       
        // 使能计数器
        TIM_Cmd(TIM1_TIM, ENABLE);
}


大佬帮忙看看有啥问题吗,实在找不出来

回复

使用道具 举报

 楼主| 发表于 2024-11-7 16:45:21 来自手机 | 显示全部楼层
有大佬帮忙看看吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-7 16:46:07 来自手机 | 显示全部楼层
高级定时器的简单输入捕获功能和通用定时器是有什么区别吗
回复 支持 反对

使用道具 举报

发表于 2024-11-11 11:18:09 | 显示全部楼层
本帖最后由 Nalimca 于 2024-11-11 11:20 编辑














通用定时器需要到时后需要手动也就是你的软件操作GPIO去读取输入的电平,然后软件判断是否捕获到变化或是上升沿,下降沿.然后通过全局变量去记录间隔时间.
高级定时器,不需要软件去读取输入电平,而是硬件根据设定自动检测电平变化,检测到后,输出定时器的计数值.
简而言之,高级定时器更加方便,配置好之后,只要等待中断读取数据即可.通用定时器操作繁琐,而且需要更加频繁进入中断.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 17:49 , Processed in 0.128865 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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