总结遇到的问题,会不定时更新;
1. APP 1跳转到APP 2工作不正常,I2C 等无法响应
分析:a. 设置成APP 1跳转到APP 1,这样就可以利用仿真器进行在线仿真,追溯问题点;
b. 定位到MX_ADC1_Init()中ADC已经在跳转前被使能;会导致初始化ADC失败,进入到error_handler(),导致程序锁死;
/**
* @brief This function is executed in case of error occurrence.
* @retval None
*/
void Error_Handler(void)
{
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
__disable_irq();
while (1)
{
}
/* USER CODE END Error_Handler_Debug */
}
c. 由于APP 1和APP 2都使用了ADC DMA功能,在跳转前先关闭该功能;
d. 发现在跳转前的I2C Slave 访问,可能会被再跳转后APP程序执行中断,需防止这种情况出现
解决方案:
a. 在跳转前关闭所有ADC DMA,其实此时ADC也被关闭,可以使用HAL的HAL_ADC_Stop_DMA(&hadc1);来进行操作。
a. 在跳转前关闭I2C slave。