金牌会员
 
- 积分
- 1970
- 金钱
- 1970
- 注册时间
- 2011-7-17
- 在线时间
- 4 小时
|
话说神奇哦~~~
这个DMA是一个蛋疼的东西
我根据原子哥的程序,自写了一下,原子哥的程序是把内部flash里数组的值赋值到RAM中数组:
原子哥是这样定义数组的:
u8 SendBuff[5200];
const u8 TEXT_TO_SEND[]={"ALIENTEK MiniSTM32 DMA 串口实验"};
他在程序中这样赋值:
for(i=0;i<5200;i++)//填充ASCII字符集数据
{
if(t>=j)//加入换行符
{
if(mask)
{
SendBuff=0x0a;
t=0;
}else
{
SendBuff=0x0d;
mask++;
}
}else//复制TEXT_TO_SEND语句
{
mask=0;
SendBuff=TEXT_TO_SEND[t];
t++;
}
}
运行没错误,我仿照原子哥自写了一下,也是从flash里读取数组数据,然后放到ram中准备发送:
我是这样定义的:
const u8 shit[]={"我的妈啊~~~~"};
u8 send[5200];
然后是这样赋值的:
while(1)
{
while(i<5200)
{
send=shit[t];
i++;
t++;
if(t==12)
{
t=0;
send=0x0a;
}
}
后来,程序运行后死在启动文件里的一行B .上,不知道为什么,但取消掉数组定义的const,程序正常了,但又出现新的问题,串口接收正常,换行不正常,还有oled一直显示100%,串口一直还在接收。
万思不得其解啊~~~
如果定义数组的时候不删掉const,则运行时候死在这里:
删掉const后,正常,但oled显示一直100,串口接收除了不换行之外,其余正常。
万思不得其解,程序死在上图中的哪行是什么意思??
附上程序
编译环境MDK4.2
开发板是原子的板子,oled是原子的oled模块。
|
|