最小系统板 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点灯
下一篇:呼吸灯的实现

STM32F103C8T6最小系统是一款常用的单片机开发,可以通过编程来控制上的LED点亮。下面是点亮LED的基本步骤: 1. 首先需要准备好开发环境,包括安装好Keil或者其他编译器以及相应的ST-link驱动程序。 2. 在编译器中创建一个新工程,选择STM32F103C8T6单片机型号,并添加LED点亮所需的库文件。 3. 在代码中引用库文件,并进行相应的初始化设置。例如,设置GPIO口为输出模式,初始化LED引脚为高电平(或低电平,根据具体接法而定)。 4. 在主函数中编写LED点亮代码,即将对应的GPIO口设置为低电平(或高电平)即可点亮LED。 下面是一个简单的例子代码,仅供参考: ``` #include "stm32f10x.h" //头文件 int main(void) { GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO结构体变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOB时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //设置GPIO口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置GPIO为推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置GPIO速度 GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIO while (1) //主循环 { GPIO_SetBits(GPIOB, GPIO_Pin_5); //点亮LED } } ``` 注意事项:以上代码中使用的是PB5引脚控制LED,具体控制哪个引脚需要根据自己的实际情况进行修改。另外,由于最小系统上可能存在其他外设使用了与LED相同的引脚,因此在编写代码前需要先了解清楚子上各个引脚的功能和使用情况。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HackShendi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值