Ich entwickle eine Anwendung für ein Universitätsprojekt auf meinem STM32L1DISCO-Board mit der STM32L152RC-MCU.
Ich habe die Pins konfiguriert und den Init-Code über STM32CubeMX generiert. Als IDE verwende ich Atollic TrueSTUDIO.
Das Problem ist, dass der generierte Init-Code auf meiner MCU nicht ausgeführt werden kann. Nachdem ich viel Zeit mit dem Debuggen verbracht hatte, stellte ich fest, dass das Problem im Code diese eine Zeile ist, die die HAL gpio-Bibliothek verwendet:
HAL_GPIO_Init(IDD_CNT_EN_GPIO_Port, &GPIO_InitStruct);
Auch wenn der vorhergehende Code korrekt ist,
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;
Nachdem ich den Code während des Debuggens Zeile für Zeile durchlaufen hatte, stellte ich fest, dass die HAL-GPIO-Init-Funktion nicht ausgeführt wird und stattdessen den Laufzeitfehler ausgibt: „Target not Responding, retrying...“.
Wenn ich die HAL GPIO Init-Zeile kommentiere, läuft das Programm ohne Probleme durch.
STM32CubeMX enthält die HAL-Bibliothek im Code. Oben drauf steht,
Ich bin mir also nicht sicher, was das Problem verursacht, das ich sehe. Ich würde mich sehr über Ihre Hilfe freuen, da ich nicht weiß, was ich als nächstes versuchen soll.
Danke schön.
IDD_CNT_EN
ist mit der integrierten Leistungsmessschaltung verbunden. Wenn es nicht richtig verwendet wird, wird es vorübergehend die V DD- Stromversorgung unterbrechen und die MCU zurücksetzen.
Schauen Sie sich die Schaltpläne in der Bedienungsanleitung an
Die Einstellung IDD_CNT_EN
auf Low-Ausgang startet den externen Timer U3. Nach einer Verzögerung von 150 ms wird der FET 1 in hochgeschaltet Q13
und der 1-kΩ-Shunt-Widerstand wird nun in Reihe mit V DD geschaltet , um die Genauigkeit der Leistungsmessung zu verbessern. Die MCU sollte sich innerhalb von 150 ms nach dem Einstellen auf „Niedrig“ in den LOWPOWER-, STOP- oder STANDBY-Modus versetzen, in dem der Verbrauch deutlich unter 1 mA liegt, und ihn in weniger als 150 ms nach Eintreffen des Wecksignals auf PA0 wieder auf „Hoch“ setzen.U3
U20
R22
IDD_CNT_EN
Michel Keijzers
Rishab Kumar
Michel Keijzers
jaskij