由于下班了,时间不够,感觉还是欠考虑,不过可以先试下替换实用你那工程下的binary目录下的system....文件试试
:)路过
/* 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 */
}
帮顶:):):)
在说一点,改为:
关注一下。。。。
任风吹吹 发表于 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();
这样也是不行。
任风吹吹 发表于 2016-11-23 18:27
由于下班了,时间不够,感觉还是欠考虑,不过可以先试下替换实用你那工程下的binary目录下的system....文件 ...
当时我也匆匆下班了 ,天气冷了早点回家!
党国特派员 发表于 2016-11-23 21:23
用CubeMX NUCLEO-F042做了个项目测试了下,没有什么,主要是就是设置IRAM1的起始地址为:0x200000C0
...
非常感谢你的关注! 这个地方我也留意到了 我的APP工程的 flash的起始地址改为:0x8003000, IRAM1的起始地址也是改为:0x200000C0。(API工程是flash的起始地址改为:0x8000000, IRAM1的起始地址也是改为:0x20000000) 还是不行。.请问是否方便把你做成功的工程发过来一起探讨,API工程和APP工程,谢谢
!谢谢!
设置下就好了,我f0 产品一直这么用的