STM32G431--基于HAL库(第十三届蓝桥杯嵌入式模拟题1)

蓝桥杯C++竞赛常用库函数介绍 蓝桥杯C++竞赛常用库函数介绍,C++常用库函数介绍,二分查找,全排列,大小写函数,求最值函数以及其他常用库函数 阅读详情


前言

相关说明:

开发板:CT117E-M4(STM32G431RB 蓝桥杯嵌入式比赛板)
开发环境: CubeMX+Keil5
涉及题目:第十三届蓝桥杯嵌入式模拟题1
题目难点:相对较易,主要需掌握调节PWM输出占空比及频率、ADC获取、以及定时器配置。


CubeMX配置、主要函数代码及说明:

一、CubeMX配置(第十三届模拟题完整版)

1.使能外部高速时钟:在这里插入图片描述

2.配置时钟树:在这里插入图片描述

3.GPIO:

在这里插入图片描述

4.ADC(检测R37电压值):在这里插入图片描述

5.TIM3(PWM):在这里插入图片描述

6.TIM6(0.1s中断):在这里插入图片描述

7.NVIC:在这里插入图片描述

二、代码相关定义、声明

1.函数声明

main.c
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);//定时器回调函数
void D_change(void);	//D改变规则
void LCD_InitShow(void);//LCD初始化显示
void LCD_Refresh(void);	//LCD显示更新
void LED_change(void);	//LED2状态改变

gpio.h
void KEY_Scan(void);//按键扫描
void LED_AllClose(uint8_t *LED_Close);//LED更新显示

adc.h
double ADC_GetValue(void);//获取R37电压值

time.h
void PWN_OutPut(uint16_t Period,uint16_t Pulse);//配置PWM输出参数

2.宏定义

#define LED_GPIO_PORT GPIOC
#define LED1_GPIO_PIN GPIO_PIN_8
#define LED2_GPIO_PIN GPIO_PIN_9
#define LED3_GPIO_PIN GPIO_PIN_10
#define LED4_GPIO_PIN GPIO_PIN_11
#define LED5_GPIO_PIN GPIO_PIN_12
#define LED6_GPIO_PIN GPIO_PIN_13
#define LED7_GPIO_PIN GPIO_PIN_14
#define LED8_GPIO_PIN GPIO_PIN_15

#define ON 	GPIO_PIN_RESET
#define OFF	GPIO_PIN_SET

#define LED1(a) HAL_GPIO_WritePin(LED_GPIO_PORT,LED1_GPIO_PIN,a)
#define LED2(a) HAL_GPIO_WritePin(LED_GPIO_PORT,LED2_GPIO_PIN,a)
#define LED3(a) HAL_GPIO_WritePin(LED_GPIO_PORT,LED3_GPIO_PIN,a)
#define LED4(a) HAL_GPIO_WritePin(LED_GPIO_PORT,LED4_GPIO_PIN,a)
#define LED5(a) HAL_GPIO_WritePin(LED_GPIO_PORT,LED5_GPIO_PIN,a)
#define LED6(a) HAL_GPIO_WritePin(LED_GPIO_PORT,LED6_GPIO_PIN,a)
#define LED7(a) HAL_GPIO_WritePin(LED_GPIO_PORT,LED7_GPIO_PIN,a)
#define LED8(a) HAL_GPIO_WritePin(LED_GPIO_PORT,LED8_GPIO_PIN,a)

#define KEY1_GPIO_PORT GPIOB
#define KEY1_GPIO_PIN  GPIO_PIN_0
#define KEY2_GPIO_PORT GPIOB
#define KEY2_GPIO_PIN  GPIO_PIN_1
#define KEY3_GPIO_PORT GPIOB
#define KEY3_GPIO_PIN  GPIO_PIN_2
#define KEY4_GPIO_PORT GPIOA
#define KEY4_GPIO_PIN  GPIO_PIN_0

3.变量定义

main.c
double v_value;					//R37电压值
uint8_t D;						//占空比
uint16_t F=1000;				//PWM输出频率
uint16_t F_step=1000;			//F每次改变值
uint16_t F_max=10000;			//F上限
uint16_t F_min=1000;			//F下限
char str[30];					//用于组合字符串
uint8_t LCD_RefreshFlag=0;		//LCD更新标志位
uint8_t LED_Close[3]={1,1,0};	//LED关闭字符串(保存LED状态,值为1,则下标对应LED关闭)
uint8_t LED2_flag=0;			//LED2状态标志位 R37电压>1V时置1
uint32_t TIM_Clock=1000000;		//定时器6工作频率

