任风吹吹 发表于 2016-11-23 18:27:55

由于下班了,时间不够,感觉还是欠考虑,不过可以先试下替换实用你那工程下的binary目录下的system....文件试试

liuxy236@tom.co 发表于 2016-11-23 19:07:11

:)路过                  

党国特派员 发表于 2016-11-23 21:24:01

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f0xx_hal.h"
#include "gpio.h"

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
#define APPLICATION_ADDRESS   (uint32_t)0x08003000

__IO uint32_t VectorTable __attribute__((at(0x20000000)));

pFunction Jump_To_Application;
uint32_t JumpAddress;

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
void Error_Handler(void);

/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/

/* USER CODE END PFP */

/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

int main(void)
{

/* USER CODE BEGIN 1 */
for(uint8_t i = 0; i < 48; i++)
{
    VectorTable = *(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));
}
/* USER CODE END 1 */

/* MCU Configuration----------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();

/* Configure the system clock */
SystemClock_Config();

/* Initialize all configured peripherals */
MX_GPIO_Init();

/* USER CODE BEGIN 2 */
    /* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
    //if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
    {
      /* Jump to user application */
      JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
      Jump_To_Application = (pFunction) JumpAddress;
      
      /* Initialize user application's Stack Pointer */
      __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
      
      /* Jump to application */
      Jump_To_Application();
    }
/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
        HAL_GPIO_TogglePin(LD3_GPIO_Port,LD3_Pin);
        HAL_Delay(100);
/* USER CODE BEGIN 3 */

}
/* USER CODE END 3 */

}

peter001 发表于 2016-11-24 00:25:38

帮顶:):):)

zbber 发表于 2016-11-24 07:28:40

在说一点,改为:

高二毛 发表于 2016-11-24 08:26:56

关注一下。。。。

luscu 发表于 2016-11-24 08:36:59

任风吹吹 发表于 2016-11-23 18:01
看了下,应该是SystemInit()函数问题,从IAP跳转到APP后第一件事情就是需要立即重置VectorTable,你的Syste ...

谢谢,我改为从IAP跳转到APP后第一件事情就是需要立即重置VectorTabl:
int main(void)
{

/* USER CODE BEGIN 1 */
        uint32_t i = 0;
        for(i = 0; i < 48; i++)
{
    VectorTable = *(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));
}
/* USER CODE END 1 */
               
/* MCU Configuration----------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();

/* Configure the system clock */
SystemClock_Config();
这样也是不行。

luscu 发表于 2016-11-24 08:37:55

任风吹吹 发表于 2016-11-23 18:27
由于下班了,时间不够,感觉还是欠考虑,不过可以先试下替换实用你那工程下的binary目录下的system....文件 ...

当时我也匆匆下班了 ,天气冷了早点回家!

luscu 发表于 2016-11-24 08:52:16

党国特派员 发表于 2016-11-23 21:23
用CubeMX NUCLEO-F042做了个项目测试了下,没有什么,主要是就是设置IRAM1的起始地址为:0x200000C0
...

非常感谢你的关注!   这个地方我也留意到了 我的APP工程的 flash的起始地址改为:0x8003000, IRAM1的起始地址也是改为:0x200000C0。(API工程是flash的起始地址改为:0x8000000, IRAM1的起始地址也是改为:0x20000000) 还是不行。.请问是否方便把你做成功的工程发过来一起探讨,API工程和APP工程,谢谢
!谢谢!

chaplin1999-262 发表于 2016-11-24 09:16:06

设置下就好了,我f0 产品一直这么用的
页: 1 [2] 3
查看完整版本: STM32F030 API 功能 基于CUBE库工程移植失败