STMCU小助手
发布时间:2022-4-7 18:35
|
前段时间ST推出了Value Line的STM32F750和H750两个系列,看了一下选型表,F750有LQFP144封装,正好适合我的STM32 linux板子。3 m+ ^* z' }1 C- n; w, k$ T - G4 |# Z8 P9 _' U+ K) X4 r& a 于是,双十一买了几片。同时,我对我的linux板做了小幅改版:将SPI Flash容量扩大到32MB并连接到F750的QSPI' S, m0 E) y H: c" e7 l6 p4 } BANK1,添加了CAN收发器和接口,增加了两个I2C外设(温湿度传感器和气压传感器)。板子做回来后先焊了一片,调试过程还算比较顺利,现在u-boot和Linux都工作起来了,下面是系统启动log,F750速度还是相当快的(427.628 p5 i7 y0 |0 P5 e7 f% e" \0 Z BogoMIPS,F429跑Linux只有35.84 BogoMIPS),QSPI的加载速度也很给力。下一步我准备多测试几种STM32外设的Linux! |- G( B5 [3 {5 T# ^8 }# v driver,emcraft现在的SDK比两三年前多了不少外设驱动,可以都试试看。 ; X6 m- n4 m) D: \4 c: N$ }
- _% A9 d! X& j, ~) ?* `' r7 x1 l
: E2 {( y1 c6 @5 B. O' r0 z( h 6 n8 n3 E- H* ] " O# J$ g2 b, |* e9 t7 _ U-Boot 2010.03 (Nov 26 2018 - 21:30:21) CPU : STM32F7 (Cortex-M7) Freqs: SYSCLK=216MHz,HCLK=216MHz,PCLK1=54MHz,PCLK2=108MHz7 {) E. L S: r) D DRAM: 64 MB4 P. Z9 f+ l a+ C) e5 D In: serial Out: serial( P U' N- F7 E1 y2 ~ D& U Err: serial- K |4 O p$ m9 `9 c QSPI: 32 MB mapped at 0x90000000 Y% i& y7 A: O Net: miiphy_register done. eth hw init done. STM32_MAC Hit any key to stop autoboot: 0* P) A, K! c( ~9 R Booting from QSPI ## Booting kernel from Legacy Image at c0007fc0 ...) U2 ?( t7 f' | y" W. ~8 r. {3 }1 J Image Name: Linux-4.2.02 k# u t# O+ u/ \: l Image Type: ARM Linux Multi-File Image (uncompressed) Data Size: 7496295 Bytes = 7.1 MB3 J+ J* Q) B" Z8 u. I8 `0 M! H; _ Load Address: c0008000" a7 k8 g" K! U3 d1 {5 H9 a Entry Point: c0008001, I$ E3 `/ A1 d/ [0 u/ x* ~- y+ C Contents: Image 0: 7471388 Bytes = 7.1 MB. j$ q+ C6 Y4 @: E9 W. M4 R Image 1: 24895 Bytes = 24.3 kB" { @8 a6 ^6 r9 ~7 F5 i1 h Verifying Checksum ... OK6 | `* o1 @5 r1 }4 x2 j V ## Flattened Device Tree from multi component Image at C0007FC0 Booting using the fdt at 0xc0728128 Loading Multi-File Image ... OK OK WARNING: legacy format multi component image overwritten Loading Device Tree to c3ff6000, end c3fff13e ... OK Starting kernel ...4 J" ]. W2 L3 a6 a Booting Linux on physical CPU 0x0 Linux version 4.2.0 (hw@localhost.localdomain) (gcc version 4.4.1 (Sourcery G++ Lite 2010 q1-189) ) #90 Tue Dec 4 03:32:33 EST 2018 CPU: ARMv7-M [410fc271] revision 1 (ARMv7M), cr=00000000 CPU: WBA data cache, WBA instruction cache# q9 v4 n6 N$ O& c5 } 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.25 4.1.10:169.254.1.2:::stm32f7-disco:eth0:off( W: n& U9 C) Y" E2 L PID hash table entries: 256 (order: -2, 1024 bytes)1 w2 D, ^' h) d7 D4 v. s2 U 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, 111K bss, 9104K reserved, 0K cma-reserved)) \( P' w0 ~+ Q; b; q( Y3 [4 \ Virtual kernel memory layout:6 B6 ]2 S: u0 H8 L vector : 0x00000000 - 0x00001000 ( 4 kB)0 M- w7 y( P+ V' g% Z fixmap : 0xffc00000 - 0xfff00000 (3072 kB)4 s3 ?' E) M! G" b! e vmalloc : 0x00000000 - 0xffffffff (4095 MB) lowmem : 0xc0000000 - 0xc4000000 ( 64 MB) .text : 0xc0008000 - 0xc0312000 (3112 kB) .init : 0xc0312000 - 0xc06fa000 (4000 kB)2 C4 p, ~1 j4 H- d0 @" i- D9 [ .data : 0xc06fa000 - 0xc07277c0 ( 182 kB)$ D" p7 C1 J' [+ J4 H$ A; b# f .bss : 0xc072811c - 0xc0743e84 ( 112 kB) NR_IRQS:16 nr_irqs:16 165 J2 H2 Z V- M! Q, x2 e6 R /interrupt-controller@40013c00: 24 External IRQs detected& M8 @+ @6 Y% T/ y4 G clocksource: arm_system_timer: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 27651335 8 ns1 m$ }' [3 B, _ |' o+ ] ARM System timer initialized as clocksource0 O8 q) m4 t3 _: `5 e. Y /soc/timer@40000000: STM32 clockevent driver initialized (32 bits)- S2 C5 [ e7 b sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836475000000ns Calibrating delay loop... 427.62 BogoMIPS (lpj=2138112)) _1 ]. ^$ w6 N+ b+ D* m pid_max: default: 4096 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)4 i9 b8 l4 ~% { c/ W Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes); F1 S9 R# g2 {5 D devtmpfs: initialized clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275& Q# |2 D" a9 @) L5 \: ?# G: K 0000 ns pinctrl core: initialized pinctrl subsystem( C3 `/ q3 ^1 Z& f NET: Registered protocol family 167 z. S1 Z9 z$ E& x stm32-pinctrl pin-controller: nbanks = 11) ~6 V3 p/ ]! c* @! W stm32-pinctrl pin-controller: nfunctions = 20/ R2 m' R6 z8 E stm32-pinctrl pin-controller: ngroups = 238 B1 }. ?2 S- d* K5 \ stm32-pinctrl pin-controller: GPIOA bank added.) m# r5 L) j7 p4 O, T, } 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. stm32-pinctrl pin-controller: GPIOF bank added. stm32-pinctrl pin-controller: GPIOG bank added. stm32-pinctrl pin-controller: GPIOH bank added. stm32-pinctrl pin-controller: GPIOI bank added. stm32-pinctrl pin-controller: GPIOJ bank added. stm32-pinctrl pin-controller: GPIOK bank added.8 u. y. I( N# e) z3 M! k stm32-pinctrl pin-controller: Function[0 name:i2c_1, groups:1]$ T9 v" j5 ]. B' q stm32-pinctrl pin-controller: Function[1 name:i2c_2, groups:1] stm32-pinctrl pin-controller: Function[2 name:i2c_3, groups:1]: m, Y7 ~: n% J& T" f9 D! I( v stm32-pinctrl pin-controller: Function[3 name:mac, groups:2]% O1 b* P, t- j' C4 _( H. w stm32-pinctrl pin-controller: Function[4 name:sdio, groups:1] stm32-pinctrl pin-controller: Function[5 name:spi_2, groups:1]2 y8 y1 t- `+ r& u8 N) O stm32-pinctrl pin-controller: Function[6 name:spi_4, groups:1]" e7 [0 b% `6 i, y4 {: ~: R0 Q stm32-pinctrl pin-controller: Function[7 name:spi_5, groups:1]/ I) K) [$ h5 g stm32-pinctrl pin-controller: Function[8 name:usart1, groups:1]4 K1 O2 s7 G3 k+ P, { stm32-pinctrl pin-controller: Function[9 name:usart6, groups:1]! r" i) g# \2 D" Y- L stm32-pinctrl pin-controller: Function[10 name:usart7, groups:1]- p1 Z6 D% t5 o* V. @ stm32-pinctrl pin-controller: Function[11 name:usb_fs, groups:1]1 s. {. S' r; Y' q2 n- f$ J3 a9 S stm32-pinctrl pin-controller: Function[12 name:usb_hs, groups:1] stm32-pinctrl pin-controller: Function[13 name:can_1, groups:1]$ }+ v9 ^: T5 b" @! W 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] stm32-pinctrl pin-controller: Function[18 name:i2c_4, groups:1] T; y& P3 F3 d% I stm32-pinctrl pin-controller: Function[19 name:gpio, groups:3]# v I9 n. Z: L* L- o stm32-dma 40026000.dma: STM32 DMA driver registered, ]- i% d: k) E9 l stm32-dma 40026400.dma: STM32 DMA driver registered SCSI subsystem initialized+ q. o/ O2 q0 u# n4 O3 n usbcore: registered new interface driver usbfs5 B4 g5 g9 V) |6 q4 x& ? usbcore: registered new interface driver hub usbcore: registered new device driver usb3 k# w5 l- W6 C2 J! z' E soc:phy_hs supply vcc not found, using dummy regulator% }$ ]. i: z0 J0 J soc:phy_fs supply vcc not found, using dummy regulator. a1 S/ b" h: l1 \/ R1 H 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 registered Advanced Linux Sound Architecture Driver Initialized.2 b4 B) P. H; y3 q6 t Bluetooth: Core ver 2.20) q' e7 x2 S% r8 @$ ^ M; \ NET: Registered protocol family 31- K" Q' j. `6 t0 R6 H. T; G5 J Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: L2CAP socket layer initialized Bluetooth: SCO socket layer initialized clocksource: Switched to clocksource arm_system_timer- E, {$ B" |! h' @) D NET: Registered protocol family 2, ]: H, M& ^! C* c" b TCP established hash table entries: 1024 (order: 0, 4096 bytes)% m2 T8 S- {3 y3 f TCP bind hash table entries: 1024 (order: 0, 4096 bytes) TCP: Hash tables configured (established 1024 bind 1024) @& [+ J5 i7 Q1 |: b UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)5 s7 @8 |5 q/ P% P# B* K. s NET: Registered protocol family 11 d% H4 h, x8 v RPC: Registered named UNIX socket transport module.& U1 I9 I! H" w' F6 Q" M9 _- Z RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module.! k( a( z) w8 I8 l5 a) ] 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)6 y- ~. H* ^2 h Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) io scheduler noop registered io scheduler cfq registered (default) stm32-pinctrl pin-controller: maps: function gpio group pwms num 2 stm32-pwm pwm0: basing on TIM3.1(x16)6 A" s F0 J, G9 n: c) o1 N stm32-pinctrl pin-controller: maps: function ltdc group ltdc-0 num 291 B& |* Z6 ^- C" a& R/ j2 y+ I stm32_lcdfb 40016800.ltdc: fb0: fb device registered successfully STM32 USART driver initialized stm32-pinctrl pin-controller: maps: function usart1 group usart1-0 num 3 40011000.serial: ttyS0 at MMIO 0x40011000 (irq = 34, base_baud = 6750000) is a stm32-usar t console [ttyS0] enabled% I( T( s* d- V3 _ stm32-pinctrl pin-controller: maps: function usart6 group usart6-0 num 33 I- G9 k, S4 \7 k 40011400.serial: ttyS5 at MMIO 0x40011400 (irq = 35, base_baud = 6750000) is a stm32-usar/ }0 Z: t) X: T. A3 `: m R: V: f t- i1 `" y# d- s0 r- h1 [* d; j nbd: registered device at major 43 stm32-pinctrl pin-controller: maps: function dac_out2_pin group dac-0 num 25 o8 K- a1 V) V% r* ~ j9 h stm32_dac 40007400.dac: dac1: no timer assigned, DMA functionality is not available stm32_dac 40007400.dac: created 1 character devices with MAJOR 2481 |% y2 [4 _/ U$ z 2 ofpart partitions found on MTD device physmap-stm-flash.07 n/ ]# d' |; P4 F Creating 2 MTD partitions on "physmap-stm-flash.0":$ m i" J: L. ?* d8 `2 d 0x000000000000-0x000000020000 : "stm_flash_uboot"' A9 V9 p; O- B2 G3 c% w 0x000000040000-0x000000100000 : "stm_flash_unused" stm32-pinctrl pin-controller: maps: function spi_5 group spi_5-0 num 49 p) t$ K7 U7 [8 F1 d stm32-spi 40015000.spi: SPI Controller 4 at 40015000,irq=38,hz=108000000+ |8 K! s( _: } CAN device driver interface( ?$ F3 `5 t" g" G) p 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 [6 ~! D7 a+ G6 _/ x4 _2 k stmmac - user ID: 0x10, Synopsys ID: 0x35: P* V2 F* ?# O& n Ring mode enabled DMA HW capability register supported Enhanced/Alternate descriptors Enabled extended descriptors RX Checksum Offload Engine supported (type 2) TX Checksum insertion supported Wake-Up On Lan supported Enable RX Mitigation via HW Watchdog Timer stm32-dwmac 40028000.ethernet eth0: No MDIO subnode found libphy: stmmac: probed" P. U3 b9 Z# o! n3 O2 V 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 38 |) E3 {/ m/ V0 H dwc2 40040000.usb: DWC OTG Controller5 g+ ]7 S) { q* p( t dwc2 40040000.usb: new USB bus registered, assigned bus number 1 dwc2 40040000.usb: irq 56, io mem 0x000000004 k( k4 m3 Z. d& n# g9 G usb usb1: New USB device found, idVendor=1d6b, idProduct=0002+ D3 z4 k' G9 ^5 ?7 ^- b usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: DWC OTG Controller- d' t9 |7 G# R) Y+ e7 s/ o) s usb usb1: Manufacturer: Linux 4.2.0 dwc2_hsotg& e8 Y& P5 Q" {; M1 V usb usb1: SerialNumber: 40040000.usb2 T# d* N8 ~6 T! u hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected) a: [1 ^1 e7 u, l. K3 W$ C 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 dwc2 50000000.usb: DCFG=0x08200000, DCTL=0x00000002, DIEPMSK=0000000b6 @' m6 j3 Q( a) D( I# J* v- [ dwc2 50000000.usb: GAHBCFG=0x00000000, GHWCFG1=0x000000008 o1 J" C- e, Z5 w U; O5 v dwc2 50000000.usb: GRXFSIZ=0x000000a0, GNPTXFSIZ=0x004000a09 t! E$ r& t; p4 d dwc2 50000000.usb: DPTx[1] FSize=32, StAddr=0x000000e0; u3 l9 {$ q6 n# `" Z9 X. ^ dwc2 50000000.usb: DPTx[2] FSize=64, StAddr=0x00000100 _( r( W0 d6 ^' x0 M8 t f3 a/ M: N dwc2 50000000.usb: DPTx[3] FSize=512, StAddr=0x00000800 dwc2 50000000.usb: DPTx[4] FSize=512, StAddr=0x00000a00* E4 b. c% r9 P/ c" I4 H dwc2 50000000.usb: DPTx[5] FSize=512, StAddr=0x00000c008 t" c- g8 l2 r& z. }1 b1 U dwc2 50000000.usb: ep0-in: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep0-out: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x5abee5fb' q. F8 o# ? ? V: C) F/ g dwc2 50000000.usb: ep1-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep1-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep2-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb1 G2 A# l- a$ S; H 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. ` O* `1 ]. c% j1 K) @ dwc2 50000000.usb: ep4-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb% b: s- J! U7 k dwc2 50000000.usb: ep4-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep5-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep5-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: DVBUSDIS=0x000017d7, DVBUSPULSE=000005b8 usbcore: registered new interface driver cdc_acm! ^$ ?: Z9 P6 W n( ^ cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters usbcore: registered new interface driver uas- r# }. D$ p6 w1 I$ I$ T0 ] usbcore: registered new interface driver usb-storage g_serial gadget: Gadget Serial v2.4+ r6 |/ R: ?0 t, J f. h g_serial gadget: g_serial ready8 c8 k' n# T/ ]. F dwc2 50000000.usb: bound driver g_serial i2c /dev entries driver3 C3 k5 `) }3 ^ stm32-pinctrl pin-controller: maps: function i2c_4 group i2c_4-0 num 3- C& B8 F7 p$ b0 l- K& x bmp085 3-0077: Successfully initialized bmp085! stm32f7-i2c 40006000.i2c: I2C Controller i2c-3 at 40006000,irq=584 |; b5 k P c; y3 R1 y Driver for 1-wire Dallas network protocol.& B* F+ @ _; q6 Y usbcore: registered new interface driver btusb stm32-pinctrl pin-controller: maps: function sdio group sdio-0 num 7 mmci-pl18x 40012c00.sdi: Got CD GPIO9 y4 t# d; g0 W# a& s4 T; { 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 request ed mmci-pl18x 40012c00.sdi: DMA channels RX dma1chan3, TX dma1chan34 Y6 ~, t3 { b stm32_gpio_to_irq: Event line 3 now points to fire interrupts from bank G: ]2 l! s: w0 L9 T8 [' z6 d stm32-pinctrl pin-controller: maps: function gpio group outs num 2' [. r1 p/ k1 e9 t hidraw: raw HID events driver (C) Jiri Kosina) R7 S$ q: ^- L' W; I& w$ w. l usbcore: registered new interface driver usbhid' K7 U2 S: ~& c# t+ z1 W usbhid: USB HID core driver$ ?: J# S: | |5 g3 V! E stm32-pinctrl pin-controller: maps: function adc1_in0_pin group adc1-0 num 2 stm32f4-adc 40012000.adc: registered7 o, D- M7 q7 h) L. `# C stm32-pinctrl pin-controller: maps: function sai_2 group sai_2-0 num 54 `. E/ A G6 G0 s stm32-dma 40026400.dma: stm32_dma_of_xlate: unable to get channel 4 - was already request" ~, t, N0 D2 u8 R% Z; {+ l w+ v ed stm32-asoc-card sound: failed to find codec platform device stm32-asoc-card: probe of sound failed with error -22 NET: Registered protocol family 17- M: T# t7 X6 b9 T! r can: controller area network core (rev 20120528 abi 9)7 ]7 K' g0 j6 S+ T3 A NET: Registered protocol family 29 can: raw protocol (rev 20120528)7 Y1 [1 @' _, {0 ` can: broadcast manager protocol (rev 20120528 t) U$ Y; K8 w' B& B# I) u can: netlink gateway (rev 20130117) max_hops=1 Bluetooth: RFCOMM TTY layer initialized: h* ]3 i7 ^* E0 S) A# r6 B Bluetooth: RFCOMM socket layer initialized Bluetooth: RFCOMM ver 1.111 F, ~' i6 G# X2 ~" |5 r$ L hctosys: unable to open rtc device (rtc0) vmmc: disabling ALSA device list: No soundcards found. Freeing unused kernel memory: 4000K (c0312000 - c06fa000)' S4 u: T* T9 |( R( n init started: BusyBox v1.24.2 (2018-11-22 20:35:58 EST)2 M8 q8 \! u/ t9 G' f / # amixer: Mixer attach default error: No such file or directory stm32-dwmac 40028000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx: e3 N4 e l0 {1 v/ k, f; }3 D; z / # free( L) a z9 w! k( E total used free shared buffers cached3 c* R4 u0 A. X' L( V' l o Mem: 60432 8140 52292 0 0 4792) [) o$ ~2 a Y( ] -/+ buffers/cache: 3348 57084- @7 G1 u; r% o / #; }+ U, ]" j: R% ?4 e |
基于STM32F767通过cube配置:QSPI接口读写64M PSRAM+flash参考资料...
STM32F746G-DISCO移植lvgl9.0性能基准测试
STM32F745 USART1 Bootloader启动失败排查与解决的流程分析
STM32芯片命名规则
STM32 引脚到底有多少?为什么一个引脚能当好几个用?
入门嵌入式,为什么STM32是“优选起步”?
嵌入式-单片机-STM32 EXTI中断
STM32单片机进行除零运算,为何程序不崩溃?
STM32 LL为什么比HAL高效?
STM32时钟详解
微信公众号
手机版
哇哦!