OpenEdv-开源电子网

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

STM32中断向量表跳转后,系统滴答时钟问题,求助

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2014-1-7
在线时间
0 小时
发表于 2014-1-7 15:55:07 | 显示全部楼层 |阅读模式

跳转前boot程序:

#include "stm32f10x.h"
#include "led.h"
#include "SysTick.h"
#include "usart1.h" 
#include "flash.h"
#include "exti.h"
//#define    MI_ERR    (-2)
#define CLI()      __set_PRIMASK(1)
#define SEI()      __set_PRIMASK(0)

#define ApplicationAddress 0x08010000

typedef void (*pFunction)(void);
pFunction Jump_To_Application;
u32 JumpAddress;

/*
 * 函数名:main
 * 描述  :主函数
 * 输入  :无
 * 输出  :无
 */
int main(void)

   
    LED_GPIO_Config();
   
 SysTick_Init();
// USART1_Config();

 /* exti line config */
// EXTI_PE5_Config();
// EXTI_PE6_Config(); ////
 while (1)
 {
  LED1( ON );     // 亮
  LED3( ON );     // 亮
  Delay_us(200000);
  LED1( OFF );     // 灭
  LED3( OFF );     // 灭
  Delay_us(200000);
  LED1( ON );     // 亮
  LED3( ON );     // 亮
  Delay_us(200000);

  CLI();
     NVIC_SetVectorTable(0x08000000, 0x10000);

       JumpAddress = *(volatile u32*) (ApplicationAddress + 4); // 取中断向量表中的复位中断地址
       Jump_To_Application = (pFunction) JumpAddress; // 该地址强置为跳转函数地址
       Jump_To_Application();
 } 
}
跳转后应用程序:

#include "stm32f10x.h"
#include "led.h"
#include "SysTick.h"
#include "usart1.h" 
#include "flash.h"
#include "exti.h"
//#define    MI_ERR    (-2)
#define CLI()      __set_PRIMASK(1)
#define SEI()      __set_PRIMASK(0)

const uint8_t WRITE_Buffer[]={"STM32 FLASH TEST!"};
#define SIZE sizeof(WRITE_Buffer)        //数组长度
#define FLASH_SAVE_ADDR  0X08070000     //设置FLASH 保存地址(必须为偶数,且其值要大于本代码所占用FLASH的大小+0X08000000)

uint8_t READ_Buffer[SIZE];  
uint8_t i;
void Delay(__IO u32 nCount);
/*
 * 函数名:main
 * 描述  :主函数
 * 输入  :无
 * 输出  :无
 */
int main(void)

//    CLI();
// NVIC_SetVectorTable(0x08000000, 0);
 SEI();
    LED_GPIO_Config();
   
 SysTick_Init();
 USART1_Config();

 /* exti line config */
 EXTI_PE5_Config();
 EXTI_PE6_Config(); ////
 while (1)
 {
//  LED1( ON );     // 亮
//  Delay_us(50000);
  LED2( ON );    
  Delay_us(200000);
//  LED3( ON );     // 亮
//  Delay_us(5000);
//  LED3( OFF );
  
  STMFLASH_Write(FLASH_SAVE_ADDR,(uint16_t*)WRITE_Buffer,SIZE);
  USART1_printf(USART1,"%s", WRITE_Buffer); 
  USART1_printf(USART1, "\r\n 写入完毕! \r\n");
  STMFLASH_Read(FLASH_SAVE_ADDR,(uint16_t*)READ_Buffer,SIZE);
  USART1_printf(USART1,"%s", READ_Buffer);
  USART1_printf(USART1, "\r\n 读出完毕! \r\n"); 
     for(i=0;i<SIZE;i++)
  {
     if(WRITE_Buffer==READ_Buffer)
     {
       if(i==(SIZE-1))
    USART1_printf(USART1, "\r\n 数据一致,成功! \r\n");
     }
     else
     {
       USART1_printf(USART1, "\r\n 数据不一致! \r\n");
     }
  }
  LED2( OFF );
  Delay_us(200000);
    } 
}
功能描述:boot跳转至应用程序,灯亮然后写入flash一段字符,再读出,必对,串口输出,灯灭,循环。
故障原因:利用系统滴答延时后,死机在延时循环中。其他中断可以正常工作。请问中断向量表偏移后,系统滴答时钟是不是需要另外设置?
程序内容已经通过验证,不跳转时和不用系统延时时,均可以正常工作。如何设置可以让程序实现功能,延时利用系统时钟,谢谢。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-1-7 23:05:57 | 显示全部楼层
回复【楼主位】 向日葵2012 :
---------------------------------
我们战舰板的IAP例程,APP代码就有用到systick延时.
http://www.openedv.com/posts/list/14429.htm

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2014-1-7
在线时间
0 小时
 楼主| 发表于 2014-1-8 13:45:31 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
楼主你好,我看了代码,和我用的除了表达方式不一样,原理都是一样的,设置和你的也是一样的。能不能给看看,是不是有写的不对?或者设置有问题?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-1-8 19:03:38 | 显示全部楼层
NVIC_SetVectorTable(0x08000000, 0);
这个,是设置APP程序,貌似没看到你设置.
而IAP程序是不用设置的,你又设置了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2014-1-7
在线时间
0 小时
 楼主| 发表于 2014-1-9 10:44:26 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
谢谢版主,流程调整后问题解决了,把中断向量表的流程搞反了,以后多多学习请教!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 17:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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