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);
相关推荐
寒月小酒9 小时前
第三章 索引构建(2-all -in-rag学习)
学习
天国梦9 小时前
中学生居家英语听力训练深度解析:从核心痛点到AI赋能的全链路方案
人工智能·学习
ACP广源盛139246256739 小时前
IX8024@ACP# 搭配此芯 AI 服务器 + 爱芯元智产品完整方案
大数据·运维·服务器·人工智能·分布式·嵌入式硬件
ShallWeL11 小时前
NVIDIA Jetson 早期系列演进
人工智能·嵌入式硬件·边缘计算·智能硬件
2401_8541515513 小时前
嵌入式 Bootloader 与 OTA 固件升级深度解析——从 Flash 分区到安全回滚
开发语言·stm32·单片机·嵌入式硬件·安全·php
胡渠洋13 小时前
postman学习
学习·测试工具·postman
Yunhoa14 小时前
51单片机(DS18B20 数字温度传感器)
单片机·嵌入式硬件·51单片机
Amazing_Cacao14 小时前
CFCA精品可可产区风土解析(美洲):无情打破风味堆叠假象,建立时间轴上的层次动态阅读系统
学习
六点_dn15 小时前
Linux学习笔记-shell运算符
linux·笔记·学习
其实防守也摸鱼15 小时前
渗透--损坏的对象级别鉴权漏洞(Broken Object Level Authorization, BOLA)
大数据·网络·数据库·学习·tcp/ip·安全·安全威胁分析