STM32完全学习——使用标准库点亮LED

一、使用标准库建立工程

(1)首先我们在ST的网站上面,下载标准库

(2)将标准外设库加入到项目中

我们一般只会使用到红色标注的那个文件夹,我们一般也只会将这个文件夹导入到工程里面,其他的还有一些例子什么的,它里面提供了一个示例工程,我们按照那个建立就可以了。我这里主要是自己手动进行工程的创建。

首先我们找到一个文件夹,然后在里面创建下面的文件夹,你学会之后也可以自己改变,想怎么搞就怎么搞。这里的做法都不是唯一的。

然后我们来看每个文件夹里面都放了什么,首先我们来看CMSIS文件夹。

这个文件夹其实就是标准库里面直接复制过来的,下面是他在标准库里面的位置

下面我们来看Listing文件夹,这个里面没啥,主要是编译的过程中生成的,一会创建好工程之后,在添加到工程里面就行。我们再来看Project文件夹,这个里面就是存放的我们的工程文件,下面来看STM32F10x_StdPeriph_Driver这个文件夹,它里面就是将标准库下面这两个文件夹复制到里面就可以了。

最后我们来看User文件夹,这个里面主要是放一些我们自己创建的C文件和H文件还有就是main函数。最后我们还需要注意的是有这些还不够,我们需要在ST官方给的示例代码里面再将下面这几个文件添加到里面。就是前面3个没有最后一个,因为最后一个我们前面已经添加过了。这3个文件你可以随便放,放到CMIS也可以看你怎么划分。

然后我们们创建工程,将工程创建到我们刚才建立的Project这个文件夹里面。然后依次选择我们的芯片,和起始文件。然后点击小方块,就会弹出下面的窗口。然后将我们刚才的文件都添加到里面去。

然后在点击下面的魔法棒,就会弹出下面的窗口,然后选择我们创建的Listing文件夹

接下来在选择下面的窗口

define里面是需要预先定义的宏,然后Include Paths里面是.h文件所在的文件夹,把所有包含.h的文件夹包含进来就行。main.c里面写下面的代码就行,然后就可以进行编译了。

cpp 复制代码
#include "stm32f10x.h"

int main(void)
{
    return 0;
}

二、GPIO初始化

我们直接调用库函数就可以完成GPIO的初始化。代码如下

cpp 复制代码
GPIO_InitTypeDef *GPIO_InitStruct = (GPIO_InitTypeDef *)malloc(sizeof(GPIO_InitTypeDef));
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStruct->GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStruct->GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct->GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, GPIO_InitStruct);

需要注意的是也可以有下面的写法,都可以。

cpp 复制代码
GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;  //选择你要设置的IO口
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;	 //设置推挽输出模式
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;	  //设置传输速率
GPIO_Init(GPIOA,&GPIO_InitStructure); 	   /* 初始化GPIO */

需要注意的是前一个需要分配内存,不然程序没法运行。

三、点亮LED

如果你的LED是负极连在GPIO的端口上面,那么只需要下面的代码就可完成。

cpp 复制代码
GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);

反之则使用下面的代码:

cpp 复制代码
PIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);
相关推荐
小脑斧爱吃鱼鱼1 小时前
鸿蒙项目笔记(1)
笔记·学习·harmonyos
阿linlin1 小时前
OpenCV--图像预处理学习01
opencv·学习·计算机视觉
可待电子单片机设计定制(论文)2 小时前
【STM32设计】数控直流稳压电源的设计与实现(实物+资料+论文)
stm32·嵌入式硬件·mongodb
张张张3122 小时前
4.2学习总结 Java:list系列集合
java·学习
SuperW2 小时前
linux课程学习二——缓存
学习
小麦嵌入式3 小时前
Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
linux·c语言·驱动开发·stm32·嵌入式硬件·物联网·ubuntu
杉之3 小时前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
触角010100014 小时前
STM32F103低功耗模式深度解析:从理论到应用实践(上) | 零基础入门STM32第九十二步
驱动开发·stm32·单片机·嵌入式硬件·物联网
昊虹AI笔记5 小时前
使用STM32CubeMX和Keil在STM32上创建并运行一个简单的FreeRTOS多任务程序
stm32·单片机·嵌入式硬件
王光环5 小时前
单片机使用printf,不用微库
单片机·嵌入式硬件