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);
相关推荐
sanguine__7 分钟前
Web APIs学习 (操作DOM BOM)
学习
析木不会编程30 分钟前
【小白51单片机专用教程】protues仿真独立按键控制LED
单片机·嵌入式硬件·51单片机
数据的世界012 小时前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐2 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
枯无穷肉4 小时前
stm32制作CAN适配器4--WinUsb的使用
stm32·单片机·嵌入式硬件
OopspoO5 小时前
qcow2镜像大小压缩
学习·性能优化
不过四级不改名6775 小时前
基于HAL库的stm32的can收发实验
stm32·单片机·嵌入式硬件
嵌入式科普5 小时前
十一、从0开始卷出一个新项目之瑞萨RA6M5串口DTC接收不定长
c语言·stm32·cubeide·e2studio·ra6m5·dma接收不定长
嵌入式大圣5 小时前
单片机UDP数据透传
单片机·嵌入式硬件·udp
A懿轩A5 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列