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

news2024/12/23 9:53:55

硬件介绍

提示:本文是基于野火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.coloradmin.cn/o/2186291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三、数据链路层(上)

目录 3.1数据链路层概述 3.1.1术语 3.1.2功能 3.2封装成帧和透明传输 3.2.1封装成帧 ①字符计数法 ②字符&#xff08;节&#xff09;填充法 ③零比特填充法 ④违规编码法 3.2.2透明传输 3.2.3差错控制 差错原因 检错编码 奇偶校验 ☆循环冗余码CRC 例题 纠错…

社区医院疫苗接种预约小程序管理系统SpringBoot+vue

目录 一、项目概述 二、系统架构 1. 技术栈 2. 架构图 三、后端设计 1. 数据模型 2. API 设计 四、前端设计 五、功能实现 1. 用户登录注册 2. 接种建档 3. 疫苗展示 六、总结 一、项目概述 本项目旨在为社区医院提供一个高效便捷的疫苗接种预约管理系统。系统主要…

记一次vue路由跳转登陆之前的页面,参数丢失问题

一、背景 vue3.0&#xff0c;项目登陆之前访问某个可访问的页面&#xff0c;当跳转到需要登陆才能访问的页面时&#xff0c;跳转到登陆页面&#xff0c;登陆后再跳转到登陆之前需要登陆才能访问的页面&#xff0c;跳转时发现参数丢失了。 A页面&#xff08;无需登陆&#xff…

【零基础保姆级教程】MMDetection3安装与训练自己的数据集

最近在跑对比试验&#xff0c;由于MMDetection框架的算法较齐全&#xff0c;遂决定写一篇教程留做参考。若你对流程有问题与疑问欢迎评论区指出 本文运行环境如下供参考&#xff1a; python版本3.9MMDetection版本3.3 一、虚拟环境的搭建 参考该博客搭建基本环境&#xff1…

【开源免费】基于SpringBoot+Vue.JS水果购物网站(JAVA毕业设计)

本文项目编号 T 065 &#xff0c;文末自助获取源码 \color{red}{T065&#xff0c;文末自助获取源码} T065&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

从认识String类,到走进String类的世界

作为一个常用的数据类型&#xff0c;跟随小编一同进入String的学习吧&#xff0c;领略String的一些用法。 1. 认识 String 类 2. 了解 String 类的基本用法 3. 熟练掌握 String 类的常见操作 4. 认识字符串常量池 5. 认识 StringBuffer 和 StringBuilder 一&#xff1a;…

【吊打面试官系列-MySQL面试题】Mysql中的事务回滚机制概述?

大家好&#xff0c;我是锋哥。今天分享关于【Mysql中的事务回滚机制概述&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Mysql中的事务回滚机制概述&#xff1f; 事务是用户定义的一个数据库操作序列&#xff0c;这些操作要么全做要么全不做&#xff0c;是一个…

职称评审一次通过需要注意什么?

谁能想到 被评委会全票通过的职称材料 居然要注意这么多细节 营业执照需要加盖公章 论文需要拆分上传 业绩需要连续提供近几年的 奖项可以加分 一些表格有模板 所以职称评审做材料还是有很多方面需要好好注意一下的&#xff0c;建议还是找机构帮你代理整理&#xff0c;因…

如何使用ssm实现基于web的网站的设计与实现+vue

TOC ssm756基于web的网站的设计与实现vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范…

10. 模块

理想情况下&#xff0c;程序的结构清晰明了。它的运作方式易于解释&#xff0c;每个部分都发挥着明确的作用。 实际上&#xff0c;程序是有机生长的。当程序员发现新的需求时&#xff0c;就会添加新的功能。要使程序保持良好的结构&#xff0c;需要持续的关注和工作。这些工作只…

Linux ssh 免密登录配置

参考资料 ~/.ssh/configについて~/.ssh/configを使ってSSH接続を楽にする.ssh/configファイルでSSH接続を管理する 目录 一. 密钥生成1.1 生成工具1.1.1 OpenSSH1.1.2 Git 1.2 生成命令1.3 注意事项1.4 解决路径中的用户名乱码 二. 将公钥配置到目标服务&#xff0c;免密登录2…

Pycharm关于Interpreter问题:ModuleNotFoundError: No module named

PS&#xff1a;本来想写一个脚本&#xff0c;也好久没用python了&#xff0c;然后创建项目也不会了。 BG: 一直报错这个 ModuleNotFoundError: No module named 网上教程都试了&#xff0c;都不行&#xff0c;原因是在项目本身创建了一个环境&#xff0c;而不是&#xff0c;…

活动公司都是怎么去寻找客户的

活动公司都是怎么拓业务的&#xff1f;只有我靠缘分吗&#xff1f; 一直觉得这是一个很难的问题&#xff0c;毕竟活动都很低频&#xff0c;是不是都得先去交个朋。下面一些方法&#xff0c;说不定对你有用。 1、小红书推广、B站等自媒体平台; 2、抖音推广、百度推广等推广平台…

招联2025校招内推

【投递方式】 直接扫下方二维码&#xff0c;或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus&#xff0c;使用内推码 igcefb 投递&#xff09; 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

68.【C语言】动态内存管理(重点)(上)

本文为数据结构打下基础 备注:数据结构需要掌握指针,结构体和动态内存管理 目录 1.内存开辟的方式 2.malloc函数 cplusplus网翻译 提炼要点 操作内存空间 01.开辟内存空间成功 02.开辟内存空间失败 如果是x64debug环境下,可能会成功 1.内存开辟的方式 01.创建变量 in…

LabVIEW混合控制器质量检测

随着工业自动化水平的提高&#xff0c;对控制器的精度、稳定性、可靠性要求也在不断上升。特别是在工程机械、自动化生产、风力发电等领域&#xff0c;传统的质量检测方法已无法满足现代工业的高要求。因此&#xff0c;开发一套自动化、精确、可扩展的混合控制器质量检测平台成…

Web安全 - 阶段性总结回顾_风险评估

文章目录 OWASP 2023 TOP 10用户数据的威胁评估密码盗窃XSS 漏洞SQL 注入CSRF 漏洞 资产数据的威胁评估SSRF 漏洞反序列化漏洞插件漏洞后门 认证和授权的安全防护检测与过滤加强认证补丁管理 进一步防护手段最小权限原则WAFIDS 小结 OWASP 2023 TOP 10 OWASP Top 10 概述 OWASP…

类似 o1 的推理-Llama3.1-70b 提供支持的 g1 创建推理链

g1简介: g1 是一个利用 Llama 3.1 70b 模型在 Groq 硬件上实现类似 OpenAI o1 推理链能力的开源项目。它通过精心设计的提示策略来引导语言模型进行逐步推理&#xff0c;从而解决了传统语言模型在逻辑推理方面的不足。g1 项目的目标是探索如何利用提示策略来提高语言模型的推理…

InfoGAN:通过信息最大化生成对抗网络进行可解释的表示学习

系列文章目录 一 Conditional Generative Adversarial Nets 二 cGANs with Projection Discriminator 三 Conditional Image Synthesis with Auxiliary Classifier GANs 四 InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial…

python 棒棒糖图

结果&#xff1a; import matplotlib.pyplot as plt import matplotlib.ticker as ticker import numpy as npdef lolly_plot(x, y, color_lis, breaks, back_color,title, sub_title):# 获取每个点的颜色colors [assign_color(temperature, breaks, color_lis) for temperatu…