OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 14934|回复: 12

为什么我的STM32程序在仿真的时候,需要先执行一下程序,然后点击复位按钮,然后再次执行才能正常。

[复制链接]

64

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-7-23
在线时间
13 小时
发表于 2013-2-25 16:19:00 | 显示全部楼层 |阅读模式
为什么我的STM32程序在仿真的时候,需要先执行一下程序,然后点击复位按钮,然后再次执行才能正常。是不是第一次程序就跑飞了,需要复位才正常,这是代码的原因还是仿真器的原因?我用的IAR开发环境。

IAR 的DEBUG log栏里显示:

Mon Feb 25 15:59:50 2013: Loaded macro file: C:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\config\flashloader\ST\FlashSTM32F10xxx.mac
Mon Feb 25 15:59:50 2013: JTAG command: ProjectFile = C:\Documents and Settings\Administrator\桌面\程序Light_12.25\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM\settings\Project_STM32100B-EVAL.jtag, return = 0
Mon Feb 25 15:59:50 2013: JTAG command: device = STM32F10xxC, return = 0
Mon Feb 25 15:59:50 2013: DLL version: V4.14
Mon Feb 25 15:59:50 2013: Firmware: J-Link ARM V8 compiled Sep 20 2012 13:27:01
Mon Feb 25 15:59:50 2013: Selecting SWD as current target interface.
Mon Feb 25 15:59:50 2013: JTAG speed is initially set to: 32 kHz
Mon Feb 25 15:59:50 2013: Found SWD-DP with ID 0x1BA01477
Mon Feb 25 15:59:50 2013: TPIU fitted.
Mon Feb 25 15:59:50 2013: ETM fitted.
Mon Feb 25 15:59:50 2013:   FPUnit: 6 code (BP) slots and 2 literal slots
Mon Feb 25 15:59:50 2013: Hardware reset with strategy 0 was performed
Mon Feb 25 15:59:50 2013: Initial reset was performed
Mon Feb 25 15:59:50 2013: -I- execUserFlashInit!
Mon Feb 25 15:59:51 2013: 456 bytes downloaded and verified (1.14 Kbytes/sec)
Mon Feb 25 15:59:51 2013: Loaded debugee: C:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\config\flashloader\ST\FlashSTM32F10xxxRAM32K.out
Mon Feb 25 15:59:51 2013: Target reset
Mon Feb 25 15:59:52 2013: Downloaded C:\Documents and Settings\Administrator\桌面\程序Light_12.25\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM\STM32100B-EVAL\Exe\Project.out to flash memory.
Mon Feb 25 15:59:52 2013: Found SWD-DP with ID 0x1BA01477
Mon Feb 25 15:59:52 2013: TPIU fitted.
Mon Feb 25 15:59:52 2013: ETM fitted.
Mon Feb 25 15:59:52 2013:   FPUnit: 6 code (BP) slots and 2 literal slots
Mon Feb 25 15:59:52 2013: Hardware reset with strategy 0 was performed
Mon Feb 25 15:59:52 2013: 11120 bytes downloaded into FLASH and verified (7.31 Kbytes/sec)
Mon Feb 25 15:59:52 2013: Loaded debugee: C:\Documents and Settings\Administrator\桌面\程序Light_12.25\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM\STM32100B-EVAL\Exe\Project.out
Mon Feb 25 15:59:52 2013: Found SWD-DP with ID 0x1BA01477
Mon Feb 25 15:59:52 2013: TPIU fitted.
Mon Feb 25 15:59:52 2013: ETM fitted.
Mon Feb 25 15:59:52 2013:   FPUnit: 6 code (BP) slots and 2 literal slots
Mon Feb 25 15:59:53 2013: Software reset was performed
Mon Feb 25 15:59:53 2013: Target reset

最会错误定位在这段代码上,

