[初学单片机]stm32f103C8T6最小系统板快速完成点亮led灯

目录

一、准备工作

二、建立工程模板

三、配置keil5

四、程序

五、程序下载(烧录)

 六、总结


一、准备工作

① keil5,自行下载安装;

② 库函数包,这里我上传了一个F1xx的库函数包,可以在建立工程模板的时候用到;1,STM32F1xx固件库.rar – 蓝奏云

③ STM32F103C8T6最小系统班,淘宝十几块;

④ ST-Link V2下载器,一般都会和MCU绑定着卖;

⑥ 杜邦线若干,一般买上面的东西会送几根够用;

二、建立工程模板

  ① 先建立一个文件夹,这里我命名为LED_3,在LED_3文件夹下建立如下图所示文件夹:

  ② 从下载的库函数包中将文件复制到相对的文件夹下:

        Lib_CMSIS 文件夹下包含下列文件:该文件下放置的是一些核心程序和启动程序。

 文件路径分别为:

        路径:

1. 1,STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

2.1,STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

3.1,STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

        Lib_MyDriver文件夹下包含下列文件:该文件夹下放置的是一些自定义的外设文件,包含两个文件夹,一个放置.c后缀的文件,用于初始化一些功能/函数/引脚;一个放置.h后缀的文件,用作头文件申明一些功能/函数/引脚。这里事先放置了两个延时文件,这是系统内部的,放在这里后面方便修改和使用,直接调用即可。

       如果找不到的话就直接下载从这里获取后放入:

延时和中断.rar – 蓝奏云

        my_inc文件夹下放置.h后缀文件,my_src文件夹下放置.c后缀文件。然后我们再建立一个led.c空文件和led.h空文件放置在对应的文件夹,这两个文件就是我们在程序中视为操作的外设了。

Lib_PeriphDriver文件夹下包含下列文件:该文件夹下放置的是一些系统内部的文件,如定时器等等,我们从库函数包中直接复制对应的文件夹过来即可。

        路径:1,STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver

User文件夹包含下列文件:其中main.c文件就是我们的主程序文件。

        路径: 1,STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

        到这里,一个初始的工程模板就建立完成了,在很多情况下,工程模板是通用的,只略微修改即可开始另一个项目。

三、配置keil5

        打开keil5软件,点击Project选项卡,点击new μVision Project..,新建一个工程;

         会弹出的对话框,在刚才建立的工程模板的User文件夹下建立一个命名为LED的工程文件;

        会弹出一个芯片选型,我们点击+扩展选项,找到STM32F103C8,点击OK-OK;

        在打开的窗口界面中,左边,右键点击Target,选择Manage Project Item…;在弹出的对画框中做如图所示修改:实际上就是将刚刚我们复制到对应文件夹的文件,将其中的.c后缀的头文件重新添加一次,这里要注意的是在Lib_CMSIS组添加文件时,在对话框中要选择所有文件类型,不然是无法看到.s后缀文件的。

 

 

 

        此时窗口右边就可以看到新建工程的文件列表了:

 

        接下来我们点击魔法棒,对keil做最后的配置,主要是涉及到一些编译的头文件路径和生成HEX文件的问题。

       在output选项卡下勾选 create HEX_File ,这个就是编译后生成的文件,可以下载到驱动板上加载。

                接着在C/C++选项卡下进行如下设置,点击箭头处可弹出对话框,将对应文件路径添加进去即可:最小系统板,可使用  STM32F10X_MD,USE_STDPERIPH_DRIVER

 

        到这里,keil5软件的基本配置就完成了,接下来可以开始编写程序了。

四、程序

        led.c文件中的程序如下图所示:

主程序:

#include "led.h"
#include "delay.h"
#include "sys.h"

//主函数
int main (void)
{
	delay_init(); //初始化延时函数
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级
	LED_Init(); //LED初始化
	while(1) //主循环函数
	{
		LED = 1; //LED灯亮
		delay_ms(500); //延时保持500毫秒
		LED = 0; //LED灯灭
		delay_ms(500); //延时保持500毫秒
	}
}

 led.c:

#include "led.h"   //引入头文件

void LED_Init(void)  //初始化LED引脚
{
	GPIO_InitTypeDef GPIO_InitStructure;  //初始化结构体
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);  //使能时钟,必须要先使能IO的时钟
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;  //初始化第13引脚
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //IO口速度为50MHz
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	GPIO_SetBits(GPIOC,GPIO_Pin_13);  //初始化引脚为高电平输出,相当于LED = 1;
}

 led.h:

