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

嵌入式蓝桥杯学习1 电量LED

  cubemx配置

1.新建一个STM32G431RBT6文件

2.在System-Core中点击SYS,找到Debug(设置为Serial Wire)

3.在System-Core中点击RCC,找到High Speed Clock(设置为Crystal/Ceramic Resonator)

4.打开Clock Configuration (时钟树配置),将左侧的Input frequency改为24(要将PLL改为HSE才能改),将HCLK(MHz)设置为80,设置完后按回车会自动配置时钟树。

上述为系统内部配置,下面配置使用到的GPIO引脚。

LED使用的引脚为PC8-PC15.

1.将PC8-PC15的引脚都设置为GPIO_Output。

2.将PD2设置为GPIO_Output。

在System-Core中点击GPIO,将PC8-PB15全选中,对输出选项进行配置。

GPIO output level (初始电平) :High(初始化为高电平,使所有LED熄灭)

GPIO mode(输出模式):Output Push Pull (选择推挽输出)、

GPIO Pull-up/Pull-down(上拉/下拉):No pull-up and no pull-down(不需要上下拉)

Maximum output speed(速度):Low(低速节能,PC14和PC15只能选择低速)

点击Project Manager

1.Project name(文件名)(不要有中文)

2.Project Location (文件路径):选择没有中文路径的。

3.Toolchain /IDE:MDK-ARM

点击Code Generator ,在STM32Cube MCU packages and enbedded software packs中选择Copy only the necessary library files (复制必要的库文件,可以大幅度减少工程体积);勾选Generated files 中的Generated peripheral initialization as a pair of '.c/.h' files per peripheral.

点击GENERATE CODE.         

配置keli

(先编译一下,看看有没有报错,没报错再接着往下走)

在工程目录下新建一个文件夹(bsp)

在bsp中新建my_main.h、my_main.c

新建一个组命名为bsp,把新建好的文件添加进行。

点击魔术棒,C/C++——Include Path——添加bsp的路径

点击Debug,改为DAP调试器。

点击setting,在Flash download里面勾选Reset and Run。

代码编写

知识补充

PD2 : 74HC573的LE(PD2)端为1时,Q端随D端变化;LE端为0时,Q端不随D端变化

GPIO输出函数:

void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin,GPIO_PinState PinState);

void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

参数说明:

GPIOx:GPIO名称,取值是GPIOA~GPIOG

GPIO_Pin:GPIO引脚,取值是GPIO_PIN_0 ~ GPIO_PIN_15

GPIO_PIN_All <-l小写

PinState:GPIO引脚状态,取值是GPIO_PIN_RESET或GPIO_PIN_SET

在main.c中添加以下内容

1.在25行添加include“my_main.h”

2.在89行添加setup()

3.while(1)内添加loop()

my_main.h

#ifndef _MY_MAIN_
#define _MY_MAIN_
#include "gpio.h"
#include "main.h"
void setup(void);
void loop(void);
void LED_Disp(uint8_t dsLED);
#endif

my_main.c

