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