打印
[其他ST产品]

STM32G0 App程序有时可以进入中断,有时不能进入中断?

[复制链接]
1581|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kfawj|  楼主 | 2021-6-15 15:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kfawj 于 2021-6-15 16:03 编辑

最近上手STM32F070RB芯片,通过bootload可以加载程序。奇怪是设备上电有时可以进入中断,有时不能进入中断。下面还是上代码吧:
#define  BOOTLOAD
#ifdef BOOTLOAD
#define APPLICATION_ADDRESS     (uint32_t)0x08004000

#if   (defined ( __CC_ARM ))
  __IO uint32_t VectorTable[48] __attribute__((at(0x20000000)));
#elif (defined (__ICCARM__))
#pragma location = 0x20000000
  __no_init __IO uint32_t VectorTable[48];
#elif defined   (  __GNUC__  )
  __IO uint32_t VectorTable[48] __attribute__((section(".RAMVectorTable")));
#elif defined ( __TASKING__ )
  __IO uint32_t VectorTable[48] __at(0x20000000);
#endif


int main(void)
{
  /* USER CODE BEGIN 1 */
        uint32_t channel;
        RTC_TimeTypeDef sTime_tmp = {0};
  RTC_DateTypeDef sDate_tmp = {0};
        
        #ifdef BOOTLOAD
        uint32_t i = 0;
  for(i = 0; i < 48; i++)
  {
    VectorTable = *(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));
  }
  __HAL_SYSCFG_REMAPMEMORY_SRAM();              //±ØÐëµÄ
        SystemInit();
        #endif

............
HAL_Delay(2000);
while (1)
  {
}
}

使用特权

评论回复
沙发
kfawj|  楼主 | 2021-6-15 15:56 | 只看该作者
采用cubemx生成的HAL库进行的操作。
void SystemInit(void)
{
  /* Configure the Vector Table location add offset address ------------------*/
#ifdef VECT_TAB_SRAM
  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#else
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
#endif
}
将应用上面的函数“SystemInit();”改为“SCB->VTOR = 0x20000000;”
效果是一样的,有时可以进中断,有时不可以进中断。
哪位知道是什么原因?在此先行谢过!

使用特权

评论回复
板凳
chenqianqian| | 2021-6-15 20:34 | 只看该作者
你这个函数有问题吧

使用特权

评论回复
地板
kfawj|  楼主 | 2021-6-16 09:01 | 只看该作者
chenqianqian 发表于 2021-6-15 20:34
你这个函数有问题吧

可以给指点一下吗?谢谢!

使用特权

评论回复
5
kfawj|  楼主 | 2021-6-21 15:25 | 只看该作者
由于SystemInit()函数在startup_stm32g070xx.s程序中调用,造成前后冲突。所在在main()函数中不能使用此函数调用。
只可以用SCB->VTOR重新设置内存的位置。
具体的原因就只有让更专业的人员给解释一下。

使用特权

评论回复
6
香水城| | 2021-6-21 17:37 | 只看该作者
stm32f0和STM32G0可不是一個東西哦。

這裏有篇**可以參考下:
STM32F0 IAP应用中不同代码区的跳转话题

使用特权

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

本版积分规则

44

主题

293

帖子

1

粉丝