在GD固件庫的時鐘配置函數(shù)里看到這樣一段神秘代碼,研究分析后不得不佩服原廠固件庫里的細節(jié)處理:
查看定義是一段代碼,對AHB 2分頻后延時了一段時間:
在這段代碼后面可以看到程序將RCU_CFG0和RCU_CFG1兩個時鐘寄存器做了復位:
如果是程序復位啟動后第一次執(zhí)行這段代碼,應該是沒有什么意義的,但產品設計時一般都會有一個BootLoader和APP兩段程序,當BootLoader跳轉到APP時,MCU的時鐘已經處于一個高頻狀態(tài),直接執(zhí)行RCU的復位意味著時鐘會立刻切到內部8M運行。
而通過查看DATASHEET,可以看到MCU在最大主頻下和默認復位主頻下的電流差距是很大的:
這樣的內部電流瞬間變化一般會導致內部電源的波動,這種波動情況下執(zhí)行的指令是不可靠的,如果硬件設計時MCU去耦電容設計不合理,很可能加劇這個波動,此時如果指令錯誤了那很可能會跑飛進入hardfault。
而GD固件庫里這個神秘代碼,在高頻的情況下可以將系統(tǒng)時鐘降低一半并延時等待穩(wěn)定,最后再復位時鐘寄存器降到8M的系統(tǒng)時鐘。這樣就讓電流變化有一個過渡,避免了內部電源波動過大。
——>
——>
-
芯片
+關注
關注
454文章
50460瀏覽量
421971 -
單片機
+關注
關注
6032文章
44525瀏覽量
633260 -
mcu
+關注
關注
146文章
17019瀏覽量
350373 -
GD32
+關注
關注
7文章
403瀏覽量
24235
發(fā)布評論請先 登錄
相關推薦
評論