用fsmc驱动外部sram,先写入sram一个数组,在读出来通过串口发回到xcom上,现在能发到xcom,但是得到的是乱码,请问各位大神是怎么回事??我从sram里读出来的数据放在是放在了哪里,这点不是很明白,是存在是stm32的内存里了,然后在发给xcom的吗??菜鸟一枚,望各位大神指点。谢谢
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "sram.h"
const u8 TEXT_Buffer[]={"STM32 TEST BUFFER"};
#define SIZE sizeof(TEXT_Buffer)
u32 testsram[250000] __attribute__((at(0X68000000)));
int main(void)
{
u8 key;
u8 i=0;
u8 temp=0;
u8 datatemp[SIZE];
u32 ts=0;
// u32 FLASH_SIZE;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏ輶·Ö×é2
delay_init(168); //3õê¼»ˉÑóê±oˉêy
uart_init(115200); //3õê¼»ˉ′®¿ú2¨ìØÂêÎa115200
LED_Init(); //3õê¼»ˉLED
KEY_Init(); //°′¼ü3õê¼»ˉ
FSMC_SRAM_Init(); //3õê¼»ˉía2¿SRAM
for(ts=0;ts<250000;ts++)testsram[ts]=ts;//Ô¤′æ2aêÔêy¾Y
while(1)
{
key=KEY_Scan(0);//2»Ö§3Öᬰ′
if(key==KEY1_PRES)
{
for(i=0;i<SIZE;i+=SIZE)
{
FSMC_SRAM_WriteBuffer(&*(u8*)TEXT_Buffer,i,1);
}
printf("Write Finished!
");
}
if(key==KEY2_PRES)//′òó¡Ô¤′æ2aêÔêy¾Y
{
delay_ms(10);
if(key==KEY2_PRES)
{
FSMC_SRAM_ReadBuffer(&*(u8*)datatemp,i,1);
for(ts=0;ts<SIZE;ts++)
{
USART_SendData(USART1,datatemp[ts]);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
}
}
}
else
i++;
delay_ms(10);
if(i==20)//DS0éá˸.
{
LED0=!LED0;
LED1=0;
i=0;
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>