很多初学者刚接触cubemx,以及stm32,对于这些东西都不了解,下面我将手把手教学点亮一个LED灯。
1.建立一个工程
打开软件点击New Project或者ACCESS TO MCU SELECTOR(如上如),有时候会更新一些固件包等待更新完成即可。
(1).在1.的位置搜索stm32f103c8t6,回车,下面有两个芯片选择,任选其中一个,两者的芯片核心规格完全一致,差异仅体现在包装方式上不同。
(2).推荐收藏自己经常使用的芯片即->2.的星星,在这个芯片的左边有个星星是收藏的意思,收藏完之后下次创建工程的时候就只用在输入上方点击星星就能获得之前自己收藏的芯片,不需要在次输入芯片。
(3).鼠标左键双击3.的芯片进入芯片配置界面(如下图)
2.开始配置RCC、SYS以及时钟树
配置RCC
点击如上图RCC(1的位置),在点击2的位置下拉选择Cystal/Ceramic Resonator,看到3位置有这两个引脚配置即可
配置SYS
点击如上图SYS(1的位置),在点击2的位置下拉选择Serial Wire,看到3位置有这两个引脚配置即可
配置时钟树
点击1的位置进入时钟树界面,在2的位置输入72,然后回车,stm32f103c8t6的时钟树就配置好了
弹出如图对话框,点击OK即可
配置成功(如上图所示)
3.硬件连接
LED长的引脚接到PA1,短的引脚接到负极,在用一根杜邦线将G和负极连接(不连接的话灯不能形成回路无法点亮) ,烧录器记得按照stm32的四个口对其ST-LINK四个口(一定不要将3.3V和GND接反)
4.LED灯引脚配置
如上图,左击PA1引脚选择GPIO_Output模式
点击1处GPIO,点击2处会在2下面弹出参数调整的界面(如下图)
GPIO output level 设为Low,GPIO mode配置为推挽输出
GPIO output level 指的是初始引脚电平为高还是低,根据我们的硬件连接,初始状态需要灯灭,所以需要将电平设Low(低电平)
5.生成keil初始化代码
点击1处,进入这个界面,在2中输入工程名字(不能有中文),生成路径(不能有中文),在3中选择MDK-ARM,在4中把勾去掉,Firmware Package Name and Version版本一般都不选择最新的,不然生可能会报错,推荐使用低一级的版本1.8.5。
点击1处,把2中的勾选择上,点击3即可生成keil代码
选择第一个,第一是打开文件夹,第二个是打开keil工程,第三个关闭。
6.创建存放自己工程封装函数的文件夹
打开文件夹,会有下面的一些东西
1中的MDK-ARM里面就是我们的keil工程,可以在里面打开我们的keil工程
2中的文件222.ioc是我们cubemx的配置
3是创建我们自己工程封装函数的文件夹
创建完文件夹之后,打开MDK-ARM文件夹,双击如上图的文件,打开keil工程
右键1处,点击2建立新的Group
建立成功后,更改其名字
如上图按顺序点击
按顺序点击
找到之前创建的文件夹,并选择这个文件夹(注意路径)
右键点击1,左键点击2
点击1,在2输入fun,3选择之前的bsp文件夹(路径一定要对)
h文件同理,.c和.h文件的名字要一样
编写.h文件
#ifndef __FUN_H
#define __FUN_H
#include "main.h"
void led_p(uint8_t mode);
#endif
编写.c文件
#include "fun.h"
void led_p(uint8_t mode)//LED封装函数 mode=0灯灭 mode=1灯亮
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);//将PA1输出低电平,灯熄灭
if(mode)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);//将PA1输出高电平,灯点亮
}
else
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);//将PA1输出低电平,灯熄灭
}
}
主函数main.c,添加头文件,主函数写代码写在BEGIN于END之间,否则重新生成keil时会被清除
在while循环里面添加这个
7.编译烧录
点击魔法棒进入这个界面,烧录器选择ST-Link Debugger ,之后点击3
如上图配置完,点击确定确定
点击1编译,看到2没有错误和警告,点击3进行烧录。
这样子我们就点亮了属于你的第一颗灯