|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
4 c4 g$ ~. x! O* VSTM32F1的SPI配置问题,卡在等待发送完成,高手帮忙看下哪里配置的有问题?? M9 t2 o! ^$ k3 [5 }
# S5 o# Y9 N: M! X; L9 c- @1 cvoid SPI2_Init(void), L. X! O3 e6 _1 a' r3 A& G
{ 4 I+ r9 g/ a3 ~- u, K; J, g
GPIO_InitTypeDef GPIO_InitStructure;
. _" N" ?/ R6 T, { SPI_InitTypeDef SPI_InitStructure;
) I9 _8 A+ S% `' m5 h0 v
* o8 k3 C6 i& ~+ g6 v9 k8 |! B RCC_APB2PeriphclockCmd(RCC_APB2Periph_GPIOB, ENABLE);- i e& h' ~6 F) `$ W$ h- B# L
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);
3 M4 H' Z' r' l) S8 _) [ g RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
0 \- N' b ~+ _) E# K% Q6 E( @
& r5 @+ {2 b/ z, } | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //Flash Power5 q" }" u! [+ b7 U( f: x
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - ? j; L* D1 i2 o7 W
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
, y# E; Q. K1 r; u GPIO_Init(GPIOB, &GPIO_InitStructure);9 O+ u" b( U: P) T# V6 F
! s4 I! @& d: u- m1 U( g
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //CS 接 NSS- H* x k* x; G3 R8 `: k# V- G
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 4 ^* q( l ]) y. q7 V" @, s
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
7 B6 \ P5 ?3 q0 ?, V4 n GPIO_Init(GPIOB, &GPIO_InitStructure);
9 `5 h2 Y& l9 v, P6 E; C & _4 C7 K& L6 G; M' Y) Y7 A
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15; //SCK,MOSI& X; b8 K0 O4 ]
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;& U& \- U" h, O
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
0 h+ E% O" K' T0 @7 T/ t0 n/ H GPIO_Init(GPIOB, &GPIO_InitStructure);
% X C3 i, d, e7 U9 `7 G/ v) s
* j& Y: o! L% E2 U9 }3 c GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; //MISO8 U. B: X" D+ B9 j. b
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOAtiNG;6 @. n8 x3 ~; ]3 Z3 W
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;( j$ E1 N6 n6 [
GPIO_Init(GPIOB, &GPIO_InitStructure);
; E; @/ @- |" c
+ C# _& m/ B/ Q# ^% i } W5 j' F& ^. K GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15); ; b4 e1 \* L/ F- w% ?
3 J3 I0 V$ R2 d& P SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; . B: R8 i, C" Z6 g, E
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
8 i# `' z' ^7 C SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; 2 N! K# X% U5 r, C. E' o4 v
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
3 j3 ?$ P+ S4 E# i! ?$ C; W1 w SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; 6 ]2 M. H" E8 P. ]+ {) R! T- H
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
* I% E$ g4 r* l, m9 _ SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
8 B3 e% T) S, @+ j SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; ; j3 t" A( f9 A: p- D- Z) e) u
SPI_InitStructure.SPI_CRCPolynomial = 7; + m- R3 h- o+ [$ m2 a8 e
SPI_Init(SPI2, &SPI_InitStructure);
6 u. b2 N' B& J# q$ z SPI_Cmd(SPI2, ENABLE); / O' C+ [$ j) {4 r2 U
, O j' U6 I! C
//SPI_SSOutputCmd(SPI2, ENABLE);
4 A/ E9 _3 G" p) k0 |3 a+ P// if(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) != RESET){9 W8 V: W' i+ f+ s0 L
// SPI_I2S_ReceiveData(SPI2);
E0 d* |7 K3 n9 \' x// SPI_I2S_CleaRFlag(SPI2, SPI_FLAG_CRCERR);, s7 e7 H5 q1 p$ d
// }
0 B$ Z5 k6 y& r7 v4 P. B' L' a% V2 W" }2 |
SPI2_ReadWriteByte(0xff);
0 i( ~6 R' i _' G}
& a! ?) F- Q% ]' w0 x1 e& ]" T9 {
uint8_t SPI2_ReadWriteByte(u8 TxData)) K: j$ |0 T3 M: }/ G. m
{
" Z0 U+ ~. [& S6 r+ x! r( X. F8 |' ^' U. {2 j, Q2 p# F& g; I5 u0 G
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET){} //卡死在这里
9 o* d* w9 I$ x SPI_I2S_SendData(SPI2, TxData);
8 m: c, a l! w while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET){}
1 _: d' F" B. `5 o3 X return SPI_I2S_ReceiveData(SPI2);
: B" I# i/ G, }% a' h5 H$ B}; J; G6 l) x; ]) g9 y
|
|