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

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

串口通信

cubemx配置

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

打开串口中断

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

串口通信程序设计

串口变量

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

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

cpp 复制代码
HAL_UART_Receive_IT(&huart1,&dat,1);

串口中断服务函数的声明

cpp 复制代码
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);

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

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

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

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

cpp 复制代码
if(rx_idx > 0)
{
	uchar temp = rx_idx;
	HAL_Delay(1);
	if(temp == rx_idx)
		uart_process();
}

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

cpp 复制代码
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配置

程序设计

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

cpp 复制代码
//定义时间和日期结构体变量
RTC_TimeTypeDef time;
RTC_DateTypeDef date;

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

cpp 复制代码
void rtc_process(void)
{
	HAL_RTC_GetDate(&hrtc,&date,RTC_FORMAT_BIN);
	HAL_RTC_GetTime(&hrtc,&time,RTC_FORMAT_BIN);
}

LCD显示日期与时间

cpp 复制代码
u32 lcd_tick = 0;
void lcd_process(void)
{
	//lcd周期为200ms
	if(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);	
	}
}
相关推荐
hazy1k6 小时前
K230基础-获取触摸坐标
图像处理·stm32·单片机·嵌入式硬件·k230
知南x6 小时前
STM32MP157目标检测环境搭建 (3) NCNN环境安装
stm32·嵌入式硬件·目标检测
学生董格8 小时前
[嵌入式embed]Keil5-STM32F103C8T6(江协科技)+移植RT-Thread v3.15模版
stm32·嵌入式硬件·rt-thread·keil5·江协科技
酷飞飞9 小时前
掌握DMA基于GD32F407VE的天空星的配置
stm32·单片机·嵌入式硬件·arm
李永奉18 小时前
STM32-认识STM32
stm32·单片机·嵌入式硬件
La Pulga19 小时前
【STM32】I2C通信—软件模拟
c语言·stm32·单片机·嵌入式硬件·mcu
典则1 天前
STM32FreeRtos入门(四)——任务状态和调度
stm32·单片机·嵌入式硬件
充哥单片机设计1 天前
【STM32项目开源】基于STM32的智能天然气火灾监控
stm32·单片机·嵌入式硬件
充哥单片机设计1 天前
【STM32项目开源】基于STM32的智能仓库火灾检测系统
stm32·单片机·嵌入式硬件
就叫飞六吧1 天前
普中stm32大Dap烧录流程
stm32