蓝桥杯嵌入式G431学习之UART的发送和接受

该篇博客介绍了如何在STM32CubeMX中配置USART1和USART2,以模拟I2C接口与24C02 EEPROM进行数据读写。通过设置中断和接收发送函数,实现了数据的接收与输出,并提供了毫秒计数器以周期性发送数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、24C02简介
24C02是2Kbit串行EEPROM,CT117E—M4竞赛训练板的硬件设计无法使用I2C接口,只能通过并口仿真I2C接口实现对24C02的读写操作。

引脚功能方向说明
1A0输入器件地址0
2A1输入器件地址1
3A2输入器件地址2
4GND
5SDA双向串行数据
6SCL输入串行时钟
7WP输入写保护
8VCC输入电源(2.7~5.5V)

在STM32CubeMX中打开,USART1和USART2设置,打开USART1中断设置。如下图
在这里插入图片描述

添加到usart.c
extern char RX_buff[10];
void MX_USART1_UART_Init(void){
/* USER CODE BEGIN USART1_Init 2 */
HAL_UART_Receive_IT(&huart1,(uint8_t *)RX_buff,1);
  /* USER CODE END USART1_Init 2 */
  }
添加到main.c
char RX_buff[10];//接受缓冲区
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit(&huart1,(uint8_t *)RX_buff,(uint16_t)sizeof(RX_buff),20);  
	HAL_UART_Receive_IT(&huart1,(uint8_t *) RX_buff,1);      
}
//完成数据的接受与输出

在这里插入图片描述

uint16_t TX_ms=0;//毫秒计数
char TX_buff[100];//发送缓冲区
uint16_t TX_t=0;
	if(TX_ms==1000){
		sprintf(TX_buff,"%04d  Fighting! zzy",TX_t);
		HAL_UART_Transmit(&huart1,(uint8_t *)TX_buff,(uint16_t)sizeof(TX_buff),20);
		TX_t++;
		TX_ms=0;
	}
	参考上一篇SysTick定时器中断,完成数据的发送

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

b^b烧麦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值