tim.c
TIM_OC_InitTypeDef sConfigOC = {0};//配置该结构体为全局变量,MX配置后删除生成函数中的这句代码

三、主要函数

1.按键扫描

按键按下后的操作封装为函数,可降低函数耦合。

void KEY_Scan()
{
	static uint8_t clock=0;
	if(HAL_GPIO_ReadPin(KEY1_GPIO_PORT,KEY1_GPIO_PIN)==GPIO_PIN_RESET && !clock)//++
	{
		HAL_Delay(10);
		if(HAL_GPIO_ReadPin(KEY1_GPIO_PORT,KEY1_GPIO_PIN)==GPIO_PIN_RESET)
		{
			while(HAL_GPIO_ReadPin(KEY1_GPIO_PORT,KEY1_GPIO_PIN)==GPIO_PIN_RESET);
			Dat_change(add);
			LCD_Refresh();
		}
	}
	
	else if(HAL_GPIO_ReadPin(KEY2_GPIO_PORT,KEY2_GPIO_PIN)==GPIO_PIN_RESET && !clock)//--
	{
		HAL_Delay(10);
		if(HAL_GPIO_ReadPin(KEY2_GPIO_PORT,KEY2_GPIO_PIN)==GPIO_PIN_RESET)
		{
			while(HAL_GPIO_ReadPin(KEY2_GPIO_PORT,KEY2_GPIO_PIN)==GPIO_PIN_RESET);
			Dat_change(sub);
			LCD_Refresh();
		}
	}
	
	else if(HAL_GPIO_ReadPin(KEY3_GPIO_PORT,KEY3_GPIO_PIN)==GPIO_PIN_RESET)
	{
		HAL_Delay(10);
		if(HAL_GPIO_ReadPin(KEY3_GPIO_PORT,KEY3_GPIO_PIN)==GPIO_PIN_RESET)
		{
			while(HAL_GPIO_ReadPin(KEY3_GPIO_PORT,KEY3_GPIO_PIN)==GPIO_PIN_RESET);
			clock=!clock;
			LED_Close[1]=!LED_Close[1];
			LED_AllClose(LED_Close);
		}
	}
}

2.LED更新显示

将LED灯状态为灭还是亮,保存在LED_Close数组里,LCD就影响不了了,如果数组中值为1,则下标对应LED关闭,否则为开启,理解了逻辑很好写。具体可参考STM32LED–基于HAL库(第七届蓝桥杯嵌入式省赛)。

void LED_AllClose(uint8_t *LED_Close)//LED更新显示
{
	uint8_t	i;
	LED1(ON);
	LED2(ON);
	for(i=1;i<3;i++)
	{
		if(LED_Close[i])
		{
			switch(i)
			{
				case 1:
					LED1(OFF);
					break;
				
				case 2:
					LED2(OFF);
					break;
			}
		}
	}
	LED3(OFF);
	LED4(OFF);
	LED5(OFF);
	LED6(OFF);
	LED7(OFF);
	LED8(OFF);
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}

3.PWM输出参数配置

PWM频率=定时器工作频率/重装载值
占空比=Pulse/重装载值*100%

void PWN_OutPut(uint16_t Period,uint16_t Pulse)//第一个参数为频率,第二个参数为占空比
{
	htim3.Init.Period = Period;//频率配置 PWM频率=定时器工作频率/重装载值
	sConfigOC.Pulse = Pulse;//占空比配置	占空比=Pulse/重装载值*100%
	HAL_TIM_OC_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2);
	HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);//更改配置后需要重新Start才能生效
}

