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