Estoy desarrollando una aplicación para un proyecto universitario en mi placa STM32L1DISCO con el MCU STM32L152RC.
Configuré los pines y generé el código de inicio a través de STM32CubeMX. Estoy usando Atollic TrueSTUDIO como IDE.
El problema es que el código de inicio generado no puede ejecutarse en mi MCU. Después de dedicar mucho tiempo a la depuración, descubrí que el problema en el código es esta línea que usa la biblioteca HAL gpio:
HAL_GPIO_Init(IDD_CNT_EN_GPIO_Port, &GPIO_InitStruct);
Aunque el código anterior es correcto,
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(IDD_CNT_EN_GPIO_Port, IDD_CNT_EN_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin : IDD_CNT_EN_Pin */
GPIO_InitStruct.Pin = IDD_CNT_EN_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
Después de revisar el código línea por línea durante la depuración, descubrí que la función HAL GPIO Init no se ejecuta y en su lugar da el error de tiempo de ejecución: "Target not Responding, reintenting...".
Cuando comento la línea HAL GPIO Init, el programa se ejecuta sin problemas.
STM32CubeMX incluye la biblioteca HAL en el código. Encima hay,
Entonces, no estoy seguro de qué está causando el problema que estoy viendo. Realmente agradecería su ayuda en esto ya que no sé qué intentar a continuación.
Gracias.
IDD_CNT_EN
está conectado al circuito de medición de potencia integrado. Si no se usa correctamente, interrumpirá temporalmente la fuente de alimentación V DD , reiniciando la MCU.
Mire los esquemas en el Manual del usuario
El ajuste IDD_CNT_EN
a salida baja inicia el temporizador externo U3. Después de un retraso de 150 ms, Q13
o U3
pasa a nivel alto, FET 1 in U20
se apaga y la resistencia de derivación de 1 kΩ R22
ahora está conectada en serie con V DD para mejorar la precisión de la medición de potencia. La MCU debe ponerse en modo de BAJA POTENCIA, PARADA o ESPERA, donde el consumo está muy por debajo de 1 mA, dentro de los 150 ms posteriores a la configuración IDD_CNT_EN
en bajo, y volver a configurarla en menos de 150 ms después de que llegue la señal de activación en PA0.
michel keijzers
Rishabh Kumar
michel keijzers
jaskij