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

这篇具有很好参考价值的文章主要介绍了[初学单片机]stm32f103C8T6最小系统板快速完成点亮led灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、准备工作

二、建立工程模板

三、配置keil5

四、程序

五、程序下载(烧录)

 六、总结


一、准备工作

① keil5,自行下载安装;

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

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

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

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

二、建立工程模板

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

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

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

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

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

 文件路径分别为:[初学单片机]stm32f103C8T6最小系统板快速完成点亮led灯

        路径:

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 - 蓝奏云

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

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

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

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

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

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

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

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

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

三、配置keil5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

四、程序

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

主程序:

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

#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:

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

#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:

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

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


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

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

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

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

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

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

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

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

五、程序下载(烧录)

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

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

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

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

        线接好后,我们将下载器连接上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[初学单片机]stm32f103C8T6最小系统板快速完成点亮led灯

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

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

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

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

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

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

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

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

 六、总结

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

        另,本文纯属初学者刚接触时撰写的,其中存在的错误望各位大佬指出,有不妥之处还望海涵!文章来源地址https://www.toymoban.com/news/detail-428306.html

到了这里,关于[初学单片机]stm32f103C8T6最小系统板快速完成点亮led灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于STM32F103C8T6单片机的1秒定时器设计与应用

    标题:基于STM32F103C8T6单片机的1秒定时器设计与应用 摘要: 本文主要探讨了如何在STM32F103C8T6微控制器上利用内部定时器实现精确的1秒钟定时功能,并通过实际项目实施,验证其稳定性和可靠性。首先介绍了STM32F103C8T6单片机的特性及其定时器资源,然后详细阐述了基于TIMx(

    2024年01月18日
    浏览(17)
  • FreeRTOS学习之路,以STM32F103C8T6为实验MCU(序章——浅谈单片机以及FreeRTOS)

    学习之路主要为FreeRTOS操作系统在STM32F103(STM32F103C8T6)上的运用,采用的是标准库编程的方式,使用的IDE为KEIL5。 注意!!!本学习之路可以通过购买STM32最小系统板以及部分配件的方式进行学习,也可以通过Proteus仿真的方式进行学习。 后续文章会同时发表在个人博客(jaso

    2024年02月06日
    浏览(21)
  • stm32f103c8t6单片机使用st-link/v2仿真器烧录程序的过程

    1、首先,电脑usb接口接上仿真器ST-LINK/V2,查看设备管理器。 若连接正常,则出现上图红线部分 2、ST-link/v2与stm32f103c8t6的连接,如下图 对应引脚相连接即可。 3、stm32f103c8t6 烧录时单片机必须接电,我一般boot0,boot1都接0(这一步单片机的启动方式没懂) 4、烧录程序 STM32F1

    2023年04月12日
    浏览(14)
  • 基于STM32F103C8T6单片机的DHT11温湿度传感器与OLED显示屏实时动态数据监测系统设计

    标题: 摘要: 本文提出了一种利用STM32F103C8T6微控制器,结合DHT11数字温湿度传感器和OLED显示屏实现环境温湿度实时、直观显示的方法。该系统通过低功耗且精确的DHT11传感器获取环境温湿度信息,并借助于STM32F103C8T6强大的处理能力和I/O资源进行数据读取、解析以及控制OLE

    2024年01月19日
    浏览(27)
  • Openmv+STM32F103C8T6视觉巡线小车

    机器视觉巡线处理是参考openmv官方代码 Openmv官网源代码:book. openmv.cc/project/follow-lines.html 根据官网视频及教程将源码注入openmv中。 小车巡的是黑线,所以颜色阈值要更改。 在文件示例中打开helloworld.py。 打开工具/机器视觉/阈值编辑器/缓冲区。 将我们需要寻迹的黑线调至全

    2023年04月09日
    浏览(26)
  • SG90舵机的使用--STM32F103C8T6

    SG90带有一个3P的接头 根据颜色分为 黄线(信号线) 红线(电源线) 棕色 (地线) 舵机的 工作电压 在 4.8V-6V ,接在STM32系统板上驱动不了,所以需要接电源模块单独的5V供电,我使用的是如图所示的电源模块 注: 如果STM32系统板供电和舵机供电不为同一模块,则需要共地,

    2024年02月03日
    浏览(17)
  • STM32---stm32f103c8t6与stm32f103zet6之间的代码移植转换

    目录 一、将c8t6转换为zet6 1、修改启动文件 2、修改芯片 3、将MD修改为HD  4、下载器的修改 5、修改完成,编译成功  二、将zet6转换为c8t6 最终结果如下:   将STM32F103C8改为STM32F103ZE   基本相同,反向即可。    

    2024年02月06日
    浏览(12)
  • [附源码] STM32F103C8T6+外接MCP4725 外部DAC

            STM32F103C8T6最小系统板是大家很常用的一款单片机,它内部有多个ADC模数转换通道,但并 没有DAC数模转换功能 ,当需要进行数字量转换为模拟量时就需要借助外部DAC。             MCP4725是具有非易失性存储器的单通道12位缓冲电压输出DAC。用户可将配置寄存器

    2024年02月04日
    浏览(17)
  • 【单片机毕业设计1-基于stm32c8t6的智能加湿系统】

    🔥这里是小殷学长,单片机毕业设计篇1 基于stm32的智能加湿系统 🧿创作不易,拒绝白嫖 可私 ------------------------------------------智能加湿系统----------------------------------------- 1.按键进行界面模式切换和参数阈值调节(定时时间、温湿度值) 2.蓝牙进行界面模式切换和参数阈值

    2024年02月11日
    浏览(17)
  • JQ8400语音模块-stm32f103c8t6(内含全代码)-亲测有效

    一.模块介绍 1.常见的JQ8400-FL语音模块有两种,一种是带3W功放,有4M的存储空间,可通过USB拷贝声音文件,通过单片机串口控制;另外一种是附有SD卡槽,用SD卡存储文件的文件(MP3格式)进行语音播报,也是通过单片机串口控制 2.我用的是二线串口通信,一线的没试过 3.程序

    2023年04月26日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包