parent
dd24e054a0
commit
e5a2c352ec
|
@ -20,7 +20,7 @@ void duty_tim3(void);
|
|||
void duty_tim6(void);
|
||||
|
||||
void delay_cnt(uint16_t cnt);
|
||||
void wu_delay_us(__IO uint32_t delay);
|
||||
void systick_delay_us(__IO uint32_t delay);
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -422,12 +422,12 @@ void set_nixie_cube_sign(uint8_t on2off, uint8_t sg)
|
|||
{
|
||||
case IO_INPUT:
|
||||
{
|
||||
menu_data.sign_flag_in = sg;
|
||||
switch (sg)
|
||||
{
|
||||
case SIGN_NULL:
|
||||
{
|
||||
//熄灭,显示NULL
|
||||
menu_data.sign_flag_in = 0;
|
||||
lv_img_set_src(guider_ui.screen_main_ani_in_sign, screen_main_ani_in_sign_imgs[0]);
|
||||
}
|
||||
break;
|
||||
|
@ -435,7 +435,6 @@ void set_nixie_cube_sign(uint8_t on2off, uint8_t sg)
|
|||
case SIGN_MINUS:
|
||||
{
|
||||
//显示减号(负)
|
||||
menu_data.sign_flag_in = 1;
|
||||
lv_img_set_src(guider_ui.screen_main_ani_in_sign, screen_main_ani_in_sign_imgs[1]);
|
||||
}
|
||||
break;
|
||||
|
@ -462,20 +461,19 @@ void set_nixie_cube_sign(uint8_t on2off, uint8_t sg)
|
|||
|
||||
case IO_OUTPUT:
|
||||
{
|
||||
menu_data.sign_flag_out = sg;
|
||||
switch (sg)
|
||||
{
|
||||
case 0:
|
||||
case SIGN_NULL:
|
||||
{
|
||||
//熄灭负号
|
||||
menu_data.sign_flag_out = 0;
|
||||
lv_img_set_src(guider_ui.screen_main_ani_out_sign, screen_main_ani_out_sign_imgs[0]);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case SIGN_MINUS:
|
||||
{
|
||||
//显示负号
|
||||
menu_data.sign_flag_out = 1;
|
||||
lv_img_set_src(guider_ui.screen_main_ani_out_sign, screen_main_ani_out_sign_imgs[1]);
|
||||
}
|
||||
break;
|
||||
|
@ -504,18 +502,27 @@ void set_nixie_cube(uint8_t io_slc, uint8_t pos, int32_t num)
|
|||
{
|
||||
case 99:
|
||||
{
|
||||
if( (num < 0)&&(menu_data.sign_flag_in == 0) )
|
||||
if(input_overflow_flag > SIGN_MINUS)
|
||||
{
|
||||
//出现溢出时,显示溢出标志
|
||||
set_nixie_cube_sign(IO_INPUT, input_overflow_flag);
|
||||
}
|
||||
else
|
||||
{
|
||||
//未发生溢出时,如果有溢出标志则清除
|
||||
if(menu_data.sign_flag_in > SIGN_MINUS) set_nixie_cube_sign(IO_INPUT, SIGN_NULL);
|
||||
|
||||
if( (num < 0)&&(menu_data.sign_flag_in != SIGN_MINUS) )
|
||||
{
|
||||
//出现负数并且没有显示负号时
|
||||
set_nixie_cube_sign(IO_INPUT, 1);
|
||||
set_nixie_cube_sign(IO_INPUT, SIGN_MINUS);
|
||||
}
|
||||
else if(( (num >= 0)&&(menu_data.sign_flag_in == 1) ))
|
||||
else if(( (num >= 0)&&(menu_data.sign_flag_in != SIGN_NULL) ))
|
||||
{
|
||||
//数值为非负数,但仍然显示负号时
|
||||
set_nixie_cube_sign(IO_INPUT, 0);
|
||||
set_nixie_cube_sign(IO_INPUT, SIGN_NULL);
|
||||
}
|
||||
}
|
||||
|
||||
if(input_overflow_flag > 1) set_nixie_cube_sign(IO_INPUT, input_overflow_flag);
|
||||
|
||||
//负数转正数
|
||||
num = ( num >= 0 )?(num):(0 - num);
|
||||
|
|
|
@ -176,7 +176,7 @@ void delay_cnt(uint16_t cnt)
|
|||
}
|
||||
|
||||
#define CPU_FREQUENCY_MHZ 165.888 // STM32时钟主频
|
||||
void wu_delay_us(__IO uint32_t delay)
|
||||
void systick_delay_us(__IO uint32_t delay)
|
||||
{
|
||||
int last, curr, val;
|
||||
int temp;
|
||||
|
|
|
@ -48,11 +48,11 @@ void eeprom_spi_writebyte(uint8_t wrt_data)
|
|||
EEPROM_MOSI_L;
|
||||
}
|
||||
|
||||
wu_delay_us(10); // 空等待
|
||||
systick_delay_us(10); // 空等待
|
||||
|
||||
EEPROM_SCLK_H; //CPHA=0
|
||||
|
||||
wu_delay_us(10); // 空等待
|
||||
systick_delay_us(10); // 空等待
|
||||
}
|
||||
|
||||
EEPROM_SCLK_L;
|
||||
|
@ -68,11 +68,11 @@ uint8_t eeprom_spi_readbyte(void)
|
|||
|
||||
EEPROM_SCLK_L;
|
||||
|
||||
wu_delay_us(10); // 空等待
|
||||
systick_delay_us(10); // 空等待
|
||||
|
||||
EEPROM_SCLK_H;
|
||||
|
||||
wu_delay_us(10); // 空等待
|
||||
systick_delay_us(10); // 空等待
|
||||
|
||||
if(EEPROM_MISO)
|
||||
{
|
||||
|
@ -100,13 +100,13 @@ uint8_t SPI_WriteReadByte(uint8_t data)
|
|||
|
||||
data = (data << 1);
|
||||
EEPROM_SCLK_H;
|
||||
wu_delay_us(5); // 空等待
|
||||
systick_delay_us(5); // 空等待
|
||||
if(EEPROM_MISO)
|
||||
{
|
||||
data |= 0x01;
|
||||
}
|
||||
EEPROM_SCLK_L;
|
||||
wu_delay_us(5); // 空等待
|
||||
systick_delay_us(5); // 空等待
|
||||
}
|
||||
|
||||
return(data);
|
||||
|
|
|
@ -55,51 +55,51 @@ void hart_communicate(st_scom *scom)
|
|||
|
||||
//DEVICE <---SIG---> PC
|
||||
//将来自设备的HART数据装载至com485_tx,将comhart_tx的HART数据发送至设备
|
||||
void transparent_hart(st_scom *scom)
|
||||
{
|
||||
if (scom != &scom1_hart) return;
|
||||
// void transparent_hart(st_scom *scom)
|
||||
// {
|
||||
// if (scom != &scom1_hart) return;
|
||||
|
||||
HART_RTS(RTS_OFF);
|
||||
// HART_RTS(RTS_OFF);
|
||||
|
||||
//来自HART设备的数据是否接收完成
|
||||
if (scom->rx_flag == TRUE)
|
||||
{
|
||||
scom->rx_flag = FALSE;
|
||||
// //来自HART设备的数据是否接收完成
|
||||
// if (scom->rx_flag == TRUE)
|
||||
// {
|
||||
// scom->rx_flag = FALSE;
|
||||
|
||||
//接收到的数据是否符合HART数据报,符合则写入485的tx,准备发送至上位机
|
||||
if ((scom->rx_buff[0] == 0xff) && (scom->rx_buff[1] == 0xff) && (scom->rx_buff[scom->rx_len - 1] == 0xAA))
|
||||
{
|
||||
//SIG -> PC
|
||||
memcpy(scom2_rs485.tx_buff, scom->rx_buff, sizeof(scom->rx_buff));
|
||||
scom2_rs485.tx_len = scom->rx_len;
|
||||
scom2_rs485.tx_flag = TRUE;
|
||||
}
|
||||
// //接收到的数据是否符合HART数据报,符合则写入485的tx,准备发送至上位机
|
||||
// if ((scom->rx_buff[0] == 0xff) && (scom->rx_buff[1] == 0xff) && (scom->rx_buff[scom->rx_len - 1] == 0xAA))
|
||||
// {
|
||||
// //SIG -> PC
|
||||
// memcpy(scom2_rs485.tx_buff, scom->rx_buff, sizeof(scom->rx_buff));
|
||||
// scom2_rs485.tx_len = scom->rx_len;
|
||||
// scom2_rs485.tx_flag = TRUE;
|
||||
// }
|
||||
|
||||
//清空缓存区,等待新的数据
|
||||
memset(scom->rx_buff, 0, sizeof(scom->rx_buff));
|
||||
scom->rx_len = 0;
|
||||
}
|
||||
// //清空缓存区,等待新的数据
|
||||
// memset(scom->rx_buff, 0, sizeof(scom->rx_buff));
|
||||
// scom->rx_len = 0;
|
||||
// }
|
||||
|
||||
//来自上位机的数据是否准备完毕
|
||||
if (scom->tx_flag == TRUE)
|
||||
{
|
||||
scom->tx_flag = FALSE;
|
||||
HART_RTS(RTS_ON);
|
||||
vTaskDelay(15);
|
||||
// //来自上位机的数据是否准备完毕
|
||||
// if (scom->tx_flag == TRUE)
|
||||
// {
|
||||
// scom->tx_flag = FALSE;
|
||||
// HART_RTS(RTS_ON);
|
||||
// vTaskDelay(15);
|
||||
|
||||
//将tx中的数据发送至HART设备
|
||||
hart_send(&huart1, scom->tx_buff);
|
||||
// //将tx中的数据发送至HART设备
|
||||
// hart_send(&huart1, scom->tx_buff);
|
||||
|
||||
HART_RTS(RTS_OFF);
|
||||
// HART_RTS(RTS_OFF);
|
||||
|
||||
//清空缓存区,等待新的数据
|
||||
memset(scom->tx_buff, 0, sizeof(scom->tx_buff));
|
||||
scom->tx_len = 0;
|
||||
// //清空缓存区,等待新的数据
|
||||
// memset(scom->tx_buff, 0, sizeof(scom->tx_buff));
|
||||
// scom->tx_len = 0;
|
||||
|
||||
xTaskResumeFromISR(task_lcdHandle);
|
||||
xTaskResumeFromISR(task_menuHandle);
|
||||
screen_suspend_flag = 0;
|
||||
}
|
||||
}
|
||||
// xTaskResumeFromISR(task_lcdHandle);
|
||||
// xTaskResumeFromISR(task_menuHandle);
|
||||
// screen_suspend_flag = 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
|
|
@ -79,7 +79,9 @@ void trans_hart2pc(void)
|
|||
scom1_hart.rx_flag = FALSE;
|
||||
|
||||
//接收到的数据是否符合HART数据报,符合则写入485的tx,准备发送至上位机
|
||||
if ((scom1_hart.rx_buff[0] == 0xff) && (scom1_hart.rx_buff[1] == 0xff) && (scom1_hart.rx_buff[scom1_hart.rx_len - 1] == 0xAA))
|
||||
// if ((scom1_hart.rx_buff[0] == 0xff) && (scom1_hart.rx_buff[1] == 0xff) && (scom1_hart.rx_buff[scom1_hart.rx_len - 1] == 0xAA))
|
||||
// {
|
||||
if ((scom1_hart.rx_buff[0] == 0xff) && (scom1_hart.rx_buff[1] == 0xff))
|
||||
{
|
||||
memcpy(scom2_rs485.tx_buff, scom1_hart.rx_buff, scom1_hart.rx_len);
|
||||
scom2_rs485.tx_len = scom1_hart.rx_len;
|
||||
|
@ -106,7 +108,9 @@ void trans_pc2hart(void)
|
|||
{
|
||||
scom2_rs485.rx_flag = FALSE;
|
||||
|
||||
if ((scom2_rs485.rx_buff[0] == 0xff) && (scom2_rs485.rx_buff[1] == 0xff) && (scom2_rs485.rx_buff[scom2_rs485.rx_len - 1] == 0xaa))
|
||||
// if ((scom2_rs485.rx_buff[0] == 0xff) && (scom2_rs485.rx_buff[1] == 0xff) && (scom2_rs485.rx_buff[scom2_rs485.rx_len - 1] == 0xaa))
|
||||
// {
|
||||
if ( (scom2_rs485.rx_buff[0] == 0xff) && (scom2_rs485.rx_buff[1] == 0xff) )
|
||||
{
|
||||
//接收到的数据是否符合HART数据报,符合则写入HART的tx,准备发送至HART设备
|
||||
memcpy(scom1_hart.tx_buff, scom2_rs485.rx_buff, scom2_rs485.rx_len);
|
||||
|
@ -120,11 +124,10 @@ void trans_pc2hart(void)
|
|||
scom1_hart.tx_flag = FALSE;
|
||||
HART_RTS(RTS_ON);
|
||||
|
||||
wu_delay_us(10000);
|
||||
systick_delay_us(10000);
|
||||
|
||||
//将tx中的数据发送至HART设备
|
||||
HAL_UART_Transmit_DMA(&huart1, scom1_hart.tx_buff, scom1_hart.tx_len);
|
||||
|
||||
}
|
||||
|
||||
//清空缓存区,等待新的数据
|
||||
|
|
|
@ -226,6 +226,16 @@ void modbus_reg_update_hold(void)
|
|||
hold_deal_range_max();
|
||||
|
||||
hold_deal_range_min();
|
||||
|
||||
hold_deal_sample_interval();
|
||||
|
||||
hold_deal_plot_counts();
|
||||
|
||||
hold_deal_color_input();
|
||||
|
||||
hold_deal_color_output();
|
||||
|
||||
hold_deal_language_select();
|
||||
}
|
||||
|
||||
void hold_deal_set_work_mode(void)
|
||||
|
@ -490,6 +500,11 @@ void hold_deal_range_max(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//拒绝修改
|
||||
HoldReg[HOLD_ADDR_PHY_UP] = range_max_prv;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -511,6 +526,11 @@ void hold_deal_range_max(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//拒绝修改
|
||||
HoldReg[HOLD_ADDR_PHY_UP] = range_max_prv;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -541,6 +561,11 @@ void hold_deal_range_min(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//拒绝修改
|
||||
HoldReg[HOLD_ADDR_PHY_LOW] = range_min_prv;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -549,9 +574,9 @@ void hold_deal_range_min(void)
|
|||
int16_t hold_temp16 = 0;
|
||||
|
||||
memcpy(&hold_temp16, HoldReg + HOLD_ADDR_PHY_LOW, 2);
|
||||
if( ((uint8_t)rg_min <= hold_temp16)&&(hold_temp16 <= *p16up) )
|
||||
if( (rg_min <= hold_temp16)&&(hold_temp16 <= *p16up) )
|
||||
{
|
||||
*p16up = hold_temp16;
|
||||
*p16low = hold_temp16;
|
||||
|
||||
if(menu_data.scr_now == SCREEN_MAIN)
|
||||
{
|
||||
|
@ -562,6 +587,11 @@ void hold_deal_range_min(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//拒绝修改
|
||||
HoldReg[HOLD_ADDR_PHY_LOW] = range_min_prv;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -574,6 +604,11 @@ void hold_deal_sample_interval(void)
|
|||
{
|
||||
tabdata.item1_page0_sample_interval = HoldReg[HOLD_ADDR_SAMPLE_INTERVAL];
|
||||
}
|
||||
else
|
||||
{
|
||||
//拒绝修改
|
||||
HoldReg[HOLD_ADDR_SAMPLE_INTERVAL] = tabdata.item1_page0_sample_interval;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -584,13 +619,21 @@ void hold_deal_plot_counts(void)
|
|||
{
|
||||
if( (PLOT_NUM_MIN <= HoldReg[HOLD_ADDR_PLOT_COUNTS])&&(HoldReg[HOLD_ADDR_PLOT_COUNTS] <= PLOT_NUM_MAX) )
|
||||
{
|
||||
tabdata.item1_page0_plot_num = HoldReg[HOLD_ADDR_PLOT_COUNTS];
|
||||
tabdata.item1_page0_plot_num = 0x00FF & HoldReg[HOLD_ADDR_PLOT_COUNTS];
|
||||
|
||||
if(menu_data.scr_now == SCREEN_MAIN)
|
||||
{
|
||||
//更新显示模式,强制归零后自动恢复显示值(曲线只有在显示值变化时才刷新,于是在此处手动发生变化)
|
||||
scr_main_chart_update();
|
||||
pltdata.y_pri_value = 0;
|
||||
pltdata.y_scd_value = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//拒绝修改
|
||||
HoldReg[HOLD_ADDR_PLOT_COUNTS] = 0x00FF & tabdata.item1_page0_plot_num;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -599,15 +642,20 @@ void hold_deal_color_input(void)
|
|||
{
|
||||
if( HoldReg[HOLD_ADDR_INPUT_COLOR] != (0x00FF & (uint8_t)tabdata.item1_page0_color_input) )
|
||||
{
|
||||
if( HoldReg[HOLD_ADDR_PLOT_COUNTS] <= 5 )
|
||||
if( HoldReg[HOLD_ADDR_INPUT_COLOR] <= 5 )
|
||||
{
|
||||
tabdata.item1_page0_color_input = (COLORS)HoldReg[HOLD_ADDR_PLOT_COUNTS];
|
||||
tabdata.item1_page0_color_input = (COLORS)HoldReg[HOLD_ADDR_INPUT_COLOR];
|
||||
|
||||
if(menu_data.scr_now == SCREEN_MAIN)
|
||||
{
|
||||
scr_main_chart_update();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//拒绝修改
|
||||
HoldReg[HOLD_ADDR_INPUT_COLOR] = 0x00FF & (uint8_t)tabdata.item1_page0_color_input;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -625,6 +673,11 @@ void hold_deal_color_output(void)
|
|||
scr_main_chart_update();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//拒绝修改
|
||||
HoldReg[HOLD_ADDR_OUTPUT_COLOR] = 0x00FF & (uint8_t)tabdata.item1_page0_color_output;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -639,6 +692,11 @@ void hold_deal_language_select(void)
|
|||
|
||||
setting_laguage_switch(tabdata.item3_page0_language);
|
||||
}
|
||||
else
|
||||
{
|
||||
//拒绝修改
|
||||
HoldReg[HOLD_ADDR_LANGUAGE] = 0x00FF & (uint8_t)tabdata.item3_page0_language;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue