更新:

1、频率输出的驱动程序调整;
2、新增hart测试代码;
This commit is contained in:
吴俊潮 2025-05-08 16:44:01 +08:00
parent d99585f28a
commit 365eef3122
7 changed files with 9132 additions and 9102 deletions

View File

@ -1152,6 +1152,7 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
//功能关闭 //功能关闭
m5data.io_on2off = IO_OFF; m5data.io_on2off = IO_OFF;
io_on2off_status(); //更新ON/OFF/IN/OUT状态指示 io_on2off_status(); //更新ON/OFF/IN/OUT状态指示
//数码管输入显示置零 //数码管输入显示置零
set_nixie_cube(IO_INPUT, 99, 0); set_nixie_cube(IO_INPUT, 99, 0);
@ -1159,6 +1160,9 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
//数码管输出值置零 //数码管输出值置零
set_output(0); set_output(0);
//当前输出清零
sig_sv_update();
//游标恢复至小数点前1位个位 //游标恢复至小数点前1位个位
m5data.io_cursor = 3; m5data.io_cursor = 3;
m5data.io_cursor_prv = 3; m5data.io_cursor_prv = 3;

View File

@ -119,6 +119,7 @@ static void fun_pwr12_ctrl(uint8_t ch)
} }
uint8_t pulse = 50; uint8_t pulse = 50;
float32 fre_set = 0;
void mux_signal_switch(st_mux_signal *mux_signal) void mux_signal_switch(st_mux_signal *mux_signal)
{ {
CHANNEL ch; CHANNEL ch;
@ -143,7 +144,8 @@ void mux_signal_switch(st_mux_signal *mux_signal)
// ads1220_operation(CH2_OUT_CUR, &mux_signal->data_pv); // ads1220_operation(CH2_OUT_CUR, &mux_signal->data_pv);
break; break;
case CH3_OUT_FRE: case CH3_OUT_FRE:
freq_operation(mux_signal->data_sv, pulse); freq_operation(mux_signal->data_sv, pulse, TIM_CHANNEL_2);
fre_set = mux_signal->data_sv;
fun_get_freq(&freq_signal, &mux_signal->data_pv); fun_get_freq(&freq_signal, &mux_signal->data_pv);
break; break;
case CH4_OUT_RES: case CH4_OUT_RES:

View File

@ -51,6 +51,7 @@ typedef struct
extern st_freq_signal freq_signal; extern st_freq_signal freq_signal;
extern st_mux_signal mux_signal; extern st_mux_signal mux_signal;
extern float32 fre_set;
void pwr_cosume(BOOL rst, uint32_t ms); void pwr_cosume(BOOL rst, uint32_t ms);
void mux_signal_switch(st_mux_signal *mux_signal); void mux_signal_switch(st_mux_signal *mux_signal);

View File

@ -29,19 +29,29 @@ extern "C" {
#include "main.h" #include "main.h"
/* USER CODE BEGIN Includes */ /* USER CODE BEGIN Includes */
#define FREQ_SYS 921600 #define FREQ_SYS 82944000
#define freq_operation(FREQ, PULSE) \ #define freq_operation(FREQ, PULSE, CHAN) \
do \ do \
{ \ { \
if (FREQ <= 0 || FREQ >= FREQ_SYS || PULSE <= 0 || PULSE >= 100) \ if (FREQ <= 0 || FREQ >= 500000 || PULSE <= 0 || PULSE >= 100) \
{ \ { \
HAL_TIMEx_PWMN_Stop(&htim1, TIM_CHANNEL_2); \ HAL_TIMEx_PWMN_Stop(&htim1, CHAN); \
return; \ return; \
} \ } \
int32_t duty = ( (float32)FREQ_SYS / (float32)FREQ + (float32)0.5 ); \ int fre_duty = 0; \
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, duty *PULSE / 100 - 1); \ if(FREQ <= 50000) \
__HAL_TIM_SET_AUTORELOAD(&htim1, duty -1); \ { \
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2); \ __HAL_TIM_SET_PRESCALER(&htim1, 1600-1); \
fre_duty = ( (float32)FREQ_SYS / (float32)1600.0 / (float32)FREQ + (float32)0.5 ); \
} \
else \
{ \
__HAL_TIM_SET_PRESCALER(&htim1, 2-1); \
fre_duty = ( (float32)FREQ_SYS / (float32)2.0 / (float32)FREQ + (float32)0.5 ); \
} \
__HAL_TIM_SET_AUTORELOAD(&htim1, fre_duty -1); \
__HAL_TIM_SET_COMPARE(&htim1, CHAN, fre_duty *PULSE / 100 - 1); \
HAL_TIMEx_PWMN_Start(&htim1, CHAN); \
} while (0) } while (0)
/* USER CODE END Includes */ /* USER CODE END Includes */

View File

@ -204,6 +204,7 @@ void start_task_lcd(void const * argument)
* @retval None * @retval None
*/ */
uint8_t hart_test = 0; uint8_t hart_test = 0;
uint8_t hart_cnt = 0;
/* USER CODE END Header_start_task_hart */ /* USER CODE END Header_start_task_hart */
void start_task_hart(void const * argument) void start_task_hart(void const * argument)
{ {
@ -215,13 +216,26 @@ void start_task_hart(void const * argument)
if(hart_test == 1) if(hart_test == 1)
{ {
hart_test = 0; hart_test = 2;
scom1_hart.tx_flag = TRUE; scom1_hart.tx_flag = TRUE;
freq_operation(460800, 50);
delay_cnt(1000);
hart_communicate(&scom1_hart); if(fre_set != 460800)
{
freq_operation(460800, 50, TIM_CHANNEL_3);
fre_set = 460800;
}
}
if(hart_test == 2)
{
hart_cnt++;
if(hart_cnt > 50)
{
hart_communicate(&scom1_hart);
hart_test = 0;
hart_cnt = 0;
}
} }
//transparent_hart(&scom1_hart); //transparent_hart(&scom1_hart);

View File

@ -153,24 +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> <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> </SetRegEntry>
</TargetDriverDllRegistry> </TargetDriverDllRegistry>
<Breakpoint> <Breakpoint/>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>47</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134288218</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\App\HART\hart.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\signal_generator\../App/HART/hart.c\47</Expression>
</Bp>
</Breakpoint>
<WatchWindow1> <WatchWindow1>
<Ww> <Ww>
<count>0</count> <count>0</count>
@ -257,6 +240,11 @@
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>hart_test,0x0A</ItemText> <ItemText>hart_test,0x0A</ItemText>
</Ww> </Ww>
<Ww>
<count>17</count>
<WinNumber>1</WinNumber>
<ItemText>fre_set</ItemText>
</Ww>
</WatchWindow1> </WatchWindow1>
<WatchWindow2> <WatchWindow2>
<Ww> <Ww>

File diff suppressed because it is too large Load Diff