stm32-02-点灯

在这里插入图片描述
在这里插入图片描述

查看设备原理图

在这里插入图片描述

在这里插入图片描述
知识点:
1,电流由电压高的流向电压低的
2,二级管单向导电性
3,串联电路,电流处处相等
4,并联电路,各支路两端的电压相等
5,串联电阻分压,并联电阻分流

关于GPIO输入输出的解释:
https://blog.csdn.net/helaisun/article/details/90738803

得到的信息
GPIOB5(控制红灯)
GPIOB0(控制绿灯)
GPIOB1(控制红灯)

开始点灯

编程要点

  1. 使能 GPIO端口时钟;
  2. 初始化 GPIO目标引脚为推挽输出模式;
  3. 编写简单测试程序,控制 GPIO引脚输出高、低电平。

1,创建名为led的文件夹,创建如下文件
在这里插入图片描述
2,在User下添加bsp_led.c文件
在这里插入图片描述
3,在工具哪里把包含bsp_led.c头文件的文件夹包含进去
在这里插入图片描述
4,点击编译文件产生编译文件过后的工程文件(这一步不一定对看着来)
在这里插入图片描述
5,编写bsp_led.h文件和bsp_led.c(这两个文件互相成就着来写)

bsp_led.h

#ifndef __BSP_LED_H
#define __BSP_LED_H

#include "stm32f10x.h"


#define LED_G_GPIO_PIN        GPIO_Pin_0
#define LED_G_GPIO_PORT       GPIOB
#define LED_G_GPIO_CLK        RCC_APB2Periph_GPIOB
															

void LED_GPIO_Config(void);

#endif /* __BSP_LED_H */

bsp_led.c

// bsp 板级支持包

# include "bsp_led.h"

void LED_GPIO_Config(void){

	GPIO_InitTypeDef  GPIO_InitStruct;
	RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK,ENABLE);
	
	GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
	GPIO_Init(LED_G_GPIO_PORT,&GPIO_InitStruct);
	
}

关于.h的

其中为了方便进行常采用固定的格式防止重复的引用

#ifndef __BSP_LED_H
#define __BSP_LED_H
......

#endif /* __BSP_LED_H */

宏定义名:LED_G_GPIO_PIN
GPIO_Pin_0是来自stm32f10x.hstm32f10x_gpio.h的宏定义名

#include "stm32f10x.h"
#define LED_G_GPIO_PIN        GPIO_Pin_0

在这里插入图片描述

关于.c的
定义结构体GPIO_InitStruct

GPIO_InitTypeDef  GPIO_InitStruct;

在这里插入图片描述
使能 GPIO端口时钟
bsp_led.c

RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK,ENABLE);

bsp_led.h

#define LED_G_GPIO_CLK        RCC_APB2Periph_GPIOB

在这里插入图片描述
初始化 GPIO目标引脚为推挽输出模式
bsp_led.c

GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(LED_G_GPIO_PORT,&GPIO_InitStruct);

bsp_led.h

#define LED_G_GPIO_PIN        GPIO_Pin_0

编写简单测试程序,控制 GPIO引脚输出高、低电平
main.c

#include "stm32f10x.h"
#include "bsp_led.h"


void Delay(uint32_t count){
	for(;count!=0;count--);

}

int main(void){
	LED_GPIO_Config();
	while(1){
		GPIO_SetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);
		Delay(0xffffff);
		GPIO_ResetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);
		Delay(0xffffff);
	}
	
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值