更新:热电偶类型扩充至8种,设置界面&主界面的相关内容修改同步

This commit is contained in:
吴俊潮 2025-03-19 16:39:19 +08:00
parent 7d7f0777e4
commit 45d0edfb1f
10 changed files with 20548 additions and 20053 deletions

View File

@ -2,7 +2,7 @@
* @Author: wujunchao wujunchao@wuxismart.com
* @Date: 2024-12-27 11:51:06
* @LastEditors: wujunchao wujunchao@wuxismart.com
* @LastEditTime: 2025-03-14 10:33:11
* @LastEditTime: 2025-03-19 11:29:20
* @FilePath: \signal_generator\App\APP_WU\Inc\apps_gather.h
* @Description: ,`customMade`, koroFileHeader查看配置 : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
@ -219,6 +219,9 @@ extern const lv_img_dsc_t * screen_main_ani_out_sign_imgs[3];
//选项卡 0 内部的第 12 个内容的游标位置
#define CONTENT_0_12 35
//选项卡 0 内部的第 13 个内容的游标位置
#define CONTENT_0_13 25
//}
#define ITEMS_1 1
@ -270,7 +273,12 @@ typedef enum
TC_K, //热电偶K
TC_S, //热电偶S
TC_N, //热电偶N
RTD_DC //热电阻摄氏度
TC_B, //热电偶B
TC_E, //热电偶E
TC_J, //热电偶J
TC_R, //热电偶R
TC_T, //热电偶T
RTD_DC //热电阻摄氏度
}SIG_FUNCTIONS_TYPE;
typedef struct
@ -372,10 +380,11 @@ typedef struct
uint16_t content06; //电阻下限
uint8_t content07; //频率上限
uint8_t content08; //频率下限
int16_t content09; //TC上限
int16_t content010; //TC下限
int16_t content09[8]; //TC上限, [0, 7]->[K, S, N, B, E, J, R, T]
int16_t content010[8]; //TC下限
int16_t content011; //RTD上限
int16_t content012; //RTD下限
SIG_FUNCTIONS_TYPE content013; //TC类型, [5, 12]->[K, S, N, B, E, J, R, T]
//ITEMS_1
uint8_t light_flag; //照明状态标志0熄灭1开启
@ -496,7 +505,11 @@ void contents_modify_item_1(uint8_t cursor, int8_t step);
//设置界面刷新选项卡的内容隐藏items_prv显示items_now
void contents_refresh(uint8_t items_prv, uint8_t items_now);
//数据转换mux_signal.pv -> real_value
float32 mux2real(float32 mux_pv);
//数据转换real_value -> mux_signal.sv
float32 real2mux(float32 real_value);
/**********test5**********/

View File

