备份,信号发生器代码合并

This commit is contained in:
王绪洁 2025-03-14 15:53:24 +08:00
parent 77ac708abe
commit 7557a66d79
4 changed files with 2830 additions and 2838 deletions

View File

@ -72,18 +72,18 @@ uint8_t di_state_last[DI_MAX] = {0};
uint8_t di_state_now[DI_MAX] = {0};
/* USER CODE END FunctionPrototypes */
void start_tcp_task(void const * argument);
void start_led_toggle_task(void const * argument);
void start_dac_task(void const * argument);
void start_adc_task(void const * argument);
void start_gpio_di_do_task(void const * argument);
void start_ec11_task(void const * argument);
void start_tcp_task(void const *argument);
void start_led_toggle_task(void const *argument);
void start_dac_task(void const *argument);
void start_adc_task(void const *argument);
void start_gpio_di_do_task(void const *argument);
void start_ec11_task(void const *argument);
extern void MX_LWIP_Init(void);
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
/* GetIdleTaskMemory prototype (linked to static allocation support) */
void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize );
void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize);
/* USER CODE BEGIN GET_IDLE_TASK_MEMORY */
static StaticTask_t xIdleTaskTCBBuffer;
@ -99,11 +99,12 @@ void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer, StackTyp
/* USER CODE END GET_IDLE_TASK_MEMORY */
/**
* @brief FreeRTOS initialization
* @param None
* @retval None
*/
void MX_FREERTOS_Init(void) {
* @brief FreeRTOS initialization
* @param None
* @retval None
*/
void MX_FREERTOS_Init(void)
{
/* USER CODE BEGIN Init */
/* USER CODE END Init */
@ -152,7 +153,6 @@ void MX_FREERTOS_Init(void) {
/* USER CODE BEGIN RTOS_THREADS */
/* add threads, ... */
/* USER CODE END RTOS_THREADS */
}
/* USER CODE BEGIN Header_start_tcp_task */
@ -162,7 +162,7 @@ void MX_FREERTOS_Init(void) {
* @retval None
*/
/* USER CODE END Header_start_tcp_task */
void start_tcp_task(void const * argument)
void start_tcp_task(void const *argument)
{
/* init code for LWIP */
MX_LWIP_Init();
@ -185,13 +185,69 @@ void start_tcp_task(void const * argument)
* @retval None
*/
/* USER CODE END Header_start_led_toggle_task */
void start_led_toggle_task(void const * argument)
void start_led_toggle_task(void const *argument)
{
/* USER CODE BEGIN start_led_toggle_task */
/* Infinite loop */
for (;;)
{
HAL_GPIO_TogglePin(LED2_G_GPIO_Port, LED2_G_Pin);
// 旋转编码器确认按键状态并切换<E58887>?<3F>道和确认电流<E794B5>?<3F><EFBFBD>?
// if (uart_lcd_state.page_num == 0)
{
if (ec11_data.confirm_key_flag == 0)
{
// HAL_GPIO_TogglePin(LED2_Y_GPIO_Port, LED2_Y_Pin);
}
else if (ec11_data.confirm_key_flag == 1) // 确认按键确认电流输出
{
ec11_data.confirm_key_flag_last++;
if (ec11_data.confirm_key_flag_last > 2)
{
current_buff[0] = (float)uart_lcd_state.current_value[0];
current_buff[1] = (float)uart_lcd_state.current_value[1];
ec11_data.confirm_key_flag_last = 0;
ec11_data.confirm_key_flag = 0;
}
}
else if (ec11_data.confirm_key_flag == 2) // 切换通道按键确认状<E8AEA4>??
{
ec11_data.confirm_key_flag_last++;
if (ec11_data.confirm_key_flag_last > 2)
{
if (uart_lcd_state.key_state[0] == 1)
{
uart_lcd_state.key_state[0] = 0;
uart_lcd_state.key_state[1] = 1;
uart_lcd_state.key_state[2] = 0;
}
else if (uart_lcd_state.key_state[0] == 0)
{
uart_lcd_state.key_state[0] = 1;
uart_lcd_state.key_state[1] = 0;
uart_lcd_state.key_state[2] = 1;
}
ec11_data.confirm_key_flag_last = 0;
ec11_data.confirm_key_flag = 0;
uart_lcd_channel_switch(uart_lcd_state.key_state[0]);
}
}
else if (ec11_data.confirm_key_flag == 3) // 切换界面
{
if (uart_lcd_state.page_num == 0)
{
uart_lcd_state.page_num = 1;
}
else if (uart_lcd_state.page_num == 1)
{
uart_lcd_state.page_num = 0;
}
ec11_data.confirm_key_flag_last = 0;
ec11_data.confirm_key_flag = 0;
uart_lcd_page_switch(uart_lcd_state.page_num);
}
}
vTaskDelay(500);
}
/* USER CODE END start_led_toggle_task */
@ -204,14 +260,14 @@ void start_led_toggle_task(void const * argument)
* @retval None
*/
/* USER CODE END Header_start_dac_task */
void start_dac_task(void const * argument)
void start_dac_task(void const *argument)
{
/* USER CODE BEGIN start_dac_task */
dac161s997_init();
/* Infinite loop */
for (;;)
{
osThreadSuspend(adc_taskHandle); // æšå<EFBFBD>œADC任务,防止DAC采醿—¶äº§ç”Ÿå¹²æ‰?,å ä¸ºADCåŒDAC采用的是å<C2AF>Œä¸€è·¯SPI,但是时åº<C3A5>ä¸<C3A4>å<EFBFBD>?
osThreadSuspend(adc_taskHandle); // 暂停ADC任务防止DAC采集时产生干<EFBFBD>?,因为ADC和DAC采用的是同一路SPI但是时序不<EFBFBD>?
dac161s997_output(DAC161S997_1, current_buff[0]);
dac161s997_output(DAC161S997_2, current_buff[1]);
osThreadResume(adc_taskHandle);
@ -227,20 +283,20 @@ void start_dac_task(void const * argument)
* @retval None
*/
/* USER CODE END Header_start_adc_task */
void start_adc_task(void const * argument)
void start_adc_task(void const *argument)
{
/* USER CODE BEGIN start_adc_task */
ad7124_setup();
/* Infinite loop */
for (;;)
{
osThreadSuspend(dac_taskHandle); // æšå<EFBFBD>œDAC任务,防止ADC采醿—¶äº§ç”Ÿå¹²æ‰?,å ä¸ºADCåŒDAC采用的是å<C2AF>Œä¸€è·¯SPI,但是时åº<C3A5>ä¸<C3A4>å<EFBFBD>?
osThreadSuspend(dac_taskHandle); // 暂停DAC任务防止ADC采集时产生干<EFBFBD>?,因为ADC和DAC采用的是同一路SPI但是时序不<EFBFBD>?
uint8_t ch = 0;
for (ch = STOP_NC_ADC; ch < AD7124_CHANNEL_EN_MAX; ch++)
{
ad7124_get_analog(ch);
}
HAL_GPIO_TogglePin(LED2_Y_GPIO_Port, LED2_Y_Pin);
// HAL_GPIO_TogglePin(LED2_Y_GPIO_Port, LED2_Y_Pin);
/*姝ら儴鍒嗘槸鍥犱负閫氳杩囩▼涓細浜х敓閫氳涓柇骞舵棤娉曟仮澶嶇殑鎯呭喌*/
if (huart5.RxState == HAL_UART_STATE_READY)
@ -264,7 +320,7 @@ void start_adc_task(void const * argument)
* @retval None
*/
/* USER CODE END Header_start_gpio_di_do_task */
void start_gpio_di_do_task(void const * argument)
void start_gpio_di_do_task(void const *argument)
{
/* USER CODE BEGIN start_gpio_di_do_task */
/* Infinite loop */
@ -275,7 +331,7 @@ void start_gpio_di_do_task(void const * argument)
uint8_t tx_data_len = 7 + DI_MAX;
uint8_t tx_data[32] = {0};
tx_data[0] = FRAME_HEAD; // 甯уご
tx_data[1] = COM_OK; // é<EFBFBD>˜è®¹æ??锟界çˆ?
tx_data[1] = COM_OK; // 鐘讹<EFBFBD>??锟界<E9949F>?
tx_data[2] = DEVICE_NUM; // 璁惧锟??
tx_data[3] = SEND_STATE_CMD; // 鍛戒护锟??
tx_data[4] = DI_MAX; // 鏁版嵁闀垮害
@ -312,69 +368,15 @@ void start_gpio_di_do_task(void const * argument)
* @retval None
*/
/* USER CODE END Header_start_ec11_task */
void start_ec11_task(void const * argument)
void start_ec11_task(void const *argument)
{
/* USER CODE BEGIN start_ec11_task */
/* Infinite loop */
for (;;)
{
// æ—转ç¼ç <C3A7>器确认按键状æ€<C3A6>,并切æ<E280A1>¢é?šé<C5A1>“åŒç¡®è®¤ç”µæµ<C3A6>å?¼è¾“å‡?
{
if (ec11_data.confirm_key_flag == 0)
{
HAL_GPIO_TogglePin(LED2_Y_GPIO_Port, LED2_Y_Pin);
}
else if (ec11_data.confirm_key_flag == 1) // 确认按键确认电æµ<C3A6>输出
{
ec11_data.confirm_key_flag_last++;
if (ec11_data.confirm_key_flag_last > 10)
{
current_buff[0] = (float)uart_lcd_state.current_value[0];
current_buff[1] = (float)uart_lcd_state.current_value[1];
ec11_data.confirm_key_flag_last = 0;
ec11_data.confirm_key_flag = 0;
}
}
else if (ec11_data.confirm_key_flag == 2) // 切æ<E280A1>¢é€šé<C5A1>“按键确认状æ??
{
ec11_data.confirm_key_flag_last++;
if (ec11_data.confirm_key_flag_last > 10)
{
if (uart_lcd_state.key_state[0] == 1)
{
uart_lcd_state.key_state[0] = 0;
uart_lcd_state.key_state[1] = 1;
uart_lcd_state.key_state[2] = 0;
}
else if (uart_lcd_state.key_state[0] == 0)
{
uart_lcd_state.key_state[0] = 1;
uart_lcd_state.key_state[1] = 0;
uart_lcd_state.key_state[2] = 1;
}
ec11_data.confirm_key_flag_last = 0;
ec11_data.confirm_key_flag = 0;
uart_lcd_channel_switch(uart_lcd_state.key_state[0]);
}
}
else if (ec11_data.confirm_key_flag == 3) // 切æ<E280A1>¢ç•Œé<C592>¢
{
if (uart_lcd_state.page_num == 0)
{
uart_lcd_state.page_num = 1;
}
else if (uart_lcd_state.page_num == 1)
{
uart_lcd_state.page_num = 0;
}
ec11_data.confirm_key_flag_last = 0;
ec11_data.confirm_key_flag = 0;
uart_lcd_page_switch(uart_lcd_state.page_num);
}
}
// æ—转ç¼ç <C3A7>器调èŠç”µæµ<C3A6>å?¼ç”»é<C2BB>¢æ˜¾ç¤?
// 旋转编码器调节电流<E794B5>?<3F>画面显<E99DA2>?
if (uart_lcd_state.page_num == 0)
{
ec11_data.direction = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim1);
ec11_data.encode_num = (short)__HAL_TIM_GET_COUNTER(&htim1);

View File

@ -148,24 +148,7 @@
<Name>-U090F00028316303030303032 -O2254 -SF1000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>221</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134232952</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>../Core/Src/main.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\semi_finished_product_testing\../Core/Src/main.c\221</Expression>
</Bp>
</Breakpoint>
<Breakpoint/>
<WatchWindow1>
<Ww>
<count>0</count>

View File

@ -25,13 +25,13 @@ static void uart_lcd_current_channel2(void)
uint8_t uart_lcd_data3[9] = {0xEE, 0xB1, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF};
static void uart_lcd_page1(void)
{
uart_lcd_state.page_num = 0;
dma_usart_send(&huart4, uart_lcd_data3, ARRAY_LEN(uart_lcd_data3));
}
uint8_t uart_lcd_data4[9] = {0xEE, 0xB1, 0x00, 0x00, 0x01, 0xFF, 0xFC, 0xFF, 0xFF};
static void uart_lcd_page2(void)
{
uart_lcd_state.page_num = 1;
dma_usart_send(&huart4, uart_lcd_data4, ARRAY_LEN(uart_lcd_data4));
}
@ -45,7 +45,7 @@ static void uart_lcd_page2(void)
uint8_t ip_addr[24] = {0};
void uart_lcd_draw_ipaddr(void)
{
// 串口发送的固定值为串口屏指令指定的帧头帧尾
ip_addr[0] = 0xEE; // 帧头
ip_addr[1] = 0xB1;
@ -60,15 +60,15 @@ void uart_lcd_draw_ipaddr(void)
ip_addr[8 + strlen(ip_addr_str)] = 0xFC;
ip_addr[9 + strlen(ip_addr_str)] = 0xFF;
ip_addr[10 + strlen(ip_addr_str)] = 0xFF;
//uart_lcd_page2();
//HAL_Delay(100);
// uart_lcd_page2();
// HAL_Delay(100);
dma_usart_send(&huart4, ip_addr, ARRAY_LEN(ip_addr));
//HAL_Delay(100);
// HAL_Delay(100);
}
void uart_lcd_init(void)
{
uart_lcd_state.page_num = 0;
uart_lcd_state.page_num = 1;
uart_lcd_state.key_state[0] = 0;
uart_lcd_state.key_state[1] = 1;
uart_lcd_state.key_state[2] = 0;
@ -81,10 +81,12 @@ void uart_lcd_init(void)
// uart_lcd_current_out(1);
}
uint8_t lcd_channel[15] = {0xEE, 0xB1, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF};
void uart_lcd_current_out(uint8_t channel)
{
if (uart_lcd_state.page_num == 1)
{
return;
}
if (channel == 0)
{
lcd_channel[6] = 0x04;
@ -102,7 +104,10 @@ void uart_lcd_current_out(uint8_t channel)
void uart_lcd_channel_switch(uint8_t channel)
{
if (uart_lcd_state.page_num == 1)
{
return;
}
switch (channel)
{
case 0: