使用STM32L475RC建立的工程,板子没回来想使用simulator模拟仿真下,采用的是HSI内部时钟源, main函数大致如下 1.int main(void) 2.{ 3. HAL_Init(); 4. /* Configure the system clock to have a frequency of 80 MHz */ 5. SystemClock_Config(); 6. TIM1_Init(); 7. TIM3_Init(25600); 8. /* Start loopback */ 9. while(1){} 10.} 问题描述:在Debug中选择use simulator,配置好.ini文件,编译OK,然后点击DEBUG按钮,代码可以顺利执行到上面的第5行,但是在进入 SystemClock_Config()后,程序一直死循环在等待HSI ready的循环中,如下: /* Wait till HSI is ready */ while(READ_BIT(RCC->CR, RCC_CR_HSIRDY) == RESET) { if((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) { return HAL_TIMEOUT; } } 一直死循环在该while中,从症状看,循环条件READ_BIT(RCC->CR, RCC_CR_HSIRDY) == RESET一直为真,而且HAL_GetTick() 一直返回是0,所以也达不到HSI_TIMEOUT_VALUE值,不会返回HAL_TIMEOUT,所以一直死循环。打开RCC->SR设备看到HSION Bit的确设置为1了,但是HSIRDY的确没有变成1 这会是什么原因导致的呢?难道STM32L4系列不支持模拟仿真吗?求各位大神指教~ |
如何修改啊,我看都有人说使用PLL时,软件仿真会过不了,所以禁止了PLL,改为使用内部的HSI时钟源,还需要该啥啊?