Сб апр 13, 2024 20:17:20
uint32_t Dellta[10] = {200,50,150,50,250,100,50,300,250,100}; // Массив приращений для исследования
uint16_t LenBuf = sizeof (Dellta)/4;
uint32_t EmNZ[500];
EmNZ[0] = 10000;
for(int16_t i=1; i<10; i++) EmNZ[i] = EmNZ[i-1] + Dellta[i]; // Создание массива меток
TIM5->EGR |= 3; // Генерируется событие срабатывания компаратора и сброс счётчика и прескаллера
HAL_TIM_OC_Start_IT(&htim5, TIM_CHANNEL_1);
void TIM5_IRQHandler(void)
{
/* USER CODE BEGIN TIM5_IRQn 0 */
/* USER CODE END TIM5_IRQn 0 */
HAL_TIM_IRQHandler(&htim5);
/* USER CODE BEGIN TIM5_IRQn 1 */
if(TIM5->SR & (1<<1)) // Проверка события компарирования CC1IF
{
TIM5->SR &= ~(1<<1); // Сброс флага CC1IF
TIM5->CCR1 = EmNZ[Count_Buf];
Count_Buf++;
if(Count_Buf >= LenBuf)
{
Count_Buf = 0;
uint32_t wer = EmNZ[LenBuf-1] + 100;
for(uint16_t i=0; i<LenBuf; i++) EmNZ[i] += wer;
}
}
/* USER CODE END TIM5_IRQn 1 */
}
Вс апр 14, 2024 08:03:18
Вс апр 14, 2024 10:27:27
Вс апр 14, 2024 11:20:08
Вс апр 14, 2024 11:51:42
Вс апр 14, 2024 21:34:15
Пн апр 15, 2024 08:04:28
Пн апр 15, 2024 16:00:59
Пн апр 15, 2024 17:20:27
Пн апр 15, 2024 17:28:49
Пн апр 15, 2024 18:01:33
Пн апр 15, 2024 19:01:23
Пн апр 15, 2024 19:54:26
Пн апр 15, 2024 20:56:11
Т.е., уже взведённый флаг не вызовет прерывание на следующее событие, его надо ручками снимать.
Вт апр 16, 2024 04:50:34
Вт апр 16, 2024 10:55:23
Т.е., уже взведённый флаг не вызовет прерывание на следующее событие, его надо ручками снимать.
Вт апр 16, 2024 12:02:33
Наверное, вы даже не пробовали остановить в отладке и посмотреть, что именно творится в регистрах оборудования, верно?
Вт апр 16, 2024 12:14:32
Вт апр 16, 2024 12:35:03
Вт апр 16, 2024 13:33:39