4.Main函数

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ADC2_Init();
  MX_TIM3_Init();
  MX_TIM6_Init();
  /* USER CODE BEGIN 2 */
	LCD_Init();//LCD初始化
	v_value=ADC_GetValue();//获取R37电压值
	D_change();//D值初始化
	LCD_InitShow();//LCD初始化显示
	LED_change();//LED状态改变
	TIM6->SR=0;//关闭定时器6中断标志位
	TIM6->CNT=0;//定时器6计数器清零
	HAL_TIM_Base_Start_IT(&htim6);//以中断方式开启定时器6
	HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);//开启PWM
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		KEY_Scan();//按键扫描
		if(LCD_RefreshFlag>4)//每0.5s更新一次LCD以及PWM(更新频率可调节)
		{
			LCD_RefreshFlag=0;//LCD更新标志位清零
			v_value=ADC_GetValue();//重新获取R37电压值
			D_change();//D值更新
			LCD_Refresh();//LCD更新显示
			LED_change();//LED状态更新
			PWN_OutPut((TIM_Clock/F)-1,(D*1.0/100*TIM_Clock/F)-1);//PWM更新输出
		}
		LED_AllClose(LED_Close);//LED更新
  }
  /* USER CODE END 3 */
}

四、实验结果

1.初始状态

R37电压调节为1.5,对应D值为1.5/2*80=60;PWM初始频率1Khz
请添加图片描述

2.输出PWM

在这里插入图片描述

3.调节输出频率

在这里插入图片描述

4.输出PWM

在这里插入图片描述

五、源码(转载请注明出处)

在这里插入图片描述


总结

以上就是全部内容,如有错误请批评指正。

第十二届蓝桥杯嵌入式国赛(赛后总结) 前言 笔者今年是第一次参加蓝桥杯,赛道为嵌入式设计,目前取得了国二的成绩,虽说不是最好,但从中学到了许多,收获了许多。今年我所使用的是STM32G431, 用的HAL库,这也是我第一次学习使用HAL库。参加本次比赛前,我已经学习了快一年的STM32,但注重在项目开发方面,参加此比赛是为了进一步巩固自己的32基础,同时参加比赛也认识了一些优秀的大佬,在此分享我个人的一些经验。 对于此次比赛总结: 对于省赛,我花了大大概两周的时间,三天左右学习了HAL库,之后将省赛所用的模块单独用HAL写了一遍,然后就去做往年 阅读详情

相关推荐

蓝桥杯STM32 G431 hal库开发速成——RTC——实时时钟

stm32 hal库 RTC的使用

weixin_44860466的博客 5105

蓝桥杯考试时提供的库函数及其错误修改

蓝桥杯比赛时官方提供了会用的库函数: ds1302为时钟芯片,iic给AT24C02和PCF8591使用,onewire给温度传感器DS18B20使用. 但是官方提供的库函数其实是有点问题的, 下面分别进行说明: 一:ds1302.c: ds1302.c的Read_Ds1302_Byte函数出现了问题, 缺少了对ds1302芯片的复位: 下面贴上改进的代...

Beking17113的博客 2218

蓝桥杯嵌入式STM32 G431 hal库开发速成——定时器——TIM

STM32 hal库开发,基本定时器的使用,定时器中断,定时器微妙us延迟,定时器与定时器中断的区别

weixin_44860466的博客 6652

蓝桥杯嵌入式STM32 G431 HAL库开发速成指南(1)LED

