您的位置:首页 > 编程语言

用LED熟悉stm32代码编写

2020-03-28 20:05 633 查看

STM32新手LED

刚刚接触STM32时,都会比较懵逼,不要慌,静下心去想,不要只看不动手敲。这里的“敲”不是手打,在对应的.h文件中找到要使用的函数(一般在文件最后),学会技巧go to definition of 'xxxx’找到函数主体,选择需要的参数。

编写led.c

首先添加对应.h文件

led初始化

1.开启时钟
mini板上的两个灯的引脚为PA8(一般为红色),PD2(一般为黄色),所以我们要开启高速挂载线APB2上的GPIOA和GPIOD的时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE);

在stm32f10x_rcc.h的最后声明
2.在led.c中对led灯的引脚进行初始化
建立一个结构体变量GPIO_InitTypeDef GPIO_InitStructure;
点击右键,查看需要配置的变量。
可以看到,我们需要配置引脚号,速度,模式。
往上拉,我们就能看见引脚,速度,模式中我们可以选择的内容,根据需求选择。
如图,将PA8和PD2配置完毕。
led初始化结束

编写其他函数

如果你是从一个空文件开始编写,可以自己写一个延时函数,或者添加delay.h头文件,直接调用库里面的延时函数。建议调用库函数
图中是自定义延时函数

编写led.h

条件编译

添加用到的.h文件

我一般只添加#include “sys.h”

宏定义

对要使用的宏进行定义
例如

声明.c文件中的函数


声明结束以后,结束条件编译。如果不懂条件编译的作用,可以百度。

编写main.c

添加使用到的.h文件

#include "led.h"
#include "delay.h"
#include "sys.h"

调用初始化函数

delay_init();
LED_Init();

这里的LED初始化不能少,调用delay初始化是因为后面会利用延时来控制灯亮与灭的时间差

写一个死循环,在不断电的情况下一直运行

while(1)
{
//GPIO_SetBits(GPIOA,GPIO_Pin_8);
//GPIO_ResetBits(GPIOD,GPIO_Pin_2);
LED0=1;
LED1=0;
Delay(10000000);
//delay_ms(1000);

//GPIO_SetBits(GPIOD,GPIO_Pin_2);
//GPIO_ResetBits(GPIOA,GPIO_Pin_8);
LED0=0;
LED1=1;
Delay(10000000);
//delay_ms(1000);
}

在这里,LED0=1等价于GPIO_SetBits(GPIOA,GPIO_Pin_8),LED=0等价于GPIO_ResetBits(GPIOA,GPIO_Pin_8)。注意,如果你使用LED0,LED1,记得在led.h里宏定义。
Delay(xxxx)是我的自定义函数,如果要在这里使用,也需要在led.h里面声明。delay_ms(xxxx)是delay.h中已有的函数,使用较方便,建议用这个函数进行延时。

仿真波形


该波形为延时为1s的流水灯波形。如果你也想仿真,可以百度,不难。

第一次写博客,有不对的地方,大家可以提出来。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
qq_43813269 发布了1 篇原创文章 · 获赞 0 · 访问量 15 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: