|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
( `" u- B: t" r+ VSTM32F1的SPI配置问题,卡在等待发送完成,高手帮忙看下哪里配置的有问题??
+ c) L+ m! {, `* b0 p# _8 b
8 J) z, ~/ A& J) f( bvoid SPI2_Init(void)
1 u/ Z: E1 W3 D% B, c{
F2 Q- \2 U( u; G4 q; q% u GPIO_InitTypeDef GPIO_InitStructure;! S- N' q7 g) {( ^) R6 j0 n
SPI_InitTypeDef SPI_InitStructure;
( [' a" E3 P b3 Z7 E2 A7 X5 H( `3 B
# B/ S1 @4 ]. T2 m! w RCC_APB2PeriphclockCmd(RCC_APB2Periph_GPIOB, ENABLE);: {! t, [; i/ {4 B5 a% g& M- U
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);4 O( Z7 t5 `( p6 ?9 x" u
RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);5 V! F" o( M x9 |) |
2 A: A( k2 o! O! @3 w) ~3 a, x GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //Flash Power
3 k7 X- k" m3 o, W9 y3 e. P# @2 I. l GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; T8 s* y4 ^! q0 K' O$ _+ @
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;0 J6 d3 \! a* a% T+ f. U7 d
GPIO_Init(GPIOB, &GPIO_InitStructure);5 _4 m! S4 d9 M9 Y& u
* r8 B) E) `( c9 \ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //CS 接 NSS$ b8 {$ \/ C8 l9 O
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
( b) B. @* I5 v4 z$ b7 c GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;4 b* F' J. J; Y
GPIO_Init(GPIOB, &GPIO_InitStructure);
& s2 O# R0 O( v2 @5 i9 f
. f% g0 A( M! `, q j GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15; //SCK,MOSI1 q; O1 U* v6 S3 n( F7 k
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& l U6 ~1 o1 @% H4 V. z! u GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;, j( S; h' v6 d/ h9 `% Z/ W$ L
GPIO_Init(GPIOB, &GPIO_InitStructure);
, o$ Y) w; ?- q$ u0 ~, F, m
* R5 I0 C z! _( _! \: M GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; //MISO7 i# h0 N* P* z0 W
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOAtiNG; a7 N. t4 z& D2 P; \, i
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
2 i' e9 m3 l" i: e# v( }. @ GPIO_Init(GPIOB, &GPIO_InitStructure);& d9 S1 Y9 B# N7 z
+ h- D2 l* m$ v+ I# f GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
$ B( i5 }5 _% J! W& I6 ^ 3 F( J$ ^% g7 m! c9 @. I2 \, F
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
- T; _5 c( T. Q5 i. y- o9 U# S e SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
0 Z7 `1 v: W' F0 a B( W# O& D SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
1 M3 W. Q3 o. L( j2 ^ SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
% U4 ?# U; U* u6 B SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; ) d7 A3 U- s8 e
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; 0 a! [4 N) m/ k O+ M
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
5 G! g7 X4 R8 j& E7 c5 ]0 ? SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
# w1 B- B$ b' p2 W. _; V4 E SPI_InitStructure.SPI_CRCPolynomial = 7; p1 x) L& {: e [- X0 w
SPI_Init(SPI2, &SPI_InitStructure);
# l! U' h2 d# t! |; E* C0 @ SPI_Cmd(SPI2, ENABLE);
2 Q$ P' G) y: k/ o # C, J0 | p/ f; z8 e' ?4 }
//SPI_SSOutputCmd(SPI2, ENABLE);9 x; Z5 V0 U. Z8 [! T" X9 B. F- u
// if(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) != RESET){" ^. o, o! X) q* P- x; A" y
// SPI_I2S_ReceiveData(SPI2);
3 m5 {, S8 w: e) p// SPI_I2S_CleaRFlag(SPI2, SPI_FLAG_CRCERR);( l% U. p& t% e# D! }
// }! L( ^! F! w# K# K
2 k% s- h% u# a4 | SPI2_ReadWriteByte(0xff);
4 G$ W8 H" x% Q0 A/ h" ~1 S$ a}
" z( b7 L* M3 W2 T
* C" o I7 e% K5 E* E/ K( K' Q- r3 {! quint8_t SPI2_ReadWriteByte(u8 TxData)% s, m5 P5 n% m
{ * j% S# h3 ^% o1 f% X
, e3 I. G5 k* |: a& ^ while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET){} //卡死在这里
9 V, {+ D& j; X, A$ Z6 \ SPI_I2S_SendData(SPI2, TxData); 5 B( w+ U2 p% J3 d3 V
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET){}/ x9 z( H) k" K9 A( ?# T
return SPI_I2S_ReceiveData(SPI2);
i% \2 F/ d* D* ]0 E! z0 {}
# ~; \% D- F; x/ y# ? |
|