Hallo, ich habe es irgendwie hinbekommen das mein STM32F469IIT nicht mehr läuft. Das heißt genau dass der Systick nicht läuft/zählt und demnach auch das Programm nichts tut - ganz so als ob ein Breakpoint aktiviert wäre. Wie ich an verschienden Quellen gelesen habe, kann man das mit dem Bootloader wieder lösen. Das Aktivieren über die BootPins sollte ich hinbekommen. Die Frage ist aber was ich dann für die Programm aufspielen soll? Leider fehlen mir da ein paar Infos zum Verständnis: Was macht man da genau? - Mein Programm schreibe ich doch eigentlich in den Flash des Controller..? Ich nutze als IDE übrigens STM32CubeIDE mit einem ST/Link V2. Ich bitte um ein paar Hinweise. Vielen Dank im Voraus! ReinerZufall24
Reinerzufall24 schrieb: > Das heißt genau dass der Systick nicht läuft/zählt und demnach auch das > Programm nichts tut - ganz so als ob ein Breakpoint aktiviert wäre. Ist die PLL richtig konfiguriert? Woran bemerkst du, dass der "systick" nicht läuft und der uC nicht (in einem Fehlerzustand) hängt? Falls der systick Timer gemeint ist, ist dieser initialisiert? Wenn ich mich richtig erinnere, war dieser in manchen Manuals von ST nur rudimentär beschrieben.
:
Bearbeitet durch User
Einfach ein "Mass Erase" fuer den Flash. Dann laueft zwar der Systick erst recht nicht, aber das ist ja dann Teil des Plans.
Bezügl. der PLL und Programm habe ich ein neues Projekt angelegt und alles auf den Std.Werten gelassen. Das hat eigentlich immer geklappt. Da ist kein Bus oder GPIO konfiguriert (außer den Std.Sachen). Hier ein Bild zur Clockeinstellung. Ja, mit SysdTick meine ich den Current-Wert . (siehe Bild) Bei den Fehlerzuständen bin ich mir nun (nachdem ich wie gestern Abend noch bisl gelesen habe) nicht mehr sicher. Ich hatte da in den Registern MMFAR geschaut ... das zeigt aber keinen Fehler an und ist vermultich auch nicht die richtige Stelle. Das HFSR (HardFaultRegister) gibt auch eine 0 zurück -> nach meinem jetzigen Kenntnisstand ist das i.o.. Wie kann ich rausfinden was da Sache ist? Hab nun schon das zweite Board in diesen misslichen Zustand gebracht. Es ging genau 1x zu beschreiben. Bei zweiten Mal hängt es dann :-() Vielen Dank für eure Hilfe!
Ist im Code das HAL_SYSTICK_Config() vorhanden? Und der SysTick_Handler(void) mit dem HAL_IncTick()?
... Wird der SysTick nicht in der HAL_Init(); aufgerufen?
1 | HAL_InitTick(TICK_INT_PRIORITY); |
und weiter
1 | _weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) |
2 | {
|
3 | /* Configure the SysTick to have interrupt in 1ms time basis*/
|
4 | if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) |
5 | {
|
6 | return HAL_ERROR; |
7 | }
|
8 | |
9 | /* Configure the SysTick IRQ priority */
|
10 | if (TickPriority < (1UL << __NVIC_PRIO_BITS)) |
11 | {
|
12 | HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); |
13 | uwTickPrio = TickPriority; |
14 | }
|
15 | else
|
16 | {
|
17 | return HAL_ERROR; |
18 | }
|
19 | |
20 | /* Return function status */
|
21 | return HAL_OK; |
22 | }
|
Nur den handle finde ich derz. noch nicht. Wie würdet ihr bei der Fehlersuche herangehen? VG Reiner Hier noch die Funktion SystemClock_Config:
1 | /**
|
2 | * @brief System Clock Configuration
|
3 | * @retval None
|
4 | */
|
5 | void SystemClock_Config(void) |
6 | {
|
7 | RCC_OscInitTypeDef RCC_OscInitStruct = {0}; |
8 | RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; |
9 | |
10 | /** Configure the main internal regulator output voltage
|
11 | */
|
12 | __HAL_RCC_PWR_CLK_ENABLE(); |
13 | __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); |
14 | /** Initializes the RCC Oscillators according to the specified parameters
|
15 | * in the RCC_OscInitTypeDef structure.
|
16 | */
|
17 | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; |
18 | RCC_OscInitStruct.HSIState = RCC_HSI_ON; |
19 | RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; |
20 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
21 | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; |
22 | RCC_OscInitStruct.PLL.PLLM = 16; |
23 | RCC_OscInitStruct.PLL.PLLN = 192; |
24 | RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; |
25 | RCC_OscInitStruct.PLL.PLLQ = 4; |
26 | RCC_OscInitStruct.PLL.PLLR = 2; |
27 | if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) |
28 | {
|
29 | Error_Handler(); |
30 | }
|
31 | /** Initializes the CPU, AHB and APB buses clocks
|
32 | */
|
33 | RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |
34 | |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; |
35 | RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; |
36 | RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV4; |
37 | RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; |
38 | RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; |
39 | |
40 | if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) |
41 | {
|
42 | Error_Handler(); |
43 | }
|
44 | }
|
45 | |
46 | /**
|
47 | * @brief GPIO Initialization Function
|
48 | * @param None
|
49 | * @retval None
|
50 | */
|
So ... ermal positive Nachrichten: Es bzw. er läuft wieder. Bisl Blöd ist zwar das ich nicht weiß was ich macht habe... Zur Fehlersuche habe ich mir folgendes ausgeldacht: Ich habe noch ein 469Disco-Board. Da hätet ich auf beiden ein "leeres" default-Projekt in STM32CubeIDE angelegt und dann die Register einzeln verglichen und geschaut was da los ist. Grundsätzlich denke ich, das Problem liegt irgendwo in meiner Debugeinstellung der CubeIDE.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.