【蓝桥杯嵌入式】串口通信与RTC时钟

【蓝桥杯嵌入式】串口通信与RTC时钟

  • 串口通信
    • cubemx配置
    • 串口通信程序设计
  • RTC时钟
    • cubemx配置
    • 程序设计

串口通信

cubemx配置

打开串口通信,并配置波特率为9600

打开串口中断

重定义串口接收与发送引脚,默认是PC4,PC5,需要改为PA9与PA10

串口通信程序设计

串口变量

uchar dat;			//串口接收的一个字符
char rx_buf[20];	//存放串口接收的字符串buf
uchar rx_idx;		//串口接收的下标索引
char send_buf[20];	//串口发送数据buf

main.c中 初始化串口接收中断

HAL_UART_Receive_IT(&huart1,&dat,1);

串口中断服务函数的声明

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);

  该函数具体形式也不用记忆,在usart.c下面的stm32g4xx_hal_uart.h最后的倒数第三板块的第五个函数,该函数也是个若定义函数,在user.c中重新定义改写,用于接收串口数据即可

串口中断服务函数的重定义

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{rx_buf[rx_idx++] = dat;HAL_UART_Receive_IT(&huart1,&dat,1);
}

串口进程业务逻辑函数的调用

if(rx_idx > 0)
{uchar temp = rx_idx;HAL_Delay(1);if(temp == rx_idx)uart_process();
}

串口进程业务逻辑函数的定义

