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的时钟
在这里插入图片描述
从上面的系统结构图可见,GPIOB位于APB2系统总线上,因此,GPIO的时钟使能使用如下函数:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
2、配置GPIOB端口到第8个IO口
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;
3、配置PB8为推挽输出模式(配置GPIO_MODER)
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出模式
5、配置PB8的输出速度为50MHz
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
6、初始化GPIO(初始化相应的寄存器)
GPIO_Init(GPIOB,&GPIO_InitStruct);

(四)调用标准库点亮一个LED

经过上面的分析,调用stm32标准库驱动LED。

三、程序开发

main.c文件如下:

#include "stm32f10x.h"
void delay(int cnt);
int main(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;   
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);   
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8; 
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;	//ÍÆÍìÊä³ö
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;  
	GPIO_Init(GPIOB,&GPIO_InitStruct);
	
	while(1)
	{
		GPIO_SetBits(GPIOB,GPIO_Pin_8);
		delay(1000);
		GPIO_ResetBits(GPIOB,GPIO_Pin_8);
		delay(1000);
	}
	
}

void delay(int cnt)
{
	int i,j;
	for(i=0;i<cnt;i++)
	{
		for(j=0;j<0xfff;j++)
		{}
	}
}


笔者:2019年8月17日,云南昆明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值