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