出现这种状况多出在硬件上,你判断的还是对的,我以前遇到过这种情况,最后是检查主板,结果主板的几个电容坏掉了,换几个就好了,很便宜。诊断卡不能查出死机的原因,只能查出有问题的硬件。
单片机型号:STM8S003,CC1101。如下为CC1101的IO口配置:
GPIO_Init(GPIOD,(GPIO_PIN_6),GPIO_MODE_OUT_PP_LOW_FAST ) //发送灯指示
GPIO_Init(GPIOD,(GPIO_PIN_4),GPIO_MODE_OUT_PP_LOW_FAST ) //CC1100_csn
GPIO_Init(GPIOC,(GPIO_PIN_5),GPIO_MODE_OUT_PP_LOW_FAST ) //cc1100_sck
GPIO_Init(GPIOC,(GPIO_PIN_6),GPIO_MODE_OUT_PP_LOW_FAST ) //cc1100_si
GPIO_Init(GPIOC,(GPIO_PIN_7),GPIO_MODE_IN_PU_NO_IT ) //CC1100_SO
GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT)//GOD0可以设置成浮空输入,保证CC1101掉电模式的低功耗
GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_MODE_IN_PU_NO_IT)//GOD2
如下为单片机的SPI配置:
如下为CC1101的各个函数:*******************************************************************************
函数功能:SPI写命令
*******************************************************************************/
void halSpiStrobe(u8 strobe)
{
CSN_L
while (Read_MISO())
SPI_SendData(strobe) //写入命令
while (!(SPI->SR&0x02))
CSN_H
}
/*******************************************************************************
函数功能:写寄存器
*******************************************************************************/
void halRfWriteReg(u8 addr, u8 value)
{
CSN_L
while (Read_MISO())
SPI_SendData(addr)
while (!(SPI->SR&0x02))
SPI_SendData(value)
while (!(SPI->SR&0x02))
CSN_H
}
/*******************************************************************************
函数功能:SPI连续写配置寄存器
*******************************************************************************/
void halSpiWriteBurstReg(u8 addr, u8 *buffer, u8 count)
{
u8 i, temp
temp = addr | WRITE_BURST
CSN_L
while (Read_MISO())
SPI_SendData(temp)
while (!(SPI->SR&0x02)) //等待缓存区为空
for (i = 0i <counti++)
{
SPI_SendData(buffer)
while (!(SPI->SR&0x02)) //等待缓存区为空
}
CSN_H
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)