用STM32F103C8T6点亮一个LED灯(标准库方式)【STM32开发板】

用STM32F103C8T6点亮一个LED灯(标准库方式)【STM32开发板】

实验要求

在上一次寄存器方式点亮LED灯的基础上,改用标准库方式,完成LED的点灯实验。

标准库方式的开发环境搭建

STM32F1的Keil固件包的下载安装

在Keil官网 (www.keil.com) 上下载STM32F1的Keil固件包。具体过程是:进入Keil官网后点击 “Products”,点击 “ARM development tools”,进入ARM产品页面后点击 “Public Software Packs”,在 “MDK5 Software Packs” 下方找到Keil,接着在Keil下方找到 “STMicroelectronics STM32F1 Series Device Support”,即STM32F1的Keil固件包,点击“下载”。下载完成后打开该文件,安装固件包即可。

STM32F10x固件库的下载

在ST官网上下载STM32F10x的固件库。

下载完成并解压后的固件库包含_htmresc, Libraries, Project, Utilities四个文件夹以及使用手册和帮助文档。

开发环境的搭建与配置

选择STM32F103C8芯片建立工程后,在工程内Target下建立4个文件夹:User文件夹用于存放主程序 (main.c), 中断程序stm32f10x_it.c和系统文件system_stm32f10x.c; BSP文件夹用于存放用户编写的头文件等,如本次实验的LED.h, LED.c; Core文件夹用于存放core_cm3.c和启动文件startup_stm32f10x_hd.s; FWLib存放STM32标准外设库的src和inc两个文件夹,这两个文件夹下存有各种驱动文件。在该工程文件所在的文件夹下新建这四个文件夹,从STM32固件库复制上述文件及其头文件并粘贴到相应的文件夹。再在工程内将上述文件添加到相应的文件夹。

之后,打开Options,在Target选项页中设置晶振为8MHz,勾选 “Use MicroLIB”(使用Micro库);在Output选项页中勾选 “Create HEX File”(生成HEX文件);在C/C++选项页的Define中输入宏 “USE_STDPERIPH_DRIVER”,并将全部头文件所在的文件夹添加进搜索路径 (include path) 中;在Debug选项页中选择使用ST-Link调试器,点击设置 (settings),选择 “Erase Full Chip”,勾选 “Reset and Run”。这样开发环境的配置就算完成了。

项目编写

LED.h

#ifndef __LED_H
#define __LED_H

#include "stm32f10x.h"
void LED_Init(void); //函数声明

#endif

LED.c

#include "LED.h"
void LED_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; //定义一个GPIO_InitTypeDef类型的结构体变量
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启GPIOB的时钟
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //选择要使用的I/O引脚,此处选择PB5引脚
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置引脚输出模式为推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置引脚的输出速度为50MHz
	GPIO_Init(GPIOB,&GPIO_InitStructure); //调用初始化库函数初始化GPIOB端口
}

main.c

#include "stm32f10x.h"
#include "LED.h"

/*函数名:Delay
*功能描述:不精确的延时,延时时间= nCount/72000,单位为ms,72MHz为STM32主频
*输入参数:nCount
*输出参数:无
*/
void Delay(__IO u32 nCount)
{
	for(;nCount !=0;nCount--);
}

int main(void)
{
	LED_Init();
	while(1)
	{
		GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB5置低电平
		Delay(720000); //延时10ms
		GPIO_ResetBits(GPIOB,GPIO_Pin_5); //PB5置高电平
		Delay(720000); //延时10ms
	}
}

STM32开发板实现

如下图所示,将STM32开发板插入面包板并与ST-link连接(相接的两接口应同名),分别用导线将开发板两侧的3.3V输出接至面包板两侧的正极槽、接地输入接至面包板两侧的负极槽。将一个LED接在开发板的B5接口上,具体做法是将正极(长管脚)接至正极槽,负极(短管脚)接至开发板B5接口所接在的一槽。

在这里插入图片描述

代码在Keil中编译完成后,点击“下载”,即可将代码载入STM32单片机中并开始运行。运行结果如下。

在这里插入图片描述

总结

本次实验使用了标准库方式,重点在开发环境的搭建与配置上。

点亮STM32F103C8T6开发板上的PC13引脚对应的LED,你需要进行以下步骤: 1. 首先,确保你已经正确连接了开发板LED。将LED的正极连接到PC13引脚,将LED的负极连接到开发板的地(GND)引脚。 2. 在编程环境中,选择适合的开发工具,如Keil MDK或STM32CubeIDE。 3. 创建一个新的工程,并选择正确的芯片型号(STM32F103C8T6)。 4. 在代码中,需要包含适当的头文件,如"stm32f1xx.h"。 5. 初始化PC13引脚为输出模式。可以使用GPIO_InitTypeDef结构体来配置引脚的参数,例如设置引脚为推挽输出模式、设置输出速度等。 6. 在主循环中,通过设置PC13引脚的电平状态来控制LED的亮灭。可以使用GPIO_WriteBit函数将PC13引脚设置为高电平或低电平。 下面是一个简单的示例代码: ```c #include "stm32f1xx.h" int main(void) { // 初始化PC13引脚 GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStruct); while (1) { // 点亮LED GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET); // 延时一段时间 for (int i = 0; i < 1000000; i++); // 熄灭LED GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET); // 延时一段时间 for (int i = 0; i < 1000000; i++); } } ``` 请注意,以上代码仅供参考,具体的实现可能会因为使用的开发工具和库的不同而有所差异。在实际开发中,你可能需要根据自己的需求进行适当的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值