更新:DEVICE<---HART--->SIG<---485--->PC,HART透传功能完成

This commit is contained in:
吴俊潮 2025-05-12 11:14:56 +08:00
parent daf63a4503
commit 96575c2dc9
9 changed files with 18309 additions and 11492 deletions

View File

@ -116,19 +116,19 @@ typedef enum
typedef enum
{
OPENNING_ANIME = 0, //播放开机动画
MAIN_FUNCTION, //主要功能:输入&输出、曲线显示等
SET_ITEM_CHOOSE, //设置菜单:选项卡选择
SET_CONTENT_CHOOSE, //设置菜单:内容选择
SET_CONTENT_MODIFY, //设置菜单:内容修改
SET_SHOW_LOG //设置菜单:查看记录
MAIN_FUNCTION, //主要功能:输入&输出、曲线显示等
SET_ITEM_CHOOSE, //设置菜单:选项卡选择
SET_CONTENT_CHOOSE, //设置菜单:内容选择
SET_CONTENT_MODIFY, //设置菜单:内容修改
SET_SHOW_LOG //设置菜单:查看记录
}OPERATIONS;
typedef enum
{
TRANS_NONE = 0,
TRANS_HART,
TRANS_BLUETOOTH,
TRANS_MODBUS
TRANS_NONE = 0, //无通讯
TRANS_HART, //HART透传
TRANS_BLUETOOTH, //蓝牙透传
TRANS_MODBUS //MODBUS
}SIG_TRANSMISSION;
typedef struct
@ -163,8 +163,13 @@ extern SIG_TRANSMISSION sig_trans; //通讯模式
//绝对值计算
#define MY_ABS(pa) ( ( (pa) >= 0 )?( (pa) ):( 0 - (pa) ) )
#define LVGL_BREATHE_INTERVAL 5
#define BLE_TASK_PERIOD 100
#define LVGL_TASK_PERIOD 5 //LVGL任务周期
#define MENU_TASK_PERIOD 500 //显示内容设置周期
#define BLE_TASK_PERIOD 10 //蓝牙任务周期
#define HART_TASK_PERIOD 5 //HART任务周期
#define RS485_TASK_PERIOD 5 //485任务周期
#define MUX_TASK_PERIOD 50 //多通道输入输出任务周期
//屏幕显示
void screen_run(void);

View File

