[STM32F1] 死循环了

[复制链接]
711|36
手机看帖
扫描二维码
随时随地手机跟帖
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 | 显示全部楼层
你的内核运行速度是多少?

使用特权

评论回复
pengf| | 2021-10-17 22:18 | 显示全部楼层
SPI的运行速度是多少?

使用特权

评论回复
dengdc|  楼主 | 2021-10-17 22:20 | 显示全部楼层
你的SPI的SCK频率是多少?

使用特权

评论回复
zhenykun| | 2021-10-17 22:23 | 显示全部楼层
你的问题与这三个频率有关。

使用特权

评论回复
supernan| | 2021-10-17 22:26 | 显示全部楼层
其实自己也没去测过

使用特权

评论回复
dengdc|  楼主 | 2021-10-17 22:28 | 显示全部楼层
自己都不知道

使用特权

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

使用特权

评论回复
pengf| | 2021-10-17 22:34 | 显示全部楼层
后来考虑,它一直在RESET状态,硬件上一直是低电平,怀疑是IO的电平状态有问题

使用特权

评论回复
heweibig| | 2021-10-17 22:36 | 显示全部楼层
我在DATA数据线上 都加了10K的上拉电阻 ,这样就解决了 。你可以试下

使用特权

评论回复
renyaq| | 2021-10-17 22:38 | 显示全部楼层
MOSI,MISO还有SCK在空闲状态尽量保持高电平

使用特权

评论回复
heweibig| | 2021-10-17 22:41 | 显示全部楼层
这就是为什么加上拉能够解决问题的原因。

使用特权

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

使用特权

评论回复
renyaq| | 2021-10-17 22:47 | 显示全部楼层
请问你的问题解决了吗?我也遇到这个问题。

使用特权

评论回复
heweibig| | 2021-10-17 22:50 | 显示全部楼层
我也遇到这样的问题,怎么解决的?

使用特权

评论回复
llljh| | 2021-10-17 22:51 | 显示全部楼层
spi的时钟打开了吗??多半是这样的问题

使用特权

评论回复
supernan| | 2021-10-17 22:54 | 显示全部楼层
RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2 , ENABLE );
出这个问题的人99%都是由spi1改写的代码
RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1 , ENABLE );

使用特权

评论回复
jiahy| | 2021-10-17 22:56 | 显示全部楼层
话说   我也要将底层驱动这一块好好学一学了   

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则