@ -2,7 +2,7 @@
* @Author: wujunchao wujunchao@wuxismart.com
* @Date: 2024-12-27 11:50:56
* @LastEditors: wujunchao wujunchao@wuxismart.com
* @LastEditTime: 2025-03-19 10:47:42
* @LastEditTime: 2025-03-19 16:34:55
* @FilePath: \signal_generator\App\APP_WU\Src\apps_gather.c
* @Description: ,`customMade`, koroFileHeader查看配置 : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
@ -17,7 +17,7 @@ PHYSICAL_QUANTITY VOL[2]; //电压VOL[0]-V, VOL[1]-mV
PHYSICAL_QUANTITY CUR; //电流mA
PHYSICAL_QUANTITY RES; //电阻,Ω
PHYSICAL_QUANTITY FRE; //频率KHz
PHYSICAL_QUANTITY TC[3]; //热电偶TC[0]-K, TC[1]-S, TC[2]-N
PHYSICAL_QUANTITY TC[8]; //热电偶共8种
PHYSICAL_QUANTITY RTD; //热电阻
//物理量内容初始化
@ -32,14 +32,14 @@ void physical_quantity_init(void)
VOL[1].tag = SIG_VOLTAGE;
VOL[1].typ = VOLTAGE_MV;
VOL[1].low = -250;
VOL[1].up = 250;
VOL[1].low = -2500;
VOL[1].up = 2500;
VOL[1].pv = 0;
CUR.tag = SIG_CURRENT;
CUR.typ = CURRENT_MA;
CUR.low = 0;
CUR.up = 24;
CUR.up = 25;
CUR.pv = 0;
RES.tag = SIG_RESISTANT;
@ -54,28 +54,66 @@ void physical_quantity_init(void)
FRE.up = 100;
FRE.pv = 0;
//热电偶K
TC[0].tag = SIG_TC;
TC[0].typ = TC_K;
TC[0].low = -250;
TC[0].up = 1820;
TC[0].low = -270;
TC[0].up = 1370;
TC[0].pv = 0;
//热电偶S
TC[1].tag = SIG_TC;
TC[1].typ = TC_S;
TC[1].low = -250;
TC[1].up = 1820;
TC[1].low = -50;
TC[1].up = 1768;
TC[1].pv = 0;
//热电偶N
TC[2].tag = SIG_TC;
TC[2].typ = TC_N;
TC[2].low = -250;
TC[2].up = 1820;
TC[2].low = -270;
TC[2].up = 1300;
TC[2].pv = 0;
//热电偶B
TC[3].tag = SIG_TC;
TC[3].typ = TC_B;
TC[3].low = 0;
TC[3].up = 1820;
TC[3].pv = 0;
//热电偶E
TC[4].tag = SIG_TC;
TC[4].typ = TC_E;
TC[4].low = -270;
TC[4].up = 1000;
TC[4].pv = 0;
//热电偶J
TC[5].tag = SIG_TC;
TC[5].typ = TC_J;
TC[5].low = -210;
TC[5].up = 1200;
TC[5].pv = 0;
//热电偶R
TC[6].tag = SIG_TC;
TC[6].typ = TC_R;
TC[6].low = -50;
TC[6].up = 1768;
TC[6].pv = 0;
//热电偶T
TC[7].tag = SIG_TC;
TC[7].typ = TC_T;
TC[7].low = -270;
TC[7].up = 400;
TC[7].pv = 0;
RTD.tag = SIG_RTD;
RTD.typ = RTD_DC;
RTD.low = -200;
RTD.up = 850;
RTD.up = 660;
RTD.pv = 0;
}
@ -168,15 +206,30 @@ void menu_data_init(void)
tabdata.content02[0] = VOL[0].low; //电压V下限
tabdata.content02[1] = VOL[1].low; //电压mV下限
tabdata.content03 = CUR.up; //电流上限
tabdata.content04 = CUR.low; //电流下限
tabdata.content04 = CUR.low; //电流下限
tabdata.content05 = RES.up; //电阻上限
tabdata.content06 = RES.low; //电阻下限
tabdata.content07 = FRE.up; //频率上限
tabdata.content08 = FRE.low; //频率下限
tabdata.content09 = TC[0].up; //TC上限
tabdata.content010 = TC[0].low; //TC下限
tabdata.content09[0] = TC[0].up; //TCK上限
tabdata.content010[0] = TC[0].low; //TCK下限
tabdata.content09[1] = TC[1].up; //TCS上限
tabdata.content010[1] = TC[1].low; //TCS下限
tabdata.content09[2] = TC[2].up; //TCN上限
tabdata.content010[2] = TC[2].low; //TCN下限
tabdata.content09[3] = TC[3].up; //TCB上限
tabdata.content010[3] = TC[3].low; //TCB下限
tabdata.content09[4] = TC[4].up; //TCE上限
tabdata.content010[4] = TC[4].low; //TCE下限
tabdata.content09[5] = TC[5].up; //TCJ上限
tabdata.content010[5] = TC[5].low; //TCJ下限
tabdata.content09[6] = TC[6].up; //TCR上限
tabdata.content010[6] = TC[6].low; //TCR下限
tabdata.content09[7] = TC[7].up; //TCT上限
tabdata.content010[7] = TC[7].low; //TCT下限
tabdata.content011 = RTD.up; //RTD上限
tabdata.content012 = RTD.low; //RTD下限
tabdata.content013 = TC_K; //默认为K类型的热电偶
//}
//ITEMS_1 选项卡1
@ -591,7 +644,7 @@ void key_functions_main(void)
case SIG_TC: //热电偶
{
cursor_temp = (uint8_t)m5data.output_mode_type;
cursor_temp = (cursor_temp >= 7)?(5):(cursor_temp + 1);
cursor_temp = (cursor_temp >= 12)?(5):(cursor_temp + 1);
m5data.output_mode_type = (SIG_FUNCTIONS_TYPE)cursor_temp;
set_working_mode(m5data.output_mode, m5data.output_mode_type);
@ -801,11 +854,6 @@ void scr_init_run(void)
}
}
// uint8_t eep_tx = 0x72;
// uint8_t eep_rx = 0;
// uint8_t eep_addr[3];
// uint8_t eep_test_flag = 0;
// uint8_t eep_status = 0;
void scr_main_run(void)
{
//实时更新设定值
@ -825,28 +873,6 @@ void scr_main_run(void)
//数值闪烁
num_twinkle(); //1000ms
// EEPROM_CS_L;
// delay_cnt(10);
// eeprom_spi_writebyte(READ_STATUS);
// eep_status = eeprom_spi_readbyte();
// delay_cnt(10);
// EEPROM_CS_H;
// delay_cnt(100);
// if(eep_test_flag == 0)
// {
// eep_test_flag = 1;
// eep_addr[0] = 0x00;
// eep_addr[1] = 0x00;
// eep_addr[2] = 0x00;
// eeprom_writedata(eep_addr, eep_tx);
// eep_rx = eeprom_readdata(eep_addr);
// }
}
void runtime_show(void)
@ -1756,15 +1782,13 @@ void sig_channel_select(uint8_t io, SIG_FUNCTIONS_TYPE type)
}
//更新设定值根据ON\OFF状态
float32 sv_watch = 0;
void sig_sv_update(void)
{
switch (m5data.io_on2off)
{
case IO_ON:
{
sv_watch = get_output_value();
mux_signal.data_sv = get_output_value();
mux_signal.data_sv = real2mux( get_output_value() );
}
break;
@ -1927,7 +1951,6 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
//热电偶
case SIG_TC:
{
//-250~1820℃
lv_label_set_text(guider_ui.screen_main_label_Mode, "Tc");
switch (type)
@ -1936,21 +1959,10 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
{
lv_label_set_text(guider_ui.screen_main_label_unit, "K ℃");
pltdata.yreal_pri_up = tabdata.content09;
pltdata.yreal_scd_up = tabdata.content09;
pltdata.yreal_pri_low = tabdata.content010;
pltdata.yreal_scd_low = tabdata.content010;
}
break;
case TC_N:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "N ℃");
pltdata.yreal_pri_up = tabdata.content09;
pltdata.yreal_scd_up = tabdata.content09;
pltdata.yreal_pri_low = tabdata.content010;
pltdata.yreal_scd_low = tabdata.content010;
pltdata.yreal_pri_up = tabdata.content09[0];
pltdata.yreal_scd_up = tabdata.content09[0];
pltdata.yreal_pri_low = tabdata.content010[0];
pltdata.yreal_scd_low = tabdata.content010[0];
}
break;
@ -1958,10 +1970,76 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
{
lv_label_set_text(guider_ui.screen_main_label_unit, "S ℃");
pltdata.yreal_pri_up = tabdata.content09;
pltdata.yreal_scd_up = tabdata.content09;
pltdata.yreal_pri_low = tabdata.content010;
pltdata.yreal_scd_low = tabdata.content010;
pltdata.yreal_pri_up = tabdata.content09[1];
pltdata.yreal_scd_up = tabdata.content09[1];
pltdata.yreal_pri_low = tabdata.content010[1];
pltdata.yreal_scd_low = tabdata.content010[1];
}
break;
case TC_N:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "N ℃");
pltdata.yreal_pri_up = tabdata.content09[2];
pltdata.yreal_scd_up = tabdata.content09[2];
pltdata.yreal_pri_low = tabdata.content010[2];
pltdata.yreal_scd_low = tabdata.content010[2];
}
break;
case TC_B:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "B ℃");
pltdata.yreal_pri_up = tabdata.content09[3];
pltdata.yreal_scd_up = tabdata.content09[3];
pltdata.yreal_pri_low = tabdata.content010[3];
pltdata.yreal_scd_low = tabdata.content010[3];
}
break;
case TC_E:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "E ℃");
pltdata.yreal_pri_up = tabdata.content09[4];
pltdata.yreal_scd_up = tabdata.content09[4];
pltdata.yreal_pri_low = tabdata.content010[4];
pltdata.yreal_scd_low = tabdata.content010[4];
}
break;
case TC_J:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "J ℃");
pltdata.yreal_pri_up = tabdata.content09[5];
pltdata.yreal_scd_up = tabdata.content09[5];
pltdata.yreal_pri_low = tabdata.content010[5];
pltdata.yreal_scd_low = tabdata.content010[5];
}
break;
case TC_R:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "R ℃");
pltdata.yreal_pri_up = tabdata.content09[6];
pltdata.yreal_scd_up = tabdata.content09[6];
pltdata.yreal_pri_low = tabdata.content010[6];
pltdata.yreal_scd_low = tabdata.content010[6];
}
break;
case TC_T:
{
lv_label_set_text(guider_ui.screen_main_label_unit, "T ℃");
pltdata.yreal_pri_up = tabdata.content09[7];
pltdata.yreal_scd_up = tabdata.content09[7];
pltdata.yreal_pri_low = tabdata.content010[7];
pltdata.yreal_scd_low = tabdata.content010[7];
}
break;
@ -1974,7 +2052,6 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
//热电阻
case SIG_RTD:
{
//-200~850℃
lv_label_set_text(guider_ui.screen_main_label_Mode, "RTD");
switch (type)
@ -2019,7 +2096,7 @@ void input_value_show(void)
input_500ms_flag = 0;
//获取输入值
pltdata.yreal_scd_value = mux_signal.data_pv;
pltdata.yreal_scd_value = mux2real(mux_signal.data_pv);
if( MY_ABS(pltdata.yreal_scd_value - pltdata.yreal_scd_value_prv) < (float32)0.01)
{
@ -2807,11 +2884,14 @@ void contents_modify_item_0(uint8_t cursor, int8_t step)
case CONTENT_0_9:
{
tabdata.content09 += step;
uint8_t c09_temp = 0;
c09_temp = (uint8_t)tabdata.content013;
c09_temp -= 5; //[5, 12]->[0, 7]
if( tabdata.content09 > TC[0].up ) tabdata.content09 = TC[0].up;
if( tabdata.content09 < TC[0].low ) tabdata.content09 = TC[0].low;
if( tabdata.content09 < tabdata.content08 ) tabdata.content09 = tabdata.content08;
tabdata.content09[c09_temp] += step;
if( tabdata.content09[c09_temp] > TC[c09_temp].up ) tabdata.content09[c09_temp] = TC[c09_temp].up;
if( tabdata.content09[c09_temp] < TC[c09_temp].low ) tabdata.content09[c09_temp] = TC[c09_temp].low;
if( tabdata.content010[c09_temp] > tabdata.content09[c09_temp] ) tabdata.content09[c09_temp] = tabdata.content010[c09_temp];
//更新显示内容
setting_update(ITEMS_0, CONTENT_0_9);
@ -2820,11 +2900,13 @@ void contents_modify_item_0(uint8_t cursor, int8_t step)
case CONTENT_0_10:
{
tabdata.content010 += step;
uint8_t c010_temp = 0;
c010_temp = (uint8_t)tabdata.content013;
c010_temp -= 5; //[5, 12]->[0, 7]
if( tabdata.content010 > TC[0].up ) tabdata.content010 = TC[0].up;
if( tabdata.content010 < TC[0].low ) tabdata.content010 = TC[0].low;
if( tabdata.content010 > tabdata.content07 ) tabdata.content010 = tabdata.content07;
if( tabdata.content010[c010_temp] > TC[c010_temp].up ) tabdata.content010[c010_temp] = TC[c010_temp].up;
if( tabdata.content010[c010_temp] < TC[c010_temp].low ) tabdata.content010[c010_temp] = TC[c010_temp].low;
if( tabdata.content010[c010_temp] > tabdata.content09[c010_temp] ) tabdata.content010[c010_temp] = tabdata.content09[c010_temp];
//更新显示内容
setting_update(ITEMS_0, CONTENT_0_10);
@ -2856,6 +2938,21 @@ void contents_modify_item_0(uint8_t cursor, int8_t step)
setting_update(ITEMS_0, CONTENT_0_12);
}
break;
case CONTENT_0_13:
{
uint8_t c13_temp = 0;
c13_temp = (uint8_t)tabdata.content013;
c13_temp =(c13_temp >= 12)?(5):(c13_temp + 1); //不使用step
tabdata.content013 = (SIG_FUNCTIONS_TYPE)c13_temp;
//更新显示内容
setting_update(ITEMS_0, CONTENT_0_13);
//类型改变时,相关数值也要跟随
setting_update(ITEMS_0, CONTENT_0_9);
setting_update(ITEMS_0, CONTENT_0_10);
}
break;
default:
break;
@ -3004,14 +3101,22 @@ void setting_update(uint8_t ite, uint8_t con)
case CONTENT_0_9:
{
sprintf(str_temp,"%d",tabdata.content09);
uint8_t c09_temp = 0;
c09_temp = (uint8_t)tabdata.content013;
c09_temp -= 5; //[5, 12]->[0, 7]
sprintf(str_temp,"%d",tabdata.content09[c09_temp]);
lv_label_set_text(guider_ui.screen_setting_label_43, str_temp);
}
break;
case CONTENT_0_10:
{
sprintf(str_temp,"%d",tabdata.content010);
uint8_t c10_temp = 0;
c10_temp = (uint8_t)tabdata.content013;
c10_temp -= 5; //[5, 12]->[0, 7]
sprintf(str_temp,"%d",tabdata.content010[c10_temp]);
lv_label_set_text(guider_ui.screen_setting_label_45, str_temp);
}
break;
@ -3029,6 +3134,65 @@ void setting_update(uint8_t ite, uint8_t con)
lv_label_set_text(guider_ui.screen_setting_label_55, str_temp);
}
break;
case CONTENT_0_13:
{
switch (tabdata.content013)
{
case TC_K:
{
lv_label_set_text(guider_ui.screen_setting_label_41, "K ℃");
}
break;
case TC_S:
{
lv_label_set_text(guider_ui.screen_setting_label_41, "S ℃");
}
break;
case TC_N:
{
lv_label_set_text(guider_ui.screen_setting_label_41, "N ℃");
}
break;
case TC_B:
{
lv_label_set_text(guider_ui.screen_setting_label_41, "B ℃");
}
break;
case TC_E:
{
lv_label_set_text(guider_ui.screen_setting_label_41, "E ℃");
}
break;
case TC_J:
{
lv_label_set_text(guider_ui.screen_setting_label_41, "J ℃");
}
break;
case TC_R:
{
lv_label_set_text(guider_ui.screen_setting_label_41, "R ℃");
}
break;
case TC_T:
{
lv_label_set_text(guider_ui.screen_setting_label_41, "T ℃");
}
break;
default:
break;
}
}
break;
default:
break;
@ -3279,14 +3443,14 @@ void contents_refresh(uint8_t items_prv, uint8_t items_now)
lv_label_set_text(guider_ui.screen_setting_label_42, "上限");
lv_obj_clear_flag(guider_ui.screen_setting_label_43, LV_OBJ_FLAG_HIDDEN);
sprintf(str_temp,"%d",tabdata.content09);
sprintf(str_temp,"%d",tabdata.content09[ (uint8_t)tabdata.content013 ]);
lv_label_set_text(guider_ui.screen_setting_label_43, str_temp);
lv_obj_clear_flag(guider_ui.screen_setting_label_44, LV_OBJ_FLAG_HIDDEN);
lv_label_set_text(guider_ui.screen_setting_label_44, "下限");
lv_obj_clear_flag(guider_ui.screen_setting_label_45, LV_OBJ_FLAG_HIDDEN);
sprintf(str_temp,"%d",tabdata.content010);
sprintf(str_temp,"%d",tabdata.content010[ (uint8_t)tabdata.content013 ]);
lv_label_set_text(guider_ui.screen_setting_label_45, str_temp);
lv_obj_clear_flag(guider_ui.screen_setting_label_50, LV_OBJ_FLAG_HIDDEN);
@ -3598,6 +3762,329 @@ void scr_main_recover(void)
}
//数据转换mux_signal.pv -> real_value
float32 mux2real(float32 mux_pv)
{
float32 result = 0;
SIG_FUNCTIONS mode;
SIG_FUNCTIONS_TYPE type;
switch (m5data.io_mode)
{
case IO_INPUT:
{
mode = m5data.input_mode;
type = m5data.input_mode_type;
}
break;
case IO_OUTPUT:
{
mode = m5data.output_mode;
type = m5data.output_mode_type;
}
break;
default:
break;
}
switch (mode)
{
//电压
case SIG_VOLTAGE:
{
switch (type)
{
//[-2.5, 2.5V] -> [-2500mv, 2500mv]
case VOLTAGE_MV:
{
result = mux_pv * 1000;
}
break;
//1:1
case VOLTAGE_V:
{
result = mux_pv;
}
break;
default:
break;
}
}
break;
//电流
case SIG_CURRENT:
{
switch (type)
{
//1:1
case CURRENT_MA:
{
result = mux_pv;
}
break;
default:
break;
}
}
break;
//电阻
case SIG_RESISTANT:
{
switch (type)
{
case RESISTANT_OHM:
{
result = mux_pv;
}
break;
default:
break;
}
}
break;
//频率
case SIG_FREQUENCE:
{
switch (type)
{
case FREQUENCE_KHZ:
{
//Hz -> KHz
result = mux_pv / 1000;
}
break;
default:
break;
}
}
break;
//热电偶
case SIG_TC:
{
switch (type)
{
case TC_K:
{
result = mux_pv;
}
break;
case TC_N:
{
result = mux_pv;
}
break;
case TC_S:
{
result = mux_pv;
}
break;
default:
break;
}
}
break;
//热电阻
case SIG_RTD:
{
switch (type)
{
case RTD_DC:
{
result = mux_pv;
}
break;
default:
break;
}
}
break;
default:
break;
}
return result;
}
//数据转换real_value -> mux_signal.sv
float32 real2mux(float32 real_value)
{
float32 result = 0;
SIG_FUNCTIONS mode;
SIG_FUNCTIONS_TYPE type;
switch (m5data.io_mode)
{
case IO_INPUT:
{
mode = m5data.input_mode;
type = m5data.input_mode_type;
}
break;
case IO_OUTPUT:
{
mode = m5data.output_mode;
type = m5data.output_mode_type;
}
break;
default:
break;
}
switch (mode)
{
//电压
case SIG_VOLTAGE:
{
switch (type)
{
//[-2500mV, 2500mV] -> [-2.5V, 2.5V]
case VOLTAGE_MV:
{
result = real_value / (float32)1000;
}
break;
//1:1
case VOLTAGE_V:
{
result = real_value;
}
break;
default:
break;
}
}
break;
//电流
case SIG_CURRENT:
{
switch (type)
{
//1:1
case CURRENT_MA:
{
result = real_value;
}
break;
default:
break;
}
}
break;
//电阻
case SIG_RESISTANT:
{
switch (type)
{
case RESISTANT_OHM:
{
result = real_value;
}
break;
default:
break;
}
}
break;
//频率
case SIG_FREQUENCE:
{
switch (type)
{
case FREQUENCE_KHZ:
{
//KHz -> Hz
result = real_value * 1000;
}
break;
default:
break;
}
}
break;
//热电偶
case SIG_TC:
{
switch (type)
{
case TC_K:
{
result = real_value;
}
break;
case TC_N:
{
result = real_value;
}
break;
case TC_S:
{
result = real_value;
}
break;
default:
break;
}
}
break;
//热电阻
case SIG_RTD:
{
switch (type)
{
case RTD_DC:
{
result = real_value;
}
break;
default:
break;
}
}
break;
default:
break;
}
return result;
}
void num_twinkle(void) //数值闪烁
{
if(m5data.twk_flag == 0)
@ -3881,6 +4368,7 @@ void scr_setting_recover(void)
setting_update(ITEMS_0, CONTENT_0_10);
setting_update(ITEMS_0, CONTENT_0_11);
setting_update(ITEMS_0, CONTENT_0_12);
setting_update(ITEMS_0, CONTENT_0_13);
}

View File

@ -2,12 +2,31 @@
* @Author: wujunchao wujunchao@wuxismart.com
* @Date: 2025-03-17 14:38:34
* @LastEditors: wujunchao wujunchao@wuxismart.com
* @LastEditTime: 2025-03-19 10:44:31
* @LastEditTime: 2025-03-19 11:08:41
* @FilePath: \signal_generator\App\APP_WU\Src\eeprom_spi.c
* @Description: ,`customMade`, koroFileHeader查看配置 : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
#include "eeprom_spi.h"
//使用方法:
// uint8_t eep_tx = 0x72;
// uint8_t eep_rx = 0;
// uint8_t eep_addr[3];
// uint8_t eep_test_flag = 0;
// uint8_t eep_status = 0;
// if(eep_test_flag == 0)
// {
// eep_test_flag = 1;
// eep_addr[0] = 0x00;
// eep_addr[1] = 0x00;
// eep_addr[2] = 0x00;
// eeprom_writedata(eep_addr, eep_tx);
// eep_rx = eeprom_readdata(eep_addr);
// }
// 结果eep_rx = 0x72
void eeprom_spi_init(void)
{
@ -18,9 +37,6 @@ void eeprom_spi_init(void)
void eeprom_spi_writebyte(uint8_t wrt_data)
{
// EEPROM_CS_L;
// wu_delay_us(100);
uint8_t i = 0;
uint8_t temp = 0;
for(i = 0; i < 8; i++)
@ -48,15 +64,10 @@ void eeprom_spi_writebyte(uint8_t wrt_data)
}
EEPROM_SCLK_L;
//EEPROM_CS_H;
}
uint8_t eeprom_spi_readbyte(void)
{
// EEPROM_CS_L;
// wu_delay_us(100);
uint8_t i = 0;
uint8_t read_data = 0xFF;
for(i = 0; i < 8; i++)
@ -73,16 +84,11 @@ uint8_t eeprom_spi_readbyte(void)
}
EEPROM_SCLK_L;
// EEPROM_CS_H;
return read_data;
}
uint8_t SPI_WriteReadByte(uint8_t data)
{
// EEPROM_CS_L;
// delay_cnt(0xff);
uint16_t bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++)
{
@ -106,8 +112,6 @@ uint8_t SPI_WriteReadByte(uint8_t data)
wu_delay_us(5); // 空等待
}
//EEPROM_CS_H;
return(data);
}

