mcu场合rust的工具链没啥不好的啊。我之前就介绍过,
比如st那个用c写的跟shit一样的hal库...跟rust对比就是天上地下。
只有具备rust这样强大的抽象能力之后,才有可能写出真正有价值的hal库。
比如你看看这里的example:
https://github.com/stm32-rs/stm32f4xx-hal/tree/master/examples
我贴个pwm的:
#![deny(unsafe_code)]
#![no_main]
#![no_std]
// Halt on panic
use panic_halt as _;
use cortex_m_rt::entry;
use stm32f4xx_hal::{
pac,
prelude::*,
timer::{Channel1, Channel2},
};
#[entry]
fn main() -> ! {
if let Some(dp) = pac::Peripherals::take() {
// Set up the system clock.
let rcc = dp.RCC.constrain();
let clocks = rcc.cfgr.freeze();
let gpioa = dp.GPIOA.split();
let channels = (Channel1::new(gpioa.pa8), Channel2::new(gpioa.pa9));
let pwm = dp.TIM1.pwm_hz(channels, 20.kHz(), &clocks).split();
let (mut ch1, _ch2) = pwm;
let max_duty = ch1.get_max_duty();
ch1.set_duty(max_duty / 2);
ch1.enable();
}
loop {
cortex_m::asm::nop();
}
}
这才是写给人看的代码。
最后,如果你想用新的工具,享受它带来的好处,那首先是你得要用新的姿势去使用新工具。
比如给你一台联合收割机,你非说喜欢用镰刀亲自一茬茬割的感觉,用联合收割机又要加油又要维护启动半天就割一亩地是脱裤子放屁...那这个确实没啥办法,只能说你不需要联合收割机...
【 在 dismoon 的大作中提到: 】
: 最主要是MCU场合rust的工具链不好吧
: 我没说rust不能实现我的需求,我就是说,我本来好好的用一个强制double的地址赋值给char就能得到数据内存所在的指针,rust要绕一大圈脱几条裤子才能实现,unsafe就是那几条裤子
:
--
修改:lvsoft FROM 180.111.26.*
FROM 180.111.26.*