為什么必須在工程配置里的預處理中修改?

在3模鍵盤例程中,config.h中的CLK_OSC32K注釋寫著“該項請勿在此修改,必須在工程配置里的預處理中修改”。這是為什么呢?我這個文件不需要多個項目共用。另外如果用vscode + platformIO來開發(fā)的話,這要怎么處理?

您好,如果確定要用到無線功能,可以在CHXXx_common.h中,包含#include "CONFIG.h",這樣就繞過了“必須在工程配置里的預處理中修改”的限制。

注意CHXXx_common.h是公共文件,若其他用不到無線功能的工程編譯到,會由于找不到CONFIG.h而報錯。

image.png


@TECH_JW 你似乎誤會了我的問題,“必須在工程配置里的預處理中修改”的意思我的理解是如下圖,在設置里手動填入這些宏定義,而不是在config.h里或者在別的.h文件里直接寫“CLK_OSC32K=1”

屏幕截圖 2024-03-06 160427.png


不是所有宏定義都必須要在工程配置中修改。EVT中有部分公共文件,比如說BLE例程中的config.h。在公共文件里直接修改參數(shù),多數(shù)情況也是可以用的,但是會影響其他使用該公共文件的工程。比如說修改了config,h中的HAL_SLEEP改為了1啟用了休眠,那么所有BLE工程都啟用了休眠。

CLK_OSC32K比較特殊,您也注意到了,其后有注釋,要求必須在您上樓的圖中修改。原因是CH58x_common.h(以CH583EVT為例)中,有參數(shù)CAB_LSIFQ,是根據(jù)BLE例程中才用到的宏CLK_OSC32K去條件編譯的。按2樓的方法,在確定使用BLE的情況下,可以在CH58x_common.h添加包含config,h,那么可以直接修改config,h的參數(shù),也就可以用vscode + platformIO來開發(fā)了。

如果直接在CH58x_common.h中默認包含config,h,那么其他未使用BLE的例程會編譯報錯,比如說ADC例程,因為config,h只在BLE文件夾下的例程中才默認被使用。

3樓的工程配置中去配置CLK_OSC32K,其優(yōu)先級更高,CH58x_common.h也會根據(jù)工程配置的CLK_OSC32K去條件編譯CAB_LSIFQ了。

您可以嘗試在config.h中直接修改CLK_OSC32K為2,觀察CH58x_common.h中的CAB_LSIFQ是否有變動。


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频