gpt4 book ai didi

rust - 如何在 Rust 中更改 cortex-m4 处理器的异常优先级?

转载 作者:行者123 更新时间:2023-12-03 11:26:26 57 4
gpt4 key购买 nike

我想为处理器内部异常设置中断优先级。 cortex_m crate 提供了对 NVIC 控制寄存器的轻松访问。具体来说,有一种方法可以让我为每个中断设置优先级。

let mut p = cortex_m::Peripherals::take().unwrap();
p.NVIC.set_priority(...);

set_priority 要求我传递一个参数,指定我打算修改哪个中断的优先级。假设我想更改 PendSV 的优先级。但是,传入 cortex_m::peripheral::scb::Exception::PendSV 将不起作用,因为它没有实现所需的特征边界。

我在 STM32F407VGT6 板上开发,所以我也查看了 stm32f4 crate,但我没有找到任何可以提供帮助的枚举定义。

我应该编写自己的枚举来实现所需的特征,以便它可以指定中断号,还是已经有一些现有的 crate 可以让它工作?

最佳答案

根据 InterruptNumber 的文档, 实现这个 Trait 是 PAC (peripheral access crate) 提供者的责任。看着 stm32f4 crate ,其最新版本(0.12.1 截至撰写本文时)仍然依赖于 cortex-m >=0.5.8, <0.7 ,这意味着开发人员可能还没有升级到新的 API。

旧 API 使用 bare_metal::Nr 一些 PAC 仍然依赖的特性。

我在 cortex-m-quickstart 中找到了一个示例使用旧 NVIC API 的指南。

我建议您按照 PAC 的依赖要求降级到 cortex-m >=0.5.8, <0.7并留意 stm32f4 的更新.

关于rust - 如何在 Rust 中更改 cortex-m4 处理器的异常优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65705477/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com