[AT32F437] 是先进系统,还是先初始化时钟

[复制链接]
2203|5
心跳回响 发表于 2025-9-20 21:52 | 显示全部楼层 |阅读模式
前阵子我在整理代码时,一直觉得system_at32f435_437.c文件有点多余。我是认为system_at32f435_437.c里面仅有system_init()函数进行了时钟初始化,而我在main()函数中也会首先执行时钟初始化,并且是把系统时钟配置为PLL模式下运行到最高主频。所以system_at32f435_437.c也就没有啥太大的作用了。
我试验了一下,系统并无异常。但我看几乎所有的ARM MCU的启动过程均是在main()函数之前进行了配置。所以,问题来了!这么做的好处,或者意义在什么地方呢?
  1. ; Reset handler
  2. Reset_Handler   PROC
  3.                 EXPORT  Reset_Handler                       [WEAK]
  4.                 IMPORT  __main
  5.                 IMPORT  SystemInit
  6.                 LDR     R0, =SystemInit
  7.                 BLX     R0
  8.                 LDR     R0, =__main
  9.                 BX      R0
  10.                 ENDP






时光贩卖机 发表于 2025-10-11 22:17 | 显示全部楼层
我同意,如果main函数中已经包含了时钟初始化
muyichuan2012 发表于 2025-10-11 09:20 | 显示全部楼层
SystemInit 要配置FPU,还要配置中断向量表



void SystemInit (void)
{
#if defined (__FPU_USED) && (__FPU_USED == 1U)
  SCB->CPACR |= ((3U << 10U * 2U) |         /* set cp10 full access */
                 (3U << 11U * 2U)  );       /* set cp11 full access */
#endif

...
...

#ifdef VECT_TAB_SRAM
  SCB->VTOR = SRAM_BASE  | VECT_TAB_OFFSET;  /* vector table relocation in internal sram. */
#else
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;  /* vector table relocation in internal flash. */
#endif
}

 楼主| 心跳回响 发表于 2025-10-13 15:56 | 显示全部楼层
muyichuan2012 发表于 2025-10-11 09:20
SystemInit 要配置FPU,还要配置中断向量表

我的代码也是包含这部分内容的,其实如果不使用SRAM的话,默认值就OK了。
小小蚂蚁举千斤 发表于 2025-10-16 16:38 | 显示全部楼层
其实是不是先进系统再根据设置时钟进行运行
SolitudeSage 发表于 2025-10-16 16:51 | 显示全部楼层
心跳回响 发表于 2025-10-13 15:56
我的代码也是包含这部分内容的,其实如果不使用SRAM的话,默认值就OK了。
...

什么意思?啥叫不设置默认值就OK了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

50

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部