2

cortex-m-rtサビとクレートを使ってSTM32F3Discoveryボードのプログラムを書きたいですstm32f30x#[interrupt]より正確には、属性を使用したい外部割り込みを実装したいと考えています。しかし、再輸出には問題があるようです。

割り込みに関するcortex-m-rt のドキュメントには、#[interrupt]属性を直接使用するのではなく、デバイス クレートで再エクスポートする必要があると記載されています。

extern crate device;

// the attribute comes from the device crate not from cortex-m-rt
use device::interrupt;

#[interrupt]
fn USART1() {
    // ..
}

実際、stm32f3x クレートのドキュメントは、cortex-m-rt クレートからのこの属性が再エクスポートされることを示しています。ただし、コンパイルすると:

#![no_main]
#![no_std]

use cortex_m_rt::entry;
extern crate stm32f30x;
use stm32f30x::interrupt;

また

#![no_main]
#![no_std]

use cortex_m_rt::entry;
use stm32f30x::interrupt;

エラーを与える

error[E0432]: unresolved import `stm32f30x::interrupt`
 --> src\main.rs:9:5
  |
9 | use stm32f30x::interrupt;
  |     ^^^^^^^^^^^---------
  |     |          |
  |     |          help: a similar name exists in the module (notice the capitalization): `Interrupt`
  |     no `interrupt` in the root

私が従った例が同じことをしたので、なぜこれが起こるのか分かりません。Cargo.toml の依存関係は次のようになります。

[dependencies]
stm32f30x = "0.8.0"
cortex-m-rt = "0.6.3"
cortex-m = "0.6.3"

私はどんな助けにも感謝しています:)

4

1 に答える 1