void write(uint16_t addr,uint8_t len)
{
   
   SendBuff[0] = 0xA5;
   SendBuff[1] = 0x5A;
   SendBuff[2] = len;  //指令长度
   SendBuff[3] = 0x82;  //指令
   SendBuff[4] = (addr>>8); //地址
   SendBuff[5] = (addr);    //地址
   SendBuff[6] = 0x00;  //读取长度
   SendBuff[7] = 0x00;  //读取长度
   USART1_Send(SendBuff,len+3);
}


    void USART1_Send(uint8_t * buf,uint8_t len)
    {
    
     for( u16 i=0;i<len;i++)  
        {  
       // USART_SendData(USART1,buf);     //SendBuff
       USART_SendData(USART1,0x55);   
       //USART_SendData(USART1,SendBuff);   //SendBuff
        //等待数据发送完毕  
        while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);  
        }  
    }>
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-2-25 16:33:41 | 显示全部楼层
你不按复位是什么情况?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

64

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-7-23
在线时间
13 小时
 楼主| 发表于 2013-2-25 17:33:58 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
IAR软件,如果不按复位键,则程序不正确运行,串口中断程序接收不到程序。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-2-25 20:03:31 | 显示全部楼层
这么怪的?
程序可以运行,但是不正确运行,是吧?
按复位后就可以正确运行了?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2013-2-26 09:30:14 | 显示全部楼层
你是不是boot引脚设置的问题呀,你可以看下boot引脚设置,然后查下iar设置,一般仿真都可以正常工作的!
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复 支持 反对

使用道具 举报

64

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-7-23
在线时间
13 小时
 楼主| 发表于 2013-2-26 11:16:23 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
嗯,是这种现象。 boot引脚检查了,是正确的。BOOT0=0 ,从用户闪存中启动。 是不是2个中断同时开启,中断有冲突会导致这种现象?不过我也差了,进入一个中断的时候,关闭另外一个中断。
回复 支持 反对

使用道具 举报

64

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-7-23
在线时间
13 小时
 楼主| 发表于 2013-2-26 11:17:54 | 显示全部楼层
回复【5楼】sun1238898:
---------------------------------
boot引脚检查了,是正确的。BOOT0=0 ,从用户闪存中启动。 是不是2个中断同时开启,中断有冲突会导致这种现象?不过我也差了,进入一个中断的时候,关闭另外一个中断。
回复 支持 反对

使用道具 举报

64

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-7-23
在线时间
13 小时
 楼主| 发表于 2013-2-26 11:42:20 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
IAR 的DEBUG log栏里显示:

Mon Feb 25 15:59:50 2013: Loaded macro file: C:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\config\flashloader\ST\FlashSTM32F10xxx.mac 
Mon Feb 25 15:59:50 2013: JTAG command: rojectFile = C:\Documents and Settings\Administrator\桌面\程序Light_12.25\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM\settings\Project_STM32100B-EVAL.jtag, return = 0 
Mon Feb 25 15:59:50 2013: JTAG command: device = STM32F10xxC, return = 0 
Mon Feb 25 15:59:50 2013: DLL version: V4.14 
Mon Feb 25 15:59:50 2013: Firmware: J-Link ARM V8 compiled Sep 20 2012 13:27:01 
Mon Feb 25 15:59:50 2013: Selecting SWD as current target interface. 
Mon Feb 25 15:59:50 2013: JTAG speed is initially set to: 32 kHz 
Mon Feb 25 15:59:50 2013: Found SWD-DP with ID 0x1BA01477 
Mon Feb 25 15:59:50 2013: TPIU fitted. 
Mon Feb 25 15:59:50 2013: ETM fitted. 
Mon Feb 25 15:59:50 2013:   FPUnit: 6 code (BP) slots and 2 literal slots 
Mon Feb 25 15:59:50 2013: Hardware reset with strategy 0 was performed 
Mon Feb 25 15:59:50 2013: Initial reset was performed 
Mon Feb 25 15:59:50 2013: -I- execUserFlashInit! 
Mon Feb 25 15:59:51 2013: 456 bytes downloaded and verified (1.14 Kbytes/sec) 
Mon Feb 25 15:59:51 2013: Loaded debugee: C:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\config\flashloader\ST\FlashSTM32F10xxxRAM32K.out 
Mon Feb 25 15:59:51 2013: Target reset 
Mon Feb 25 15:59:52 2013: Downloaded C:\Documents and Settings\Administrator\桌面\程序Light_12.25\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM\STM32100B-EVAL\Exe\Project.out to flash memory. 
Mon Feb 25 15:59:52 2013: Found SWD-DP with ID 0x1BA01477 
Mon Feb 25 15:59:52 2013: TPIU fitted. 
Mon Feb 25 15:59:52 2013: ETM fitted. 
Mon Feb 25 15:59:52 2013:   FPUnit: 6 code (BP) slots and 2 literal slots 
Mon Feb 25 15:59:52 2013: Hardware reset with strategy 0 was performed 
Mon Feb 25 15:59:52 2013: 11120 bytes downloaded into FLASH and verified (7.31 Kbytes/sec) 
Mon Feb 25 15:59:52 2013: Loaded debugee: C:\Documents and Settings\Administrator\桌面\程序Light_12.25\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM\STM32100B-EVAL\Exe\Project.out 
Mon Feb 25 15:59:52 2013: Found SWD-DP with ID 0x1BA01477 
Mon Feb 25 15:59:52 2013: TPIU fitted. 
Mon Feb 25 15:59:52 2013: ETM fitted. 
Mon Feb 25 15:59:52 2013:   FPUnit: 6 code (BP) slots and 2 literal slots 
Mon Feb 25 15:59:53 2013: Software reset was performed 
Mon Feb 25 15:59:53 2013: Target reset
回复 支持 反对

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2013-2-26 17:22:58 | 显示全部楼层
你有keil吗,看看keil是不是也这样的问题呢,需要两款软件相对比一下
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复 支持 反对

