添加任务挂起,解决dac输出延迟问题

This commit is contained in:
王绪洁 2025-02-20 18:46:40 +08:00
parent f5efcca03a
commit f024bf625f
6 changed files with 3704 additions and 41 deletions

View File

@ -206,9 +206,10 @@ void start_dac_task(void const *argument)
/* Infinite loop */
for (;;)
{
osThreadSuspend(adc_taskHandle);
dac161s997_output(DAC161S997_1, current_buff[0]);
dac161s997_output(DAC161S997_2, current_buff[1]);
osThreadResume(adc_taskHandle);
vTaskDelay(100);
}
/* USER CODE END start_dac_task */
@ -228,13 +229,12 @@ void start_adc_task(void const *argument)
/* Infinite loop */
for (;;)
{
// uint8_t ch = 0;
// for (ch = STOP_NC_ADC; ch < AD7124_CHANNEL_EN_MAX; ch++)
// {
ad7124_get_analog(STOP_NC_ADC);
ad7124_get_analog(AI_IN2_ADC);
ad7124_get_analog(P2_AI_ADC);
// }
osThreadSuspend(dac_taskHandle);
uint8_t ch = 0;
for (ch = STOP_NC_ADC; ch < AD7124_CHANNEL_EN_MAX; ch++)
{
ad7124_get_analog(ch);
}
HAL_GPIO_TogglePin(LED2_G_GPIO_Port, LED2_G_Pin);
if (huart5.RxState == HAL_UART_STATE_READY)
{
@ -244,7 +244,8 @@ void start_adc_task(void const *argument)
{
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, hart2_uart2.rx_data_temp, ARRAY_LEN(hart2_uart2.rx_data_temp));
}
vTaskDelay(100);
osThreadResume(dac_taskHandle);
// vTaskDelay(100);
}
/* USER CODE END start_adc_task */
}

View File

@ -70,7 +70,7 @@ uart_t ble1_uart6 = {0};
uart_t ble2_uart3 = {0};
uart_t hart2_uart2 = {0};
uart_t hart1_uart5 = {0};
float current_buff[2] = {12.0f, 12.0f};
float current_buff[2] = {0, 0};
uint8_t tcp_echo_flags_hart1 = 0;
uint8_t tcp_echo_flags_hart2 = 0;
@ -177,8 +177,7 @@ void SystemClock_Config(void)
/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
@ -269,7 +268,8 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
/* USER CODE BEGIN Callback 0 */
/* USER CODE END Callback 0 */
if (htim->Instance == TIM1) {
if (htim->Instance == TIM1)
{
HAL_IncTick();
}
/* USER CODE BEGIN Callback 1 */

File diff suppressed because one or more lines are too long

View File

@ -160,6 +160,11 @@
<WinNumber>1</WinNumber>
<ItemText>ad7124_analog</ItemText>
</Ww>
<Ww>
<count>2</count>
<WinNumber>1</WinNumber>
<ItemText>xReturn</ItemText>
</Ww>
</WatchWindow1>
<Tracepoint>
<THDelay>0</THDelay>

View File

@ -0,0 +1,2 @@
[EXTDLL]
Count=0

View File

@ -39,7 +39,7 @@ static ad7124_st_reg_t ad7124_regs[AD7124_REG_NO] = {
{AD7124_CONFIG_5, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_5 */
{AD7124_CONFIG_6, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_6 */
{AD7124_CONFIG_7, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_7 */
{AD7124_FILTER_0, 0x060040, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_0 */
{AD7124_FILTER_0, 0x060020, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_0 */
{AD7124_FILTER_1, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_1 */
{AD7124_FILTER_2, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_2 */
{AD7124_FILTER_3, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_3 */