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