当前位置: 首页 > 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

相关文章:

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

硬件介绍 提示&#xff1a;本文是基于野火STM32F103指南者开发板所写例程&#xff0c;其他开发板请自行移植到自己的工程项目当中即可。 RGB-LEDPin引脚&#xff1a;低电平-点亮&#xff0c;高电平-熄灭REDPB5GREENPB0BLUEPB1 文章目录 硬件介绍软件介绍&#xff1a;结构体方式…...

数据工程师岗位常见面试问题-3(附回答)

数据工程师已成为科技行业最重要的角色之一&#xff0c;是组织构建数据基础设施的骨干。随着企业越来越依赖数据驱动的决策&#xff0c;对成熟数据工程师的需求会不断上升。如果您正在准备数据工程师面试&#xff0c;那么应该掌握常见的数据工程师面试问题&#xff1a;包括工作…...

强大的JVM监控工具

介绍 在生产环境中&#xff0c;经常会遇到各种各样奇葩的性能问题&#xff0c;所以掌握最基本的JVM命令行监控工具还是很有必要的 名称主要作用jps查看正在运行的Java进程jstack打印线程快照jmap导出堆内存映像文件jstat查看jvm统计信息jinfo实时查看和修改jvm配置参数jhat用…...

python 实现点的多项式算法

点的多项式算法介绍 点的多项式算法通常指的是通过一组点&#xff08;即数据点&#xff0c;通常包括自变量和因变量的值&#xff09;来拟合一个多项式函数的方法。这种方法在数值分析、统计学、机器学习等领域中非常常见。下面是一些常见的多项式拟合算法&#xff1a; 1. 最小…...

Pikachu-暴力破解-验证码绕过(on client)

访问页面&#xff0c; 从burpsuite 上看到返回的源代码&#xff1b; 验证码生成时通过 createCode 方法生成&#xff0c;在前端页面生成&#xff1b; 同时也是在前端做的校验&#xff1b; 直接验证&#xff1b;F12 -- 网络&#xff0c;随便输入个账号、密码、验证码&#xff0…...

【Spring】Bean 的生命周期:从实例化到销毁

实例化阶段&#xff1a; Bean的实例化是通过反射创建的。Spring根据Component、Bean或者XML中的<bean>元素配置&#xff0c;来确定要创建的Bean。 属性赋值阶段&#xff1a; 实例化完成后&#xff0c;Spring会进行依赖注入。包括将属性值注入到Bean的字段中&#xff0c;…...

Ubuntu 安装RUST

官方给的是这样如下脚本 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh 太慢了 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh -x 执行这个脚本后会给出对应的下载链接 如下图 我直接给出来 大多数应该都是这个 https://static.rust-…...

Android Compose的基本使用

前言: Compose这个东西呢,好处我没发现,坏处就是学习成本和低版本兼容. 不过,看在官方力推的份儿上,有空就学一下吧. 当初的kotlin,很多人说鸡肋(包括我)!现在不也咔咔用纯kotlin做项目吗?哈哈哈哈. 未来的事情,谁说得清呢? 首先创建一个专用的Compose项目 对没错!看到E…...

计算机网络:计算机网络体系结构 —— 专用术语总结

文章目录 专用术语实体协议服务服务访问点 SAP 服务原语 SP 协议数据单元 PDU服务数据单元 SDU 专用术语 实体 实体是指任何可以发送或接收信息的硬件或软件进程 对等实体是指通信双方处于相同层次中的实体&#xff0c;如通信双方应用层的浏览器进程和 Web 服务器进程。 协…...

Rust的前端Tauri编程-基于JS框架的初步探索

上次的项目做完后&#xff0c;有一项遗憾&#xff0c;没有返回结果&#xff0c;而结果是一个html表格&#xff0c;我想用html直接在窗口显示&#xff0c;这时发现R里面包括slint没有很直接的方法&#xff0c;直接弹出浏览器有点太简单没有挑战。这是就被推送了他的竞争对手&…...

