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