程序跑到0x07FFFDCC,说明已经跑飞了,Flash首地址0x0800 0000. 应该不是程序的问题。
如果觉得是这部分时钟的问题,可以考虑用其它硬件定时器实现,做个重定向,CubeMX可以方便生成重定向,这个也不行的话,手动修改为如下重定向试试:
[C] 纯文本查看 复制代码 /*
*********************************************************************************************************
* 函 数 名: HAL_InitTick
* 功能说明: 重定向,不使用
* 形 参: ----
* 返 回 值: 无
*********************************************************************************************************
*/
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
{
return HAL_OK;
}
uint32_t HAL_GetTick (void)
{
static uint32_t ticks = 0U;
uint32_t i;
for (i = (SystemCoreClock >> 14U); i > 0U; i--)
{
__NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
__NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
}
return ++ticks;
}
void HAL_Delay(uint32_t Delay)
{
uint32_t tickstart = HAL_GetTick();
uint32_t wait = Delay;
if (wait < HAL_MAX_DELAY)
{
wait += (uint32_t)(HAL_TICK_FREQ_DEFAULT);
}
while((HAL_GetTick() - tickstart) < wait)
{
__NOP();
}
} |