蓝桥杯嵌入式(STM32G431RBT6)——扩展板——IC采集频率(PUSL1、PUSL2)

1.原理图

原理图1
原理图2

2.Cubemx配置

配置1
配置2
配置3

3.代码

(1) timer.c

#include "timer.h"

unsigned int PUSL1_frq_T2CH2=0;
unsigned int PUSL2_frq_T2CH3=0;

uint32_t uwIC2Value1_T2CH2 = 0;//第一次捕获上升沿的时间
uint32_t uwIC2Value2_T2CH2 = 0;//第二次捕获上升沿的时间
uint32_t uwDiffCapture_T2CH2 = 0;//一个周期所用时间

uint32_t uwIC3Value1_T2CH3 = 0;//第一次捕获上升沿的时间
uint32_t uwIC3Value2_T2CH3 = 0;//第二次捕获上升沿的时间
uint32_t uwDiffCapture_T2CH3 = 0;//一个周期所用时间

uint16_t uhCaptureIndex_T2CH2 = 0;
uint16_t uhCaptureIndex_T2CH3 = 0;


void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
   
    if(htim->Instance==TIM2)
    {
   
        if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_2)
        {
   
            if(0==uhCaptureIndex_T2CH2)
            {
   
               uwIC2Value1_T2CH2=HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_2);//获取第一次捕获上升沿的时间
               uhCaptureIndex_T2CH2=1;
            }
            else if(1==uhCaptureIndex_T2CH2)
            {
   
                uwIC2Value2_T2CH2=HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_2);//获取第二次捕获上升沿的时间
                if(uwIC2Value2_T2CH2>uwIC2Value1_T2CH2)//一个周期所占时间=第二次捕获时间-第一次捕获时间
                {
   
                    uwDiffCapture_T2CH2=uwIC2Value2_T2CH2-uwIC2Value1_T2CH2;
                }
                else if(uwIC2Value2_T2CH2<uwIC2Value1_T2CH2)//一个周期所占时间=(重装载值-第一次捕获时间)+第二次捕获时间
                {
   
                    uwDiffCapture_T2CH2=(0xffffffff-uwIC2Value1_T2CH2)+uwIC2Value2_T2CH2;
                }
                else
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值