本教程适用于报名参加蓝桥杯嵌入式用新开发板(G431)且想要快速开发的小白,不具体讲解复杂的原理,只讲Cubemx初始化配置以及在KEIL里面使用相应的库函数功能对外设进行编程。 CUBEMX配置流程:配置时钟---配置LED相应I/O口---配置工程管理 GPIO常用到的库函数: HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); 读取某一引脚的电平高低 HAL_GPIO_WritePin(GPIO_TypeDef *G...

weixin_47878949的博客 8992

蓝桥杯嵌入式——第十一届蓝桥杯嵌入式国赛

蓝桥杯嵌入式——第十一届蓝桥杯嵌入式国赛 之前准备省赛的时候用的是旧版的STM32F103,从准备国赛开始就用新版STM32G431平台了,主要是想经过新版的准备学习一下HAL库以及CubeMX的使用。用了几天的新版,感觉新版的还是比较香,单纯从配置各个模块来说,比旧版的省太多时间了,而且速度也比较块,单纯从比赛来说,还是推荐新版,因为配置方便,调试器兼容KEIL5,KEI5比KEIL4好用太多了,也有自动补全,在写代码的时候速度也会比较快一些。不过旧版的资料确实比较多,选择也看大家。所以之后的国赛赛题都

FILWY_M 5697

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记01:赛事介绍与硬件平台

蓝桥杯嵌入式是本人参加的第一次学科竞赛,之前没怎么学过嵌入式,算是零基础。因为课题组而选择了嵌入式的方向,以后还有很长的路要走,STM32单片机是我的嵌入式生涯第一站,决心要认真学好,在比赛中锻炼自己的单片机水平,有了这个基础以后进一步学习嵌入式才能走的更远。蓝桥杯嵌入式个人赛省赛:考试时间5小时,总分100,分客观题和主观题,客观题15条选择题,每题1分,主观题85分的程序设计题。

weixin_44800059的博客 3817

STM32 G431

1.家族STM32:32代表32位MCU,有32根地址线,可以寻找4GB的地址STC15单片机是8位CPU,地址以16进制表示:0x_ _;容量为 2^32 = 4,294,967,296 ≈ 4×10^9 (其中 1GB = 10^9)2.产品类别G: 支持DSP和FPU指令的可适用信号应用像正点原子的F4,F:基础型,通用型3.特点功能103 : STM32基础型407:高性能,带DSP和FPU431: 未知4.引脚数R : 64位引脚5.闪存容量B: 128K6.封装T:QFP封装。

soinlove36的专栏 8909

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记09:EEPROM

上一节我们学习了LCD转换,这节课学习一下EEPROM。学习EEPROM芯片之前要先学习一下它所使用的IIC协议,它通过这个协议和单片机进行通讯。一、IIC协议IIC是一个总线协议,它可以用于主器件与从器件之间交换数据使用。主器件就是我们所用的单片机了。IIC协议需要用到两根线,一根数据线,一根时钟线,不同于单总线协议只有一个I/O口。所以IIC可以提高通讯速率。IIC协议是一个通用的协议,有很多芯片都是用这个协议进行通讯的,EEPROM就是其中之一。

weixin_44800059的博客 2803

蓝桥杯---STL常用库函数(算法笔记4)

下面是STL中几大常用的库函数 sort 两种定义方式 区间左闭右开,从第一个数到倒数第二个数。 下面是排列组合函数,在这之前先分清楚什么叫字典序 也就是从以a,b,c~z这样的顺序进行排序。 那么接下来就是对于处理排序问题的库函数 next_permutation 同样的,排列区间也是左闭右开。 下面例子是对于序列a,b,c求除去abc以外的全排列,用next_permutation库函数实现就简单很多。 那么知道了next_permutati...

Edwinwzy的博客 1417

第十三届第二场蓝桥杯嵌入式G431,程序题完美实现!

该压缩包文件包含完整的程序设计题工程文件,在第十三届第一场中主要使用到了串口通信、PWM产生、定时器的应用、EEPROM以及基本的LED,LCD,按键的应用。 其中串口通信使用的是DMA空闲中断的方式接收数据,定时器主要用来产生一个五秒钟的定时,该部分采用的是中断溢出的方式来产生较为精准的1ms定时,当满足特定条件时,相应的LED灯亮起或闪烁,同时定时器从1MS开始累加,当累加到5S时更新状态等。其中EEPROM主要用来实现赛题要求的部分数据进行掉电存储,同时在本工程项目中涉及了判断设备是否是第一次上电,若设备是第一次上电,则设备的初始化数据满足赛题要求的初始化值,若设备不是第一次上电,则设备的初始化数据则从EEPROM中获取。 整体程序从构思到编写、调试完成大概花费三个小时,最终可以完美实现本赛题的所有要求。其整体难度相较第十三届第一场要稍微困难复杂一点,在本赛题中有遇到问题的朋友对于一些模块使用或操作可以参考博主是如何使用。 通过本工程文件希望能够帮助到您,如果您下载使用后,觉得还不错的话,希望您可以给博主一个赞哦!谢谢。

蓝桥杯-嵌入式-历年真题-模拟题-部分客观题

文件包括蓝桥杯电子大类中的嵌入式设计比赛历年真题以及部分模拟题,其中也包括考察基础知识的客观题(第八届、第九届)。

蓝桥杯嵌入式STM32G431RBT6的学习(总大纲)(HAL库学习)板子介绍

蓝桥杯嵌入式STM32G431RBT6的学习(总大纲)(HAL库学习)

m0_58832575的博客 2万+

VFIO框架源码分析(二十一)- IOMMUFD 模式下的 DMA 映射机制

在虚拟化 I/O 的世界里,无论上层管理面(如对象模型、设备绑定)如何重构,数据面最核心的任务始终未变——DMA 映射(DMA Mapping)。即如何建立 Guest Physical Address (GPA) 到 Host Physical Address (HPA) 的映射关系,并将其填入 IOMMU 的硬件页表中,使得直通设备能够正确访问虚拟机内存。在 Legacy VFIO (Type1) 时代,这一职责由承担,它通过ioctl 操作 Container。

qq_36071928的博客 1007

STM32PWM--基于HAL库(第十三届蓝桥杯嵌入式模拟题)

蓝桥杯第十三届模拟题,STM32根据输入频率与设定好的分频值动态调节输出PWM。

Octopus1633的博客 4913

Python中的串口通信库pyserial(基础)

pyserial是一个跨平台的库,可以在多个操作系统上使用,包括Windows、Linux和MacOS。:flushInput方法用于清除输入缓冲区中的所有数据,flushOutput方法用于清除输出缓冲区中的所有待发送数据。:PySerial允许在创建Serial对象后,通过修改对象的属性来设置串口参数,如波特率、数据位、校验位和停止位。同时,也提供了方法或属性来检查串口的状态,如是否已打开。:sendBreak方法用于向串口发送一个BREAK信号,这可以用于向连接的设备发送一个中断或重置信号。

weixin_44217158的博客 1万+

别再拍脑袋估工时了!手把手教你用FPA功能点分析法,给软件项目算笔明白账

本文详细介绍了FPA功能点分析法在软件开发工作量评估中的应用,帮助团队告别拍脑袋估算。通过量化系统功能组件,FPA提供客观的工时和成本预估,特别适合需求不明确的项目初期。文章以财务系统为例,拆解FPA计算流程,并分享实用估算模板,助力技术管理者提升项目规划能力。

weixin_42614269的博客 386

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记11:数字电位器MCP4017

数字电位器MCP4017本质是一个IC器件,也就是说它是一个集成芯片,而板子上的蓝色旋转电位器R37、R38本质是一个电阻。数字电位器本质是一个芯片,但是内部有一个电阻网络,通过很多模拟开关来给电阻网络切换不同的阻值,我们是通过之前介绍过的I2C总线来给芯片发送数据,告诉芯片我要打开哪些模拟开关,从而控制它的阻值。

weixin_44800059的博客 2649

RADIOML 2018.01A数据集在自动调制识别中的实战应用指南

本文提供了RADIOML 2018.01A数据集在自动调制识别(AMR)任务中的完整实战指南。内容涵盖从数据集介绍、数据获取与解包、高效预处理流程,到构建PyTorch数据管道、模型设计(如1D CNN、ResNet)以及训练调参策略。重点阐述了如何利用该数据集训练鲁棒的AI模型,以应对复杂信道环境和低信噪比挑战,并给出了详细的性能评估方法。

plant的博客 170

【蓝桥杯嵌入式比赛】STM32G431芯片CT117E-M4 开发板使用教程汇总【持续更新】【拿奖必看】【真题下载】

STM32G431外设引脚映射表 ① LED灯的控制 ② 按键的使用 ③ LCD显示屏的使用(待完善)① ADC电压数据采集 ② DAC电压输出 ③ TIM 脉冲频率测量 ④ TIM PWM输出 ⑤ UART 串口通信 ⑥ IIC 控制24C02存储器和MCP4017可编程电阻① 扩展板功能介绍及其与主板的连接 ② 扩展板ADC按键的使用 ③扩展板数码管的使用 ④扩展板DHT11温湿度传感器的使用(待完善) ⑤扩展板DS18B20温度传感器的使用(待完善) ⑥扩展板LIS302DL三轴加速度的使用(待完善)

我是鹏老师 4万+

性能测试能力提升-线程、并发、吞吐量、TPS、QPS、响应时间

接着上一篇的知识:性能测试能力提升-关于性能测试,本篇文章,我们将主要介绍以下几方面的知识: 线程数&并发用户数 相对并发&绝对并发 吞吐量 TPS&QPS 响应时间

程序员小杨哥的博客 4589

OpenClaw小白安装全攻略:5000字详解,3分钟上手

为什么值得装 OpenClaw?最近科技圈爆火的 OpenClaw(昵称 “小龙虾”),不是普通 AI 聊天工具 —— 它是能本地部署、直接操控电脑的 AI 智能体,相当于给电脑配了个 “全能助手”:整理文件、自动搜资料、写文档、控制浏览器,甚至对接微信 / 飞书发消息,全程不用手动操作。更关键的是:它免费开源、支持全平台,新手不用懂代码,复制粘贴命令就能装,数据存在本地不泄露隐私。截至 2026 年 3 月,GitHub 星标已破 25 万,券商都出研报推荐,上班族、学生党用它提升效率超香!

通俗易懂学IT 1211

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记02:开发环境安装

上一篇介绍了一下蓝桥杯板子CT117E的硬件情况,这一篇讲一下如何配置开发环境。基于STM32CubeMX的HAL库开发主要依靠图形化配置软件STM32CubeMX、JAVA开发环境、集成开发环境MDK-ARM、芯片器件包、HAL固件包。这五个软件资源的安装可以分为两个部分,一是STM32CubeMX开发工具的安装,在此之前要先安装JAVA运行环境(JRE),安装之后还需要在CubeMX中添加对应芯片的HAL固件包。二是集成开发环境MDK-ARM的安装,同样,安装后需要添加芯片的器件包。

weixin_44800059的博客 2986

Pytest教程:Pytest插件原理

Pytest的插件系统是其强大功能的核心,它允许用户和开发者扩展和定制测试框架的行为。要深入理解Pytest插件的原理,我们需要从Pytest的架构和设计模式开始,然后深入到底层源码。

旦莫的博客 636

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记07:ADC模数转换

上一节我们学习了GPIO的按键输入并设计了一个利用定时器每10ms扫描一次的三行按键法的程序,这一节我们继续学习ADC模数转换的内容。关于ADC模数转换器,它的主要功能就是把一个模拟量变成数字量。数字当然也可以转化成我们常见的十进制数,这样我们更容易能读出它的值是多少。一、电路原理我们来看一下ADC的电路原理,首先单片机用到的管脚是PB15和PB12这两个管脚,他们是可以作为ADC的输入口使用的,当然我们也可以把他们配置成普通的GPIO,但是比赛的时候一般是把这两个管脚作为ADC的口来使用。

weixin_44800059的博客 2357

从零玩转Vitis裸机开发:手把手教你创建、移植与实战优化

✅ Vitis裸机开发全流程✅ 中断系统配置技巧✅ 跨平台移植方法论✅ 性能优化实战经验研究FreeRTOS移植探索AMP(非对称多处理)架构学习使用Vitis Analyzer进行性能分析技术雷达:关注Xilinx最新推出的Vitis Unified IDE,其集成了更强大的调试和分析工具。立即动手实践吧!

QQ_778132974的博客 583

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记10:USART串口通讯

今天讲解一下STM32G4的串口通讯模块USART,即通用同步异步收发器。相比与UART异步收发器,USART是可以同步通讯的,即接收端和发送端共用一个时钟,是有一个时钟线的。但是我们比赛和蓝桥杯板子上只用到了异步收发,所以我们只能把USART设置成Asynchronous(只需要用到两根线,收和发)。本节讲了串口通信USART的内容,因为我们没有接时钟线,所以只有异步通信也就是UART的内容。首先了解了一下通信的基本原理,需要了解硬件电路,以及数据收发的时序图,还有波特率的概念。

weixin_44800059的博客 2881

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: STM32PWM--基于HAL库(第十一届蓝桥杯嵌入式省赛)
下一篇: STM32综合-基于HAL库(第十二届蓝桥杯嵌入式省赛)
AゞOctopus๊
AゞOctopus๊ 新星创作者: 嵌入式与硬件开发技术领域 新星创作者: 嵌入式与硬件开发技术领域
博客等级 码龄6年 8293粉丝 30原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AゞOctopus๊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值