资源简介

支持4分接口,6分接口测量瞬时流量和累计流量,只需更改宏定义即可切换。使用STM32F103驱动使用。

资源截图

代码片段和文件信息

#include “main.h“


GOLBAL_FLOW golbal_flow;

static void bulid_test(void)
{
char BuildLine = __LINE__;
char BuildFile[] = __FILE__;
char BuildDate[] = __DATE__;
char BuildTime[] = __TIME__;
 
printf(“编译文件路径:%s\n“ BuildFile);
printf(“编译文件代码所在行:%d\n“ BuildLine);
 
printf(“编译日期:%s\n“ BuildDate);
printf(“编译时间:%s\n“ BuildTime);
 
#ifdef __STDC__
  printf(“标准C代码文件\n“);
#else
  printf(“非标准C代码文件\n“);
#endif
}

//用PD2的外部中断来获取低电平的脉冲
void Exit2_Config(void)
{
  EXTI_InitTypeDef EXTI_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIOENABLE);
  
  GPIO_EXTILineConfig(GPIO_PortSourceGPIODGPIO_PinSource2);
  
  //Config EXTI2 line
  EXTI_ClearITPendingBit(EXTI_Line2);
  EXTI_InitStructure.EXTI_Line = EXTI_Line2;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;    //下降沿触发中断
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
  
  NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; 
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; 
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; 
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
  NVIC_Init(&NVIC_InitStructure);
}
  
void EXTI2_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line2) != RESET)
  {
    golbal_flow.pluse_1s++;           //下降沿采集脉冲数
  }
  EXTI_ClearITPendingBit(EXTI_Line2); //清除Line2的中断标志位
}

#define HallFlow_Model_4       1            //定义:使用4分器件,未定义则切换为6分器件
#define MODE_4_K               7.5f
#define MODE_4_PLUSE_CNT_1L  450.0f
#define MODE_6_K               5.5f
#define MODE_6_PLUSE_CNT_1L    330.0f
#define FLOW_FULL      1000000

void Hall_Flow_Read(void)
{
if(golbal_flow.receive_flag)
{
// golbal_flow.pluse_1s = TIM_GetCounter(TIM2);      //1s内脉冲数量

if(golbal_flow.pluse_1s > 0)
{
      #ifdef HallFlow_Model_4
/*计算公式:
累计流量 = 对瞬时流量做积分
 = (脉冲频率 / 450个脉冲)    //1L需要450个脉冲,脉冲频率HZ
*/
golbal_flow.acculat += golbal_flow.pluse_1s / MODE_4_PLUSE_CNT_1L;   //单位L

/*计算公式:
瞬时流量 = (脉冲频率 / 450个脉冲) * 60s 
 = 脉冲频率 / 7.5(流量系K)
*/
golbal_flow.instant = golbal_flow.pluse_1s / MODE_4_K;  //单位(L/min)
      
      #else
       /*计算公式:
累计流量 = 对瞬时流量做积分
 = (脉冲频率 / 330个脉冲)    //1L需要330个脉冲,脉冲频率HZ
*/
golbal_flow.acculat += golbal_flow.pluse_1s / MODE_6_PLUSE_CNT_1L;   //单位L

/*计算公式:
瞬时流量 = ((脉冲频率 + 3) / 330个脉冲) * 60s 
 = (脉冲频率 + 3) / 5.5(流量系K)
*/
golbal_flow.instant = (golbal_flow.pluse_1s + 3) / MODE_6_K;  //单位(L/min)
      #endif
      
      if(golbal_flow.acculat >= FLOW_FULL)
{
golbal_flow.acculat = 0;
}
}
else
{
golbal_flow.instant  = 0;
}

printf(“瞬间流量:%.2f(L/min) 累计流量:%.2f(L)\n“golbal_flow.instantgolbal_flow.acculat);

golbal_flow.receive_flag = 0;       //接收完成标志位清零

// TIM_SetCounter(TI

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-06-14 20:13  霍尔流量计\
     目录           0  2018-06-14 20:07  霍尔流量计\BSP\
     文件        3389  2018-04-24 17:55  霍尔流量计\BSP\Hall_Flow.c
     文件         327  2018-04-24 09:46  霍尔流量计\BSP\Hall_Flow.h
     文件        3277  2018-04-06 19:20  霍尔流量计\BSP\Time_test.c
     文件         189  2018-01-25 21:18  霍尔流量计\BSP\Time_test.h
     文件         935  2014-11-25 09:32  霍尔流量计\BSP\led.c
     文件         485  2018-03-20 21:05  霍尔流量计\BSP\led.h
     文件        2949  2018-03-23 22:15  霍尔流量计\BSP\usart1.c
     文件         165  2018-01-23 18:28  霍尔流量计\BSP\usart1.h
     目录           0  2018-01-23 09:27  霍尔流量计\CMSIS\
     文件       16249  2009-04-06 10:30  霍尔流量计\CMSIS\core_cm3.c
     文件       42077  2009-04-06 10:30  霍尔流量计\CMSIS\core_cm3.h
     目录           0  2018-01-23 10:23  霍尔流量计\CMSIS\startup\
     文件       15877  2018-01-23 10:23  霍尔流量计\CMSIS\startup\startup_stm32f10x_hd.s
     文件       12236  2009-04-06 10:30  霍尔流量计\CMSIS\startup\startup_stm32f10x_ld.s
     文件       12634  2018-06-14 22:09  霍尔流量计\CMSIS\startup\startup_stm32f10x_md.s
     文件      530933  2011-06-06 20:02  霍尔流量计\CMSIS\stm32f10x.h
     文件       24166  2011-06-04 11:47  霍尔流量计\CMSIS\system_stm32f10x.c
     文件        2158  2009-04-06 10:30  霍尔流量计\CMSIS\system_stm32f10x.h
     目录           0  2018-01-23 09:27  霍尔流量计\FWlib\
     目录           0  2018-01-23 09:27  霍尔流量计\FWlib\inc\
     文件        4951  2009-04-06 10:30  霍尔流量计\FWlib\inc\misc.h
     文件       19558  2009-04-06 10:30  霍尔流量计\FWlib\inc\stm32f10x_adc.h
     文件        7373  2009-04-06 10:30  霍尔流量计\FWlib\inc\stm32f10x_bkp.h
     文件       14289  2009-04-06 10:30  霍尔流量计\FWlib\inc\stm32f10x_can.h
     文件        1980  2009-04-06 10:30  霍尔流量计\FWlib\inc\stm32f10x_crc.h
     文件       10271  2009-04-06 10:30  霍尔流量计\FWlib\inc\stm32f10x_dac.h
     文件        2980  2009-04-06 10:30  霍尔流量计\FWlib\inc\stm32f10x_dbgmcu.h
     文件       18790  2009-04-06 10:30  霍尔流量计\FWlib\inc\stm32f10x_dma.h
     文件        5833  2009-04-06 10:30  霍尔流量计\FWlib\inc\stm32f10x_exti.h
............此处省略51个文件信息

评论

共有 条评论