你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
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,网上看了帖子说是二者相差不大,但是我一直没有配置成功,请问您有相关的资料或者是源码吗?
8 P1 l0 h. ^+ X/ q8 I
我参考了以下帖子
. {/ M- k/ U0 V% i5 d7 c
https://www.stmcu.org.cn/module/forum/thread-609819-1-1.html
7 u8 W) `- j( E+ E, f) K' R
http://bbs.*mod=viewthread&tid=1120066
1 E# v# \% [0 X4 n1 _
但是都没有得到帖子中的结果
赞
评论
回复
支持
反对
还是看不穿
回答时间: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
9 p% b! e1 R+ c4 U7 O2 ?' A
有个问题纠结很久了。使用的STM32F205RE MCU SPI2 进行DMA 传输,数据量大的时候接收的数据会乱,直接将MISO 和 MOSI 短接测试的,代码如下:
" R( c; X y7 `6 Q
期望接收到的全部为0x55 ,实际出来的是前面数据正常,后面的数据就乱了。
/*****************************************
t' H1 r# u @0 R$ ?- h7 F6 x
函数名称:Cdfinger_Bspspi_init
$ f8 k7 {/ D7 m- q+ `4 Z) U! |5 F
函数作用:spi初始化函数
# L5 y: x1 `3 V! B9 [; E4 j; N
备注:
2 M3 V) V: q3 c5 Q4 W) d, L8 A" p
******************************************/
! z* c* ?) F+ B5 g" \
void Cdfinger_Bspspi_init(void)
' N( b8 b6 I8 T+ F! d/ z/ Y' [
{
/ L0 E+ @. o3 s- H
GPIO_InitTypeDef GPIO_InitStructure;
7 m4 F- T# H ~- K7 t6 u/ F0 G; t
SPI_InitTypeDef SPI_InitStructure;
) z5 I) U, f2 l8 [9 T
DMA_InitTypeDef DMA_InitStructure;
0 R7 c& m$ ?: \* n* w
NVIC_InitTypeDef NVIC_InitStructure;
# D4 H) w9 q0 O; t1 K/ Q" d8 u
' @+ E% s* ~* G* t
int ii =0;
+ Y. e6 x$ W2 H
- c, g0 Q; g% ?6 `' s- q
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
3 r3 Z' V: v. v. o% q
/*!< Enable SPI2 clocks */
+ Z' v) K5 F! ~% T( ^6 |: f
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
- C. _. e! [; e- f% M
/*!< Enable GPIO clocks */
9 L8 z1 G. }8 v) g8 \% M
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
$ N( M! b" f, [ P% T/ ^7 t+ J7 n
/*!< Connect SPI pins to AF5 */
: o7 e8 a# d% t" x5 M4 h
GPIO_PinAFConfig(GPIOB, GPIO_PinSource13,GPIO_AF_SPI2);
2 i: }5 I- [9 w* l7 x) v- x% K
GPIO_PinAFConfig(GPIOB, GPIO_PinSource14,GPIO_AF_SPI2);
1 o% y q# F) G1 ^6 p
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15,GPIO_AF_SPI2);
4 Z+ i) }% g K& [0 m4 V
G+ d2 U; G5 o* N4 m% ^& e
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
- | |- o& N7 w1 M/ }
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
0 W R s3 f, {, m0 ~4 D
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
* b' T% w* P* Y7 W0 Q, n" i
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
& O+ o) v! Z1 @" g A
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
: }; X3 U* H( ?. P" \7 r$ W
GPIO_Init(GPIOB, &GPIO_InitStructure);
5 Q( V' d/ M R
; j) h/ V7 K' S5 c) w, m
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
: c7 ~! z& G8 j! Z8 n* P
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
6 ~' u4 s% o8 G5 e4 y
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
8 G4 @- ^5 E' h P: h6 Y
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
% B# V; N! B& L' F+ b! M2 \
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//GPIO_PuPd_NOPULL;
: c6 l3 u* q( }( g W# A4 a
GPIO_Init(GPIOB, &GPIO_InitStructure);
# k* z9 A! U8 ?' p5 D9 O `: ~ D
Cdfinger_BspCs_HIGH();
! A) D: t( @: o W' V. r
//Cdfinger_Bspdelay_ms(1);
3 t. Y! R; ^& l& D# T
//Cdfinger_BspCs_LOW();
1 v2 s# M# {# s& x j
SPI_Cmd(SPI2,DISABLE);
' U# }( H; g$ D/ z. J7 m$ Z5 H
SPI_DeInit(SPI2);
4 A$ m# B I+ G7 W3 K. G; P
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
4 z- R/ w" {8 H3 j4 V
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
2 ?3 h8 X# ~; e6 Q, H8 q& n
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
" D& |' N' o' N$ u5 {
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
7 c" n* x9 g6 g& {0 }5 @
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
: N9 _) t& O, ]9 M5 P" s3 S
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//;
$ o/ l$ W8 }. o' C2 A
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
& n y* G7 u. Q3 o {- C
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
3 w. a# Q/ w, b5 h% M% m0 Q5 ~7 |
SPI_InitStructure.SPI_CRCPolynomial = 7;
; k9 [0 B3 F5 l% Z
SPI_Init(SPI2, &SPI_InitStructure);
6 ?- I& G' J5 A+ f: s9 i: [6 d
2 j& l& E3 e0 o, G& h0 ] M7 P7 _
memset(&cdfingerimgtxbuf[0],0x55,COMMUNICATIONLEN);
/ ?3 B5 H6 S0 h6 H+ }: N
/* DMA1 Stream0 channel4 spi tx configuration **************************************/
: |. w2 K) n& C8 S2 H/ J" \! K
DMA_DeInit(DMA1_Stream4);
# a: p3 a9 M& B i: w% E+ V& r
DMA_InitStructure.DMA_Channel = DMA_Channel_0;
$ S8 |2 X3 E8 z% W. F
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR);
% W1 M* m7 [9 W0 n7 k! ?
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&cdfingerimgtxbuf[0];
2 [" l+ ]$ D% ~, ~
DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;
/ Q2 Z! B1 y0 c& r; n
DMA_InitStructure.DMA_BufferSize = COMMUNICATIONLEN;
8 K+ ^7 |+ Z% J- R9 F" P
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//;
: ]3 K& e/ G& w! R6 a
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
- c Q) v: G1 r$ t
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
U! J$ G$ Y% t% U4 o$ c$ [) c
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
' t$ {# E* r6 X- o: q, N/ _
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;// ;
* R/ ^4 d* t- q. P7 v( P% v
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;//DMA_Priority_Medium;//DMA_Priority_High;
4 v; |( W! |( G* x3 e
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;//;//DMA_FIFOMode_Enable;
" L7 ^1 C6 g7 K5 F, s1 n ~
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
M1 q! P: I4 O4 t
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
% O- c" U, u; f. |4 x# }
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
1 M# x/ G" b" f( \6 |& S
DMA_Init(DMA1_Stream4, &DMA_InitStructure);
5 ]0 U9 Q9 A+ c0 U
& ?9 s0 u) @9 w/ q$ V0 `+ |- b
/* DMA1 Stream0 channel3 spi rx configuration **************************************/
8 I8 q# R9 ^2 L o& Q
DMA_DeInit(DMA1_Stream3);
" F+ m8 V; r& R
DMA_InitStructure.DMA_Channel = DMA_Channel_0;
$ g: S. c# E% _; Q/ b
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR);
0 f6 x% b* ^3 v$ }- C6 F) X* P
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&cdfingerimgrxbuf[0];//(uint32_t)&cdfingerimgrxbuf[0];
8 N! s8 w* {$ `$ o. m
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
}% G2 Y- K) T! I
DMA_InitStructure.DMA_BufferSize =COMMUNICATIONLEN;
& | a1 C2 ~4 `. S) P$ q' E: P
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
% G$ M7 `4 `4 T, j6 }2 w
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
% U1 B+ q3 u: \3 ]% R9 _
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
& c8 G- Z% k' e4 j/ k
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
' R2 ^( d5 ~$ r
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;//DMA_Mode_Circular;
0 y3 U" E8 Q% D; O
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;//DMA_Priority_Medium;
5 {2 v) W, u6 w- z7 q
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;//DMA_FIFOMode_Disable;
2 J: P4 C1 a/ y3 H2 {4 Z0 q1 l
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
5 B- g3 S% t0 x# K. Y b
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
" T3 |( W& h0 Y+ m
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
; b1 o7 t- k' r
DMA_Init(DMA1_Stream3, &DMA_InitStructure);
9 K, R+ L g' X, k! L/ i
//Cdfinger_BspCs_HIGH();
0 U: Y& @$ s$ C% h
# Z' h3 p. t% P2 e
& w _0 L- [# x$ x. f% D) M; h
/ t6 y2 f( t' H8 |4 q1 m) g9 o% D
//发送中断
) X3 h$ Z* D' R7 }. G
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
1 w2 H" V! k$ o: k" z
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream4_IRQn;
% f0 P/ \8 I: H9 W* G. d4 p
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
" e$ s" k+ R+ N Q; ^/ y- C
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;
3 }" @) H7 o# r. \. y3 k% ?/ B
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+ u& }5 O" f0 Z
NVIC_Init(&NVIC_InitStructure);
' ~! x; W- h$ m" ^% w, ?
& t8 j) J% m" L3 H* n, U2 D ?. R
//接收中断
+ O0 I/ k: t4 F: `$ V, ~1 t
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
5 i& ~& M; p, |' [
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream3_IRQn;
; \$ S/ {. D+ U/ A
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- Y+ `, D9 |- p; g
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x04;
% L( y0 y+ H2 Q' C4 {
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- p6 v8 ^' V" }( @
NVIC_Init(&NVIC_InitStructure);
1 c; n1 d" p- m4 S8 y% c( U
SPI_TIModeCmd(SPI2,ENABLE);
1 O+ k4 j, D3 M5 K0 D( a
SPI_Cmd(SPI2, ENABLE);
* c5 g2 c( {" t
DMA_ITConfig(DMA1_Stream4,DMA_IT_TC,ENABLE);
5 i6 N L' ~* v; J, O
DMA_ITConfig(DMA1_Stream3,DMA_IT_TC,ENABLE);
" x# o* l' N* z9 u7 K$ y
, {7 e& R, k1 s5 B
DMA_Cmd(DMA1_Stream3, ENABLE);
1 }* a: w, `0 R+ ]/ t
DMA_Cmd(DMA1_Stream4, ENABLE);
& i6 t/ F; M. n- M0 X) L
SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Tx|SPI_I2S_DMAReq_Rx, ENABLE);
: v; _: `* J7 j! f' L5 \! @
( D0 C/ Z" B( g2 j: z' ^2 U
for(ii=0;ii<COMMUNICATIONLEN;ii++)
" g3 J5 h5 k5 \5 o1 @! @
{
/ S8 S' F6 L1 C# R: d
if(ii%8==0)
2 k2 R. r- R O3 F4 r" z( ?: h5 j
{
( K8 U& K3 `+ h8 S
printf("\r\n");
T, f' y6 X9 Z: \
}
6 ?7 D$ m0 _$ Y) [
printf(" 0x%x",cdfingerimgrxbuf[ii]);
, }% H% B1 p' Y0 p
}
6 g; ], i$ R- `2 c+ P5 C$ B; ~
printf("111\r\n");
% F$ }5 z+ @% W3 }; L# A7 I+ n
}
% B P) ?7 r; ?5 B- J
! D* _( i/ l r& I
, {6 m$ Q( s( q8 o% R' J! z& ]
void DMA1_Stream4_IRQHandler(void)
* Q9 E7 ~0 \/ i8 [1 S, q) |
{
. V' u# q) o6 ?( N6 H! A; M
if(DMA_GetITStatus(DMA1_Stream4,DMA_IT_TCIF4) != RESET)
; }. S( p9 `' L
{
" s& J; j' ]# X) w" U/ R1 Q, ^# D% t
printf("DMA1_Stream4_IRQHandler = %d \r\n",DMA_GetCurrDataCounter(DMA1_Stream4));
2 a9 o; ?0 h/ ~) L o" b- j1 `( f
DMA_Cmd(DMA1_Stream4, DISABLE);
: |% A6 p* t5 B; ~, b
DMA_ClearITPendingBit(DMA1_Stream4,DMA_IT_TCIF4);
; I' m n4 \% j
DMA_ClearFlag(DMA1_Stream4,DMA_IT_TCIF4);
. L7 C5 ?9 A5 D! l7 ^) z$ S s0 a
}
8 ?" F9 w z4 M4 W c7 @3 O; m8 N
}
3 N9 p5 Q5 H% t5 [' q
$ _6 I4 W' a! k6 C4 v
void DMA1_Stream3_IRQHandler(void)
! c; w! F2 N, ]% a
{
( B7 m+ u1 m4 W# K
if(DMA_GetITStatus(DMA1_Stream3,DMA_IT_TCIF3) != RESET)
9 K2 z# b3 a) p3 d
{
# R) }1 Y$ w! f: Q1 L1 p* ^
printf("DMA1_Stream3_IRQHandler = %d \r\n",DMA_GetCurrDataCounter(DMA1_Stream3));
2 P' d9 `. X6 k$ A% l' k3 L
DMA_Cmd(DMA1_Stream3, DISABLE);
/ P, J3 M# J) V/ R- W- r
DMA_ClearITPendingBit(DMA1_Stream3,DMA_IT_TCIF3);
4 q: u$ M1 l5 C5 Q( F% m+ |+ y
DMA_ClearFlag(DMA1_Stream3,DMA_IT_TCIF3);
- p6 {; \: \4 _% j7 E0 u3 E' F
}
4 S1 t" ?: G6 j: X# K5 `+ H
}
复制代码
赞
评论
回复
支持
反对
1 ...
10
11
12
13
14
15
16
17
18
... 19
/ 19 页
下一页
所属标签
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
我参考了以下帖子
https://www.stmcu.org.cn/module/forum/thread-609819-1-1.html
http://bbs.*mod=viewthread&tid=11200661 E# v# \% [0 X4 n1 _
但是都没有得到帖子中的结果
有个问题纠结很久了。使用的STM32F205RE MCU SPI2 进行DMA 传输,数据量大的时候接收的数据会乱,直接将MISO 和 MOSI 短接测试的,代码如下:" R( c; X y7 `6 Q
期望接收到的全部为0x55 ,实际出来的是前面数据正常,后面的数据就乱了。