Hallo, habe gerade CubeMX auf Version 5.0.1 geupdatet, um etl. mein CAN Bus Problem zu beheben. Dafür habe ich ein anderes Problem. Am Mikrocontroller hängen 2 identische Displays an I²C und die sollen gelöscht werden. Hat mit CubeMX 4.21.0 super funktioniert. Jetzt zeigt er mir bei der "b" for Schleife ein "containing loop" und bei "SSD1306Command[1] = SSD1306Zeile[b]; //Y" sagt er "iteration 8u invokes undefined behavior [-Waggressive-loop-optimization]"
1 | for (uint8_t i = 0; i < 2; i++) |
2 | {
|
3 | for (uint32_t a = 1; a < 132; a++) |
4 | {
|
5 | SSD1306Daten[a] = 0x00; |
6 | } |
7 | SSD1306Daten[0] = 0x40; //Datenstrom |
8 | for (uint8_t b = 0; b < 9; b++) |
9 | {
|
10 | SSD1306Command[0] = 0x80; //Single Command |
11 | SSD1306Command[1] = SSD1306Zeile[b]; //Y |
12 | HAL_I2C_Master_Transmit(&hi2c1,SSD1306Adresse[i],SSD1306Command,2,100); |
13 | SSD1306Command[0] = 0x00; //Command Stream |
14 | SSD1306Command[1] = 0x00; //X |
15 | SSD1306Command[2] = SSD1306Spalte[0]; //Xlow |
16 | HAL_I2C_Master_Transmit(&hi2c1,SSD1306Adresse[i],SSD1306Command,3,100); |
17 | HAL_I2C_Master_Transmit(&hi2c1,SSD1306Adresse[i],SSD1306Daten,132,100); |
18 | } |
19 | } |
Ich verstehe überhauptnicht warum das plötzlich kommt, weil es rein gar nichts mit CubeMX zu tun hat. Eclipse 4.6.3 und GCC habe ich nicht upgedatet. Außerdem warum geht es mit "a" und "i", aber nicht mit "b". Wenn ich bei der betroffenen Zeile die Variable b gegen eine Zahl tausche geht es.