【Flume Kafaka实战】Using Kafka with Flume

一 目标 在Cloudera Manager中创建两个Flume的Agent&#xff0c;Agent1从local file中获取内容&#xff0c;写入到kafka的队列中。Agent2以Agent1的sink作为source&#xff0c;将数据从kafka中读取出来&#xff0c;写入到HDFS中。 二 实战 2.1 Kafka Sink 第一步&#xff0…...

5G NR物理信号

文章目录 NR 物理信号与LTE的区别上行参考信号DMRS (UL)SRSPT-RS(UL) 下行参考信号DMRS(DL)PT-RS(DL)CSI-RSPSSSSS NR 物理信号与LTE的区别 用SSS、CSI-RS和DMRS 取代了CRS信号。下行业务信道采用TM1波束赋形传输模式。基于SSB 或者CSI-RS进行RSRP和SINR测量。基于DMRS 进行共…...

Pikachu-Cross-Site Scripting-存储型xss

存储型xss &#xff0c;随便输入点内容&#xff0c;都能保存下来&#xff1b;刷新后也不会丢失&#xff1b;输入特殊字符&#xff0c;也能原样返回&#xff1b; 查看代码&#xff0c;也可以看到输出结果直接原路返回&#xff0c;不做处理 构造payload <script>alert(1)…...

媲美GPT-4o mini的小模型,Meta Llama 3.2模型全面解读!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…...

【leetcode】 45.跳跃游戏 ||

如果我们「贪心」地进行正向查找&#xff0c;每次找到可到达的最远位置&#xff0c;就可以在线性时间内得到最少的跳跃次数。 例如&#xff0c;对于数组 [2,3,1,2,4,2,3]&#xff0c;初始位置是下标 0&#xff0c;从下标 0 出发&#xff0c;最远可到达下标 2。下标 0 可到达的…...

coco(json)、yolo(txt)、voc(xml)标注格式的相互转换

一般都是用labeleme进行标注 标注格式都是json 然后根据不同的格式进行数据标注转换&#xff1a; 1.逐个json转xml: 当我们在使用数据集训练计算机视觉模型时&#xff0c;常常会遇到有的数据集只给了单个的json annotation文件&#xff0c;而模型所需要的annotation是基于每…...

以太网交换安全:端口安全

一、端口安全介绍 端口安全是一种网络设备防护措施&#xff0c;通过将接口学习到的动态MAC地址转换为安全MAC地址&#xff08;包括安全动态MAC和Sticky MAC&#xff09;&#xff0c;阻止除安全MAC和静态MAC之外的主机通过本接口和设备通信&#xff0c;从而增强设备的安全性。以…...

[题解] Codeforces Round 976 (Div. 2) A ~ E

A. Find Minimum Operations 签到. void solve() {int n, k;cin >> n >> k;if (k 1) {cout << n << endl;return;}int ans 0;while (n) {ans n % k;n / k;}cout << ans << endl; }B. Brightness Begins 打表发现, 翻转完后的序列为: 0…...

【零基础入门产品经理】学习准备篇 | 需要学一些什么呢?

前言&#xff1a; 零实习转行产品经理经验分享01-学习准备篇_哔哩哔哩_bilibili 该篇内容主要是对bilibili这个视频的观后笔记~谢谢美丽滴up主友情分享。 全文摘要&#xff1a;如何在0实习且没有任何产品相关经验下&#xff0c;如何上岸产品经理~ 目录 一、想清楚为什么…...

第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)征稿

第四届机器人、自动化与智能控制国际会议&#xff08;ICRAIC 2024&#xff09;由湖南第一师范学院主办&#xff0c;南京师范大学、山东女子学院、爱迩思出版社&#xff08;ELSP&#xff09;协办。 大会将专注于机器人、数字化、自动化、人工智能等技术的开发和融合&#xff0c…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...