STMCU小助手
发布时间:2021-12-14 10:42
|
前段时间ST推出了Value Line的STM32F750和H750两个系列,看了一下选型表,F750有LQFP144封装,正好适合我的STM32 linux板子。 y; R( P5 Q5 p 于是,双十一买了几片。同时,我对我的linux板做了小幅改版:将SPI Flash容量扩大到32MB并连接到F750的QSPI BANK1,添加了CAN收发器和接口,增加了两个I2C外设(温湿度传感器和气压传感器)。板子做回来后先焊了一片,调试过程还算比较顺利,现在u-boot和Linux都工作起来了,下面是系统启动log,F750速度还是相当快的(427.62% T. y2 A9 v! z& t$ i BogoMIPS,F429跑Linux只有35.84 BogoMIPS),QSPI的加载速度也很给力。下一步我准备多测试几种STM32外设的Linux driver,emcraft现在的SDK比两三年前多了不少外设驱动,可以都试试看。. a6 C" W8 y3 T4 v' ^* X / B7 ^$ s3 y; V d. A; r8 ]& B& X3 }
% [( @7 i, h3 t1 k) t( f 1 c* q! H: f) q+ o" ~4 g2 V: k, r
( p& K% {$ }: v$ X5 u : n0 h7 N. X2 w, O+ J U-Boot 2010.03 (Nov 26 2018 - 21:30:21) 4 B' [) }# O) ]& P9 z6 w CPU : STM32F7 (Cortex-M7)# g. N0 a% f- P# ^; I8 l, S2 F6 I Freqs: SYSCLK=216MHz,HCLK=216MHz,PCLK1=54MHz,PCLK2=108MHz Board: STM32F750 Rev 1.0 DRAM: 64 MB In: serial9 d2 f' i4 b% \ Out: serial Err: serial QSPI: 32 MB mapped at 0x90000000" x( Z+ O7 _. b4 W" z4 L Net: miiphy_register done. eth hw init done. H$ n4 o I# f% o6 Q; D STM32_MAC$ Z& [; D0 m7 N$ m# c. x4 U. D# w Hit any key to stop autoboot: 0) ]$ W/ c9 y% q* Q Booting from QSPI4 {; I+ a0 f" L* N) f; H9 e. r ## Booting kernel from Legacy Image at c0007fc0 ..., M5 u; x$ g" L Image Name: Linux-4.2.0 Image Type: ARM Linux Multi-File Image (uncompressed), B7 g6 I" P- H Data Size: 7496295 Bytes = 7.1 MB7 g" M* V1 b5 M& g: K( ^! ] Load Address: c0008000. u6 _* |1 F; D7 }( g, c. [ Entry Point: c0008001 Contents: Image 0: 7471388 Bytes = 7.1 MB Image 1: 24895 Bytes = 24.3 kB Verifying Checksum ... OK4 w: Y( L* s2 z$ e ## Flattened Device Tree from multi component Image at C0007FC0$ n0 Q8 U6 T: J% z Booting using the fdt at 0xc0728128; v/ s4 u9 h6 n Loading Multi-File Image ... OK' F0 B( k& n9 R+ g3 U" v# O OK WARNING: legacy format multi component image overwritten Loading Device Tree to c3ff6000, end c3fff13e ... OK& T p0 Y. k9 ]# j" C# x/ Q: w" x. O Starting kernel ...Booting Linux on physical CPU 0x0 Linux version 4.2.0(gcc version 4.4.1 (Sourcery G++ Lite 20107 A/ u( |* z& S" F& h: z& j q1-189) ) #90 Tue Dec 4 03:32:33 EST 2018 CPU: ARMv7-M [410fc271] revision 1 (ARMv7M), cr=000000001 l5 t6 Y* O$ ?+ _, u CPU: WBA data cache, WBA instruction cache: q/ `. I b% G5 n Machine model: EmCraft Systems STM32F7-SOM board Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 Kernel command line: stm32_platform=stm32f7-disco console=ttyS0,115200 panic=10 ip=169.258 B$ `; k) Q7 f$ ? 4.1.10:169.254.1.2:::stm32f7-disco:eth0:ff2 s! H( S, S U; }9 e9 s8 s0 i, g PID hash table entries: 256 (order: -2, 1024 bytes); g% R6 Y7 |% c0 |. p/ j U% k Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 56432K/65536K available (2523K kernel code, 181K rwdata, 588K rodata, 4000K init,% m7 y$ b: a" H, l# m) U: \ 111K bss, 9104K reserved, 0K cma-reserved)' r/ C4 \' N& o- M& ^1 W" G' ] Virtual kernel memory layout: vector : 0x00000000 - 0x00001000 ( 4 kB)' T- n& Q3 r Z& k" [# e fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0x00000000 - 0xffffffff (4095 MB) lowmem : 0xc0000000 - 0xc4000000 ( 64 MB) .text : 0xc0008000 - 0xc0312000 (3112 kB)/ F& B" \7 v6 s: a0 I .init : 0xc0312000 - 0xc06fa000 (4000 kB)0 P# T3 P, e: [3 k- M: ?) ]& j) @ .data : 0xc06fa000 - 0xc07277c0 ( 182 kB)+ Q; t$ Y- A3 }# C$ y, q1 U* d .bss : 0xc072811c - 0xc0743e84 ( 112 kB) % h6 T# E5 E8 d T! S# D: _ NR_IRQS:16 nr_irqs:16 167 ]8 M* ?! i, W, d /interrupt-controller@40013c00: 24 External IRQs detected clocksource: arm_system_timer: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 27651335. |/ b8 g* y$ r6 ?5 U# @$ e3 e 8 ns ARM System timer initialized as clocksource2 T% ^9 b/ L$ a2 _ /soc/timer@40000000: STM32 clockevent driver initialized (32 bits)# m$ v) [# ` b7 N sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836475000000ns* a# E7 i8 U9 w( _4 G* l c Calibrating delay loop... 427.62 BogoMIPS (lpj=2138112), R# a- l2 H3 f$ Q" l$ M) X pid_max: default: 4096 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) devtmpfs: initialized" Q" N/ y/ S# }6 i3 r! l# E. C clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275- |3 H8 t3 ^1 f% {& S: r H 0000 ns9 i |- X3 v" _6 Y pinctrl core: initialized pinctrl subsystem1 a9 S* [6 R1 P; h) s* y# N ?- D# ~ NET: Registered protocol family 16 J! p/ ]% o5 E f stm32-pinctrl pin-controller: nbanks = 11* }9 F$ x6 ?+ }* |: X stm32-pinctrl pin-controller: nfunctions = 20 stm32-pinctrl pin-controller: ngroups = 23 stm32-pinctrl pin-controller: GPIOA bank added.* ]9 T6 o; i" g) v" o stm32-pinctrl pin-controller: GPIOB bank added. stm32-pinctrl pin-controller: GPIOC bank added. stm32-pinctrl pin-controller: GPIOD bank added. stm32-pinctrl pin-controller: GPIOE bank added., F6 b- v2 M `. J+ H stm32-pinctrl pin-controller: GPIOF bank added. stm32-pinctrl pin-controller: GPIOG bank added. stm32-pinctrl pin-controller: GPIOH bank added.0 W) [5 U/ k) _: J6 s1 @. k$ K stm32-pinctrl pin-controller: GPIOI bank added.2 e. C$ A: |/ D. g3 w$ B2 X4 j J stm32-pinctrl pin-controller: GPIOJ bank added.. O+ M* x! y6 O, i* r) @$ v stm32-pinctrl pin-controller: GPIOK bank added. stm32-pinctrl pin-controller: Function[0 name:i2c_1, groups:1] stm32-pinctrl pin-controller: Function[1 name:i2c_2, groups:1]% }( h, }* X. W stm32-pinctrl pin-controller: Function[2 name:i2c_3, groups:1] stm32-pinctrl pin-controller: Function[3 name:mac, groups:2] stm32-pinctrl pin-controller: Function[4 name:sdio, groups:1] W# R, ?4 T& i/ A* V+ l$ }1 Q stm32-pinctrl pin-controller: Function[5 name:spi_2, groups:1] stm32-pinctrl pin-controller: Function[6 name:spi_4, groups:1] stm32-pinctrl pin-controller: Function[7 name:spi_5, groups:1] stm32-pinctrl pin-controller: Function[8 name:usart1, groups:1]" z' A9 M7 C; a+ u* r; D% G- l stm32-pinctrl pin-controller: Function[9 name:usart6, groups:1]# ~# \' ?# c& R) t" ]) E ` stm32-pinctrl pin-controller: Function[10 name:usart7, groups:1]# n" V8 K# o N4 s; v" y+ x stm32-pinctrl pin-controller: Function[11 name:usb_fs, groups:1] stm32-pinctrl pin-controller: Function[12 name:usb_hs, groups:1]+ q. B! {2 X( P! D" @( a+ F! G stm32-pinctrl pin-controller: Function[13 name:can_1, groups:1]' ^) d2 N! R5 J% e; _ X* ?* c stm32-pinctrl pin-controller: Function[14 name:adc1_in0_pin, groups:1] stm32-pinctrl pin-controller: Function[15 name:dac_out2_pin, groups:1] stm32-pinctrl pin-controller: Function[16 name:ltdc, groups:1] stm32-pinctrl pin-controller: Function[17 name:sai_2, groups:1]1 P. D7 m5 z+ |& c3 j" @ stm32-pinctrl pin-controller: Function[18 name:i2c_4, groups:1] stm32-pinctrl pin-controller: Function[19 name:gpio, groups:3]1 m+ V5 |0 X" l0 o; [1 @1 c+ D( q stm32-dma 40026000.dma: STM32 DMA driver registered stm32-dma 40026400.dma: STM32 DMA driver registered( n5 M$ b7 E. P, Q! O SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub0 K$ G/ _- b' v! v2 K) J# F5 y usbcore: registered new device driver usb6 l! }& E4 g& n soc:phy_hs supply vcc not found, using dummy regulator soc:phy_fs supply vcc not found, using dummy regulator pps_core: LinuxPPS API ver. 1 registered pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> PTP clock support registered5 W4 M% \/ z* c" [+ } H Advanced Linux Sound Architecture Driver Initialized.8 X( l3 b* W/ w0 s) | Bluetooth: Core ver 2.20# `+ \# k! \ O NET: Registered protocol family 317 {1 f; ]+ g- W0 l2 r0 B, z; Q Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized3 z; y, G# M. T- v r4 w* } Bluetooth: L2CAP socket layer initialized Bluetooth: SCO socket layer initialized clocksource: Switched to clocksource arm_system_timer3 C) Y( G1 k% r% C, z+ k NET: Registered protocol family 2 TCP established hash table entries: 1024 (order: 0, 4096 bytes) TCP bind hash table entries: 1024 (order: 0, 4096 bytes) TCP: Hash tables configured (established 1024 bind 1024)$ T- f* L: |# D0 H& N/ C8 ^, A UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)+ O# ^0 Y* r/ [! S4 L' \" { NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module.0 M, U4 z% \* o" t& b+ o" r, e K RPC: Registered tcp transport module.+ ^ t1 `7 l" G9 v+ _# l RPC: Registered tcp NFSv4.1 backchannel transport module.* }1 [, F! T X$ i& E8 p& Q Power Management for STM32 futex hash table entries: 16 (order: -5, 192 bytes) jffs2: version 2.2. (NAND) (SUMMARY) 漏 2001-2006 Red Hat, Inc. fuse init (API version 7.23) Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) io scheduler noop registered, o$ @. H. f5 U9 m- V1 M io scheduler cfq registered (default)6 p$ k1 A' O* Y/ d$ @( K stm32-pinctrl pin-controller: maps: function gpio group pwms num 24 q+ M& r2 V" P$ ~7 Q) V stm32-pwm pwm0: basing on TIM3.1(x16) stm32-pinctrl pin-controller: maps: function ltdc group ltdc-0 num 29 stm32_lcdfb 40016800.ltdc: fb0: fb device registered successfully& m, I7 W6 F5 P: U" Q: B& L STM32 USART driver initialized stm32-pinctrl pin-controller: maps: function usart1 group usart1-0 num 3" R7 A( w# i4 d# s0 F 40011000.serial: ttyS0 at MMIO 0x40011000 (irq = 34, base_baud = 6750000) is a stm32-usar t; a" b, c2 V& [/ I6 r# C8 D console [ttyS0] enabled stm32-pinctrl pin-controller: maps: function usart6 group usart6-0 num 3+ d# X1 d, \2 U7 O7 n1 l" r1 A 40011400.serial: ttyS5 at MMIO 0x40011400 (irq = 35, base_baud = 6750000) is a stm32-usar. b- {* V& `& Z- J1 X7 m/ A t nbd: registered device at major 43 stm32-pinctrl pin-controller: maps: function dac_out2_pin group dac-0 num 2; K+ U) B( v3 H% T stm32_dac 40007400.dac: dac1: no timer assigned, DMA functionality is not available stm32_dac 40007400.dac: created 1 character devices with MAJOR 248 2 ofpart partitions found on MTD device physmap-stm-flash.0 Creating 2 MTD partitions on "physmap-stm-flash.0": 0x000000000000-0x000000020000 : "stm_flash_uboot"/ ?$ U- Y- P- M! C$ L8 \ S 0x000000040000-0x000000100000 : "stm_flash_unused"1 | ~* W3 ^1 n( _ stm32-pinctrl pin-controller: maps: function spi_5 group spi_5-0 num 4 stm32-spi 40015000.spi: SPI Controller 4 at 40015000,irq=38,hz=108000000 CAN device driver interface6 x, K6 n/ k( ]( s: C stm32-pinctrl pin-controller: maps: function can_1 group can_1-0 num 3 stm32-can 40006400.can: device registered (reg=40006400, irq=31) stm32-pinctrl pin-controller: maps: function mac group mac_rmii num 10 stmmac - user ID: 0x10, Synopsys ID: 0x35! w/ ^7 |9 R' W6 b Ring mode enabled! C7 y N3 }- l DMA HW capability register supported8 f c) A1 _) Y* J j7 y1 @/ D Enhanced/Alternate descriptors1 c3 \3 g" U6 l$ X0 y2 F' ` c2 W Enabled extended descriptors0 T9 ~% j% A0 W4 I6 Z: h K RX Checksum Offload Engine supported (type 2)! y- U7 [, P6 x; |' u! ]% f TX Checksum insertion supported0 }6 `% P! q! W3 e) T Wake-Up On Lan supported6 u/ u, y$ ~" O: _# U) S/ J Enable RX Mitigation via HW Watchdog Timer stm32-dwmac 40028000.ethernet eth0: No MDIO subnode found libphy: stmmac: probed0 n5 W6 l% \5 ?7 S% ?2 F eth0: PHY ID 0007c0f1 at 0 IRQ POLL (stmmac-0:00) active PPP generic driver version 2.4.2 PPP BSD Compression module registered PPP Deflate Compression module registered usbcore: registered new interface driver rt2800usb stm32-pinctrl pin-controller: maps: function usb_hs group usb_hs-0 num 3; }2 [) }" A3 K" l: K dwc2 40040000.usb: DWC OTG Controller dwc2 40040000.usb: new USB bus registered, assigned bus number 1 dwc2 40040000.usb: irq 56, io mem 0x00000000 usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: DWC OTG Controller/ s; G+ A* d- h/ _# M# o* Q usb usb1: Manufacturer: Linux 4.2.0 dwc2_hsotg usb usb1: SerialNumber: 40040000.usb hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected stm32-pinctrl pin-controller: maps: function usb_fs group usb_fs-0 num 3 50000000.usb supply vusb_d not found, using dummy regulator 50000000.usb supply vusb_a not found, using dummy regulator dwc2 50000000.usb: EPs: 6, dedicated fifos, 512 entries in SPRAM& I9 F$ ~8 m, _/ r dwc2 50000000.usb: DCFG=0x08200000, DCTL=0x00000002, DIEPMSK=0000000b+ M! t4 J$ ^ | _; X- x, ^' n dwc2 50000000.usb: GAHBCFG=0x00000000, GHWCFG1=0x00000000 dwc2 50000000.usb: GRXFSIZ=0x000000a0, GNPTXFSIZ=0x004000a0 dwc2 50000000.usb: DPTx[1] FSize=32, StAddr=0x000000e0" ~& F* [# i/ A; w* ] dwc2 50000000.usb: DPTx[2] FSize=64, StAddr=0x00000100 dwc2 50000000.usb: DPTx[3] FSize=512, StAddr=0x000008005 B) L3 T7 n5 ~7 k dwc2 50000000.usb: DPTx[4] FSize=512, StAddr=0x00000a00( o4 g1 {2 H1 ?% u2 V dwc2 50000000.usb: DPTx[5] FSize=512, StAddr=0x00000c00. ^+ _$ x2 e; o dwc2 50000000.usb: ep0-in: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x5abee5fb6 h2 ~# i- {3 J2 U; {0 ] dwc2 50000000.usb: ep0-out: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep1-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb. ?; m* k- }9 f$ c/ e: E" ` m& X dwc2 50000000.usb: ep1-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb" P- ~% Y. S* W V dwc2 50000000.usb: ep2-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep2-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep3-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep3-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb$ b8 D& G4 E! G {! T) `8 x dwc2 50000000.usb: ep4-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep4-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb: h/ K" ~: p" H0 J) a9 M dwc2 50000000.usb: ep5-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb! i( V2 B# l* p6 ~ dwc2 50000000.usb: ep5-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: DVBUSDIS=0x000017d7, DVBUSPULSE=000005b8( M. ~" x) s& d usbcore: registered new interface driver cdc_acm$ a5 i& H( f; V$ S) L cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters' H; k B2 G3 m# ]+ [ usbcore: registered new interface driver uas usbcore: registered new interface driver usb-storage g_serial gadget: Gadget Serial v2.4% Q. T7 t; r' A& j. d g_serial gadget: g_serial ready dwc2 50000000.usb: bound driver g_serial i2c /dev entries driver! \2 O( t" X( e stm32-pinctrl pin-controller: maps: function i2c_4 group i2c_4-0 num 3 bmp085 3-0077: Successfully initialized bmp085!! Z3 U+ v( A0 U8 R' C5 W: y9 S stm32f7-i2c 40006000.i2c: I2C Controller i2c-3 at 40006000,irq=58 Driver for 1-wire Dallas network protocol. usbcore: registered new interface driver btusb/ b% ~7 t% t- [6 X( { stm32-pinctrl pin-controller: maps: function sdio group sdio-0 num 7 mmci-pl18x 40012c00.sdi: Got CD GPIO mmci-pl18x 40012c00.sdi: mmc0: PL180 manf 80 rev4 at 0x40012c00 irq 37,0 (pio) stm32-dma 40026400.dma: stm32_dma_of_xlate: unable to get channel 3 - was already request0 [0 T0 L8 w$ r* t0 k ed mmci-pl18x 40012c00.sdi: DMA channels RX dma1chan3, TX dma1chan36 J0 O3 L6 L6 F& j9 A- |) M stm32_gpio_to_irq: Event line 3 now points to fire interrupts from bank G stm32-pinctrl pin-controller: maps: function gpio group outs num 2/ d: K9 w8 q2 D hidraw: raw HID events driver (C) Jiri Kosina usbcore: registered new interface driver usbhid4 V) r5 [3 @- L0 K- e) @/ X usbhid: USB HID core driver stm32-pinctrl pin-controller: maps: function adc1_in0_pin group adc1-0 num 25 f* }5 v0 \+ u stm32f4-adc 40012000.adc: registered( F: h) f7 u% B stm32-pinctrl pin-controller: maps: function sai_2 group sai_2-0 num 5 stm32-dma 40026400.dma: stm32_dma_of_xlate: unable to get channel 4 - was already request4 |$ @( f+ X4 [; g4 x, @ ed stm32-asoc-card sound: failed to find codec platform device stm32-asoc-card: probe of sound failed with error -228 V x/ C! c( }4 \+ y3 f( E/ I NET: Registered protocol family 17) H) q$ O2 E5 e! S+ n+ d3 D/ V can: controller area network core (rev 20120528 abi 9) NET: Registered protocol family 29 can: raw protocol (rev 20120528)) d. V3 E/ f3 k+ t+ N& K6 B6 g can: broadcast manager protocol (rev 20120528 t) can: netlink gateway (rev 20130117) max_hops=1 U) K% w X# g4 s! d3 ] Bluetooth: RFCOMM TTY layer initialized/ u9 a3 ?& W' Z( D Bluetooth: RFCOMM socket layer initialized# j; Z7 O& U2 y) P. J8 ~ Bluetooth: RFCOMM ver 1.11 hctosys: unable to open rtc device (rtc0)& ]5 `1 |2 ~ o0 ^& s vmmc: disabling+ P8 a$ H1 d \7 y0 _ ALSA device list:, Z2 y- _* z3 `- I5 G' q No soundcards found., u* K7 n( U: _( f# P1 a Freeing unused kernel memory: 4000K (c0312000 - c06fa000)$ a' c5 \3 e4 g! j* w, U: A( i$ T& [ init started: BusyBox v1.24.2 (2018-11-22 20:35:58 EST)# T! R' ~6 e2 K- u, u1 f / # amixer: Mixer attach default error: No such file or directory stm32-dwmac 40028000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx1 G! Q3 _ r: X4 l/ G; f$ E : v6 H- t6 W" B/ Q( j# g+ e( W / # free$ t* ]! h1 ^! V0 a total used free shared buffers cached# R/ h( z4 g2 A* ]' ~ Mem: 60432 8140 52292 0 0 4792 -/+ buffers/cache: 3348 57084% X) c9 @ y% e* T. J / #- ~' L2 b6 t, x, k * ]/ @2 c! b0 p# O) u; z 7 H% B) ~8 K- ]7 k* c . w# x' Q7 x6 L+ V9 v |
基于STM32F767通过cube配置:QSPI接口读写64M PSRAM+flash参考资料...
STM32F746G-DISCO移植lvgl9.0性能基准测试
STM32F745 USART1 Bootloader启动失败排查与解决的流程分析
STM32芯片命名规则
STM32 引脚到底有多少?为什么一个引脚能当好几个用?
入门嵌入式,为什么STM32是“优选起步”?
嵌入式-单片机-STM32 EXTI中断
STM32单片机进行除零运算,为何程序不崩溃?
STM32 LL为什么比HAL高效?
STM32时钟详解
微信公众号
手机版