タグ付けされた質問 「hal-library」

1
I2C STM32F0 HALライブラリを使用したレジスターのアドレス指定
私はSTMのCUBEおよびHAL_librariesを使用するのが非常に初めてです。32ピンのSTM32F0マイクロコントローラを使用しています。I2Cの回路図は正しいです。ここで少し助けが必要です。 I2C通信を使用する静電容量センサー(FDC1004)があります。データを読み取るには、これらのレジスタに書き込む必要があります。 STARTリクエストフォームマスターをスレーブに正しく送信するにはどうすればよいですか(スレーブアドレスはA0)。 ポインタを0x0Cレジスタに設定する方法は? データシートでは、(レジスタ0x0C:bit [7:4])から1を参照しています。)どうすればよいですか?そして最後に、同じレジスタから読み取る方法は? さらに、DONE_xフィールド(レジスタ0x0C:bits [3:0])を読み取ってから、それを読み取る必要がありますか? しかし、私が適切なレジスタに対応しているかどうかはわかりません!センサーからデータが返されないからです! これが私のコードです: int I2Ccomm () { HAL_I2C_Master_Transmit(&hi2c1,0xA1,0x0C, 10, 100); //start bit and pointer to register HAL_Delay(50); HAL_I2C_Master_Transmit(&hi2c1,0xA1,0x054, 10, 100); // setting the register HAL_Delay(50); HAL_I2C_Master_Receive(&hi2c1, 0xA0, 0x0C, 10, 100); //read from this register HAL_Delay(50); HAL_I2C_Master_Receive(&hi2c1, 0xA0, 0x02, 10, 100); //read data from …

3
Eclipse + GNU ARM + STM32-HALまたはSPL
ARM開発(2年間のAVRの後)から始めて、stm32f4マイクロプロセッサが搭載されたSTM DISCOVERYボードを入手しました。 Keilのコード制限が気に入らず、有料版を入手するお金がないため、Eclipse + ARM gccを使用することにしました。 チュートリアルに従って、gcc ARMツール+ openocd + make utilsなどとともにeclipseをインストールしました。 私の質問は「パッケージ」プラグインについてです。すべての初心者と同様に、新しいSTM HALと古いSPLのどちらを使用するかについて混乱しています。 私の理解では、HALは、Arduinoと同等のアームと呼ばれるレベルまで抽象化を実装しました。一方、SPLは、コーディングを高速化するのに十分な抽象化を提供しますが、チップレベルで処理する必要があります。 これを理解した上で、HALを使用するよりもSPLを使用して物事をよりよく理解したいと思います。 知りたいのは、STMのパッケージを使用すると、暗黙的にHALを使用する必要があるのですか?もしそうなら、私のセットアップでSPLを使用する方法について誰かが私に指摘できますか?
10 arm  stm32  gcc  cortex  hal-library 

4
HALを使用したSTM32 ADC変換
stm32から「新しい」HALライブラリを使用する方法を学習しようとしています。 単純なADC変換を行おうとすると、1回だけ機能しますが、変換が停止します。変換終了フラグが設定されていないと思います。STM32f429I Discoveryボードを使用していますが、これにはボードにSTM32f429ZIが搭載されています。 私はsprintfが悪い習慣であることを知っており、割り込みでADCを作成する方が良いことを知っています。指摘しないでください。これは質問には関係ありません。ここではHALをテストしています。 では、問題はなぜEOCフラグが設定されていないのか、それを機能させるために何ができるのかということです。HALに関する優れた資料が非常に少ないため、グーグル検索はあまり役に立ちません。 これがコードです: __IO uint16_t ADCValue=0; void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc); int main(void) { char str[15]; /* Various initializations */ HAL_ADC_Start(&hadc1); while (1) { if (HAL_ADC_PollForConversion(&hadc1, 1000000) == HAL_OK) { ADCValue = HAL_ADC_GetValue(&hadc1); sprintf(str, "%d", ADCValue); BSP_LCD_DisplayStringAt(130,30, (uint8_t*)str, LEFT_MODE); } } void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { ADCValue = HAL_ADC_GetValue(&hadc1); } …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.