#stm32 #embedded-hal #nucleo #stm32l0x1 #stm32l031k6

无 std 程序+库 nucleo-l031k6-bsp

ST L031K6-NUCLEO 开发板支持包

3 个版本 (重大变更)

0.3.0 2022年11月16日
0.2.0 2020年8月8日
0.1.1 2018年11月4日

1017 in 嵌入式开发

0BSD 许可证

15KB
215

NUCLEO-L031K6-BSP

此包实现了 ST NUCLEO-L031K6 开发板的 BSP。它旨在简化开发过程,同时减轻程序员跟踪外设和引脚组合的工作负担,并提供创建外设的帮助方法。

有关包使用示例,请参阅 src/main.rs

需求

构建此(以及相关的依赖包)需要 Rust v1.30 或更高版本。

设置

我们需要在我们的机器上安装 OpenOCD。如果您已经安装了它,请跳过此步骤。

  • 安装或从源代码构建最新的 OpenOCD 版本。

要启动 OpenOCD 并定位 ST NUCLEO-L031K6

  • 通过执行以下命令启动 OpenOCD 并将 STM32 设为目标。 openocd -f interface/stlink--1.cfg -f target/stm32l0.cfg
  • 注意:在 OpenOCD 当前 master 版本的最新版本中,stlink--1.cfg(当从最新稳定版本 0.10.0 运行 OpenOCD 时所需的配置文件)已被弃用,现在已被 stlink.cfg 替换。

现在,让我们安装 Rust 并启动它!

  • 安装或从源代码构建 Rust v1.30 或更高版本。注意:如果您已经安装了 rust,请运行 rustup update 以获取最新稳定版本。
  • 我们需要添加 thumbv6m-none-eabi 目标
    • rustuptarget add thumbv6m-none-eabi
  • 接下来,让我们克隆仓库并运行它!
    • git clone https://github.com/thenewwazoo/nucleo-l031k6-bsp.git
    • cdnucleo-l031k6-bsp
    • cargorun

示例代码

当前的 example code 初始化了板子

let mut p = cortex_m::Peripherals::take().unwrap();
let d = hal::stm32l0x1::Peripherals::take().unwrap();

let mut board = bsp::init::<hal::power::VCoreRange1>(d.PWR, d.FLASH, d.RCC);

启动系统时钟

let ticks = board.rcc.cfgr.context().unwrap().sysclk().0;
board.systick_start(&mut p.SYST, SystClkSource::Core, ticks / 1000);

并初始化 D12 和 D13 引脚

let pins = board.pins(d.GPIOA, d.GPIOB, d.GPIOC);

let mut user_led = board.user_led(pins.d13);
let input_line = pins.d12.into_input::<PullDown>();

然后进入一个包含几个简单条件检查的循环。如果D12引脚设置为HIGH,则D13(LED)引脚状态以5Hz的频率切换。如果D12设置为LOW,则不会发生任何操作。

为了测试示例代码,使用上述设置说明闪烁板,并在您的ST NUCLEO-L031K6上短接D12和3.3v引脚。

依赖关系

~13MB
~379K SLoC