【蓝桥杯嵌入式】串口通信与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.hqwc.cn/news/625493.html

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

相关文章

计算股价波动率python

上述图片上传gemini&#xff0c;提问&#xff1a;转换为python代码 好的&#xff0c;以下是您发送的图像中公式的 Python 代码&#xff1a; python def stock_volatility(prices, opening_prices, N): """ 计算股票价格的波动率。 参数&#xff1a; p…

Three.js加载glb / gltf模型,Vue加载glb / gltf模型(如何在vue中使用three.js,vue使用threejs加载glb模型)

简介&#xff1a;Three.js 是一个用于在 Web 上创建和显示 3D 图形的 JavaScript 库。它提供了丰富的功能和灵活的 API&#xff0c;使开发者可以轻松地在网页中创建各种 3D 场景、模型和动画效果。可以用来展示产品模型、建立交互式场景、游戏开发、数据可视化、教育和培训等等…

AI决策与专家决策,您更喜欢哪种决策方式?

HI&#xff0c;我是AI智能小助手CoCo。 CoCode开发云智能助手CoCo “大家好&#xff0c;我是CoCode开发云的AI智能小助手CoCo&#xff0c;现在为大家播放关于CoCode开发云AI大家庭的最新消息&#xff1a; 欢迎AI家庭新成员&#xff1a;AI自动决策”。 AI自动决策发布 CoCode开…

【数据结构1-基本概念和术语】

这里写自定义目录标题 0.数据&#xff0c;数据元素&#xff0c;数据项&#xff0c;数据对项&#xff0c;数据结构&#xff0c;逻辑结构&#xff0c;存储结构1.结构1.1逻辑结构1.2存储结构1.2.1 顺序结构1.2.2链式结构 1.3数据结构1.3.1基本数据类型1.3.2抽象数据类型1.3.2.1一个…

谷粒商城part2——环境篇

这里是过来人的学习建议&#xff1a; 1、如有条件电脑内存至少16G起步&#xff0c;条件进一步加个屏幕&#xff0c;条件更进一步租一台至少4G内存的X86架构云服务器&#xff0c;所有部署的东西全扔云服务器上 2、P16&#xff0c;P17没法搭起来的建议照着rerenfast的github上的教…

超高效空气过滤器(ULPA)在半导体制造领域需求旺盛 滤芯为其重要组成部分

超高效空气过滤器&#xff08;ULPA&#xff09;在半导体制造领域需求旺盛 滤芯为其重要组成部分 超高效空气过滤器&#xff08;ULPA&#xff09;又称超低穿透率空气过滤器&#xff0c;指含有超高效过滤网&#xff0c;对0.1微米粒子捕集效率在99.999%以上的空气过滤器。与高效空…

NineData正式将SQL开发正式升级为数据库DevOps

NineData SQL 开发早期主要提供 SQL 窗口&#xff08;IDE&#xff09;功能&#xff0c;产品经过将近两年时间的打磨&#xff0c;新增了大量的企业级功能&#xff0c;时至今日已经服务了上万开发者&#xff0c;覆盖了数据库设计、开发、测试、变更等生命周期的功能。 为了让企业…

uni-app中页面生命周期与vue生命周期的执行顺序对比

应用生命周期 uni-app 支持如下应用生命周期函数&#xff1a; 函数名说明平台兼容onLaunch当uni-app 初始化完成时触发&#xff08;全局只触发一次&#xff09;&#xff0c;参数为应用启动参数&#xff0c;同 uni.getLaunchOptionsSync 的返回值onShow当 uni-app 启动&#x…

Linux LVM与磁盘配额

目录 一.LVM概述 LVM LVM机制的基本概念 PV&#xff08;Physical Volume&#xff0c;物理卷&#xff09; VG&#xff08;Volume Group&#xff0c;卷组&#xff09; LV&#xff08;Logical Volume&#xff0c;逻辑卷&#xff09; 二.LVM 的管理命令 三.创建并使用LVM …

【HCIP学习】OSPF协议基础

一、OSPF基础 1、技术背景&#xff08;RIP中存在的问题&#xff09; RIP中存在最大跳数为15的限制&#xff0c;不能适应大规模组网 周期性发送全部路由信息&#xff0c;占用大量的带宽资源 路由收敛速度慢 以跳数作为度量值 存在路由环路可能性 每隔30秒更新 2、OSPF协议…

锂电池充放电管理-单片机通用

锂电池充放电管理-单片机通用 一、锂电池充放电检测的原理二、power.c的实现三、power.h的实现四、锂电池检测和充电电路 一、锂电池充放电检测的原理 ①两节锂电池通过电阻分压检测ADC&#xff0c;再根据电压划分电量等级&#xff1b;②充电使用的是锂电池充电IC方案&#xf…

I2C通信的详细讲解

物理接口&#xff1a; SCL SDA &#xff08;1&#xff09;SCL&#xff08;serial clock&#xff09;:时钟线&#xff0c;传输CLK信号&#xff0c;一般是I2C主设备向从设备提供时钟的通道。 &#xff08;2&#xff09;SDA&#xff08;serial data&#xff09;&#xff1a;数据…