打印

为什么STM32重新上电程序就没有了?

[复制链接]
楼主: tom_2_2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tom_2_2|  楼主 | 2011-8-31 21:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用串口ISP下载程序(BOOT1=0 BOOT0=1) ,下载成功后恢复(BOOT1=0,BOOT0=0)程序正常运行,但是只要电源一断电程序就不运行了,不知是什么原因?
沙发
香水城| | 2011-9-1 09:45 | 只看该作者
是程序不运行还是程序没有了,LZ的题目与帖子说法严重不一致。

使用特权

评论回复
板凳
tom_2_2|  楼主 | 2011-9-4 08:58 | 只看该作者
刚入门,写了一个GPIO控制LED闪烁,同时USART1不断的将同一数据返回给串口助手的程序。
详细过程是这样,我用串口ISP下载程序,下载完成后程序马上就正常运行了,然后设置BOOT1,0=00按下复位键,程序依然是正常运行的。但是如果这时把板子的电源拔掉又插上后程序就不对了,只有LED灯在正常闪烁,串口就没有数据出来了。
  由于没有JLINK,所以用软件DEBUG调式了下,第一次进入DEBUG,就直接进入main()第一条语句,下面都是对了,但是我按下工具条左上角的复位按钮,程序箭头指向stm32f10x_hd.s里,当要跳入mian函数的时候,再单步程序就连续运行了。我想应该停在mian的第一条语句才对啊,是不是跳过了串口的初始化语句,导致串口没有使能工作。
  请教一下香主,我这情况到底是怎么回事,是不是没有设置好呢?

使用特权

评论回复
地板
yinyangdianzi| | 2011-9-5 10:36 | 只看该作者
marking...
不知道

使用特权

评论回复
5
进程| | 2011-11-29 14:55 | 只看该作者
我也遇到同样问题,仿真时程序跑得都对,重新上电时运行不了,痛苦啊!!!!!!
BOOT0,1都是0,IAR下载到FLASH提示成功了,等高手来解决

使用特权

评论回复
6
香水城| | 2011-11-29 15:38 | 只看该作者
我也遇到同样问题,仿真时程序跑得都对,重新上电时运行不了,痛苦啊!!!!!!
BOOT0,1都是0,IAR下载到FLASH提示成功了,等高手来解决
进程 发表于 2011-11-29 14:55


这种情况很可能是你在片外外设还没有准备好的时候,就执行了初始化。

使用特权

评论回复
7
进程| | 2011-11-29 15:47 | 只看该作者
这种情况很可能是你在片外外设还没有准备好的时候,就执行了初始化。
香水城 发表于 2011-11-29 15:38


外外设还没有准备好?请问顺序!

使用特权

评论回复
8
香水城| | 2011-11-29 16:41 | 只看该作者
顺序由你自己决定!

某些外设的上电时间比较长,但MCU的上电时间比较短,你在外设没有就绪时就对它发命令,肯定会出问题的。

使用特权

评论回复
9
乌月明星稀| | 2013-8-30 16:18 | 只看该作者
我也遇到相似的问题,不过我用的是TIM1定时器PWM输出的,现在感觉好像PLL倍频没有成功。

使用特权

评论回复
10
乌月明星稀| | 2013-8-30 19:14 | 只看该作者
香水城 发表于 2011-11-29 16:41
顺序由你自己决定!

某些外设的上电时间比较长,但MCU的上电时间比较短,你在外设没有就绪时就对它发命令 ...

NONONO,问题不是那样子的,我今天定时器也遇到跟楼主相似的问题,如果用纯寄存器配置的话,是不会出现想楼主那样的,而用库就会,为什么呢?就是因为库在配置过程中,需要临时变量作为寄存器配置的参数,所以楼主对USART初始化时,必须先初始化相应的结构体如TIM_BDTRStructInit(&TIM1_BDTRInitStruct);然后再逐一配置相应结构体的变量。另外,配置顺序影响倒不是很大。

使用特权

评论回复
11
拿起书本| | 2013-9-20 20:50 | 只看该作者
程序不运行可能有很多原因,不一定是程序没有.所有影响启动配置的因素都有可能吧.

使用特权

评论回复
12
乌月明星稀| | 2013-9-20 20:52 | 只看该作者
拿起书本 发表于 2013-9-20 20:50
程序不运行可能有很多原因,不一定是程序没有.所有影响启动配置的因素都有可能吧. ...

如果启动方式选择没问题,看看你初始化外设前有没有复位结构体变量???如果没有,很可能那里出错。

使用特权

评论回复
13
handlike| | 2013-9-21 09:36 | 只看该作者
看一下复位后电平是否为高,进入主程序入做一下延时试试。

使用特权

评论回复
14
feilusia| | 2013-9-21 10:10 | 只看该作者
1)检查外部晶振,以及你倍频后的时钟频率是否允许范围内。如果你外部用12M,倍频9,时钟频率就为108M,跑飞也是很正常的。
2)检查配置,无用的都删掉。
3)换一块芯片。

使用特权

评论回复
15
jjjkkk00| | 2013-10-19 23:03 | 只看该作者
不会是没写进去吧?只是在线仿真。

好比在IAR软件的Options->Debugger->Download不勾选use flash loader进行仿真,就是这个效果。

使用特权

评论回复
16
jim0810| | 2013-10-19 23:53 | 只看该作者
应该是串口没有初始化吧,下载完可以是因为Bootloader里面做了初始化

使用特权

评论回复
17
zeluo| | 2013-10-20 17:23 | 只看该作者
有可能是芯片初始化没有成功  导致的  应该有这种可能吧  楼主

使用特权

评论回复
18
盼盼8940432| | 2017-7-17 14:54 | 只看该作者
BOOT0需要硬件接地

使用特权

评论回复
19
HYOOLI| | 2018-5-7 11:22 | 只看该作者
在VBAT加一个3.3V纽扣电池试试。

使用特权

评论回复
20
kingkits| | 2018-5-7 11:57 | 只看该作者
我也发现这个问题,后来把电池接上就好了。似乎是内部RTC复位的问题

使用特权

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

本版积分规则

40

主题

319

帖子

1

粉丝