stm1024 发表于 2018-6-28 10:56:34

我一开始在想,是不是你的外设有什么特别的地方,就是每次CS一拉低之后,出现了短路的现象?但是根据后面换代码就能解决问题,似乎并不是硬件的原因。
然后想问问,SPI1_Init里面,
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,DISABLE);
最后到底启用RCC没有呢?

zhongfg 发表于 2018-6-28 12:43:40

这个问题因该是类型转换出了问题了,读2个字节数据变成读1个字节而编译器又把1字节的数据编译成2个字节的数据调用时第2个字节刚好又对IO操作的。所以出现IO电平的改变。

CD果 发表于 2018-6-28 13:55:25

我觉得应该是类型转换的问题和你CS初始化的问题

alangxl 发表于 2018-6-28 16:42:38

stm1024 发表于 2018-6-28 10:56
我一开始在想,是不是你的外设有什么特别的地方,就是每次CS一拉低之后,出现了短路的现象?但是根据后面换 ...

RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE);是复位SPI1
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,DISABLE);是停止复位SPI1
我这样理解没错吧,
确实是换了读写函数就好了,是不是第一次用的读写函数没有先收SPI 导致某个标志位溢出导致的异常呢?

stm1024 发表于 2018-6-28 18:09:43

你在使用这些前,先把CS强制拉高一下试试?
页: 1 [2]
查看完整版本: STM32F4 SPI 动作时,软件片选信号被拉高,IO口程序逻辑失控