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);
相关推荐
代码总长两年半28 分钟前
STM32物联网项目---ESP8266微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制---代码篇(四)
stm32·单片机·物联网
@小红花32 分钟前
从0到1学习Vue框架Day03
前端·javascript·vue.js·学习·ecmascript
mysla1 小时前
嵌入式学习day45-硬件—汇编
汇编·学习
咕咚.萌西1 小时前
RISC-V体系架构
嵌入式硬件·架构·risc-v
玉~你还好吗1 小时前
【嵌入式电机控制#进阶10】参数辨识(一):电阻辨识
单片机·嵌入式硬件
猫头虎1 小时前
2025最新超详细FreeRTOS入门教程:第八章 FreeRTOS任务通知
stm32·单片机·嵌入式硬件·物联网·硬件架构·51单片机·硬件工程
学生董格1 小时前
[嵌入式embed]Keil5烧录后STM32不自动运行,复位才能运行
stm32·单片机·嵌入式硬件
永日456701 小时前
学习日记-HTML-day51-9.9
前端·学习·html
xy_recording2 小时前
Day20 K8S学习
学习·容器·kubernetes
Lynnxiaowen2 小时前
今天继续昨天的正则表达式进行学习
linux·运维·学习·正则表达式·云计算·bash