【STM32 Blue Pill编程】-读取数字引脚输入

读取数字引脚输入


在本文中,将介绍 STM32 Blue Pill 板的输入/输出 GPIO 引脚,并学习如何使用STM32的GPIO引脚作为输出引脚以及输入引脚。

1、STM32的GPIO端口介绍

STM32F103C8 有许多 GPIO 端口,名为 GPIOA、GPIOB,均为 16 位宽。 STM32F103C8 具有 37 个 I/O 引脚。下面为GPIO端口的一些要点:

  • STM32 GPIO 端口是通用输入输出引脚,可承受 3.3V 电压。 其中有些可以耐受5V。 请参阅数据手册了解每个引脚。
  • 当 GPIO 引脚配置为输入引脚时,APB2 总线速度用于设置引脚的输入采样速度。 然而,当引脚配置为输出时,我们可以通过对配置寄存器中的相应位进行编程来设置引脚的速度。
  • 无论使用哪种操作模式,时钟启用都是必须的。
  • 当我们将 GPIO 引脚设置为高阻抗输入时,这会使 GPIO 引脚处于高阻抗状态。 在其他情况下断开它。

根据stm32f103c8数据手册:

Each of the GPIO pins can be configured by software as output (push-pull or open-drain), asinput (with or without pu

<think>好的,用户想要查找关于Arduino和STM32 Blue Pill的开发教程或配置指南。我需要先回顾之前的引用内容,看看有没有相关的信息。之前的引用提到了硬件IIC和软件IIC控制OLED的教程,外部中断配置,以及U8g2库的使用。这些应该都是用户可能需要的资料。 首先,我应该整理这些引用中的关键点。引用1和3都是关于OLED显示屏的,分别使用了硬件IIC和软件IIC的方法,可能用户对显示模块的连接和编程感兴趣。引用2是关于外部中断的配置,用按钮控制LED,这可能涉及到GPIO和中断处理。这些都是开发中常见的任务,用户可能需要基础配置和具体外设使用的指导。 接下来,用户可能需要一个系统的配置指南,比如如何搭建开发环境,安装支持STM32的Arduino核心库,以及如何上传程序到Blue Pill。之前的引用中没有详细提到这些步骤,但根据我的知识,STM32 Blue Pill通常需要安装特定的板级支持包,比如STM32duino或使用Arduino IDE的STM32核心。此外,可能需要配置正确的串口驱动和烧录方式,比如使用USB转串口工具或者ST-LINK。 然后,用户可能还需要了解GPIO的基本配置,比如如何设置输入输出,使用中断,以及常见的通信协议如I2C、SPI、UART。引用中的例子已经涉及到了I2C和中断,这部分可以作为示例代码提供给用户。另外,引用3中的U8g2库使用软件IIC,可能用户需要了解如何选择合适的库以及接线方式。 此外,用户可能遇到的一些常见问题,比如驱动安装失败、程序上传错误、外设不工作等,可能需要给出一些故障排除的建议。例如,检查接线是否正确,确认库文件安装位置,或者选择正确的板卡型号和端口。 最后,根据用户的需求,生成相关问题,帮助用户深入探索。比如如何优化代码以减少资源占用,或者如何结合多个外设进行项目开发。同时,确保回答结构清晰,分步骤说明配置过程,并提供代码示例和注意事项,确保用户能够按照指南操作。</think>以下是关于Arduino与STM32 Blue Pill开发的配置指南及教程整理,结合硬件控制、外设驱动和实际项目应用: --- ### 一、开发环境搭建 1. **安装Arduino IDE支持包** - 下载STM32duino核心库:访问[GitHub仓库](https://github.com/stm32duino/Arduino_Core_STM32),按文档安装到Arduino的硬件目录(如`C:\Program Files (x86)\Arduino\hardware\Arduino_STM32`)[^1]。 - 在Arduino IDE中选择板卡:`Tools > Board > Generic STM32F1 > BluePill F103C8`。 2. **烧录方式配置** - **串口模式**:需USB转TTL工具(如CH340G),连接Blue Pill的`A9(TX)`和`A10(RX)`引脚,选择`Upload Method: Serial`。 - **ST-LINK调试器**:选择`Upload Method: STM32CubeProgrammer (SWD)`。 --- ### 二、基础外设配置示例 #### 1. GPIO控制LED ```cpp void setup() { pinMode(PC13, OUTPUT); // Blue Pill板载LED引脚 } void loop() { digitalWrite(PC13, HIGH); delay(500); digitalWrite(PC13, LOW); delay(500); } ``` #### 2. 外部中断配置(按钮控制LED) ```cpp void buttonInterrupt() { digitalWrite(PC13, !digitalRead(PC13)); // 切换LED状态 } void setup() { pinMode(PC13, OUTPUT); pinMode(PB9, INPUT_PULLUP); // 按钮接PB9与GND attachInterrupt(digitalPinToInterrupt(PB9), buttonInterrupt, RISING); } void loop() {} // 中断处理无需主循环代码 ``` > 接线:按钮一端接PB9,另一端接地,按下时触发上升沿中断[^2]。 --- ### 三、OLED显示屏驱动 #### 硬件I2C控制(SSD1306) ```cpp #include <Wire.h> #include <Adafruit_SSD1306.h> Adafruit_SSD1306 display(128, 64, &Wire); void setup() { Wire.begin(); // 默认SCL=PB6, SDA=PB7 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display(); } void loop() { display.clearDisplay(); display.setTextSize(1); display.setCursor(0,0); display.print("Hello Blue Pill!"); display.display(); delay(1000); } ``` #### 软件I2C控制(U8g2库) ```cpp #include <U8g2lib.h> U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, PB6, PB7, U8X8_PIN_NONE); void setup() { u8g2.begin(); } void loop() { u8g2.clearBuffer(); u8g2.drawStr(0, 16, "Software I2C!"); u8g2.sendBuffer(); delay(1000); } ``` > 注意:软件I2C可自定义引脚,但速度较慢[^3]。 --- ### 四、进阶功能配置 - **PWM输出**:使用`analogWrite(PB1, 128)`输出50%占空比(需配置定时器)。 - **ADC读取**:`analogRead(PA0)`读取电位器电压(0-3.3V)。 - **低功耗模式**:通过`LowPower.sleep()`进入停机模式,中断唤醒。 --- ### 五、常见问题排查 1. **无法上传程序**:检查Bootloader模式(BOOT0=1, BOOT1=0),或尝试复位按钮。 2. **I2C设备无响应**:确认地址是否正确(常用0x3C或0x3D),检查上拉电阻。 3. **库冲突**:确保硬件库路径正确,避免多个STM32核心包共存。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视觉与物联智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值