打印
[STM32F1]

死循环了

[复制链接]
1797|49
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dengdc|  楼主 | 2021-10-17 22:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET);

使用特权

评论回复
沙发
huangchui| | 2021-10-17 22:06 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
wyjie| | 2021-10-17 22:08 | 只看该作者
void hanzireadone(u8 *pBuffer,u8 qu,u16 ReadAddr)
{
unsigned char i;
GPIO_SetBits(GPIOB,GPIO_Pin_10);
   hanzi_cs_l;
   while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET);
   SPI_I2S_SendData(SPI2,qu);
  green_led_on;
   while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET);
green_led_off;
   SPI_I2S_SendData(SPI2,ReadAddr>>8);
   while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET);
   SPI_I2S_SendData(SPI2,ReadAddr);
   for(i=0;i<32;i++)
   {
  while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
     *(pBuffer+i)=SPI_I2S_ReceiveData(SPI2);
   }
   hanzi_cs_h;
}

到这里就死循环了,好象TXE一直为0,SPI2好象没有发送,好象发送缓冲区中一直有数据
  green_led_on;
   while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET);

MOSI 和MISO和SCK电压在0。8V左右,不知道什么原因??

使用特权

评论回复
地板
zwll| | 2021-10-17 22:12 | 只看该作者
你的内核运行速度是多少?

使用特权

评论回复
5
pengf| | 2021-10-17 22:18 | 只看该作者
SPI的运行速度是多少?

使用特权

评论回复
6
dengdc|  楼主 | 2021-10-17 22:20 | 只看该作者
你的SPI的SCK频率是多少?

使用特权

评论回复
7
zhenykun| | 2021-10-17 22:23 | 只看该作者
你的问题与这三个频率有关。

使用特权

评论回复
8
supernan| | 2021-10-17 22:26 | 只看该作者
其实自己也没去测过

使用特权

评论回复
9
dengdc|  楼主 | 2021-10-17 22:28 | 只看该作者
自己都不知道

使用特权

评论回复
10
zwll| | 2021-10-17 22:31 | 只看该作者
我也遇到这个问题了 ,
一开始好用 读取数据没问题,后来就进入到 死循环
按照其他说的 加延时、改动数据等都不成功

使用特权

评论回复
11
pengf| | 2021-10-17 22:34 | 只看该作者
后来考虑,它一直在RESET状态,硬件上一直是低电平,怀疑是IO的电平状态有问题

使用特权

评论回复
12
heweibig| | 2021-10-17 22:36 | 只看该作者
我在DATA数据线上 都加了10K的上拉电阻 ,这样就解决了 。你可以试下

使用特权

评论回复
13
renyaq| | 2021-10-17 22:38 | 只看该作者
MOSI,MISO还有SCK在空闲状态尽量保持高电平

使用特权

评论回复
14
heweibig| | 2021-10-17 22:41 | 只看该作者
这就是为什么加上拉能够解决问题的原因。

使用特权

评论回复
15
liliang9554| | 2021-10-17 22:45 | 只看该作者
当然,进入死循环还是有很多原因,最基本的先检查初始化是否正确,然后再看看硬件是否真正连接?

使用特权

评论回复
16
renyaq| | 2021-10-17 22:47 | 只看该作者
请问你的问题解决了吗?我也遇到这个问题。

使用特权

评论回复
17
heweibig| | 2021-10-17 22:50 | 只看该作者
我也遇到这样的问题,怎么解决的?

使用特权

评论回复
18
llljh| | 2021-10-17 22:51 | 只看该作者
spi的时钟打开了吗??多半是这样的问题

使用特权

评论回复
19
supernan| | 2021-10-17 22:54 | 只看该作者
RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2 , ENABLE );
出这个问题的人99%都是由spi1改写的代码
RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1 , ENABLE );

使用特权

评论回复
20
jiahy| | 2021-10-17 22:56 | 只看该作者
话说   我也要将底层驱动这一块好好学一学了   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

892

主题

13885

帖子

7

粉丝