void uart_process(void)
{if(rx_idx > 0){//将收到的数据发送给串口 保证发送接收的完整性sprintf(send_buf,"%s\r\n",rx_buf);HAL_UART_Transmit(&huart1,(uchar *)send_buf,strlen(send_buf),50);/*************串口接收业务逻辑程序***********///清空数据rx_idx = 0;memset(rx_buf,0,20);}
}

RTC时钟

cubemx配置

程序设计

定义时间和日期结构体全局变量

//定义时间和日期结构体变量
RTC_TimeTypeDef time;
RTC_DateTypeDef date;

获取日期与时间,日期与时间必须同时获取,否则会卡死

void rtc_process(void)
{HAL_RTC_GetDate(&hrtc,&date,RTC_FORMAT_BIN);HAL_RTC_GetTime(&hrtc,&time,RTC_FORMAT_BIN);
}

LCD显示日期与时间

u32 lcd_tick = 0;
void lcd_process(void)
{//lcd周期为200msif(uwTick - lcd_tick < 200)return;lcd_tick = uwTick;if(ui == 0)		//第三个界面显示的内容{sprintf(text,"     Title3 ");LCD_DisplayStringLine(Line1, (unsigned char *)text);	/****************************RTC实时时钟数据**************************/sprintf(text,"   date:20%02d-%02d-%02d",date.Year,date.Month,date.Date);LCD_DisplayStringLine(Line3, (unsigned char *)text);sprintf(text,"   time:%02d:%02d:%02d",time.Hours,time.Minutes,time.Seconds);LCD_DisplayStringLine(Line4, (unsigned char *)text);	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/821440.shtml

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

相关文章

运输问题的中转或者转运问题

1、这类问题&#xff0c;不好理解&#xff0c;做个笔记&#xff0c;记录一下。 2、可以参考一下&#xff1a; https://blog.csdn.net/YUNCHOUSHUO/article/details/121660675?spm1001.2014.3001.5506 这个csdn写的还是不错的&#xff0c;推荐。 或者&#xff0c;可以参考 …

网络安全学习路线-超详细

零基础小白&#xff0c;到就业&#xff01;入门到入土的网安学习路线&#xff01; 在各大平台搜的网安学习路线都太粗略了。。。。看不下去了&#xff01; 建议的学习顺序&#xff1a; 一、网络安全学习普法&#xff08;心里有个数&#xff0c;要进去坐几年&#xff01;&#x…

OpenAI宣布GPT-4-Turbo全面升级,GPT-4 Turbo 新增视觉理解能力,可同时处理文本和图像信息

OpenAI宣布GPT-4-Turbo全面升级&#xff0c;GPT-4 Turbo with Vision新增视觉理解能力&#xff0c;可同时处理文本和图像信息&#xff0c;极大简化了开发流程。 OpenAI宣布GPT-4 Turbo全面升级&#xff01;根据官方说法&#xff0c;这一波 GPT 的升级包括&#xff1a; 更长的上…

VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了

前言 Visual Studio Code 是一个轻量级功能强大的源代码编辑器&#xff0c;支持语法高亮、代码自动补全&#xff08;又称 IntelliSense&#xff09;、代码重构、查看定义功能&#xff0c;并且内置了命令行工具和 Git 版本控制系统。适用于 Windows、macOS 和 Linux。它内置了对…

Open3D 体素滤波(30)

Open3D 体素滤波(30) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 体素滤波(Voxel Grid Filtering)是一种常用的点云滤波算法,用于对点云数据进行下采样(降低数据密度)以及去除噪声。该算法将点云数据划分为规则的体素网格,然后在每个体素中选择一个代表性点作为…

17.牛客---栈的压入弹出(Java版)

题目链接: https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId13&tqId11174&ru/exam/oj 题解: 代码: 测试: 注意 判断栈是否为空必须在前!不然会空指针异常

用于可观察性的 Elastic AI 助手摆脱了 Kibana!

作者&#xff1a;Jeff Vestal 通过 Elastic AI Assistant for Observability API 将 AI 支持的可观察性引入你的日常工具。 注意&#xff1a;下面描述的 API 目前正在开发中&#xff0c;并且没有文档记录&#xff0c;因此不受支持。请将其视为展望性博客。不能保证功能会发布。…

【多模态检索】Coarse-to-Fine Visual Representation

快手文本视频多模态检索论文 论文&#xff1a;Towards Efficient and Effective Text-to-Video Retrieval with Coarse-to-Fine Visual Representation Learning 链接&#xff1a;https://arxiv.org/abs/2401.00701 摘要 近些年&#xff0c;基于CLIP的text-to-video检索方法…

openstack修改实例名称但是gnocchi监控数据中实例名称没有变更的问题处理

文章目录 一、问题描述二、调研过程1、变更实例名称2、查看grafana中的监控数据3、libvirt服务中的xml文件4、现有的监控数据流转架构 总结 一、问题描述 openstack修改实例名称但是gnocchi监控数据中实例名称没有变更的问题处理。 通过修改实例名称的功能修改了实例名称&…

自动化测试常见的三大问题及解决方案

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

【Entity Framework】你必须要了解EF中数据查询之数据加载

【Entity Framework】你必须要了解EF中数据查询之数据加载 文章目录 【Entity Framework】你必须要了解EF中数据查询之数据加载一、概述二、预先加载2.1 包含多个层级2.2 经过筛选的包含 三、显示加载3.1查询关联实体 四、延时加载4.1 不使用代理进行延迟加载 一、概述 Entity…

平板拖把头建模

没找到合适的配件&#xff0c;只能自己做了。 difference(){union(){cylinder(11.5,10,10,$fn365);translate([-10,0,0])cube([20,16,11.5]);rotate([0,90,0])translate([-11.5/2,16-3-2,-18])cylinder(2088,3,3,$fn365);}translate([0,0,-1])cylinder(13,2.5,2.5,$fn365); }

飞腾UEFI电源控制选择代码解析

飞腾UEFI电源控制选择代码解析 CPLD 处理方式EC 处理方式注:本文以飞腾UEFI edk-code-4.2.0版本进行说明,如果有朋友需要借鉴,请使用该版本代码。 以D2000打工工具为例,下图打包工具中有选择主板电源管理方式,这里可以选择CPLD、EC、和SE,其中SE代表为X100控制上下电时序…

arm中模/数转换器工作原理以及I2C工作原理

ADC介绍 什么是ADC ADC就是模拟到数字转换器(Analog-to-Digital Converter)的缩写。 它是一种电子设备或模块,S3C2440内部拥有一个ADC外设。用于将连续变化的模拟信号转换为离散的数字信号,以便数字系统(如微处理器、微控制器等)能够对其进行处理和分析。 模拟信号:一…

用Gold-yolo模块改进yolov8模型

gold-yolo论文&#xff1a; https://arxiv.org/pdf/2309.11331.pdf gold-yolo代码&#xff1a; https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO 一 gold模块简介 Gold-Yolo是华为诺亚方舟实验室2023年发布的工作&#xff0c;主要优化检…

护网行动 | 蓝队应急响应流程概述

了解蓝队应急响应的流程 应急响应通常是指为了应对各种意外事件发生前所做的准备&#xff0c;以及在意外事件发生后所采取的措施。 网络安全应急响应是指对已经发生或可能发送的安全事件进行监控、分析、协调、处理、保护资产安全。 网络安全应急响应主要是为了让人们对网络安全…

【深度学习】执行wandb sync同步命令报错wandb: Network error (SSLError), entering retry loop

执行wandb sync同步命令报错wandb: Network error (SSLError), entering retry loop 在代码中设置wandb offline的命令 os.environ["WANDB_API_KEY"] "API keys" os.environ["WANDB_MODE"] "offline"日志文件生成后&#xff0c;使…

sqlilabs靶场1—20题学习笔记(思路+解析+方法)

前几个题目较为简单&#xff0c;均尝试使用各种方法进行SQL注入 第一题 联合查询 1&#xff09;思路&#xff1a; 有回显值 1.判断有无注入点 2.猜解列名数量 3.判断回显点 4.利用注入点进行信息收集 爆用户权限&#xff0c;爆库&#xff0c;爆版本号 爆表&#xff0c;爆列&…

基于springboot的医护人员排班系统

随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了医护人员排班系统的开发全过程。通过分析医护人员排班系统管理的不足&#xff0c;创建了一个计算机管理医护人员排班系统的方案。文章介绍了医护人员排班系统的系统分…

每日一题(PTAL2-006):树的遍历--树的构建,队列

因为要层序遍历&#xff0c;所以我们可以考虑构建一颗二叉树。构建完只有利用队列就可以就行层序遍历。 #include <bits/stdc.h> using namespace std; int p1[35]; int p2[35]; typedef struct Tree {int val;struct Tree* left;struct Tree* right; }TT; typedef TT* …