最小系统板 STM32入门,点亮 LED 灯(STM32F103C6T6)

Posted HackShendi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最小系统板 STM32入门,点亮 LED 灯(STM32F103C6T6)相关的知识,希望对你有一定的参考价值。

Hello, I’m Shendi

最近开整单片机,这里记录一下


我目前配置,最小系统板 STM32F103C6T6,ST-LINK V2

最小系统板,通电后PWR灯会亮,ST-LINK插上电脑后也会亮

PDD上买的,没有焊接的(就是有个洞被焊起来了),加起来不超过30块

ps:
ST-LINK是烧录器,用于将编写好的程序烧录进单片机
Keil 是编写程序的 IDE

ST-LINK与最小系统板连接

实物图

其中ST-LINK有八个引脚,上面都标出了对应的作用了,一般用3.3V就可以了,SWDIO与SWIO相连,其余连接一致即可(四根线都插上)

接完后,这时将ST-LINK插入电脑USB口,即可看到单片机与ST-LINK亮起



ST-LINK驱动安装

在安装完 keil5 后,keil的安装目录下有 ARM/STLink/USBDriver

双击其中 dpinst_adm64.exe 即可安装驱动

32位则点击 dpinst_x86.exe

装完后,插上ST-LINK,即可在设备管理器里看到有 STM32



Keilv5 新建项目


New uVision Project,输入名称,保存,会弹出 Select Device for Target… 窗口,看窗口左下方有没有 STMicroelectronics,或者在 Search中输入单片机型号,例如我的 STM32F103C6T6(只有STM32F103C6)

如果有则直接选择,没有就需要手动下载芯片包了

下载芯片包

进入 https://www.keil.com/dd2/pack/ 下载芯片包,往下滑,找到 Keil,然后找到其中的带STM32的

例如我的 STM32F103,找到了 STM32F1,下载即可,网速慢可以科学上网下载

根据前缀来下载对应的芯片包 STM32F0 则下载 STM32F0 的


下载完后是一个后缀为pack的文件,将其复制到 keil 的 pack/.Download 文件夹

打开 keil,点击 Pack Installer

点击 file - import 导入下载的芯片包,看右下角,等待完成即可

完成后再新建项目就有 STM32 对应的芯片包可以选择了,选择自己类型的,下一步,OK,创建完成

我的是 STM32103C6T6 就选择了STM32103C6


配置项目

点击option for target,配置

弹出的窗口点击 debug,右边的 use 选择 ST-LINK Debugger,有可能弹出更新 ST-LINK 窗口,我直接点了更新了

在接好ST-LINK+单片机后,电脑插上ST-LINK,点击Settings

这个时候可以在右边看到 id

如果显示 No Target Connect 则检查线是否接对了,我刚开始没接对就出现了这样的问题

如果确认线接对了,可以尝试一直按下单片机上的 Reset 按钮,然后再点击 Setting 看看是否有连接


点击 Output,勾选 Create HEX File,这样就可以生成 hex 文件

点击 Manager Run-time

勾选 CMSIS 的 CORE 和 Device 的 StartUp

其余根据需要勾选


ST-LINK烧写

ST-LINK上的LED灯有几种颜色,分别代表

  • LED 闪烁红色:STLink 已经连接至计算机。
  • LED 保持红色:计算机已经成功与 STLink 建立通信连接。
  • LED 交替闪烁红色绿色/蓝色:数据正在传输。
  • LED 保持绿色/蓝色:最后一次通信是成功的。
  • LED 为橘黄色:最后一次通信失败。

新建一个文件为 Test.c,代码如下

当ST-LINK连接没问题时,我们可以先 build,然后再点 download,发现ST-LINK红灯和蓝灯闪烁了,看keil内日志,程序下载完成


点灯

我的板子上大概有两个 LED 灯,一个 PWR(电源灯,接通就亮红灯),电源对面的 PC13(板子上有标记)

网上找了个简单的方法,直接修改地址来点灯

LED正极已经接3.3V,因此只需要我们控制PC13输出0V(低电平),就可以点亮LED

代码如下

int main()

	*(unsigned int *)0x40021018 |=(1<<4);
	*(unsigned int *)0x40011004 &=~(1111<<(4*5));
	*(unsigned int *)0x40011004 |=(1<<(4*5));
	*(unsigned int *)0x4001100C &=~(1<<13);

将这段代码烧写进去,然后按下单片机上的Reset键(重启),就会发现灯已经亮了,我的是绿色的灯


点灯方法只适用于 STM32F103C6T6或 STM32F103C8T6,因为是直接通过寄存器点亮,其余型号单片机可能内存地址不一样,可自行百度

如果不同型号点灯可参考下一篇,通过GPIO点灯
下一篇:呼吸灯的实现

以上是关于最小系统板 STM32入门,点亮 LED 灯(STM32F103C6T6)的主要内容,如果未能解决你的问题,请参考以下文章

最小系统板 STM32入门,点亮 LED 灯(STM32F103C6T6)

stm32最小系统板的led怎么点亮

STM32学习笔记 一基于STM32F103C8T6最小系统板和STM32CubeMX实现板载LED灯循环闪烁

LED灯循环点亮(单灯低电平点亮)程序是啥?

最小系统板 STM32入门,呼吸灯实现(STM32F103C6T6)

最小系统板 STM32入门,呼吸灯实现(STM32F103C6T6)