2020-07-27 06:19 AM
I generate pinmux and init code for my STM32F407G-DISC1 board with STM32CubeMX 5.6.1, and copy it into my Eclipse CDT project that uses the HAL/LL drivers to that came with STM32CubeF4 Firmware Package V1.25.0. It builds ok; I download the binary to the board with OpenOCD/GDB. I can step through the code.
For some reason, the call to 'HAL_RCC_OscConfig()' in 'SystemClock_Config()' hits my error handler (line 57 below) :
int main(int argc, char* argv[])
{
puts( "starting" );
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
while (1)
{
// LED ON
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_SET);
HAL_Delay(100);
// LED OFF
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_Delay(100);
}
// we shouldn't ever reach this point: return error
return -1;
}
void Error_Handler(void)
{
asm( "bkpt 255" );
}
/**
* @brief System Clock Configuration
* @retval None
*/
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
/** Configure the main internal regulator output voltage
*/
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/** Initializes the CPU, AHB and APB busses clocks
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 7;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
When I created the project, a prompt asked if I want to "initialize all peripherals with their Default mode ?" -- I said yes. Could someone explain what I'm doing wrong ?
2020-07-27 08:52 AM
The mco output from stlink is probably connected by default. Try HSE bypass mode.
Seems like both MCO and HSE are connected per the user manual.
2020-07-30 05:39 AM
I tried the following, which also fails:
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
Is it what you meant ?
2021-05-06 09:42 AM
Was this resolved?