遇到一个非常奇怪的问题,请高手看下

[复制链接]
2674|12
 楼主| 442490720 发表于 2012-3-16 01:51 | 显示全部楼层 |阅读模式
STM32F103ZE 的处理器,只配置好了串口;执行如下代码:

u8 *cerr1 ;
while(1)
  {   
      printf("aaaaa");
      *cerr1=0;
      printf("bbbbb");
  }

在电脑上在串口就只能收到aaaaa;死活收不到 bbbbb;
于是我打开滴答定时器,每个节拍向串口发个字符,发现STM32执行*cerr1=0;后就死机
串口就死不到任何东西了!!!!!!!
sjnh 发表于 2012-3-16 08:04 | 显示全部楼层
定义指针,使用要初始化,不然就是野指针,不知道指向哪里,直接赋值会出问题
指向无法访问的位置、或者乱改了内部数据都会死机
lllaaa 发表于 2012-3-16 08:25 | 显示全部楼层
最基本的c语言问题啊。指针要指向合法的内存空间
u8 aaa;
u8 *cerr1= &aaa;
logokfu 发表于 2012-3-16 08:31 | 显示全部楼层
同意!
acgean 发表于 2012-3-16 08:50 | 显示全部楼层
u8 * ;
全局变量, 通常是0初始化的。
很可能 cerr1 指向的是 0 地址, 非法地址, 就转入 Fault 异常了, 下面的指令就不会再执行了。
使用野指针, 可是 C 的大忌!希望楼主规范地编写程序!
haixiang811 发表于 2012-3-16 09:09 | 显示全部楼层
 楼主| 442490720 发表于 2012-3-16 19:01 | 显示全部楼层
一下班就改程序试了,果然如楼上各位专家所说,惭愧惭愧,没几年C语言还给老师,我捣鼓了到半夜一点多,没搞明白,你们一说,豁然开朗.感谢各位热心的网友.
张文XXX 发表于 2012-3-16 22:42 | 显示全部楼层
学习了
arm菜鸟人 发表于 2012-3-17 19:52 | 显示全部楼层
跟着学习。
王紫豪 发表于 2012-3-17 21:44 | 显示全部楼层
野指针啦
Simon21ic 发表于 2012-3-17 21:53 | 显示全部楼层
HardFault了
哲哲55 发表于 2012-3-18 21:34 | 显示全部楼层
指針用好了很好用,
用不好的話害死人。
jxmzzr 发表于 2012-3-19 10:33 | 显示全部楼层
指针不仅仅是C语言的灵魂,运用得好更是事半功倍,让你写出的程序更简洁,反之嘛~~~呵呵。学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

87

主题

178

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部