步骤1:在SYSTEM创建相应的外设文件夹以及对应的.c/.h源文件(具体可参考之前写的创建基本工程文件)
基于STM32官方库如何独立创建一个标准的STM32F103X的标准工程文件_是浩吉呀哈的博客-CSDN博客
步骤2:将对应的源文件加入工程中
步骤3:查看硬件连接情况,在我使用的单片机中红灯是作为电源指示灯的功能,所以通电就会亮。插件式
和贴片式
两种,(本文采用的是贴片式)插件式元件有较长的引脚,需要穿过PCB板,所以必须开孔才能焊接,如常见的Lamp、食人鱼等;
LED的工作条件就是在灯的两边产生电势差;从下面电路图可以看出所有灯的一端在单片机上接着一个VCC(电源正极、高电平),所以我们要想点亮它,就必须在灯的另外一端接地(低电压、零伏)。所以我们只需要把PB6、PB7、PB8、PB9这几个端口统一下拉(给低电平)。
![](https://img-blog.csdnimg.cn/07b8b4fb46b9408eb91165172f285cdf.png)
步骤4:打开相应的(你当前用到的外设)外设时钟,因为我们使用到的端口是PB6、PB7、PB8、PB9,所以我们需要在STM32中文参考手册找到连接的外设GPIOB口(以下是STM32中文参考手册下载链接,需要的可以自行下载)
百度网盘链接:https://pan.baidu.com/s/1TB299-w3ECbpDKoWthHWlw?pwd=hj66
提取码:hj66
这是配置总路线:
![](https://img-blog.csdnimg.cn/ed8a66223b684eec9896a2e2c905bdf2.png)
首先我们需要写的是GPIO的输出初始化程序:
1)首先我们需要做的是选定GPIO后,看需要配置的时钟线是哪一个(时钟在32中的作用可以想象成心脏,没有心脏所有程序都会运行失败),然后把相应的时钟打开
![](https://img-blog.csdnimg.cn/a14fe458e49b480a88c8be236805566c.png)
![](https://img-blog.csdnimg.cn/f5db8a12e9bf45efadd5406644081ce4.png)
0x40021018是基地址,并不是APB2 外设时钟使能寄存器(RCC_APB2ENR)的地址,还需要加上他的偏移地址。0x40021018=0x4002100+0x18;
![](https://img-blog.csdnimg.cn/b882d9def5f543d6a808b8513a3ce597.png)
2)选定GPIO(具体),这里我们选定的是GPIOB,记住它的地址。
![](https://img-blog.csdnimg.cn/3b4469e8945b4ce4a6df23341753d5ed.png)
此时,我们需要配置IO口的输出模式(寄存器GPIO_CRL和寄存器GPIO_CRH),此时因为我们测试就点亮PB6、PB7这两个端口的灯(端口0-7配置在寄存器GPIO_CRL,端口8-15在寄存器GPIO_CRH)所以,我们需要把六号和七号配置成通用推挽输出模式。
![](https://img-blog.csdnimg.cn/c3635b8f00c84c42a0ccd6f60040ddbd.png)
![](https://img-blog.csdnimg.cn/3095e45fc19743ecb454f9e4f88a5d5c.png)
![](https://img-blog.csdnimg.cn/f4757135089e4d46b36745ef9e64217c.png)
3)控制GPIO输出高低电平(寄存器GPIO_ODR)
因为32的端口配置完之后默认的是低电平,所以LED一来就就会被点亮,这个时候我们需要将整个端口上拉!
![](https://img-blog.csdnimg.cn/a68ad3080d3a464b9575d70d526a55db.png)
![](https://img-blog.csdnimg.cn/ab3ea92068f9413f824ca74f27bc529d.png)
那么,到这我们的LED灯初始化就已经完成!
步骤5:将LED灯进行宏定义,在主函数中方便调用。
![](https://img-blog.csdnimg.cn/78978bbaab564fd999c83b9e474139da.png)
步骤5:在主函数中调用。
![](https://img-blog.csdnimg.cn/5601212c43e2490792e7f88d2bf52b83.png)
主函数中调用的是毫秒级延时函数,具体代码如下
今天笔记分享到这,希望能够得到大家的指正!!谢谢!