前言,什么是STM32F030F4P6
STM32目前最便宜的芯片之一应该就是这一块,STM32F030F4P6,这一个芯片没有USB,但是其他都有,引脚少,价格低廉,如果找不到原厂,可以买替代的国产芯片,性能也一样。
不管怎么样也是Cortex-M0,比8bit和16bit的性能都强,总的来说就是低价,引脚少,体积小的同时,还容易开发,有很多模拟输入可玩,还有SPI,硬件I2C等等
所以,这一款MCU真的是从理论来说又便宜又好用,非常适合把玩。
画个板,最小系统
STM32F030其实如果你够勇甚至不需要外接零件,因为ST官方涨价涨了三倍,我只好用的国产替代版本,它的ESD指标很高。当然在实际的设计中,我还是设计了常用的元器件,不过没有设置串口。
送去打板,最终焊接出来耍这样子,芯片是国产替代产品XM1008F6P6,使用上没有什么不同但是便宜很多很多。
在测试出来感觉没有问题后我又焊接了所有的板
如何在ArduinoIDE中使用,点亮LED灯
关于这一块的数据实在不多,STM32Duino中很少有人搞这个,那么要如何找到芯片的定义?首先你需要安装STM32的官方包,具体教程我之前写过
使用Arduino IDE来编写上传STM32以及STM8代码,STM32Duino教程
关于这个的资料不多,但是安装好STM32Duino相关的包后,我们可以在文件夹里面找到对于引脚的定义,具体位置
C:\Users\【你的用户名】\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.9.0\variants\DEMO_F030F4
在头文件中我们可以看到定义,也能更好的了解这一个Templete,可以看到模拟输入非常可观,A0到A8都支持模拟输入,A5到A8则是硬件SPI,而A9和A10是硬件I2C,
官方的LED设计在PA4上面,而我则是设计在PB1上。
先打开Blink这个例子来试试看板子行不行,插入一句,定义LED灯为A8
#define LED_BUILTIN A8
烧录的时候,选择Generic STM32F0 series,然后Board Part Number选第一个,其他就原样不变了。
烧写成功后,可以看到B1接的正常点亮,如果没成功检查CLK和DIO引脚。
进一步,使用STM32F030F4P6的串口
这一款STM32芯片的PA3和PA2是串口的RX和TX,我使用CH340这种很常见的廉价芯片进行链接。A2接CH340的RX,不接3.3V,A3接CH340的TX
但是在一开始的时候,用串口初始化,居然会导致卡死,这就让我有点摸不着头脑了 。运行下面这个代码会让这个STM32芯片不能正常的使用。
#define LED_BUILTIN A8
// the setup function runs once when you press reset or power the board
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
Serial.println("Print 1");
}
然后我发现使用内置晶体振荡器,就没有这个问题,程序可以正常的运行。
所以问题可能出现在晶体振荡器上面,或许下一次可以省略掉这个8M晶振。
给STM32F030跑分,性能如何?
接着来试试看CoreMark,看看这个芯片的性能是怎么样,CoreMark是目前来评测MCU性能的一个程序,Arduino IDE下可以编译
最终结果是不行,容量太小