>>实战经验列表 ; {$ h0 x. U5 W6 U' m$ G 社区资料下载栏目开通【ST MCU实战经验】版块,将在这个板块中,针对工程师的应用问题,ST做了详细的解答。进入ST MCU实战经验后,可直接下载文档以及程序。也欢迎大家回帖交流。 + s1 `% ]9 H) Y( E2 I& o 提示:点击各主题,进入帖子,可下载ST工程师解答详请 一、通信接口 / }1 f5 g4 [7 k G& z v 1. STM32F2x7_Ethernet(FreeRTOS)驱动更新 2. SPI 接口发片选信号导致死机 3. USART1不能设定600BPS的波特率 9 Q5 C, q L7 Z4 E 4. I2C 接口进入 Busy 状态不能退出 ' c9 o* ^ t4 }* {% m. S4 b 5. 对 Flash操作导致 USARTU接收丢数据 1 B+ s: [: w6 ^; R6 B9 |, l* v 6. USB接口易损坏 , N! J+ k& Z# X; C: L, f1 B 7. UART发送数据丢失最后一个字节 8. 使用 CCM 导致以太网通信失败 / c& \$ D4 T& ]6 C- K3 V/ L. d! @ 9. SPI3 接口没有信号送出 10. 时钟延展导致 I2C 通信不可靠4 u2 H; D% h6 X7 M. o8 H8 W, q 11. M0的USART波特率自动识别问题$ |1 F7 v; l* V1 f" Q. o / A: u4 Y6 z5 N: w( ]& V2 m 12. WK15 OTG做U盘主机兼容性提高2 K$ `6 I! C7 s& n0 `" d. w 13. 以太网电路设计注意事项 14. OUG主机库在BULK传输上对NAK的处理 15. 串口断帧检测 16. VCP例程用于数据传输时丢失数据的处理0 q7 }( Z+ G) Y4 }" |# R3 w 17. STM8L051F3P6串口UART数据起始位判断的问题 18. STM8L152C6T6 硬件IIC,发送从地址后无ACK信号+ b) d0 {7 L c- s7 O1 W+ X7 b$ ^- C 1 u/ |% K. o0 t3 T, }; i' O8 c, q 19. STM8中UART奇偶校验的使用方法) ?7 Q* {/ Z9 r" W0 w7 E & u3 o6 `; Y) R, C& U8 G- R. Y% ] 20. STM32以太网硬件设计——PHY ! b; K# K- c) k% Y4 l/ h 21. 一个判断I2C总线通信异常原因的方法 22. USB device库使用说明* R4 X) q+ d& y) [# | 23. STM32F103上USB的端点资源 24. 使用CubeMX生成TCPEchoServer程序 / r) ]( {* J" y3 z, M 25. SPI接收数据移位 26. STM32F0中Guard Time的设置0 T8 X; j/ Y0 e9 A3 }4 x: N+ P " X5 B: T8 M2 y) k' i! M8 A 27. LwIP内存配置9 g+ h v+ @/ { 1 N& i; s7 v; ~! e2 _ K: m; W 28. STM32 USB Device的简易验证方法 29. USART 中断方式接收无响应问题的一种情况及其处理方法- A' H+ W2 X/ i+ I+ y0 R' D 30. STM32 基于 Nucleo板 CAN总线的建立 31. STM8 CAN总线的IdMask模式的讲解 - S& _2 F( ?1 d q9 v, ] 32. STM32F746ZG USB 驱动不正常 1 R k- W; ^1 q, ~: M R Q% D7 s 33. MCU在STOP状态下通过UART唤醒分析 4 L& ?. p2 v }' t 34. 通过STM32CubeMX生成HID双向通讯工程 7 J* P: ^& \4 u4 q 0 X( v7 K* U) G" k+ s 35. 串口工作在DMA模式下有时接收异常 0 o9 M! Z+ M% I' i6 @# J$ e 36. STM32 Bootloader中 DFU使用限制 ' q1 K1 b5 k! A# e& }. v0 F 37. UART异常错误分析! y0 Q( I+ {. [$ E0 R 38. 基于Cube库无法检测CAN2的接收中断 39. 基于STM32F7的网络时间同步客户端实现 5 w; P" d3 [8 @; ?% H1 ?- V 2 W; ~5 E8 O5 {" n3 Z1 n 40. HID与音频冲突问题 & ^" ^5 B% p, a8 X- P 41. 在进行USB CDC类开发时,无法发送64整数倍的数据 ~+ c( F5 E" a! _+ v% } 42. 从零开始使用CubeMX创建以太网工程 43. STM32F4xxx的I2C总线挂起异常处理 44. LPUART唤醒STOP MODE下的MCU 45. STM32系列 MCU模拟双盘符 U盘的应用 46. CEC输出的数据和数据长度始终不匹配& T! `" A8 R& P" v* g 47.STM8Lxxx I2C 程序第二次数据通信失败的问题分析 * I6 t! Q3 @; R7 f$ m0 F1 A' g) q3 k6 b 48.在进行 USB CDC类开发时, 无法发送64整数倍的数据(续) 49. 增加UART接口应用时的异常分析 . f( \4 q/ e; ~& ~ z& j 50.UART应用异常案例分析 9 ~, I" C0 n, g' ?( V$ U 51. I2C配置顺序引发的异常案例 52. STM32 USBD VBUS GPIO6 K8 i7 H& `# G/ P. B! |" X8 w s" q3 L' l, Q) A$ [ 53. USB传输数据时出现卡顿现象+ [# A4 m. Y6 b8 T. R) I' Q' J 54. STM32的高速USB信号质量测试实现% P+ }3 s# |# X: T 55. 基于STM32 I2S的音频应用开发介绍 : }* o! ~7 [& x/ y" R. f$ t) n 56. HID_CDC复合设备在WIN10的识别问题 2 d3 x2 o W0 G; Q 57. STM32F767 的 USB 工作在 HOST 模式下的远程唤醒问题 0 Q3 q) f' G- R+ j5 b) B5 \ / U _% K2 Q, I P. }4 ?7 l 58. 一个关于LPUART输出异常的问题分享 : ~) c6 \: U6 e : d4 `- b! y# h; {/ J 59.通过 DfuSe 工具控制程序跳进 DFU 模式( |) X* Z% C" i6 g) N 60.UART IDLE中断使用-接收不定长串口数据 (2019·9·更新)6 Z( d9 f7 s+ x0 W- |+ A f 5 i" {9 t1 k2 O/ F! k7 V; O 61.一个因初始化顺序而导致异常的话题 (2019.12.24) . ]2 q/ N3 G7 h& O( Q 62.MC SDK 5.x 中增加位置环 (2020.5.29)3 ~" z9 Y" w8 |4 h ' T9 ?8 }" ~6 g 63. 如何根据应用需求调整STM32L5的memory partition(2020.7.16); m" B9 M5 i( c1 X3 I, D 64. 使用STM32的MPU实现代码隔离和访问控制 (2020.7.16)" q* P( q1 x9 L& U/ V 二、电源与复位2 E0 k0 ^& w) ]9 q + H: x+ f/ @( N6 }7 d4 p1 o1 a 1. Vbat管脚上的怪现象- Y$ b) L- Z# L& L0 m 2. 上电缓慢导致复位不良 3. 关闭电源还在运行 " C5 B6 K7 T% c 4. 使用STM32 实现锂电充电器1 B H$ A9 e, Z5 K0 k- W: A8 U 5. STM8L152 IDD电流测量: i0 l7 d- i4 z$ O - B, n5 r; D" j. P2 g, ] 6. STM8连续复位问题 7 V* g" S& G2 ~ 7. STM32F2电压调节器REGOFF与IRROFF引脚的使用6 C" X/ m ]/ d. _( w8 Y/ m% n 8. 使用STM8L-Discovery验证STM8L在LSI+WAIT模式下的电流 9. STM32F7与STM32F4的复位序列比较 10. STM32F107 复位标志问题 # C, Q6 w( l# P6 d 4 z3 p' h) O A 11. VBUS引脚一段时间后管脚无法正常工作的分析和解决方法 5 I; Q j& F$ o. I1 Q( a 12. Nucleo_L053不上电也能运行 6 Y G+ z5 n! c* c' v" M 13. STM32L4中STOP2模式下的漏电流 14. 在没有外置晶振时HSE_RDY异常置位 ) U3 N% A5 w& d1 G( Z* S 15. FLASH被异常改写 (2018.5更新)" U( V! D+ ~' N) i% ^& x h1 ] 16.与 PDR_ON 有关的一种异常现象及分析(2019·2·更新) ! q; ^5 d2 b# P8 F* a 17.一个 STM32 芯片异常复位之案例分析(2020·2.27) e8 Y3 X9 g- z- A) n' I2 u4 T$ r% x" m 三、IAP和Bootloader 1. Boot Loader与上位机通信不稳定6 G0 {0 g2 M7 w0 E( `; ]" J 2. IAP+APP 模式下不能启动 RTOS- q# U1 J6 ~# d7 p 3. 从 IAP Loader 向 App 跳转不可靠 9 R! v% c! |& t 4. STM32 MCU IAP例程跳转到APP代码简要分析 5. STM32F091从自举程序向应用程序跳转的问题与解决 6. STM32F09x不使用BOOT脚实现System Bootloader升级代码 9 I# s. q! L. V t 7. STM32F0启动模式相关问题探讨: y' q$ b& m: ^" k6 i( [4 J ( {+ B- i8 A! J0 ?6 T 8.STM32F091空片使用System Bootloader下载代码 . c! [9 \ M; f; x' X; q( o* { 9.STM8L IAP 应用程序中编程指导 : h( H- Z" ?/ ^ Q$ W+ A 10. 如何通过STM32的串口实现简易脱机编程器* n" P' J' Q' ?/ L) g" R 11. 一种从用户代码调用系统存储器中Bootloader 的方法 12. 利用 USB DFU实现 IAP功能 ( [( p z( [3 f1 p7 i ` 13. STM32 Bootloader中 DFU使用限制 . D/ h1 f7 i2 { 14. STM32L011x和STM32L021x启动模式注意事项 {9 W5 b' E$ ?0 J! e1 I5 | & m6 l, x a! ~ b; I5 K0 p) p. B/ H 15. STM32L011&STM32F091 空片检测进行 System Bootloader 编程注意事项 5 @, Q( @6 p# w' ?* [8 B 16. 无法使用内置 Bootloader 的 DFU 方式进行固件升级 ( B7 }/ [0 b0 J, f" t6 V* o 17. 如何使用STM32NUCLEO 板来测试串口Bootloader7 S. U9 d3 @ A k+ l* y 18. 在STM32L011上通过I2C接口实现IAP 4 q; K# _: V# q& z- u# } 19. 在IAR中实现通过将程序在SRAM中调试的方法5 h: R( O2 J- b- Z+ u7 ^; C/ R 20. STM32F769AI 同时使能FMC 和QSPI 带来的引脚冲突问题 . ?6 l. ^( C. m6 f/ R6 y% |: M2 l/ c 21. USB DFU IAP 例程移植的两个话题 22. STM32F769双bank启动- e. e# o( v \$ z, B! b2 {. V( W 23. DFU加载 工具 DfuSeCommand的使用- m2 T5 n4 m6 q 4 \( q" u9 Z4 s& `( A2 L; `' } 24. STM32F0 使用 DFU 升级后 Leave DFU Mode 不能运行用户代码 1 A" ^" R. P& h) L6 ? , g8 K( J8 P G f 25.STM32F767的USB工作在HOST模式下的远程唤醒问题 (2018.12月更新)* I& D% D" Y0 [' D $ ^2 z( b& d: f! D/ L 26.STM32 Bootloader异常复位案例(2019.4) 四、存储器 7 K. k( @$ B3 s# @9 P) T. `4 F 1. 对 Flash操作导致 USARTU接收丢数据5 G* s% @& ^+ d2 {. V# J- y 2. 使用外部 SRAM 导致死机 ( E7 f$ z5 ] N. u. K, X4 ? 3. SRAM 中的数据丢失 4. 干扰环境下 Flash 数据丢失 5. 使用 CCM 导致以太网通信失败 W! r& u9 Z$ R/ a+ [0 `$ Z) G6 K* n 6. STM32F429使用外扩SDRAM运行程序的方法6 b% a( Y9 W% a( z0 i8 k 7. 使用STVP实现对STM32L1系列EEPROM预置数据, ^, n" V' r3 s' ~ 8. FreeRTOS RAM使用情况及优化方法 ; F' ]3 \1 w5 s( {: S) z8 e/ b 9. 在IAR 6.5下如何将数据存放至flash中 ! X9 }9 m! d) ~4 A. U1 Z 10. IAR下如何让程序在RAM中运行 S9 }" r% n) M! m/ s; L 11. RAM上电后初始值问题 12. Stem Win 驱动移植-FLASH&PSRAM(MCP)接口驱动设计 b3 E9 A" N3 W" l& T7 Z 13. LwIP内存配置* H. H7 c s& h+ N6 j# b* V 7 w. o2 m2 V4 D2 d" A. W 14. STM32F2高低温死机问题 2 ]) p; H( b& M; J$ d9 o 15. 使用STM32F427的CCM RAM时遇到的问题% _9 M+ _4 X. k& y/ e# p ) _6 c$ d! o! F5 ] 16. 利用QuadSPI外扩串行NOR Flash的实现 17. STM32擦除内部FLASH时间过长导致IWDG复位 # @" s* a/ y2 Q c 18. 基于STM32CubeMX开发U盘访问应用 (2019·6·18更新)/ p, P& f+ z, x5 {5 q, O) A* f 五、模拟外设 K9 c' v" R: c2 X7 W. C 1. ADC对小信号的转换结果为零, _: S: w% e3 U# p* ] 2. ADC键盘读不准 3. 扫描模式下 ADC 发生通道间串扰# ?- i! G4 M: N" b; d " C' ^9 P- t# j. T 4. DAC无法输出0V的问题分析解决 6 I. o) h4 F3 L: A+ g$ C2 D, S0 h 5. DAC无法输出满量程电压的分析解决 6. STM32F30x 的ADC 采样的傅立叶变换 7. STM32 F1系列 DAC的示例详解: D9 {1 E2 ~2 U- d( ^$ r 8. ADC 连续模式采样浮空引脚问题$ G4 j( x4 z" m# y 1 q& s5 F" q/ @8 C 9. PWM硬件间隔触发ADC 7 R4 o2 h8 X7 k+ w3 a 10. STM32F30x 禁止ADC 已关闭情况下再次关闭ADC0 W! m+ G% t7 t& J9 n3 C* I F 11. STM32L4 系列中ADC 通道配置上的区别 12. STM32 ADC模拟看门狗及其应用 0 L" w7 ~* O% h( S9 k7 l 13. STM32L053 comp2 比较电压无效问题 3 b* s# Z2 ]: F3 F+ J6 n 6 \* }8 G2 w; t/ n$ J2 ` 14. 运算放大器OPAMP在STM32L4上的应用 15. STM32 OTA例程之ESP8266使用 & C8 G. I0 k" k3 }3 [3 e, H 16. STM32多个ADC模块同时采样转换的应用示例 (2019·7·24) 六、计数外设, c' c% @( y, D$ O' t7 q 9 }. B3 W$ H- A7 x" t# o, l0 h 1. Watch Dog 失效 5 S& B7 c, _% P x4 W 2. RTC计秒不均匀 ) `+ Z5 |& Y4 |3 T& d! F2 r* n0 ^ 3. 软件启动模式导致 IWatchDog 失效 4. STM32F030R8 定时器移植问题 - C7 t( {' u# Z S 5. STM32F0使用RTC Tamper的几个注意事项 d( h% ?- S5 Z* _ 7 P8 b5 ~4 X$ h 6. STM32L053可控PWM脉冲方法之DMA 2 [ k5 i6 `+ c9 K) e 7. CounterMode,OCMode与OCPolarity关系 ) U% a9 R8 Z. u9 l5 Y5 P- L 8. STM32L053可控PWM脉冲方法之DMA& A7 _) U, w+ }0 n' f 9. STM32F1通用定时器示例详解—TimeBase0 d0 ^" F0 }5 L) \. h : K- a0 \3 t. X! o& W 10. STM32F1通用定时器示例详解--TIM15_ComplementarySignals& E5 S) I3 F% ~ 11. STM32F334 应用于LLC + SR 的高精度 Timer 波形产生 $ p/ _% z$ I. ] W. w! B 12. HRTIMER的多种Fault事件联动机制 ! I9 |! ]7 x6 [; b& b' B 13. STM32通用定时器 示例详解 —One Pulse6 {4 p% a- q3 ^) v9 i7 A % P" t4 C4 |7 K. Z ? 14. 如何用LSE校准STM32F4内部RC振荡器 ) I3 a# b6 k: c% Y, U8 ] 15. 一种使用Timer测试HSI实际值的方法 4 V- R' u2 |$ A) m# a 16. FreeRTOS定时器精度研究' C; [1 o- ^* J + r' q5 P' I2 \- B 17. HRTIMER产生多相相移信号 18. 窗口看门狗启动时异常复位问题( X. B4 t8 L& I I5 ~( } + |& d/ _( O# y6 J) r- u) M* D 19. PWM硬件间隔触发ADC 6 J, B% V, N7 Z; ?2 f. Y1 p' q2 s 20. STM32F030低温下RTC不工作 7 Y, z0 V7 Y: R1 |+ P+ q* _ 21. 教你一手 | 基于 STM32Cube 库的 Timer 捕获应用 % V9 M q/ T6 e 22.STM32F334 应用于LLC + SR 的高精度 Timer 波形产生 (2018·9·29). W v- y2 J- P; @9 B8 a4 a 23. 基于STM32定时器实现定制波形的示例 (2019·7·25) 4 x2 e. e3 F5 Q/ j. D$ E 5 q2 d9 W# W6 M) b: T; T6 J 24.STM32定时器触发SPI逐字收发之应用示例(2019.12.24)3 `% m' w9 q) R. v$ e+ D4 f' [ 25.MC SDK 5.x 中增加位置环 (2020.3.31) 26.STM32高精度定时器PWM输出话题 (2020.4.29) 4 f' g2 Q" R4 I- k& V9 j 27. 基于高级定时器的全桥移相PWM发波方案(2020.5.12)( q" M7 E* ]7 H B2 q/ _- h * d- _0 h5 ]" g 七、内核& w% L9 p4 [9 w7 a' J & U$ ?! `) U( N. K( A0 n2 A 1. 使用指针函数产生Hard Faul 2. 调试器不能通过JTAG连接器件+ P0 N8 | g" O2 J0 c 3 E4 z# _+ `4 G5 b+ o8 f) c 3. 鬼魅一样的Hard Fault0 g i/ q4 C. E 4. 进入了已屏蔽的中断[ % b X G2 M, ]: b7 u. A* k& W 5. 浮点 DSP 运算效率不高 6. STM32上RTOS的中断管理' n/ I3 H5 `" d8 A8 \ 7. STM32F7与STM32F4的复位序列比较$ H5 @. r4 n* M9 ^9 f 8. STM32F30x 的ADC 采样的傅立叶变换 / K* r" ]+ }5 v6 q 9. EXTI重复配置两次导致误触发中断的问题 10. STM32F3xx/STM32F4xx使用浮点开方指令0 t# B+ _, A2 l3 f, w$ {" x 11. RMW(Read-Modify-Write)对 STM32F7xx内核运行速度的影响& v! `: @3 T3 p8 y5 {- t1 p* T . x8 F0 u3 R: x( O: H 12. STM32F7 MPU Cache浅析 7 d2 _0 k1 o' G! I6 B$ D 9 k" k' ]7 n2 S# q) i$ Z* Y5 d. k 13. STM8使用24MHz外部晶振无法正常运行 (2018.3更新) ( y! I. _! S+ ]+ | 14. STM32F0 不同代码区跳转时总失败…这些操作你.. (2018.6更新)/ V) ]6 i9 [8 `9 M* q- S' A ' v& N& ^5 z% R5 M. @, \+ f 2 |- `: O9 b" j7 d, a 八、系统外设 1. PCB 漏电引起 LSE 停振 2. 时钟失效后CPU还会正常运行: Y G4 l' ]1 i5 O 3. STM32F2中DMA的FIFO模式 ( o4 x, A, Q" F( }: F" b: ? 4. STM32L053的GPIO翻转速度的测试 5. STM32F4xx PCROP应用 6. STM32L053的GPIO翻转速度的测试/ ?* X9 z6 {7 r( _$ [) t" n 7. 如何在IAR中配置CRC参数7 J7 b8 T) s3 Z/ N3 S; r" h 8. PCROP区域函数无法被调用的问题与解决" ~; E! P* m9 [% B4 C% ?& ? 7 }2 r+ |) k% \5 t; n4 m/ { 9. 关于AN4065中STM32F0 IAP升级后的外部中断不响应问题 , y+ o1 t* L9 d, M8 ~; x/ R 10. Stem Win 驱动移植-FLASH&PSRAM(MCP)接口驱动设计- m1 S# g8 H" U% Y 11. 如何用LSE校准STM32F4内部RC振荡器 " i5 D6 g% `$ e9 _ 12. EXTI重复配置两次导致误触发中断的问题 7 @+ b* j6 W5 s5 C K: z. |! p 13. 时钟安全系统的应用(LES篇) 7 I: |% g! m, N( T: U& T# r4 I3 A 14. 利用DFSDM开发PDM麦克风应用介绍 - U4 q9 M3 x7 Y' I" l3 ] 15. STM32H7的FMC外设在DCACHE使能时运行不正常 16. STM32H7 DMA 传输异常案例分析 (2019·3·19更新) ( g7 e4 x U& f% [3 ~0 x' F7 y( J" e $ E5 [. g# H+ t+ G3 O5 V2 q* _. E 九、标签和收发器3 o8 G0 L4 r, _& u" X% a9 V 1. CR95HF的初始化步骤 : `6 a- N% w7 G0 a8 e n9 R; |6 c! T 十、生态系统$ i* g! W& i& M% j% w 1. STemWin_Library_V1.1.1中STM324x9I-EVAL的RTOS工程显示不正常问题1 u* O2 L" @' f1 o3 Z 0 a. Q5 f" R4 j3 D# x" ]4 M 2. MDK Logic Analyzer 功能在STM32中的实现问题" D k) k% s. E* S. d . U" L1 t4 c, w: ?7 a5 W 3. 在IAR6.5下如何将数据存放至flast中 / _& _7 Z h+ e. D8 W$ p 4. FatSL移植笔记& ~0 H1 a& {# X - J& o, M& c( [6 n( Y; l5 t u8 M5 | 5. Keil中使用STM32F4xx硬件浮点单元2 I" \$ w; Y& Y 6. 如何生成库文件(MDK和IAR)6 Y' L% M7 }' C9 c- X' R7 k " |) H8 d3 ?3 [ 7. Nand Flash文件系统解决方案, ]+ _/ B$ |% ?9 |+ W& }% @ 8. STVD在调试时弹出“Cannot access configuration database”的解决 1 B% ~7 c& _2 B/ n2 E. ?3 G( `% b8 v$ U8 v 9. RTOS低功耗特性的设计原理和实现 : Q5 |& T9 s( X 10. IAR下使用J-Trace进行指令跟踪 11. STM32上RTOS的中断管理 12. IAR下如何让程序在RAM中运行 13. 如何在IAR中配置CRC参数- G% P6 Q. X$ U/ l/ v$ X- [9 ]6 L0 M 14. 基于STM32F411 Nucleo板的Broadcom Wi-Fi开发套件的快速开始手册1 t, G% B9 r; K% _9 v' U4 ? & A5 p* @* d2 O5 W9 e 15. 使用mbed进行STM32开发及STM32F0的时钟问题 1 p& e- ~, U3 m* a, g [6 _ _ 16. 使用STM32CubeMX实现USB虚拟串口的环回测试功能 17. 多任务系统中的不可重函数使用注意事项 18. STM32 utility的hot plug功能; o# _$ q1 A3 h . T# h: C: M3 r 19. 如何将CoreMark程序移植到STM32上 20. FreeRTOS定时器精度研究5 s- ?1 ^! q" i( @ 21. 如何使用Eclipse和GCC搭建STM32环境! _- m* T6 U c2 D 22. 如何建立一个基于GIT的STM32库6 ^7 i" z! F9 v3 |$ {* [ ) l: {" W- }; s+ O 23. 从零开始使用CubeMX创建以太网工程 + r" O* t# X: L+ m 24.从STM32Cube库向标准外设库移植FatFs文件系统 25. 基于 STemWin的屏幕旋转 P$ N' u0 m' T0 e4 G 26. 编译软件 Hex文件烧写 3 y* Q) c3 F2 k) D# d 27. 使用B-L475E-IOT01A探索套件连接AWS IOT平台 5 X' c5 l. u8 ~5 ?7 R1 D( z$ s 28. USB CDC类入门培训" }! `7 |# C+ l o9 O8 V( m Y + }9 g1 u# h5 g 29. USB DFU培训 ' h; F4 j) D2 z 30. 用于量产烧录的拼接Bin文件操作 31. STM32免费开发环境该用谁 32. 免费全功能STM32_TrueSTUDIO_9.0 (2018.3更新)8 h, `) c) F8 f; @" y6 } ! Y. J1 @; _) _; h+ i+ v 33. 基于STM32L4 IoT探索套件开发AliOS Things (2018.5更新) 9 P6 [; b; D& Q6 H9 X+ L 34. TrueSTUDIO出现 Program “gcc” not found in PATH的解决 . u! t, n9 i9 X: n 35. STM32 FOTA 例程之 cJSON使用 5 c1 Z0 q" ^( F$ c0 ^$ s 36. STM32F769DK 云端固件升级例程使用说明 $ `7 X* ]: x+ c5 T6 ^ 37. STM32 FOTA 例程之 Paho MQTTClient embeddedC 使用 ; t1 E7 E! v$ D e% D3 e1 |# D. ` 38. 基于 STM32 的阿里云物联网平台方案 % k: g% X6 {& q, E 39.AliOS 任务上下文切换原理分析 40.STM32F334 上的 ADC 管脚和 DAC 管脚 复用问题 1 H6 g) F$ p3 r" O' H* F 41. STM32F769DK 云端固件升级例程软件开发文档 42. STM32CubeL4 固件库V1.13.0版的RTC唤醒问题 (2019·6·18更新) / H! W) k5 K" i4 } 43.使用USB虚拟网线(USB Ethernet gadget)直连STM32MP1和Windows PC(2019.9.19) - ^1 K7 x( `. v 44.零基础快速入手STM32MP1 (2019.9.19) 45.STM32L1xx与 STM32L1xx_A的差别 (2020.4.29) 十一、调试 3 I4 N1 }1 F* Q$ J, ^1 X) ` 1. 关于STM8S SWIM Error[30006]的分析- Y4 h" ^% f u2 w+ p C& h 2. STVD在调试时弹出“Cannot access configuration database”的解决 , H2 k8 g5 [. U' r8 B 3. IAR下使用J-Trace进行指令跟踪" B7 N" f0 s2 e" X( n! l, l 4. 菊花链 JTAG STM325 M% ^% Q( P0 y( S9 m1 i% V) p $ q2 t4 }) R) a2 B/ C 5. STM32F411CEUx 能下载程序但不能执行 6. STM32F103C8T6 程序上电跑飞 7. 使用STM32 ST-LINK Utility 设置读保护后不能运行 8. VBUS引脚一段时间后管脚无法正常工作的分析和解决方法 2 Y/ L. i% B: M7 g: \0 Z" w 9. SWIM协议的GPIO口模拟 10. STM32F091空片使用ST-LINK烧写后复位不能运行用 11. STM32L011对空片进行编程后程序运行问题 (2019·9·12更新)$ `# K0 n0 Y- z/ i, P& j, b $ X& y M/ r) J 12.如何在IAR和KEIL中计算CRC值 (2019.1.2.24)0 q- p% _) B) g# P" D / X/ z o4 r1 U; C 13. X_Cube_ClassB代码移植 (2019.12.24) 8 P5 g" o* F! P! t0 V& K4 Y. i! P * a F. R' \. G/ t' } 14.Keil中烧写STM32F750内部Flash方法 (2019.12.24)% ~3 v2 V+ A6 M3 l6 k7 _3 F) a4 Z 十二、人机调试 ( ]: b Y h5 C 1. 一步步使用STemWin在STM32上开发一个简单的应用6 a: m+ Y3 L1 B* S8 D 2. Stem Win 驱动移植-FLASH&PSRAM(MCP)接口驱动设计$ `" a* n9 p% D. v9 A' j# D 4 q, R- R8 e9 Y1 V4 u4 @ 3. GUI方案中ALPHA通道处理介绍 X% c& ~7 w1 W( r; O/ u( ` - o" Z- b8 l, v0 s. F; c 4. 基于FMC8080接口8位LCD的STemWin的移植( W. o8 h$ p' I6 D9 d1 w8 Q; Z % X C* } y3 E" v, K9 ~+ t5 d9 H 5. TouchGFX中Callback模板实现原理 (2019·9·12更新) 6. TouchGFX快速创建滑动应用例程 (2019·9·12更新)" h( }/ {' L/ V% y8 ^ ( R% f7 R4 f& [. { 7、TouchGFX 简单界面设计_按键控制光圈移动(2020.2.27)& V. ~5 X/ C/ M- L% q # q3 ^3 T8 q5 [5 E3 D 8、STM32L5中如何关闭trustzone (2020.5.12)7 L# a+ Z3 g" a" M# w5 C& E 3 C3 d, E5 L' t 十三、马达 5 R; K- L3 V) E8 A& }1 v6 a 1. 电机控制同步电角度测试说明. T$ s3 B5 Q: _ 1 |# z) s+ x: u, O " M. [$ }" C: B3 l 十四、安全% n8 S. J7 z" R( H; L 1. 一步一步使用STM32安全启动与固件更新(2018.3更新)% }" s! v: o% R8 s# d6 ?" d 十五、其他 ( m2 _8 h6 k& W2 V! v 1. 跳不出的 while 循环$ T/ Y+ p2 H) E9 G7 r' I 1 A- @2 j2 J8 t 2. 外部IC连接NRST导致MCU内部复位信号失效的问题 3. 潮湿环境下不工作 4. PCB 漏电引起 LSE 停振& {, q" H7 K5 _$ D3 G% y ; [+ s$ V! ~6 \- s) K/ ~1 O. G 5. STM8L152 IDD电流测量" s% e. W) P1 L& {+ [1 w' \ 0 y F0 v8 \0 s# v5 {6 z 6. 使用STM32实现锂电池充电器 4 [- |5 C: w4 [0 ^% U, D6 Y9 t 7. STM32_STM8硬件平台基本检查$ W+ o8 u1 h! R# s( Z U z2 |9 T5 `! Y 8 N( A' A6 K4 T3 n$ d% T: x 8. 验证STM32F401在STOP模式下的电流 9. P-NUCLEO-IHM001 电机开发板串口调试指南 ' F2 _ F; L) R0 h& h! r6 u 10. 一种计算CPU使用率的方法及其实现原理& h! V1 m/ b7 ]* _- y 11. STM32 RTC不更新原因分析 5 z9 ?0 f1 e1 y& K7 }9 u 12. 关于ST库函数的代码性能对比% b3 \8 p0 g( P9 F8 a& Q 8 Q, y" ]6 B1 B; s; ?7 E' H8 k 13. 在IAR中实现通过将程序在SRAM中调试的方法 4 A! A" S2 P! b4 n2 B& h 14. M95xxx EEPROM写保护配置' t: c v" x) e; C1 S, j 15. 4SRxx的GPO的属性 16. CR95HF的初始化步骤 17. 电机控制同步电角度测试说明 5 P( B+ d6 U* ~) I9 r* f 18. STM32+BLE通过 Notification与 Android应用程序通信的例程0 Q8 `% y$ a, X9 p" x# y! r9 t 19. M95xxx EEPROM介绍 20. STM32 DFSDM测量温度应用 7 N' M( o# V e3 ] g2 `# J: e 21.代码实现PCROP清除4 N* T8 E" E( D/ n + }( z, ^ E& ?3 O' ^; v 22. 理解与应用MPU的特权与用户模式 ; O1 m2 G, x& {! c, j) `/ s l 23. 用于电机控制单电阻采样PWM变形信号产生; \, l5 n. }; N- ~. R1 [ y. [: q s4 V" b% u4 {5 |; Q3 j* Y) T/ L+ K* ^ 24. STM32L低功耗模式唤醒时间测量 : M6 I5 r1 K- y& Y7 e0 u 25. X_CUBE_SPN7程序电机启动抖动问题( l; w2 ~0 j, [0 {4 N6 ~+ A . F/ y) g0 c& D. x1 Z1 f 26. 发现STM32防火墙的安全配置 & D7 j$ w: n8 O! n9 U: \ 27. ST FOC4.3库关于STM32F30x系列ICS采样代码的修改 4 M- C8 d; p: ? 28. 如何用STVP 命令行模式对STM8进行批量烧写(2019·9·12更新)- F+ D v0 @/ h: @ 9 g- D8 ~6 {$ U) ]0 M 温馨提示: 如果您在使用ST产品过程中出现问题,欢迎在社区发新帖提问。版主和工程师网友会热心帮助您。 5 Z- W R& `/ A, r0 S/ ?9 _【社区导航】STMCU产品购买、技术支持、意见咨询指南 ) h: ~& ^2 M, X8 V3 _. H9 r4 Y& r+ s2 q- n) W1 Y+ ~& A( \/ W , |) g' ]" |0 @5 s |
有个问题纠结很久了。使用的STM32F205RE MCU SPI2 进行DMA 传输,数据量大的时候接收的数据会乱,直接将MISO 和 MOSI 短接测试的,代码如下:
期望接收到的全部为0x55 ,实际出来的是前面数据正常,后面的数据就乱了。
回复:【ST MCU实战经验】栏目开通!官方解答应用问题,欢迎下载!
以下是全部代码:
#include"stm32F4xx.h"7 O. K' G+ ]4 G7 R: F7 k
void RCC_Configuration(void);
void GPIO_Configuration(void);5 y& n+ B4 I* C" c/ {. Z- t: u2 Y
void SPI_Configuration(void);9 }& I* C) ?% z/ R& M
void Delay(int nCount);1 ?% v) E1 ]! C
int main(void)+ u U. P) e2 x |! U
{ RCC_Configuration();6 }/ O5 P/ y0 l% E! B: j
GPIO_Configuration();7 P6 M* G1 P- G% u! D
SPI_Configuration();% k5 S, L2 o2 C# J# d
while(1)
{ int data=0;3 R; d( W9 r" [# d
SPI_SendData(SPI1,0x55);0 v7 ^8 d3 T4 w, M. }% @8 I [5 x- F
while(SPI_GetFlagStatus(SPI2,SPI_FLAG_RXNE)==RESET);
data=SPI_ReceiveData(SPI2);
if(data==0x55)
{ while(1) q# k9 U! s! ~
{ GPIO_SetBits(GPIOA,GPIO_Pin_4);
Delay(0xfffff);$ \, q {% a3 i! S6 y2 T( X0 S
GPIO_ResetBits(GPIOA,GPIO_Pin_4);
Delay(0xfffff);' p h x2 D3 b6 ]
};! I/ s( E# o* J a
}
else while(1): J# B6 h* C" C$ y# T
{ GPIO_SetBits(GPIOA,GPIO_Pin_4);
//Delay(0xfffff);
//GPIO_ResetBits(GPIOA,GPIO_Pin_5);4 o( Z( B @6 Z$ J
//Delay(0xfffff);
# g% y# h. g3 U: o. W! p: N
};% w; Q' m* a$ \/ r
}6 C% O7 M' X, J) A8 j
}
void RCC_Configuration()* T- D# b* i0 S$ Y. K. ?+ a
{ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB, ENABLE);
}
void GPIO_Configuration(): X/ m% Z `0 K+ `! a2 m+ J. Z
{ GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;* b( [/ F# J. C5 n; }6 W( N& e
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;; N+ d: x) u! p; W
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_Init(GPIOA,&GPIO_InitStructure);- [1 Z$ P- H* z' }) o
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;" d2 L( y3 W) d9 E
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;" O; L$ X6 f- L* r3 N
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;- x* v! n; Q. p
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_Init(GPIOB,&GPIO_InitStructure);( F- f& K; V! n' L
}
void SPI_Configuration()( X* o& q' X. |" w6 F, g) g9 L' B, l
{ SPI_InitTypeDef SPI_InitStructure;
GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);& p0 b9 b1 P. v2 \! k8 B
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1);+ Z6 L- b7 a0 o0 x x
GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);* S. o! x$ }' O& {" E
GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;; ^7 [/ ` ?1 H, G( a' w
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;3 T5 x+ J, [- K9 _ B" H O
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;/ l. _+ T. C& W4 j3 ~
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;" V3 V) T4 M- ?
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;9 J' B3 k( x6 X7 z: r
SPI_Init(SPI1, &SPI_InitStructure);, Y; ^$ C- w2 o, A2 n
SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;: j5 ~; f( F! r6 G
SPI_Init(SPI2, &SPI_InitStructure);2 C' c3 u( r1 ?( B7 E2 X( Z* a
SPI_Cmd(SPI1,ENABLE);
SPI_Cmd(SPI2,ENABLE);
}
void Delay(int nCount)' W7 m* ^+ R, a! ^9 r/ _5 J# E
{ int c1=nCount;
int c2=nCount;' z& A, \9 M) b1 z1 m' \
for(;c1>0;c1--), k3 |: O2 o& V. i, ?$ \) v/ Z
{
for(;c2>0;c2--);, v4 O) ?0 \2 d6 K. I3 e; [: t
};
}7 ?3 g; p! }1 c! S
先谢谢了~~
回复:【ST MCU实战经验】栏目开通!应用问题,官方解答,欢迎下载!
楼主,我想问一下,STM32F4 SPI1和SPI2自通信问题,SPI1为主模式,SPI2为从模式,可是我在设置波特率时,必须按二分频,SPI2才收得到SPI1发来的数据,如果设置为其他分频情况,将卡在while(SPI_GetFlagStatus(SPI2,SPI_FLAG_RXNE)==RESET); 这句上,还有就是SPI1和SPI2的波特率是不是必须为相同的,才能正确通信' \' F7 s& W9 d, l4 ]" V
以下是全部代码:
#include"stm32F4xx.h". \' n2 ~+ f. s
void RCC_Configuration(void);
void GPIO_Configuration(void);
void SPI_Configuration(void);
void Delay(int nCount);
int main(void)3 O1 {/ f& q# K5 y6 s. N
{ RCC_Configuration();- K1 Z6 R8 i8 ?/ P
GPIO_Configuration();# r' l# V2 D" Y$ |
SPI_Configuration();
while(1)4 J# u5 g- n% R# o- z8 `
{ int data=0;$ M3 ?+ r! w1 O# t3 j0 L
SPI_SendData(SPI1,0x55);& b9 R8 ~" [# }) B' r5 C
while(SPI_GetFlagStatus(SPI2,SPI_FLAG_RXNE)==RESET);
data=SPI_ReceiveData(SPI2);
if(data==0x55)1 w2 S [3 X* y2 \* a& Y7 w# b
{ while(1)4 O2 H' @' B1 w2 w2 H4 T9 U3 s
{ GPIO_SetBits(GPIOA,GPIO_Pin_4);
Delay(0xfffff);
GPIO_ResetBits(GPIOA,GPIO_Pin_4);8 E4 _1 n6 [ `+ @& b4 }, q# A
Delay(0xfffff);. P0 x5 A4 m7 K% q1 S0 K
3 E' A" E7 X+ }2 t
};/ C& g4 q( Z) H- |* M" J
}
else while(1)! f- ~) p$ U* K, K% Q0 U3 z
{ GPIO_SetBits(GPIOA,GPIO_Pin_4);
//Delay(0xfffff);
//GPIO_ResetBits(GPIOA,GPIO_Pin_5);
//Delay(0xfffff);7 ~" v7 X) |! o$ p; D/ g
};
}
}
void RCC_Configuration()" ` r! X" V6 b( m
{ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);4 i: a" w. t5 C( |
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); }" @. T+ Q- t$ s
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB, ENABLE); a! |2 G0 g! }1 O3 g
}
void GPIO_Configuration(). O* H% U C) x% v* Z# q- i7 a( `
{ GPIO_InitTypeDef GPIO_InitStructure;( r! T" q9 z, r0 Z# r
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;" u7 p9 E2 E$ p0 X" g
GPIO_Init(GPIOA,&GPIO_InitStructure);8 d* Y+ Z: F2 J! z
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;8 V# N$ c" q9 ?
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;& i3 w/ K& h# s4 [ l- U
GPIO_Init(GPIOA,&GPIO_InitStructure);% i0 C( J7 n: ^7 H' C/ y
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}/ V! A4 k: O2 p {8 L- s4 F
void SPI_Configuration()
{ SPI_InitTypeDef SPI_InitStructure;
GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);9 L0 q# g; B9 C% K/ z
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1);& E4 C6 j& F$ {
GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1);2 \/ K, p) g y" q0 D# i
GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);7 ?* s. z5 l4 ^' I. j( D
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;5 m$ ?! t' \3 i a
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;$ B, n+ x/ k, x
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;0 X) A" P7 N$ ~
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;, F- R: m$ v' x- c
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;
SPI_Init(SPI1, &SPI_InitStructure);! j8 t, z$ u* p8 U
SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;
SPI_Init(SPI2, &SPI_InitStructure);
SPI_Cmd(SPI1,ENABLE);
SPI_Cmd(SPI2,ENABLE); * a0 @9 [- q5 M
}- g: r- U: i9 D2 {9 w) t5 m
void Delay(int nCount)4 U, n& v+ y4 a/ ]9 l. m0 q; \
{ int c1=nCount;
int c2=nCount;
for(;c1>0;c1--): R. J }. w9 H1 P ]( A3 U( T* M' N
{! S, J" f J+ q' K* x
for(;c2>0;c2--);
};
}
先谢谢了~~, ^; d1 h6 {- d0 M
$ j( g% z0 |: ] N: V z( l' j/ D
楼上的问题,看我帖子给出的提示哦~
RE:【ST MCU实战经验】栏目开通!应用问题,官方解答,欢迎下载!
回复:【ST MCU实战经验】栏目开通!应用问题,官方解答,欢迎下载!
回复:【ST MCU实战经验】栏目开通!应用问题,官方解答,欢迎下载!
多谢,真好的板块,学嵌入式的好地方啊,来对了,哈哈。; w6 |& {/ r% e) t5 Y/ u+ O, \
. i" _% J& x2 {8 J: Z! `, y' @
多谢支持!!
RE:【ST MCU实战经验】栏目开通!应用问题,官方解答,欢迎下载!
RE:【ST工程师 MCU实战经验30篇】之USB接口易损坏
回复:【ST工程师 MCU实战经验30篇】之USB接口易损坏
回复:【ST工程师 MCU实战经验30篇】之USB接口易损坏
RE:【ST工程师 MCU实战经验30篇】之鬼魅一样的Hard Fault
RE:【ST工程师 MCU实战经验50篇】之鬼魅一样的Hard Fault
回复:【ST工程师 MCU实战经验50篇】之浮点 DSP 运算效率不高
鬼魅一样的Hard Fault
6 |: X6 V7 @+ o( R- h1 |7 {6 F
该问题由某客户提出,发生在 STM32F101C8T6 器件上。据其工程师讲述:其某型号产品的设计中用到了 STM32F101C8T6 器件。在软件调试过程中,遇到了一个棘手的问题:程序会莫名其妙的跳到 Hard Fault 中断。在程序中,产生该中断的位置不固定,忽而在这里,忽而在那里。发生的时间不确定,有时候程序运了很长时间才遇到,有时候开始运行后没一会就发生了。产生该问题的原因不明,不知如何进行排查。+ @1 y6 A2 D: P7 h$ P5 [/ b5 A
咋解决?
RE:【ST工程师 MCU实战经验50篇】之浮点 DSP 运算效率不高
RE:【ST工程师 MCU实战经验50篇】之浮点 DSP 运算效率不高