你好
为 CubeIDE 生成固件时,在生产和工程模式下都可以正常执行。
但对于 IAR/EWARM 只有工程模式有效。而且,是的,我知道不支持开箱即用的生产模式。需要手动复制到目标并启动。
目标
STM32MP1-DK2
STMCubeMX 6.3.0
STMCubeIDE 1.7.0
EWARM 9.10.1
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- static int loopCounter;
- loopCounter++;
- HAL_GPIO_WritePin(LED_Y_GPIO_Port, LED_Y_Pin, GPIO_PIN_SET);
- if( loopCounter < 10 )
- {
- for(volatile int i = 0; i < 5000000; i++);
- }
- else
- {
- HAL_Delay(500);
- }
- HAL_GPIO_WritePin(LED_Y_GPIO_Port, LED_Y_Pin, GPIO_PIN_RESET);
- if( loopCounter < 10 )
- {
- for(volatile int i = 0; i < 5000000; i++);
- }
- else
- {
- HAL_Delay(500);
- }
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
繁殖方法
通过在 MX 项目管理器中更改附加的 HAL_Tick_TIM6.ioc 来生成 STMCubeIDE 和 EWARM 项目。
将代码片段添加到 main.c
- 在 IDE 中以生产模式运行 STMCubeIDE 生成的项目。检查预期结果
- 构建 EWARM 并复制/重命名为 /usr/local/project/HAL_Tick_TIM6_CM4/lib/firmware/HAL_Tick_TIM6_CM4.elf。启动 /usr/local/project/HAL_Tick_TIM6_CM4/fw_cortex_m4.sh stop 然后启动。检查错误结果。
- 再次从 STMCubeIDE(步骤 1)运行 elf-file。检查错误结果。
预期结果
琥珀色 LED 持续闪烁。
错误结果
琥珀色 LED 闪烁 9 次,然后停止。
观察到的错误原因,不知道根本原因
NVIC TIM6 IRQ 由于某种原因被禁用。很难从 IAR 环境中调试...