STM32F103C8T6硬件SPI通讯死机

2019-07-21 07:12发布

鄙人最近在做915M的nrf905无线通讯实验,借鉴了网友的例程,将F103ZE的工程移植到F103C8并做了修改,测试可用,不过近期测试发现了问题。当上电状态并烧写完程序时,程序运行良好,如若断电后再重新上电的话,程序一运行到硬件SPI通讯时就死机了,为此我尝试过多种办法检查问题的原因:1、我将nrf905模块拿掉,发现重新上电后还是会在SPI通讯的地方卡死(在SPI通讯那我设置了指示灯LED0(PB1),若通讯通过,灯就闪一下,如下图),说明不是nrf905模块的问题而是F103C8的问题;
2、我将此代码重新移植到了F103ZE,却不存在这样的问题;
3、F103C8的板子我拿去用示波器检测,发现按键按下时,SPI的NSS信号被拉低后再也不会被拉高,SCK偶尔在按键按下后会有一些脉冲,但大部分时候没有(按键按下时开始SPI通讯);
4、F103C8的板子我试过3个(买的最小系统板),都存在这个问题;

测试方法:
    一个STM32F103C8T6最小系统板,PB1口接个LED灯,PA0接个按键,按键按下且还没放开的时候,若LED灯快速闪烁,则SPI通讯成功,若LED灯无反应或更快地闪一下就不闪了,则SPI通讯失败。

以下三图是硬件SPI的配置模式、主程序和SPI通讯中的指示灯及内容:
SPI初始化.jpg 主程序 主程序 SPI收发和LED指示 SPI收发和LED指示
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。