6

STM32F107 cortex m3 マイクロコントローラーを使用しています。プロジェクトには Keil uvision IDE を使用しています。開始場所で適切に実行されているアプリケーションがあります0x0800 0000。開始場所を0x0800 4000アプリケーションに変更すると、正しく動作しません。この関数を次のように使用して、ベクター テーブルの場所を変更しました。

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8004000)

つまりSCB->VTOR = 0x8004000、この場所に変更されました。

しかし、この割り込みを行った後でも発生していません。このプロジェクトを機能させるために、さらに何かする必要がありますか?

4

3 に答える 3

9

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8004000)を使うべきではありませんNVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000)。2 番目の引数は、絶対アドレスではなく「オフセット」です。

于 2013-08-01T05:04:45.943 に答える
-1

私は STM32L496 に対してこれを行いました。HAL_MspInit() を呼び出す前に、HAL_MspInit() を呼び出す前に新しいベクトル テーブルを設定することが重要でした。これは、SysTick を使用して周辺機器のセットアップ中にタイムアウトを測定する可能性があるためです。

于 2018-08-01T18:18:10.297 に答える