3 个版本 (重大变更)
0.3.0 | 2022年11月16日 |
---|---|
0.2.0 | 2020年8月8日 |
0.1.1 | 2018年11月4日 |
1017 in 嵌入式开发
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