找回密码
 注册
关于网站域名变更的通知
查看: 600|回复: 3
打印 上一主题 下一主题

STM32F1的SPI配置问题,卡在等待发送完成,高手帮忙看下哪里配置的有问题??

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-5-13 09:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

7 j0 b' M* n2 [% j' gSTM32F1的SPI配置问题,卡在等待发送完成,高手帮忙看下哪里配置的有问题??
, m$ t0 ~9 c0 }# q5 L9 U% [
8 f* K$ v" v3 b$ b1 `void SPI2_Init(void)
4 F+ I% ~8 _0 k" p% r* F7 A  x{     ; P) U. h- L/ w& D- G" ^8 J
  GPIO_InitTypeDef  GPIO_InitStructure;- Z  A/ V: ~. K! a4 U
  SPI_InitTypeDef  SPI_InitStructure;& _8 s1 ]9 ]1 G' o2 {
    # L0 g/ U: ?; y/ ?7 q1 @3 S) b6 o3 U
    RCC_APB2PeriphclockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  ?" A/ F8 S3 A  {: I6 \    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);
9 R2 r4 O; r1 o) V    RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);8 a. f1 L$ M5 h4 z
    ; ?- H) t0 P2 @1 E0 Z
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;                //Flash Power& }* t( ?, E9 P5 ~: {3 [+ ~
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         
) m! B+ W/ u) }     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;% h' l/ f: t, q
     GPIO_Init(GPIOB, &GPIO_InitStructure);
7 }2 l$ @, L! @* n. G9 m  
4 g  u3 X: n2 d! z( _# W- a     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;                //CS  接 NSS
4 v, L, O0 ^2 g( D/ G     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         
$ K) u/ r' N6 ]# a" e6 A. V6 [     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
0 E4 a# W  w" [4 I     GPIO_Init(GPIOB, &GPIO_InitStructure);
8 Q) d5 D6 c4 s! Q2 ]9 f! u: e# i   
* x( X1 U/ ^0 i# j' c# {+ n    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;   //SCK,MOSI
# A4 L# M6 I- E/ K" n% m1 _    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
; z# _& S8 T# z# t& P4 h    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  t9 j( a- m2 Z. v# z) g    GPIO_Init(GPIOB, &GPIO_InitStructure);9 N" c* W+ C  z0 @! V. ]6 ^
9 v* ~0 k1 B  d. Z
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;                            //MISO, R) C. f/ z  N
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOAtiNG;) @# ~4 w) w9 c" a$ p2 X5 j
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
8 k5 f4 e0 r9 O# J( [# t& ^    GPIO_Init(GPIOB, &GPIO_InitStructure);
) ]: f1 C1 U2 v' w  w    5 I  A) h3 h- {+ S8 Q6 v8 {
    GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);  / G6 f5 C4 x0 X7 Q# V
   
! u& n. C; o: }2 }( ]+ t9 g) f    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;    S0 ], V# j  d6 i3 k! }
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;       4 F6 ~6 i% E6 h/ `' u! E2 Y  |
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;   $ G/ A& p$ f, I/ w/ w$ X
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;      1 e  F+ V% p7 N6 [- J
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;    ' y7 Z; c# f& Y3 ]2 Q" v
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;     9 n) Y) i7 k: V3 D, i7 u9 m- C
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;      
4 t* |- }* `% q" I( q- n* o    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;   
6 x' l' g% B7 E  V" V. w    SPI_InitStructure.SPI_CRCPolynomial = 7;   
' P, n6 S5 Q" }8 J/ k2 v    SPI_Init(SPI2, &SPI_InitStructure);  
, u" ]: N6 w0 N# g$ S' O9 X; V    SPI_Cmd(SPI2, ENABLE); : F. O( j" m; E5 m) u
     * A9 A9 O- Z# a; U# D. V, c
    //SPI_SSOutputCmd(SPI2, ENABLE);
3 h( l' a" u: @" ?# K7 Z3 d//    if(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) != RESET){
" s. o5 r3 ^, Z5 _$ N7 ~//                SPI_I2S_ReceiveData(SPI2);5 L7 b- b  x7 u4 i% y. Q  e
//                SPI_I2S_CleaRFlag(SPI2, SPI_FLAG_CRCERR);- R( x2 [) q! N6 k4 ~0 ]7 j
//  }- _8 ?. k+ e+ f: o2 E: [6 k- ?
6 Q+ d; Y* A! R* k4 }
    SPI2_ReadWriteByte(0xff);   2 [* A( A1 k- a" M
}   
1 }+ C: d# n* |- d5 j9 N7 E+ G
1 N/ x  h- c* y. z9 e  ^# Wuint8_t SPI2_ReadWriteByte(u8 TxData). Y* @1 D8 q) a: Y7 l1 Z/ c! w
{                     
3 \/ ?+ A8 k1 n
1 L3 L5 q$ d! h6 G" I4 [# l* B% S  while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET){} //卡死在这里
9 E( F3 L$ r- x. @3 N    SPI_I2S_SendData(SPI2, TxData);  
/ `/ r; A9 B! d& A  while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET){}
. I. p4 C+ Z! w: W% }: ^% e  d    return SPI_I2S_ReceiveData(SPI2);               
! O7 c" t  s: W% n. n. n4 M, y}8 {9 E. ]0 t+ K- n0 L  c" U4 b

该用户从未签到

4#
发表于 2021-5-13 14:09 | 只看该作者
看了半天,! j& A) M9 Q2 }+ j
RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);这句不对吧,spi2挂在APB1

该用户从未签到

3#
发表于 2021-5-13 14:07 | 只看该作者
这个也看不来个什么呀

该用户从未签到

2#
发表于 2021-5-13 11:19 | 只看该作者
上面这个只是一部分吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 11:25 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表