打印
[应用相关]

ST32之输入捕获

[复制链接]
483|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1. 通用定时器输入捕获概述:
1)输入捕获工作过程:通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变的时候(比如上升沿或下降沿),将当前定时器的值(TIMx_CNT)存放到对应的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获

使用特权

评论回复
沙发
欢乐家园|  楼主 | 2021-3-28 23:34 | 只看该作者
2)  输入捕获步骤:

使用特权

评论回复
板凳
欢乐家园|  楼主 | 2021-3-28 23:35 | 只看该作者
① 设置输入捕获滤波器:

使用特权

评论回复
地板
欢乐家园|  楼主 | 2021-3-28 23:35 | 只看该作者

使用特权

评论回复
5
欢乐家园|  楼主 | 2021-3-28 23:36 | 只看该作者
② 设置输入捕获极性:

使用特权

评论回复
6
欢乐家园|  楼主 | 2021-3-28 23:37 | 只看该作者
③ 设置输入捕获映射通道:

使用特权

评论回复
7
欢乐家园|  楼主 | 2021-3-28 23:37 | 只看该作者
④ 设置输入捕获分频器:

使用特权

评论回复
8
欢乐家园|  楼主 | 2021-3-28 23:38 | 只看该作者
⑤ 捕获到有效信号可以开启中断:

使用特权

评论回复
9
欢乐家园|  楼主 | 2021-3-28 23:39 | 只看该作者
2. 常用寄存器和库函数配置
   1)相关函数:

使用特权

评论回复
10
欢乐家园|  楼主 | 2021-3-28 23:40 | 只看该作者
  ① 输入捕获通道初始化函数:
void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);

                                        typedef struct
                                       {
                                         uint16_t TIM_Channel; //捕获通道1-4  
                                         uint16_t TIM_ICPolarity; //捕获极性
                                         uint16_t TIM_ICSelection; //映射关系
                                         uint16_t TIM_ICPrescaler; //分频系数
                                         uint16_t TIM_ICFilter;  //滤波器
                                       } TIM_ICInitTypeDef;

            TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1;
            TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
            TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
            TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
            TIM5_ICInitStructure.TIM_ICFilter = 0x00;
             TIM_ICInit(TIM5, &TIM5_ICInitStructure);

使用特权

评论回复
11
欢乐家园|  楼主 | 2021-3-28 23:41 | 只看该作者
② 通道极性设置独立函数:
            
void TIM_OCxPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);

使用特权

评论回复
12
欢乐家园|  楼主 | 2021-3-28 23:41 | 只看该作者
③ 获取通道捕获值:
uint32_t TIM_GetCapture1(TIM_TypeDef* TIMx);

使用特权

评论回复
13
欢乐家园|  楼主 | 2021-3-28 23:42 | 只看该作者
2)输入捕获的一般配置步骤:
   ① 初始化定时器和通道对应IO的时钟。

使用特权

评论回复
14
欢乐家园|  楼主 | 2021-3-28 23:42 | 只看该作者
② 初始化IO口,模式为输入:GPIO_Init();
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 输入

使用特权

评论回复
15
欢乐家园|  楼主 | 2021-3-28 23:43 | 只看该作者
③初始化定时器ARR,PSC
      TIM_TimeBaseInit();

使用特权

评论回复
16
欢乐家园|  楼主 | 2021-3-28 23:43 | 只看该作者
④初始化输入捕获通道
      TIM_ICInit();

使用特权

评论回复
17
欢乐家园|  楼主 | 2021-3-28 23:44 | 只看该作者
   ⑤如果要开启捕获中断,
      TIM_ITConfig();
      NVIC_Init();

使用特权

评论回复
18
欢乐家园|  楼主 | 2021-3-28 23:44 | 只看该作者
⑥使能定时器:TIM_Cmd();

使用特权

评论回复
19
欢乐家园|  楼主 | 2021-3-28 23:46 | 只看该作者
⑦编写中断服务函数:TIMx_IRQHandler();         

使用特权

评论回复
20
欢乐家园|  楼主 | 2021-3-28 23:47 | 只看该作者
3. 输入捕获实验
  1)主函数:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

918

帖子

1

粉丝