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 接 NSS
8 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' X
2 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