Mini-Sky / Arduino-For-Keil

A Cross-platform migration Project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Arduino for Keil

(一个新的移植项目:https://github.com/FASTSHIFT/Arduino-For-STM32Cube)

这是一个跨平台移植的项目,可以在Keil MDK5环境下使用Arduino的函数对STM32系列单片机进行编程。 它本质上是一个建立好的Keil工程,然后在它的基础上封装一套类似于Arduino的底层函数库,可以像在Arduino IDE一样直接调用写好的API, 只需将Arduino支持的第三方库的文件夹加入 "Libraries" 文件夹下即可,然后打开"USER"文件夹启动keil工程进行编写程序。

底层基于 STM32标准外设库 二次封装,安装之后才能正常编译,下载链接位于下方。

STM32F0xx标准外设库

STM32F10x标准外设库

STM32F3xx标准外设库

STM32F4xx标准外设库

这个项目大部分核心函数是重构的,有部分源代码参考了 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。 

支持Arduino函数有:

基本:

时间:

	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);

Print

	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);

About

A Cross-platform migration Project


Languages

Language:C 77.3%Language:C++ 16.5%Language:Assembly 3.0%Language:Rich Text Format 1.2%Language:HTML 1.2%Language:Objective-C 0.6%Language:Processing 0.2%Language:Shell 0.0%Language:Batchfile 0.0%Language:Makefile 0.0%