打印
[AVR单片机]

新人,遇到一个棘手的问题,无法启动!

[复制链接]
3220|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luojijian|  楼主 | 2013-6-13 09:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
luojijian|  楼主 | 2013-6-13 09:13 | 只看该作者
感觉很莫名其妙的问题。。。

使用特权

评论回复
板凳
huangxz| | 2013-6-13 09:36 | 只看该作者
先把加的去掉看看行不行

使用特权

评论回复
地板
jlass| | 2013-6-13 09:40 | 只看该作者
原来的程序是可以运行的,我只是加了一些代码,但那些代码感觉完全没有影响啊。。。。

别用感觉,实时就是有影响嘛,加打印调试呗

使用特权

评论回复
5
luojijian|  楼主 | 2013-6-13 09:44 | 只看该作者
huangxz 发表于 2013-6-13 09:36
先把加的去掉看看行不行

去掉是可以的,因为代码原来是可以正常运行的,我加了自己的代码之后编译后下载到flash,上电无法启动

使用特权

评论回复
6
luojijian|  楼主 | 2013-6-13 09:50 | 只看该作者
jlass 发表于 2013-6-13 09:40
原来的程序是可以运行的,我只是加了一些代码,但那些代码感觉完全没有影响啊。。。。

别用感觉,实时就是 ...

可以确定的是肯定是我加的代码的原因,但根本原因是不是我加的那些代码就不知道了。由于没有调试工具,我只是通过io口输出,发现程序连初始化io口那里都没有运行到,所以可能main都没进去。
有没有造成无法启动的一些主要原因呢?或者某些配置问题?

我加的代码只是一些逻辑控制,还有就是UART收发,怎么会使程序无法启动呢

使用特权

评论回复
7
jlass| | 2013-6-13 09:53 | 只看该作者
luojijian 发表于 2013-6-13 09:50
可以确定的是肯定是我加的代码的原因,但根本原因是不是我加的那些代码就不知道了。由于没有调试工具,我 ...

把你增加的代码慢慢减少,找到问题的关键。

使用特权

评论回复
8
Mars.CN| | 2013-6-13 09:56 | 只看该作者
能否把代码贴出来看看?
具体是什么东西没法启动?

使用特权

评论回复
9
luojijian|  楼主 | 2013-6-13 10:03 | 只看该作者
Mars.CN 发表于 2013-6-13 09:56
能否把代码贴出来看看?
具体是什么东西没法启动?

代码是工作的,虽然没什么技术含量,但是还是不太方便发这个,而且也不是很好体现

我主要说说吧:
这样的,原来的代码可以正常运行的,我只是添加一个uart的.C和.H文件,然后在main函数里处理了一下串口收发的逻辑,没其它的了。

我build后下载到MCU里,上电没反应,通过io测试,发现没有运行到IO初始化的那里,所以感觉程序是完全没运行起来。

使用特权

评论回复
10
frlop| | 2013-6-13 11:02 | 只看该作者
luojijian 发表于 2013-6-13 10:03
代码是工作的,虽然没什么技术含量,但是还是不太方便发这个,而且也不是很好体现

我主要说说吧:

贴代码吧。

使用特权

评论回复
11
micropower| | 2013-6-13 11:55 | 只看该作者
你先把原来的代码(完完整整是原来的代码,包括一些工程的配置文件神马的)用你自己的编译环境编译后下载试试可行否。这样先排除不是你编译环境的问题。我以前在KEIL编译ARM9也遇到过这中问题(就是别人的C文件加到我自己建的工程就出问题,完全用别人的就没事),avr这方面我还不太清楚。

然后在把你的代码一部分一部分加进去

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
沉默爱电子 + 2 赞一个!
12
Mars.CN| | 2013-6-13 12:11 | 只看该作者
luojijian 发表于 2013-6-13 10:03
代码是工作的,虽然没什么技术含量,但是还是不太方便发这个,而且也不是很好体现

我主要说说吧:

问题可能就出在串口收发上,是不是卡在了判断数据到达位或数据发送位的地方?就是while循环,判断中断的地方

使用特权

评论回复
13
Mars.CN| | 2013-6-13 12:12 | 只看该作者
luojijian 发表于 2013-6-13 10:03
代码是工作的,虽然没什么技术含量,但是还是不太方便发这个,而且也不是很好体现

我主要说说吧:

忘记恢复中断或者什么的,都有可能卡主,先看看是不是卡了,再看看main最后有没有大循环
记得有一次搞中断的时候说就是搜不到中断,最后发现是main忘记写大循环了

使用特权

评论回复
14
mmuuss586| | 2013-6-13 12:44 | 只看该作者
用的什么MCU啊???出现问题的时候,截个图片上来。

使用特权

评论回复
15
qin552011373| | 2013-6-13 13:01 | 只看该作者
贴代码看看

使用特权

评论回复
16
小营七郎| | 2013-6-13 13:28 | 只看该作者
代码,代码,代码。
这种事我也经常遇到呀。

使用特权

评论回复
17
icecut| | 2013-6-13 14:50 | 只看该作者
luojijian 发表于 2013-6-13 09:50
可以确定的是肯定是我加的代码的原因,但根本原因是不是我加的那些代码就不知道了。由于没有调试工具,我 ...

你在uart没有初始化的时候调用,导致中断太多.机器死掉

使用特权

评论回复
18
luojijian|  楼主 | 2013-6-13 16:58 | 只看该作者
等级太低,上午发帖数被限制了
多谢各位,问题已经锁定是一个结构体的问题,但是具体为什么会导致这样还不清楚,有点忙,明天再继续。

使用特权

评论回复
19
cooran| | 2013-6-13 17:32 | 只看该作者
“我只是加了一些代码,但那些代码感觉完全没有影响啊。。。。”
不加能正常运行,很冥想是你的代码问题,查查看!

使用特权

评论回复
20
luojijian|  楼主 | 2013-6-13 19:31 | 只看该作者
本帖最后由 luojijian 于 2013-6-13 19:36 编辑

确定是跟一个结构体有关,但其中缘由还不清楚,各位帮看看

///////////////////////////////////////////////////////
下面是.h的代码


#define COMBUFSIZE                        50

typedef struct
{
        uint8_t                                IdxS;
        uint8_t                                IdxE;
        uint8_t                                Data[COMBUFSIZE];
}str_CommBuf;

extern str_CommBuf UART_TxBuf;
extern str_CommBuf UART_RxBuf;

///////////////////////////////////////////////////////////
下面是.c的代码

str_CommBuf UART_TxBuf;
str_CommBuf UART_RxBuf;

///////////////////////////////////////////////////
然后我在其它.C文件中对这个结构体的元素进行赋值操作,编译和生成都没问题,但是下到mcu里,程序就是起不来了。
MCU是ATMega48

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

97

帖子

0

粉丝