1


STM32F4 のLibopencm3 割り込みテーブルでこの質問に対する答え
は、メカニズム全体をうまく説明していますが、私が得たのは、ブロッキング ハンドラで満たされたベクトル テーブル全体です。

私はそれをデバッガーで見ているので知っています(すべてが機能していないことは別として):ベクターテーブルを示す逆アセンブリのスクリーンショット

これは、リンカが適切に定義された割り込みハンドラ関数を単純に無視するかのようです。たとえば、次のようになります。

void sys_tick_handler(void)
{
...
}

void tim1_up_isr(void)
{
...
}

私は EmBitz IDE を使用しており、このチュートリアルhereに従って libopencm3 を機能させました (この問題を除いて機能します)。

関数名を何度も確認し、libopencm3-examples プロジェクトのものを含むいくつかのオンライン例を試しました。

すべてがグリッチなしでコンパイルされ、ターゲット ボード (STM32F103C8) にロードされ、正常に実行されます - ISR が呼び出されないことを除いて (割り込みは発生しますが、ブロッキング ハンドラーでスタックします)。

なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

0

標準のベクタテーブル(STのSPLやHALから)とリンクしているように見えます。

これを確認するには、名前を と に変更してsys_tick_handler()SysTick_Handler()tim1_up_isr()くださいTIM1_UP_IRQHandler()

SysTick_Handlerそれが機能する場合は、これを含むファイルを見つけてTIM1_UP_IRQHandler(私はそうなると思いますstartup*.s)、プロジェクトから削除します。

于 2017-01-09T10:51:56.590 に答える