本帖最后由 litianwu! 于 2011-7-20 08:47 编辑
今天在基于STM32的SPI实验时发现个问题,通过232串口把数据发到单片机中,用一个数组存放,然后再把数组中的数据写到外部FLASH , M25P40中,然后再把数据读出来显示,但屏上就是没显示,不知是怎么啦?大家帮忙看看。
[code]void USART1_IRQHandler(void)
{
u8 buf=0;
if(USART_GetITStatus(USART1, USART_IT_RXNE)==SET) //接收中断有效 ;
{
buf=(USART_ReceiveData(USART1)&0xFF); // 返回USARTx最近接收到的数据 ;
buff=buf;
USART_SendData(USART1,buf);
USART_ClearITPendingBit(USART1, USART_IT_RXNE); // 清除USART1的接收中断 ;
}
s++;
w=1;
}这是串口中断服务子函数。s,w为全局变量。
int main(void)
{
u8 lcd[8];
RCC_Configuration();//调用RCC配置函数
NVIC_Configuration();
GPIO_Configuration();
USART_Configuration();
lcd_init();//调用LCD1602初始化函数
lcd_clear ();//清屏
lcd_print_S (0,1,"Erase SPI FLASH ...");//显示字符串
FLASH_SPI_Config();
Delay_Ms(100);
lcd_clear ();
SST25SectorErase(0); //擦除 0~4095 地址之间的数据
lcd_print_S(0,0,"SPI_FLASH!");
printf_USART1("Communication success!\t");
while(1)
{
u8 i,z;
SST25Write(0,buff,10); //往E2PROM写数据
Delay_Ms(100);
SST25Read(0,Rx_Buffer,10); //从addr读64个字节到db_sst1
Delay_Ms(100);
lcd[0]=Rx_Buffer[0];
lcd[1]=Rx_Buffer[1];
lcd[2]=Rx_Buffer[2];
lcd[3]=Rx_Buffer[3];
Delay_Ms(50);
lcd_print_S (1,0,"data:");
lcd_print_S (1,5,lcd);
}
}这是主函数 |