我在做 STM32F030 API 功能的时候,基于官网的例子可以移植成功,看到LED闪了。然后将APP工程修改到我自己基于CUBE库做的实际工程中发现 在跑到HAL_Init();就跑飞了 官网的例子系统初始化的时候只使能了外设时钟, 并没有其他操作。后面就直接操作IO口了 非常简单! /* USER CODE BEGIN 1 */ uint32_t i = 0; for(i = 0; i < 48; i++) { VectorTable = *(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2)); } /* Enable the SYSCFG peripheral clock*/ RCC_APB2PeriphResetCmd(RCC_APB2Periph_SYSCFG, ENABLE); /* Remap SRAM at 0x00000000 */ SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM); /* 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(); |
评分
查看全部评分
/* Private variables ---------------------------------------------------------*/
#define APPLICATION_ADDRESS (uint32_t)0x08003000
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
static __IO uint32_t TimingDelay;
#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
和
for(i = 0; i < 48; i++)
{
VectorTable[i] = *(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));
}
同时修改IAP存放在内置FLASH的0x8000000的起始位置0x8003000
换成:
__HAL_RCC_SYSCFG_CLK_ENABLE();
试试.
另外参考这篇文章: http://blog.csdn.net/flydream0/article/details/52808191
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
for(i = 0; i < 48; i++)
{
VectorTable = *(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));
}
/* Enable the SYSCFG peripheral clock*/
__HAL_RCC_SYSCFG_CLK_ENABLE();
/* Remap SRAM at 0x00000000 */
__HAL_SYSCFG_REMAPMEMORY_SRAM();
后,MCU没有烧录BOOT程序单独烧录这个应用程序是可以自己运行的,加了BOOT程序再更新应用程序进去后就不运行了 ,是否需要我上传源代码一起看看?
另外工程配置需要注意下,参考:http://blog.csdn.net/flydream0/article/details/52058601
API-1.rar
2016-11-23 17:30 上传
点击文件名下载附件
下载积分: ST金币 -13.35 MB, 下载次数: 6, 下载积分: ST金币 -1
STM32F0xx_IAP.rar
2016-11-23 17:31 上传
点击文件名下载附件
下载积分: ST金币 -1768.75 KB, 下载次数: 8, 下载积分: ST金币 -1
解决方法:使用官方默认的system_stm32f0xx.c文件,并不需要去修改systemint()函数。
你再试下。
评分
查看全部评分