#include "my_main.h"
//LED引脚: PC8 - PC15//uint8_t led_sta=0x10;
uint8_t led_sta=0x01;
/*
电量LED:1.把PC0-PC15置为高电平2.原地址在0-7,左移8位送入8-1515 14 13 12 11 10 9 8 7 6 5 4 3 2 1 03.开关锁存器(PD2)1:熄灭 0:点亮
*/
void LED_Disp(uint8_t dsLED)
{HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);//所有LED熄灭(l小写)HAL_GPIO_WritePin(GPIOC,dsLED<<8,GPIO_PIN_RESET);//左移8位:控制C8-C15引脚,值为1的电量HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);//开锁存器HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);//关锁存器
}//单独控制LED某一位
void LED_chg(uint8_t num,uint8_t sta)
{
//	uint8_t pos=0x01;
//	pos=pos<<(num-1);
//	if(sta==1) led_sta=(led_sta&(~pos))|pos;
//	else led_sta=(led_sta&(~pos));
//	LED_Disp(led_sta);uint8_t pos=0x01<<(num-1);led_sta=(led_sta&(~pos))|(pos*sta);LED_Disp(led_sta);
}//程序开始时执行一次
void setup()
{LED_Disp(0x00);
//	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
//	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,GPIO_PIN_RESET);
}
//反复执行
void loop()
{
//LED闪烁0.0
//	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,GPIO_PIN_RESET);
//	HAL_Delay(1000);
//	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,GPIO_PIN_SET);
//	HAL_Delay(1000);//LED闪烁1.0
//	HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_8);
//	HAL_Delay(500);
//LED闪烁2.0	
//	LED_Disp(0x02);
//	HAL_Delay(500);
//	LED_Disp(0x00);
//	HAL_Delay(500);//LED闪烁4.0
//	led_sta=(led_sta&0xfe)|0x01;
//	//0001 0000  led_sta
//	//1111 1110  0xfe
//	//0001 0000  作用:最后一位清零 XXXX XXX0
//	//0000 0001  0x01
//	//0001 0001 led_sta
//	LED_Disp(led_sta);
//	HAL_Delay(500);
//	led_sta=(led_sta&0xfe)|0x00;
//	//0001 0001 led_sta
//	//1111 1110 0xfe
//	//0001 0000 
//	//0000 0000
//	//0001 0000
//	LED_Disp(led_sta);
//	HAL_Delay(500);//LED交替点亮
//    for(int i=0;i<10;i++)
//	{
//		led_sta=(led_sta&0xfe)|0x01;
//		led_sta=(led_sta&0xfd)|0x00;
//		LED_Disp(led_sta);
//		HAL_Delay(100);
//	}
//	for(int i=0;i<10;i++)
//	{
//		led_sta=(led_sta&0xfd)|0x02;
//		led_sta=(led_sta&0xfe)|0x00;
//		LED_Disp(led_sta);
//		HAL_Delay(100);
//	}//流水灯 1.0
//	for(int i=0;i<8;i++)
//	{
//		LED_Disp(0x01<<i);
//		HAL_Delay(400);
//	}
//	for(int i=1;i<7;i++)
//	{
//		LED_Disp(0x80>>i);
//		HAL_Delay(400);
//	}//流水灯 2.0
//	for(int i=0;i<8;i++)
//	{
//		led_sta=(led_sta&0x00)|(0x01<<i);
//		LED_Disp(led_sta);
//		HAL_Delay(700);
//	}LED_chg(2,1);HAL_Delay(500);LED_chg(2,0);HAL_Delay(500);
}/*
与&:全1为1。
或|:有1则1。
<<:左移。*/

相关文章:

嵌入式蓝桥杯学习1 电量LED

cubemx配置 1.新建一个STM32G431RBT6文件 2.在System-Core中点击SYS&#xff0c;找到Debug&#xff08;设置为Serial Wire&#xff09; 3.在System-Core中点击RCC&#xff0c;找到High Speed Clock(设置为Crystal/Ceramic Resonator) 4.打开Clock Configuration &#xff0…...

bsmap输出结果解释

关于, , -, --的解释 对应着参考基因组的正链&#xff08;有义链&#xff0c;非模板链&#xff0c;即hg38的序列&#xff0c;watson链&#xff09;&#xff1b; -代表正链的互补链&#xff08;正常情况下正链的互补链是负链&#xff0c;但在重硫酸盐处理后正链和负链并不互补…...

【java-数据结构篇】揭秘 Java LinkedList:链表数据结构的 Java 实现原理与核心概念

我的个人主页 我的专栏&#xff1a;Java-数据结构&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 目录 1. Java LinkedList 基础 1.1 LinkedList 简介 1.2 LinkedList 的实现原理 1.3 LinkedList 与 ArrayList 的区别 2. 链表基础 2.1 链…...

macOS运行amd64的镜像

在macOS上运行amd64&#xff08;x86_64&#xff09;架构的镜像&#xff0c;通常通过虚拟化或仿真工具来实现。例如&#xff0c;如果你使用的是基于Apple Silicon&#xff08;M1或M2等&#xff09;芯片的Mac&#xff0c;那么你的处理器是ARM架构的&#xff0c;而amd64是x86架构&…...

轻量的基于图结构的RAG方案LightRAG

LightRAG出自2024年10月的论文《LIGHTRAG: SIMPLE AND FASTRETRIEVAL-AUGMENTED GENERATION》(github)&#xff0c;也是使用图结构来索引和搜索相关文本。 LightRAG作者认为已有的RAG系统有如下两个限制&#xff0c;导致难以回答类似"How does the rise of electric vehi…...

计算机的错误计算(一百七十三)

摘要 给定多项式 在 MATLAB 中计算 的值。输出是错误结果。 例1. 已知 计算 直接贴图吧&#xff1a; 这样&#xff0c;MATLAB 输出了错误结果。因为准确值为 0.2401e-16 . 注&#xff1a;可参看计算机的错误计算&#xff08;六&#xff09;。...

【力扣】—— 二叉树的前序遍历、字典序最小回文串

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;数据结构 &#x1f4da;本系列文章为个人学…...

linux替换更高版本gcc

实际使用时对与gcc版本有很多要求, 需要在centos上安装更高版本的gcc 1、安装centos-release-scl sudo yum install centos-release-scl2、安装devtoolset&#xff0c;注意&#xff0c;如果想安装7.版本的&#xff0c;就改成devtoolset-7-gcc&#xff0c;以此类推 sudo yum …...

