はじめに
以前、「STM32L4 FW_L4 V1.16.0でADC CPU温度取得のバグ?」でADCを使ってCPU温度を取得する際に定義が誤って指定されるバグについて書きましたが、今回またバージョンアップでやらかしているので、メモのついでに公開しておきます。
不具合の内容
ADCを使ってCPU温度、CPU電圧、基準電圧を取得するようにSTM32CubeIDEに設定してコードを出力した場合、ビルドで以下の部分がエラーになります。
LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(ADC1),LL_ADC_PATH_VREFINT|LL_ADC_PATH_TEMPSENSOR|LL_ADC_PATH_VBAT);
これ、一見あっているように見えますが、LL_ADC_PATH_VREFINT、LL_ADC_PATH_TEMPSENSOR、LL_ADC_PATH_VBATなんて定義はありません。
誤(Wrong value) | 正(Correction) |
LL_ADC_PATH_VREFINT | LL_ADC_PATH_INTERNAL_VREFINT |
LL_ADC_PATH_TEMPSENSOR | LL_ADC_PATH_INTERNAL_TEMPSENSOR |
LL_ADC_PATH_VBAT | LL_ADC_PATH_INTERNAL_VBAT |
INTERNALが抜けています。
解決策
以下のコードが解決策になります。sTM32CubeIDEで修正して出力(Generate Code)を行うとこれが出力されてしまうので、早く解決してほしい。
LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(ADC1), LL_ADC_PATH_INTERNAL_VREFINT|LL_ADC_PATH_INTERNAL_TEMPSENSOR|LL_ADC_PATH_INTERNAL_VBAT);