蓝桥杯嵌入式学习————USART、ADC

【蓝桥杯】【嵌入式组别】第十二节:USART串口通讯 由于我们的比特率通常都很高,所以如果连发三个数据,这三个数据之间的间隔应该是小于50ms的,但与前面的错误数据的时间间隔就会很大了,因为这是我们人为导致的。第一行是我们自己想实现的目标,第二行是必须要做的,要重新开启定时器中断,因为一方面他执行完一次中断后会清楚标志位,另一方面我们需要这句代码把buffer清除掉,方便下一次串口接收。里面的数据赋值给我们自定义的数据存储数组rx_buf,由于我们一共希望要三个数据,所以我们当rx_cnt==3的时候就可以退出,重新置位,这样就得到了三个数据) 阅读详情

串口

直接上代码吧

void USART_Config(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
  
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);    //开启串口时钟

    //设置usart2 tx引脚工作模式PA2
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   //复用推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    //设置usart2 rx引脚工作模式PA3
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //浮空输入
    GPIO_Init(GPIOA, &GPIO_InitStructure);
	
    //usart2 工作模式配置
    USART_InitStructure.USART_BaudRate = 19200;    //波特率
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;   //数据位长度
    USART_InitStructure.USART_StopBits = USART_StopBits_1;   //停止位
    USART_InitStructure.USART_Parity = USART_Parity_No ;   //奇偶校验位 
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;  //硬件流控制
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;       //收发模式
    USART_Init(USART2, &USART_InitStructure);
    USART_Cmd(USART2, ENABLE);      //使能
}

//发送函数
void USART_SendString(int8_t *str)
{
    uint8_t index = 0;
    
    do
    {
        USART_SendData(USART2,str[index]);
        while(USART_GetFlagStatus(USART2,USART_FLAG_TXE) == RESET);
        index++;        
    }
    while(str[index] != 0);  //¼ì²é×Ö·û´®½áÊø±êÖ¾
    
}

ADC

参考博文点击此处
在配置引脚输入模式时配置为模拟输入模式
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

引脚对应关系
在这里插入图片描述

void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, u8 ADC_Channel, u8 Rank, u8 ADC_SampleTime)
该函数的参数ADC_Channel,Rank是代表什么?
这个在你多通道采集和DMA应用时会有很大的作用,比如你需要多通道采集,你设置每个通道的采集顺序其实就是用这个变量来做的,假设你定义channle1 的rank=1,channle2 的rank=2,那么对应你在DMA缓存空间的变量数组AdcDMA[0] 就i是channle1的转换结果,AdcDMA[1]就是通道2的转换结果。

code:

void ADC_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	ADC_InitTypeDef ADC_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	
	//PB0-ADC channel 8
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	// ADC1 工作模式配置
	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;  
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;
	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;  //µ¥´Îת»»
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
	ADC_InitStructure.ADC_NbrOfChannel = 1;
	ADC_Init(ADC1, &ADC_InitStructure);

	ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_13Cycles5);    

	ADC_Cmd(ADC1, ENABLE);   
	ADC_ResetCalibration(ADC1);
	/* Check the end of ADC1 reset calibration register */
	while(ADC_GetResetCalibrationStatus(ADC1));
	ADC_StartCalibration(ADC1);
	/* Check the end of ADC1 calibration */
	while(ADC_GetCalibrationStatus(ADC1));
}

//读函数
float Read_ADC(void)
{
	float ADC_VALUE;
	
	ADC_SoftwareStartConvCmd(ADC1,ENABLE);
	Delay_Ms(5);
	ADC_VALUE = ADC_GetConversionValue(ADC1)*3.30/0xfff;
	
	return ADC_VALUE;
}