在Java中使用Apache POI导入导出Excel(六)

本文将继续介绍POI的使用&#xff0c;上接在Java中使用Apache POI导入导出Excel&#xff08;五&#xff09; 使用Apache POI组件操作Excel&#xff08;六&#xff09; 43、隐藏和取消隐藏行 使用 Excel&#xff0c;可以通过选择该行&#xff08;或行&#xff09;来隐藏工作表…...

`uni.setClipboardData` 是 uni-app 提供的一个 API 设置系统剪贴板的内容

uni.setClipboardData是uni-app提供的一个API&#xff0c;用于设置系统剪贴板的内容。 使用说明&#xff1a; 使用此API可以将指定的文本内容复制到系统剪贴板&#xff0c;使用户能够在其他应用或页面中粘贴这些内容。 uni.setClipboardData({data: , // 需要复制的内容 suc…...

【大模型微调】pdf转markdown

目前市面上大部分都是pdf文档,要想转换成能训练的文本,调研了各种工具。 觉得MinerU确实不错。 参考此链接进行操作 MinerU/docs/README_Ubuntu_CUDA_Acceleration_en_US.md at master opendatalab/MinerU GitHub 需要注意的几个点: 1. 使用root账户安装的,配置文件在…...

Vue 3 结合 TypeScript基本使用

Vue 3 结合 TypeScript 使用可以提供更加强大的类型检查和开发体验。以下是一些基本的步骤来开始使用 Vue 3 和 TypeScript&#xff1a; 1. 创建项目 你可以使用 Vue CLI 来快速创建一个支持 TypeScript 的 Vue 项目。首先确保你已经安装了 Node.js 和 npm。然后全局安装或更…...

Trotter steps的复杂性分析

总结 • 我们开发了使用汉密尔顿系数结构执行 Trotter 步骤的递归方法&#xff0c;超越了顺序方法。 • #Gate/Step 在汉密尔顿项数上是次线性的&#xff0c;而 #Step 仍然保持交换子缩放。 • 新结果给出了实空间中第二量化电子结构汉密尔顿的最快量子模拟。对第一量化量子模…...

mean,median,mode,var,std,min,max函数

剩余的函数都放在这篇里面吧 m e a n mean mean函数可以求平均值 a a a为向量时&#xff0c; m e a n ( a ) mean(a) mean(a)求向量中元素的平均值 a a a为矩阵时&#xff0c; m e a n ( a , 1 ) mean(a,1) mean(a,1)求矩阵中各列元素的平均值&#xff1b; m e a n ( a , 2 )…...

JavaScript实现tab栏切换

JavaScript实现tab栏切换 代码功能概述 这段代码实现了一个简单的选项卡&#xff08;Tab&#xff09;切换功能。它通过操作 HTML 元素的类名&#xff08;class&#xff09;来控制哪些选项卡&#xff08;Tab&#xff09;和对应的内容板块显示&#xff0c;哪些隐藏。基本思路是先…...

精确电压输出,家电和工业设备的完美选择,宽输入电压线性稳压器

WD5201线性稳压器的核心内容概述&#xff1a; 主要特点 • 高精度输出电压&#xff1a;2%精度。 • 输出电压可调&#xff1a;支持5V、3.3V、2.7V三档输出。 • 优化控制方式&#xff1a;提升效率。 • 宽输入电压范围&#xff1a;80305VAC。 • 无需功率电感和输入高压电…...

深入理解定时器:优先队列与时间轮实现

文章目录 1. 线程池概述线程池的基本特点&#xff1a; 2. 使用线程池的优先队列定时器实现2.1 优先队列定时器实现2.2 解释&#xff1a; 3. 使用时间轮的线程池定时器实现3.1 时间轮定时器实现 4. 总结 在定时器设计中&#xff0c;使用线程池来执行定时任务可以有效提高程序的性…...

autogen-agentchat 0.4.0.dev8版本的安装

1. 安装命令 pip install autogen-agentchat0.4.0.dev8 autogen-ext[openai]0.4.0.dev82. 版本检查 import autogen_agentchat print(autogen_agentchat.__version__)0.4.0.dev8import autogen_ext print(autogen_ext.__version__)0.4.0.dev83. 第一个案例 使用 autogen-age…...

JAVA |日常开发中读写XML详解

JAVA &#xff5c;日常开发中读写XML详解 前言一、XML 简介二、在 Java 中读取 XML2.1 使用 DOM&#xff08;Document Object Model&#xff09;方式读取 XML2.2 使用 SAX&#xff08;Simple API for XML&#xff09;方式读取 XML 三、在 Java 中写入 XML3.1 使用 DOM 方式写入…...

React 路由与组件通信:如何实现路由参数、查询参数、state和上下文的使用

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...