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"
私はどんな助けにも感謝しています:)