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