资源简介
支持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个文件信息
评论
共有 条评论