使用道具 举报

64

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-7-23
在线时间
13 小时
 楼主| 发表于 2013-2-26 17:29:25 | 显示全部楼层
回复【9楼】sun1238898:
---------------------------------
最会错误定位在这段代码上,

void write(uint16_t addr,uint8_t len)
{
   
   SendBuff[0] = 0xA5;
   SendBuff[1] = 0x5A;
   SendBuff[2] = len;  //指令长度
   SendBuff[3] = 0x82;  //指令
   SendBuff[4] = (addr>>8); //地址
   SendBuff[5] = (addr);    //地址
   SendBuff[6] = 0x00;  //读取长度
   SendBuff[7] = 0x00;  //读取长度
   USART1_Send(SendBuff,len+3);
}


    void USART1_Send(uint8_t * buf,uint8_t len)
    {
    
     for( u16 i=0;i<len;i++)  
        {  
       // USART_SendData(USART1,buf);     //SendBuff
       USART_SendData(USART1,0x55);   
       //USART_SendData(USART1,SendBuff);   //SendBuff
        //等待数据发送完毕  
        while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);  
        }  
    }>
回复 支持 反对

使用道具 举报

64

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-7-23
在线时间
13 小时
 楼主| 发表于 2013-2-26 17:29:53 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
最会错误定位在这段代码上, 

void write(uint16_t addr,uint8_t len) 

    
   SendBuff[0] = 0xA5; 
   SendBuff[1] = 0x5A; 
   SendBuff[2] = len;  //指令长度 
   SendBuff[3] = 0x82;  //指令 
   SendBuff[4] = (addr>>8); //地址 
   SendBuff[5] = (addr);    //地址 
   SendBuff[6] = 0x00;  //读取长度 
   SendBuff[7] = 0x00;  //读取长度 
   USART1_Send(SendBuff,len+3); 



    void USART1_Send(uint8_t * buf,uint8_t len) 
    { 
     
     for( u16 i=0;i<len;i++)   
        {   
       // USART_SendData(USART1,buf);     //SendBuff 
       USART_SendData(USART1,0x55);    
       //USART_SendData(USART1,SendBuff);   //SendBuff 
        //等待数据发送完毕   
        while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);   
        }   
    }>
回复 支持 反对

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2013-2-26 17:32:12 | 显示全部楼层
仿真不执行吗,怎么能定位到哪里呢,是不是到哪里就死在哪里不工作了,复位之后,就继续工作了吗
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复 支持 反对

使用道具 举报

64

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-7-23
在线时间
13 小时
 楼主| 发表于 2013-4-2 17:02:11 | 显示全部楼层
回复【12楼】sun1238898:
---------------------------------
问题已经找到,在串口初始化的代码上有段程序位置颠倒一下就行了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-22 06:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表