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