使用Keil MDK编译STM32简单程序实现LED灯点亮
STM32F103C8T6实现LED点亮
文章目录
前言
记录第一次点亮LED灯!
一、使用工具
1.LED发光二极管
2.面包板
3.杜邦线
4.STM32F103C8T6单片机
5.USB转TTL USB转串口下载线CH340模块
二、安装
B站参考视频
设备安装(STM32F103C8T6点亮一个LED)
安装完后的样图:

三、Keil MDK创建项目
1.新建项目

2.新建文件夹
建一个文件夹(这里我取名为入门点亮LED灯)

新建工程名Project

3.配置
选择芯片STM32F103C8

点击ok,进入主界面,弹出的窗口叉掉

进入项目文件夹,新建三个文件夹Start ,Library 和User

去官网找到固件库文件或者去csdn搜索一下,有教程,复制粘贴到文件夹下
Start

Library

User

回到keil,点击三个箱子的工程文件管理按钮

把默认的组叉掉

点按钮新建三个组,就是上面的文件夹名字

(1)Start
选中Start,在右边点击Add Files添加文件,打开Start文件夹,文件类型选中所有文件,首先添加后缀为md的启动文件



然后按住Ctrl,将其他的.c和.h文件都选中,添加进去

最后如图

(2)Library
同样选择Library,打开Library文件夹,文件类型选中所有文件,全选,添加

(2)User
同Library一样,全选,添加

最后点击ok,这样工程里的组和文件都添加好了
点击魔术棒按钮,打开工程选项,选择C/C++


在include Paths栏,点击后面的三个点,把我们自己创建的文件夹路径都添加进来,然后ok

在Define栏上,写上USE_STDPERIPH_DRIVER

在output中勾上Create HEX File,点击ok,这样,项目工程就配置好了

4.测试代码
在main.c中写代码,先进行编译调试
调试代码如下(示例):
#include "stm32f10x.h" // Device header
int main(void)
{
while(1)
{
}
}
编译测试

没有错误,说明可以正常运行和写代码

5.点亮LED的代码
代码如下(示例):
#include "stm32f10x.h" // Device header
void LED_config(void)
{
GPIO_InitTypeDef LED1;
//定义一个名为:LED1的结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
//使能GPIOB时钟
//配置GPIOB的工作模式并初始化
LED1.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
LED1.GPIO_Pin = GPIO_Pin_12;//引脚12
LED1.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOB,&LED1);
}
int main(void)
{
LED_config();
GPIO_SetBits(GPIOB,GPIO_Pin_12);//置1
GPIO_ResetBits(GPIOB,GPIO_Pin_12);//置0
while(1);
}
编译一下,没有错误

四、使用mcuisp下载
先打开mcuisp,点击上方的搜索串口,有提示表明下载成功

选择编译生成的hex文件

选择DTR的低电平复位,RTS的高电平进BootLoader后,点击开始编程,写入成功!

LED灯成功点亮!

五、总结
第一次点亮LED灯的过程很不容易,中间不管是软件还是实践,均出现了一些细节方面的错误,让我意识到了,硬件这部分需要我们要有足够的耐心和细心,同时要善于查阅资料,有许多不懂的bug或者不懂的连线都可以在网上搜到别人大佬的细心解答。
参考资料
https://blog.csdn.net/ssj925319/article/details/108919862
STM32入门教程-2023持续更新中