-
Notifications
You must be signed in to change notification settings - Fork 0
/
Keil.STM32F4xx_DFP.pdsc
3796 lines (3122 loc) · 233 KB
/
Keil.STM32F4xx_DFP.pdsc
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
<?xml version="1.0" encoding="UTF-8"?>
<package schemaVersion="1.7.36" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="https://raw.githubusercontent.com/Open-CMSIS-Pack/Open-CMSIS-Pack-Spec/v1.7.36/schema/PACK.xsd">
<vendor>Keil</vendor>
<name>STM32F4xx_DFP</name>
<description overview="Documents/OVERVIEW.md">STMicroelectronics STM32F4 Series Device Support</description>
<url>https://www.keil.com/pack/</url>
<repository type="git">https://github.com/Open-CMSIS-Pack/STM32F4xx_DFP.git</repository>
<license>LICENSE</license>
<licenseSets>
<licenseSet id="all" default="true" gating="true">
<license name="LICENSE" title="Apache 2.0 open-source license" spdx="Apache-2.0"/>
</licenseSet>
</licenseSets>
<releases>
<release version="3.0.0-dev">
Updated for new CMSIS-Toolbox CubeMX integration
Removed CMSIS Drivers
Removed STM32CubeMX_FW_F4
Removed board drivers (ADC, Audio, Buttons, GLCD, Joystick, LED, Touch...)
Removed all examples
Updated SVD files
Removed previous generator (gpdsc)
Added new global generator
Package Description (pdsc):
- Removed Device:Startup component
- Removed Device:STM32Cube HAL components
- Removed Device:STM32Cube LL components
- Removed Board descriptions
- Removed BSP components
- Removed compile device header from device description
- Removed unused conditions
- Replaced documentation files with permalinks
- Updated memories regions
Added LICENSE file
</release>
<release version="2.17.1" date="2023-07-04">
Board Support:
- Updated emWin examples.
-- emWin LCD configuration for STM32F429I-Discovery.
</release>
<release version="2.17.0" date="2023-01-16">
Updated Pack to STM32Cube_FW_F4 Firmware Package version V1.27.1 using HAL Drivers V1.8.1.
CMSIS Device:
- Updated the list of devices to match STM32CubeMX
- Updated device files to V2.6.8
- Updated SVD files.
Board Support:
- Reworked Flash Algorithms.
- Added 32F469IDISCOVERY QSPI Flash Algorithm.
- Updated emWin examples.
-- emWin LCD configuration for 32F469IDISCOVERY and STM32F429I-Discovery.
CMSIS-Driver:
- CAN: Updated function GetTxFrameTime (solved potential LTO problems).
- EMAC: Updated functions GetRxFrameTime and GetTxFrameTime (solved potential LTO problems).
- I2C: Made variables status and cnt volatile (solved potential LTO problems).
- MCI: Made variable status volatile (solved potential LTO problems).
- SPI:
-- Corrected functionality when using DMA mode.
-- Made variables status, num, rx_cnt and tx_cnt volatile (solved potential LTO problems).
- USART:
-- Corrected Rx overflow interrupt handling.
-- Corrected Send function (removed stat variable).
-- Made variables status, rx_num tx_num, rx_cnt and tx_cnt volatile (solved potential LTO problems).
- USBD: Made variables usbd_state and num_transferred_total volatile (solved potential LTO problems).
</release>
<release version="2.16.0" date="2022-01-19">
Updated Pack to STM32Cube_FW_F4 Firmware Package version V1.7.13.
STM32CubeMX integration:
- Synchronized versions of generated component ::Device:STM32Cube Framework:STM32CubeMX (in gpdsc) and its bootstrap (in pdsc).
Package Description (pdsc):
- Added global define USE_HAL_DRIVER to the component ::Device:STM32Cube HAL:Common.
- Added global define USE_FULL_LL_DRIVER to the component ::Device:STM32Cube LL:Common.
- Restructured board(32F469IDISCOVERY, STM32F429I-Discovery) components.
- Added debugProbe board description.
- Changed schemaVersion (1.7.2).
CMSIS-Driver:
- I2C: Corrected pins configuration.
- MCI: Added DMA stream abort when calling PowerControl with ARM_POWER_OFF.
- SPI:
-- Corrected PowerControl function to clear transfer info.
-- Corrected Control function (disable SPI and unconfigure Slave Select pin
when mode ARM_SPI_MODE_INACTIVE is activated, activate internal pull-up/down on
SCK pin according to clock/frame format setting, set Slave Select pin to
inactive state after ARM_SPI_SS_MASTER_SW is activated).
-- Corrected data lost detection before Reception/Transfer is started.
- USART:
-- Corrected capabilities with CTS change event not supported.
-- Corrected Uninitialize function to power off the peripheral if it is powered.
-- Corrected PowerControl function to return error if Initialize was not called
and clear transfer information when powered off.
-- Corrected Send function to not start reception in Synchronous Master mode
and clear Transmission Complete status before starting Tx transfer (in DMA mode).
-- Corrected GetTxCount to return 0 if send was not activated (in DMA mode).
-- Corrected GetRxCount to return 0 if receive was not activated (in DMA mode).
-- Corrected Control function to for abort Send/Transfer wait for already loaded frame to be sent,
abort also Transmit if Receive in Synchronous Master mode is active,
enable Tx (implicitly) if Rx is enabled for Synchronous Master mode,
enable parity error detection if parity usage is configured, use pull-up on Rx pin,
use pull-up on RTS/CTS pins.
-- Corrected Tx pin configuration in single-wire mode.
-- Corrected GetStatus to return all inactive status bits if USART is not powered.
-- Corrected Interrupt routine with corrected RX Timeout handling,
corrected break signal detection, commented that CTS event detection cannot work without flow control,
corrected Tx Complete signaling.
-- Corrected Tx DMA Handler Send complete signaling.
- USBH:
-- Fixed port resume occasionally getting stuck in resume signaling.
-- Added compile time configuration for reducing Bulk IN NAK rate.
-- USBH Device: Reduced duration of PowerControl when Power full is activated.
Updated Boards Examples:
- Updated Arm Compiler 6 to default compiler.
- Updated config files to CMSIS 5.8.0.
- Overrode default HAL_InitTick function.
- CubeMX: Migrated CubeMX projects to V6.4.0.
- 32F469IDISCOVERY: Added support for the target board revision.
- ST emWin Examples:Updated LCDConf.c (from ST pack).
Updated Documentation and SVD files.
</release>
<release version="2.15.0" date="2020-09-28">
Updated Pack to STM32Cube_FW_F4 Firmware Package version V1.25.1 using HAL Drivers V1.7.9.
STM32CubeMX integration (Version 6.0.1):
- Added support for Timebase Source TIMx (FrameworkCubeMX_gpdsc.ftl).
- Removed non-existent include path.
CMSIS Flash Algorithm: Corrected STM32F42xxx_43xxx_OPT Algorithm.
CMSIS SVD: Updated STM32F42*.svd, STM32F43*.svd files.
CMSIS-Driver:
- I2C: Corrected 2 byte reception in master mode.
- MCI: Replaced empty delay loops with _NOP().
- SPI:
-- Corrected PowerControl function (to return error if Initialize was
not called, to abort active transfer if power off was requested).
-- Updated GetDataCount function to give accurate count in DMA mode.
-- Corrected Control function (abort in DMA mode,
software controlled slave select in slave mode, TI Frame Format selection,
ignore bus speed for slave mode).
-- Corrected Uninitialize function (to power off the peripheral if it is powered).
-- Corrected SPI3_SCK pin configuration.
-- Corrected DMA MemDataAlignment configuration.
- USART: Corrected DMA MemDataAlignment configuration.
- USBD_HS/USBH_HS:
-- OTG_HS ULPI clock disabled in low power if internal PHY is used
to enable proper operation of OTG_HS port in FS mode during CPU sleep.
- CAN/EMAC/USBD/USBH:
-- Removed macros already provided by cmsis_compiler.h.
Updated Boards Examples:
- Migrated CubeMX projects to V6.0.1 and updated config files.
- Changed variant selection to "MDK-Plus" where possible.
- Updated all USB Host/Device examples with user templates from MDK-Middleware v7.11.1.
- Terminating app_main thread with osThreadExit() to avoid endless loop
- Updated MS Windows UBS driver files.
</release>
<release version="2.14.0" date="2019-07-24">
Warning: --C99 is no longer enforced via the device description. Enable 'C99 Mode' in 'Options for Target' dialog's 'C/C++' tab.
Updated Pack to include subset of STM32Cube_FW_F4 Firmware Package version V1.24.1 using HAL Drivers V1.7.6.
- Corrected RTE_Device.h UART5 pin configuration.
- MX_Device_h.ftl:
-- Updated parsing of USART virtual mode.
-- Updated generation of macros: Added handling for '(' and ')' symbols.
Corrected launching STM32CubeMX via "play" button for existing projects overwrites with a new STM32CubeMX project file instead of loading existing project.
Updated SVD files: Added SPI4RST missing field to STM32F401xE.svd, STM32F411xx.svd and STM32F412xG.svd.
Updated Flash Algorithm: Added new target for STM32F4xx_1536.FLM including fix for GetSecNum() in this target.
Updated Boards Examples:
- MCBSTM32F400:
-- Added USB Device RNDIS example.
-- GUI_VNC example GUIThread priority corrected from osPriorityIdle to osPriorityNormal.
- Updated File System Demo: corrected invalid free space value shown in case of unmounted drives.
- Graphics examples use Segger emWin version 5.50.0.
- All examples:
-- Enable Event Recorder in debug targets.
-- Updated LCDConf.c (ready for GUI_USE_ARGD = 1).
-- Terminating app_main thread with osThreadExit() to avoid endless loop.
CMSIS-Driver:
- All: corrected compiler warnings if GNU extensions is enabled in C/C++ settings for ARM Compiler 5.
- CAN:
-- Corrected SetBitrate function to leave Silent and Loopback mode as they were.
-- Corrected SetMode function to clear Silent and Loopback mode when NORMAL mode is activated.
-- Corrected MessageSend function to only access required data for sending.
- EMAC: ETH DMA initialization is done when MAC transmitter or receiver is enabled.
- I2C:
-- Corrected 10-bit addressing mode.
-- Corrected ARM_I2C_EVENT_BUS_CLEAR event signaling.
-- Replaced dead loop waiting with waiting with timeout.
- SPI: Added checking if pointer to SPI_PIN is valid, before it is used.
- USART:
-- Corrected POWER_OFF sequence. DMA is DeInitialized after it is aborted.
-- Added checking if pointer to USART_PIN is valid, before it is used.
- USB Device:
-- Updated USBD_EndpointConfigure function to check that maximum packet size requested fits into configured FIFO (compile time configured).
-- Corrected VBUS detection for STM32F469xx and STM32F479xx devices.
-- Corrected USBD_PowerControl function not to enable ULPI clock if external PHY is not enabled.
</release>
<release version="2.13.0" date="2018-04-03">
Updated Pack to STM32Cube_FW_F4 Firmware Package version V1.21.0.
- Updated HAL to version V1.7.4.
CMSIS-Driver:
- Added support for Arm Compiler 6.
- CAN:
-- Corrected abort message send functionality.
- SPI:
-- Corrected data shift register overrun in master mode.
Board Examples:
- Updated all examples:
-- Placing Event Recorder into non-initialized memory area.
-- Using ARM.CMSIS-Driver.2.2.0.pack and ARM.CMSIS.5.3.0.pack.
- Added Network SNMP_Agent example.
</release>
<release version="2.12.0" date="2018-02-22">
Updated Pack to STM32Cube_FW_F4 Firmware Package version V1.19.0.
- Reduced overall pack size by extracting only 'Drivers', 'Documentation' and 'Fonts' from Firmware Library pack.
- Updated HAL to version V1.7.3.
- Patching file: stm32f4xx_hal_def.h to support ARM Compiler 6.
Device Support:
- Updated file STM32F40x.svd (corrected TIM bitfield and display names).
- Added STM32F411xx Option Byte Flash Algorithm.
- Added OPT Flash Algorithms.
- Added STM32F4xx_1024dual.FLM Flash Algorithm.
- Added DBGMCU INI and DBGCONF files.
- Updated DebugDescription.
- Updated documentation.
CMSIS-Driver:
- CAN:
-- Corrected filter setting for adding/removing maskable Standard ID.
-- Corrected comment and code for CubeMX CAN interrupts settings (should be disabled).
-- Corrected SetBitrate function.
- EMAC:
-- Corrected transmit checksum offload for IPv4 fragmented packets.
- I2C:
-- Updated slave event handling.
- USART:
-- Corrected ARM_USART_SET_IRDA_PULSE control.
- USB Device:
-- HS driver: On-chip PHY powered down if external ULPI PHY is used.
-- Removed CMSIS-RTOS dependency.
-- Corrected high-bandwidth isochronous endpoint functionality.
- USB Host:
-- HS driver: On-chip PHY powered down if external ULPI PHY is used.
-- Removed CMSIS-RTOS dependency.
Board Examples:
- Added Board support and examples for the 32F469IDISCOVERY Board.
- Added USB Device WinUSB_Echo examples.
- Updated MCBSTM32F400 and STM32F429-Discovery Touch_STMPE811.c: corrected occasional incorrect coordinate reading, when touch screen is released.
- Updated emWin examples to emWin V5.46e.
- Updated all examples adding release and debug targets, using CMSIS-RTOS2 RTX and enabling the Event Recorder in debug targets.
- Updated LCDConf.c (versions which use ST HAL).
- Updated Board Support LED_*.c files.
- Updated USB Host examples thread stack settings.
- Removed MCBSTM32F400 board Network examples based on legacy Network API v6.
</release>
<release version="2.11.0" date="2016-12-07">
Added device support for subfamilies STM32F413, STM32F423
Updated Pack to STM32Cube_FW_F4 Firmware Package version V1.14.0
Updated HAL to version V1.6.0
Updated CMSIS drivers:
- CAN: updated pin configuration, added CAN3
- USART:
-- updated pin configuration, adding UART9, UART10
-- made I/O output speed configurable
- I2C: updated pin configuration
- SPI:
-- updated pin configuration
-- made I/O output speed configurable
- MCI: updated pin configuration/unconfiguration
- USB Device: Corrected resume event signaling
Updated RTE_Device.h:
- Updated DMA Configuration for USART3 and SPI4
Updated examples:
- Updated emWin examples to emWin V5.36f
- Updated USB Device CDC ACM VirtualCOM example (corrected initial UART receive size)
</release>
<release version="2.10.0" date="2016-09-20">
Add device variants STM32F410C8, STM32F410CB, STM32F410R8, STM32F410RB (LQFP48 and UFBGA64 packages)
Updated CMSIS drivers:
- USART: Added "Not Used" support for TX and RX pins
- SPI: Added "Not Used" support for MISO and MOSI pins
- CAN: Corrected clearing of overrun flag in interrupt routine
- USB Host: Corrected over-current pin configuration
Updated RTE_Device configuration file:
- Added "Not Used" support for SPI MOSI/MISO pins and USART TX/RX pins.
</release>
<release version="2.9.0" date="2016-05-31">
Added device support for subfamily STM32F412
- updated device list according STM32Cube V1.45.0
Updated Pack to STM32Cube_FW_F4 Firmware Package version V1.12.0
Updated HAL to version V1.5.0
Updated CMSIS drivers:
- CAN:
-- reflect changes from RTE_Device.h (Ver 2.4.1) adding pin configurations
-- corrected CAN2 initialization was disabling CAN1 filters
-- corrected receive overrun signaling
- USART: reflect changes from RTE_Device.h (Ver 2.4.1) adding pin configurations
- MCI: reflect changes from RTE_Device.h (Ver 2.4.1) adding pin configurations
- I2C: corrected rise time setting when using ARM_I2C_BUS_SPEED_FAST
- USB Device:
-- VBUS detection is selected automatically based on VBUS sensing pin setting (in RTE_Device.h or by STM32CubeMX)
-- Corrected initial resume signaling after USB Bus Reset
-- Corrected device status information
</release>
<release version="2.8.0" date="2016-04-14">
Updated CMSIS drivers:
- EMAC:
-- Corrected Ethernet PTP functionality
- CAN:
-- Corrected functionality when only one CAN controller is used
-- Corrected functionality when NULL pointer is provided for one or both signal callbacks in Initialize function call
- USB Host full-speed:
-- Removed interrupt priority handling
- USB Host high-speed:
-- Added DMA configuration to RTE_Device.h
-- Corrected wrong result of PipeTransferGetResult for In Pipe transfers in DMA mode
-- Added check to PipeTransfer function for 4-byte data alignment if DMA is used
-- Removed interrupt priority handling
- USART:
-- Corrected CTS handling and added signal CTS change event.
Updated examples:
- Updated emWin examples to emWin V5.32
- Updated CAN example
- Updated USB Host examples
- Updated USB Device CDC ACM VirtualCOM example for Keil MCBSTM32F400 evaluation board
</release>
<release version="2.7.0" date="2015-12-08">
Updated STMicroelectronics STM32CubeF4 Firmware Package to Version 1.10.0.
- updated affected examples
MDK-ARM configuration via STM32CubeMX:
- updated MX_Device.h generation: pin names characters '/', '-', ' ' converted to '_'
Added examples using Network DualStack (IPv4/IPv6) Middleware targeting MCBSTM32F400 (Keil.MDK-Middleware.7.0.0.pack required)
Updated all CMSIS drivers:
- Corrected PowerControl function for Unconditional Power Off
Updated USB Device CMSIS drivers:
- Updated handling of Isochronous transfer
- Updated IN Endpoint FIFO flush procedure
Updated USB Host CMSIS drivers:
- Corrected speed setting in high-speed port for On-chip Full-speed PHY
- Corrected low-speed device on high-speed port functionality
- Corrected multiple packet sending and PING functionality
- Added DMA for high-speed port driver to reduce CPU usage for USB (enabled by default)
- Renamed defines for overriding the maximum number of pipes used
from USBH_MAX_PIPE_NUM to USBH0_MAX_PIPE_NUM in full-speed driver, and
from USBH_MAX_PIPE_NUM to USBH1_MAX_PIPE_NUM for high-speed driver
Updated SPI driver:
- Corrected 8bit/16bit Data register access, regarding the Data frame size
Updated CAN driver:
- added possibility to use only CAN1
Updated EMAC driver:
- corrected return value of the ReadFrame function
Updated SVD files for STM32F427 and STM32F429 fixing inconsistencies and missing information
Added Debug Description to PDSC for trace configuration
</release>
<release version="2.6.0" date="2015-09-16">
Updated STMicroelectronics STM32CubeF4 Firmware Package to Version 1.8.0 adding device support for:
- STM32F410, STM32F469 and STM32F479 subfamilies
Introducing MDK-ARM configuration via STM32CubeMX:
- see documentation for component Device:STM32CubeFramework:STM32CubeMX
CMSIS driver:
- added CAN driver and configuration options in RTE_Device.h
- updated EMAC driver: corrected lockup after long runtime
- updated MCI driver: optimized Interrupt handler and corrected clock divider bypass handling
- updated SPI driver: added support for STM32F410xx devices
- updated USART driver:added support for STM32F410xx devices and corrected driver incorrectly stopped receiving data when calling the USART_Receive function while the receiver is busy
- update I2C driver: added support for STM32F410xx devices and corrected 3 byte reception and POS bit handling in master mode as well as corrected acknowledge handling in slave mode
MDK example projects:
- added examples created using MDK and STM32CubeMX: Blinky and emWin GUI_VNC for Keil MCBSTM32F400
- added CAN Data and RTR projects for Keil MCBSTM32F400
- updated FTP_Server example: Heap memory increased
- updated LCD configuration for STM32F429I-Discovery Kit (performance improvements and corrections for multi-layer)
</release>
<release version="2.5.0" date="2015-06-12">
Updated to STMicroelectronics STM32CubeF4 Firmware Package V1.6.0
Updated CMSIS drivers:
- I2C, MCI, EMAC, USB Device, USB Host, SPI, USART: Updated initialization, uninitialization and power procedures
- MCI: Corrected data timeout handling
- SPI:
-- Corrected status bit-field handling, to prevent race conditions
-- Corrected ARM_SPI_EVENT_DATA_LOST event generation in master mode at high bus speeds
-- Corrected bus speed configuration
- USART:
-- Corrected status bit-field handling, to prevent race conditions
-- Added RX TimeOut handling
- USB Device: Corrected transferred size during transfer
- USB Host:
-- Added pipe bus error signaling of active pipes on port disconnect
-- Corrected handling on error transfers
Updated MDK examples:
- Boards/Keil/MCBSTM32F400/Blinky
- USB Device Mass Storage Example
</release>
<release version="2.4.0" date="2015-03-20">
Required PACKs: ARM.CMSIS.4.3.0.pack, Keil.MDK-Middleware.6.3.0.pack, Keil.ARM_Compiler.1.0.0.pack
Updated devices:
- added STM32F446 Series
- removed STM32F411CCUx as it does not exist
Updated drivers:
- USB Host: Corrected signaling of STALL handshake
- USB Device:
-- Corrected IN ZLP sending
-- VBUS sensing disabled if ARM_USBD_VBUS_DETECT is not enabled
- USART: corrected when configured via STM32CubeMX
- I2C:
-- includes corrected when configured with STM32CubeMX
-- corrected slave mode and 10-bit addressing mode, I2C2 SDA pin configuration, Enable_GPIO_Clock() function
- MCI:
-- includes corrected when configured with STM32CubeMX
-- correction required due to device errata
-- added support for SD high speed bus mode
- SPI: corrected spi->info->mode handling
Updated examples:
- Compiler I/O software component is now used for I/O retargeting
- Updated Network examples for MCBSTM32F400 V1.2 board with KSZ8081RNA Ethernet PHY
Updated dependencies:
- Ethernet does not require CMSIS:RTOS
</release>
<release version="2.3.0" date="2014-12-11">
- USB Host:
-- corrected interrupt pipe behavior, and PING on high-speed driver, init/deinit and power control
-- added VBUS Power pin active high/low functionality, overcurrent state functionality (without event) added
- USB Device: prevent simultaneous IN writes to FIFO
- USART and SPI: corrected DMA transfer abort
- MCI: corrected setting of bus width
- EMAC: implemented function 'GetMacAddress'
- EMAC, I2C, MCI, USART, SPI and USBD: corrected some basic MISRA 2004 compliances like signedness, boolean operation on logical operators
Updated RTE_Device.h: added Receive and transmit DMA configuration for SDIO peripheral
Renamed SDIO component in 'Device::STM32Cube HAL' to 'SD' to match HAL component name
Updated examples:
- File_Demo and USB Host MassStorage examples updated due to the new fdelete() API in File System Version 6.2
- MCBSTM32F400 USB Host Keyboard example (removed USB High-speed usage)
- STM32F429I-Discovery Board USB Host examples config files and removed USB High-speed usage from Keyboard example
</release>
<release version="2.2.0" date="2014-10-16">
PACK based on STMicroelectronics STM32CubeF4 Firmware Package V1.3.0
- STD Peripheral Library components removed
New Device variants introduced matching ST Cube device database
- e.g. STM32F407IG -> STM32F407IGHx or STM32F407IGTx
CMSIS Drivers Version 2 (changed Cclass "Drivers" to "CMSIS Driver")
- Ethernet MAC, USART, I2C, MCI, SPI, USB Device, USB Host
MDK-ARM Example projects require MDK-Middleware 6.1.1 and CMSIS 4.2.0
- Board Support uses Board Interface API from MDK-Middleware (header file names changed)
- Boards: Keil MCBSTM32F400, ST Microelectronics STM32F429I-Discovery, STM32F401C-Discovery, STM32F4-Discovery
Difference to version 2.1.0:
- File stm32f4xx_hal_conf.h moved from component Device::STM32Cube HAL:Common into Device::STM32Cube Framework::Classic
- Updated RTE_Device and USB Device/Host, USART, MCI and SPI drivers
- Updated LCD board interface driver for STM32F429-I Discovery
- Updated ADC board interface driver for MCBSTM32F400
</release>
<release version="2.1.0" date="2014-09-29">
PACK Based on STMicroelectronics STM32CubeF4 Firmware Package V1.3.0
- STD Peripheral Library components removed
CMSIS Driver using API V2 for:
- Ethernet MAC, I2C, MCI, SPI, USB Device, USB Host
Board Support for:
- Keil MCBSTM32F400, ST Microelectronics STM32F429I-Discovery, STM32F401C-Discovery, STM32F4-Discovery
Device Support for:
- STM32F411 Series added
- STM32F4 Series updated
- Flash Size for STM32F401xD, STM32F401xE corrected
</release>
<release version="2.0.0">
Workshop Release not released publicly
</release>
<!--
<release version="1.0.8" date="2014-05-27">
Device: Startup files for GCC added, conditions extended to reflect toolchain dependencies
</release>
<release version="1.0.7" date="2014-04-29">
Updated UART driver (Added UART7,UART8)
Updated GPIO driver (Added UART7/UART8 alternate function)
Updated I2C driver (BUG Fix: 2 byte reception)
Device:StdPeriph Drivers:Framework Version: 1.3.1: added file misc.c
Device:Startup Version: 1.3.1: RTE_Device.h (Fixed preprocessor condition for ETH_MII_RX_ER Pin, Added UART7/UART8)
</release>
<release version="1.0.6">
Added MCBSTM32F400
Updated Features
Updated Flash Option Byte Programming
Added STM32F401C-Discovery Board Bundle
USB Device drivers update: multiple packet read, EP0 unconfiguration
Updated SPI driver (IRQ handling corrected)
Added STM Peripheral Library V1.3.0
</release>
<release version="1.0.5">
Added STM32F401 devices
</release>
<release version="1.0.4">
Updated drivers (namespace prefix ARM_ added)
</release>
<release version="1.0.3">
Added MCBSTM32F400 Board Support Bundle
Added STM32F4-Discovery Board Bundle
</release>
<release version="1.0.2">
Added emWin Example and GUIDemo for MCBSTM32F400
Added emWin LCD driver for MCBSTM32F400
Updated USBH Drivers (improved robustness)
</release>
<release version="1.0.1">
Generic Drivers moved to "Drivers" Class
Added UART and I2C Driver
Updated USBD and USBH Drivers
Added MCBSTM32F400 Demo example
Added MCBSTM32F400 USB Host Keyboard example
Added MCBSTM32F400 BSP Drivers: Joystick, Touchscreen, Accelerometer, Gyroscope, Camera
Updated MCBSTM32F400 BSP Driver: Keyboard
Updated STM32F4-Discovery BSP Driver: Keyboard
Updated all MCBSTM32F400 examples
Updated all STM32F4-Discovery examples
Minor corrections:
- SPI Driver
- DMA Driver
- MCI Driver
</release>
<release version="1.0.0">
Release version of STM32F4 Device Family Pack.
</release>
<release version="0.0.1">
Initial version of STM32F4 Device Family Pack.
</release>
-->
</releases>
<keywords>
<keyword>ST</keyword>
<keyword>Device Support</keyword>
<keyword>Device Family Package STMicroelectronics</keyword>
<keyword>STM32F4</keyword>
<keyword>STM32F4xx</keyword>
</keywords>
<devices>
<family Dfamily="STM32F4 Series" Dvendor="STMicroelectronics:13">
<processor Dcore="Cortex-M4" DcoreVersion="r0p1" Dfpu="1" Dmpu="1" Dendian="Little-endian"/>
<book name="https://www.st.com/resource/en/user_manual/um1725-description-of-stm32f4-hal-and-lowlayer-drivers-stmicroelectronics.pdf" title="STM32F4xx HAL Drivers"/>
<book name="https://developer.arm.com/documentation/dui0553/latest" title="Cortex-M4 Generic User Guide"/>
<description>
The STM32F4 family incorporates high-speed embedded memories and an extensive range of enhanced I/Os and peripherals connected to two APB buses, three AHB buses and a 32-bit multi-AHB bus matrix.
- 64-Kbyte of CCM (core coupled memory) data RAM
- LCD parallel interface, 8080/6800 modes
- Timer with quadrature (incremental) encoder input
- 5 V-tolerant I/Os
- Parallel camera interface
- True random number generator
- RTC: subsecond accuracy, hardware calendar
- 96-bit unique ID
</description>
<sequences>
<!-- Override for Pre-Defined Sequences -->
<sequence name="DebugDeviceUnlock">
<block>
Sequence("CheckID");
</block>
</sequence>
<sequence name="DebugCoreStart">
<block>
// Replication of Standard Functionality
Write32(0xE000EDF0, 0xA05F0001); // Enable Core Debug via DHCSR
// Device Specific Debug Setup
Write32(0xE0042004, DbgMCU_CR); // DBGMCU_CR: Configure MCU Debug
Write32(0xE0042008, DbgMCU_APB1_Fz); // DBGMCU_APB1_FZ: Configure APB1 Peripheral Freeze Behavior
Write32(0xE004200C, DbgMCU_APB2_Fz); // DBGMCU_APB1_FZ: Configure APB2 Peripheral Freeze Behavior
</block>
</sequence>
<!-- Override for Pre-Defined TraceStart Sequence -->
<sequence name="TraceStart">
<block>
__var traceSWO = (__traceout & 0x1) != 0; // SWO (asynchronous) Trace Selected?
__var traceTPIU = (__traceout & 0x2) != 0; // TPIU (synchronous) Trace Selected?
</block>
<control if="traceSWO">
<block>
Sequence("EnableTraceSWO"); // Call SWO Trace Setup
</block>
</control>
<control if="traceTPIU">
<block>
Sequence("EnableTraceTPIU"); // Call TPIU Trace Setup
</block>
</control>
</sequence>
<sequence name="TraceStop">
<block>
// Nothing required for SWO Trace
__var traceSWO = (__traceout & 0x1) != 0; // SWO enabled?
__var traceTPIU = (__traceout & 0x2) != 0; // Synchronous trace port enabled?
</block>
<control if="traceSWO">
<block>
Sequence("DisableTraceSWO");
</block>
</control>
<control if="traceTPIU">
<block>
Sequence("DisableTraceTPIU");
</block>
</control>
</sequence>
<!-- User-Defined Sequences -->
<sequence name="CheckID">
<block>
__var pidr1 = 0;
__var pidr2 = 0;
__var jep106id = 0;
__var ROMTableBase = 0;
__ap = 0; // AHB-AP
ROMTableBase = ReadAP(0xF8) & ~0x3;
pidr1 = Read32(ROMTableBase + 0x0FE4);
pidr2 = Read32(ROMTableBase + 0x0FE8);
jep106id = ((pidr2 & 0x7) << 4 ) | ((pidr1 >> 4) & 0xF);
</block>
<control if="jep106id != 0x20">
<block>
Query(0, "Not a genuine ST Device! Abort connection", 1);
Message(2, "Not a genuine ST Device! Abort connection.");
</block>
</control>
</sequence>
<sequence name="EnableTraceSWO">
<block>
__var dbgmcu_val = 0; // DBGMCU_CR Value
__var dbgmcu_trace_val = 0; // DBGMCU_CR Value
dbgmcu_val = Read32(0xE0042004) & (~0xE0); // Read DBGMCU_CR and clear trace setup
dbgmcu_trace_val = (1 << 5); // Trace I/O Enable + Trace Mode Asynchronous
Sequence("ConfigureTraceSWOPin");
</block>
<block info="configure Trace I/O Enable + Trace Mode Asynchronous">
Write32(0xE0042004, dbgmcu_val | dbgmcu_trace_val); // Write DBGMCU_CR: Trace Settings
</block>
</sequence>
<sequence name="DisableTraceSWO">
<block>
__var dbgmcu_val = 0; // DBGMCU_CR Value
</block>
<block info="unconfigure Trace I/O Enable + Trace Mode Asynchronous">
dbgmcu_val = Read32(0xE0042004) & (~0xE0); // Read DBGMCU_CR and clear trace setup
Write32(0xE0042004, dbgmcu_val); // Write DBGMCU_CR: Trace Settings
</block>
</sequence>
<sequence name="EnableTraceTPIU">
<block>
__var width = (__traceout & 0x003F0000) >> 16;
__var dbgmcu_val = 0; // DBGMCU_CR Value
__var dbgmcu_trace_val = 0; // DBGMCU_CR Value
dbgmcu_val = Read32(0xE0042004) & (~0xE0); // Read DBGMCU_CR and clear trace setup
Sequence("ConfigureTraceTPIUPins");
</block>
<control if="width >= 1" info="TPIU port width 1">
<block info="configure Trace I/O Enable + Trace Mode Synchronous 1 bit">
dbgmcu_trace_val = (3 << 5);
</block>
</control>
<control if="width >= 2" info="TPIU port width 2">
<block info="configure Trace I/O Enable + Trace Mode Synchronous 2 bit">
dbgmcu_trace_val = (5 << 5);
</block>
</control>
<control if="width >= 4" info="TPIU port width 4">
<block info="configure Trace I/O Enable + Trace Mode Synchronous 4 bit">
dbgmcu_trace_val = (7 << 5);
</block>
</control>
<block info="configure Trace I/O Enable + Trace Mode Asynchronous">
Write32(0xE0042004, dbgmcu_val | dbgmcu_trace_val); // Write DBGMCU_CR: Trace Settings
</block>
</sequence>
<sequence name="DisableTraceTPIU">
<block>
__var dbgmcu_val = 0; // DBGMCU_CR Value
</block>
<block info="unconfigure Trace I/O Enable + Trace Mode Synchronous">
dbgmcu_val = Read32(0xE0042004) & (~0xE0); // Read DBGMCU_CR and clear trace setup
Write32(0xE0042004, dbgmcu_val); // Write DBGMCU_CR: Trace Settings
</block>
</sequence>
<sequence name="ConfigureTraceSWOPin">
<block>
__var pin = 0;
__var port = 0;
__var portAdr = 0;
__var pos = 0;
__var SWO_Pin = 0x00010003; // PB3
</block>
<!-- configure SWO -->
<block info="configure SWO">
pin = ((SWO_Pin ) & 0x0000FFFF);
port = ((SWO_Pin >> 16) & 0x0000FFFF);
portAdr = 0x40020000 + (((SWO_Pin >> 16) & 0x0000FFFF) * 0x400);
pos = pin * 2;
Write32(0x40023830, ((Read32(0x40023830 ) ) | (1 << port)) ); // RCC_AHB1ENR: IO port clock enable
Write32(portAdr + 0x00, ((Read32(portAdr + 0x00) & ~( 3 << pos)) | (2 << pos )) ); // GPIOx_MODER: Set Mode (Alternate Function)
Write32(portAdr + 0x08, ((Read32(portAdr + 0x08) ) | (3 << pos )) ); // GPIOx_OSPEEDR: Set Speed (Very High Speed)
Write32(portAdr + 0x0C, ((Read32(portAdr + 0x0C) & ~( 3 << pos)) ) ); // GPIOx_PUPDR: Set I/O to no pull-up/pull-down
</block>
<control if="pin < 8">
<block>
pos = ((pin ) & 7) * 4;
Write32(portAdr + 0x20, ((Read32(portAdr + 0x20) & ~(15 << pos)) ) ); // GPIOx_AFRL: Alternate Function to AF0
</block>
</control>
<control if="pin >= 8">
<block>
pos = ((pin - 8) & 7) * 4;
Write32(portAdr + 0x24, ((Read32(portAdr + 0x24) & ~(15 << pos)) ) ); // GPIOx_AFRH: Alternate Function to AF0
</block>
</control>
</sequence>
<sequence name="ConfigureTraceTPIUPins">
<block>
__var pin = 8;
__var port = 0;
__var portAdr = 0;
__var pos = 0;
__var width = (__traceout & 0x003F0000) >> 16;
</block>
<!-- configure TRACECLK -->
<block info="configure TRACECLK">
pin = (TraceClk_Pin ) & 0x0000FFFF;
port = (TraceClk_Pin >> 16) & 0x0000FFFF;
portAdr = 0x40020000 + (((TraceClk_Pin >> 16) & 0x0000FFFF) * 0x400);
pos = pin * 2;
Write32(0x40023830, ((Read32(0x40023830 ) ) | (1 << port)) ); // RCC_AHB1ENR: IO port clock enable
Write32(portAdr + 0x00, ((Read32(portAdr + 0x00) & ~( 3 << pos)) | (2 << pos )) ); // GPIOx_MODER: Set Mode (Alternate Function)
Write32(portAdr + 0x08, ((Read32(portAdr + 0x08) ) | (3 << pos )) ); // GPIOx_OSPEEDR: Set Speed (Very High Speed)
Write32(portAdr + 0x0C, ((Read32(portAdr + 0x0C) & ~( 3 << pos)) ) ); // GPIOx_PUPDR: Set I/O to no pull-up/pull-down
</block>
<control if="pin < 8">
<block>
pos = ((pin ) & 7) * 4;
Write32(portAdr + 0x20, ((Read32(portAdr + 0x20) & ~(15 << pos)) ) ); // GPIOx_AFRL: Alternate Function to AF0
</block>
</control>
<control if="pin >= 8">
<block>
pos = ((pin - 8) & 7) * 4;
Write32(portAdr + 0x24, ((Read32(portAdr + 0x24) & ~(15 << pos)) ) ); // GPIOx_AFRH: Alternate Function to AF0
</block>
</control>
<control if="width >= 1" info="TPIU port width 1">
<!-- configure TRACED0 -->
<block info="configure TRACED0">
pin = (TraceD0_Pin ) & 0x0000FFFF;
port = (TraceD0_Pin >> 16) & 0x0000FFFF;
portAdr = 0x40020000 + (((TraceD0_Pin >> 16) & 0x0000FFFF) * 0x400);
pos = pin * 2;
Write32(0x40023830, ((Read32(0x40023830 ) ) | (1 << port)) ); // RCC_AHB1ENR: IO port clock enable
Write32(portAdr + 0x00, ((Read32(portAdr + 0x00) & ~( 3 << pos)) | (2 << pos )) ); // GPIOx_MODER: Set Mode (Alternate Function)
Write32(portAdr + 0x08, ((Read32(portAdr + 0x08) ) | (3 << pos )) ); // GPIOx_OSPEEDR: Set Speed (Very High Speed)
Write32(portAdr + 0x0C, ((Read32(portAdr + 0x0C) & ~( 3 << pos)) ) ); // GPIOx_PUPDR: Set I/O to no pull-up/pull-down
</block>
<control if="pin < 8">
<block>
pos = ((pin ) & 7) * 4;
Write32(portAdr + 0x20, ((Read32(portAdr + 0x20) & ~(15 << pos)) ) ); // GPIOx_AFRL: Alternate Function to AF0
</block>
</control>
<control if="pin >= 8">
<block>
pos = ((pin - 8) & 7) * 4;
Write32(portAdr + 0x24, ((Read32(portAdr + 0x24) & ~(15 << pos)) ) ); // GPIOx_AFRH: Alternate Function to AF0
</block>
</control>
</control>
<control if="width >= 2" info="TPIU port width 2">
<!-- configure TRACED1 -->
<block info="configure TRACED1">
pin = (TraceD1_Pin ) & 0x0000FFFF;
port = (TraceD1_Pin >> 16) & 0x0000FFFF;
portAdr = 0x40020000 + (((TraceD1_Pin >> 16) & 0x0000FFFF) * 0x400);
pos = pin * 2;
Write32(0x40023830, ((Read32(0x40023830 ) ) | (1 << port)) ); // RCC_AHB1ENR: IO port clock enable
Write32(portAdr + 0x00, ((Read32(portAdr + 0x00) & ~( 3 << pos)) | (2 << pos )) ); // GPIOx_MODER: Set Mode (Alternate Function)
Write32(portAdr + 0x08, ((Read32(portAdr + 0x08) ) | (3 << pos )) ); // GPIOx_OSPEEDR: Set Speed (Very High Speed)
Write32(portAdr + 0x0C, ((Read32(portAdr + 0x0C) & ~( 3 << pos)) ) ); // GPIOx_PUPDR: Set I/O to no pull-up/pull-down
</block>
<control if="pin < 8">
<block>
pos = ((pin ) & 7) * 4;
Write32(portAdr + 0x20, ((Read32(portAdr + 0x20) & ~(15 << pos)) ) ); // GPIOx_AFRL: Alternate Function to AF0
</block>
</control>
<control if="pin >= 8">
<block>
pos = ((pin - 8) & 7) * 4;
Write32(portAdr + 0x24, ((Read32(portAdr + 0x24) & ~(15 << pos)) ) ); // GPIOx_AFRH: Alternate Function to AF0
</block>
</control>
</control>
<control if="width >= 4" info="TPIU port width 4">
<!-- configure TRACED2 -->
<block info="configure TRACED2">
pin = (TraceD2_Pin ) & 0x0000FFFF;
port = (TraceD2_Pin >> 16) & 0x0000FFFF;
portAdr = 0x40020000 + (((TraceD2_Pin >> 16) & 0x0000FFFF) * 0x400);
pos = pin * 2;
Write32(0x40023830, ((Read32(0x40023830 ) ) | (1 << port)) ); // RCC_AHB1ENR: IO port clock enable
Write32(portAdr + 0x00, ((Read32(portAdr + 0x00) & ~( 3 << pos)) | (2 << pos )) ); // GPIOx_MODER: Set Mode (Alternate Function)
Write32(portAdr + 0x08, ((Read32(portAdr + 0x08) ) | (3 << pos )) ); // GPIOx_OSPEEDR: Set Speed (Very High Speed)
Write32(portAdr + 0x0C, ((Read32(portAdr + 0x0C) & ~( 3 << pos)) ) ); // GPIOx_PUPDR: Set I/O to no pull-up/pull-down
</block>
<control if="pin < 8">
<block>
pos = ((pin ) & 7) * 4;
Write32(portAdr + 0x20, ((Read32(portAdr + 0x20) & ~(15 << pos)) ) ); // GPIOx_AFRL: Alternate Function to AF0
</block>
</control>
<control if="pin >= 8">
<block>
pos = ((pin - 8) & 7) * 4;
Write32(portAdr + 0x24, ((Read32(portAdr + 0x24) & ~(15 << pos)) ) ); // GPIOx_AFRH: Alternate Function to AF0
</block>
</control>
<!-- configure TRACED3 -->
<block info="configure TRACED3">
pin = (TraceD3_Pin ) & 0x0000FFFF;
port = (TraceD3_Pin >> 16) & 0x0000FFFF;
portAdr = 0x40020000 + (((TraceD3_Pin >> 16) & 0x0000FFFF) * 0x400);
pos = pin * 2;
Write32(0x40023830, ((Read32(0x40023830 ) ) | (1 << port)) ); // RCC_AHB1ENR: IO port clock enable
Write32(portAdr + 0x00, ((Read32(portAdr + 0x00) & ~( 3 << pos)) | (2 << pos )) ); // GPIOx_MODER: Set Mode (Alternate Function)
Write32(portAdr + 0x08, ((Read32(portAdr + 0x08) ) | (3 << pos )) ); // GPIOx_OSPEEDR: Set Speed (Very High Speed)
Write32(portAdr + 0x0C, ((Read32(portAdr + 0x0C) & ~( 3 << pos)) ) ); // GPIOx_PUPDR: Set I/O to no pull-up/pull-down
</block>
<control if="pin < 8">
<block>
pos = ((pin ) & 7) * 4;
Write32(portAdr + 0x20, ((Read32(portAdr + 0x20) & ~(15 << pos)) ) ); // GPIOx_AFRL: Alternate Function to AF0
</block>
</control>
<control if="pin >= 8">
<block>
pos = ((pin - 8) & 7) * 4;
Write32(portAdr + 0x24, ((Read32(portAdr + 0x24) & ~(15 << pos)) ) ); // GPIOx_AFRH: Alternate Function to AF0
</block>
</control>
</control>
</sequence>
</sequences>
<feature type="Timer" n="2" m="32"/>
<feature type="WDT" n="2"/>
<feature type="RTC" n="32768"/>
<feature type="I2S" n="2"/>
<feature type="Temp" n="-40" m="85"/>
<feature type="Temp" n="-40" m="105"/>
<!-- ************************ Subfamily 'STM32F401' **************************** -->
<subFamily DsubFamily="STM32F401">
<processor Dclock="84000000"/>
<debug svd="CMSIS/SVD/STM32F401.svd"/>
<debugvars configfile="CMSIS/Debug/STM32F401xBCDE_411xCE.dbgconf">
__var DbgMCU_CR = 0x00000007; // DBGMCU_CR: DBG_SLEEP, DBG_STOP, DBG_STANDBY
__var DbgMCU_APB1_Fz = 0x00000000; // DGBMCU_APB1_FZ: All Peripherals Operate as in Normal Mode
__var DbgMCU_APB2_Fz = 0x00000000; // DGBMCU_APB2_FZ: All Peripherals Operate as in Normal Mode
__var TraceClk_Pin = 0x00040002; // PE2
__var TraceD0_Pin = 0x00040003; // PE3
__var TraceD1_Pin = 0x00040004; // PE4
__var TraceD2_Pin = 0x00040005; // PE5
__var TraceD3_Pin = 0x00040006; // PE6
</debugvars>
<book name="https://www.st.com/resource/en/reference_manual/rm0368-stm32f401xbc-and-stm32f401xde-advanced-armbased-32bit-mcus-stmicroelectronics.pdf" title="STM32F401xB/C/D/E Reference Manual"/>
<feature type="Timer" n="6" m="16"/>
<feature type="I2C" n="3"/>
<feature type="USART" n="3" m="10500000"/>
<feature type="USBOTG" n="1"/>
<feature type="VCC" n="1.70" m="3.60"/>
<!-- ************************* Device 'STM32F401CB' ***************************** -->
<device Dname="STM32F401CB">
<compile define="STM32F401xC"/>
<book name="https://www.st.com/resource/en/datasheet/stm32f401cb.pdf" title="STM32F401xB/401xC Datasheet"/>
<memory name="Flash" access="rx" start="0x08000000" size="0x00020000" default="1" startup="1"/>
<memory name="SRAM" access="rwx" start="0x20000000" size="0x00010000" default="1"/>
<algorithm name="CMSIS/Flash/STM32F4xx_128.FLM" start="0x08000000" size="0x00020000" default="1"/>
<algorithm name="CMSIS/Flash/STM32F401xx_OPT.FLM" start="0x1FFFC000" size="0x00000004" default="0"/>
<algorithm name="CMSIS/Flash/STM32F4xx_OTP.FLM" start="0x1FFF7800" size="0x00000210" default="0"/>
<feature type="ADC" n="10" m="12"/>
<feature type="IOs" n="36"/>
<feature type="SPI" n="3" m="42000000"/>
<variant Dvariant="STM32F401CBUx"> <feature type="QFP" n="48"/> </variant>
<variant Dvariant="STM32F401CBYx"> <feature type="CSP" n="49"/> </variant>
</device>
<!-- ************************* Device 'STM32F401RB' ***************************** -->
<device Dname="STM32F401RB">
<compile define="STM32F401xC"/>
<book name="https://www.st.com/resource/en/datasheet/stm32f401cb.pdf" title="STM32F401xB/401xC Datasheet"/>
<memory name="Flash" access="rx" start="0x08000000" size="0x00020000" default="1" startup="1"/>
<memory name="SRAM" access="rwx" start="0x20000000" size="0x00010000" default="1"/>
<algorithm name="CMSIS/Flash/STM32F4xx_128.FLM" start="0x08000000" size="0x00020000" default="1"/>
<algorithm name="CMSIS/Flash/STM32F401xx_OPT.FLM" start="0x1FFFC000" size="0x00000004" default="0"/>
<algorithm name="CMSIS/Flash/STM32F4xx_OTP.FLM" start="0x1FFF7800" size="0x00000210" default="0"/>
<feature type="ADC" n="16" m="12"/>
<feature type="IOs" n="48"/>
<feature type="SPI" n="3" m="42000000"/>
<feature type="SDIO" n="1" m="8" name="Secure Digital IO"/>
<variant Dvariant="STM32F401RBTx"> <feature type="QFP" n="64"/> </variant>
</device>
<!-- ************************* Device 'STM32F401VB' ***************************** -->
<device Dname="STM32F401VB">
<compile define="STM32F401xC"/>
<book name="https://www.st.com/resource/en/datasheet/stm32f401cb.pdf" title="STM32F401xB/401xC Datasheet"/>
<memory name="Flash" access="rx" start="0x08000000" size="0x00020000" default="1" startup="1"/>
<memory name="SRAM" access="rwx" start="0x20000000" size="0x00010000" default="1"/>
<algorithm name="CMSIS/Flash/STM32F4xx_128.FLM" start="0x08000000" size="0x00020000" default="1"/>
<algorithm name="CMSIS/Flash/STM32F401xx_OPT.FLM" start="0x1FFFC000" size="0x00000004" default="0"/>
<algorithm name="CMSIS/Flash/STM32F4xx_OTP.FLM" start="0x1FFF7800" size="0x00000210" default="0"/>
<feature type="ADC" n="16" m="12"/>
<feature type="IOs" n="79"/>
<feature type="SPI" n="4" m="42000000"/>
<feature type="SDIO" n="1" m="8" name="Secure Digital IO"/>
<variant Dvariant="STM32F401VBTx"> <feature type="QFP" n="100"/> </variant>
<variant Dvariant="STM32F401VBHx"> <feature type="BGA" n="100"/> </variant>
</device>
<!-- ************************* Device 'STM32F401CC' ***************************** -->
<device Dname="STM32F401CC">
<compile define="STM32F401xC"/>
<book name="https://www.st.com/resource/en/datasheet/stm32f401cb.pdf" title="STM32F401xB/401xC Datasheet"/>
<memory name="Flash" access="rx" start="0x08000000" size="0x00040000" default="1" startup="1"/>
<memory name="SRAM" access="rwx" start="0x20000000" size="0x00010000" default="1"/>
<algorithm name="CMSIS/Flash/STM32F4xx_256.FLM" start="0x08000000" size="0x00040000" default="1"/>
<algorithm name="CMSIS/Flash/STM32F401xx_OPT.FLM" start="0x1FFFC000" size="0x00000004" default="0"/>
<algorithm name="CMSIS/Flash/STM32F4xx_OTP.FLM" start="0x1FFF7800" size="0x00000210" default="0"/>
<feature type="ADC" n="10" m="12"/>
<feature type="IOs" n="36"/>
<feature type="SPI" n="3" m="42000000"/>
<variant Dvariant="STM32F401CCUx"> <feature type="QFP" n="48"/> </variant>
<variant Dvariant="STM32F401CCYx"> <feature type="CSP" n="49"/> </variant>
<variant Dvariant="STM32F401CCFx"> <feature type="CSP" n="49" /> </variant>
</device>
<!-- ************************* Device 'STM32F401RC' ***************************** -->
<device Dname="STM32F401RC">
<compile define="STM32F401xC"/>
<book name="https://www.st.com/resource/en/datasheet/stm32f401cb.pdf" title="STM32F401xB/401xC Datasheet"/>