TA的每日心情 | 开心 2021-12-10 15:56 |
---|
签到天数: 2675 天 连续签到: 1 天 [LV.Master]伴坛终老
|
对于 Arduino STM32 开发板上的管脚使用,在上一篇文章中的 Blink 程序我们是直接声明 LED 管脚为 MCU 的管脚:
#define pinLED PC13
pinMode(pinLED, OUTPUT);
digitalWrite(pinLED, HIGH);
然而在 Arduino 的程序里头我们是可以直接使用管脚的编号的:
比如说:
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
假如我们在 Arduino STM32 板上也想要这么使用的话那我们该怎么知道管脚的编号呢?以上一个 Blink 程序来说,PC13 是对应到那一个编号呢?
在下载到 Arduino IDE 的 STM32 程序插件底下的 board.h 文件里头有这样的枚举类别:
// Note this needs to match with the PIN_MAP array in board.cpp
enum {
PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13,PA14,PA15,
PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13,PB14,PB15,
PC13, PC14,PC15
};
这个排列就是 STM32F103C8T6 的管脚编号了,PA0 是 0,而 PC13 就是 32,所以我们将上一个 Blink 程序里头的 PC13 改成 32,程序一样可以正常运行。
#define pinLED 32
这里我们使用管脚编号的方式来实现一个流水灯程序,LED 连接到板子底下的 A15 至 B9 共 8 支脚,而 LED 是低电位点亮的方式。
管脚编号对应如下:
A15 -> 15
B3 -> 19
B4 -> 20
B5 -> 21
B6 -> 22
B7 -> 23
B8 -> 24
B9 -> 25
程序如下:- const byte LED[] = {15, 19, 20, 21, 22, 23, 24, 25};
- void setup() {
- int x;
- for(x=0; x<8; x++) {
- pinMode(LED[x], OUTPUT);
- digitalWrite(LED[x], HIGH);
- }
- }
- void loop() {
- int x;
- for(x=0; x<8; x++) {
- digitalWrite(LED[x], LOW);
- delay(100);
- digitalWrite(LED[x], HIGH);
- }
- }
复制代码 运行结果:
Arduino STM32 编程体验
https://www.cirmall.com/bbs/thread-49468-1-1.html
|
评分
-
查看全部评分
|