Я использую STM32 cubeMX для настройки и Keil для программирования. Установите встроенный светодиодный контакт pc13 в качестве выходного контакта и по умолчанию в двухтактном режиме. Установите отладчик на последовательный кабель, поскольку я использую ST-link V2 в качестве отладчика. RCC установил HSE на кварцевый / керамический резонатор. и конфигурация часов установлена по умолчанию и сгенерирован проект.
Теперь я начал с простой программы мигания светодиодами. Как показано ниже
HAL_GPIO_TogglePin(led_GPIO_Port,led_Pin);
HAL_Delay(1000);
построить успешно без ошибок и загрузить и удивиться, что мой светодиод не мигал и шокирован, как я делал это раньше, а теперь это не работает. когда я отлаживал шаг за шагом, и мой код несколько раз переходил от двух функций.
while ((HAL_GetTick() - tickstart) < wait)
{
}
__weak uint32_t HAL_GetTick(void)
{
return uwTick;
}
В этом коде больше ничего не происходит. Я знаю, что код правильный, но в конфигурации HAL_delay есть ошибка. Почесав голову в течение дня, я попытался загрузить следующий код
HAL_GPIO_TogglePin(led_GPIO_Port,led_Pin);
HAL_Delay(100);
И странно то, что теперь мой светодиод мигает только я изменил значение HAL_dealy с 1000 на 100, и он работает нормально, но при использовании 1000 не работает вообще. Поэтому для тестирования я постепенно увеличивал значение задержки и обнаружил, что больше HAL_delay (400) не работает.
Не удалось найти причину для этого. Любая помощь будет заметна.
Как предложил Том, я отлаживал uwTickFreq с помощью STstudio. и я получил следующую форму выходного сигнала.
После этого я также загрузил следующий код. И определил переменную как unsigned long int a;
HAL_GPIO_TogglePin(led_GPIO_Port,led_Pin);
HAL_Delay(100);
a= HAL_GetTick();
Теперь я отладил значение a с помощью STstudio. И странно, что значение a становится 0, когда оно достигает значения 300.
nm
для каждого из ваших объектов сборки. - person Tom V   schedule 06.02.2021