2025-07-06 07:50:36 +00:00
|
|
|
|
/**
|
|
|
|
|
*********************************************************************
|
|
|
|
|
* @file main.c
|
|
|
|
|
* @author liaodeyun
|
|
|
|
|
* @version V1.0
|
|
|
|
|
* @date 2025-7-6
|
|
|
|
|
* @brief RT-Thread 3.0 + STM32 <EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*********************************************************************
|
|
|
|
|
* @attention
|
|
|
|
|
*
|
|
|
|
|
* ʵ<EFBFBD><EFBFBD>ƽ̨:Ұ<EFBFBD><EFBFBD> H750 PRO STM32 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD>̳ :http://www.firebbs.cn
|
|
|
|
|
* <EFBFBD>Ա<EFBFBD> :https://fire-stm32.taobao.com
|
|
|
|
|
*
|
|
|
|
|
**********************************************************************
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*************************************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
|
|
|
|
|
*************************************************************************
|
|
|
|
|
*/
|
|
|
|
|
#include "board.h"
|
|
|
|
|
#include "rtthread.h"
|
|
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include "NGCal.h"
|
|
|
|
|
#include "Therm.h"
|
|
|
|
|
#include "Detail.h"
|
|
|
|
|
#include "FlowCal.h"
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*************************************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*************************************************************************
|
|
|
|
|
*/
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>߳̿<DFB3><CCBF>ƿ<EFBFBD> */
|
|
|
|
|
static rt_thread_t OFlowCal_thread = RT_NULL;
|
|
|
|
|
static rt_thread_t key_thread = RT_NULL;
|
|
|
|
|
/*
|
|
|
|
|
*************************************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*************************************************************************
|
|
|
|
|
*/
|
|
|
|
|
static void OFlowCal_thread_entry(void* parameter);
|
|
|
|
|
static void key_thread_entry(void* parameter);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*************************************************************************
|
|
|
|
|
* main <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*************************************************************************
|
|
|
|
|
*/
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param <EFBFBD><EFBFBD>
|
|
|
|
|
* @retval <EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
int main(void)
|
|
|
|
|
{
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>RTTϵͳ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>main<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>component.c<EFBFBD>ļ<EFBFBD><EFBFBD>е<EFBFBD>rtthread_startup()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>main<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ֻ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼߳<EFBFBD><EFBFBD>ɡ<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
rt_kprintf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>[Ұ<><D2B0>]-STM32H750<35><30>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\n");
|
|
|
|
|
rt_kprintf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>K1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>K2<EFBFBD>ָ<EFBFBD><EFBFBD>߳<EFBFBD>\n");
|
|
|
|
|
OFlowCal_thread = /* <20>߳̿<DFB3><CCBF>ƿ<EFBFBD>ָ<EFBFBD><D6B8> */
|
|
|
|
|
rt_thread_create( "OFlowCal", /* <20>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
OFlowCal_thread_entry, /* <20>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD> */
|
|
|
|
|
RT_NULL, /* <20>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
512, /* <20>߳<EFBFBD>ջ<EFBFBD><D5BB>С */
|
|
|
|
|
3, /* <20>̵߳<DFB3><CCB5><EFBFBD><EFBFBD>ȼ<EFBFBD> */
|
|
|
|
|
20); /* <20>߳<EFBFBD>ʱ<EFBFBD><CAB1>Ƭ */
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
if (OFlowCal_thread != RT_NULL)
|
|
|
|
|
rt_thread_startup(OFlowCal_thread);
|
|
|
|
|
else
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
key_thread = /* <20>߳̿<DFB3><CCBF>ƿ<EFBFBD>ָ<EFBFBD><D6B8> */
|
|
|
|
|
rt_thread_create( "key", /* <20>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
key_thread_entry, /* <20>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD> */
|
|
|
|
|
RT_NULL, /* <20>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
512, /* <20>߳<EFBFBD>ջ<EFBFBD><D5BB>С */
|
|
|
|
|
2, /* <20>̵߳<DFB3><CCB5><EFBFBD><EFBFBD>ȼ<EFBFBD> */
|
|
|
|
|
20); /* <20>߳<EFBFBD>ʱ<EFBFBD><CAB1>Ƭ */
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
if (key_thread != RT_NULL)
|
|
|
|
|
rt_thread_startup(key_thread);
|
|
|
|
|
else
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*************************************************************************
|
|
|
|
|
* <EFBFBD>̶߳<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*************************************************************************
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
static void OFlowCal_thread_entry(void* parameter)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
while (1)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD>ṹ<EFBFBD><E1B9B9>
|
|
|
|
|
FlowParSTRUCT flowParams = {0};
|
|
|
|
|
NGParSTRUCT ngParams = {0};
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
flowParams.dPatm = 0.0981; // <20><><EFBFBD><D7BC><EFBFBD><EFBFBD>ѹ(bar)
|
|
|
|
|
flowParams.dPf = 1.48; // ѹ<><D1B9>(MPa)
|
|
|
|
|
flowParams.dPfType = 0; // 0=<3D><>ѹ<EFBFBD><D1B9>1=<3D><>ѹ
|
|
|
|
|
flowParams.dDp = 12.50; // <20><>ѹ(kPa)
|
|
|
|
|
flowParams.dTf = 15.0; // <20>¶<EFBFBD>(<28><>C)
|
|
|
|
|
flowParams.dCbtj = 0; // <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0=<3D><>״̬)
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ùܵ<C3B9><DCB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
flowParams.dPipeD = 259.38; // <20>ܵ<EFBFBD><DCB5>ھ<EFBFBD>(mm)
|
|
|
|
|
flowParams.dOrificeD = 150.25; // <20>װ<EFBFBD><D7B0><EFBFBD>(mm)
|
|
|
|
|
flowParams.dPipeType = 0; // <20>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
flowParams.dPtmode = 0; // ȡѹ<C8A1><D1B9>ʽ(0=<3D><><EFBFBD><EFBFBD>ȡѹ<C8A1><D1B9>1=<3D>ǽ<EFBFBD>ȡѹ)
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ò<EFBFBD><C3B2>ϲ<EFBFBD><CFB2><EFBFBD>
|
|
|
|
|
flowParams.dPipeMaterial = 2; // 20<32>Ÿ<EFBFBD>
|
|
|
|
|
flowParams.dOrificeMaterial = 10; // <20><><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ʾ<><CABE>: 95%<25><><EFBFBD>飬5%<25><><EFBFBD><EFBFBD>)
|
|
|
|
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(GB/T 21446-2008 <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
for(int i=0; i<NUMBEROFCOMPONENTS; i++) {
|
|
|
|
|
flowParams.dNG_Compents[i] = 0.0; // <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>Ϊ0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>GB/T 21446-2008<30><38><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ֵ(<28><><EFBFBD><EFBFBD><EFBFBD>ٷֱ<D9B7>)
|
|
|
|
|
flowParams.dNG_Compents[0] = 88.36; // <20><><EFBFBD><EFBFBD>(CH4)
|
|
|
|
|
flowParams.dNG_Compents[1] = 0.68; // <20><><EFBFBD><EFBFBD>(N2)
|
|
|
|
|
flowParams.dNG_Compents[2] = 1.57; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼(CO2)
|
|
|
|
|
flowParams.dNG_Compents[3] = 6.25; // <20><><EFBFBD><EFBFBD>(C2H6)
|
|
|
|
|
flowParams.dNG_Compents[4] = 2.4; // <20><><EFBFBD><EFBFBD>(C3H8)
|
|
|
|
|
flowParams.dNG_Compents[5] = 0.00; // ˮ(H2O)
|
|
|
|
|
flowParams.dNG_Compents[6] = 0.00; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(H2S)
|
|
|
|
|
flowParams.dNG_Compents[7] = 0.04; // <20><><EFBFBD><EFBFBD>(H2)
|
|
|
|
|
flowParams.dNG_Compents[8] = 0.00; // һ<><D2BB><EFBFBD><EFBFBD>̼(CO)
|
|
|
|
|
flowParams.dNG_Compents[9] = 0.00; // <20><><EFBFBD><EFBFBD>(O2)
|
|
|
|
|
flowParams.dNG_Compents[10] = 0.15; // <20>춡<EFBFBD><ECB6A1>(i-C4H10)
|
|
|
|
|
flowParams.dNG_Compents[11] = 0.35; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(n-C4H10)
|
|
|
|
|
flowParams.dNG_Compents[12] = 0.05; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(i-C5H12)
|
|
|
|
|
flowParams.dNG_Compents[13] = 0.1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(n-C5H12)
|
|
|
|
|
flowParams.dNG_Compents[14] = 0.01; // <20><><EFBFBD><EFBFBD>(C6H14)
|
|
|
|
|
flowParams.dNG_Compents[15] = 0.0; // <20><><EFBFBD><EFBFBD>(C7H16)
|
|
|
|
|
flowParams.dNG_Compents[16] = 0.0; // <20><><EFBFBD><EFBFBD>(C8H18)
|
|
|
|
|
flowParams.dNG_Compents[17] = 0.0; // <20><><EFBFBD><EFBFBD>(C9H20)
|
|
|
|
|
flowParams.dNG_Compents[18] = 0.0; // <20><><EFBFBD><EFBFBD>(C10H22)
|
|
|
|
|
flowParams.dNG_Compents[19] = 0.04; // <20><><EFBFBD><EFBFBD>(He)
|
|
|
|
|
flowParams.dNG_Compents[20] = 0.0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㺯<EFBFBD><E3BAAF>
|
|
|
|
|
OFlowCal(&flowParams, &ngParams);
|
|
|
|
|
|
|
|
|
|
// <20><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
printf("========== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ==========\n");
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %.4f m3/s\n", flowParams.dVFlowf);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %.4f m3/s\n", flowParams.dVFlowb);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %.4f kg/s\n", flowParams.dMFlowb);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %.4f MJ/s\n", flowParams.dEFlowb / 1e6);
|
|
|
|
|
printf("<EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %.2f m/s\n", flowParams.dVelocityFlow);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>: %.4f\n", flowParams.dCd);
|
|
|
|
|
printf("<EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD>: %.2f\n", flowParams.dRnPipe);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void key_thread_entry(void* parameter)
|
|
|
|
|
{
|
|
|
|
|
rt_err_t uwRet = RT_EOK;
|
|
|
|
|
while (1)
|
|
|
|
|
{
|
|
|
|
|
if( Key_Scan(KEY1_GPIO_PORT,KEY1_PIN) == KEY_ON )/* K1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>LED1<EFBFBD>̣߳<EFBFBD>\n");
|
2025-07-06 14:29:58 +00:00
|
|
|
|
uwRet = rt_thread_suspend(OFlowCal_thread);/* <20><><EFBFBD><EFBFBD>LED1<44>߳<EFBFBD> */
|
2025-07-06 07:50:36 +00:00
|
|
|
|
if(RT_EOK == uwRet)
|
|
|
|
|
{
|
|
|
|
|
rt_kprintf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>LED1<EFBFBD>̳߳ɹ<EFBFBD><EFBFBD><EFBFBD>\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
rt_kprintf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>LED1<EFBFBD>߳<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><EFBFBD>룺0x%lx\n",uwRet);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if( Key_Scan(KEY2_GPIO_PORT,KEY2_PIN) == KEY_ON )/* K1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD>ָ<EFBFBD>LED1<EFBFBD>̣߳<EFBFBD>\n");
|
2025-07-06 14:29:58 +00:00
|
|
|
|
uwRet = rt_thread_resume(OFlowCal_thread);/* <20>ָ<EFBFBD>LED1<44>̣߳<DFB3> */
|
2025-07-06 07:50:36 +00:00
|
|
|
|
if(RT_EOK == uwRet)
|
|
|
|
|
{
|
|
|
|
|
rt_kprintf("<EFBFBD>ָ<EFBFBD>LED1<EFBFBD>̳߳ɹ<EFBFBD><EFBFBD><EFBFBD>\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
rt_kprintf("<EFBFBD>ָ<EFBFBD>LED1<EFBFBD>߳<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>ʧ<EFBFBD>ܴ<EFBFBD><EFBFBD>룺0x%lx\n",uwRet);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
rt_thread_delay(20);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/********************************END OF FILE****************************/
|