Compare commits
9 Commits
main
...
positioner
Author | SHA1 | Date |
---|---|---|
|
47000e9b5d | |
|
aca21ee3a5 | |
|
e186b23d28 | |
|
d8f30dcd94 | |
|
3f4773eaf0 | |
|
465d561044 | |
|
768f66dd16 | |
|
9bf76112e0 | |
|
78e0073116 |
|
@ -179,7 +179,6 @@ void start_tcp_task(void const *argument)
|
|||
/* Infinite loop */
|
||||
for (;;)
|
||||
{
|
||||
// uart_lcd_draw_ipaddr();
|
||||
osThreadTerminate(NULL);
|
||||
}
|
||||
/* USER CODE END start_tcp_task */
|
||||
|
@ -198,43 +197,10 @@ void start_led_toggle_task(void const *argument)
|
|||
/* Infinite loop */
|
||||
for (;;)
|
||||
{
|
||||
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 > 3)
|
||||
{
|
||||
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)
|
||||
{
|
||||
ec11_data.confirm_key_flag_last = 0;
|
||||
HAL_GPIO_TogglePin(LED3_G_GPIO_Port, LED3_G_Pin);
|
||||
|
||||
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 = 0;
|
||||
uart_lcd_channel_switch(uart_lcd_state.key_state[0]);
|
||||
}
|
||||
|
||||
vTaskDelay(400);
|
||||
uart_lcd_ecll_control_current_out();
|
||||
vTaskDelay(300);
|
||||
}
|
||||
/* USER CODE END start_led_toggle_task */
|
||||
}
|
||||
|
@ -253,10 +219,10 @@ void start_dac_task(void const *argument)
|
|||
/* Infinite loop */
|
||||
for (;;)
|
||||
{
|
||||
osThreadSuspend(adc_taskHandle);
|
||||
osThreadSuspend(adc_taskHandle); // Suspend ADC task to prevent conflicts with ADC task.
|
||||
dac161s997_output(DAC161S997_1, current_buff[0]);
|
||||
dac161s997_output(DAC161S997_2, current_buff[1]);
|
||||
osThreadResume(adc_taskHandle);
|
||||
osThreadResume(adc_taskHandle); // Resume ADC task.
|
||||
vTaskDelay(100);
|
||||
}
|
||||
/* USER CODE END start_dac_task */
|
||||
|
@ -276,22 +242,13 @@ void start_adc_task(void const *argument)
|
|||
/* Infinite loop */
|
||||
for (;;)
|
||||
{
|
||||
osThreadSuspend(dac_taskHandle);
|
||||
osThreadSuspend(dac_taskHandle); // Suspend DAC task to prevent conflicts with DAC task.
|
||||
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);
|
||||
if (huart5.RxState == HAL_UART_STATE_READY)
|
||||
{
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart5, hart1_uart5.rx_data_temp, ARRAY_LEN(hart1_uart5.rx_data_temp));
|
||||
}
|
||||
if (huart2.RxState == HAL_UART_STATE_READY)
|
||||
{
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, hart2_uart2.rx_data_temp, ARRAY_LEN(hart2_uart2.rx_data_temp));
|
||||
}
|
||||
osThreadResume(dac_taskHandle);
|
||||
osThreadResume(dac_taskHandle); // Resume DAC task.
|
||||
vTaskDelay(10);
|
||||
}
|
||||
/* USER CODE END start_adc_task */
|
||||
|
@ -310,37 +267,7 @@ void start_gpio_di_do_task(void const *argument)
|
|||
/* Infinite loop */
|
||||
for (;;)
|
||||
{
|
||||
|
||||
uint8_t di_ch = 0;
|
||||
uint8_t tx_data_len = 7 + DI_MAX;
|
||||
uint8_t tx_data[32] = {0};
|
||||
tx_data[0] = FRAME_HEAD; // 帧头
|
||||
tx_data[1] = COM_OK; // 状<>?<3F>码
|
||||
tx_data[2] = DEVICE_NUM; // 设备<E8AEBE>??
|
||||
tx_data[3] = SEND_STATE_CMD; // 命令<E591BD>??
|
||||
tx_data[4] = DI_MAX; // 数据长度
|
||||
for (di_ch = 0; di_ch < DI_MAX; di_ch++)
|
||||
{
|
||||
di_state_now[di_ch] = gpio_di_test(di_ch);
|
||||
if (di_state_last[di_ch] != di_state_now[di_ch])
|
||||
{
|
||||
di_state_last[di_ch] = di_state_now[di_ch];
|
||||
send_data_flag_cmd = 1;
|
||||
}
|
||||
tx_data[5 + di_ch] = di_state_now[di_ch];
|
||||
}
|
||||
if ((send_data_flag_cmd != 0) && (1 == tcp_echo_flags_control))
|
||||
{
|
||||
tx_data[5 + DI_MAX] = xor_compute(tx_data + 1, tx_data_len - 3); // 异或校验
|
||||
tx_data[6 + DI_MAX] = FRAME_TAIL; // 帧尾
|
||||
user_send_data_control(tx_data, tx_data_len);
|
||||
send_data_flag_cmd++;
|
||||
if (send_data_flag_cmd > 3) // 连续三次上位机没有回应,则停止发送数据包
|
||||
{
|
||||
send_data_flag_cmd = 0;
|
||||
}
|
||||
}
|
||||
vTaskDelay(100);
|
||||
osThreadTerminate(NULL);
|
||||
}
|
||||
/* USER CODE END start_gpio_di_do_task */
|
||||
}
|
||||
|
@ -358,56 +285,7 @@ void start_ec11_task(void const *argument)
|
|||
/* Infinite loop */
|
||||
for (;;)
|
||||
{
|
||||
ec11_data.direction = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim1);
|
||||
ec11_data.encode_num = (short)__HAL_TIM_GET_COUNTER(&htim1);
|
||||
if ((ec11_data.direction == 0) && (ec11_data.encode_num > ec11_data.encode_num_last))
|
||||
{
|
||||
if (uart_lcd_state.key_state[0] == 0)
|
||||
{
|
||||
uart_lcd_state.current_value[0] += 1;
|
||||
if (uart_lcd_state.current_value[0] > 20)
|
||||
{
|
||||
uart_lcd_state.current_value[0] = 20;
|
||||
}
|
||||
}
|
||||
else if (uart_lcd_state.key_state[0] == 1)
|
||||
{
|
||||
uart_lcd_state.current_value[1] += 1;
|
||||
if (uart_lcd_state.current_value[1] > 20)
|
||||
{
|
||||
uart_lcd_state.current_value[1] = 20;
|
||||
}
|
||||
}
|
||||
// current_buff[0] = (float)uart_lcd_state.current_value[0];
|
||||
}
|
||||
if ((ec11_data.direction == 1) && (ec11_data.encode_num < ec11_data.encode_num_last))
|
||||
{
|
||||
if (uart_lcd_state.key_state[0] == 0)
|
||||
{
|
||||
if (uart_lcd_state.current_value[0] < 2)
|
||||
{
|
||||
uart_lcd_state.current_value[0] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
uart_lcd_state.current_value[0] -= 1;
|
||||
}
|
||||
}
|
||||
else if (uart_lcd_state.key_state[0] == 1)
|
||||
{
|
||||
if (uart_lcd_state.current_value[1] < 2)
|
||||
{
|
||||
uart_lcd_state.current_value[1] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
uart_lcd_state.current_value[1] -= 1;
|
||||
}
|
||||
}
|
||||
// current_buff[1] = (float)uart_lcd_state.current_value[1];
|
||||
}
|
||||
uart_lcd_current_out(uart_lcd_state.key_state[0]);
|
||||
ec11_data.encode_num_last = ec11_data.encode_num;
|
||||
uart_lcd_ec11_control_current();
|
||||
vTaskDelay(100);
|
||||
}
|
||||
/* USER CODE END start_ec11_task */
|
||||
|
@ -427,7 +305,8 @@ void start_lcd_task(void const *argument)
|
|||
/* Infinite loop */
|
||||
for (;;)
|
||||
{
|
||||
vTaskDelay(10);
|
||||
uart_lcd_refresh_screen();
|
||||
vTaskDelay(100);
|
||||
}
|
||||
/* USER CODE END start_lcd_task */
|
||||
}
|
||||
|
|
|
@ -99,6 +99,7 @@ int main(void)
|
|||
/* MCU Configuration--------------------------------------------------------*/
|
||||
|
||||
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
|
||||
|
||||
HAL_Init();
|
||||
|
||||
/* USER CODE BEGIN Init */
|
||||
|
@ -126,18 +127,18 @@ int main(void)
|
|||
MX_TIM1_Init();
|
||||
MX_USART1_UART_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
/*閰濈疆鍧勪覆鍧g殑DMA鎺ユ敹*/
|
||||
/*Configure serial port DMA reception*/
|
||||
// start
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart4, lcd_uart4.rx_data_temp, ARRAY_LEN(lcd_uart4.rx_data_temp));
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart6, ble1_uart6.rx_data_temp, ARRAY_LEN(ble1_uart6.rx_data_temp));
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart3, ble2_uart3.rx_data_temp, ARRAY_LEN(ble2_uart3.rx_data_temp));
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart5, hart1_uart5.rx_data_temp, ARRAY_LEN(hart1_uart5.rx_data_temp));
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, hart2_uart2.rx_data_temp, ARRAY_LEN(hart2_uart2.rx_data_temp));
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart1, usb_uart1.rx_data_temp, ARRAY_LEN(usb_uart1.rx_data_temp));
|
||||
// HAL_UARTEx_ReceiveToIdle_DMA(&huart6, ble1_uart6.rx_data_temp, ARRAY_LEN(ble1_uart6.rx_data_temp));
|
||||
// HAL_UARTEx_ReceiveToIdle_DMA(&huart3, ble2_uart3.rx_data_temp, ARRAY_LEN(ble2_uart3.rx_data_temp));
|
||||
// HAL_UARTEx_ReceiveToIdle_DMA(&huart5, hart1_uart5.rx_data_temp, ARRAY_LEN(hart1_uart5.rx_data_temp));
|
||||
// HAL_UARTEx_ReceiveToIdle_DMA(&huart2, hart2_uart2.rx_data_temp, ARRAY_LEN(hart2_uart2.rx_data_temp));
|
||||
// HAL_UARTEx_ReceiveToIdle_DMA(&huart1, usb_uart1.rx_data_temp, ARRAY_LEN(usb_uart1.rx_data_temp));
|
||||
// end
|
||||
hart_ht1200m_reset(); // 鍒濆鍖朒T1200M妯″潡
|
||||
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); // PWM杈撳嚭锛岀敤浜庨┍鍔℉T1200M妯″潡
|
||||
HAL_TIM_Encoder_Start(&htim1, TIM_CHANNEL_ALL); // 鏃嬭浆缂栫牆鍣ㄨ緭锟<EFBFBD>??
|
||||
hart_ht1200m_reset(); // Reset HT1200M
|
||||
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); // PWM output, used to drive the HT1200M module
|
||||
HAL_TIM_Encoder_Start(&htim1, TIM_CHANNEL_ALL); // rotary encoder
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Call init function for freertos objects (in freertos.c) */
|
||||
|
@ -212,13 +213,11 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
|||
memset(usb_uart1.rx_data, 0, ARRAY_LEN(usb_uart1.rx_data));
|
||||
memcpy(usb_uart1.rx_data, usb_uart1.rx_data_temp, Size);
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart1, usb_uart1.rx_data_temp, ARRAY_LEN(usb_uart1.rx_data_temp));
|
||||
// dma_usart_send(&huart4, usb_uart1.rx_data_temp, usb_uart1.rx_num);
|
||||
// ip鍦板潃淇敼澶勭悊
|
||||
// UART receives IP address
|
||||
IP4_ADDR(&ipaddr, usb_uart1.rx_data_temp[0], usb_uart1.rx_data_temp[1], usb_uart1.rx_data_temp[2], usb_uart1.rx_data_temp[3]);
|
||||
gnetif.ip_addr = ipaddr;
|
||||
if (flash_write_data(FLASH_USER_START_ADDR, usb_uart1.rx_data_temp, Size) == HAL_OK)
|
||||
{
|
||||
// uart_lcd_draw_ipaddr();
|
||||
}
|
||||
}
|
||||
if (huart == &huart4)
|
||||
|
@ -228,7 +227,6 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
|||
memset(lcd_uart4.rx_data, 0, ARRAY_LEN(lcd_uart4.rx_data));
|
||||
memcpy(lcd_uart4.rx_data, lcd_uart4.rx_data_temp, Size);
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart4, lcd_uart4.rx_data_temp, ARRAY_LEN(lcd_uart4.rx_data_temp));
|
||||
// dma_usart_send(&huart4, lcd_uart4.rx_data_temp, lcd_uart4.rx_num);
|
||||
}
|
||||
if (huart == &huart6)
|
||||
{
|
||||
|
@ -291,7 +289,26 @@ void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
|||
}
|
||||
if (huart == &huart4)
|
||||
{
|
||||
HART2_RTS_RECEIVE;
|
||||
uart_lcd_state.lcd_flag = 0; // Reset the LCD flag after sending data
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||||
{
|
||||
if (GPIO_Pin == EC11_KEY_Pin)
|
||||
{
|
||||
if (ec11_data.confirm_key_flag == 0)
|
||||
{
|
||||
ec11_data.confirm_key_flag = 1;
|
||||
}
|
||||
else if (ec11_data.confirm_key_flag == 1)
|
||||
{
|
||||
ec11_data.confirm_key_flag = 2;
|
||||
}
|
||||
else if (ec11_data.confirm_key_flag == 2)
|
||||
{
|
||||
ec11_data.confirm_key_flag = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* USER CODE END 4 */
|
||||
|
@ -330,7 +347,6 @@ void Error_Handler(void)
|
|||
// while (1)
|
||||
// {
|
||||
// }
|
||||
// TODO 这里暂时注释,导致原因为DMA发送太快,导致发送失败
|
||||
/* USER CODE END Error_Handler_Debug */
|
||||
}
|
||||
|
||||
|
|
|
@ -92,8 +92,8 @@ extern TIM_HandleTypeDef htim4;
|
|||
/* Cortex-M4 Processor Interruption and Exception Handlers */
|
||||
/******************************************************************************/
|
||||
/**
|
||||
* @brief This function handles Non maskable interrupt.
|
||||
*/
|
||||
* @brief This function handles Non maskable interrupt.
|
||||
*/
|
||||
void NMI_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN NonMaskableInt_IRQn 0 */
|
||||
|
@ -107,8 +107,8 @@ void NMI_Handler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Hard fault interrupt.
|
||||
*/
|
||||
* @brief This function handles Hard fault interrupt.
|
||||
*/
|
||||
void HardFault_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN HardFault_IRQn 0 */
|
||||
|
@ -122,8 +122,8 @@ void HardFault_Handler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Memory management fault.
|
||||
*/
|
||||
* @brief This function handles Memory management fault.
|
||||
*/
|
||||
void MemManage_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN MemoryManagement_IRQn 0 */
|
||||
|
@ -137,8 +137,8 @@ void MemManage_Handler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Pre-fetch fault, memory access fault.
|
||||
*/
|
||||
* @brief This function handles Pre-fetch fault, memory access fault.
|
||||
*/
|
||||
void BusFault_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN BusFault_IRQn 0 */
|
||||
|
@ -152,8 +152,8 @@ void BusFault_Handler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Undefined instruction or illegal state.
|
||||
*/
|
||||
* @brief This function handles Undefined instruction or illegal state.
|
||||
*/
|
||||
void UsageFault_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN UsageFault_IRQn 0 */
|
||||
|
@ -167,8 +167,8 @@ void UsageFault_Handler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Debug monitor.
|
||||
*/
|
||||
* @brief This function handles Debug monitor.
|
||||
*/
|
||||
void DebugMon_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DebugMonitor_IRQn 0 */
|
||||
|
@ -187,8 +187,8 @@ void DebugMon_Handler(void)
|
|||
/******************************************************************************/
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line1 interrupt.
|
||||
*/
|
||||
* @brief This function handles EXTI line1 interrupt.
|
||||
*/
|
||||
void EXTI1_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI1_IRQn 0 */
|
||||
|
@ -201,8 +201,8 @@ void EXTI1_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line3 interrupt.
|
||||
*/
|
||||
* @brief This function handles EXTI line3 interrupt.
|
||||
*/
|
||||
void EXTI3_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI3_IRQn 0 */
|
||||
|
@ -215,8 +215,8 @@ void EXTI3_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA1 stream0 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA1 stream0 global interrupt.
|
||||
*/
|
||||
void DMA1_Stream0_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA1_Stream0_IRQn 0 */
|
||||
|
@ -229,8 +229,8 @@ void DMA1_Stream0_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA1 stream1 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA1 stream1 global interrupt.
|
||||
*/
|
||||
void DMA1_Stream1_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA1_Stream1_IRQn 0 */
|
||||
|
@ -243,8 +243,8 @@ void DMA1_Stream1_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA1 stream2 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA1 stream2 global interrupt.
|
||||
*/
|
||||
void DMA1_Stream2_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA1_Stream2_IRQn 0 */
|
||||
|
@ -257,8 +257,8 @@ void DMA1_Stream2_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA1 stream3 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA1 stream3 global interrupt.
|
||||
*/
|
||||
void DMA1_Stream3_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA1_Stream3_IRQn 0 */
|
||||
|
@ -271,8 +271,8 @@ void DMA1_Stream3_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA1 stream4 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA1 stream4 global interrupt.
|
||||
*/
|
||||
void DMA1_Stream4_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA1_Stream4_IRQn 0 */
|
||||
|
@ -285,8 +285,8 @@ void DMA1_Stream4_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA1 stream5 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA1 stream5 global interrupt.
|
||||
*/
|
||||
void DMA1_Stream5_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA1_Stream5_IRQn 0 */
|
||||
|
@ -299,8 +299,8 @@ void DMA1_Stream5_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA1 stream6 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA1 stream6 global interrupt.
|
||||
*/
|
||||
void DMA1_Stream6_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA1_Stream6_IRQn 0 */
|
||||
|
@ -313,8 +313,8 @@ void DMA1_Stream6_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line[9:5] interrupts.
|
||||
*/
|
||||
* @brief This function handles EXTI line[9:5] interrupts.
|
||||
*/
|
||||
void EXTI9_5_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI9_5_IRQn 0 */
|
||||
|
@ -322,20 +322,13 @@ void EXTI9_5_IRQHandler(void)
|
|||
/* USER CODE END EXTI9_5_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(EC11_KEY_Pin);
|
||||
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
|
||||
if (ec11_data.confirm_key_flag == 1)
|
||||
{
|
||||
ec11_data.confirm_key_flag = 2;
|
||||
}
|
||||
else if (ec11_data.confirm_key_flag == 0)
|
||||
{
|
||||
ec11_data.confirm_key_flag = 1;
|
||||
}
|
||||
|
||||
/* USER CODE END EXTI9_5_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles TIM4 global interrupt.
|
||||
*/
|
||||
* @brief This function handles TIM4 global interrupt.
|
||||
*/
|
||||
void TIM4_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN TIM4_IRQn 0 */
|
||||
|
@ -348,8 +341,8 @@ void TIM4_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles USART1 global interrupt.
|
||||
*/
|
||||
* @brief This function handles USART1 global interrupt.
|
||||
*/
|
||||
void USART1_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN USART1_IRQn 0 */
|
||||
|
@ -362,8 +355,8 @@ void USART1_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles USART2 global interrupt.
|
||||
*/
|
||||
* @brief This function handles USART2 global interrupt.
|
||||
*/
|
||||
void USART2_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN USART2_IRQn 0 */
|
||||
|
@ -375,8 +368,8 @@ void USART2_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles USART3 global interrupt.
|
||||
*/
|
||||
* @brief This function handles USART3 global interrupt.
|
||||
*/
|
||||
void USART3_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN USART3_IRQn 0 */
|
||||
|
@ -389,8 +382,8 @@ void USART3_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA1 stream7 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA1 stream7 global interrupt.
|
||||
*/
|
||||
void DMA1_Stream7_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA1_Stream7_IRQn 0 */
|
||||
|
@ -403,8 +396,8 @@ void DMA1_Stream7_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles UART4 global interrupt.
|
||||
*/
|
||||
* @brief This function handles UART4 global interrupt.
|
||||
*/
|
||||
void UART4_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN UART4_IRQn 0 */
|
||||
|
@ -416,8 +409,8 @@ void UART4_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles UART5 global interrupt.
|
||||
*/
|
||||
* @brief This function handles UART5 global interrupt.
|
||||
*/
|
||||
void UART5_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN UART5_IRQn 0 */
|
||||
|
@ -428,8 +421,8 @@ void UART5_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA2 stream1 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA2 stream1 global interrupt.
|
||||
*/
|
||||
void DMA2_Stream1_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA2_Stream1_IRQn 0 */
|
||||
|
@ -442,8 +435,8 @@ void DMA2_Stream1_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA2 stream2 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA2 stream2 global interrupt.
|
||||
*/
|
||||
void DMA2_Stream2_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA2_Stream2_IRQn 0 */
|
||||
|
@ -456,8 +449,8 @@ void DMA2_Stream2_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Ethernet global interrupt.
|
||||
*/
|
||||
* @brief This function handles Ethernet global interrupt.
|
||||
*/
|
||||
void ETH_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN ETH_IRQn 0 */
|
||||
|
@ -470,8 +463,8 @@ void ETH_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA2 stream6 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA2 stream6 global interrupt.
|
||||
*/
|
||||
void DMA2_Stream6_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA2_Stream6_IRQn 0 */
|
||||
|
@ -484,8 +477,8 @@ void DMA2_Stream6_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA2 stream7 global interrupt.
|
||||
*/
|
||||
* @brief This function handles DMA2 stream7 global interrupt.
|
||||
*/
|
||||
void DMA2_Stream7_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA2_Stream7_IRQn 0 */
|
||||
|
@ -498,8 +491,8 @@ void DMA2_Stream7_IRQHandler(void)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles USART6 global interrupt.
|
||||
*/
|
||||
* @brief This function handles USART6 global interrupt.
|
||||
*/
|
||||
void USART6_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN USART6_IRQn 0 */
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "usart.h"
|
||||
|
||||
/* USER CODE BEGIN 0 */
|
||||
#include "uart_lcd.h"
|
||||
/* USER CODE END 0 */
|
||||
|
||||
UART_HandleTypeDef huart4;
|
||||
|
@ -772,8 +773,15 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef *uartHandle)
|
|||
*/
|
||||
void dma_usart_send(UART_HandleTypeDef *huart, uint8_t *buf, uint8_t len)
|
||||
{
|
||||
|
||||
if (HAL_UART_Transmit_DMA(huart, buf, len) != HAL_OK) // ĺ¤ććŻĺŚĺé?ćŁĺ¸¸ďźĺŚćĺşç°ĺźĺ¸¸ĺčżĺ
Ľĺźĺ¸¸ä¸ćĺ˝ć?
|
||||
if (huart == &huart4)
|
||||
{
|
||||
while (uart_lcd_state.lcd_flag != 0)
|
||||
{
|
||||
}
|
||||
uart_lcd_state.lcd_flag = 1; // 设置标志位,表示正在发送数据
|
||||
}
|
||||
|
||||
if (HAL_UART_Transmit_DMA(huart, buf, len) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
|
|
After Width: | Height: | Size: 7.6 KiB |
|
@ -0,0 +1 @@
|
|||
<DrawPage name="current_out" bk_transparent="0" bk_color="255;255;255" bk_image="" size_option="0" width="240" height="320"><item name="Button1" id="1" type="button" button_type="1" focus="0" notify_disable="1" key_code="a" key_type="0" init_state="0" button_style="0" longpress_delay="0" url_down="" url_up="" popup_menu_id="0" input_text_id="0" switch="" switch_effect="0" switch_area="0" switch_area_left="0" switch_area_right="0" switch_area_top="0" switch_area_bottom="0" action="" xOffset="0" yOffset="0" width="320" height="59" cut_up="0" cut_up_offset_x="0" cut_up_offset_y="0" cut_down="0" cut_down_offset_x="0" cut_down_offset_y="0" custom_data_up="" custom_data_down="" external_data_up="" external_data_down="" external_data_delay="100" child_screen="0" need_login="0" login_password="888888" show_text_state="1" font="10" font_color_up="0;0;0" font_color_down="0;0;0" text_state_up="第一路输出控制" text_state_down="第二路输出控制" bind_variant="" show_condition="0" condition_variant="" condition_value="0"/><item name="Button2" id="2" type="button" button_type="1" focus="1" notify_disable="0" key_code="a" key_type="0" init_state="1" button_style="0" longpress_delay="0" url_down="Images\780.jpg" url_up="" popup_menu_id="0" input_text_id="0" switch="" switch_effect="0" switch_area="0" switch_area_left="0" switch_area_right="0" switch_area_top="0" switch_area_bottom="0" action="" xOffset="4" yOffset="70" width="60" height="60" cut_up="0" cut_up_offset_x="0" cut_up_offset_y="0" cut_down="0" cut_down_offset_x="0" cut_down_offset_y="0" custom_data_up="" custom_data_down="" external_data_up="" external_data_down="" external_data_delay="100" child_screen="0" need_login="0" login_password="888888" show_text_state="0" font="7" font_color_up="255;255;255" font_color_down="255;255;255" text_state_up="" text_state_down="" bind_variant="" show_condition="0" condition_variant="" condition_value="0"/><item name="Button3" id="3" type="button" button_type="1" focus="1" notify_disable="0" key_code="a" key_type="0" init_state="0" button_style="0" longpress_delay="0" url_down="images\780.jpg" url_up="" popup_menu_id="0" input_text_id="0" switch="" switch_effect="0" switch_area="0" switch_area_left="0" switch_area_right="0" switch_area_top="0" switch_area_bottom="0" action="" xOffset="4" yOffset="150" width="60" height="60" cut_up="0" cut_up_offset_x="4" cut_up_offset_y="150" cut_down="0" cut_down_offset_x="0" cut_down_offset_y="0" custom_data_up="" custom_data_down="" external_data_up="" external_data_down="" external_data_delay="100" child_screen="0" need_login="0" login_password="888888" show_text_state="0" font="7" font_color_up="255;255;255" font_color_down="255;255;255" text_state_up="" text_state_down="" bind_variant="" show_condition="0" condition_variant="" condition_value="0"/><item name="Slider1" id="4" type="slider" xOffset="71" yOffset="70" width="245" height="60" value="0" start_value="0" end_value="20" input="1" notify="0" direction="0" mark_type="0" mark_count="10" mark_color="0;0;0" show_value="1" left_space="24" right_space="24" bkg_type="1" bkg_image_path="" bkg_color="255;255;255" cursor_type="0" cursor_direction="0" cursor_offset="14" cursor_width="24" cursor_height="24" cursor_image_path="" bind_variant="" show_condition="0" condition_variant="" condition_value="0"/><item name="Slider2" id="5" type="slider" xOffset="69" yOffset="150" width="245" height="60" value="0" start_value="0" end_value="20" input="1" notify="0" direction="0" mark_type="0" mark_count="10" mark_color="0;0;0" show_value="1" left_space="24" right_space="24" bkg_type="1" bkg_image_path="" bkg_color="255;255;255" cursor_type="0" cursor_direction="0" cursor_offset="14" cursor_width="24" cursor_height="24" cursor_image_path="" bind_variant="" show_condition="0" condition_variant="" condition_value="0"/></DrawPage>
|
|
@ -0,0 +1,24 @@
|
|||
[tcpip]
|
||||
dhcp=n
|
||||
ipaddr=192.168.1.100
|
||||
netmask=255.255.255.0
|
||||
gw=192.168.1.1
|
||||
dns=192.168.1.1
|
||||
server_port=5050
|
||||
remote_ip=192.168.1.200
|
||||
network_transfer=0
|
||||
network_mode=0
|
||||
|
||||
[ctrlboard]
|
||||
lcd_width=320
|
||||
lcd_height=240
|
||||
baudrate=115200
|
||||
enable_keysound=0
|
||||
audiolevel=100
|
||||
|
||||
[wifi]
|
||||
wifi_mode=0
|
||||
ssid=
|
||||
password=
|
||||
secumode=0
|
||||
|
|
@ -0,0 +1 @@
|
|||
<EFBFBD>uc<EFBFBD>
|
|
@ -0,0 +1,37 @@
|
|||
------------------------------------
|
||||
-- 提示
|
||||
-- 如果使用其他Lua编辑工具编辑此文档,请将VisualTFT软件中打开的此文件编辑器视图关闭,
|
||||
-- 因为VisualTFT具有自动保存功能,其他软件修改时不能同步到VisualTFT编辑视图,
|
||||
-- VisualTFT定时保存时,其他软件修改的内容将被恢复。
|
||||
--
|
||||
-- Attention
|
||||
-- If you use other Lua Editor to edit this file, please close the file editor view
|
||||
-- opened in the VisualTFT, Because VisualTFT has an automatic save function,
|
||||
-- other Lua Editor cannot be synchronized to the VisualTFT edit view when it is modified.
|
||||
-- When VisualTFT saves regularly, the content modified by other Lua Editor will be restored.
|
||||
------------------------------------
|
||||
|
||||
--下面列出了常用的回调函数
|
||||
--更多功能请阅读<<LUA脚本API.pdf>>
|
||||
|
||||
|
||||
--初始化函数
|
||||
--function on_init()
|
||||
--end
|
||||
|
||||
--定时回调函数,系统每隔1秒钟自动调用。
|
||||
--function on_systick()
|
||||
--end
|
||||
|
||||
--定时器超时回调函数,当设置的定时器超时时,执行此回调函数,timer_id为对应的定时器ID
|
||||
--function on_timer(timer_id)
|
||||
--end
|
||||
|
||||
--用户通过触摸修改控件后,执行此回调函数。
|
||||
--点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
|
||||
--function on_control_notify(screen,control,value)
|
||||
--end
|
||||
|
||||
--当画面切换时,执行此回调函数,screen为目标画面。
|
||||
--function on_screen_change(screen)
|
||||
--end
|
|
@ -0,0 +1,2 @@
|
|||
[setting]
|
||||
font0=wqymicrohei.ttf
|
|
@ -0,0 +1,32 @@
|
|||
<fonts ttf="wqyMicroHei.ttf">
|
||||
<font id="0" type="2" name="ASC_CHS_8" width="4" height="8"/>
|
||||
<font id="1" type="2" name="ASC_CHS_10" width="5" height="10"/>
|
||||
<font id="2" type="2" name="ASC_CHS_12" width="6" height="12"/>
|
||||
<font id="3" type="2" name="ASC_CHS_14" width="7" height="14"/>
|
||||
<font id="4" type="2" name="ASC_CHS_16" width="8" height="16"/>
|
||||
<font id="5" type="2" name="ASC_CHS_18" width="9" height="18"/>
|
||||
<font id="6" type="2" name="ASC_CHS_20" width="10" height="20"/>
|
||||
<font id="7" type="2" name="ASC_CHS_22" width="11" height="22"/>
|
||||
<font id="8" type="2" name="ASC_CHS_24" width="12" height="24"/>
|
||||
<font id="9" type="2" name="ASC_CHS_26" width="13" height="26"/>
|
||||
<font id="10" type="2" name="ASC_CHS_28" width="14" height="28"/>
|
||||
<font id="11" type="2" name="ASC_CHS_30" width="15" height="30"/>
|
||||
<font id="12" type="2" name="ASC_CHS_32" width="16" height="32"/>
|
||||
<font id="13" type="2" name="ASC_CHS_36" width="18" height="36"/>
|
||||
<font id="14" type="2" name="ASC_CHS_40" width="20" height="40"/>
|
||||
<font id="15" type="2" name="ASC_CHS_44" width="22" height="44"/>
|
||||
<font id="16" type="2" name="ASC_CHS_48" width="24" height="48"/>
|
||||
<font id="17" type="2" name="ASC_CHS_52" width="26" height="52"/>
|
||||
<font id="18" type="2" name="ASC_CHS_56" width="28" height="56"/>
|
||||
<font id="19" type="2" name="ASC_CHS_60" width="30" height="60"/>
|
||||
<font id="20" type="2" name="ASC_CHS_64" width="32" height="64"/>
|
||||
<font id="21" type="2" name="ASC_CHS_80" width="40" height="80"/>
|
||||
<font id="22" type="2" name="ASC_CHS_96" width="48" height="96"/>
|
||||
<font id="23" type="2" name="ASC_CHS_112" width="56" height="112"/>
|
||||
<font id="24" type="2" name="ASC_CHS_128" width="64" height="128"/>
|
||||
<font id="25" type="2" name="ASC_CHS_144" width="72" height="144"/>
|
||||
<font id="26" type="2" name="ASC_CHS_160" width="80" height="160"/>
|
||||
<font id="27" type="2" name="ASC_CHS_176" width="88" height="176"/>
|
||||
<font id="28" type="2" name="ASC_CHS_192" width="96" height="192"/>
|
||||
<font id="29" type="2" name="ASC_CHS_200" width="100" height="200"/>
|
||||
</fonts>
|
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 3.7 KiB |
|
@ -0,0 +1,37 @@
|
|||
------------------------------------
|
||||
-- 提示
|
||||
-- 如果使用其他Lua编辑工具编辑此文档,请将VisualTFT软件中打开的此文件编辑器视图关闭,
|
||||
-- 因为VisualTFT具有自动保存功能,其他软件修改时不能同步到VisualTFT编辑视图,
|
||||
-- VisualTFT定时保存时,其他软件修改的内容将被恢复。
|
||||
--
|
||||
-- Attention
|
||||
-- If you use other Lua Editor to edit this file, please close the file editor view
|
||||
-- opened in the VisualTFT, Because VisualTFT has an automatic save function,
|
||||
-- other Lua Editor cannot be synchronized to the VisualTFT edit view when it is modified.
|
||||
-- When VisualTFT saves regularly, the content modified by other Lua Editor will be restored.
|
||||
------------------------------------
|
||||
|
||||
--下面列出了常用的回调函数
|
||||
--更多功能请阅读<<LUA脚本API.pdf>>
|
||||
|
||||
|
||||
--初始化函数
|
||||
--function on_init()
|
||||
--end
|
||||
|
||||
--定时回调函数,系统每隔1秒钟自动调用。
|
||||
--function on_systick()
|
||||
--end
|
||||
|
||||
--定时器超时回调函数,当设置的定时器超时时,执行此回调函数,timer_id为对应的定时器ID
|
||||
--function on_timer(timer_id)
|
||||
--end
|
||||
|
||||
--用户通过触摸修改控件后,执行此回调函数。
|
||||
--点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
|
||||
--function on_control_notify(screen,control,value)
|
||||
--end
|
||||
|
||||
--当画面切换时,执行此回调函数,screen为目标画面。
|
||||
--function on_screen_change(screen)
|
||||
--end
|
|
@ -0,0 +1,31 @@
|
|||
//创建画面current_out的命令索引ID
|
||||
#define _SCREEN_CURRENT_OUT 0
|
||||
|
||||
//创建画面monitoring的命令索引ID
|
||||
#define _SCREEN_MONITORING 1
|
||||
|
||||
#define _BTN_CURRENT_OUT_BUTTON1 1
|
||||
|
||||
#define _BTN_CURRENT_OUT_BUTTON2 2
|
||||
|
||||
//画面current_out中按钮Button3按下时的图片
|
||||
#define _IMG_CURRENT_OUT_BUTTON3_DOWN 0
|
||||
|
||||
#define _BTN_CURRENT_OUT_BUTTON3 3
|
||||
|
||||
#define _SLIDER_CURRENT_OUT_SLIDER1 4
|
||||
|
||||
#define _SLIDER_CURRENT_OUT_SLIDER2 5
|
||||
|
||||
#define _TXT_DIS__MONITORING_TEXT_DISPLAY2 5
|
||||
|
||||
#define _TXT_DIS__MONITORING_TEXT_DISPLAY4 6
|
||||
|
||||
#define _TXT_DIS__MONITORING_TEXT_DISPLAY8 7
|
||||
|
||||
#define _GRAPH_MONITORING_GRAPH1 14
|
||||
|
||||
#define _BTN_MONITORING_BUTTON1 1
|
||||
|
||||
#define _BTN_MONITORING_BUTTON2 2
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`1234567890-=[];',./~!@#$%^&*()_+{}:"<>? 年月日时分秒星期一二三四五六日
|
||||
第路输出控制
|
|
@ -0,0 +1 @@
|
|||
<controls count="11"><control type="16" count="5"/><control type="17" count="3"/><control type="19" count="2"/><control type="24" count="1"/></controls>
|
|
@ -0,0 +1,13 @@
|
|||
<Resource>
|
||||
<pages>
|
||||
<page name="current_out" id="0" />
|
||||
<page name="monitoring" id="1" />
|
||||
</pages>
|
||||
<images>
|
||||
<image id="0" url="e:\work\代码-项目\positioner_testing\signal_generator\lcd\signal generator\Images\780.jpg" effect_width="60" effect_height="60" />
|
||||
<image id="1" url="C:\Users\WANGXU~1\AppData\Local\Temp\slider_0_4.png" effect_width="60" effect_height="245" />
|
||||
<image id="2" url="C:\Users\WANGXU~1\AppData\Local\Temp\cursor_0_0.png" effect_width="24" effect_height="24" />
|
||||
<image id="3" url="C:\Users\WANGXU~1\AppData\Local\Temp\slider_0_5.png" effect_width="60" effect_height="245" />
|
||||
</images>
|
||||
<waves />
|
||||
</Resource>
|
|
@ -0,0 +1,2 @@
|
|||
[setting]
|
||||
font0=wqymicrohei.ttf
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<VisualTFT Name="signal generator" OutputDirectory="output\" StartupPage="current_out" StartupAction="" StartupActionLoop="1" DeviceType="28000" DeviceEnableControl="1" DeviceEnableTouchPane="1" DeviceEnableBuzzer="2" DeviceEnableCRC="0" DeviceBaudRate="7" DeviceCoordinateUpdateMode="4" DeviceControlNotify="3" DeviceScreenNotify="1" DeviceScreenRvs="1" DeviceBacklightAutoControl="0" DeviceBacklightTime="10" DeviceBacklightOn="200" DeviceBacklightOff="50" DeviceBacklightNotify="0" DeviceLockConfig="1" DeviceStartupVoice="0" DeviceVoiceVolume="100" DeviceEnableSlidingScreen="0" BeginSlidingScreen="" EndSlidingScreen="" CompatibleScreenRotate="1" AddResourceFloder="1" FastRefreshScreen="0" DelayInitScreen="0" ImageDithering="1" ImageFormat="1" JPEGQuality="95" StartupLogo="" DHCP="0" IPAddress="192.168.1.100" NetMask="255.255.255.0" Gateway="192.168.1.1" DNS="192.168.1.1" NetworkMode="0" ServerAddress="192.168.1.200" ServicePort="5050" NetworkTransfer="0" WifiMode="0" WifiSSID="" WifiPassword="" FlashType="1" PartitionSize0="100" PartitionSize1="10" PartitionSize2="0" Repartition="1" FormatPartition="1" UartDownloadSpeed="0" PKGSetting="0" PKGControl="1" PKGImage="1" PKGFont="1" PKGOther="1" Version="1.0" EnableSlidingRange="0" EnableKeysound="0" BacklightAutoControl="0" BacklightNotify="0" StandbyPage="" ServerPort="5050" WifiSSI="">
|
||||
<Pages><Page RelativePath="current_out.tft"/><Page RelativePath="monitoring.tft"/></Pages>
|
||||
<Images/>
|
||||
<Waves/>
|
||||
</VisualTFT>
|
After Width: | Height: | Size: 4.5 KiB |
|
@ -145,27 +145,10 @@
|
|||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ST-LINKIII-KEIL_SWO</Key>
|
||||
<Name>-U090F00028316303030303032 -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8000 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
<Name>-UB -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8000 -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>1404</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>134235956</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>1</BreakIfRCount>
|
||||
<Filename>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression>\\signal_generator\../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c\1404</Expression>
|
||||
</Bp>
|
||||
</Breakpoint>
|
||||
<Breakpoint/>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
|
@ -187,6 +170,61 @@
|
|||
<WinNumber>1</WinNumber>
|
||||
<ItemText>current_buff</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>4</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>ad7124_analog</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>5</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>lcd_makecurve_data</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>6</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>uart_makecurve_data</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>7</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>test_num</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>8</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>lcd_set_button1_data</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>9</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>uart_lcd_button_data</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>10</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>lcd_set_button1_data</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>11</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>txt_len</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>12</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>txt_value_str,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>13</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>uart_lcd_txt_data</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>14</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>txt_value_str</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
|
@ -450,7 +488,7 @@
|
|||
|
||||
<Group>
|
||||
<GroupName>Drivers/STM32F4xx_HAL_Driver</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
<TargetCommonOption>
|
||||
<Device>STM32F407VGTx</Device>
|
||||
<Vendor>STMicroelectronics</Vendor>
|
||||
<PackID>Keil.STM32F4xx_DFP.2.17.1</PackID>
|
||||
<PackURL>https://www.keil.com/pack/</PackURL>
|
||||
<PackID>Keil.STM32F4xx_DFP.2.12.0</PackID>
|
||||
<PackURL>http://www.keil.com/pack</PackURL>
|
||||
<Cpu>IRAM(0x20000000-0x2001BFFF) IRAM2(0x2001C000-0x2001FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4") TZ</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile></StartupFile>
|
||||
|
@ -138,7 +138,7 @@
|
|||
</Flash1>
|
||||
<bUseTDR>1</bUseTDR>
|
||||
<Flash2>BIN\UL2V8M.DLL</Flash2>
|
||||
<Flash3></Flash3>
|
||||
<Flash3>"" ()</Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
|
|
|
@ -1,24 +1,219 @@
|
|||
/*
|
||||
* @Author: wangxujie wangxujie@wuxismart.com
|
||||
* @Date: 2025-03-10 15:05:20
|
||||
* @LastEditors: wangxujie wangxujie@wuxismart.com
|
||||
* @LastEditTime: 2025-08-01 16:19:35
|
||||
* @FilePath: \signal_generator\User\driver\uart_lcd.c
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
#include "uart_lcd.h"
|
||||
#include "usart.h"
|
||||
#include "lwip.h"
|
||||
|
||||
#include "tim.h"
|
||||
#include "ad7124.h"
|
||||
extern ip4_addr_t ipaddr;
|
||||
uart_lcd_t uart_lcd_state = {0};
|
||||
uint8_t uart_lcd_data[24] = {0xEE, 0xB1, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFF, 0xFC, 0xFF, 0xFF};
|
||||
lcd_makecurve_t lcd_makecurve_data = {0}; // 绘制曲线数据,界面ID 1,控件ID 14
|
||||
|
||||
static void uart_lcd_current_channel1(void);
|
||||
static void uart_lcd_current_channel2(void);
|
||||
lcd_set_button_t lcd_set_button1_data = {0}; // 输出通道文本按钮,界面ID 0,控件ID 1
|
||||
lcd_set_button_t lcd_set_button2_data = {0}; // 第一路AO输出箭头按钮,界面ID 0,控件ID 2
|
||||
lcd_set_button_t lcd_set_button3_data = {0}; // 第二路AO输出箭头按钮,界面ID 0,控件ID 3
|
||||
lcd_set_button_t lcd_set_button4_data = {0}; // SW1状态按钮,界面ID 1,控件ID 1
|
||||
lcd_set_button_t lcd_set_button5_data = {0}; // SW2状态按钮,界面ID 1,控件ID 2
|
||||
lcd_set_txt_t lcd_set_txt1_data = {0}; // 文本设置数据,界面ID 1,控件ID 5
|
||||
lcd_set_txt_t lcd_set_txt2_data = {0}; // 文本设置数据,界面ID 1,控件ID 6
|
||||
lcd_set_txt_t lcd_set_txt3_data = {0}; // 文本设置数据,界面ID 1,控件ID 7
|
||||
lcd_set_slidervalue_t lcd_set_slidervalue1_data = {0}; // 进度条设置数据,界面ID 0,控件ID 4
|
||||
lcd_set_slidervalue_t lcd_set_slidervalue2_data = {0}; // 进度条设置数据,界面ID 0,控件ID 5
|
||||
lcd_switchscreen_t lcd_switchscreen_data = {0}; // 切换画面数据
|
||||
extern float current_buff[2];
|
||||
extern ad7124_analog_t ad7124_analog[AD7124_CHANNEL_EN_MAX];
|
||||
static void uart_lcd_page_init(lcd_switchscreen_t *screen_data)
|
||||
{
|
||||
screen_data->cmd_head = LCD_CMD_HEAD;
|
||||
screen_data->cmd_type = LCD_CMD_TYPE;
|
||||
screen_data->cmd_ctrl_type = LCD_CMD_CTRL_TYPE_SWITCH_SCREEN;
|
||||
screen_data->cmd_screen_id = LCD_SCREEN_ID_CRUUENT; // 默认切换到主界面
|
||||
screen_data->cmd_tail = LCD_CMD_TAIL;
|
||||
}
|
||||
|
||||
static void uart_lcd_button_init(lcd_set_button_t *button_data, uint16_t screen_id, uint16_t ctrl_id)
|
||||
{
|
||||
button_data->cmd_head = LCD_CMD_HEAD;
|
||||
button_data->cmd_type = LCD_CMD_TYPE;
|
||||
button_data->cmd_ctrl_type = LCD_CMD_CTRL_TYPE_SET_BUTTON;
|
||||
button_data->cmd_screen_id = screen_id;
|
||||
button_data->cmd_ctrl_id = ctrl_id;
|
||||
button_data->cmd_button_status = 0; // 默认按钮状态为未按下
|
||||
button_data->cmd_tail = LCD_CMD_TAIL;
|
||||
}
|
||||
|
||||
static void uart_lcd_slidervalue_init(lcd_set_slidervalue_t *slidervalue_data, uint16_t screen_id, uint16_t ctrl_id)
|
||||
|
||||
{
|
||||
slidervalue_data->cmd_head = LCD_CMD_HEAD;
|
||||
slidervalue_data->cmd_type = LCD_CMD_TYPE;
|
||||
slidervalue_data->cmd_ctrl_type = LCD_CMD_CTRL_TYPE_SET_SLIDERVALUE;
|
||||
slidervalue_data->cmd_screen_id = screen_id;
|
||||
slidervalue_data->cmd_ctrl_id = ctrl_id;
|
||||
slidervalue_data->cmd_slidervalue = 0; // 默认滑块数值为0
|
||||
slidervalue_data->cmd_tail = LCD_CMD_TAIL;
|
||||
}
|
||||
|
||||
static void uart_lcd_markcurve_init(lcd_makecurve_t *curve_data, uint16_t screen_id, uint16_t ctrl_id)
|
||||
{
|
||||
curve_data->cmd_head = LCD_CMD_HEAD;
|
||||
curve_data->cmd_type = LCD_CMD_TYPE;
|
||||
curve_data->cmd_ctrl_type = LCD_CMD_CTRL_TYPE_MAKE_CURVE;
|
||||
curve_data->cmd_screen_id = screen_id;
|
||||
curve_data->cmd_ctrl_id = ctrl_id;
|
||||
curve_data->cmd_curve_channel = 0; // 曲线通道
|
||||
curve_data->cmd_data_len = 1; // 数据长度
|
||||
memset(curve_data->cmd_data, 0, sizeof(curve_data->cmd_data)); // 清空数据内容
|
||||
curve_data->cmd_tail = LCD_CMD_TAIL;
|
||||
}
|
||||
|
||||
static void uart_lcd_txt_init(lcd_set_txt_t *txt_data, uint16_t screen_id, uint16_t ctrl_id)
|
||||
{
|
||||
txt_data->cmd_head = LCD_CMD_HEAD;
|
||||
txt_data->cmd_type = LCD_CMD_TYPE;
|
||||
txt_data->cmd_ctrl_type = LCD_CMD_CTRL_TYPE_SET_TXT;
|
||||
txt_data->cmd_screen_id = screen_id;
|
||||
txt_data->cmd_ctrl_id = ctrl_id;
|
||||
txt_data->cmd_txt_data = 0.0f; // 默认文本内容为0.0
|
||||
txt_data->cmd_tail = LCD_CMD_TAIL;
|
||||
}
|
||||
/**
|
||||
* @brief 设置LCD按钮状态
|
||||
*
|
||||
* 该函数用于设置LCD上的按钮状态。
|
||||
*
|
||||
* @param button_data 按钮数据指针,指向包含按钮设置信息的结构体
|
||||
*/
|
||||
static void uart_lcd_set_button_status(lcd_set_button_t *button_data, uint8_t status)
|
||||
{
|
||||
if (button_data == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
while (uart_lcd_state.lcd_flag != 0)
|
||||
{
|
||||
}
|
||||
button_data->cmd_button_status = status; // 设置按钮状态
|
||||
static uint8_t uart_lcd_button_data[sizeof(lcd_set_button_t)] = {0};
|
||||
uart_lcd_button_data[0] = button_data->cmd_head; // 帧头
|
||||
uart_lcd_button_data[1] = button_data->cmd_type; // 命令类型
|
||||
uart_lcd_button_data[2] = button_data->cmd_ctrl_type; // 控制类型
|
||||
uart_lcd_button_data[3] = (button_data->cmd_screen_id >> 8) & 0xFF; // 画面ID高位
|
||||
uart_lcd_button_data[4] = button_data->cmd_screen_id & 0xFF; // 画面ID低位
|
||||
uart_lcd_button_data[5] = (button_data->cmd_ctrl_id >> 8) & 0xFF; // 控件ID高位
|
||||
uart_lcd_button_data[6] = button_data->cmd_ctrl_id & 0xFF; // 控件ID低位
|
||||
uart_lcd_button_data[7] = button_data->cmd_button_status; // 按钮状态
|
||||
uart_lcd_button_data[8] = (button_data->cmd_tail >> 24) & 0xFF; // 帧尾
|
||||
uart_lcd_button_data[9] = (button_data->cmd_tail >> 16) & 0xFF; // 帧尾
|
||||
uart_lcd_button_data[10] = (button_data->cmd_tail >> 8) & 0xFF; // 帧尾
|
||||
uart_lcd_button_data[11] = button_data->cmd_tail & 0xFF; // 帧尾
|
||||
dma_usart_send(&huart4, uart_lcd_button_data, sizeof(lcd_set_button_t));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 设置LCD屏幕上的滑块数值
|
||||
*
|
||||
* 该函数通过UART接口向LCD屏幕发送命令,以设置特定滑块控件的数值。
|
||||
*
|
||||
* @param slidervalue_data 指向包含滑块设置数据的指针
|
||||
* @param value 要设置的滑块数值
|
||||
*/
|
||||
static void uart_lcd_set_slidervalue(lcd_set_slidervalue_t *slidervalue_data, uint32_t value)
|
||||
{
|
||||
if (slidervalue_data == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
while (uart_lcd_state.lcd_flag != 0)
|
||||
{
|
||||
}
|
||||
slidervalue_data->cmd_slidervalue = value; // 设置滑块数值
|
||||
static uint8_t uart_lcd_slidervalue_data[sizeof(lcd_set_slidervalue_t)] = {0};
|
||||
uart_lcd_slidervalue_data[0] = slidervalue_data->cmd_head; // 帧头
|
||||
uart_lcd_slidervalue_data[1] = slidervalue_data->cmd_type; // 命令类型
|
||||
uart_lcd_slidervalue_data[2] = slidervalue_data->cmd_ctrl_type; // 控制类型
|
||||
uart_lcd_slidervalue_data[3] = (slidervalue_data->cmd_screen_id >> 8) & 0xFF; // 画面ID高位
|
||||
uart_lcd_slidervalue_data[4] = slidervalue_data->cmd_screen_id & 0xFF; // 画面ID低位
|
||||
uart_lcd_slidervalue_data[5] = (slidervalue_data->cmd_ctrl_id >> 8) & 0xFF; // 控件ID高位
|
||||
uart_lcd_slidervalue_data[6] = slidervalue_data->cmd_ctrl_id & 0xFF; // 控件ID低位
|
||||
uart_lcd_slidervalue_data[7] = (slidervalue_data->cmd_slidervalue >> 24) & 0xFF; // 滑块数值高位
|
||||
uart_lcd_slidervalue_data[8] = (slidervalue_data->cmd_slidervalue >> 16) & 0xFF; // 滑块数值高位
|
||||
uart_lcd_slidervalue_data[9] = (slidervalue_data->cmd_slidervalue >> 8) & 0xFF; // 滑块数值低位
|
||||
uart_lcd_slidervalue_data[10] = slidervalue_data->cmd_slidervalue & 0xFF; // 滑块数值低位
|
||||
uart_lcd_slidervalue_data[11] = (slidervalue_data->cmd_tail >> 24) & 0xFF; // 帧尾
|
||||
uart_lcd_slidervalue_data[12] = (slidervalue_data->cmd_tail >> 16) & 0xFF; // 帧尾
|
||||
uart_lcd_slidervalue_data[13] = (slidervalue_data->cmd_tail >> 8) & 0xFF; // 帧尾
|
||||
uart_lcd_slidervalue_data[14] = slidervalue_data->cmd_tail & 0xFF; // 帧尾
|
||||
dma_usart_send(&huart4, uart_lcd_slidervalue_data, sizeof(lcd_set_slidervalue_t));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 设置LCD屏幕上的文本内容
|
||||
*
|
||||
* 该函数用于通过UART接口向LCD屏幕发送文本内容。
|
||||
*
|
||||
* @param txt_data 指向lcd_set_txt_t结构体的指针,用于存储文本数据
|
||||
* @param value 浮点数类型的文本内容
|
||||
*/
|
||||
static void uart_lcd_set_txt(lcd_set_txt_t *txt_data, float value)
|
||||
{
|
||||
if (txt_data == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
while (uart_lcd_state.lcd_flag != 0)
|
||||
{
|
||||
}
|
||||
txt_data->cmd_txt_data = value; // 设置文本内容
|
||||
static uint8_t uart_lcd_txt_data[sizeof(lcd_set_txt_t)] = {0};
|
||||
uart_lcd_txt_data[0] = txt_data->cmd_head; // 帧头
|
||||
uart_lcd_txt_data[1] = txt_data->cmd_type; // 命令类型
|
||||
uart_lcd_txt_data[2] = txt_data->cmd_ctrl_type; // 控件类型
|
||||
uart_lcd_txt_data[3] = (txt_data->cmd_screen_id >> 8) & 0xFF; // 画面ID高位
|
||||
uart_lcd_txt_data[4] = txt_data->cmd_screen_id & 0xFF; // 画面ID低位
|
||||
uart_lcd_txt_data[5] = (txt_data->cmd_ctrl_id >> 8) & 0xFF; // 控件ID高位
|
||||
uart_lcd_txt_data[6] = txt_data->cmd_ctrl_id & 0xFF; // 控件ID低位
|
||||
// 将浮点数转换为字符串形式
|
||||
char txt_value_str[16] = {0};
|
||||
snprintf(txt_value_str, sizeof(txt_value_str), "%.2f", txt_data->cmd_txt_data);
|
||||
// 将字符串内容复制到数据包中
|
||||
size_t txt_len = strlen(txt_value_str);
|
||||
for (size_t i = 0; i < txt_len; ++i)
|
||||
{
|
||||
uart_lcd_txt_data[7 + i] = txt_value_str[i]; // 文本内容
|
||||
}
|
||||
uart_lcd_txt_data[7 + txt_len] = 0xFF; // 帧尾
|
||||
uart_lcd_txt_data[8 + txt_len] = 0xFC; // 帧尾
|
||||
uart_lcd_txt_data[9 + txt_len] = 0xFF; // 帧尾
|
||||
uart_lcd_txt_data[10 + txt_len] = 0xFF; // 帧尾
|
||||
dma_usart_send(&huart4, uart_lcd_txt_data, 11 + txt_len);
|
||||
}
|
||||
static void uart_lcd_current_channel1(void)
|
||||
{
|
||||
// uint8_t uart_lcd_data[24] = {0xEE, 0xB1, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFF, 0xFC, 0xFF, 0xFF};
|
||||
dma_usart_send(&huart4, uart_lcd_data, ARRAY_LEN(uart_lcd_data));
|
||||
// 输出文本按钮状态0,第一路AO状态1,第二路AO状态0
|
||||
// lcd_set_button1_data.cmd_button_status = 0; // 第一路AO输出文本按钮状态为未按下
|
||||
uart_lcd_set_button_status(&lcd_set_button1_data, 0);
|
||||
// lcd_set_button2_data.cmd_button_status = 1; // 第一路AO输出箭头按钮状态为按下
|
||||
uart_lcd_set_button_status(&lcd_set_button2_data, 1);
|
||||
// lcd_set_button3_data.cmd_button_status = 0; // 第二路AO输出箭头按钮状态为未按下
|
||||
uart_lcd_set_button_status(&lcd_set_button3_data, 0);
|
||||
}
|
||||
uint8_t uart_lcd_data2[24] = {0xEE, 0xB1, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x01, 0xFF, 0xFC, 0xFF, 0xFF};
|
||||
|
||||
static void uart_lcd_current_channel2(void)
|
||||
{
|
||||
dma_usart_send(&huart4, uart_lcd_data2, ARRAY_LEN(uart_lcd_data2));
|
||||
// 输出文本按钮状态1,第一路AO状态0,第二路AO状态1
|
||||
// lcd_set_button1_data.cmd_button_status = 1;
|
||||
uart_lcd_set_button_status(&lcd_set_button1_data, 1);
|
||||
// lcd_set_button2_data.cmd_button_status = 0;
|
||||
uart_lcd_set_button_status(&lcd_set_button2_data, 0);
|
||||
// lcd_set_button3_data.cmd_button_status = 1;
|
||||
uart_lcd_set_button_status(&lcd_set_button3_data, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -50,38 +245,60 @@ void uart_lcd_draw_ipaddr(void)
|
|||
|
||||
void uart_lcd_init(void)
|
||||
{
|
||||
uart_lcd_state.page_num = 0;
|
||||
uart_lcd_state.key_state[0] = 0;
|
||||
uart_lcd_state.key_state[1] = 1;
|
||||
uart_lcd_state.key_state[2] = 0;
|
||||
// 初始化屏幕
|
||||
uart_lcd_state.page_num = LCD_SCREEN_ID_CRUUENT;
|
||||
uart_lcd_page_init(&lcd_switchscreen_data); // 初始化页面数据
|
||||
uart_lcd_page_switch(uart_lcd_state.page_num); // 切换到第一个页面
|
||||
|
||||
// 初始化按钮
|
||||
uart_lcd_button_init(&lcd_set_button1_data, LCD_SCREEN_ID_CRUUENT, LCD_CTRL_ID_BUTTON1);
|
||||
uart_lcd_button_init(&lcd_set_button2_data, LCD_SCREEN_ID_CRUUENT, LCD_CTRL_ID_BUTTON2);
|
||||
uart_lcd_button_init(&lcd_set_button3_data, LCD_SCREEN_ID_CRUUENT, LCD_CTRL_ID_BUTTON3);
|
||||
uart_lcd_button_init(&lcd_set_button4_data, LCD_SCREEN_ID_CURVE, LCD_CTRL_ID_BUTTON4);
|
||||
uart_lcd_button_init(&lcd_set_button5_data, LCD_SCREEN_ID_CURVE, LCD_CTRL_ID_BUTTON5);
|
||||
uart_lcd_state.current_out_channel = 0;
|
||||
uart_lcd_current_out_channel_switch(uart_lcd_state.current_out_channel);
|
||||
uart_lcd_set_button_status(&lcd_set_button4_data, 0); // 设置按钮状态
|
||||
uart_lcd_set_button_status(&lcd_set_button5_data, 0); // 设置按钮状态
|
||||
|
||||
// 初始化滑块
|
||||
uart_lcd_slidervalue_init(&lcd_set_slidervalue1_data, LCD_SCREEN_ID_CRUUENT, LCD_CTRL_ID_SLIDERVALUE1); // 第一路滑块
|
||||
uart_lcd_slidervalue_init(&lcd_set_slidervalue2_data, LCD_SCREEN_ID_CRUUENT, LCD_CTRL_ID_SLIDERVALUE2); // 第二路滑块
|
||||
uart_lcd_state.current_value[0] = 0;
|
||||
uart_lcd_state.current_value[1] = 0;
|
||||
uart_lcd_channel_switch(uart_lcd_state.key_state[0]);
|
||||
HAL_Delay(10);
|
||||
uart_lcd_current_out(0);
|
||||
HAL_Delay(10);
|
||||
uart_lcd_current_out(1);
|
||||
uart_lcd_set_slidervalue(&lcd_set_slidervalue1_data, uart_lcd_state.current_value[0]); // 设置滑块值
|
||||
uart_lcd_set_slidervalue(&lcd_set_slidervalue2_data, uart_lcd_state.current_value[1]); // 设置滑块值
|
||||
|
||||
// 初始化曲线
|
||||
uart_lcd_markcurve_init(&lcd_makecurve_data, LCD_SCREEN_ID_CURVE, LCD_CTRL_ID_MAKE_CURVE); // 曲线数据初始化
|
||||
|
||||
// 初始化文本
|
||||
uart_lcd_txt_init(&lcd_set_txt1_data, LCD_SCREEN_ID_CURVE, LCD_CTRL_ID_TXT1);
|
||||
uart_lcd_txt_init(&lcd_set_txt2_data, LCD_SCREEN_ID_CURVE, LCD_CTRL_ID_TXT2);
|
||||
uart_lcd_txt_init(&lcd_set_txt3_data, LCD_SCREEN_ID_CURVE, LCD_CTRL_ID_TXT3);
|
||||
uart_lcd_set_txt(&lcd_set_txt1_data, 0.0f); // 设置文本内容
|
||||
uart_lcd_set_txt(&lcd_set_txt2_data, 0.0f); // 设置文本内容
|
||||
uart_lcd_set_txt(&lcd_set_txt3_data, 0.0f); // 设置文本内容
|
||||
}
|
||||
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 (channel == 0)
|
||||
switch (channel)
|
||||
{
|
||||
lcd_channel[6] = 0x04;
|
||||
lcd_channel[10] = uart_lcd_state.current_value[0];
|
||||
dma_usart_send(&huart4, lcd_channel, ARRAY_LEN(lcd_channel));
|
||||
}
|
||||
else if (channel == 1)
|
||||
{
|
||||
lcd_channel[6] = 0x05;
|
||||
lcd_channel[10] = uart_lcd_state.current_value[1];
|
||||
dma_usart_send(&huart4, lcd_channel, ARRAY_LEN(lcd_channel));
|
||||
case 0:
|
||||
uart_lcd_set_slidervalue(&lcd_set_slidervalue1_data, uart_lcd_state.current_value[0]); // 设置滑块值
|
||||
break;
|
||||
case 1:
|
||||
uart_lcd_set_slidervalue(&lcd_set_slidervalue2_data, uart_lcd_state.current_value[1]); // 设置滑块值
|
||||
break;
|
||||
default:
|
||||
uart_lcd_set_slidervalue(&lcd_set_slidervalue1_data, uart_lcd_state.current_value[0]); // 设置滑块值
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void uart_lcd_channel_switch(uint8_t channel)
|
||||
void uart_lcd_current_out_channel_switch(uint8_t channel)
|
||||
{
|
||||
switch (channel)
|
||||
{
|
||||
|
@ -96,3 +313,201 @@ void uart_lcd_channel_switch(uint8_t channel)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void uart_lcd_page_switch(uint8_t page)
|
||||
{
|
||||
while (uart_lcd_state.lcd_flag != 0)
|
||||
{
|
||||
}
|
||||
static uint8_t uart_switchscreen_data[sizeof(lcd_switchscreen_t)] = {0};
|
||||
lcd_switchscreen_data.cmd_screen_id = (uint16_t)page; // 更新当前页面状态
|
||||
uart_switchscreen_data[0] = lcd_switchscreen_data.cmd_head; // 帧头
|
||||
uart_switchscreen_data[1] = lcd_switchscreen_data.cmd_type; // 命令类型
|
||||
uart_switchscreen_data[2] = lcd_switchscreen_data.cmd_ctrl_type; // 控制类型
|
||||
uart_switchscreen_data[3] = (lcd_switchscreen_data.cmd_screen_id >> 8) & 0xFF; // 画面ID高位地址
|
||||
uart_switchscreen_data[4] = lcd_switchscreen_data.cmd_screen_id & 0xFF; // 画面ID低位地址
|
||||
uart_switchscreen_data[5] = (lcd_switchscreen_data.cmd_tail >> 24) & 0xFF; // 帧尾
|
||||
uart_switchscreen_data[6] = (lcd_switchscreen_data.cmd_tail >> 16) & 0xFF; // 帧尾
|
||||
uart_switchscreen_data[7] = (lcd_switchscreen_data.cmd_tail >> 8) & 0xFF; // 帧尾
|
||||
uart_switchscreen_data[8] = lcd_switchscreen_data.cmd_tail & 0xFF; // 帧尾
|
||||
dma_usart_send(&huart4, uart_switchscreen_data, sizeof(lcd_switchscreen_t)); // 发送切换画面数据
|
||||
}
|
||||
void uart_lcd_ecll_control_current_out(void)
|
||||
{
|
||||
if (ec11_data.confirm_key_flag == 0)
|
||||
{
|
||||
}
|
||||
else if (ec11_data.confirm_key_flag == 1) // Confirm button - confirms current output
|
||||
{
|
||||
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) // Switch the current output channel
|
||||
{
|
||||
ec11_data.confirm_key_flag_last++;
|
||||
if (ec11_data.confirm_key_flag_last > 2)
|
||||
{
|
||||
if (uart_lcd_state.current_out_channel == 1)
|
||||
{
|
||||
uart_lcd_state.current_out_channel = 0;
|
||||
}
|
||||
else if (uart_lcd_state.current_out_channel == 0)
|
||||
{
|
||||
uart_lcd_state.current_out_channel = 1;
|
||||
}
|
||||
ec11_data.confirm_key_flag_last = 0;
|
||||
ec11_data.confirm_key_flag = 0;
|
||||
uart_lcd_current_out_channel_switch(uart_lcd_state.current_out_channel);
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
void uart_lcd_ec11_control_current(void)
|
||||
{
|
||||
if (uart_lcd_state.page_num == 0) // 当前页面为电流调节页面时,才对EC11编码器进行计数处理
|
||||
{
|
||||
ec11_data.direction = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim1);
|
||||
ec11_data.encode_num = (short)__HAL_TIM_GET_COUNTER(&htim1);
|
||||
|
||||
if ((ec11_data.direction == 0) && (ec11_data.encode_num > ec11_data.encode_num_last))
|
||||
{
|
||||
if (uart_lcd_state.current_out_channel == 0)
|
||||
{
|
||||
uart_lcd_state.current_value[0] += 1;
|
||||
if (uart_lcd_state.current_value[0] > 20)
|
||||
{
|
||||
uart_lcd_state.current_value[0] = 20;
|
||||
}
|
||||
}
|
||||
else if (uart_lcd_state.current_out_channel == 1)
|
||||
{
|
||||
uart_lcd_state.current_value[1] += 1;
|
||||
if (uart_lcd_state.current_value[1] > 20)
|
||||
{
|
||||
uart_lcd_state.current_value[1] = 20;
|
||||
}
|
||||
}
|
||||
uart_lcd_current_out(uart_lcd_state.current_out_channel);
|
||||
}
|
||||
if ((ec11_data.direction == 1) && (ec11_data.encode_num < ec11_data.encode_num_last))
|
||||
{
|
||||
if (uart_lcd_state.current_out_channel == 0)
|
||||
{
|
||||
if (uart_lcd_state.current_value[0] < 2)
|
||||
{
|
||||
uart_lcd_state.current_value[0] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
uart_lcd_state.current_value[0] -= 1;
|
||||
}
|
||||
}
|
||||
else if (uart_lcd_state.current_out_channel == 1)
|
||||
{
|
||||
if (uart_lcd_state.current_value[1] < 2)
|
||||
{
|
||||
uart_lcd_state.current_value[1] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
uart_lcd_state.current_value[1] -= 1;
|
||||
}
|
||||
}
|
||||
uart_lcd_current_out(uart_lcd_state.current_out_channel);
|
||||
}
|
||||
|
||||
ec11_data.encode_num_last = ec11_data.encode_num;
|
||||
}
|
||||
}
|
||||
|
||||
void uart_lcd_makecurvet(lcd_makecurve_t *makecurve_data)
|
||||
{
|
||||
static uint8_t uart_makecurve_data[256] = {0}; // 发送数据缓冲区,最大长度为256字节
|
||||
uart_makecurve_data[0] = makecurve_data->cmd_head; // 帧头
|
||||
uart_makecurve_data[1] = makecurve_data->cmd_type; // 命令类型
|
||||
uart_makecurve_data[2] = makecurve_data->cmd_ctrl_type; // 控制类型
|
||||
uart_makecurve_data[3] = (makecurve_data->cmd_screen_id >> 8) & 0xFF; // 画面ID高位地址
|
||||
uart_makecurve_data[4] = makecurve_data->cmd_screen_id & 0xFF; // 画面ID低位地址
|
||||
uart_makecurve_data[5] = (makecurve_data->cmd_ctrl_id >> 8) & 0xFF; // 控件ID高位地址
|
||||
uart_makecurve_data[6] = makecurve_data->cmd_ctrl_id & 0xFF; // 控件ID低位地址
|
||||
uart_makecurve_data[7] = makecurve_data->cmd_curve_channel; // 曲线通道
|
||||
uart_makecurve_data[8] = (makecurve_data->cmd_data_len >> 8) & 0xFF; // 数据长度高位地址
|
||||
uart_makecurve_data[9] = makecurve_data->cmd_data_len & 0xFF; // 数据长度低位地址
|
||||
MEMCPY(uart_makecurve_data + 10, makecurve_data->cmd_data, makecurve_data->cmd_data_len); // 数据内容
|
||||
uart_makecurve_data[10 + makecurve_data->cmd_data_len] = (makecurve_data->cmd_tail >> 24) & 0xFF; // 帧尾
|
||||
uart_makecurve_data[11 + makecurve_data->cmd_data_len] = (makecurve_data->cmd_tail >> 16) & 0xFF; // 帧尾
|
||||
uart_makecurve_data[12 + makecurve_data->cmd_data_len] = (makecurve_data->cmd_tail >> 8) & 0xFF; // 帧尾
|
||||
uart_makecurve_data[13 + makecurve_data->cmd_data_len] = makecurve_data->cmd_tail & 0xFF; // 帧尾
|
||||
|
||||
dma_usart_send(&huart4, uart_makecurve_data, makecurve_data->cmd_data_len + 14);
|
||||
}
|
||||
|
||||
void uart_lcd_refresh_screen(void)
|
||||
{
|
||||
char usb_pv_str[128] = {0};
|
||||
// 刷新屏幕数据
|
||||
uart_lcd_set_txt(&lcd_set_txt1_data, ad7124_analog[P1_DI1_ADC].current); // 刷新文本内容
|
||||
if (ad7124_analog[P1_DI1_ADC].current > 2.1f)
|
||||
{
|
||||
uart_lcd_set_button_status(&lcd_set_button4_data, 0); // 设置按钮状态
|
||||
}
|
||||
else if (ad7124_analog[P1_DI1_ADC].current < 1.2f)
|
||||
{
|
||||
uart_lcd_set_button_status(&lcd_set_button4_data, 1); // 设置按钮状态
|
||||
}
|
||||
uart_lcd_set_txt(&lcd_set_txt2_data, ad7124_analog[P1_DI2_ADC].current); // 刷新文本内容
|
||||
if (ad7124_analog[P1_DI2_ADC].current > 2.1f)
|
||||
{
|
||||
uart_lcd_set_button_status(&lcd_set_button5_data, 0); // 设置按钮状态
|
||||
}
|
||||
else if (ad7124_analog[P1_DI2_ADC].current < 1.2f)
|
||||
{
|
||||
uart_lcd_set_button_status(&lcd_set_button5_data, 1); // 设置按钮状态
|
||||
}
|
||||
|
||||
lcd_makecurve_data.cmd_data[0] = (ad7124_analog[P1_AI_ADC].current - 4) * 100 / 16; // 填充数据内容
|
||||
uart_lcd_makecurvet(&lcd_makecurve_data); // 调用函数发送数据
|
||||
uart_lcd_set_txt(&lcd_set_txt3_data, ad7124_analog[P1_AI_ADC].current); // 设置文本内容
|
||||
|
||||
snprintf(usb_pv_str, sizeof(usb_pv_str), "Current = %.2fmA\t P.V = %.2f\t", (float)(ad7124_analog[P1_AI_ADC].current), (float)(ad7124_analog[P1_AI_ADC].current - 4) * 100 / 16);
|
||||
size_t txt_len = strlen(usb_pv_str);
|
||||
for (size_t i = 0; i < txt_len; ++i)
|
||||
{
|
||||
usb_uart1.tx_data[i] = usb_pv_str[i]; // 文本内容
|
||||
}
|
||||
dma_usart_send(&huart1, usb_uart1.tx_data, txt_len); // 发送USB数据
|
||||
}
|
||||
|
||||
void uart_lcd_makecurve_test(void)
|
||||
{
|
||||
lcd_makecurve_data.cmd_data_len = 1; // 假设数据长度为1
|
||||
// if (uart_lcd_state.page_num == 1)
|
||||
{
|
||||
|
||||
lcd_makecurve_data.cmd_data[0] = (current_buff[1] - 4) * 100 / 16; // 填充数据内容
|
||||
|
||||
uart_lcd_makecurvet(&lcd_makecurve_data); // 调用函数发送数据
|
||||
uart_lcd_set_txt(&lcd_set_txt3_data, current_buff[1]); // 设置文本内容
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,133 @@
|
|||
/*
|
||||
* @Author: wangxujie wangxujie@wuxismart.com
|
||||
* @Date: 2025-03-10 15:05:20
|
||||
* @LastEditors: wangxujie wangxujie@wuxismart.com
|
||||
* @LastEditTime: 2025-08-01 10:36:24
|
||||
* @FilePath: \signal_generator\User\driver\uart_lcd.h
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
#ifndef __UART_LCD_H__
|
||||
#define __UART_LCD_H__
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#define LCD_CMD_HEAD 0xEE // LCD指令帧头
|
||||
#define LCD_CMD_TYPE 0xB1 // LCD指令类型,对控件操作基本都为0xB1,具体查询手册
|
||||
#define LCD_CMD_CTRL_TYPE_SWITCH_SCREEN 0x00 // 切换屏幕命令
|
||||
#define LCD_CMD_CTRL_TYPE_SET_BUTTON 0x10 // 设置按钮状态命令
|
||||
#define LCD_CMD_CTRL_TYPE_SET_TXT 0x10 // 设置文本命令
|
||||
#define LCD_CMD_CTRL_TYPE_SET_SLIDERVALUE 0x10 // 设置滑块值命令
|
||||
#define LCD_CMD_CTRL_TYPE_MAKE_CURVE 0x32 // 绘制曲线命令
|
||||
#define LCD_CMD_TAIL 0xFFFCFFFF
|
||||
|
||||
#define LCD_SCREEN_ID_CRUUENT 0x00 // 电流输出界面ID
|
||||
#define LCD_SCREEN_ID_CURVE 0x01 // 绘制曲线界面ID
|
||||
|
||||
#define LCD_CTRL_ID_BUTTON1 0x01 // 按钮控件ID
|
||||
#define LCD_CTRL_ID_BUTTON2 0x02 // 按钮控件ID
|
||||
#define LCD_CTRL_ID_BUTTON3 0x03 // 按钮控件ID
|
||||
#define LCD_CTRL_ID_BUTTON4 0x01 // 按钮控件ID
|
||||
#define LCD_CTRL_ID_BUTTON5 0x02 // 按钮控件ID
|
||||
|
||||
#define LCD_CTRL_ID_TXT1 0x05 // 文本控件ID
|
||||
#define LCD_CTRL_ID_TXT2 0x06 // 文本控件ID
|
||||
#define LCD_CTRL_ID_TXT3 0x07 // 文本控件ID
|
||||
|
||||
#define LCD_CTRL_ID_SLIDERVALUE1 0x04 // 滑块控件ID
|
||||
#define LCD_CTRL_ID_SLIDERVALUE2 0x05 // 滑块控件ID
|
||||
|
||||
#define LCD_CTRL_ID_MAKE_CURVE 0x0E // 曲线控件ID
|
||||
|
||||
#define LCD_CMD_SET_BUTTON_LEN 0x0C // 设置按钮状态命令长度
|
||||
|
||||
#pragma pack(1)
|
||||
typedef struct
|
||||
{
|
||||
uint8_t cmd_head; // 帧头
|
||||
uint8_t cmd_type; // 命令类型
|
||||
uint8_t cmd_ctrl_type; // 控制类型
|
||||
uint16_t cmd_screen_id; // 画面ID
|
||||
uint16_t cmd_ctrl_id; // 控件ID
|
||||
|
||||
uint8_t cmd_curve_channel; // 曲线通道
|
||||
uint16_t cmd_data_len; // 数据长度
|
||||
uint8_t cmd_data[256]; // 数据内容
|
||||
|
||||
uint32_t cmd_tail; // 帧尾
|
||||
} lcd_makecurve_t; // lcd绘制曲线结构体
|
||||
#pragma pack()
|
||||
extern lcd_makecurve_t lcd_makecurve_data;
|
||||
#pragma pack(1)
|
||||
typedef struct
|
||||
{
|
||||
uint8_t cmd_head; // 帧头
|
||||
uint8_t cmd_type; // 命令类型
|
||||
uint8_t cmd_ctrl_type; // 控制类型
|
||||
uint16_t cmd_screen_id; // 画面ID
|
||||
uint16_t cmd_ctrl_id; // 控件ID
|
||||
|
||||
uint8_t cmd_button_status; // 按钮状态
|
||||
|
||||
uint32_t cmd_tail; // 帧尾
|
||||
} lcd_set_button_t; // lcd设置按钮状态结构体
|
||||
#pragma pack()
|
||||
extern lcd_set_button_t lcd_set_button1_data;
|
||||
extern lcd_set_button_t lcd_set_button2_data;
|
||||
extern lcd_set_button_t lcd_set_button3_data;
|
||||
extern lcd_set_button_t lcd_set_button4_data;
|
||||
extern lcd_set_button_t lcd_set_button5_data;
|
||||
|
||||
#pragma pack(1)
|
||||
typedef struct
|
||||
{
|
||||
uint8_t cmd_head; // 帧头
|
||||
uint8_t cmd_type; // 命令类型
|
||||
uint8_t cmd_ctrl_type; // 控制类型
|
||||
uint16_t cmd_screen_id; // 画面ID
|
||||
uint16_t cmd_ctrl_id; // 控件ID
|
||||
|
||||
float cmd_txt_data; // 文本内容,应该为字符串形式且长度不定,当前项目中只需要上传浮点,需要浮点转ASCII码
|
||||
|
||||
uint32_t cmd_tail; // 帧尾
|
||||
} lcd_set_txt_t; // lcd设置按钮状态结构体
|
||||
#pragma pack()
|
||||
extern lcd_set_txt_t lcd_set_txt1_data;
|
||||
extern lcd_set_txt_t lcd_set_txt2_data;
|
||||
extern lcd_set_txt_t lcd_set_txt3_data;
|
||||
|
||||
#pragma pack(1)
|
||||
typedef struct
|
||||
{
|
||||
uint8_t cmd_head; // 帧头
|
||||
uint8_t cmd_type; // 命令类型
|
||||
uint8_t cmd_ctrl_type; // 控制类型
|
||||
uint16_t cmd_screen_id; // 画面ID
|
||||
uint16_t cmd_ctrl_id; // 控件ID
|
||||
|
||||
uint32_t cmd_slidervalue; // 滑块数值
|
||||
|
||||
uint32_t cmd_tail; // 帧尾
|
||||
} lcd_set_slidervalue_t; // lcd设置滑块结构体
|
||||
#pragma pack(1)
|
||||
extern lcd_set_slidervalue_t lcd_set_slidervalue1_data;
|
||||
extern lcd_set_slidervalue_t lcd_set_slidervalue2_data;
|
||||
|
||||
#pragma pack(1)
|
||||
typedef struct
|
||||
{
|
||||
uint8_t cmd_head; // 帧头
|
||||
uint8_t cmd_type; // 命令类型
|
||||
uint8_t cmd_ctrl_type; // 控制类型
|
||||
uint16_t cmd_screen_id; // 画面ID
|
||||
uint32_t cmd_tail; // 帧尾
|
||||
} lcd_switchscreen_t; // 切换画面
|
||||
#pragma pack()
|
||||
extern lcd_switchscreen_t lcd_switchscreen_data;
|
||||
typedef struct
|
||||
{
|
||||
uint8_t page_num;
|
||||
uint8_t key_state[3];
|
||||
uint8_t current_value[2];
|
||||
uint8_t current_out_channel; // 当前输出通道
|
||||
uint32_t current_value[2];
|
||||
uint8_t lcd_flag;
|
||||
} uart_lcd_t;
|
||||
extern uart_lcd_t uart_lcd_state;
|
||||
|
@ -24,5 +144,11 @@ extern ec11_t ec11_data;
|
|||
void uart_lcd_draw_ipaddr(void);
|
||||
void uart_lcd_init(void);
|
||||
void uart_lcd_current_out(uint8_t channel);
|
||||
void uart_lcd_channel_switch(uint8_t channel);
|
||||
void uart_lcd_current_out_channel_switch(uint8_t channel);
|
||||
void uart_lcd_page_switch(uint8_t page);
|
||||
void uart_lcd_ecll_control_current_out(void);
|
||||
void uart_lcd_ec11_control_current(void);
|
||||
void uart_lcd_makecurvet(lcd_makecurve_t *makecurve_data);
|
||||
void uart_lcd_refresh_screen(void);
|
||||
void uart_lcd_makecurve_test(void);
|
||||
#endif
|
||||
|
|