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

野火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_PORTuint16_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;elseGPIO_ResetBits(RGB_GPIO_List[LedNum].GPIOx,RGB_GPIO_List[LedNum].GPIO_Pin);
}void TurnOffLed(uint8_t LedNum)
{if(LedNum >= RGB_NUM_MAX)return;elseGPIO_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);elseGPIO_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.lryc.cn/news/451921.html

相关文章:

  • 数据工程师岗位常见面试问题-3(附回答)
  • 强大的JVM监控工具
  • python 实现点的多项式算法
  • Pikachu-暴力破解-验证码绕过(on client)
  • 【Spring】Bean 的生命周期:从实例化到销毁
  • Ubuntu 安装RUST
  • Android Compose的基本使用
  • 计算机网络:计算机网络体系结构 —— 专用术语总结
  • Rust的前端Tauri编程-基于JS框架的初步探索
  • 【Flume Kafaka实战】Using Kafka with Flume
  • 5G NR物理信号
  • Pikachu-Cross-Site Scripting-存储型xss
  • 媲美GPT-4o mini的小模型,Meta Llama 3.2模型全面解读!
  • 【leetcode】 45.跳跃游戏 ||
  • coco(json)、yolo(txt)、voc(xml)标注格式的相互转换
  • 以太网交换安全:端口安全
  • [题解] Codeforces Round 976 (Div. 2) A ~ E
  • 【零基础入门产品经理】学习准备篇 | 需要学一些什么呢?
  • 第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)征稿
  • [数据集][目标检测]电力场景防震锤缺陷检测数据集VOC+YOLO格式705张1类别
  • 【SpringBoot】
  • Linux操作系统中MongoDB
  • 2、.Net 前端框架:OpenAuth.Net - .Net宣传系列文章
  • unreal engine5制作动作类游戏时,我们使用刀剑等武器攻击怪物或敌方单位时,发现攻击特效、伤害等没有触发
  • 数据权限的设计与实现系列11——前端筛选器组件Everright-filter集成功能完善2
  • C++ 游戏开发
  • 【历年CSP-S复赛第一题】暴力解法与正解合集(2019-2022)
  • 基于PyQt5和SQLite的数据库操作程序
  • 在Ubuntu 20.04中安装CARLA
  • 【高中数学/对数/导数】曲线y=ln|x|过坐标原点的两切线方程为?