View File

@ -63,10 +63,10 @@ void dac8552_operation(float32 *data1, float32 *data2)
if (data1 != NULL)
{
// 4~20mA输出
if (*data1 > 20.0f)
*data1 = 20.0f;
else if (*data1 < 4.0f)
*data1 = 4.0f;
if (*data1 > 25.0f)
*data1 = 25.0f;
else if (*data1 < 0.0f)
*data1 = 0.0f;
temp = (*data1) * 100.0f;
data = (uint16_t)(65535.0f * temp / 2500.0f);
set_dac8552_channel_value(&dac8552, LD_CH_B, SEL_BUF_B, PD_NONE, data);

View File

@ -1,3 +1,11 @@
/*
* @Author: wujunchao wujunchao@wuxismart.com
* @Date: 2024-12-24 08:18:26
* @LastEditors: wujunchao wujunchao@wuxismart.com
* @LastEditTime: 2025-03-19 13:07:31
* @FilePath: \signal_generator\App\MUX_SIGNAL\mux_signal.c
* @Description: ,`customMade`, koroFileHeader查看配置 : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
/*
* @Author: DaMingSY zxm5337@163.com
* @Date: 2024-09-02 15:58:58

View File

@ -1,3 +1,11 @@
/*
* @Author: wujunchao wujunchao@wuxismart.com
* @Date: 2024-12-27 10:42:51
* @LastEditors: wujunchao wujunchao@wuxismart.com
* @LastEditTime: 2025-03-19 14:57:50
* @FilePath: \signal_generator\Core\Inc\tim.h
* @Description: ,`customMade`, koroFileHeader查看配置 : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
/* USER CODE BEGIN Header */
/**
******************************************************************************
@ -32,14 +40,14 @@ extern "C" {
#define freq_operation(FREQ, PULSE) \
do \
{ \
if (FREQ <= 0 || FREQ >= 1000000 || PULSE <= 0 || PULSE >= 100) \
if (FREQ <= 0 || FREQ >= 41472000 || PULSE <= 0 || PULSE >= 100) \
{ \
HAL_TIMEx_PWMN_Stop(&htim1, TIM_CHANNEL_2); \
return; \
} \
uint16_t duty = 1000000 / FREQ - 1; \
uint16_t duty = 41472000 / FREQ; \
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, duty *PULSE / 100 - 1); \
__HAL_TIM_SET_AUTORELOAD(&htim1, duty); \
__HAL_TIM_SET_AUTORELOAD(&htim1, duty -1); \
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2); \
} while (0)

View File

@ -71,7 +71,7 @@ void MX_TIM1_Init(void)
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 500;
sConfigOC.Pulse = 20736-1;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;

View File

@ -270,21 +270,6 @@
<WinNumber>1</WinNumber>
<ItemText>RTD,0x0A</ItemText>
</Ww>
<Ww>
<count>23</count>
<WinNumber>1</WinNumber>
<ItemText>sv_watch</ItemText>
</Ww>
<Ww>
<count>24</count>
<WinNumber>1</WinNumber>
<ItemText>eep_status</ItemText>
</Ww>
<Ww>
<count>25</count>
<WinNumber>1</WinNumber>
<ItemText>eep_rx</ItemText>
</Ww>
</WatchWindow1>
<MemoryWindow1>
<Mm>

File diff suppressed because it is too large Load Diff

View File

@ -574,7 +574,7 @@ TIM1.OC2Preload_PWM=ENABLE
TIM1.OCFastMode_PWM-PWM\ Generation2\ CH2N=TIM_OCFAST_ENABLE
TIM1.Period=41472-1
TIM1.Prescaler=2-1
TIM1.Pulse-PWM\ Generation2\ CH2N=500
TIM1.Pulse-PWM\ Generation2\ CH2N=20736-1
TIM3.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
TIM3.Channel-Input_Capture4_from_TI4=TIM_CHANNEL_4
TIM3.IPParameters=Channel-Input_Capture4_from_TI4,Prescaler,Period,AutoReloadPreload