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