|
测试条件:
STM32H743 V版硬件
CMSIS软件包V5.7.0
HAL库版本V1.9.0
测试说明:
1、MDK下载STM32H7的V版硬件芯片现象是无法正常下载,需要使用最新的MDK STM32H7软件包里面带的下载算法,推荐用当前最新的V2.7.0
2、IAR比较狠,不会提示调试下载失败,而且随机在某个地方失败:
正常情况下,那个变量uwTickFreq应该是1才对,下载到Y版芯片就没有问题,下载到V版这个变量随机变化。
用J-Flash和STM32CubeProg下载了几次IAR生成的Hex文件,都正常,基本锁定是IAR下载算法的bug。
总结解决办法:
解决办法一:
升级最新版的IAR8.50看看是否还有这种bug。
解决办法二:
注释掉下面代码里面的Error_Handler(__FILE__, __LINE__);
- ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4);
- if(ret != HAL_OK)
- {
- Error_Handler(__FILE__, __LINE__);
- }
复制代码
解决办法三:
变量uwTickFreq默认是在stm32h7xx_hal.c里面定义的,作为全局变量赋值的:
一般这种用法在MDK和IAR上是不会出错了,而这次在V版芯片偏偏就出错了。
- /** @defgroup HAL_Exported_Variables HAL Exported Variables
- * @{
- */
- __IO uint32_t uwTick;
- uint32_t uwTickPrio = (1UL << __NVIC_PRIO_BITS); /* Invalid PRIO */
- HAL_TickFreqTypeDef uwTickFreq = HAL_TICK_FREQ_DEFAULT; /* 1KHz */
复制代码
考虑在main函数里面最开始赋初值也可以解决。
- /*
- *********************************************************************************************************
- * 函 数 名: main
- * 功能说明: c程序入口
- * 形 参: 无
- * 返 回 值: 错误代码(无需处理)
- *********************************************************************************************************
- */
- int main(void)
- {
- uwTickFreq = HAL_TICK_FREQ_DEFAULT;
-
- bsp_Init(); /* 硬件初始化 */
-
- PrintfLogo(); /* 打印例程名称和版本等信息 */
- DemoSpiFlash(); /* QSPI Flash测试 */
- }
复制代码
|
|