//main函数中的片段
    while(1){
		//200ms采样一次
		if(ADC_Flag){
			ADC_Flag = 0;
			adc_temp = Read_ADC();
			sprintf(string,"%s%.3f","ADC Value:",adc_temp);
			LCD_DisplayStringLine(Line7,string);
		} 

很草率,还会再看一遍的><

蓝桥杯嵌入式参赛笔记(基于stm32竞赛板) 虽然这个充满信心的比赛最后由于一些***的原因自己几乎没有做交的白卷,但通过再一次的学习stm32,自己还是有不少的收获。 现把自己当时的笔记复制到这,作为一个记录以及交流,同时也作为第一篇博客: 一、新建工程 略有不同的是程序的下载方法,需要装驱动。。。 二、LED 电路原理图: 比赛板用的是stm32f103rb芯... 阅读详情

相关推荐

蓝桥杯嵌入式-整理总结

在学习了其他人的分享,并加以练习,以下内容是我每天练习的基础,尤其是基础模块。全部可运行,整理索引如下。 一、基础模块 二、扩展模块 三、套题 1.蓝桥杯嵌入式第十一届省赛模拟试题 2.蓝桥杯嵌入式第七届省赛-液位检测告警系统 ...

fancyZT的博客 2557

蓝桥杯嵌入式(G4系列):串口收发

在整个蓝桥杯考试中涉及串口的次数还是较多,这里写下这篇博客,记录一下自己的学习过程。

weixin_51651698的博客 5337

【一周拿奖速成系列】蓝桥杯嵌入式系列文章目录

的比赛过来问我怎么准备,因为正好我去年参加过拿了个小奖,所以写了个教程顺便分享给大家!我去年是完全没准备客观题,只做了程序题,拿的是国二,这个系列的博客提供给大家交流分享,如果有什么问题或者更好的可以跟我私信或者留言哦!此教程只提供操作模板讲解,不提供具体细节原理教程,如果大家时间充裕还是去了解一下原理,毕竟我们不是为了得奖参加比赛,而是希望真正学到了东西,当然如果你们想看的人多了,后续我也可以写一个具体原理的教程。第七章 MCP4017数字电位器。第十章 USART串行通信。第五章 RTC时钟和日期。

TYJhhxx的博客 5788

蓝桥杯(嵌入式)——ADC(模数转换)

蓝桥杯(嵌入式)——ADC的实现

qq_52552006的博客 916

蓝桥杯嵌入式备赛核心能力模型与真题驱动学习法

嵌入式开发是软硬协同的系统工程,其基础在于对MCU硬件架构、外设驱动机制与实时编程范式的深度理解。从GPIO电气特性、时钟树配置到HAL库状态机流转,再到中断优先级管理与环形缓冲区设计,每一环节都直接影响系统稳定性与实时性。掌握STM32F103平台下的USART协议解析、TIM定时器多模式应用、ADC采样精度约束及I2C/SPI物理层调试技巧,是应对工程化考题的关键。本文聚焦蓝桥杯嵌入式组真实竞赛场景,结合高频考点与典型Bug模式,系统梳理从硬件认知→驱动抽象→算法工程的能力跃迁路径,并提供可复用的真题解

weixin_42587866的博客 57

第七届蓝桥杯嵌入式开发(省赛—模拟液位检测告警系统)

一、功能简述“模拟液位检测告警系统”通过采集模拟电压信号计算液位高度,并根据用户设定的液位阈值执行报警动作,在液位等级发生变化时,通过串行通讯接口将液位信息发送到 PC 机。系统框图如图 1 所示:CT117E考试板电路原理图与使用说明、I2C总线驱动、LCD驱动程序及本题涉及到的芯片资料可参考计算机上的电子文档。电路原理图、程序流程图及相关工程文件请以考生准考证命名,并保存在指定文件夹中(文件夹名为考生准考证号,文件夹保存在监考员指定位置)设计任务及要求通过电位器R37。

qq_39020917的博客 1180

蓝桥杯嵌入式G431(hal库)——串口

本文将简单分析,阻塞方式接受发送数据,中断接收发送数据,以及串口空闲中断+DMA方式接收发送数据。

m0_66684780的博客 923

蓝桥杯嵌入式零基础如何准备

蓝桥杯嵌入式如何准备 蓝桥杯嵌入式如何得奖 蓝桥杯 STM32G431 蓝桥杯嵌入式零基础如何准备

wei_Embedded_z的博客 3561

【速成】蓝桥杯嵌入式省一教程:(十一)UART串口通信

摘要:本文介绍了UART串口通信的实现方法。首先通过CubeMX配置异步UART模式,设置波特率为9600,并开启接收中断。使用HAL_UART_Transmit函数发送数据,通过sprintf格式化字符串。接收数据时,利用HAL_UART_Receive_IT函数和中断回调函数处理接收到的数据。文章以密码修改为例,详细说明了如何实现带格式校验的UART通信:通过判断接收字符数、格式正确性(3位数字-3位数字)和密码匹配三个条件来确保数据有效性,最后在主循环中检测接收完成状态进行密码更新操作。

weixin_60921752的博客 4465

蓝桥杯第十届嵌入式省赛完整项目实战解析

嵌入式系统是专为执行特定控制功能而设计的计算机系统,通常以微控制器(MCU)为核心,集成软硬件于一体。其最显著特征包括专用性——仅服务于预设任务;实时性——需在限定时间内响应外部事件;资源受限性——受限于存储、功耗与计算能力;以及高可靠性——要求长时间稳定运行。不同于通用计算机,嵌入式系统强调效率与稳定性,广泛应用于工业自动化、智能家居、医疗设备等领域。// 示例:一个简单的嵌入式LED控制逻辑// 超温报警。

weixin_34520664的博客 1584

数字太大放不下,高精度来补,如何放下超大数字,以及进制转换,高精度真的超好玩。 洛谷1009,1015

想必大家都遇到过数字大小超过int类型范围的情况,是不是碰到int放不下的数字自然就会想到,long int,long long int,甚至unsigned long long int呢。但是有一些出题者就很可恶,偏要出一些连unsigned long long int也放不下的算法题,应对这些问题时,我们是否有相应的应对方法呢?答案是:当然有,高精度就是一种应对这种问题时很好的解决办法。相信你在看完这篇文章后能对高精度有着更深更好的理解。我会循序渐进的来讲,这样大家也更容易听懂。

2303_79329831的博客 1229

蓝桥杯嵌入式——题目总结及文章汇总

蓝桥杯嵌入式——文章汇总 一、前言 笔者也是最近准备参加第十二届蓝桥杯嵌入式的选手,希望能够和大家一起学习。在学习STM32的过程中,对一些当时比较困惑的地方进行了琢磨,并且记录了下来,一方面是为了记录一下自己的学习过程,方便以后如果遗忘了能够快速想起来,另一方面也是希望可以帮助大家。 首先在准备蓝桥杯单片机之前,我是看到野火的stm32的教程入门,火哥的教程讲的也是比较清除的,感觉比原子哥的要细致一些,可以根据自己的兴趣,两家都是比较出色的。然后差不多入门了之后,就可以根据蓝桥杯嵌入式的考点有针对性的进行

FILWY_M 1万+

用Java和MQTT搞定大疆无人机自动巡检:一个真实机场项目的踩坑与优化记录

本文详细介绍了如何利用Java和MQTT协议实现大疆无人机在机场自动巡检系统的开发与优化。通过实战案例分享系统架构设计、通信协议选型、断线重连机制及数据通道优化等关键环节,帮助开发者解决GPS信号漂移、MQTT消息风暴等典型问题,提升系统性能和可靠性。

weixin_30275415的博客 495

蓝桥杯嵌入式学习记录

蓝桥杯嵌入式学习记录及部分笔记

2301_77738923的博客 557

IPD(集成产品开发)管理之道

IPD,是集成产品开发(Integrated Product Development)的缩写,它是集成了众多管理模型和理论、众多企业最佳管理实践的一整套体系,可以帮助企业快速响应市场变化、缩短产品上市时间、减少资源浪费、提高生产力,最终取得商业成功。IPD的思想最早来源于美国PRTM公司出版的《产品及生命周期优化法》一书中,该书详细描述了IPD模式所包含的各个方面。但IPD在中国的普及,源于IBM和华为的推行使用。IPD作为一套先进的产品研发管理模式,其成功的基础是功能部门和各团队之间的密切配合。

钢镚·真的博客 2715

【iceberg数据一致性】iceberg如何保证高并发数据一致性

那么在高并发的时候,同时操作某张表时是如何运作的呢?其实这里iceberg引用了乐观锁的方法。其实在写入数据的时候是有一个验证的操作的,即在准备写入时会检查原文件和带写入文件的差异,如果存在本次写入数据以外的数据,则代表有其他操作已经更新了原文件,那么本次写入会取消,并重试写入的步骤,知道验证完成,写入完成,如此就保证了数据的一致性,并且也解决了HMS锁的问题。在使用iceberg写数据时,一直弄不清楚为什么iceberg写入快,并且能够保证数据的一致性。今天决定搞清楚这个问题,经过查询和理解,写下来。

你的博客 1043

蓝桥杯嵌入式-软件代码逻辑教学

本文总结了STM32开发环境的搭建和常用功能实现方法。主要内容包括:1.开发环境配置(STM32CubeMX、Keil MDK安装及常见问题解决);2.基础功能实现(GPIO控制LED、按键检测、LCD显示);3.高级功能开发(定时器中断、PWM输出、输入捕获、ADC采样、串口通信);4.外设驱动(EEPROM读写、RTC实时时钟)。文章详细记录了各功能模块的配置步骤、代码实现及常见问题解决方案,为STM32开发者提供了实用参考。重点介绍了GPIO位操作、定时器应用、中断处理等核心技术,并提供了LCD显示优

2503_94687099的博客 819

SDR实战(四)-AD9361使用手册(三)

本节定义了并行数据端口和串行外设接口(SPI),它们使得AD9361与基带处理器(BBP)之间能够传输数据和控制/状态信息。图63展示了这些接口,并提供了AD9361和BBP在宽带无线系统中使用方式的高级概述。数据接口以两种模式之一运行:兼容标准CMOS模式或兼容低压差分信号(LVDS)模式。每个接口都具有以下部分描述的独特特性。使用CMOS模式时:保持了单端-CMOS逻辑兼容性。可以使用一个或两个数据端口。使用两个端口可以提高数据吞吐量。

hutx0924的博客 6246

STM32自学历程——记录跳过的知识部分

因为我现在学习STM32主要是为了备考4月份的蓝桥杯。所以我计划先把蓝桥杯搞定,再把未学习的部分补齐。第二:ADC的DMA读取数据组这里。为什么不一口气把资料全部学习完?第三:USART串口数据包这里。我还差哪些部分没有学习?第一:TIM输入捕获这里。

m0_64956304的博客 177

【2021工业图像异常检测文献】DRÆM: 基于判别性训练的重建嵌入表面异常检测方法

DRÆM – A discriminatively trained reconstruction embedding for surface anomaly detection

qq_1532145264的博客 1477

MTK平台LCD驱动开发实战:从零开始点亮你的Android屏幕

本文详细介绍了在MTK平台进行Android LCD驱动开发的完整流程。从理解LK与Kernel双核驱动框架入手,手把手讲解驱动结构体、屏幕参数配置、初始化序列编写以及PLL_CLOCK计算等核心步骤,并提供了系统集成配置与实用的调试避坑指南,帮助开发者高效点亮新屏幕。

terraform7cloud的博客 292

【STM32G4】嵌入式---蓝桥杯

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言G4模块配置目录 前言 已经跟大家一起学习了这么久了,由于临近比赛,所以关于赛题的文章都暂时进行通道关闭。 希望大家先注重模块配置,然后对代码逻辑有一定的理解。 G4模块配置目录 【STM32G4】备战蓝桥杯嵌入式—模块配置—LED 【STM32G4】备战蓝桥杯嵌入式

qq_47877230的博客 1万+

已解决“TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败“,亲测有效!!!

已解决"TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败",亲测有效!!!

wbajsjhhhhh的博客 1万+

【蓝桥杯嵌入式组】战略部署(必看)

“一叶遮目,不见泰山”,不论是何事,对于事情的总体布局有个把控才能做到心中有数。 STM32F103RBT6外设资源一览 72MHz Cortex-M3处理器 128KB - Flash,20KB - SRAM ADC USB RTC/Timer/SysTicks USART/IIC/SPI(EEPROM) GPIO (LED/KEY/BUZZER/LCD) GPIO外设资源接口 ...

悟已往之不谏 知来者之可追 6548

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

电子信息工程专业打工人的蓝桥杯嵌入式竞赛时记

文章目录前言一、基础入门1.GPIOGPIO的引脚速度GPIO的翻转速度2.引脚设置常用库函数锁存器的作用二、开发学习1.LED总结 前言 根据大二嵌入式自学(蓝桥杯嵌入式)的学习总结,本文主要针对蓝桥杯嵌入式作出总结(STM32F103RBT6型号库函数版本)进行讲解。如果读者时间充足,建议先学好模电数电基础知识,同时用开发板实际操作,能让学习事半功倍且能学习更深入。 一、基础入门 1.GPIO 首先GPIO最基本、最简单的作用是我们可以通过编程的方式让它作输入或者输出,而输入/输出的形式为高低电平(

MENG_BIAN的博客 4049

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝桥杯嵌入式学习总结(旧版)

令pd2置高(1)后,输入是什么,输出就是什么,把pd2再置低(0),输入是什么,输出保持不变 起到锁存器的功能,但一般程序里只要是pd2置高就可以了,不需要再置低,即不需要锁存功能 2.Buzzer 当我们stm32复位后,PB4引脚默认是作为JTAG接口的RST引脚,因此我们再使用蜂鸣器之前要先把PB4复用回我们的普通IO口。 因此就要加上这条语句 GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); 同时我们还要使能复用IO..........

weixin_51062259的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: ad18 覆铜设置
下一篇: 记stm32中断处理函数的一次坑
DEEP_M
博客等级 码龄9年 9粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值