STM32点亮一个LED

这篇博客详细介绍了如何在STM32F103C8T6微控制器上使用Keil5和标准库来初始化GPIO并点亮一个LED。内容包括GPIO外设的功能分析,USER_LED与STM32的硬件连接,以及具体的初始化和编程步骤。

STM32点亮一个LED

一、环境

OS:Win7 64位
Keil:keil5
MCU: STM32F103C8T6
下载方式:Elink

二、准备工作

(一)GPIO外设的功能分析

图:I/O端口位的基本结构
在这里插入图片描述
STM32F103C8T6共有2组GPIO端口:PA、PB,每组16个端口。每个端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。
GPIO端口的每个位可以由软件分别配置成多种工作模式:
—输入浮空
—输入上拉
—输入下拉
—模拟输入
—开漏输出
—推挽式输出
—推挽式复用功能(本次实验使用该功能)
—开漏复用功能

(二)USER_LED与STM32硬件连接关系

在这里插入图片描述

(三)调用标准库初始化GPIO外设

1、使能GPIO的时钟

STM32点亮一个LED灯的具体过程如下: ### 硬件连接与原理 由于LED负极接在STM32上,LED连接状态为低电平导通,需要控制单片机对应的I/O口输出高低电平来控制LED亮灭,所以IO口应选择推挽输出模式。以开发板上只有一个LED灯可编程为例,只需对PB0即GPIOB.0引脚进行配置和操作,PB0设置低电平LED点亮,高电平LED熄灭 [^1][^2]。 ### 代码编写与配置 - **文件包含**:在led.c文件中,需要包含头文件。输入`#include"led.h"`并编译,同时由于c文件的作用是初始化时钟和初始化引脚,所以还要包含stm32的库,编写`#include"stm32f10x.h"` [^3]。 - **端口配置**:配置RCC(HSE与LSE,按照原理图配置,如果没有两个都选第三个);配置System Core(sys - Debug(serial Wire));选择Pinout view(PB0 - GPIO output) [^4]。 示例代码如下: ```c #include "led.h" #include "stm32f10x.h" // 假设led.h文件中包含了LED初始化函数的声明 // 以下是简单的LED初始化函数示例 void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; // 使能GPIOB端口时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 配置PB0为推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } ``` ### 相关问题 1. STM32其他引脚点亮LED灯的配置有什么不同? 2. 推挽输出模式在STM32点亮LED灯中有什么优势? 3. 除了低电平导通,LED还有哪些连接状态及对应的控制方式? 4. 配置RCC时,选择HSE与LSE的依据是什么? 5. 如何验证LED灯是否成功点亮
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值