当前位置: 首页 > article >正文

野火STM32F103VET6指南者开发板入门笔记:【1】点亮RGB

硬件介绍

提示:本文是基于野火STM32F103指南者开发板所写例程,其他开发板请自行移植到自己的工程项目当中即可。

RGB-LEDPin引脚:低电平-点亮,高电平-熄灭
REDPB5
GREENPB0
BLUEPB1

硬件原理图


文章目录

  • 硬件介绍
  • 软件介绍:结构体方式
  • 软件介绍:宏定义方式


软件介绍:结构体方式

bsp_rgb.h 文件下的代码如下(示例):

#ifndef __BSP_RGB_H
#define __BSP_RGB_H

#include "stm32f10x.h"
#include "stdint.h" 

//定义一个RGB_GPIO_TypeDef类型的结构体,为了方便移植修改,将需要经常修改的参数放到结构体当中
typedef struct 
{
	uint32_t 		RCC_APB2Periph;	//APB2总线时钟
	GPIO_TypeDef* 	GPIOx;			//GPIO_PORT
	uint16_t 		GPIO_Pin;		//GPIO_PIN
}RGB_GPIO_TypeDef;					

//定义一个结构体数组并对其进行初始化
static RGB_GPIO_TypeDef RGB_GPIO_List[]=
{
	{RCC_APB2Periph_GPIOB, GPIOB, GPIO_Pin_5},
	{RCC_APB2Periph_GPIOB, GPIOB, GPIO_Pin_0},
	{RCC_APB2Periph_GPIOB, GPIOB, GPIO_Pin_1},
};

//计算结构体数组中结构体的个数
#define RGB_NUM_MAX (sizeof(RGB_GPIO_List)/sizeof(RGB_GPIO_List[0])) 

typedef enum
{ 
  GPIO_RGB_RED = 0,
  GPIO_RGB_GREEN, 
  GPIO_RGB_BLUE
}RGB;

void RGB_Init(void);
void TurnOnLed(uint8_t LedNum);
void TurnOffLed(uint8_t LedNum);
void ToggleLed(uint8_t LedNum);

#endif /* __BSP_RGB_H */

bsp_rgb.c 文件下的代码如下(示例):

#include "bsp_rgb.h"

void RGB_Init(void)
{
	uint8_t i = 0;
	GPIO_InitTypeDef GPIO_InitStructure;
	
	for(i = 0;i < RGB_NUM_MAX;i++)
	{
		RCC_APB2PeriphClockCmd(RGB_GPIO_List[i].RCC_APB2Periph,ENABLE);
		
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
		GPIO_InitStructure.GPIO_Pin = RGB_GPIO_List[i].GPIO_Pin;
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
		
		GPIO_Init(RGB_GPIO_List[i].GPIOx, &GPIO_InitStructure);
		//初始化RGB上电状态,熄灭
		GPIO_SetBits(RGB_GPIO_List[i].GPIOx,RGB_GPIO_List[i].GPIO_Pin);
	}	
}

void TurnOnLed(uint8_t LedNum)
{
	if(LedNum >= RGB_NUM_MAX)
		return;
	else
		GPIO_ResetBits(RGB_GPIO_List[LedNum].GPIOx,RGB_GPIO_List[LedNum].GPIO_Pin);
}

void TurnOffLed(uint8_t LedNum)
{
	if(LedNum >= RGB_NUM_MAX)
		return;
	else
		GPIO_SetBits(RGB_GPIO_List[LedNum].GPIOx,RGB_GPIO_List[LedNum].GPIO_Pin);
}

void ToggleLed(uint8_t LedNum)
{
	if(LedNum >= RGB_NUM_MAX)
		return;
	else
	{
		if(GPIO_ReadOutputDataBit(RGB_GPIO_List[LedNum].GPIOx,RGB_GPIO_List[LedNum].GPIO_Pin) == 1)
			GPIO_ResetBits(RGB_GPIO_List[LedNum].GPIOx,RGB_GPIO_List[LedNum].GPIO_Pin);
		else
			GPIO_SetBits(RGB_GPIO_List[LedNum].GPIOx,RGB_GPIO_List[LedNum].GPIO_Pin);
	}	
}

软件介绍:宏定义方式

bsp_rgb.c 文件下的代码如下(示例):

ssl._create_default_https_context = ssl._create_unverified_context

http://www.kler.cn/news/329847.html

相关文章:

  • RabbitMQ 优点和缺点
  • 基于单片机跑步机控制系统设计
  • WPS在表格中填写材料时,内容过多导致表格不换页,其余内容无法正常显示 以及 内容过多,导致表格换页——解决方法
  • 网络协议的作用是什么
  • Anaconda 使用教程
  • 高中教辅汇总【35GB】
  • 数据可视化基础:让数据说话
  • 数电基础(组合逻辑电路+Proteus)
  • 【AI知识点】词嵌入(Word Embedding)
  • 03.04、化栈为队
  • 【JWT安全】portswigger JWT labs 全解
  • 《武汉大学学报(理学版)》
  • linux中bashrc和profile环境变量在Shell编程变量的传递作用
  • 腾讯云SDK产品功能
  • npm与包
  • 攻防世界---->SignIn
  • 51c自动驾驶~合集1
  • OpenGL笔记十九之相机系统
  • 【C#生态园】后端服务与网络库:选择适合你游戏开发的利器
  • Azure DevOps Server:不能指派新增的用户
  • 【Kubernetes】常见面试题汇总(四十三)
  • VSOMEIP代码阅读整理(1) - 网卡状态监听
  • OpenCV视频I/O(10)视频采集类VideoCapture之从视频流中检索一帧图像函数 retrieve()的使用
  • 如何使用 DomCrawler 进行复杂的网页数据抓取?
  • 正则表达式(补充)
  • 基于SSM+微信小程序的校园二手数码交易平台系统(二手3)(源码+sql脚本+视频导入教程+文档)
  • Windows 环境搭建 CUDA 和 cuDNN 详细教程
  • 大数据毕业设计选题推荐-重庆旅游景点数据分析系统-Python-Hive-Hadoop-Spark
  • Git 与 GUI 工具
  • STM32的ADC技术详解