EDA365电子论坛网

标题: STM32F1的SPI配置问题,卡在等待发送完成,高手帮忙看下哪里配置的有问题?? [打印本页]

作者: uiabluqp    时间: 2021-5-13 09:56
标题: STM32F1的SPI配置问题,卡在等待发送完成,高手帮忙看下哪里配置的有问题??
" _' [/ \+ c" F  s0 J/ h
STM32F1的SPI配置问题,卡在等待发送完成,高手帮忙看下哪里配置的有问题??$ C8 K( @: N) c, Y
( C8 b( w+ L0 b/ }+ t
void SPI2_Init(void)5 M8 a1 P& `, D
{     ' p6 {- ]. J% x+ f/ [
  GPIO_InitTypeDef  GPIO_InitStructure;
+ H7 p4 R" a4 @  SPI_InitTypeDef  SPI_InitStructure;
2 @! J* @$ S( B" w3 H   
4 u( F% J/ U+ Y& [" ?* j    RCC_APB2PeriphclockCmd(RCC_APB2Periph_GPIOB, ENABLE);
/ D5 \; t0 I1 [2 A* [3 c  f& j4 ^3 e    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);
, \0 ?( L# h* r2 T    RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);$ W( G' v( g7 Z
   
! `# w8 c9 s7 q     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;                //Flash Power* p0 G5 Z: @) G1 c- G2 ~
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         2 E' D  N- f! T1 c% y, W
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;, J. N/ B+ Y; _) K, {
     GPIO_Init(GPIOB, &GPIO_InitStructure);. z8 h7 [/ e# q- G$ ^1 g
  
" p8 u0 g7 f8 `% z( E/ {7 ]0 |     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;                //CS  接 NSS8 j; d9 x; m' U8 V7 s% N* J5 }
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         
* a, r- I/ y/ B     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
! O% E" q1 z' E- e0 a     GPIO_Init(GPIOB, &GPIO_InitStructure);
" U) Z$ y" K# R; B   
9 U4 |- ~. j  \( m9 S& i    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;   //SCK,MOSI; G" e1 v! r7 B0 f1 F
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;7 Y  x3 a, I" R& ?8 f, @- E* b
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;9 Y+ U7 e( A( V# K3 P+ w
    GPIO_Init(GPIOB, &GPIO_InitStructure);
. K3 x3 j1 H) o
9 T: l  i/ ~+ J& B/ w# C* t    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;                            //MISO
$ r% E  J8 x$ j/ ?6 g    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOAtiNG;/ k- ^$ J6 ]4 g1 t5 L6 F
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;+ ?/ b' U* f# r" A' X( a
    GPIO_Init(GPIOB, &GPIO_InitStructure);
3 |, d0 T  O3 f   
9 c# u9 @5 x0 w$ G0 \# d8 j" M    GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);  ) `# Q! h7 K; r7 F
    6 d: G2 N' `; G/ A. ?4 o% K
    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  
5 ^7 d2 [9 U5 `8 y    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;      
( x8 K0 y0 D, c$ e5 s2 L3 J( N    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;   
  |' k8 Z( M' v* k5 V0 V# ^    SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;      
6 Y, g+ W0 G; |0 @    SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;   
8 X  @0 ]+ W8 r: z  {* w    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;     + s& d8 _: I1 L- r0 D
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;       6 f3 x& T: |% L7 [( G
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;   
0 @- r' ]7 M' }) R8 i/ {    SPI_InitStructure.SPI_CRCPolynomial = 7;   
- U4 `! d. V  R2 f" o+ l, p- @) A$ z    SPI_Init(SPI2, &SPI_InitStructure);  
. R  X) x: ^! k% E5 M    SPI_Cmd(SPI2, ENABLE);
5 q, O: q3 `8 f9 P+ `4 U     
# u  @! n# g9 q( ^8 m" U    //SPI_SSOutputCmd(SPI2, ENABLE);4 x, M3 T# A% }- [; N- H
//    if(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) != RESET){
/ P' Z8 S. O) U# g//                SPI_I2S_ReceiveData(SPI2);
# i7 ?8 }+ S! F0 n6 u+ m0 M//                SPI_I2S_CleaRFlag(SPI2, SPI_FLAG_CRCERR);
; G0 b; U: |% q; }//  }
( S2 `3 E( O0 M" C( s. p: V
. w( u8 f4 {* P$ ]/ o4 Z9 l2 K; y# C    SPI2_ReadWriteByte(0xff);   " z! t% u6 s( H) j" l
}   
# f9 l7 E0 r* R3 ^; z) ~/ T1 F' r. ~2 e; z- S( l; L' U
uint8_t SPI2_ReadWriteByte(u8 TxData)
8 f  A! v! b8 k  }. D: d/ a{                     
2 B! h8 H2 m9 A' X2 x" y# S( \2 E# O
  while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET){} //卡死在这里. i5 }1 ^% [7 o  i* e9 k
    SPI_I2S_SendData(SPI2, TxData);  , T4 U/ j; w5 w8 D
  while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET){}
+ O) \) V/ E0 g4 Z6 _0 W    return SPI_I2S_ReceiveData(SPI2);               
8 A. p* u& K' b8 C}. ]0 B7 g/ t; b  a) a" l

作者: youOK    时间: 2021-5-13 11:19
上面这个只是一部分吧
作者: xiaogegepcb    时间: 2021-5-13 14:07
这个也看不来个什么呀
作者: ulppknot    时间: 2021-5-13 14:09
看了半天," o2 L) W$ C2 |3 L5 C
RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);这句不对吧,spi2挂在APB1




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2