先说点废话

这个系列是在意料之外的,起因是,很久之前在eeworld论坛看了一场rust+py32嵌入式直播,在直播过程中,提出了一些自己的疑惑,并且得到了较为满意的答疑。😊

事后就再没关注过了,直到前几天,论坛的管理员通过预留的个人信息添加了我的微信,并且说明,我中奖了,奖品是一块py32f030k28t6 rust开发板。

板子大概就长这个样子。

到手之后,是这样的。

焊接好了。

既然都焊接好了,那就继续写(CV)点代码试一试吧!


前言

查阅资料可知,py32f030k28t6的硬件资源大概如下:

  • 32位ARM@Cortex-M0+
  • 48MHz Max
  • FLASH : 64K Max
  • SRAM : 8K Max
  • 1*12bit ADC
  • 1*16bit Advanced TIM1
  • 4*16bit TIM(3/14/16/17)
  • 1*LPTIM
  • 1*IWDT
  • 1*WWDT
  • 2*SPI
  • 1*IIC
  • 2*USART

从x宝搜索可知,这款芯片不到1¥,如此对比的话,某些x1单片机的性价比就不值一提了。

废话不多说,搞点代码,添加一点灵魂!!!

你知道我的,肯定不可能从svd2rust开始写,肯定是先去最大的同性交友网站看看喽。

Github,启动!

很容易就找到了!!!

二次元头像,中文头像!!!我去,全是大佬!!!

读一读README,不错不错,完成度很高!

那还说啥了,CV,启动!

CV,启动!

经过一番简单的适配后,建立好了工程。

先用ST-Link试试。

cargo run!!!!!!!!!

终端信息正常,看看屏幕呢。

正常显示出代码预设的内容。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
//屏幕显示部分的代码
Text::with_baseline("py32", Point::zero(), text_style, Baseline::Top)
    .draw(&mut display)
    .unwrap();

Text::with_baseline("rust", Point::new(0, 16), text_style, Baseline::Top)
    .draw(&mut display)
    .unwrap();

Text::with_baseline("bin", Point::new(100, 45), text_style, Baseline::Top)
    .draw(&mut display)
    .unwrap();

let raw: ImageRaw<BinaryColor> = ImageRaw::new(include_bytes!("../rust.raw"), 64);

let im = Image::new(&raw, Point::new(32, 0));

im.draw(&mut display).unwrap();
display.flush().unwrap();

至此,又在一款国产芯片上,使用rust点亮了屏幕。

Salute!!!

感谢各位大佬卓越的贡献!!!

参考资料: