[求教]使用AC5编译正常,换AC6.11就停在R0, =SystemInit

2019-12-09 19:58发布

本帖最后由 DIY7777 于 2019-10-29 12:56 编辑

专案使用AC5编译程序都可以正常运行
但因为编译很慢
改用AC6.11编译(no error)
虽然很快
但却会发生
while(1)()前的程序都会运行
但运行完
就停在R0, =SystemInit(进debug看)
搜网上资料&方法都没效
只好求助伟大的论坛
可有解方??

环境:
Win8.1 64b
Keil MDK 5.27
STM32CubeMX 5.4
使用MCU 32F407VG
专案中有使用printf(USART1)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
xiaomu
1楼-- · 2019-12-09 20:17
把堆栈加大, 这样情况一般是堆栈设置不合理,初始化出错了
DIY7777
2楼-- · 2019-12-09 20:33
 精彩回答 2  元偷偷看……
kebaojun305
3楼-- · 2019-12-09 20:50
还是用AC5吧。新项目 改用AC6吧。
Gorgon_Meducer
4楼-- · 2019-12-10 02:43
本帖最后由 Gorgon_Meducer 于 2019-10-29 17:37 编辑

楼主能否提供以下信息::
1. 是否能运行进入main函数
2. Heap大小是否大于256字节
3. 出问题的时候,停在哪里?(请提供汇编视图截图)
4. 请提供出问题时候的Fault Report 截图(这是一个窗体),以及通用寄存器的截图
barryxiao
5楼-- · 2019-12-10 05:52
看看汇编和堆栈卡在哪儿了。
C代码卡这个位置,多半是C环境不完善,例如没有提供malloc、fputc、初始化一类的
DIY7777
6楼-- · 2019-12-10 09:00
Gorgon_Meducer 发表于 2019-10-29 17:34
楼主能否提供以下信息::
1. 是否能运行进入main函数
2. Heap大小是否大于256字节

感谢Gorgon_Meducer回覆

1. 是否能运行进入main函数

可进入
int main(void)
{
  /* USER CODE BEGIN 1 */
  /* USER CODE END 1 */
  /* MCU Configuration--------------------------------------------------------*/
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* USER CODE BEGIN Init */
  /* USER CODE END Init */
  /* Configure the system clock */
  SystemClock_Config();
  /* USER CODE BEGIN SysInit */
  /* USER CODE END SysInit */
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART1_UART_Init();
  MX_ADC1_Init();
  MX_DAC_Init();
  /* USER CODE BEGIN 2 */
  HAL_SYSTICK_Config(SystemCoreClock/1000);
  HAL_UART_Receive_IT(&huart1,uart1RxBuf,1);
  HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_Value, 100);
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    do something.........
  }
}
但while(1)内程式不运行

2. Heap大小是否大于256字节

Heap是??

3. 出问题的时候,停在哪里?(请提供汇编视图截图)
如附件

4. 请提供出问题时候的Fault Report 截图(这是一个窗体),以及通用寄存器的截图
如附件




一周热门 更多>