@ -1148,33 +1148,32 @@ void up2down_update(int16_t low, int16_t up)
void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
{
//为保障安全,切换工作模式后:功能关闭,输入输出值清零
//{
//功能关闭
m5data.io_on2off = IO_OFF;
io_on2off_status(); //更新ON/OFF/IN/OUT状态指示
//功能关闭
m5data.io_on2off = IO_OFF;
io_on2off_status(); //更新ON/OFF/IN/OUT状态指示
//数码管输入显示置零
set_nixie_cube(IO_INPUT, 99, 0);
//数码管输入显示置零
set_nixie_cube(IO_INPUT, 99, 0);
//数码管输出值置零
set_output(0);
//数码管输出值置零
set_output(0);
//当前输出清零
sig_sv_update();
//当前输出清零
sig_sv_update();
//游标恢复至小数点前1位个位
m5data.io_cursor = 3;
m5data.io_cursor_prv = 3;
set_cursor_position();
//游标恢复至小数点前1位个位
m5data.io_cursor = 3;
m5data.io_cursor_prv = 3;
set_cursor_position();
#if NIXIE_CUBE_ENABLE
//闪烁参数清零
m5data.twk_flag = 0; //闪烁中止
m5data.twk_cnt = 0; //闪烁计数清零
m5data.twk_flip = 0; //0显示1不显示
//闪烁参数清零
m5data.twk_flag = 0; //闪烁中止
m5data.twk_cnt = 0; //闪烁计数清零
m5data.twk_flip = 0; //0显示1不显示
#endif
//}
switch (mode)
{

View File

@ -830,7 +830,10 @@ float32 my_power(int a, int b)
//初始化打包
void my_inits_gather(void)
{
//HAL_UART_Receive_IT(&huart6, scom6_ble.rx_buff, 255);
SIG24130_Init();
//HART复位关闭
HART_RESET(GPIO_PIN_SET);
//eeprom
eeprom_spi_init();

View File

@ -419,11 +419,10 @@ void key_functions_main(void)
#if NIXIE_CUBE_ENABLE
// m5data.twk_flag = 1; //上、下、左、右 任意一个键按下后,闪烁开始
// m5data.twk_cnt = 0; //每次按下后闪烁计数清零
#endif
//避免游标移动的瞬间,前一刻的数值处于闪烁熄灭的状态,移动游标前重新显示一次当前数值
set_nixie_cube(IO_OUTPUT, m5data.io_cursor, m5data.o_numbers[m5data.io_cursor]);
#endif
m5data.io_cursor_prv = m5data.io_cursor;
m5data.io_cursor = (m5data.io_cursor <= 0)?(6):(m5data.io_cursor - 1);
set_cursor_position();
@ -462,11 +461,10 @@ void key_functions_main(void)
#if NIXIE_CUBE_ENABLE
m5data.twk_flag = 1; // 上、下、左、右 任意一个键按下后,闪烁开始
m5data.twk_cnt = 0; //每次按下后闪烁计数清零
#endif
//避免游标移动的瞬间,前一刻的数值处于闪烁熄灭的状态,移动游标前重新显示一次当前数值
set_nixie_cube(IO_OUTPUT, m5data.io_cursor, m5data.o_numbers[m5data.io_cursor]);
#endif
m5data.io_cursor_prv = m5data.io_cursor;
m5data.io_cursor = (m5data.io_cursor >= 6)?(0):(m5data.io_cursor + 1);
set_cursor_position();

View File

@ -121,11 +121,19 @@ static void fun_pwr12_ctrl(uint8_t ch)
uint8_t pulse = 50;
float32 fre_set = 0;
float32 sv_prv = 0;
CHANNEL ch_prv = CHX_IN_MAX;
void mux_signal_switch(st_mux_signal *mux_signal)
{
CHANNEL ch;
ch = mux_signal->channel;
//通道和设定值均未发生改变时,直接返回
if( ( ch_prv == ch )&&( sv_prv == mux_signal->data_sv ) ) return;
ch_prv = ch;
sv_prv = mux_signal->data_sv;
fun_pwr12_ctrl(ch);
HC138_SEL_CH(ch);
@ -183,9 +191,6 @@ void mux_signal_switch(st_mux_signal *mux_signal)
ads1220_operation(CH11_IN_TC, &mux_signal->data_pv);
// fun_rn7302_operate(CH3_IN_RTD, &mux_signal->data_pv);
break;
case CH12_IN_HART:
break;
default:
break;

View File

@ -57,6 +57,8 @@ extern "C" {
#define HART_OCD() HAL_GPIO_ReadPin(HART_OCD_GPIO_Port, HART_OCD_Pin)
#define HART_RESET(STATE) HAL_GPIO_WritePin(HART_RST_GPIO_Port, HART_RST_Pin, STATE)
#define HART_RTS(SEND) HAL_GPIO_WritePin(HART_RTS_GPIO_Port, HART_RTS_Pin, SEND)
#define HC138_SEL_CH(CH) \

View File

@ -190,9 +190,10 @@ void start_task_lcd(void const * argument)
lv_timer_handler(); //LVGL刷新任务
osDelay(LVGL_BREATHE_INTERVAL);
system_sts.lvgl_stack_consume = uxTaskGetStackHighWaterMark(NULL);
system_sts.lvgl_stack_consume = 768 - system_sts.lvgl_stack_consume;
osDelay(LVGL_TASK_PERIOD);
}
/* USER CODE END start_task_lcd */
}
@ -220,8 +221,7 @@ void start_task_hart(void const * argument)
}
//驱动验证DEVICE <--- HART ---> SIG
hart_test++;
if(hart_test > 100)
if(hart_test == 1)
{
hart_test = 0;
@ -229,11 +229,11 @@ void start_task_hart(void const * argument)
hart_communicate(&scom1_hart);
}
// sig_trans = TRANS_HART;
// transparent_hart(&scom1_hart);
sig_trans = TRANS_HART;
transparent_hart(&scom1_hart);
}
osDelay(10);
osDelay(HART_TASK_PERIOD);
}
/* USER CODE END start_task_hart */
}
@ -300,7 +300,7 @@ void start_rs485(void const * argument)
transparent_485(&scom2_rs485);
osDelay(10);
osDelay(RS485_TASK_PERIOD);
}
/* USER CODE END start_rs485 */
}
@ -317,7 +317,6 @@ lv_mem_monitor_t my_mon;
void start_mux_analog(void const * argument)
{
/* USER CODE BEGIN start_mux_analog */
SIG24130_Init();
/* Infinite loop */
for (;;)
{
@ -327,10 +326,7 @@ void start_mux_analog(void const * argument)
//输出&输入通道切换
mux_signal_switch(&mux_signal);
osDelay(50);
my_monitor_cnt++;
//my monitors
if(my_monitor_cnt >= 5)
{
my_monitor_cnt = 0;
@ -342,6 +338,7 @@ void start_mux_analog(void const * argument)
system_sts.mem_consume_max = (system_sts.mem_consume_max < system_sts.mem_consume)?(system_sts.mem_consume):(system_sts.mem_consume_max);
}
osDelay(MUX_TASK_PERIOD);
}
/* USER CODE END start_mux_analog */
}
@ -363,11 +360,12 @@ void start_menu(void const * argument)
//挂起自身
if( screen_suspend_flag == 1 ) vTaskSuspend(task_menuHandle);
//screen_run();
screen_run();
osDelay(500);
system_sts.menu_stack_consume = uxTaskGetStackHighWaterMark(NULL);
system_sts.menu_stack_consume = 512 - system_sts.menu_stack_consume;
osDelay(MENU_TASK_PERIOD);
}
/* USER CODE END start_menu */
}
@ -392,7 +390,7 @@ void start_task_monitor(void const * argument)
//vTaskList(task_status);
//HAL_UART_Transmit(&huart3, (uint8_t *)task_status, 255, 0xFFFF);
osDelay(3000);
//osDelay(3000);
}
/* USER CODE END start_task_monitor */
}

View File

@ -153,40 +153,7 @@
<Name>-U53FF6B064884525650271587 -O2254 -SF5000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2 -WK0</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>224</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134241032</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>../Core/Src/stm32f4xx_it.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\signal_generator\../Core/Src/stm32f4xx_it.c\224</Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>222</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134241022</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>../Core/Src/stm32f4xx_it.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\signal_generator\../Core/Src/stm32f4xx_it.c\222</Expression>
</Bp>
</Breakpoint>
<Breakpoint/>
<WatchWindow1>
<Ww>
<count>0</count>
@ -300,7 +267,7 @@
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>0</aLwin>
<aLwin>1</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>

File diff suppressed because it is too large Load Diff