(一个新的移植项目:https://github.com/FASTSHIFT/Arduino-For-STM32Cube)
这是一个跨平台移植的项目,可以在Keil MDK5环境下使用Arduino的函数对STM32系列单片机进行编程。 它本质上是一个建立好的Keil工程,然后在它的基础上封装一套类似于Arduino的底层函数库,可以像在Arduino IDE一样直接调用写好的API, 只需将Arduino支持的第三方库的文件夹加入 "Libraries" 文件夹下即可,然后打开"USER"文件夹启动keil工程进行编写程序。
底层基于 STM32标准外设库 二次封装,安装之后才能正常编译,下载链接位于下方。
这个项目大部分核心函数是重构的,有部分源代码参考了 stm32duino。
一般用法可以直接参照Arduino语法,高级用法参考工程自带的Example文件夹内的示例。
支持与寄存器和标准外设库的函数混用,提升运行效率:
void setup()
{
pinMode(PA0,OUTPUT); //使用Arduino函数将配置PA0为输出模式
}
void loop()
{
GPIOA -> BSRR = GPIO_Pin_0; //使用寄存器将PA0电平拉高
delay(1000); //延时一秒
GPIO_ResetBits(GPIOA, GPIO_Pin_0); //使用标准外设库的函数将PA0电平拉低
delay(1000); //延时一秒
}
1.请不要删除"main.cpp"中的FileGroup.h和main函数。
2.添加第三方库函数的时候要加入完整的路径.
3.由于平台的不同,所以不能保证兼容所有的Arduino第三方库函数,有的函数库可能要进行修改才能正常运行,
具体修改方式请按照编译器的提示,或者可以提交Issues。
delay(Time_ms);
delayMicroseconds(Time_us);
millis();
micros();
pinMode(Pin,Mode);
attachInterrrupt(Pin,Callback_function,Trigger_Mode);
digitalWrite(Pin,State);
digitalRead(Pin);
analogRead(Pin);
analogWrite(Pin,DutyCycle);
shiftOut(dataPin,clockPin,bitOrder,value);
shiftIn(dataPin,clockPin,bitOrder);
tone(Pin,Frequency,Time_ms);
tone(Pin,Frequency);
Serial.print("Hello STM32");
Serial.printf("Hello STM%d",32);
Serial << "Hello STM32" << "\r\n";
String
String s1 = "Hello";
String s2 = " STM32";
Serial.print(s1 + s2);
Stream
Serial.begin(115200);
Serial.setTimeout(20);
if(Serial.available())
{
String s = Serial.readString();
}
Serial
Serial.begin(115200);
while(Serial.available())
{
Serial.print(Serial.read());
}
Wire
Wire.begin();
Wire.beginTransmission(0xFF);
Wire.write(0x01);
Wire.endTransmission();
SPI
SPI.begin();
SPI.transfer(0xFF);