用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单片机中并开始运行。运行结果如下。
总结
本次实验使用了标准库方式,重点在开发环境的搭建与配置上。