У меня есть плата с STM32F101C8, на которой я успешно потренировался мигать светодиодами. То есть, очевидные аппаратные ошибки маловероятны. Я откомпилировал FreeRtos с двумя простыми задачами:
Код
static void vLCDTask( void *pvParameters )
{
(void)(*pvParameters);
for(;;)
{
GPIOB->ODR &= 0x03FF; // LED ON
vTaskDelay(10);
}
}
static void vLSDTask( void *pvParameters )
{
(void)(*pvParameters);
for(;;)
{
GPIOB->ODR |= 0xFC00;//LED OFF
vTaskDelay(10);
}
}
{
(void)(*pvParameters);
for(;;)
{
GPIOB->ODR &= 0x03FF; // LED ON
vTaskDelay(10);
}
}
static void vLSDTask( void *pvParameters )
{
(void)(*pvParameters);
for(;;)
{
GPIOB->ODR |= 0xFC00;//LED OFF
vTaskDelay(10);
}
}
Система работает несколько секунд, а потом улетает на Hard Fault Exception.
Кварц - 8МГц, множитель/ делитель PLL сконфигурирован как 6/2. Тактовая частота, по моим расчетам - 24МГц. На всякий случай Flash - с двумя wait states.
Нет ли каких-то идей, как помочь этой беде?