-
Notifications
You must be signed in to change notification settings - Fork 41
/
Release_Notes.html
3634 lines (3634 loc) · 183 KB
/
Release_Notes.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Release Notes for STM32H7xx HAL Drivers</title>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
</style>
<link rel="stylesheet" href="_htmresc/mini-st_2020.css" />
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
<link rel="icon" type="image/x-icon" href="_htmresc/favicon.png" />
</head>
<body>
<div class="row">
<div class="col-sm-12 col-lg-4">
<center>
<h1 id="release-notes-for-stm32h7xx-hal-drivers"><strong>Release Notes for STM32H7xx HAL Drivers</strong></h1>
<p>Copyright © 2017 STMicroelectronics<br />
</p>
<a href="https://www.st.com" class="logo"><img src="_htmresc/st_logo_2020.png" alt="ST logo" /></a>
</center>
<h1 id="purpose">Purpose</h1>
<p>The STM32Cube HAL and LL, an STM32 abstraction layer embedded software, ensure maximized portability across STM32 portfolio.</p>
<p>The portable APIs layer provides a generic, multi instanced and simple set of APIs to interact with the upper layer (application, libraries and stacks). It is composed of native and extended APIs set. It is directly built around a generic architecture and allows the build-upon layers, like the middleware layer, to implement its functions without knowing in-depth the used STM32 device. This improves the library code reusability and guarantees an easy portability on other devices and STM32 families.</p>
<p>The Low Layer (LL) drivers are part of the STM32Cube firmware HAL that provides a basic set of optimized and one shot services. The Low layer drivers, contrary to the HAL ones are not fully portable across the STM32 families; the availability of some functions depends on the physical availability of the relative features on the product. The Low Layer (LL) drivers are designed to offer the following features:</p>
<ul>
<li>New set of inline functions for direct and atomic register access</li>
<li>One-shot operations that can be used by the HAL drivers or from application level</li>
<li>Full independence from HAL and standalone usage (without HAL drivers)</li>
<li>Full features coverage of all the supported peripherals</li>
</ul>
</div>
<div class="col-sm-12 col-lg-8">
<h1 id="update-history"><strong>Update History</strong></h1>
<div class="collapse">
<input type="checkbox" id="collapse-section18" checked aria-hidden="true"> <label for="collapse-section18" aria-hidden="true"><strong>V1.11.3 / 15-March-2024</strong></label>
<div>
<h2 id="main-changes">Main Changes</h2>
<ul>
<li>HAL code quality enhancement for MISRA-C Rule-8.13 by adding const qualifiers.</li>
<li><strong>HAL Generic</strong>
<ul>
<li>Allow redefinition of macro UNUSED(x).</li>
<li>Update of HAL_GetTickFreq() API brief.</li>
<li>Update stm32h7xx_hal_conf_template.h file to support legacy HAL ETH driver.</li>
</ul></li>
<li><strong>HAL PWR</strong>
<ul>
<li>Add macro UNUSED() to avoid the generation of a warning related to the unused argument ‘Regulator’.</li>
<li>Update HAL_PWREx_PVD_AVD_IRQHandle() API to call right callbacks before performing the clear.</li>
</ul></li>
<li><strong>HAL GPIO</strong>
<ul>
<li>Add alternative function mappings for CSLEEP, CSTOP and NDSTOP2.</li>
</ul></li>
<li><strong>HAL EXTI</strong>
<ul>
<li>Add macro UNUSED() to avoid the generation of a warning related to the unused argument ‘Edge’.</li>
</ul></li>
<li><strong>HAL CORTEX</strong>
<ul>
<li>Updated HAL_MPU_ConfigRegion() API to allow the configuration of the MPU registers independently of the value of Enable/Disable field.</li>
<li>Add new APIs HAL_MPU_EnableRegion() / HAL_MPU_DisableRegion().</li>
</ul></li>
<li><strong>HAL RTC_BKP</strong>
<ul>
<li>Change RTC_ISR_INITF to RTC_ISR_INIT in the Exit Initialization mode.</li>
<li>Remove macro __HAL_RTC_TAMPER_GET_IT() as it is redundant with macro __HAL_RTC_TAMPER_GET_FLAG() and create an alias into the hal_legacy.h file.</li>
<li>Correct misleading note about shadow registers.</li>
</ul></li>
<li><strong>HAL PSSI</strong>
<ul>
<li>Replace hdmatx by hdmarx in HAL_PSSI_Receive_DMA() API.</li>
<li>Use MODIFY_REG in HAL_PSSI_Transmit() and HAL_PSSI_Receive() APIs.</li>
</ul></li>
<li><strong>HAL/LL TIM</strong>
<ul>
<li>Remove multiple volatile reads in interrupt handler for better performance.</li>
<li>Assert check for the right channels.</li>
<li>Remove unnecessary change of MOE bitfield in LL_TIM_BDTR_Init() API.</li>
<li>Remove useless check on macro IS_TIM_ADVANCED_INSTANCE() within LL_TIM_BDTR_Init() API to fix Break Filter configuration problem with specific TIM instances.</li>
<li>Update interrupt flag is cleared when the update event is generated by software.</li>
<li>Fix typo in PWM symmetric mode related constants names.</li>
<li>Improve period configuration parameter check.</li>
<li>Improve HAL TIM driver’s operational behavior.</li>
</ul></li>
<li><strong>HAL LPTIM</strong>
<ul>
<li>Remove redundant macro IS_LPTIM_AUTORELOAD().</li>
</ul></li>
<li><strong>LL COMP</strong>
<ul>
<li>Add new APIs:
<ul>
<li>LL_COMP_IsActiveFlag_OutputTrig().</li>
<li>LL_COMP_ClearFlag_OutputTrig().</li>
<li>LL_COMP_EnableIT_OutputTrig().</li>
<li>LL_COMP_DisableIT_OutputTrig().</li>
<li>LL_COMP_IsEnabledIT_OutputTrig().</li>
</ul></li>
</ul></li>
<li><strong>HAL DSI</strong>
<ul>
<li>Align DSI Initialization sequence to the recommended ‘Programing procedure overview’ part to avoid DSI read LCD controller register 0x0A error.</li>
</ul></li>
<li><strong>HAL FLASH</strong>
<ul>
<li>Add macro UNUSED() to avoid the generation of a warning related to the unused argument ‘Edge’.</li>
</ul></li>
<li><strong>HAL NOR</strong>
<ul>
<li>Add x8 commands support for NOR Flash driver.</li>
</ul></li>
<li><strong>HAL SPDIFRX</strong>
<ul>
<li>Prevent hard fault by checking DMA usage.</li>
<li>Tuning of default SPDIFRX timeout.</li>
</ul></li>
<li><strong>HAL HASH</strong>
<ul>
<li>Read the last remaining bytes (3 or 2 or 1) of the data in a temporary variable (taking into account swap mode) and enter this variable into the HASH->DIN when the data is not a multiple of 4 bytes.</li>
<li>Code quality enhancement : Fix MISRA-C Rules 12.1, 10.7, 10.6, 10.4.</li>
</ul></li>
<li><strong>HAL CRYP</strong>
<ul>
<li>Update CRYP HAL driver to fix the issue of writing out the outputbuffer when the size is not multiple of 4.</li>
</ul></li>
<li><strong>HAL OPAMP</strong>
<ul>
<li>Fix incorrect word ‘surcharged’ in functions headers.</li>
</ul></li>
<li><strong>HAL/LL ADC</strong>
<ul>
<li>Update LL_ADC_SetAnalogWDThresholds(), LL_ADC_GetAnalogWDThresholds(), LL_ADC_ConfigAnalogWDThresholds() APIs for ADC3 IP version.</li>
<li>Update HAL ADC driver to support case of dual mode with 2 DMA channels.</li>
<li>Update setting of channel preselection for ADC internal channel.</li>
<li>Update LL_ADC_DeInit() API with reference manual.</li>
</ul></li>
<li><strong>HAL DAC</strong>
<ul>
<li>Fix incorrect word ‘surcharged’ in functions headers.</li>
<li>Updated DAC buffer calibration according to RM.</li>
</ul></li>
<li><strong>HAL OSPI</strong>
<ul>
<li>Update OCTOSPI driver to handle proper abort of the DMA transfer.</li>
</ul></li>
<li><strong>HAL CORDIC</strong>
<ul>
<li>Fix incorrect word ‘surcharged’ in functions headers.</li>
</ul></li>
<li><strong>HAL FMAC</strong>
<ul>
<li>Avoid usage of magic numbers.</li>
<li>Fix incorrect word ‘surcharged’ in functions headers.</li>
</ul></li>
<li><strong>HAL/LL SPI</strong>
<ul>
<li>Code improvement related to LDRA inside HAL_SPI_TransmitReceive_DMA(), HAL_SPI_Abort() and HAL_SPI_Abort_IT() APIs.</li>
<li>Update the register field modified by LL_SPI_SetTxCRCInitPattern() API.</li>
<li>In Full Duplex mode, calling HAL_SPI_TransmitReceive_DMA() API can generate a RX HDMA busy if HDMA TX is not well initialized. To avoid this, now a DMA abort is done on RX path to reset HDMA RX to ready state.</li>
<li>Feature Reload IT can generate Hardfault at high baudrate. This happens because variable hspi->Reload.Requested is reset before hspi->RxXferCount goes to zero. To avoid this, now hspi->Reload.Requested reset is done inside local ISR pointer instead of HAL_SPI_IRQHandler() API.</li>
</ul></li>
<li><strong>HAL QSPI</strong>
<ul>
<li>Clear the QSPI.AR register when sCommand.AddressMode is QSPI_ADDRESS_NONE</li>
</ul></li>
<li><strong>HAL SMBUS</strong>
<ul>
<li>Update HAL SMBUS driver to prefetch data before starting the transmission: implementation of errata sheet workaround I2C2-190208 : Transmission stalled after first byte.</li>
<li>Update SMBUS_ITErrorHandler to flash TXDR just in case of error.</li>
</ul></li>
<li><strong>HAL ETH</strong>
<ul>
<li>Update the entry to critical section without enabling unwanted global interrupts.</li>
<li>Add missing system time in different PTP APIs.</li>
<li>Fix ETH_Start_IT sequence.</li>
<li>HAL ETH Driver general updates to enhance the quality and robustness.</li>
<li>Add condition to get the TimeStamp only when it was captured (Check on Last Descriptor and TimeStamp flag set).</li>
<li>Fix comment “CSR Clock Range between 150-250* MHz”.</li>
<li>Update on Rx descriptor Tail pointer management to avoid race condition.</li>
<li>Move the section of disable MMC interrupts from HAL_ETH_Start_IT() API to HAL_ETH_Init() API.</li>
<li>Fix MAC register name to get MAC LPI interrupt.</li>
</ul></li>
<li><strong>HAL UART</strong>
<ul>
<li>Update initialisation sequence for TXINV, RXINV and TXRXSWAP settings.</li>
<li>Fix incorrect gState check in HAL_UART_RegisterRxEventCallback/HAL_UART_UnRegisterRxEventCallback APIs to allow user Rx Event Callback registration when a transmit is ongoing.</li>
<li>Prevent RTOF flag from being cleared by a transmit process in polling mode.</li>
</ul></li>
<li><strong>HAL FDCAN</strong>
<ul>
<li>Fix GetIndex issue in HAL_FDCAN_GetRxMessage() API.</li>
</ul></li>
<li><strong>HAL SAI</strong>
<ul>
<li>Improve audio quality (avoid potential glitch).</li>
<li>Fix incorrect word ‘surcharged’.</li>
</ul></li>
<li><strong>HAL I2C</strong>
<ul>
<li>Update I2C_WaitOnRXNEFlagUntilTimeout() function to check I2C_FLAG_AF independently from I2C_FLAG_RXNE.</li>
<li>Update HAL_I2C_IsDeviceReady() API to support 10_bit addressing mode: Update done on the macro I2C_GENERATE_START.</li>
<li>Update HAL I2C driver to prefetch data before starting the transmission: implementation of errata sheet workaround I2C2-190208 : Transmission stalled after first byte</li>
<li>Update HAL_I2C_Init API to clear ADD10 bit in 7 bit addressing mode.</li>
<li>Update HAL I2C driver to disable all interrupts after end of transaction.</li>
<li>Update HAL_I2C_Mem_Write_IT() API to initialize XferSize at 0.</li>
<li>Update I2C_Slave_ISR_IT(), I2C_Slave_ISR_DMA() and I2C_ITSlaveCplt() functions to prevent the call of HAL_I2C_ListenCpltCallback() API twice.</li>
<li>In HAL_I2C_IsDeviceReady() API remove the unusable code.</li>
<li>Update I2C_WaitOnFlagUntilTimeout() function to handle error case.</li>
<li>Update HAL_I2C_Slave_Transmit() API to check if the received NACK is the good one.</li>
<li>Update LL_I2C_HandleTranfer() API to prevent undefined behavior of volatile usage before updating the CR2 register.</li>
</ul></li>
<li><strong>HAL USB</strong>
<ul>
<li>ll_USB.c fix wrong mask to clear USB interrupt in USB_ClearInterrupts() function.</li>
<li>ll_usb.c: remove useless software setting to setup the frame interval at 80%.</li>
<li>ll_usb.c hal_hcd.c: adding support of hub split transactions.</li>
<li>pcd.c/ll_usb.c: fix device connection in case battery charging used with HS instance linked to internal FS PHY.</li>
<li>ll_usb.c: increase timeout value to allow core reset to complete.</li>
<li>ll_usb.c: improve delay management to set core mode.</li>
</ul></li>
<li><strong>LL UTILS</strong>
<ul>
<li>Fix a note about Ticks parameter.</li>
</ul></li>
</ul>
<h2 id="known-limitations">Known Limitations</h2>
<ul>
<li>None</li>
</ul>
<h2 id="backward-compatibility">Backward compatibility</h2>
<ul>
<li>None</li>
</ul>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section17" aria-hidden="true"> <label for="collapse-section17" aria-hidden="true"><strong>V1.11.2 / 23-January-2024</strong></label>
<div>
<h2 id="main-changes-1">Main Changes</h2>
<ul>
<li><strong>HAL ETH</strong>
<ul>
<li>Update on Rx descriptor Tail pointer management to avoid race condition.</li>
</ul></li>
</ul>
<h2 id="known-limitations-1">Known Limitations</h2>
<ul>
<li>None</li>
</ul>
<h2 id="backward-compatibility-1">Backward compatibility</h2>
<ul>
<li>None</li>
</ul>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section16" aria-hidden="true"> <label for="collapse-section16" aria-hidden="true"><strong>V1.11.1 / 04-November-2022</strong></label>
<div>
<h2 id="main-changes-2">Main Changes</h2>
<ul>
<li>General updates to fix known defects and implementation enhancements.</li>
<li>HAL code quality enhancement for MISRA-C Rule-8.13 by adding const qualifiers.</li>
<li><p>HAL code quality enhancement for MISRA-C2012 Rule-2.2_c.</p></li>
<li><strong>HAL Generic</strong>
<ul>
<li>HAL code quality enhancement for MISRA-C2012 Rule-10.4_a: adding sign qualifier.</li>
</ul></li>
<li><strong>HAL RCC</strong>
<ul>
<li>Wait at least 2 CK_REF cycles after FRACEN has been cleared before setting it back.</li>
<li>Macros RCC_SPI4CLKSOURCE_D2PCLK1, RCC_SPI5CLKSOURCE_D2PCLK1, RCC_SPI45CLKSOURCE_D2PCLK1, RCC_SPI45CLKSOURCE_CDPCLK1 and RCC_SPI45CLKSOURCE_PCLK1 were renamed with suffix PCLK2.</li>
<li>Add SPI45 peripheral clock frequency to HAL_RCCEx_GetPeriphCLKFreq().</li>
<li>Rename HAL_RCC_CCSCallback() API to HAL_RCC_CSSCallback().</li>
<li>The last line of the definition of IS_RCC_I2C4CLKSOURCE macro is corrected : RCC_I2C3CLKSOURCE_CSI is changed by RCC_I2C4CLKSOURCE_CSI.</li>
<li>Update HAL_RCC_GetHCLKFreq() to return the right HCLK frequency when a single core product is selected.</li>
</ul></li>
<li><strong>HAL EXTI</strong>
<ul>
<li>Fix computation of pExtiConfig->GPIOSel in HAL_EXTI_GetConfigLine().</li>
<li>Optimize computation of pExtiConfig->GPIOSel in HAL_EXTI_GetConfigLine().</li>
</ul></li>
<li><strong>HAL/LL ADC</strong>
<ul>
<li>Update the LL_ADC_ConfigOverSamplingRatioShift() and the LL_ADC_GetOverSamplingRatio() APIs to correctly set the data resolution for the ADC3.</li>
<li>Add LL_ADC_GetChannelPreselection() API and rename LL_ADC_SetChannelPreSelection() to LL_ADC_SetChannelPreselection().</li>
<li>Update description of offset value range: add mention of oversampling ratio increasing offset maximum value.</li>
</ul></li>
<li><strong>HAL RTC_BKP</strong>
<ul>
<li>Check if the RTC calendar has been previously initialized before entering Initialization mode.</li>
<li>Clear RSF flag using a single ‘write’ operation instead of a ‘read-modify-write’ sequence to avoid clearing other ISR flags if set in the meantime.</li>
<li>Optimize the use of #ifdef … #endif directives for better readability and maintainability.</li>
<li>To avoid any possible clearing of other ISR flags during sequence read-modify-write , a direct assignment was applied with a mask of reserved bits to avoid setting them.</li>
<li>Rearrange the de-initialization sequence to be compliant with the reference manual.</li>
<li>Optimize the CR reset operation (from read-modify-write to write) and enrich related comments.</li>
<li>Move the ‘exit initialization mode’ call after PRER, ALRMAR, ALRMBR, and WUTR registers are reset.</li>
<li>Group the tamper registers reset instruction for better readability.</li>
</ul></li>
<li><strong>LL TIM</strong>
<ul>
<li>Remove useless check on IS_TIM_ADVANCED_INSTANCE() within LL_TIM_BDTR_Init() to fix Break Filter configuration problem with specific TIM instances.</li>
</ul></li>
<li><strong>HAL HRTIM</strong>
<ul>
<li>Macros HRTIM_TIMDEADTIME_PRESCALERRATIO_MUL8, HRTIM_TIMDEADTIME_PRESCALERRATIO_MUL4 and HRTIM_TIMDEADTIME_PRESCALERRATIO_MUL2 were removed from HAL library code.</li>
</ul></li>
<li><strong>HAL CRC</strong>
<ul>
<li>Add filter in HAL_CRCEx_Polynomial_Set() to exclude even polynomials.</li>
</ul></li>
<li><strong>HAL CEC</strong>
<ul>
<li>Better performance by removing multiple volatile reads or writes in interrupt handler.</li>
</ul></li>
<li><strong>HAL SDMMC</strong>
<ul>
<li>Update HAL_SD_ConfigSpeedBusOperation() API to add support of switch to Default Speed.</li>
</ul></li>
<li><strong>HAL DSI</strong>
<ul>
<li>Update to align DSI ULPS entry and exit sequences with reference manual.</li>
</ul></li>
<li><strong>HAL CRYP</strong>
<ul>
<li>Rename CRYP Data Type possible values to avoid any eventual usage confusion:</li>
<li>CRYP_DATATYPE_32B renamed CRYP_NO_SWAP</li>
<li>CRYP_DATATYPE_16B renamed CRYP_HALFWORD_SWAP</li>
<li>CRYP_DATATYPE_8B renamed CRYP_BYTE_SWAP</li>
<li>CRYP_DATATYPE_1B renamed CRYP_BIT_SWAP</li>
</ul></li>
<li><strong>HAL SAI</strong>
<ul>
<li>Avoid using magic numbers.</li>
</ul></li>
<li><strong>HAL I2C</strong>
<ul>
<li>Timeout issue using HAL MEM interface through FreeRTOS.</li>
<li>I2C_IsErrorOccurred does not return error if timeout is detected.</li>
<li>The ADDRF flag is cleared too early when the restart is received but the direction has changed.</li>
</ul></li>
<li><strong>HAL/LL SPI</strong>
<ul>
<li>Change argument order in SPI_WaitOnFlagUntilTimeout to be aligned with declaration.</li>
<li>Fix dereferencing pointer warning on GNU compiler inside LL_SPI_ReceiveData16() function.</li>
<li>Add SuspendCallback(), useful to avoid data overrun in case transfer is interrupted.
<ul>
<li><strong>NOTE:</strong> SuspendCallback() is called only when <em>MasterReceiverAutoSusp</em> is enabled and <em>EOT</em> interrupt is activated.</li>
</ul></li>
<li>Add support of Simplex Transmitter and Simplex Receiver modes.</li>
<li>Remove the call to HAL_SPI_TransmitReceive() from HAL_SPI_Receive().
<ul>
<li><strong>NOTES:</strong>
<ul>
<li>When the HAL_SPI_Receive() is called in Master mode, only the RX Line is active.</li>
<li>In case of a Master using the Full-Duplex mode, HAL_SPI_TransmitReceive() shall be called instead of HAL_SPI_Receive() at user application level.</li>
</ul></li>
</ul></li>
<li>Clear <em>EOT</em> and <em>SUSP</em> flags in the HAL_SPI_Abort_IT().</li>
</ul></li>
<li><strong>HAL ETH</strong>
<ul>
<li>Add missing default callbacks initialization to static function ETH_InitCallbacksToDefault().</li>
<li>Fix MISRAC2012-Rule-2.3 warning in HAL ETH driver:
<ul>
<li>Unused type declaration</li>
</ul></li>
</ul></li>
<li><strong>HAL UART</strong>
<ul>
<li>Removal of HAL_LOCK/HAL_UNLOCK calls in HAL UART Tx and Rx APIs.</li>
<li>Disable the Receiver Timeout Interrupt when data reception is completed.</li>
<li>Rework of UART_WaitOnFlagUntilTimeout() API to avoid being stuck forever when UART overrun error occurs and to enhance behavior.</li>
</ul></li>
<li><strong>HAL DTS</strong>
<ul>
<li>Correction on IS_DTS_DIVIDER_RATIO_NUMBER macro.</li>
<li>Corrections on register callbacks feature implementation.</li>
<li>Correction on factory temperature value.</li>
<li>Avoid using magic numbers.</li>
</ul></li>
<li><strong>Documentation</strong>
<ul>
<li>Remove redundant word from <span class="citation" data-cites="note">@note</span> of HAL_InitTick() header description, which may cause confusion when reading the note.</li>
</ul></li>
</ul>
<h2 id="known-limitations-2">Known Limitations</h2>
<ul>
<li>None</li>
</ul>
<h2 id="backward-compatibility-2">Backward compatibility</h2>
<ul>
<li>None</li>
</ul>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section15" aria-hidden="true"> <label for="collapse-section15" aria-hidden="true"><strong>V1.11.0 / 11-February-2022</strong></label>
<div>
<h2 id="main-changes-3">Main Changes</h2>
<ul>
<li>General updates to fix known defects and implementation enhancements.</li>
<li><strong>The following changes done on the HAL drivers require an update of the application code based on older HAL versions</strong>
<ul>
<li>Rework of HAL Ethernet driver to resolve problems and improve performance.(compatibility break)</li>
<li>A new HAL Ethernet driver has been redesigned with new APIs, to bypass limitations with previous HAL Ethernet driver version.</li>
<li>The new HAL Ethernet driver is the recommended version. It is located as usual in Drivers/STM32H7xx_HAL_Driver/Src and Drivers/STM32H7xx_HAL_Driver/Inc folders.
<ul>
<li>It can be enabled through switch HAL_ETH_MODULE_ENABLED in stm32h7xx_hal_conf.h</li>
</ul></li>
<li>The legacy HAL Ethernet driver is also present in the release in Drivers/STM32H7xx_HAL_Driver/Src/Legacy and Drivers/STM32F4xx_HAL_Driver/Inc/Legacy folders for software compatibility reasons.
<ul>
<li>Its usage is not recommended as deprecated. It can however be enabled through switch HAL_ETH_LEGACY_MODULE_ENABLED in stm32h7xx_hal_conf.h</li>
</ul></li>
</ul></li>
<li><strong>HAL LTDC</strong>
<ul>
<li>Update HAL_LTDC_DeInit() to fix MCU Hang up during LCD turn OFF.</li>
</ul></li>
<li><strong>HAL QSPI</strong>
<ul>
<li>Update HAL_QSPI_Abort() and HAL_QSPI_Abort_IT() APIs to check on QSPI BUSY flag status before executing the abort procedure.</li>
</ul></li>
<li><strong>LL TIM</strong>
<ul>
<li>__LL_TIM_CALC_PSC() macro update to round up the evaluate value when the fractional part of the division is greater than 0.5.</li>
</ul></li>
<li><strong>HAL NOR</strong>
<ul>
<li>FMC_WRITE_OPERATION_DISABLE for NOR cause Hardfault for Read operations</li>
</ul></li>
<li><strong>HAL OSPI</strong>
<ul>
<li>Remove unsupported Clocked Chip Select High Time feature:
<ul>
<li>ClkChipSelectHighTime parameter removed from the OSPI_InitTypeDef structure</li>
<li>Update HAL_OSPI_Init() API to no longer configure the ClkChipSelectHighTime parameter in the OCTOSPI_DCR1 register</li>
</ul></li>
<li>Fix an MPU issue with OTFDEC examples and STM32H735G-DK BSP example.</li>
<li>Update HAL_OSPI_Init() to fix DelayBlockBypass parameter configuration issue.</li>
</ul></li>
<li><strong>HAL SPI</strong>
<ul>
<li>Update SPI_IRQ_Handler() to overrun error occurrence in full duplex communication.
<ul>
<li>Add clear for transmission flag.</li>
</ul></li>
<li>Update HAL_SPI_Receive() API to avoid hardfault exception in Master RX, Polling mode 8 bits mode when 2 byte are available at the same time.</li>
</ul></li>
<li><strong>HAL SMBUS</strong>
<ul>
<li>stm32h7xx_hal_smbus_ex.c/.h file added to support new <strong>HAL SMBUS extended feature</strong>.
<ul>
<li>Add Support for Fast Mode Plus to be SMBUS rev 3 compliant.
<ul>
<li>Add HAL_SMBUSEx_EnableFastModePlus() and HAL_SMBUSEx_DisableFastModePlus() APIs to manage Fm+.</li>
</ul></li>
<li>Add Support of wake up capability.
<ul>
<li>Add HAL_SMBUSEx_EnableWakeUp() and HAL_SMBUSEx_DisableWakeUp() APIs.</li>
</ul></li>
</ul></li>
</ul></li>
<li><strong>HAL ETH</strong>
<ul>
<li>Entire receive process reworked.</li>
<li>Resolve the problem of received data corruption.</li>
<li>Implement transmission in interrupt mode.</li>
<li>Handle one interrupt for multiple transmitted packets.</li>
<li>Implement APIs to handle PTP feature.</li>
<li>Implement APIs to handle Timestamp feature.</li>
<li>Add support of receive buffer unavailable.</li>
<li>Update HAL_ETH_IRQHandler() to handle receive buffer unavailable.</li>
</ul></li>
<li><strong>HAL/LL USB</strong>
<ul>
<li>Update to report correct received amount of data with USB DMA enabled</li>
<li>Update USB IRQ handler to enable EP OUT disable</li>
<li>Add support of USB IN/OUT Iso incomplete</li>
<li>Fix USB BCD data contact timeout</li>
</ul></li>
</ul>
<h2 id="known-limitations-3">Known Limitations</h2>
<ul>
<li>None</li>
</ul>
<h2 id="backward-compatibility-3">Backward compatibility</h2>
<ul>
<li>Compatibility break with HAL ETH driver V1.10.0 available within STM32CubeFW_H7 V1.9.0</li>
</ul>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section14" aria-hidden="true"> <label for="collapse-section14" aria-hidden="true"><strong>V1.10.1 / 06-December-2021</strong></label>
<div>
<h2 id="main-changes-4">Main Changes</h2>
<ul>
<li>General updates to fix known defects and implementation enhancements.</li>
<li>All source files: update disclaimer to add reference to the new license agreement.</li>
<li><strong>HAL RCC</strong>
<ul>
<li>Fix issue where HSI is not taken into account in HAL_RCC_OscConfig.</li>
</ul></li>
<li><strong>HAL FLASH</strong>
<ul>
<li>Update to fix error checking issue when optimization is set to high.</li>
</ul></li>
<li><strong>HAL GPIO</strong>
<ul>
<li>Reorder EXTI configuration sequence in order to avoid unexpected level detection.</li>
</ul></li>
<li><strong>HAL EXTI</strong>
<ul>
<li>Update HAL_EXTI_GetConfigLine() API to set default configuration value of Trigger and GPIOSel before checking each corresponding registers.</li>
</ul></li>
<li><strong>HAL/LL ADC</strong>
<ul>
<li>Fix issue where an error state is returned by the IRQ handler in case of injection conversion in IT mode with trigger timer.</li>
<li>Add missing injected external trigger to IS_ADC_EXTTRIGINJEC() macro.</li>
<li>Add two new APIs to simplify internal channel configuration (LL_ADC_SetCommonPathInternalChAdd and LL_ADC_SetCommonPathInternalChRem).</li>
<li>assert_param() now checks for continuous and discontinuous mode exclusivity.</li>
<li>Update LL ADC driver to correctly configure the ADC3 resolution on some devices.</li>
</ul></li>
<li><strong>HAL TIM</strong>
<ul>
<li>Manage the Bi-directional break input feature for the concerned part numbers.</li>
<li>Update input capture measurement in DMA mode to avoid zero return values at high frequencies.</li>
<li>Update HAL_TIMEx_ConfigBreakInput to use CMSIS TIM1_OR2_BKDF1BK0E_Pos definition instead of its hard coded value.</li>
<li>Fix wrong compile switch used in TIM_LL_EC_DMABURST_BASEADDR constant definitions.</li>
</ul></li>
<li><strong>HAL UART</strong>
<ul>
<li>Fix erroneous UART’s handle state in case of error returned after DMA reception start within UART_Start_Receive_DMA().</li>
<li>Correct UART ReceptionType management in case if ReceptionToIdle API being called from RxEvent callback.</li>
<li>Handling of UART concurrent register access in case of race condition between TX and RX transfers (HAL UART and LL LPUART).</li>
<li>Improve header description of UART_WaitOnFlagUntilTimeout() function.</li>
<li>Add a check on the UART parity before enabling the parity error interruption.</li>
<li>Add const qualifier for read only pointers in API prototypes.</li>
<li>Fix wrong cast when computing the USARTDIV value in UART_SetConfig().</li>
</ul></li>
<li><strong>HAL/LL USART</strong>
<ul>
<li>Improve header description of USART_WaitOnFlagUntilTimeout() function.</li>
<li>Add a check on the USART parity before enabling the parity error interrupt.</li>
<li>Add const qualifier for read only pointers for API prototypes.</li>
<li>Handling of UART concurrent register access in case of race condition between TX and RX transfers (HAL UART and LL LPUART).</li>
<li>Fix compilation warnings generated with ARMV6 compiler.</li>
</ul></li>
<li><strong>LL LPUART</strong>
<ul>
<li>Remove TXFECF reference from LL LPUART driver.</li>
</ul></li>
<li><strong>HAL SMBUS</strong>
<ul>
<li>Add Fm+ support to SMBus to be rev3 compliant.</li>
<li>Add the support of wake up capability.</li>
<li>Add new APIs:
<ul>
<li>HAL_SMBUSEx_EnableWakeUp()</li>
<li>HAL_SMBUSEx_DisableWakeUp()</li>
</ul></li>
<li>Update to fix issue of mismatched data received by master in case of data size to be transmitted by the slave is greater than the data size to be received by the master.</li>
<li>Add flush on TX register.</li>
</ul></li>
<li><strong>HAL I2C</strong>
<ul>
<li>Updated I2C_IsAcknowledgeFailed() API to avoid I2C in busy state if NACK received after transmitting register address.</li>
<li>Fix written reserved bit 28 in I2C_CR2 register</li>
<li>Update to handle errors in polling mode.</li>
<li>Rename I2C_IsAcknowledgeFailed() to I2C_IsErrorOccurred() and correctly manage when error occurs.</li>
<li>Update to fix issue detected due to low system frequency execution (HSI).</li>
<li>Declare an internal macro link to DMA macro to check remaining data: I2C_GET_DMA_REMAIN_DATA.</li>
</ul></li>
<li><strong>HAL LPTIM</strong>
<ul>
<li>Add check on PRIMASK register to prevent from enabling unwanted global interrupts within LPTIM_Disable() and LL_LPTIM_Disable().</li>
</ul></li>
<li><strong>HAL Generic</strong>
<ul>
<li>Fix HAL_Init_Tick() priority handling for alternate (non SysTick) time bases.</li>
</ul></li>
<li><strong>HAL IRDA</strong>
<ul>
<li>Improve header description of IRDA_WaitOnFlagUntilTimeout() function.</li>
<li>Add a check on the IRDA parity before enabling the parity error interrupt.</li>
<li>Add const qualifier for read only pointers for API prototypes.</li>
<li>Fix wrong cast when computing the USARTDIV value in IRDA_SetConfig().</li>
</ul></li>
<li><strong>HAL RTC_BKP</strong>
<ul>
<li>Add an exit condition to the RTC_EnterInitMode and HAL_RTC_DeInit functions to avoid the infinite loop when initializing and de-initializing the RTC.</li>
<li>Add use of macros _\_RTC_<>_EXTI_ENABLE_IT() in case of DUAL_CORE configuration inside functions HAL_RTC_SetAlarm_IT(), HAL_RTCEx_SetWakeUpTimer_IT(),HAL_RTCEx_SetTimeStamp_IT(), and HAL_RTCEx_SetTamper_IT().</li>
</ul></li>
<li><strong>HAL DBGMCU</strong>
<ul>
<li>In Legacy/stm32_hal_legacy.h, exclude HAL_EnableDBG<em>Mode() HAL_DisableDBG</em>Mode() declarations as still defined in stm32h7xx_hal.c.</li>
</ul></li>
<li><strong>HAL NOR</strong>
<ul>
<li>Align HAL_NOR_Init() API with core of the function when write operation is disabled to avoid HardFault.</li>
</ul></li>
<li><strong>HAL SDMMC</strong>
<ul>
<li>Fix an issue with HAL_SD_GetCardState().</li>
<li>Fix to take into consideration if the received RCA is 0x0 or not.</li>
</ul></li>
<li><strong>LL RTC_BKP</strong>
<ul>
<li>Fix IS_LL_RTC_MONTH assert check.</li>
</ul></li>
<li><strong>HAL DMA</strong>
<ul>
<li>Update HAL_DMA_IRQHandler() API to set the DMA state before unlocking access to the DMA handle.</li>
<li>Manage the case of an invalid value of CallbackID passed to the HAL_DMA_RegisterCallback() API.</li>
</ul></li>
<li><strong>HAL SMARTCARD</strong>
<ul>
<li>Improve header description of SMARTCARD_WaitOnFlagUntilTimeout() function.</li>
<li>Add const qualifier for read only pointers in API prototypes.</li>
<li>Fix wrong cast when computing the USARTDIV value in SMARTCARD_SetConfig().</li>
</ul></li>
<li><strong>LL HSEM</strong>
<ul>
<li>Fix an issue where LL_HSEM_1StepLock uses HSEM_R_LOCK instead of HSEM_RLR_LOCK while checking the RLR register.</li>
</ul></li>
<li><strong>HAL RNG</strong>
<ul>
<li>Add check to avoid false timeout detection in case of preemption.</li>
</ul></li>
<li><strong>HAL ETH</strong>
<ul>
<li>Correct wrong call to DMAErrorCallback() instead of MACErrorCallback().</li>
</ul></li>
<li><strong>HAL/LL USB</strong>
<ul>
<li>hal_hcd: fix added to avoid compiler otmization on count variable used for USB HAL timeout loop check.</li>
<li>hal_pcd: added missing registered callbacks check for HAL_HCD_HC_NotifyURBChange_Callback().</li>
<li>hal_pcd: New API HAL_PCD_SetTestMode() added to handle USB device high speed Test modes.</li>
<li>hal_pcd: setting SNAK for EPs not required during device reset.</li>
<li>ll_USB: change added in USB_SetCurrentMode to improve required wait timing to change core mode.</li>
<li>ll_USB: remove non required 200ms delay during host initialization.</li>
<li>ll_USB: fix added to USB_FlushRxFifo() and USB_FlushTxFifo() APIs by adding check on AHB master IDLE state before flushing the USB FIFO.</li>
<li>ll_USB: fix added to avoid resetting host channel direction during channel halt.</li>
</ul></li>
<li><strong>HAL USB_OTG</strong>
<ul>
<li>USB LL driver fix on USB_HC_Halt() function, should not clear channel direction during halt.</li>
<li>USB HAL: fix unexpected HAL_TIMEOUT during USB core reset due to compiler optimization.</li>
</ul></li>
<li><strong>HAL IWDG</strong>
<ul>
<li>Add LSI startup time in default IWDG timeout calculation (HAL_IWDG_DEFAULT_TIMEOUT).</li>
</ul></li>
</ul>
<h2 id="known-limitations-4">Known Limitations</h2>
<ul>
<li><strong>HAL/ETH</strong>
<ul>
<li>A full rework of the ETH HAL driver is planned in order to fix several issues including better synchronization with TCPIP stack for instance LwIP</li>
</ul></li>
</ul>
<h2 id="backward-compatibility-4">Backward compatibility</h2>
<ul>
<li>None</li>
</ul>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section13" aria-hidden="true"> <label for="collapse-section13" aria-hidden="true"><strong>V1.10.0 / 12-February-2021</strong></label>
<div>
<h2 id="main-changes-5">Main Changes</h2>
<ul>
<li><p>General updates to fix known defects and implementation enhancements</p></li>
<li><p>Fix minor issues related to English typo in comments</p></li>
<li>Update stm32h7xx_hal_def.h implementation to support MDK-ARM AC6 compiler
<ul>
<li>Notes:
<ul>
<li>Only HAL and LL driver are compliant with MDK-ARM AC6 compiler. No warning on these drivers when using “AC5-like warning” in MDK-ARM project settings<br />
</li>
<li>Template projects updated with “Use default compiler version 6” setting and “AC5-like warning” setting</li>
</ul></li>
</ul></li>
<li><strong>HAL</strong>:
<ul>
<li>stm32h7xx_hal.h and stm32h7xx_hal.c:
<ul>
<li>Fix implementation values of SYSCFG_VREFBUF_VOLTAGE_SCALE0 to SYSCFG_VREFBUF_VOLTAGE_SCALE3 defines</li>
<li>Delimit “HAL_EnableDomain3DBGStopMode” and “HAL_DisableDomain3DBGStopMode” APIs with the presence of the “DBGMCU_CR_DBG_STOPD3” field definition (from the CMSIS device header file)<br />
</li>
<li>Delimit “HAL_EnableDomain3DBGStandbyMode” and “HAL_DisableDomain3DBGStandbyMode” APIs with the presence of the “DBGMCU_CR_DBG_STANDBYD3” field definition (from the CMSIS device header file)</li>
<li>Update comments of HAL_EnableCompensationCell and HAL_DisableCompensationCell according to the STM32H7 product data-sheet</li>
</ul></li>
<li>stm32h7xx_hal_conf_template.h:
<ul>
<li>Update HSE_STARTUP_TIMEOUT define value to 100 ms instead of 5000 ms</li>
<li>Update USE_SD_TRANSCEIVER define default value to zero Notes: This define shall be set in the target project according to the given board: set to 1 in case of an SD transceiver is present or zero if not</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL ADC</strong>:
<ul>
<li>stm32h7xx_hal_adc.h:
<ul>
<li>stm32h7xx_hal_adc_ex.h: Update IS_ADC_RIGHT_BIT_SHIFT macro implementation to add support for ADC_RIGHTBITSHIFT_9, ADC_RIGHTBITSHIFT_10 and ADC_RIGHTBITSHIFT_11 values</li>
</ul></li>
<li>stm32h7xx_hal_adc.c/stm32h7xx_hal_adc_ex.c:
<ul>
<li>Update timeout mechanism to avoid false timeout detection in case of preemption</li>
</ul></li>
</ul></li>
<li><strong>HAL CEC</strong>:
<ul>
<li>stm32h7xx_hal_cec.c:
<ul>
<li>Update “HAL_CEC_IRQHandler” implementation to avoid extra byte sent with CEC command</li>
</ul></li>
</ul></li>
<li><strong>HAL CRYP</strong>:
<ul>
<li>stm32h7xx_hal_cryp.h:
<ul>
<li>Update CRYP_ConfigTypeDef structure to add “DataWidthUnit” field allowing to set the header width unit</li>
</ul></li>
<li>stm32h7xx_hal_cryp.c:
<ul>
<li>Update the implementation of the “CRYP_GCMCCM_SetHeaderPhase” function to support the header width unit setting</li>
</ul></li>
<li>stm32h7xx_hal_cryp_ex.c:
<ul>
<li>Update the implementation of the “HAL_CRYPEx_AESGCM_GenerateAuthTAG” function to support the header width unit setting</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL EXTI</strong>:
<ul>
<li>stm32h7xx_hal_exti.h:
<ul>
<li>Update IS_EXTI_PROPERTY to IS_EXTI_CONFIG_LINE macros implementation using “<strong>EXTI_LINE</strong>” instead of “<strong>LINE</strong>” o avoid clash with compiler key word “<strong>LINE</strong>”</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL ETH</strong>:
<ul>
<li>stm32h7xx_hal_eth.h:
<ul>
<li>New private fields “PacketAddress”, “CurrentPacketAddress” and “BuffersInUse” added to the “ETH_TxDescListTypeDef” structure</li>
</ul></li>
<li>stm32h7xx_hal_eth.c:
<ul>
<li>Update implementation of “ETH_Prepare_Tx_Descriptors” function to improve TX performance using the above “ETH_TxDescListTypeDef” structure new fields</li>
</ul></li>
<li>Notes:
<ul>
<li>This implementation allows to improve packet transmission performance using NetX Duo TCPIP stack, however a more elaborated implementation will be provided in next release</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL FLASH</strong>:
<ul>
<li>stm32h7xx_hal_flash_ex.h:
<ul>
<li>Remove unused defines “OB_WWDG_SW” and “OB_WWDG_HW” and corresponding “IS_OB_WWDG_SOURCE” macro</li>
<li>Delimit “OB_SWAP_BANK_DISABLE” and “OB_SWAP_BANK_ENABLE” defines with “#if defines (DUAL_BANK)” as swap bank is available for dual bank devices only. same for macro “IS_OB_USER_SWAP_BANK”</li>
<li>Update “OB_USER_ALL” macro implementation with variants for dual bank, single bank, dual core and single core devices</li>
</ul></li>
<li>stm32h7xx_hal_flash.c:
<ul>
<li>Update “HAL_FLASH_Program” description with details for “FlashAddress” and “DataAddress” alignment requirements</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL GPIO</strong>:
<ul>
<li>stm32h7xx_hal_gpio.c:
<ul>
<li>Update and fix HAL_GPIO_TogglePin implementation to allow toggle of multiple pin</li>
</ul></li>
<li>stm32h7xx_ll_gpio.h:
<ul>
<li>Update and fix LL_GPIO_TogglePin implementation to allow toggle of multiple pin</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL HRTIM</strong>:
<ul>
<li>stm32h7xx_hal_hrtim.c:
<ul>
<li>Update HRTIM_HRTIM_ISR implementation to optimize the read flags</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL IWDG</strong>:
<ul>
<li>stm32h7xx_hal_iwdg.c:
<ul>
<li>Update timeout mechanism to avoid false timeout detection in case of preemptio</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL LPTIM</strong>
<ul>
<li>stm32h7xx_hal_lptim.c:
<ul>
<li>Update “HAL_LPTIM_Init” implementation to improve behavior for external clock configuration</li>
</ul></li>
</ul></li>
<li><strong>HAL NAND</strong>:
<ul>
<li>stm32h7xx_hal_nand.c:
<ul>
<li>Update implementation of “HAL_NAND_Read_SpareArea_16b” and “HAL_NAND_Write_SpareArea_16b” to fix an issue with the spare area Column address calculation</li>
<li>Update implementation of “HAL_NAND_Write_Page_16b” and “HAL_NAND_Read_Page_16b” APIs implementation to fix an issue with the page calculation of 8 bits memories</li>
</ul></li>
</ul></li>
<li><strong>HAL NOR</strong>:
<ul>
<li>stm32h7xx_hal_nor.c:
<ul>
<li>Fix “HAL_NOR_ProgramBuffer” API implementation regarding the current and end address calculation</li>
<li>Update NOR APIs implementation to support some specific memories</li>
</ul></li>
</ul></li>
<li><strong>HAL RCC</strong>:
<ul>
<li>stm32h7xx_hal_rcc.c:
<ul>
<li>Update “HAL_RCC_DeInit” implementation to reset “HSEEXT” field</li>
</ul></li>
<li>stm32h7xx_hal_rcc_ex.c:
<ul>
<li>Update “HAL_RCCEx_PeriphCLKConfig” implementation with CEC Configuration</li>
<li>Update “HAL_RCCEx_GetPeriphCLKFreq” implementation to:
<ul>
<li>Check oscillator ready flag</li>
<li>Get FDCAN clock source</li>
</ul></li>
<li>Update implementation of “HAL_RCCEx_GetPLL1ClockFreq” to use HSI in default case as per the specification</li>
</ul></li>
</ul></li>
<li><strong>HAL RNG</strong>:
<ul>
<li>stm32h7xx_hal_rng.h:
<ul>
<li>Add “RNG_RecoverSeedError” function prototype</li>
</ul></li>
<li>stm32h7xx_hal_rng.c:
<ul>
<li>Update “HAL_RNG_GenerateRandomNumber” function implementation to check seed error if any</li>
<li>Update “HAL_RNG_IRQHandler” function implementation to check seed error if any</li>
<li>Add “RNG_RecoverSeedError” function</li>
</ul></li>
<li>stm32h7xx_hal_rng_ex.h:
<ul>
<li>Add “HAL_RNGEx_RecoverSeedError” API prototype</li>
</ul></li>
<li>stm32h7xx_hal_rng_ex.c:
<ul>
<li>Add “HAL_RNGEx_RecoverSeedError” function</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL SDMMC</strong>:
<ul>
<li>stm32h7xx_hal_mmc.c:
<ul>
<li>Update implementation of “HAL_MMC_Init” function to support SDMMC power class</li>
<li>Add “HAL_MMC_GetCardExtCSD” function to get card extended information<br />
</li>
<li>Update “HAL_MMC_ConfigWideBusOperation” function implementation to support SDMMC power class</li>
<li>Update “HAL_MMC_ConfigSpeedBusOperation” function implementation to adapt the speed to the card type</li>
<li>Update “HAL_MMC_GetSupportedSecRemovalType” function implementation to support Secure Removal type</li>
<li>Update “HAL_MMC_InitCard” implementation to avoid potential division by zero</li>
<li>Update to support native 4KB sector size<br />
</li>
</ul></li>
<li>stm32h7xx_hal_mmc_ex.c
<ul>
<li>Update to support native 4KB sector size</li>
</ul></li>
<li>stm32h7xx_hal_mmc.h:
<ul>
<li>Add eMMC_DUAL_VOLTAGE_RANGE and eMMC_LOW_VOLTAGE_RANGE voltage mode</li>
<li>Add prototype for HAL_MMC_GetCardExtCSD API</li>
</ul></li>
<li>stm32h7xx_hal_sd.c:
<ul>
<li>Update “HAL_SD_InitCard” implementation to avoid potential division by zero</li>
</ul></li>
<li>stm32h7xx_ll_sdmmc.c
<ul>
<li>Add “SDMMC_CmdSetRelAddMmc” function to set relative address</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL SPI</strong>
<ul>
<li>Update “HAL_SPI_TransmitReceive_IT” implementation to disable RXP and TXP interrupt when DXP is enabled</li>
<li>Update “HAL_SPI_Init” implementation with NSS Software Management</li>
<li>stm32h7xx_ll_spi.c:
<ul>
<li>Update “LL_SPI_Init” implementation to set the internal SS level</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL TIM</strong>:
<ul>
<li>stm32h7xx_ll_tim.h:
<ul>
<li>Fix “LL_TIM_GetCounterMode” implementation to handle all possible return combinations</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL UART</strong>:
<ul>
<li>stm32h7xx_hal_uart.h:
<ul>
<li>Add “HAL_UART_RxTypeTypeDef” type with possible values HAL_UART_RECEPTION_STANDARD, HAL_UART_RECEPTION_TOIDLE, HAL_UART_RECEPTION_TORTO or HAL_UART_RECEPTION_TOCHARMATCH</li>
<li>Update “UART_HandleTypeDef” structure to add “RxEventCallback”</li>
<li>Add “pUART_RxEventCallbackTypeDef” type</li>
</ul></li>
<li>stm32h7xx_hal_uart_ex.h:
<ul>
<li>Add APIs prototypes: HAL_UARTEx_ReceiveToIdle, HAL_UARTEx_ReceiveToIdle_IT and HAL_UARTEx_ReceiveToIdle_DMA</li>
</ul></li>
<li>stm32h7xx_hal_uart.c:
<ul>
<li>Update “HAL_UART_DeInit” implementation to set the “ReceptionType” to HAL_UART_RECEPTION_STANDARD<br />
</li>
<li>Add “HAL_UART_RegisterRxEventCallback” and “HAL_UART_UnRegisterRxEventCallback” APIs implementation</li>
<li>Update “HAL_UART_Receive”, “HAL_UART_Receive_IT” and “HAL_UART_Receive_DMA” to set the “ReceptionType” to HAL_UART_RECEPTION_STANDARD</li>
<li>Update “HAL_UART_Abort”, “HAL_UART_AbortReceive”, “HAL_UART_Abort_IT” and “HAL_UART_AbortReceive_IT” to disable IDLEIE interrupt in case of reception till IDLE</li>
<li>Update “HAL_UART_IRQHandler” to handle reception till IDLE</li>
<li>Add “HAL_UARTEx_RxEventCallback” weak callback</li>
</ul></li>
<li>stm32h7xx_hal_uart_ex.c:
<ul>
<li>Add “HAL_UARTEx_ReceiveToIdle”, “HAL_UARTEx_ReceiveToIdle_IT” and “HAL_UARTEx_ReceiveToIdle_DMA” APIs implementation</li>
</ul></li>
<li>stm32h7xx_ll_lpuart.h
<ul>
<li>Update “LL_LPUART_SetBaudRate” implementation to avoid potential division by zero</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL USART</strong>:
<ul>
<li>stm32h7xx_ll_usart.h:
<ul>
<li>Update “LL_USART_SetBaudRate” implementation to avoid potential division by zero</li>
</ul></li>
</ul></li>
<li><strong>HAL/LL USB</strong>:
<ul>
<li>Update to ensure to have coherency between USB APIs start and stop which should mainly control device connect and disconnect of the USB RPU</li>
<li>Fix ping with DMA OFF, fix Data toggle issue with DMA multi max packet size transfers and clean up device and core speeds</li>
<li>Enhance Host CH ERR and halt management</li>
<li>Update to notify MW upper layers when transaction completes with an error</li>
<li>Update to fix USB OTG read FIFO packet in stm32h7xx_ll_usb.c file</li>
<li>Update to support USB OTG FIFO with scatter gather</li>
</ul></li>
<li><strong>LL SYSTEM</strong>:
<ul>
<li>stm32h7xx_ll_system.h:
<ul>
<li>Update LL_SYSCFG_EnableCompensationCell and LL_SYSCFG_DisableCompensationCell according to the STM32H7 product data-sheet</li>
</ul></li>
</ul></li>
</ul>
<h2 id="known-limitations-5">Known Limitations</h2>
<ul>
<li><strong>HAL/ETH</strong>
<ul>
<li>A full rework of the ETH HAL driver is planned in order to fix several issues including better synchronization with TCPIP stack for instance LwIP</li>
</ul></li>
</ul>
<h2 id="backward-compatibility-5">Backward compatibility</h2>
<ul>
<li>None</li>
</ul>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section12" aria-hidden="true"> <label for="collapse-section12" aria-hidden="true"><strong>V1.9.0 / 29-May-2020</strong></label>
<div>
<h2 id="main-changes-6">Main Changes</h2>
<ul>
<li>First official release of the STM32CubeH7 Firmware Package supporting <strong>STM32H72x/3x</strong> new devices</li>
<li>General updates to fix known defects and implementation enhancements</li>
<li><strong>HAL</strong>: generic, Update to support <strong>STM32H72x/3x</strong> new devices
<ul>
<li>stm32h7xx_hal.h:
<ul>
<li>Add SYSCGF defines for Adc2 Alternate Connection on Vinp[16] and Vinp[17]</li>
<li>Add HAL_SYSCFG_ADC2ALT_Rout0Config and HAL_SYSCFG_ADC2ALT_Rout1Config APIs allowing to configure Adc2 Alternate Connection on Vinp[16] or Vinp[17]<br />
</li>
<li>Update EXTI lines definitions for <strong>STM32H72x/3x</strong> devices</li>
<li>Add __HAL_DBGMCU_FREEZE_I2C5/__HAL_DBGMCU_UnFreeze_I2C5, __HAL_DBGMCU_FREEZE_TIM23/__HAL_DBGMCU_UnFreeze_TIM23 and __HAL_DBGMCU_FREEZE_TIM24/__HAL_DBGMCU_UnFreeze_TIM24 macros</li>
</ul></li>
<li>stm32h7xx_hal_conf_template.h:
<ul>
<li>Add CORDIC and FMAC modules enabling (new peripherals in STM32H723xx/33xx/25xx/35xx/30xx devices)</li>
<li>Add CORDIC and FMAC register callback enabling</li>
</ul></li>
<li>stm32h7xx_hal.c: