你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
STM32官方实战经验分享(2020.7.31更新)
精华
[复制链接]
沐紫
发布时间:2014-1-23 14:58
阅读主题, 点击返回1楼
赞
11
收藏
156
评论
278
分享
发布时间:2014-1-23 14:58
请先
登录
后回答问题
278个回答
NNXia
回答时间:2017-3-31 14:36:33
a0a.1 0b0c
好帖!收藏了
赞
评论
回复
支持
反对
epochal
回答时间:2017-4-20 06:28:38
a1024a.1 0b0c
谢谢分享!
赞
评论
回复
支持
反对
zhaoshan413
回答时间:2017-5-12 09:05:30
a0a.1 0b0c
非常好的汇总
赞
评论
回复
支持
反对
yanlinwei
回答时间:2017-7-4 11:43:59
a0a.1 0b0c
很好的汇总资料,楼主辛苦了
赞
评论
回复
支持
反对
yygkqzh
回答时间:2017-7-4 22:53:35
a4a.1 0b0c
楼主您好 我在使用STM32CUBE配置以太网通信,使用的是正点原子STM32F407的板子,PHY芯片采用的LAN8720A,但是STM32F4cube中配置使用的芯片是LAN8742A,网上看了帖子说是二者相差不大,但是我一直没有配置成功,请问您有相关的资料或者是源码吗?
" q- I0 y; z1 e$ s7 S
我参考了以下帖子
* M/ a& T, K: d' l
https://www.stmcu.org.cn/module/forum/thread-609819-1-1.html
W5 c! [6 D: {
http://bbs.*mod=viewthread&tid=1120066
' O- H2 }, Z& V- W; j
但是都没有得到帖子中的结果
赞
评论
回复
支持
反对
还是看不穿
回答时间:2017-7-28 16:10:40
a1024a.1 0b0c
好贴!!
赞
评论
回复
支持
反对
diandian
回答时间:2017-8-1 14:48:40
a1024a.1 0b0c
签到签到
赞
评论
回复
支持
反对
diandian
回答时间:2017-8-1 14:53:42
a1024a.1 0b0c
围观围观
赞
评论
回复
支持
反对
忘不掉
回答时间:2017-9-5 19:19:50
a0a.1 0b0c
非常不错!很好的资料!
赞
评论
回复
支持
反对
epochal
回答时间:2017-9-5 21:09:57
a0a.1 0b0c
版块真好!赞赞赞!
赞
评论
回复
支持
反对
leo121_3006061
回答时间:2017-9-18 11:50:24
a0a.1 0b0c
非常好的帖子,THANKS!
赞
评论
回复
支持
反对
1401696616
回答时间:2017-9-28 15:25:21
a0a.1 0b0c
许多问题并没有碰到 只能来签个到
赞
评论
回复
支持
反对
嵌了个入式
回答时间:2017-11-21 08:54:00
a0a.1 0b0c
厉害了,这个帖子必须要顶一下
赞
评论
回复
支持
反对
带我装逼带我飞
回答时间:2017-12-22 09:14:44
a1024a.1 0b0c
好贴,MARK!
赞
评论
回复
支持
反对
5768340
回答时间:2018-1-13 14:42:54
a0a.1 0b0c
HI
- p" \, [# @+ x! U
有个问题纠结很久了。使用的STM32F205RE MCU SPI2 进行DMA 传输,数据量大的时候接收的数据会乱,直接将MISO 和 MOSI 短接测试的,代码如下:
! `) u& M& F4 ?# y% G
期望接收到的全部为0x55 ,实际出来的是前面数据正常,后面的数据就乱了。
/*****************************************
5 [7 m- P- c2 j% b8 p
函数名称:Cdfinger_Bspspi_init
9 S6 y8 X8 [4 P. C" B/ p3 X
函数作用:spi初始化函数
6 w" G- I; U' F0 Y; N1 v- h( C# ~
备注:
9 Y# i* Z0 `* J6 N" O' U4 i
******************************************/
4 Y8 K4 R+ C0 w( \% C$ p! {3 k: o
void Cdfinger_Bspspi_init(void)
* q7 ~" f2 J$ e
{
% H% z# y$ B: s* ?
GPIO_InitTypeDef GPIO_InitStructure;
# {9 o W. ]$ l+ N: @7 D8 R
SPI_InitTypeDef SPI_InitStructure;
g. u: W+ Y6 f' H0 J
DMA_InitTypeDef DMA_InitStructure;
( }( ~ X; S, w% ?( f3 r
NVIC_InitTypeDef NVIC_InitStructure;
7 ~4 ?* [$ z) ~5 l) S( N
7 C" L6 L, [) G g5 n& J) S& b
int ii =0;
n% f, S( V/ G
8 Q l8 Y6 b0 p* D1 i! J6 H
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
4 p) C7 Y# M+ I. A4 R
/*!< Enable SPI2 clocks */
R6 W. H/ K% Q5 k
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
9 x# M6 p: A9 W; i- @6 p6 {( q; l
/*!< Enable GPIO clocks */
( a6 s$ D, j Q' y
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
2 u! F0 q, S8 b# k7 |
/*!< Connect SPI pins to AF5 */
$ N& s0 s' ] O' I
GPIO_PinAFConfig(GPIOB, GPIO_PinSource13,GPIO_AF_SPI2);
8 Q p/ z9 w! I, B* ^
GPIO_PinAFConfig(GPIOB, GPIO_PinSource14,GPIO_AF_SPI2);
+ H( Q) [- U$ s: O+ X
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15,GPIO_AF_SPI2);
) K) s5 ~' X' D/ u+ Y) f# X
# v K/ Y$ O9 q+ I
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
7 Y- G9 ]1 L/ W' G& T
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
' w3 T, f/ M! M$ `
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
, f2 ^- O ?2 }# |
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
0 P; F6 K$ E8 `8 J1 N4 b6 D
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
- M8 C7 f" j2 y, I8 N
GPIO_Init(GPIOB, &GPIO_InitStructure);
1 g2 j9 g7 Z3 S+ ^# I7 c4 h1 B
- b ]/ j: U) K* Q! E) U4 |
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
: d/ o _8 w9 y0 \6 N
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
# o. q+ K( E/ t3 y! R1 a* K+ o
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
: O0 A) z" t9 \
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
" Y1 k# N0 \( M2 o% q8 G
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//GPIO_PuPd_NOPULL;
; \/ y% ], w' F/ t9 U& R( T
GPIO_Init(GPIOB, &GPIO_InitStructure);
! n: f3 g7 }4 s% h3 `
Cdfinger_BspCs_HIGH();
$ c2 P) E8 z" z% N6 a' m" U8 p
//Cdfinger_Bspdelay_ms(1);
( B* ? C7 m+ H! G1 q
//Cdfinger_BspCs_LOW();
+ B. G6 ]8 c1 q! `( E h! g/ ^7 P
SPI_Cmd(SPI2,DISABLE);
- K- M# |1 k u, G2 W
SPI_DeInit(SPI2);
- h$ c9 Q( l1 D
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
. M3 z- ^! E0 s4 }( V/ C, S* }' l" a
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
% r1 e. A9 r8 a! I5 H" {3 g
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
8 V7 i2 R: K/ Y
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
; O& D4 D ?, t" u+ e' x2 O6 O
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
3 {# d( C# A! k1 L2 D- ~
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//;
2 X0 d1 j0 t, I
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
" D( f9 D' k s& I' ?
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
: ^( W( p. K# @& ~* f+ x+ }3 _
SPI_InitStructure.SPI_CRCPolynomial = 7;
d7 p& s8 Z( _; L
SPI_Init(SPI2, &SPI_InitStructure);
7 L3 j# B$ \; F3 \
' Y" i7 o. |% y/ w/ h
memset(&cdfingerimgtxbuf[0],0x55,COMMUNICATIONLEN);
: n4 `! ]/ J- F6 i. u2 M# B/ A
/* DMA1 Stream0 channel4 spi tx configuration **************************************/
" F# j7 Y" r' p, g9 ^# U/ ~. ^
DMA_DeInit(DMA1_Stream4);
5 W! K# P0 F7 V
DMA_InitStructure.DMA_Channel = DMA_Channel_0;
; m3 X {7 b* m7 b0 X6 r
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR);
# s. U2 |! h+ t9 G% G
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&cdfingerimgtxbuf[0];
" r3 w2 F/ ~- t% E+ ^
DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;
3 ^' e' T4 m) ~
DMA_InitStructure.DMA_BufferSize = COMMUNICATIONLEN;
% O6 ?' N% k0 k# v* X# C
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//;
5 W! l6 W7 m) h9 D
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
$ X& M: W4 ]! D1 M3 [/ e% }; U/ k
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
) h# a8 c6 ?1 A, z! s9 C4 \
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
% z, | |2 E' \2 R0 n: W: I
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;// ;
6 U! _" J0 P! m0 P3 y" I' T: ^
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;//DMA_Priority_Medium;//DMA_Priority_High;
7 j$ m0 \: T# N' a
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;//;//DMA_FIFOMode_Enable;
) C8 B- f. {$ H5 d
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
3 l! q# ~, S/ P1 z$ O5 v* s
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
, q. Q% v. t6 i8 K1 q
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
) S0 b+ `. g2 L# D
DMA_Init(DMA1_Stream4, &DMA_InitStructure);
% F' T1 c: W, v8 I5 H. F' o/ y) E
: a5 c9 d8 d8 o1 P# a9 w
/* DMA1 Stream0 channel3 spi rx configuration **************************************/
5 s0 A, d6 q5 _5 d+ C/ i; X2 [
DMA_DeInit(DMA1_Stream3);
" O8 k* H* `, m6 X
DMA_InitStructure.DMA_Channel = DMA_Channel_0;
; W0 h9 E( b+ |" C9 v4 ^
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR);
6 v, J" C& h# m3 i- D# b2 L0 W
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&cdfingerimgrxbuf[0];//(uint32_t)&cdfingerimgrxbuf[0];
" i' W& L7 ^& o1 g
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
' A' c1 ]: B8 x# b, c
DMA_InitStructure.DMA_BufferSize =COMMUNICATIONLEN;
# P9 i4 W& X; d: y( t# ]- p
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
& g; C! M) r5 s: q. ? A
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
- M9 L5 W* B: t2 C: V# w
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
( d6 z% j1 N5 \7 y4 Z
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
+ G- N" d4 k5 }/ H2 J6 N
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;//DMA_Mode_Circular;
; }+ a( W6 t1 A, e- I5 D7 D/ L" z
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;//DMA_Priority_Medium;
# r& e* _! T& ^' e. ]
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;//DMA_FIFOMode_Disable;
8 v. u, W& D, d$ X4 _0 K
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
, l8 H4 W: B0 C$ }0 p0 e
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
9 {; @$ p0 i$ n, F+ A
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
2 {; X+ f1 f! p6 X
DMA_Init(DMA1_Stream3, &DMA_InitStructure);
- d4 V$ ^" A& w2 w$ H5 G; K
//Cdfinger_BspCs_HIGH();
6 \9 U1 C4 l: l2 ]7 e0 t w# u
! P! g! ~. H- D! V+ O5 f) g1 s/ S
5 Q8 S8 o! P) u! c; W
$ _* U3 U! }, H8 j4 R
//发送中断
' |" {6 {8 r7 i5 A( [) X# b. q
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
+ N8 I) _; M) i5 }" _
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream4_IRQn;
4 x9 U$ X( r) d" ^3 g1 u
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
% z! t0 ?7 x8 e8 W; W
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;
0 K0 j/ f4 @( G+ d6 {
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
# z* `! x( P8 u9 O0 b u% t2 ]
NVIC_Init(&NVIC_InitStructure);
' A" _" q2 m, r
; O9 Z: f3 u. l: L/ x/ c5 |4 ~
//接收中断
2 y7 K" L9 g! N7 P* t- z: C/ d, J
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
% y$ W0 i; s5 f
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream3_IRQn;
- K2 m, A" T+ z5 q: C3 ?
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
. V+ x1 J5 e& x. L, P6 J8 D
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x04;
9 ]0 H1 G# u8 ?" V& d) D/ |: g& U
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
7 v5 v. Q6 U3 U: O! }1 L
NVIC_Init(&NVIC_InitStructure);
" P% A" [+ k& A4 d
SPI_TIModeCmd(SPI2,ENABLE);
7 k1 B- U; q k& C- [$ ~* S
SPI_Cmd(SPI2, ENABLE);
% B5 G( d/ Z" k( T" k" H
DMA_ITConfig(DMA1_Stream4,DMA_IT_TC,ENABLE);
8 h3 I9 o4 x6 }) p1 A0 g
DMA_ITConfig(DMA1_Stream3,DMA_IT_TC,ENABLE);
! z% ?- j9 X1 r5 G7 [
: [+ `$ s5 `, I) Q. [- g- @
DMA_Cmd(DMA1_Stream3, ENABLE);
; ^ I' \2 F2 S- S& z" z- }$ s6 B
DMA_Cmd(DMA1_Stream4, ENABLE);
, ^) ]% U7 `4 j+ X! E
SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Tx|SPI_I2S_DMAReq_Rx, ENABLE);
7 R8 ^3 I u$ f8 N
! O* j, V: o3 T
for(ii=0;ii<COMMUNICATIONLEN;ii++)
, H! E; `5 a: W j/ I+ b% K
{
) Y3 n" _: _" f; `; M. I8 [
if(ii%8==0)
. ~" B5 H( m( }' P
{
* t8 Q; v% D8 V; l
printf("\r\n");
' [$ `3 w/ ^9 b: o/ H- U
}
6 J' ?6 r! F2 S$ I" H2 G( b
printf(" 0x%x",cdfingerimgrxbuf[ii]);
; f! _+ Y* |( E
}
7 x% S- T e; \
printf("111\r\n");
3 @+ {( N- z# B& h$ s# d t, P" j
}
# q# C" K/ ?8 L. h
; J5 m; y8 e0 ?' F
5 p* U1 K9 G8 A
void DMA1_Stream4_IRQHandler(void)
' P$ \( v* U/ R, \! ^$ q1 p
{
8 w0 |. e) e) Q, S! q
if(DMA_GetITStatus(DMA1_Stream4,DMA_IT_TCIF4) != RESET)
8 v( t* d W$ C
{
2 ^, N. R8 X! h. P8 o* _
printf("DMA1_Stream4_IRQHandler = %d \r\n",DMA_GetCurrDataCounter(DMA1_Stream4));
) ? f( b( b1 k* m
DMA_Cmd(DMA1_Stream4, DISABLE);
* X1 d6 k h; s' V3 ?
DMA_ClearITPendingBit(DMA1_Stream4,DMA_IT_TCIF4);
! r6 L/ P' I1 p. U
DMA_ClearFlag(DMA1_Stream4,DMA_IT_TCIF4);
& u0 Q# _ D0 |1 {; Z) r# i3 H4 t
}
' d/ K5 i7 a! Q8 Z. R# N$ j2 @) b
}
# |5 r1 R( a5 \# B2 o
6 Y! J. u0 d* u. k8 w
void DMA1_Stream3_IRQHandler(void)
+ \' I7 D) z8 I1 Z0 _9 ?! M
{
6 J* b) Y) u5 r5 x
if(DMA_GetITStatus(DMA1_Stream3,DMA_IT_TCIF3) != RESET)
1 G/ @: o# P" V/ Q. ^* Z: ^
{
8 h; n) F6 O y8 M' N/ ?
printf("DMA1_Stream3_IRQHandler = %d \r\n",DMA_GetCurrDataCounter(DMA1_Stream3));
4 T/ _8 F' a8 R/ R& |8 T
DMA_Cmd(DMA1_Stream3, DISABLE);
4 T+ j. c, K) L
DMA_ClearITPendingBit(DMA1_Stream3,DMA_IT_TCIF3);
( M2 q% s+ n- t4 |5 j9 ]+ R: Z
DMA_ClearFlag(DMA1_Stream3,DMA_IT_TCIF3);
* P$ ~& _3 |, k, C; ?6 ^6 q4 s
}
7 u) h; L+ w* G/ m# b4 m
}
复制代码
赞
评论
回复
支持
反对
1 ...
10
11
12
13
14
15
16
17
18
... 19
/ 19 页
下一页
所属标签
相似分享
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
我参考了以下帖子* M/ a& T, K: d' l
https://www.stmcu.org.cn/module/forum/thread-609819-1-1.html
http://bbs.*mod=viewthread&tid=1120066' O- H2 }, Z& V- W; j
但是都没有得到帖子中的结果
有个问题纠结很久了。使用的STM32F205RE MCU SPI2 进行DMA 传输,数据量大的时候接收的数据会乱,直接将MISO 和 MOSI 短接测试的,代码如下:
期望接收到的全部为0x55 ,实际出来的是前面数据正常,后面的数据就乱了。