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