Пн мар 27, 2023 14:28:32
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef * htim)
{
if (htim->Instance == TIM1)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_5);
for (volatile __IO uint32_t i = 0, f = 0; f <255 ;[b][u] f = htim->Instance->CNT[/u][/b])
{
i = htim->Instance->CNT;
if (i > 6)
f = 255;
if(htim->Instance->CNT != last)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
last = htim->Instance->CNT;
}
}
}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef * htim)
{
if (htim->Instance == TIM1)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_5);
for (volatile __IO uint32_t i = 0, f = 0; f <255 ; [b][u]f ++[/u][/b])
{
i = htim->Instance->CNT;
if (i > 6)
f = 255;
if(htim->Instance->CNT != last)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
last = htim->Instance->CNT;
}
}
}
}
htim->Instance->CNT
Пн мар 27, 2023 16:39:57
Пн мар 27, 2023 17:30:50
Вт мар 28, 2023 06:24:01
Вт мар 28, 2023 08:31:51
Вт мар 28, 2023 08:54:38
The_Blind_WatchMaker писал(а):АЦП внешний. Какой именно не суть важно
Вт мар 28, 2023 09:00:51
for (uint32_t i = 0, f = 0;( (__HAL_TIM_GET_COUNTER(htim) < 6) ); f ++ ) //(f < 255) && - не работает
for (uint32_t i = 0, f = 0;( (f < 255) &&(__HAL_TIM_GET_COUNTER(htim) < 6) ); f ++ ) // работает как и хотелось до 6 тиков
The_Blind_WatchMaker писал(а):АЦП внешний. Какой именно не суть важно
Вт мар 28, 2023 09:41:03
while(__HAL_TIM_GET_COUNTER(htim)<6);
Вт мар 28, 2023 09:59:11
while(__HAL_TIM_GET_COUNTER(htim)<6);
while ((__HAL_TIM_GET_COUNTER(htim) < Start_Limit) && !flag_2)
for (uint32_t i = 0, f = 0;( (f < 255) && (__HAL_TIM_GET_COUNTER(htim) < 6) ); f ++ ) //
Вт мар 28, 2023 10:55:12
Вт мар 28, 2023 12:06:06
Вт мар 28, 2023 12:20:51
Если не работает, то либо счётчик не тикает, либо читается не тот счётчик.
Вт мар 28, 2023 13:59:08
/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
int f = 0;
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_12);
while ((__HAL_TIM_GET_COUNTER(htim) < 16) && (f < 65534) ) //&& (f < 65534)
{
f++;
if (__HAL_TIM_GET_COUNTER(htim) != last)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_13);
last = __HAL_TIM_GET_COUNTER(htim);
}
}
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12|GPIO_PIN_13, GPIO_PIN_RESET);
}
/* USER CODE END 4 */
/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
int f = 0;
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
while ((__HAL_TIM_GET_COUNTER(htim) < 6) & (f < 200))
{
f++;
if (__HAL_TIM_GET_COUNTER(htim) != last)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_5);
last = __HAL_TIM_GET_COUNTER(htim);
}
}
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5|GPIO_PIN_9, GPIO_PIN_RESET);
}
/* USER CODE END 4 */
Если не работает, то либо счётчик не тикает, либо читается не тот счётчик.
Вт мар 28, 2023 14:04:06
Вт мар 28, 2023 14:10:36
Вт мар 28, 2023 14:15:30
Вт мар 28, 2023 14:20:50
/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
while ((__HAL_TIM_GET_COUNTER(htim) < 6) )
{
if (__HAL_TIM_GET_COUNTER(htim) != last)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_5);
last = __HAL_TIM_GET_COUNTER(htim);
}
}
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5|GPIO_PIN_9, GPIO_PIN_RESET);
}
/* USER CODE END 4 */
Есть мысль, что какой-то системный счётчик срабатывает пока в конструкции "while(__HAL_TIM_GET_COUNTER(htim)<6)" счетчик CNT не меняется, система считает, что получился "бесконечный цикл".
А если в условии добавляется "(f < 255) && (__HAL_TIM_GET_COUNTER(htim) < 6)" и в цикле " f ++ ", то такой ошибки не возникает.
Но из меня специалист так себе...
Вт мар 28, 2023 14:29:29
Вт мар 28, 2023 14:34:54
/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
while ((__HAL_TIM_GET_COUNTER(htim) < 6) )
{
if (__HAL_TIM_GET_COUNTER(htim) != last)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_5);
last = __HAL_TIM_GET_COUNTER(htim);
}
}
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5|GPIO_PIN_9, GPIO_PIN_RESET);
}
/* USER CODE END 4 */
Вт мар 28, 2023 16:25:47