在開始在ArduinoIDE上開發前,請先參考以下兩篇,如果已經熟悉可忽略
STM32duino-如何在ArduinoIDE使用STM32(新版)(以STM32F103為例)
STM32duino-如何在ArduinoIDE使用STM32(新版)(以STM32L475為例)
下方有程式碼,請自行複製貼上
請參照下方腳位說明:
PWM:
PA0,PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB6, PB7
ADC:
PA0,PA1, PA2, PA3, PA4, PA5, PA6, PA7
TXRX:
(這個的串口名稱是有規定不能隨意更改的,因為STM的溝通方式本來就不適用Arduino內建的Serial函式庫)
定義名稱 |
TX |
R |
Serial1 |
PA9 |
PA10 |
Serial2 |
PA2 |
PA3 |
Serial3 |
PB8 |
PB11 |
範例如下
I2C :(預設是默認使用I2C1也就是PB6,PB7,第二組需要另外再開啟)
SCL |
SDA |
PB6 |
PB7 |
PB10 |
PB11 |
該範例將led接在PB10,PA2則是觸發腳,當準位是LOW則提示"It's LOW !" ,如果
是HIGH,則PB10上的LED亮起
程式碼:
int ledPin = PB10;
int buttonPin = PA2;
void setup()
{
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, LOW);
attachInterrupt(digitalPinToInterrupt(buttonPin), button_ISR, RISING);
//CHANGE:當引腳值發生變化時觸發中斷
//RISING:當引腳值從 LOW 上升到 HIGH 時觸發中斷
//FALLING:當引腳值從 HIGH 下降到 LOW 時觸發中斷
}
void loop()
{
if(digitalRead(buttonPin)==LOW){
digitalWrite(ledPin,LOW);
Serial.println("It's LOW !");
}
delay(500);
}
void button_ISR()
{
digitalWrite(ledPin,HIGH);
}
留言列表