#ifndef _LED_H_
#define _LED_H_
#include "sys.h"
#define LED PCout(13) //定义输出引脚为13


void LED_Init(void); //初始化LED引脚
#endif

        然后我们就可以点击工具栏上的编译按钮了,看程序是否有报错!

        出现下面的结果,就表明你的程序在逻辑上是没有错误的,后面就需要下载到开发板上实际观察结果了。

        这里提示几点:①主程序中原本的文件是可以删除的;②刚开始写代码,多多少少会出现一些错误,比如大小写区分,或者标点符号缺失或者多写等等,编译后根据下方编译输出窗口查看报错的条目,双击条目一般都会跳转到你的代码错误地方,如果实在找不到可以将报错信息复制后上百度查找;③如果多看几个案例,你会发现对于有些地方的代码是通用的,比如.c文件中的初始化引脚函数,基本上都是这个结构,归根结底实际上就是对各个引脚的操作。

        !!!但嵌入式有太多太多要学的了,这点点简直一根毛毛都算不上。对于一些理论上的东西这里没办法讲解,我的理解也有限,这里上传一个开发手册文档,里面有LED灯点亮的具体描述,可以自行下载查看。如果对其他经典案例有需求,我后续再上传相关的文件,实际上这些文件网络上已经有很多了。

STM32不完全手册_库函数版本_V3.2.pdf – 蓝奏云

五、程序下载(烧录)

        这里我采用的是ST-Link v2 下载器,将MCU和下载器根据引脚对应连接起来即可,这里注意的是我们使用的是ST-Link 下载器的下面一排引脚,除了5v供电不接,分别对应接上3.3v、GND、SWDIO、SWCLK四根引脚,与MCU上的对应引脚接上即可,如下图所示:

 

 

        线接好后,我们将下载器连接上PC,查看设备管理器中的通用串行总线设备中是否有ST-Link驱动出现,如果没有的话,需要下载一个STM32 ST-Link的驱动PC和Keil才会识别的到下载器。这里附一个ST-Link 驱动的下载官网,去里面下载一个最新的驱动即可,可能会要求注册,但很简单,填写一个邮箱,在邮箱里面验证一下,弹出来的网站加载完成后会自动弹出下载框;下载完成后,解压缩,在里面找到对应x86或x64的.exe文件,安装即可,安装全过程默认下一步。STSW-LINK009 – 为Windows 7、Windows 8、Windows 10签署的ST-LINK、ST-LINK/V2、ST-LINK/V2-1 USB驱动 – 意法半导体STMicroelectronics

        驱动安装完成后,此时我们在PC的设备管理器中已经可以发现ST-Link的驱动了,接着,我们打开keil5,找到刚才建立的工程,点击魔术棒,在DeBug选项卡中做如下图所示操作:

 

 

        设置好后,我们点击确定回到主窗口,点击窗口工具栏的下载(烧录)按钮,即可开始烧录程序。当出现verify OK后,标明程序烧录成功。

        效果如下图所示(由于不能动态展示,这里只显示了蓝灯亮起):红色灯为MCU的通电灯,只通电正常就会点亮,而我们操作的引脚是PC13 ,控制的是蓝灯,所以蓝灯会闪烁,延时后熄灭,再延时后亮起,反复执行,如果想延时效果明显一些,可以在将主文件的中的delay_ms(500)数值调大一些,比如50000,就会很明显。所以从这个小项目也可以往外扩展成流水灯,按键控制等等,因为都只是对引脚的高低电平的简单操作,如控制流水灯实际上就是控制多个led灯不同时间点亮而已。

 六、总结

        可能前面建立工程模板和写程序等不会有什么问题,但是后面的驱动部分以及程序烧录部分出问题的几率很大,涉及到很多因素,包括软件版本,WINDOWS系统限制,硬件等等,对应的问题报错在百度上方案很多,但不一定起作用,所以如果报错了,尽可能多尝试一下吧!祝各位顺利!

        另,本文纯属初学者刚接触时撰写的,其中存在的错误望各位大佬指出,有不妥之处还望海涵!

物联沃分享整理
物联沃-IOTWORD物联网 » [初学单片机]stm32f103C8T6最小系统板快速完成点亮led灯

发表评论